Почему Hyper-Threading сообщается как поддерживаемый на процессорах без него?

Я пытаюсь собрать системную информацию и заметил следующее на Intel Xeon E5420:

После выполненияCPUID(EAX=1), EDX [28] установлен, что указывает на поддержку Hyper-Threading, несмотря на тот факт, что процессор указан на веб-сайте Intel как не поддерживающий Hyper-Threading (ark.intel.com)

У кого-нибудь есть объяснение этому?

 Flexo♦03 мая 2012 г., 19:03
Это "гиперпоточность" просто особый случай только одного потока.
 Mysticial03 мая 2012 г., 21:42
Диаграмма в MSDN также помечает бит 28 как «Многопоточность» ...
 Mysticial03 мая 2012 г., 21:40
Связанные с:msdn.microsoft.com/en-us/library/hskdteyh.aspx  «При использовании чипсета AMD все многоядерные процессоры AMD устанавливают бит 28 информационных битов функций, чтобы указать, что чип имеет более одного ядра. Это так, даже если AMD не поддерживает гиперпоточность. & Quot; Но это для чипов AMD.

Ответы на вопрос(2)

Решение Вопроса

Вот определение этого бита в соответствии с Руководством Intel для разработчиков:

Max APIC IDs reserved field is Valid. A value of 0 for HTT indicates there is only a single logical processor in the package and software should assume only a single APIC ID is reserved. A value of 1 for HTT indicates the value in CPUID.1.EBX[23:16] (the Maximum number of addressable IDs for logical processors in this package) is valid for the package.

В главе 8 тома 3А руководства описывается, как правильно определить аппаратную многопоточность.

Вот ссылка:

http://download.intel.com/products/processor/manual/325462.pdf

 andrewmu08 мая 2012 г., 15:15
Да, похоже, это показывает, что бит HTT со временем стал указывать более одного логического потока на пакет, будь то из-за HTT или нескольких физических ядер.

В разговоре Intel есть полуофициальное объяснение.https://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection

По сути, после того, как Intel представила SMT / гиперпоточность в финальных версиях Pentium 4, они создали Pentium D, который, будучи многоядерным, считался эволюцией модели гиперпоточности, потому что ядро имеет большую независимость от другого ядра, чем модули SMT, относительно друг друга, и, следовательно, многоядерный работает лучше, чем SMT при том же количестве потоков. Поэтому они использовали один и тот же бит для обозначения SMT / гиперпоточности или многоядерности по этой причине, то есть многоядерность рассматривалась как улучшенная форма гиперпоточности. Intel Xeon E5420, о котором вы спрашиваете, является многоядерным процессором, поэтому бит установлен.

Конечно, если в одном и том же пакете можно использовать как гиперпоточность, так и многоядерность, иногда необходимо их разделять, например, потому что вы скорее запланировали бы новый поток на незагруженном ядре, чем на другом гипер-ядре. резьбовая половина уже загруженного сердечника. Таким образом, новые биты cpuid (или, скорее, листья) были в конечном итоге введены с целью описания комбинированной топологии SMT и многоядерности. Самая последняя из этих новых функций cpuid для запроса топологии процессора - это лист EAX = 0xB.

Кроме того, вы не должны использовать алгоритм перечисления топологии, приведенный в этом старом докладе Intel для процессоров, сделанном в 2010 году и после него, поскольку он будет давать неверное / завышенное число ядер. Используйте обновленный метод, указанный наhttps://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/ вместо. Увы, эта более новая страница гораздо более сухая и, например, не отвечает на вопрос, который вы задали, тогда как старый разговор ...

Ваш ответ на вопрос