Instrukcja cmpxchg16b przeprowadzania atomowej 128-bitowej wymiany pamięci nie jest obsługiwana w starszych wersjach procesora x64, ale wygląda na to, że jest obsługiwana przez nowsze wersje procesora od kilku lat. Jak prawdopodobne jest, że napotkam maszynę 64-bitową ze starym procesorem bez tej instrukcji?
8
Odpowiedzi:
Patrzysz na wczesne 64-bitowe procesory AMD, przed wersją F (czyli wtedy, gdy przenieśli się do pamięci DDR2). Są też pewne wczesne kroki Intel Noconas, które nie wspierały go, tak myślę, ale są one rzadsze.
źródło
Nie mam danych dotyczących występowania niektórych rodzajów procesorów, więc nie mogę bezpośrednio odpowiedzieć na twoje pytanie. Możesz jednak dowiedzieć się, czy procesor obsługuje
CMPXCHG16B
, sprawdzając, czyCPUID.01h.ECX.bit13
jest1
(dostępny) czy0
(niedostępny).Należy również pamiętać, że podręczniki Intela sugerują, że aby tę instrukcję wykonać atomowo, należy połączyć ją z
LOCK
prefiksem.źródło
Obsługa procesora może nie być wystarczająca, ponieważ niektórzy użytkownicy Core 2 dowiedzieli się o uruchomieniu systemu Windows 8.1 , szczególnie ci, którzy mają płytę główną Intel DP35DP.
Nie jestem jeszcze pewien, co na płycie głównej może uniemożliwić działanie CMPXCHG16B. Prawdopodobnie bity wykrywania funkcji mogą zostać wyłączone przez BIOS.Podsumowując, co mówi na ten temat blog Yuhong Bao, we wczesnych układach Core 2 wystąpiła błąd procesora (stopniowanie E0 / R0 45 nm Core 2), co spowodowało, że ich funkcje zostały nieprawidłowo zgłoszone przez CPUID. O ile mi wiadomo, można było obejść ten problem za pomocą aktualizacji BIOS / mikrokodu.źródło