инструкция cmpxchg16b для выполнения атомарных 128-битных обменов памятью не поддерживается на старых версиях процессора x64, но кажется, что это поддерживается более новыми версиями процессора в течение нескольких лет. Какова вероятность того, что я столкнусь с 64-разрядной машиной со старым процессором, которому не хватает этой инструкции?
Насколько распространены старые процессоры x64, не имеющие инструкции cmpxchg16b?


3 ответа
вы смотрите на ранних AMD 64-разрядных процессоров, до Rev F (который, когда они переехали в память DDR2). Есть некоторые ранние шаги D Intel Noconas тоже, которые не поддерживали его, я думаю, но это реже.

у меня нет данных о распространенности некоторых типов процессоров, поэтому я не могу напрямую ответить на ваш вопрос. Тем не менее, вы можете узнать, поддерживает ли процессор CMPXCHG16B
ли CPUID.01h.ECX.bit13
is 1
() или 0
(отсутствует).
Также обратите внимание, что руководства Intel предполагают, что для выполнения этой инструкции атомарно, вы должны объединить его с LOCK
префикс.

поддержка процессора может не хватить, как некоторые Core 2 пользователи узнали о запуске Windows 8.1, особенно те, которые имеют материнскую плату Intel DP35DP. Я еще не уверен, что в материнской плате может помешать CMPXCHG16B работать. Вероятно, биты обнаружения функций могут быть отключены BIOS. подводя итог, что блог Юхун Бао говорит об этом, в ранних чипах Core 2 (E0/R0 steppings ядра 45nm 2) были ошибки процессора, которые вызвали их особенности должны быть неправильно представлены через CPUID. Насколько я могу судить, можно было обойти это с помощью обновления BIOS/микрокода.

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]