В настоящее время я пытаюсь выяснить, будет ли хорошей идеей обновить мой слегка устаревший ноутбук (Windows 7, 64-разрядная версия) до Windows 10. Проблема заключается в том, что Microsoft заявляет в своих спецификациях Windows 10, что использовать Требуется 64-разрядная версия Windows 10, процессор с поддержкой CMPXCHG16b, PrefetchW и LAHF / SAHF. Я знаю, что мой процессор 64-разрядный (Intel Core i5-2430M @ 2,40 ГГц), но я не знаю, как выяснить, поддерживает ли он CMPXCHG16b, PrefetchW и LAHF / SAHF, и я понятия не имею, что они означают.
Я попытался использовать Google и не получил никаких результатов, которые имели бы для меня смысл, только сравнение моего i5 и аналогичного процессора AMD. Я также проверил веб-сайт Intel ARK. Если бы кто-то мог указать мне, где я могу получить больше информации, я был бы очень благодарен.
источник
Ответы:
Ваш процессор поддерживает эти функции. Фактически, те же функции необходимы для запуска 64-битной Windows 8.1. Это требование выполняется всеми современными процессорами и, как правило, является проблемой только для некоторых Core 2 и более ранних процессоров.
Каковы эти инструкции?
CMPXCHG16B
Инструкция выполняет атомное сравнение-и-обмен на значениях 16 байт. Он поддерживается на всех современных процессорах x86-64 , хотя некоторые ранние процессоры AMD64 его не поддерживали. Эта инструкция также может упоминаться какCompareExchange128
. См. Также: Насколько распространены в старых процессорах x64 инструкции cmpxchg16b?Эта
PREFETCHW
инструкция является подсказкой процессору для предварительной загрузки данных из памяти в кэш в ожидании записи ( Справочник по инструкциям Intel , PDF, страница 888). Эта инструкция была введена в 3DNow от AMD ! набор инструкций, который осуждается за исключениемPREFETCH
иPREFETCHW
инструкций. Все процессоры AMD начиная с Athlon 64 поддерживают эту инструкцию. Однако эта инструкция может не поддерживаться в некоторых старых 64-разрядных процессорах Intel, выпущенных до Nehalem .LAHF
ИSAHF
нагрузки и сохранять содержимоеAH
регистра в регистре флагов, соответственно (Intel Instruction Set Reference, PDF страницы 530 и 1025). Некоторые старые процессоры Intel без аппаратной виртуализации (VT-x) не поддерживают эту инструкцию при работе в длинном 64-битном режиме ; они в основном ограничены некоторыми младшими процессорами, предшествующими Nehalem . Некоторые очень старые процессоры AMD64 также не имеют этой функции.Что это значит для меня?
Все процессоры Intel Core i7, i5 или i3, а также все процессоры Pentium или Celeron на основе Clarkdale , Arrandale , Sandy Bridge или более новых микроархитектур поддерживают эти функции, а также процессоры Intel Atom и Celeron Silvermont . Для AMD все, кроме самых старых 64-битных процессоров, имеют эти функции.
Как правило, эти инструкции необходимо учитывать только в том случае, если у вас есть процессор, предшествующий описанному выше. Приложение Get Windows 10 сообщит вам, можно ли выполнить обновление до Windows 10. Если процессор не соответствует требованиям, вы получите « CPU не поддерживается ».
источник
__builtin_prefetch(p,1,2)
в PREFETCHT1 с-march=haswell
, а в PREFETCHW с-march=broadwell
. Кроме того,/proc/cpuinfo
дамп Linux из этого процессора Haswell не включает в себя 3dnowprefetch , но он распространяется на broadwell и skylake. См. Unix.stackexchange.com/questions/43539/… чтобы узнать значение флагов.0F 0D r/m8
кодирование машинного кода декодируется как многобайтовая NOP на процессорах, которые не поддерживают PREFETCHW, поэтому, очевидно, нет проблем с совместимостью. (Поведение инструкций предварительной выборки не влияет на правильность, только на производительность.) Я попробовал это на своем процессоре Core2Duo, в asm-программе, которая запускаетсяprefetchw [rsp]
, и инструкция выполняется без сбоев. Но я на 99% уверен, что это не имеет никакого эффекта.0F 0D m8
) не выдавал ошибку как недопустимую инструкцию, как в случае с процессорами Intel после P4, по крайней мере, как обсуждалось здесь . Они запускают его как бездействие (до Broadwell), и, конечно, этого достаточно для Win8.1 (потому что предварительные выборки в любом случае являются спекулятивными подсказками, которые не влияют на правильность). Я не осознавал поведение NOP или то, что оно было другим на старых процессорах.Если вы можете использовать командную строку в Windows, то:
coreinfo > coreinfo.txt
PS: в Linux вы бы использовали
grep flags /proc/cpuinfo | head -1
источник
Существует утилита под названием coreinfo , предоставляемая Microsoft, которая обеспечивает функциональность, как
cat /proc/cpuinfo
в Linux.Вы должны искать через это, но вы можете найти информацию здесь,
-
Означает , что процессор не имеет ту особенность, то*
значит , что он имеет ту особенность.Теперь, когда я смотрю, Coreinfo фактически предлагает Microsoft сделать определение на этой странице документа,
Полный результат для моего процессора Intel E7525 выглядит следующим образом:
источник
«Процессор Intel (R) Core (TM) i7-2600K @ 3,40 ГГц»
«Инструкция PREFETCHWT1 не поддерживается»
От AIDA 64 Extreme. ^^
Эти три - CMPXCHG16b, PrefetchW и LAHF / SAHF необходимы для обновления до 64-битной версии Windows 10 с текущей 64-битной установки Windows 7.
источник