Как узнать cpuid процессора
CPU-Z CPUID – Если нужно узнать характеристики процессора и не только
З нать какие точные характеристики скрывает ваш центральный процессор, его частоту, количество ядер, маркировку, да и просто банально название, крайне полезно для общего развития и демонстрации знаний при выборе или замене этого устройства. В этом деле нам то и поможет маленькая программка под названием CPU-Z. Помимо определения типа процессора и его маркировки, она отображает различное множество других не менее важных характеристик процессора.
Итак, при запуске программы после непродолжительного сбора данных об установленных на компьютер вычислительных компонентах вы попадаете сразу на вкладку CPU, где отображаются все сведения о вашем процессоре. Пойдем по порядку.
CPU 
Далее идут отображения данных тактовых частот процессора, шины:
Тут же радом отображается информация о кэш-памяти процессора:
Нижняя строчка, где находится меню Selection – позволяет выбрать процессор, для отображения его характеристик. Так же здесь показано количество ядер(Cores) процессора и количество потоков(Threads).
В этой программе помимо основных характеристик процессора можно более подробно посмотреть данные кэш-памяти процессора во вкладке Caches.
CACHES 
Обычно тут отображается полный размер кэш-памяти Size – в Кб или Мб, а также строка Descriptor – которая отображает характеристики кэш-памяти, ассоциативность и объем линии кэша.
Помимо сведений о процессоре можно посмотреть информацию о вашей системной плате во вкладке Mainboard.
MAINBOARD 
Далее идет техническая информация о компоненте BIOS:
В группе Graphic Interface представлена информация о типе графической шины:
Еще одна не менее интересная вкладка это Memory – сведения об установленной на ваш компьютер оперативной памяти.
MEMORY 
Далее идут параметры тайминга оперативной памяти, которые показывают время выполнения определенного действия:
Так же помимо основных сведений об оперативной памяти, во вкладке SPD можно посмотреть характеристики отдельно взятого слота памяти. Где будет отображаться техническая информация об установленной в определенный слот оперативной памяти. Такие данные как размер в мегабайтах, ее частота, производитель, тип и другая полезная информация, которая касается определенного слота, куда установлена конкретная планка памяти.
SPD 
Предпоследняя вкладка под названием Graphics тоже может оказаться полезной. В ней отображается информация об установленной на вашем компьютере графической карте.
GRAPHICS 
И последняя вкладка, отображающая сведения об авторе программы и ее версии About. В ней помимо этого можно сохранить ваши технические характеристики в виде отчета в формате TXT или HTML.
ABOUT 
Как видите, эта программа показывает достаточно большое и полное количество технических характеристик вашего персонального компьютера. И хоть она и призвана отображать данные только о вашем центральном процессоре, но также ей можно воспользоваться для просмотра таких характеристик как оперативная память, материнская плата, графический адаптер. И как говорится эта программа, которая Must have – что значит должна быть.
Система команд x86
Влияние команды на флаги и форматы команды:
Описание:
Команда CPUID впервые была введена в процессоре Pentium, она предназначена для считывания программным обеспечением информации о продавце, семействе, модели и поколении процессора, а также специфической для процессора дополнительной информации (поддерживаемые наборы команд, размеры буферов, кэшей, разнообразные расширения архитектуры и т.п.).
Перед выполнением команды CPUID в регистр EAX должно помещаться входное значение, которое и указывает — какую информацию необходимо выдать. Для разных моделей процессоров задокументированы различные наборы допустимых входных значений в регистре EAX перед выполнением команды CPUID. В общем случае их можно разделить на стандартные (поддерживаемые всеми производителями) и расширенные (так или иначе отличающиеся для процессоров разных моделей и производителей).
Стандартные функции
Входное значение EAX = 0
При входном значении EAX = 0, после выполнения команды CPUID регистр EAX будет содержать максимальное значение, понимаемое командой CPUID (при запросе стандартных функций), а в регистрах EBX, EDX и ECX будет находится строка идентификации производителя процессора (EBX содержит первых 4 символа, EDX содержит следующие 4 символа и ECX содержит последние 4 символа). В таблице 6.33. приведены значения, выдаваемые наиболее распространенными моделями микропроцессоров.
Таблица 6.33. Строки идентификации, возвращаемые процессорами различных производителей
Содержимое регистров после выполнения команды CPUID (EAX = 0)
Тип процессора (производитель)
EBX : EDX : ECX
486SL … Pentium III Xeon (Intel)
GenuineIntel (756E6547h : 49656E69h : 6C65746Eh)
Pentium 4, Pentium 4D, Pentium 4E, Xeon, Core i3, i5, i7, Core 2 Duo (Intel)
Atom, Celeron, Celeron M (Intel)
CyrixInstead (69727943h : 736E4978h : 64616574h)
MediaGX MMX Enhansed (Cyrix)
WinChip 2, 2A, 2B, C6 (IDT)
CentaurHauls (746E6543h : 48727561h :736C7561h)
VIA Eden, Eden-N, Eden ESP, Eden ULV, Cyrix III, C3, C3-M, C7, C7-M, C7-D, CoreFusion (VIA)
VIA nano, nano-M, nano X2, Eden X2, QuadCore (VIA)
Am486, Am5x86, AMD K5, AMD K6, AMD K6-2, AMD K6-2+, AMD K6-III, AMD K6-III+, AMD K-7, AMD Athlon, AMD Athlon XP, Duron, AMD Athlon 64, DualCore AMD Athlon 64 X2, AMD Opteron, 2x AMD Opteron, DualCore AMD Opteron, AMD Sempron, AMD K-8, AMD Turion, DualCore AMD Turion (AMD)
AuthenticAMD (68747541h : 444D4163h : 69746E65h)
2x DualCore AMD Opteron, QuadCore AMD Phenom, DualCore AMD Phenom II X2, TripleCore AMD Phenom II X3, QuadCore AMD Phenom II X4, QuadCore AMD Phenom II TWKR, AMD Propus, AMD Athlon II X4, DualCore AMD Athlon II X2, AMD Sempron, 2x HexaCore AMD Opteron, 2x DodecaCore AMD Opteron (AMD)
HexaCore AMD Phenom II X6, Mobile DualCore AMD E2, QuadCore AMD A8, DualCore AMD Bobcat, DualCore AMD C-50, DualCore AMD G-T56N, DualCore AMD E-xxx (AMD)
QuadCore AMD Bulldozer, QuadCore AMD FX, OctalCore AMD FX, HexaCore AMD FX, 2x 16-Core AMD Opteron, QuadCore AMD A10, QuadCore AMD A8, QuadCore AMD A12, DualCore AMD A9, QuadCore AMD A4, QuadCore AMD Athlon, QuadCore AMD Temash, DualCore AMD GX, QuadCore AMD A6, Summit Ridge A stepping, OctalCore AMD Ryzen 7, QuadCore AMD Ryzen 5, 12-Core AMD Ryzen, 16-Core AMD Ryzen, 32-Core AMD EPYC (AMD)
RDC IAD 100 (RDC Semiconductor)
(756E6547h : 20656E69h : 43445220h)
SiS SiS SiS (20536953h : 20536953h : 20536953h)
NexGenDriven (4778654Eh : 72446E65h : 6E657669h)
Transmeta Crusoe, Transmeta Efficeon (Transmeta)
GenuineTMx86 ( 756E6547h : 54656E69h : 3638784Dh)
Rise mP6, Rise mP6-II (Rise)
RiseRiseRise ( 65736952h : 65736952h : 65736952h)
UMC UMC UMC ( 20434D55h : 20434D55h : 20434D55h)
Geode GX1, GXLV, GXm (National Semiconductor)
Geode by NSC ( 646F6547h : 79622065h : 43534E20h)
Geode GX2 (National Semiconductor)
Vortex86 (DM&P Electronics)
Vortex86 SoC ( 74726F56h : 36387865h : 436F5320h)
Входное значение EAX = 1
После выполнения команды CPUID со входным значением 1, регистр EAX будет содержать следующую информацию (т.н. сигнатура процессора):
Регистры EBX и ECX зарезервированы.
В регистре EDX будет содержаться информация о некоторых свойствах и возможностях микропроцессора. Установленный флаг свойств указывает на то, что соответствующее свойство (возможность, функция) данной моделью микропроцессора поддерживается. Информация о свойствах определена следующим образом:
Не все из указанных битов свойств определены в различных моделях процессоров различных производителей. В ранних моделях некоторые из этих битов указываются как зарезервированные, некоторые биты могут по разному интерпретироваться. Но, поскольку постоянно выпускаются модифицированные версии старых моделей процессоров, могут встречаться самые разнообразные комбинации (основные наиболее важные для прикладного программирования биты, такие как: наличие интегрированного FPU, поддержка команд MMX и т.п., везде интерпретируются одинаково).
В таблице 6.34. представлена информация о содержимом регистров некоторых наиболее распространенных моделей микропроцессоров после выполнения команды CPUID с входным EAX = 1.
9 команд для проверки информации о CPU в Linux
Информация об аппаратном обеспечении CPU
Информация о CPU (Central Processing Unit. Центральный процессор) включает в себя подробные сведения о процессоре, такие как архитектура, название производителя, модель, количество ядер, скорость каждого ядра и т.д.
В linux существует довольно много команд для получения подробной информации о CPU.
В этой статье мы рассмотрим некоторые из часто встречающихся команд, которые можно использовать для получения подробной информации о CPU.
1. /proc/cpuinfo
Файл /proc/cpuinfo содержит подробную информацию об отдельных ядрах CPU.
Каждый процессор или ядро перечислены отдельно, а различные подробности о скорости, размере кэша и названии модели включены в описание.
Чтобы подсчитать количество процессоров, используйте grep с wc
Количество процессоров, показанное в /proc/cpuinfo, может не соответствовать реальному количеству ядер процессора. Например, процессор с 2 ядрами и гиперпоточностью будет показан как процессор с 4 ядрами.
Чтобы получить фактическое количество ядер, проверьте идентификатор ядра на наличие уникальных значений
Соответственно, есть 4 разных идентификатора ядра. Это указывает на то, что существует 4 реальных ядра.
3. hardinfo
Он создаст большой отчет о многих аппаратных частях, читая файлы из каталога /proc. Информация о CPU находится в начале отчета. Отчет также может быть записан в текстовый файл.
Hardinfo выполняет несколько эталонных тестов, занимающих несколько минут, прежде чем вывести отчет на экран.
4. lshw
Производитель, модель и скорость процессора отображаются правильно. Однако из приведенного выше результата невозможно определить количество ядер в процессоре.
Чтобы узнать больше о команде lshw, ознакомьтесь с этой статьей:
5. nproc
Команда nproc просто выводит количество доступных вычислительных блоков. Обратите внимание, что количество вычислительных блоков не всегда совпадает с количеством ядер.
6. dmidecode
Команда dmidecode отображает некоторую информацию о CPU, которая включает в себя тип сокета, наименование производителя и различные флаги.
7. cpuid
Команда cpuid собирает информацию CPUID о процессорах Intel и AMD x86.
Программа может быть установлена с помощью apt на ubuntu
А вот пример вывода
8. inxi
Вывод соответствующей информации о CPU/процессоре
Чтобы узнать больше о команде inxi и ее использовании, ознакомьтесь с этой статьей:
9. Hwinfo
Она также отображает информацию о процессоре. Вот быстрый пример:
Если не использовать опцию «—short», команда отобразит гораздо больше информации о каждом ядре CPU, например, архитектуру и характеристики процессора.
Чтобы более подробно изучить команду hwinfo, ознакомьтесь с этой статьей:
Заключение
Это были некоторые команды для проверки информации о CPU в системах на базе Linux, таких как Ubuntu, Fedora, Debian, CentOS и др.
Примеры других команд для проверки информации о CPU смотрите в этой статье:
Большинство команд обрабатываются с помощью интерфейса командной строки и выводятся в текстовом формате. Для GUI интерфейса используйте программу Hardinfo.
Она показывает подробности об аппаратном обеспечении различных компонентов в простом для использования GUI интерфейсе.
Если вы знаете какую-либо другую полезную команду, которая может отображать информацию о CPU, сообщите нам об этом в комментариях ниже
Если вы хотели бы узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.
А если вам интересно развитие в этой сфере с нуля до pro, рекомендуем ознакомиться с учебной программой специализации.
(Само)идентификация процессоров. Часть вторая. Волосатый CPUID
В первой части я рассказал о необходимости идентификации расширений, присутствующих на конкретном процессоре. Это нужно для того, чтобы исполняющийся код (операционная система, компилятор или пользовательское приложение) смог надёжно определить, какие возможности аппаратуры он может задействовать. Также в предыдущей статье я сравнил несколько популярных архитектур центральных процессоров общего назначения. Возможности по идентификации между ними сильно разнятся: некоторые предоставляют полную информацию о расширениях ISA, тогда как другие ограничиваются парой чисел для различения вендора и ревизии.
В этой части я расскажу об одной инструкции архитектуры Intel IA-32 — CPUID, введённой специально для перечисления декларируемых процессором расширений. Немного о том, что было до её появления, что она умеет сообщать, какие неожиданности могут поджидать и какой софт позволяет интерпретировать её вывод.
Источник изображения: [1]
История
Как я уже утверждал в первой части, присутствует следующая тенденция: чем более «встраиваемая» природа у процессора, тем меньше возможностей для идентификации заложено в его архитектуру. Создатели встраиваемых систем почему-то не волнуются о переносимости двоичного кода.
Не являлся исключением и Intel 8086 — микропроцессор 1970-х годов, выросший из «калькуляторной» серии 8008, 8080, 8085. Изначально в него не было заложено никаких средств идентификации.
Начиная с 808386 сведения о модели, степпинге и семействе стали сообщаться в регистре EDX сразу после перезагрузки (получения сигнала RESET). Инструкция CPUID, кодируемая байтами 0x0f 0xa2, была введена в процессорах 80486. Наличие CPUID можно было распознать по возможности записи в бит 21 регистра флагов. Для поддержки работы на более старых ЦПУ приходилось идти на очень изощрённые методы для того, чтобы различать процессоры серий от 8086 до 80386.
Перечисленные в оригинальной статье техники были опробованы преимущественно на ЦПУ от Intel. В статье автор признаёт, что они не позволяют надёжно классифицировать клоны x86 других производителей.
Интерфейс
Для системного программиста работа по идентификации некоторого расширения обычно заключается в установке входных значений в регистрах EAX (лист, англ. leaf) и ECX (подлист, англ. subleaf), исполнению CPUID и прочтению результата в четырёх регистрах: EAX, EBX, ECX, EDX. Отдельные битовые поля выходных регистров будут содержать информацию о значениях связанных с ними архитектурных параметров конкретного ядра процессора.
Все валидные сочетания входных листов-подлистов и четвёрок регистров на выходе формируют таблицу CPUID. Для современных процессоров она содержит около двух десятков строк по четыре 32-битных столбца.
Я не буду расписывать детально все официально описанные поля этой таблицы. Интересующиеся всегда могут найти их в Intel SDM [1] (рекомендую запастись терпением — около 40 страниц текста только про CPUID). Болеее того, для уже заявленных, но ещё не выпущенных в физических продуктах расширений ISA соответствующие им новые поля CPUID могут быть найдены в [3]. Вместо этого я классифицирую информацию, которую можно извлечь из вывода этой инструкции. Для обозначения битовых полей таблицы я буду использовать принятую для этого нотацию: CPUID.leaf.subleaf.reg[bitstart:bitend]. Например, CPUID.0.EBX[31:0] — это биты с 0 по 31 выходного регистра EBX после исполнения CPUID, которая на вход получила лист 0 (EAX = 0); подлист (входное значение ECX) игнорируется, поэтому он не указан.
Регионы листов
Неподдерживаемые значения входных EAX и ECX не приводят к возникновению исключений, а вместо этого возвращают нули во всех четырёх регистрах, либо «мусор» (значения другого листа согласно спецификации). Допустимые же сочетания листов и подлистов образуют три непрерывных региона.
Brand String
Конечно же, ни один вендор не упустит возможности увековечить своё имя в идентификационных данных своего продукта. Причём желательно сделать это не просто в виде числа, а впечатать ASCII-строку (хорошо хоть, что не Unicode).
В IA-32 CPUID текст можно найти минимум в двух группах листов. CPUID.0.EBX, ECX, EDX содержат 12 байт ASCII-строки, специфичной для каждого вендора. Для Intel это, конечно же, «GenuineIntel». А три листа CPUID.0x80000002–0x80000004 предоставляют аж 48 байт для кодирования в ASCII так называемой Brand String. Именно её видно при распечатке cat /proc/cpuinfo в Linux. И, хотя формат её более-менее стандартизован: «вендор марка серия CPU @ частота», я настоятельно не рекомендую по её содержимому принимать решения в программном коде. Слишком значительно её содержимое может варьироваться: частота может быть указана в МГц или в ГГц (а в реальности быть совсем иной из-за динамической подстройки), пробелы могут менять положение, а симулятор или виртуальная машина могут подставить туда вообще что угодно. Вся информация из brand string может быть найдена программно более надёжными способами.
Информация о кэшах, такая как их тип, количество, ёмкость, геометрия, разделяемость между ядрами полезна для тюнинга высокопроизводительного математического софта, например, библиотек BLAS (basic linear algebra system).
Изначально конфигурацию кэшей описывал лист 2. Спроектировали его не очень дальновидно. Формат кодирования информации в нём был выбран не самый гибкий, он не смог в будущем поддержать постоянные изменения в объёме и конфигурации нескольких уровней кэшей. В настоящее время использование информации из листа 2 не рекомендуется, там могут стоять 0xFF-ки.
Судя по тому, что лист 0x80000006 входит в расширенный диапазон (хотя я не уверен, документальных доказательств пока что не нашёл), он был добавлен не Intel. С помощью него была сделана попытка информацию листа 2 дополнить данными о строении кэшей, которые потребовались разработчикам софта. При этом опять же не было намерения предоставить пространство для роста.
Лист 4 — последнее и пока что наиболее гибкое представление данных о кэшах. Цена этому — добавление концепции подлистов, кодируемых в ECX. Каждый подлист описывает один кэш: данных, кода или совмещённый, определяет его уровень, ёмкость и т.д. Хватит ли четвёртого листа надолго — поживём, увидим.
Топология
Изменяемые поля
Разное
В этой секции я собрал прочие интересные моменты, связанные с историей и работой команды CPUID.
Processor Serial Number
Во времена Pentium III каждый процессор получил уникальный серийный номер, содержавшийся в CPUID.3.ECX и CPUID.3.EDX [7]. Легко представить, насколько такая фича была бы удобна для нужд защиты ПО от копирования. Однако в 1999 году Европейское сообщество запротестовало, разумно опасаясь, что подобная функциональность повредит приватности пользователей таких систем. Уже в Intel Pentium IV серийный номер был убран, сейчас лист 3 возвращает нули.
Вендоры и CPUID
Очень интересная таблица [5] повествует о том, что хранят (или в прошлом хранили) в разных листах CPUID разные вендоры. Например, описывается некий mystery level 0x8fffffff, в котором процессоры AMD K8 возвращали строку IT’S HAMMER TIME.
Agner Fog о войнах ISA
История появления расширений набора инструкций IA-32 в условиях конкурентной борьбы нескольких компаний [4]. Добавление новых инструкций всегда влияло на CPUID, и не всегда все могли договориться о том, как это сделать правильно.
Они испортили CPUID! IA32_BIOS_SIGN_ID
Инструкция CPUID всегда нравилась мне лаконичностью своего интерфейса и отсутствием неожиданностей в работе: один регистр на входе и четыре на выходе. В её работе нет генерации исключений, нет обращений к памяти, нет чтения/модификации регистра флагов, на неё не влияют префиксы, она работает во всех режимах процессора. По сравнению с зоопарком CISC-команд IA-32 это был почти идеал.
… пока не оказалось, что иногда на вход необходимо подать два регистра для кодирования листа и подлиста. Окей, не так всё хорошо. Ну хотя бы выходные регистры заранее известны и всегда изменяются…
И тут оказалось, что иногда CPUID изменяет ещё один регистр — а именно IA32_BIOS_SIGN_ID, — и сохраняет в нём сигнатуру текущей программы микрокода процессора. Происходит это, если до этого было произведено обновление прошивки процессора. По каким-то причинам информация об этой процедуре была раскидана по мануалу [1] на тысячу страниц, и потому она ускользала от меня очень долго.
Русские Блоги
CPUID для получения информации о процессоре x86
1. CPUID-CPU ID
Код операции | инструкция | Описание |
---|---|---|
OF A2 | CPUID | В соответствии со значением, изначально введенным в регистр EAX, информация об идентификации процессора и функциях возвращается в регистры EAX, EBX, ECX и EDX. |
Описание
Предоставляет идентификационную информацию процессора в регистрах EAX, EBX, ECX и EDX. Эта информация указывает на то, что Intel является производителем процессора, и предоставляет серию, модель, классификацию, информацию о функциях и кэш-памяти процессора. Входное значение, загруженное в регистр EAX, определяет, какая информация возвращается, как показано в следующей таблице:
Информация, возвращаемая инструкцией CPUID
Флаг ID (бит 21) в регистре EFLAGS указывает, поддерживается ли инструкция CPUID. Если программный процесс может установить и сбросить этот флаг, это означает, что процессор, выполняющий этот процесс, поддерживает инструкцию CPUID.
Информация, возвращаемая инструкцией CPUID, делится на две группы: основная информация и расширенная функциональная информация. Когда значение от 0 до 3 (в соответствии с типом процессора IA-32) вводится в регистр EAX, возвращается основная информация; когда вводится значение от 80000000H до 80000004H, возвращается информация о расширенной функции. Информация о расширенной функции CPUID была введена в процессоре Pentium (R) 4,
Ранние процессоры IA-32 недоступны. Таблица «Максимальные исходные операнды CPUID процессора IA-32» показывает: Для каждой серии процессоров IA-32, реализующих инструкцию CPUID, процессор может распознавать максимальное входное значение инструкции CPUID для основной информации и информации о расширенных функциях.
Максимальное количество исходных операндов CPUID для процессоров IA-32
Для конкретного процессора, если ввод больше, чем значение, отображаемое в «Информации, возвращаемой инструкцией CPUID», будет возвращена информация, соответствующая максимальному значению полезной базовой информации. Например, если вы введете 5 в EAX процессора Pentium 4, будет возвращена информация, соответствующая входному значению 2. Входные значения, возвращающие информацию о расширенных функциях (в настоящее время это значения от 80000000H до 80000004H), являются исключением из этого правила. Для процессора Pentium 4, когда вы вводите значение выше 80000005H, будет возвращена информация, соответствующая входному значению 2.
Инструкция CPUID может выполняться на любом уровне привилегий и выполняться как сериализованная инструкция. Выполнение сериализованных инструкций гарантирует, что любая модификация флагов, регистров и памяти предыдущими инструкциями была завершена перед выборкой и выполнением следующей инструкции (см. Том 3 «Руководства разработчика программного обеспечения для архитектуры Intel (R) IA-32») «Инструкции по сериализации» в главе 7).
Когда входное значение равно 1, процессор возвращает информацию о версии в регистр EAX (см. «Информация о версии в регистре EAX»). Информация о версии состоит из идентификатора серии процессора IA-32, идентификатора модели, идентификатора классификации и типа процессора. Модель, серия и тип процессора первого процессора в серии Intel Pentium 4 следующие:
В таблице «Поле типа процессора» указаны доступные типы процессоров. Корпорация Intel при необходимости выдаст идентификационную информацию о классификации.
Информация о версии в регистре EAX
Поле типа процессора
Для получения дополнительной информации об идентификации ранних процессоров IA-32, пожалуйста, обратитесь к AP-485 «Инструкции по идентификации процессоров Intel и CPUID (номер для заказа 241618) и« IA-32 Intel Architecture Software Developer’s Manual »Том 1 13 глав.
Когда входное значение в EAX равно 1, в регистр EBX будут возвращены три элемента несвязанной информации:
Индекс бренда (младший байт EBX): этот номер обеспечивает запись в таблицу строки бренда, которая содержит строку бренда процессора IA-32. Для получения дополнительной информации об использовании индексов товарных знаков см. Следующий раздел «Товарные знаки» в описании этой директивы. Это поле было введено в процессорах Pentium® III Xeon ™.
Локальный APIC ID (старший байт EBX). Этот номер представляет собой 8-битный идентификатор, который назначается локальному APIC на процессоре во время включения питания. Это поле было введено в процессорах Pentium 4.
Когда входное значение в EAX равно 1, информация о функции возвращается в регистр EDX (см. «Информация о функциях в регистре EDX»). Функциональные биты используются операционной системой или кодом приложения для определения того, какие функции архитектуры IA-32 может обеспечить процессор. В таблице «Флаги функций CPUID, возвращенные в регистр EDX» показано кодирование флагов функций в регистре EDX. Для всех функциональных флагов, возвращаемых в данный момент в EDX, 1 означает, что соответствующая функция поддерживается. Программное обеспечение должно пометить Intel как поставщика, чтобы правильно интерпретировать знак функции. Для будущих функциональных знаков программное обеспечение не должно рассматривать 1 как обозначение определенной функции.
Информация о функциях в регистре ECX EDX
Кодирование кеша и дескриптора TLB
Когда входное значение равно 2, процессор будет возвращать информацию о внутреннем кэше процессора и TLB в регистры EAX, EBX, ECX и EDX. Кодировка этих регистров следующая:
Младший значащий байт регистра EAX (регистр AL) указывает, сколько раз инструкция CPUID должна быть выполнена с входным значением 2, чтобы получить полное описание кэша процессора и TLB. Первый процессор в семействе процессоров Pentium 4 вернет 1.
Если регистр содержит действительную информацию, она содержится в 1-байтовом дескрипторе. В таблице «Кодирование дескрипторов кэша и TLB» показано кодирование этих дескрипторов. Обратите внимание, что порядок дескрипторов в регистрах EAX, EBX, ECX и EDX не определен; то есть конкретный байт не обязательно содержит конкретный дескриптор типа кеша или TLB. Дескрипторы могут появляться в любом порядке.
Когда первый процессор серии Pentium 4 выполняет инструкцию CPUID с входным значением 2, он возвращает следующую информацию о кэше и TLB:
Смысл этих значений следующий:
Младший байт (байт 0) регистра EAX установлен в 01H, что означает, что полная информация о кэше процессора и TLB может быть получена путем выполнения инструкции CPUID только один раз с входным значением 2.
Старший бит всех четырех регистров (EAX, EBX, ECX и EDX) установлен в 0, что означает, что каждый регистр содержит 1-байтовый действительный дескриптор.
Байты 1, 2 и 3 регистра EAX указывают, что процессор содержит следующее:
TLB инструкций 50H-64, используется для отображения страниц размером 4 КБ и 2 МБ или 4 МБ.
5BH-64-элементный TLB данных, используемый для отображения страниц размером 4 КБ и 4 МБ.
Кэш данных первого уровня 66H-8 КБ, комбинация групп строк кэша с четырьмя путями, размер строки кэша 64 байта.
Дескрипторы в регистрах EBX и ECX действительны, но содержат пустые дескрипторы.
Байты 0, 1 и 2 регистра EDX указывают, что процессор содержит следующее:
70H-12 КБ кэш кода уровня 1, комбинация групп строк кэша с четырьмя путями, размер строки кэша 64 байта.
7AH-256 КБ кеш-памяти второго уровня, 8-позиционная комбинация групп строк кэша, размер строки кэша 64 байта в секторах.
Логотип торговой марки
Чтобы использовать инструкцию CPUID для определения торговой марки процессора IA-32, здесь предусмотрены две функции: индекс торговой марки и строка торговой марки.
Индекс товарного знака был добавлен к инструкции CPUID от процессора Pentium III Xeon, и будущие процессоры IA-32 (включая процессоры Pentium 4) также будут включать эту функцию. Указатель товарных знаков обеспечивает запись в таблице идентификации товарных знаков, которая хранится в памяти системным программным обеспечением и может быть доступна через коды системного и пользовательского уровня. В этой таблице каждый индекс товарного знака связан со строкой товарного знака ASCII, которая используется для определения официального семейства Intel и модели процессора (например, «процессор Intel Pentium III»).
Когда значение в регистре EAX равно 1, выполнение инструкции CPUID вернет индекс марки в младший байт EBX. Затем программное обеспечение может использовать этот индекс для определения строки идентификации торговой марки обработчика в таблице идентификации торговой марки. Первый элемент этой таблицы (индекс товарного знака 0) зарезервирован для обратной совместимости с процессорами, которые не поддерживают функцию идентификации товарного знака. В таблице «Соответствие между индексом товарного знака и строкой товарного знака процессора IA-32» текущий процессор
Индекс товарного знака, с которым связана строка идентификации товарного знака.
Свяжите все зарезервированные элементы, включенные в таблицу идентификации товарных знаков, со строкой товарного знака, указывающей, что индекс зарезервирован для будущих процессоров Intel.
Подготовьте программное обеспечение для правильной работы с указателем зарезервированных товарных знаков.
Сопоставление индекса товарного знака и строки товарного знака процессора IA-32
† указывает на эти версии процессора, представленные после процессора Pentium III Xeon.
Чтобы использовать функцию символьной строки товарного знака, инструкция CPUID должна быть выполнена трижды: первый раз значение 8000002H вводится в регистр EAX, второй раз значение 80000003 и третий раз значение 80000004H.
В таблице «Строки марки процессора, возвращаемые первым процессором Pentium 4» показаны строки марки, возвращаемые первым процессором серии Pentium 4.
Замечания
Когда частота указана в строке товарного знака, это наивысшая квалифицированная частота процессора, а не фактическая частота процессора, работающего в данный момент. Следующие рабочие процедуры могут использоваться для обнаружения строковой функции товарного знака:
Используйте входное значение EAX 80000000H для выполнения инструкции CPUID.
Если ((EAX_Return_Value) AND (80000000H) ≠ 0), процессор поддерживает расширенную функцию CPUID, а EAX содержит максимальное поддерживаемое входное значение расширенной функции.
Если EAX_Return_Value ≥ 80000004H, инструкция CPUID поддерживает функцию строки символов товарного знака.
Строка товарного знака процессора, возвращаемая первым процессором Pentium (R) 4
Чтобы использовать инструкцию CPUID для определения процессора IA-32, программное обеспечение для идентификации торговой марки
следует использовать следующие методы идентификации товарных знаков (в порядке убывания приоритета):
Строка товарного знака процессора
Указатель товарных знаков процессора и таблица строк товарных знаков, предоставляемые программным обеспечением.
Таблица на основе структуры, состоящей из информации о типе, серии, модели, классификации и кэше, возвращаемой инструкцией CPUID.
Совместимость архитектуры IA-32.
Ранние модели процессора Intel486 и любой процессор IA-32, предшествующий процессору Intel486, не поддерживают инструкцию CPUID.
Примечания Примечания
Для ранних процессоров IA-32, которые не поддерживают инструкцию CPUID, выполнение этой инструкции вызовет исключение сгенерированного недопустимого кода операции (#UD).