cpuid Создает инструкцию, доступную на платформах x86 и x64. Эта инструкция запрашивает у процессора информацию о поддерживаемых возможностях и типе ЦП.
Синтаксис
void __cpuid( int cpuInfo[4], int function_id ); void __cpuidex( int cpuInfo[4], int function_id, int subfunction_id );
Параметры
кпуинфо
заполняет Массив из четырех целых чисел, содержащих данные, возвращаемые в EAX, EBX, ECX и EDX о поддерживаемых возможностях ЦП.
function_id
окне Код, указывающий сведения для извлечения, переданные в EAX.
subfunction_id
окне Дополнительный код, указывающий сведения для извлечения, передаваемые в ECX.
Требования
__cpuid | x86, x64 |
__cpuidex | x86, x64 |
Заголовочный файл
Комментарии
Эта встроенная функция хранит поддерживаемые функции и сведения о ЦП, возвращаемые cpuid инструкцией в кпуинфо, массив 4 32-разрядных целых чисел, который заполняется ЗНАЧЕНИЯМИ регистров EAX, EBX, ECX и EDX (в этом порядке). Возвращаемые сведения имеют разные значения в зависимости от значения, переданного в качестве параметра function_id . Сведения, возвращаемые с различными значениями function_id , зависят от процессора.
Тест системы программой CPUID HWMonitorPro
Встроенная функция __cpuid очищает регистр ECX перед вызовом инструкции cpuid . __cpuidex Встроенная функция задает для регистра ecx значение subfunction_id перед созданием cpuid инструкции. Он позволяет собирать дополнительные сведения о процессоре.
Дополнительные сведения о конкретных параметрах, которые необходимо использовать, и значения, возвращаемые этими встроенными функциями процессоров Intel, см. в документации cpuid по инструкциям в руководстве по архитектуре Intel 64 и IA-32 Руководство по программированию для разработчиков программного обеспечения том 2: Справочник по набору инструкций и Справочные сведения о расширении набора инструкций по архитектуре Intel. В документации Intel используются условия «конечный» и «конечный лист» для function_id и subfunction_id параметров, передаваемых в EAX и ECX.
Дополнительные сведения о конкретных параметрах, которые необходимо использовать, и значения, возвращаемые этими встроенными функциями процессоров AMD, см. в документации cpuid по инструкциям в руководстве по архитектуре AMD64, том 3: General-Purpose и системные инструкции, а также в руководствах по редакциям для конкретных семейств процессоров. Ссылки на эти документы и другие сведения см. на странице документации по AMD для разработчиков, руководства номер функции» и «номер подфункции» для параметров function_id и subfunction_id , передаваемых в EAX и ECX.
Если аргумент function_id равен 0, кпуинфо[0] возвращает наибольшее доступное значение нерасширенного function_id , поддерживаемое процессором. Производитель процессора кодируется в кпуинфо[1], кпуинфо[2] и кпуинфо[3].
Поддержка конкретных расширений набора инструкций и функций ЦП кодируется в результатах кпуинфо , возвращаемых для более высоких значений function_id . Дополнительные сведения содержатся в разделе вышеописанные руководства и в следующем примере кода.
HWMonitor мониторинг железа
Некоторые процессоры поддерживают информацию о расширенной функции CPUID. Если он поддерживается, для возврата информации могут использоваться function_id значения от 0x80000000. Чтобы определить максимально допустимое значение, задайте для function_id значение 0x80000000. Максимальное значение function_id , поддерживаемое для расширенных функций, записывается в кпуинфо[0].
Пример
В этом примере показаны некоторые сведения, доступные через __cpuid и __cpuidex встроенных функций. Приложение выводит список расширений набора инструкций, поддерживаемых текущим процессором. Вывод показывает возможные результаты для конкретного процессора.
// InstructionSet.cpp // Compile by using: cl /EHsc /W4 InstructionSet.cpp // processor: x86, x64 // Uses the __cpuid intrinsic to get information about // CPU extended instruction set support. #include #include #include #include #include #include class InstructionSet < // forward declarations class InstructionSet_Internal; public: // getters static std::string Vendor(void) < return CPU_Rep.vendor_; >static std::string Brand(void) < return CPU_Rep.brand_; >static bool SSE3(void) < return CPU_Rep.f_1_ECX_[0]; >static bool PCLMULQDQ(void) < return CPU_Rep.f_1_ECX_[1]; >static bool MONITOR(void) < return CPU_Rep.f_1_ECX_[3]; >static bool SSSE3(void) < return CPU_Rep.f_1_ECX_[9]; >static bool FMA(void) < return CPU_Rep.f_1_ECX_[12]; >static bool CMPXCHG16B(void) < return CPU_Rep.f_1_ECX_[13]; >static bool SSE41(void) < return CPU_Rep.f_1_ECX_[19]; >static bool SSE42(void) < return CPU_Rep.f_1_ECX_[20]; >static bool MOVBE(void) < return CPU_Rep.f_1_ECX_[22]; >static bool POPCNT(void) < return CPU_Rep.f_1_ECX_[23]; >static bool AES(void) < return CPU_Rep.f_1_ECX_[25]; >static bool XSAVE(void) < return CPU_Rep.f_1_ECX_[26]; >static bool OSXSAVE(void) < return CPU_Rep.f_1_ECX_[27]; >static bool AVX(void) < return CPU_Rep.f_1_ECX_[28]; >static bool F16C(void) < return CPU_Rep.f_1_ECX_[29]; >static bool RDRAND(void) < return CPU_Rep.f_1_ECX_[30]; >static bool MSR(void) < return CPU_Rep.f_1_EDX_[5]; >static bool CX8(void) < return CPU_Rep.f_1_EDX_[8]; >static bool SEP(void) < return CPU_Rep.f_1_EDX_[11]; >static bool CMOV(void) < return CPU_Rep.f_1_EDX_[15]; >static bool CLFSH(void) < return CPU_Rep.f_1_EDX_[19]; >static bool MMX(void) < return CPU_Rep.f_1_EDX_[23]; >static bool FXSR(void) < return CPU_Rep.f_1_EDX_[24]; >static bool SSE(void) < return CPU_Rep.f_1_EDX_[25]; >static bool SSE2(void) < return CPU_Rep.f_1_EDX_[26]; >static bool FSGSBASE(void) < return CPU_Rep.f_7_EBX_[0]; >static bool BMI1(void) < return CPU_Rep.f_7_EBX_[3]; >static bool HLE(void) < return CPU_Rep.isIntel_ CPU_Rep.f_7_EBX_[4]; >static bool AVX2(void) < return CPU_Rep.f_7_EBX_[5]; >static bool BMI2(void) < return CPU_Rep.f_7_EBX_[8]; >static bool ERMS(void) < return CPU_Rep.f_7_EBX_[9]; >static bool INVPCID(void) < return CPU_Rep.f_7_EBX_[10]; >static bool RTM(void) < return CPU_Rep.isIntel_ CPU_Rep.f_7_EBX_[11]; >static bool AVX512F(void) < return CPU_Rep.f_7_EBX_[16]; >static bool RDSEED(void) < return CPU_Rep.f_7_EBX_[18]; >static bool ADX(void) < return CPU_Rep.f_7_EBX_[19]; >static bool AVX512PF(void) < return CPU_Rep.f_7_EBX_[26]; >static bool AVX512ER(void) < return CPU_Rep.f_7_EBX_[27]; >static bool AVX512CD(void) < return CPU_Rep.f_7_EBX_[28]; >static bool SHA(void) < return CPU_Rep.f_7_EBX_[29]; >static bool PREFETCHWT1(void) < return CPU_Rep.f_7_ECX_[0]; >static bool LAHF(void) < return CPU_Rep.f_81_ECX_[0]; >static bool LZCNT(void) < return CPU_Rep.isIntel_ CPU_Rep.f_81_ECX_[5]; >static bool ABM(void) < return CPU_Rep.isAMD_ CPU_Rep.f_81_ECX_[5]; >static bool SSE4a(void) < return CPU_Rep.isAMD_ CPU_Rep.f_81_ECX_[6]; >static bool XOP(void) < return CPU_Rep.isAMD_ CPU_Rep.f_81_ECX_[11]; >static bool TBM(void) < return CPU_Rep.isAMD_ CPU_Rep.f_81_ECX_[21]; >static bool SYSCALL(void) < return CPU_Rep.isIntel_ CPU_Rep.f_81_EDX_[11]; >static bool MMXEXT(void) < return CPU_Rep.isAMD_ CPU_Rep.f_81_EDX_[22]; >static bool RDTSCP(void) < return CPU_Rep.isIntel_ CPU_Rep.f_81_EDX_[27]; >static bool _3DNOWEXT(void) < return CPU_Rep.isAMD_ CPU_Rep.f_81_EDX_[30]; >static bool _3DNOW(void) < return CPU_Rep.isAMD_ CPU_Rep.f_81_EDX_[31]; >private: static const InstructionSet_Internal CPU_Rep; class InstructionSet_Internal < public: InstructionSet_Internal() : nIds_< 0 >, nExIds_< 0 >, isIntel_< false >, isAMD_< false >, f_1_ECX_< 0 >, f_1_EDX_< 0 >, f_7_EBX_< 0 >, f_7_ECX_< 0 >, f_81_ECX_< 0 >, f_81_EDX_< 0 >, data_<>, extdata_<> < //int cpuInfo[4] = ; std::array cpui; // Calling __cpuid with 0x0 as the function_id argument // gets the number of the highest valid function ID. __cpuid(cpui.data(), 0); nIds_ = cpui[0]; for (int i = 0; i // Capture vendor string char vendor[0x20]; memset(vendor, 0, sizeof(vendor)); *reinterpret_cast(vendor) = data_[0][1]; *reinterpret_cast(vendor + 4) = data_[0][3]; *reinterpret_cast(vendor + 8) = data_[0][2]; vendor_ = vendor; if (vendor_ == «GenuineIntel») < isIntel_ = true; >else if (vendor_ == «AuthenticAMD») < isAMD_ = true; >// load bitset with flags for function 0x00000001 if (nIds_ >= 1) < f_1_ECX_ = data_[1][2]; f_1_EDX_ = data_[1][3]; >// load bitset with flags for function 0x00000007 if (nIds_ >= 7) < f_7_EBX_ = data_[7][1]; f_7_ECX_ = data_[7][2]; >// Calling __cpuid with 0x80000000 as the function_id argument // gets the number of the highest valid extended ID. __cpuid(cpui.data(), 0x80000000); nExIds_ = cpui[0]; char brand[0x40]; memset(brand, 0, sizeof(brand)); for (int i = 0x80000000; i // load bitset with flags for function 0x80000001 if (nExIds_ >= 0x80000001) < f_81_ECX_ = extdata_[1][2]; f_81_EDX_ = extdata_[1][3]; >// Interpret CPU brand string if reported if (nExIds_ >= 0x80000004) < memcpy(brand, extdata_[2].data(), sizeof(cpui)); memcpy(brand + 16, extdata_[3].data(), sizeof(cpui)); memcpy(brand + 32, extdata_[4].data(), sizeof(cpui)); brand_ = brand; >>; int nIds_; int nExIds_; std::string vendor_; std::string brand_; bool isIntel_; bool isAMD_; std::bitset f_1_ECX_; std::bitset f_1_EDX_; std::bitset f_7_EBX_; std::bitset f_7_ECX_; std::bitset f_81_ECX_; std::bitset f_81_EDX_; std::vector data_; std::vector extdata_; >; >; // Initialize static member data const InstructionSet::InstructionSet_Internal InstructionSet::CPU_Rep; // Print out supported instruction set extensions int main() < auto auto support_message = [ outstream ; std::cout
Завершение блока, относящегося только к системам Майкрософт
Источник: learn.microsoft.com
Как пользоваться программой CPU-Z — Подробная инструкция
CPU-Z работает только в операционной системе Windows и собирает информацию о некоторых основных аппаратных компонентах компьютера. Стоит отметить, что не так давно появилась версия для Android.
Программа показывает подробную информацию о вашем процессоре, материнской плате, памяти и общей информации о системе Windows и DirectX.
Окно представлено в виде вкладок для классификации информации по категориям. Вкладки имеют ярлыки ЦП, плата, память, SPD, графика, тест. Вы можете видеть эти ярлыки на рисунке ниже.
Примечание: Статья основана на версии 1.97.0, 64-битная версия. CPUID всегда обновляет свое программное обеспечение для добавления новых функций и поддержки новых процессоров и чипов. Поэтому если вы видите интерфейс, отличающийся от представленного на фотографии, обратите внимание, та ли это версия, которая использовалась для иллюстрации.
Центральный процессор
Вкладка ЦП расскажет вам информацию о процессоре вашего компьютера, такую как имя, множитель, количество потоков, номер сокета, энергопотребление, технология, частота такта и т.д. А именно:
Имя: Имя процессора, на скриншоте компьютер с Intel Pentium G4560.
Кодовое имя: Кодовое название архитектуры процессора.
Max TDP: Максимальное энергопотребление процессора.
Корпусировка процессора: Тип сокета процессора, для каждого типа сокета будет разное количество контактов. Этот параметр очень важен, когда вы хотите обновить процессор, вы не можете принести 1 чип CPU socket 478, подключенный к socket 1155 и наоборот.
Технологический процесс: Технология транзисторов. Как в моем примере, 14 нм, чем меньше нанометров, тем процессор быстрее и эффективнее. Эта технология все больше улучшается, в последних процессорах она смогла достичь 10 нм. В телефонах Apple начала производство 7-нм процессоров A12 для своих устройств.
Напряжение ядра: Напряжение для ядра чипа, этот параметр обычно не фиксирован, так как современные чипы часто регулируют напряжение потребления для экономии электроэнергии.
Спецификация: Полное название процессора в компьютере.
Семейство: Основная архитектура чипа. Например, у процессора Intel семейство 6, поколение P6 (Pentium Pro, Pentium II, Pentium III и Pentium M — все имеют одинаковый блок исполнения). Список микропроцессорных чипов Intel можно найти в Википедии.
Модель: Тип процессора в семействе, которым оснащен компьютер. Пример с семейством 15 (поколение NetBrust), модель 0 — ядро Willamette, модель 1 — ядро Willamette было улучшено. Модель 2 — Northwood, построенный на более новой технологии. Модель 3 — это ядро Prescott с технологией 90 нм, модель 4 — это все еще Prescott, но с дополнительными улучшениями, такими как поддержка No-eXecute.
Ревизия: Комбинация Family, Model и Stepping может подсказать вам название ревизии (необходимо проверить в техническом паспорте, предоставленном Intel). Благодаря ревизии вы можете найти улучшения, сделанные между чипами.
Инструкции: Это список сценариев, которые обрабатывает чип.
Тактовая частота: параметр вместе с напряжением ядра часто меняется для экономии энергии.
Multiplier (Множитель): Коэффициент импульса (также известный как отношение шины) устанавливает отношение внутренней тактовой частоты к подаваемому внешнему импульсу. Например, это число равно x10, тогда на каждый внешний тактовый цикл будет приходиться 10 внутренних циклов.
Скорость шины: скорость шины.
Кэш: Спецификация кэша, чем выше, тем лучше, так как процессор будет меньше загружен при обработке. Чем выше уровень, тем быстрее работает процессор.
Ядра и потоки: Количество ядер (или ядрышек) и количество потоков ЦП. Это число обычно четное, как на моих фотографиях, здесь 2 ядра, 4 потока.
Материнская плата
На вкладке плата вы увидите много полезной информации при обновлении или замене компонентов. Эта информация включает в себя производителя материнской платы, чипсет, BIOS и графический интерфейс.
В этой вкладке вы найдете:
Производитель: Название производителя материнской платы, например, Acer, Asus, Foxconn, .
Модель: Модель материнской платы, рядом с названием версии.
Чипсет: Производитель, тип чипа и ревизия.
Южный мост: Производитель южного моста и ревизия.
BIOS: Отображает информацию о марке, версии и дате производства BIOS.
Графический интерфейс: Информация о слотах для видеокарт на материнской плате. Шина — поддерживаемая версия, обычно только PCI-Express и AGP. Link Width — ширина полосы пропускания. Однако не все материнские платы поддерживают этот слот.
Память
Вкладка Память также является очень полезной вкладкой, поскольку большинство людей часто улучшают скорость работы своего компьютера, добавляя больше оперативной памяти. На изображении выше видно, что тестовый компьютер имеет 16 ГБ встроенной памяти. Эта память является памятью DDR4 (отличается от DDR2 или DDR3) и работает в двухканальном режиме. Большинство другой информации на этой вкладке предназначено для опытных пользователей. Вы найдете больше полезной информации для разгона.
Тип: Тип оперативной памяти компьютера, здесь — DDR4.
Размер: Объем оперативной памяти, здесь 16 ГБ.
Число каналов: Указывает на использование нескольких слотов оперативной памяти, Single — 1, Dual — 2. Параметр Single также доступен, если имеется только 1 слот оперативной памяти. Вы можете проверить количество слотов оперативной памяти ПК на вкладке SPD, как показано ниже.
Частота памяти: Истинная частота шины оперативной памяти
Частота без ядра: Скорость северного моста.
Если есть свободный слот для оперативной памяти и вы хотите обновить оперативную память, необходимо обратить внимание на параметры оперативной памяти и скорость оперативной памяти, чтобы выбрать подходящий вариант.
Вкладка SPD программы CPU-Z
Чтобы обновить ОЗУ, вам может понадобиться рассмотреть некоторые другие сведения. Вкладка SPD — это вкладка, содержащая дополнительную информацию. На этой вкладке увидите информацию о каждой планке памяти в каждом слоте материнской платы. Вы можете увидеть размер чипа, тип оперативной памяти и частоту, на которой она работает. Кроме того, здесь есть временная шкала, на которой отображается подробная информация в зависимости от конфигурации.
Слот № 1: Обычно компьютер имеет 2 или 4 слота оперативной памяти, что соответствует максимальному значению.
DDR4: Тип оперативной памяти
Объем модуля: Объем оперативной памяти, установленной в слот для просмотра, в единицах МБ, 8 ГБ.
Производитель: Название производителя оперативной памяти.
Таблица таймингов: Тайминги для каждого слота ОЗУ.
Вкладка Графика
На вкладке графика представлена самая основная информация о GPU, такая как название, производитель и технология GPU. Если вы хотите более подробно рассмотреть видеокарту, вы можете использовать специальный инструмент под названием GPU-Z.
Выбор устройства отображения: Эта часть размыта, потому что в моем устройстве только одна видеокарта. Если компьютер имеет несколько видеокарт, эта часть загорится, и вы сможете выбрать карту для просмотра.
Name (Имя): Название производителя графического чипа.
Кодовое имя: Кодовое имя графического чипа, работающего на данном компьютере.
Ядро: Тактовая частота графического процессора.
Размер: Объем видеокарты.
Технология: Технология графических карт, как и технология чипов процессора, чем меньше, тем лучше.
Тип: Тип обработки, например: 64bit, 128bit, 256bit. Чем выше этот параметр, тем быстрее выполняется обработка графики.
Вкладка Тест программы CPU-Z
На этой вкладке вы сможете узнать эталонный уровень процессора, работающего на вашем компьютере, выполнив небольшой тест. После выполнения теста вы можете сравнить свой процессор с другими процессорами, выбрав в синем поле Эталон. Установив флажок рядом с Эталоном в черном поле, вы переведете результат в % для удобства сравнения.
Источник: cpuz1.ru
CPUID HWMonitor: мониторинг показателей компонентов компьютера
Для того, чтобы поддерживать нормальную работу и скорость компьютера, а также своевременно выявлять различные неполадки, пользователям необходимо обращаться к помощи специализированного программного обеспечения. Утилита CPUID HWMonitor позволяет получить пользователям всю необходимую информацию о работоспособности различных элементов компьютера, включая температуру, скорость вращения вентилятора и другое.
CPUID HWMonitor представляет собой небольшую утилиту, в окне которой в виде разворачиваемого списка отображаются все компоненты компьютера со всей интересующей информацией по каждому из них.
Ключевые особенности CPUID HWMonitor:
1. Точное отображение текущих данных по температурным показателям различных компонентов системы, частоты вращения вентилятора, напряжения контрольных точек и т.д.;
2. Отображение минимальных и максимальных значений;
3. Возможность экспорта результата отслеживания;
4. Утилита распространяется абсолютно бесплатно.
Как пользоваться CPUID HWMonitor?
Пользоваться программой предельно просто. Для начала скачайте утилиту по ссылке в конце статьи и выполните ее установку и запуск.
На экране отобразится окно программы, в котором будут отображены основные компоненты системы с постоянно обновляемыми результатами мониторинга.
Если вам потребуется сохранить результаты проверки, перейдите в меню «File» – «Save Monitoring Data» и укажите место на компьютере, куда будет сохранен файла формата TXT.
В целом программа CPUID HWMonitor не позволяет внести никаких изменений в работу системы, а лишь осуществляет лишь мониторинг состояния комплектующих, а также их наименование, с чем, собственно, справляется весьма неплохо.
Источник: public-pc.com