LINUX.ORG.RU

Научите CPUID правильно парсить на предмет cpu family etc

 ,


0

1

А то какие-то непонятки. Вот например, по описанию на вики https://en.wikipedia.org/wiki/CPUID#EAX=1:_Processor_Info_and_Feature_Bits получил cpuid (с аргументом EAX = 1) своего процессора = 00870F10 - и это действительно Ryzen 9 3900X, вот даже в таблице есть http://instlatx64.atw.hu/

Но что-то я никак не могу распарсить 00870F10 согласно «Processor Version Information »

В двоичном виде

008710F10 = 0000  0000 1000 0111 0000 1111 0001 0000

биты 0-3 - Stepping ID == 0

биты 4-7 - Model == 1

биты 8-11 - Family ID == F

биты 12,13 Processor type == 0

биты 16-19 Extended model == 7

биты 20-27 Extended Family ID == 8

Теперь смотрим хотя бы cat /proc/info или информацию из разных других источников. Для моего процессора должно быть Family == 17h, модель 01, ревизия B1.

Ну откуда взялось 17h, почему 17h, а не F??? Оно же и по cat /proc/info == 17h (23) да и ревизия откуда взялась Допустим порядок байт обратный, все равно не сходится ни при варианте две пары байтов переставить, ни все байты в обратном порядке.

wtf, чего не понимаю?

★★★★★

Последнее исправление: praseodim (всего исправлений: 3)

Ответ на: комментарий от xtouqh

Хотя даже в оригинальной ссылке на википедию это есть:

The actual processor family is derived from the Family ID and Extended Family ID fields. If the Family ID field is equal to 15, the family is equal to the sum of the Extended Family ID and the Family ID fields. Otherwise, the family is equal to value of the Family ID field.

Если базовый FamilyID == 15 (есть такое), то используем Extended + Base.

xtouqh
()
Ответ на: комментарий от xtouqh

Хм, выходит не дочитал и сложить-то я не подумал. Тогда действительно (в 16-ричной): F (base) + 8 (ext) = 17

Спасибо!

praseodim ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.