¿Por qué se informa que Hyper-threading es compatible con los procesadores que no lo tienen?

Estoy tratando de recopilar información del sistema y noté lo siguiente en un Intel Xeon E5420:

Después de ejecutar CPUID(EAX=1), EDX[28] está configurado, lo que indica compatibilidad con Hyper-threading, a pesar de que el procesador figura en el sitio web de Intel como no compatible con Hyper-threading (ark.intel.com)

¿Alguien tiene una explicación para esto?

preguntado el 03 de mayo de 12 a las 17:05

Es "hiper-threading" solo el caso especial de un solo hilo. -

Relacionado: msdn.microsoft.com/en-us/library/hskdteyh.aspx "Con el conjunto de chips AMD, todas las CPU AMD multinúcleo configuran el bit 28 de los bits de información de funciones para indicar que el chip tiene más de un núcleo. Este es el caso, aunque AMD no es compatible con Hyper-Threading". Pero eso es para chips AMD. -

El gráfico en MSDN también etiqueta el bit 28 como "Multithreading"... -

2 Respuestas

Hay una explicación semioficial en una charla de Intel https://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection

Básicamente, después de que Intel introdujera SMT/hyperthreading en las versiones finales del Pentium 4, crearon el Pentium D, que al ser multinúcleo se consideró una evolución del modelo de hyperthreading porque un núcleo tiene más independencia de otro núcleo que las unidades SMT en relación con entre sí y, por lo tanto, el multinúcleo funciona mejor que SMT con el mismo número de subprocesos. Entonces usaron el mismo bit para indicar SMT/hyperthreading o multi-core por esa razón, es decir, multi-core fue visto como una forma mejorada de hyperthreading. El Intel Xeon E5420 sobre el que pregunta es un procesador multinúcleo, por eso está configurado el bit.

Por supuesto, una vez que puede tener hiperprocesamiento y multinúcleo en el mismo paquete, a veces es necesario diferenciarlos, por ejemplo, porque prefiere programar un nuevo subproceso en un núcleo descargado en lugar de en la otra mitad hiperproceso. de un núcleo ya cargado. Por lo tanto, finalmente se introdujeron nuevos bits de cpuid (o más bien hojas) con el fin de describir una topología combinada de SMT y multinúcleo. La más reciente de estas nuevas funciones de cpuid para consultar la topología del procesador es la hoja EAX=0xB.

Aparte, no debe usar el algoritmo de enumeración de topología proporcionado en esa charla antigua de Intel para procesadores fabricados en 2010 y posteriores porque dará recuentos de núcleos incorrectos/inflados. Use el método actualizado dado en https://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/ en lugar de. Por desgracia, esta página más nueva es mucho más seca y, por ejemplo, no responde a la pregunta que hiciste, mientras que la charla anterior sí...

Respondido 11 Jul 14, 17:07

Aquí está la definición de ese bit de acuerdo con el Manual del desarrollador de Intel:

El campo reservado de ID de APIC máx. es válido. Un valor de 0 para HTT indica que solo hay un único procesador lógico en el paquete y el software debe suponer que solo se reserva una única ID de APIC. Un valor de 1 para HTT indica que el valor en CPUID.1.EBX[23:16] (la cantidad máxima de ID direccionables para procesadores lógicos en este paquete) es válido para el paquete.

En el capítulo 8 del volumen 3A del manual, se describe cómo se detectan correctamente los subprocesos múltiples de hardware.

Aquí hay un enlace:

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

contestado el 08 de mayo de 12 a las 06:05

Sí, esto parece mostrar que, con el tiempo, el bit HTT ha llegado a indicar más de un subproceso lógico por paquete, ya sea debido a HTT oa varios núcleos físicos. - andrewmu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.