2012-05-03 12 views
9

estoy tratando de obtener información del sistema y se dio cuenta lo siguiente en un Intel Xeon E5420:¿Por qué Hyper-threading se informa como compatible con procesadores sin él?

Después de ejecutar CPUID(EAX=1), EDX [28] está definido, lo que indica el apoyo Hyper-threading, a pesar del hecho de que el procesador está en la lista de el sitio web de Intel no admite Hyper-threading (ark.intel.com)

¿Alguien tiene una explicación para esto?

+0

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

+0

Relacionados: http://msdn.microsoft.com/en-us/library/hskdteyh.aspx "Con el conjunto de chips AMD, todas las CPU AMD multi-core configuran el bit 28 de los bits de información de características 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. – Mysticial

+0

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

Respuesta

3

Aquí es la definición de ese bit de acuerdo con el Manual del Intel Developer:

Max APIC ID de campo reservado es válido. Un valor de 0 para HTT indica que hay , solo un único procesador lógico en el paquete y el software debe suponer , solo se reserva una única ID APIC. Un valor de 1 para HTT indica el valor en CPUID.1.EBX [23:16] (el número máximo de identificadores 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 detecta correctamente el hardware multi-threading.

Aquí hay un enlace:

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

+0

Sí, esto parece mostrar que el bit HTT a través del tiempo ha llegado a indicar más de un hilo lógico por paquete, ya sea debido a HTT o múltiples núcleos físicos. – andrewmu

4

Hay una explicación semi-oficial en un procesador Intel hablan https://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection

Básicamente después de que Intel introdujo el SMT/hyperthreading en las versiones finales de los Pentium 4, que creó el Pentium D, que siendo multinúcleo se consideró una evolución del modelo hyperthreading porque un núcleo tiene más independencia de otro núcleo que las unidades SMT tienen entre sí, y por lo tanto multi-core se desempeña mejor que SMT en el mismo conteo de hilos . Así que usaron el mismo bit para indicar SMT/hyperthreading o multi-core por esa razón, es decir, multi-core se vio como una forma mejorada de hyperthreading. El Intel Xeon E5420 que preguntas es un procesador multi-core, por eso es que el bit está configurado.

Por supuesto, una vez que se puede tener tanto hyperthreading y multi-núcleo en el mismo paquete, a veces es necesario distinguirlos, por ejemplo, porque prefiere programar un nuevo hilo sobre un núcleo sin carga y no en la otra la mitad hiperhebra de un núcleo ya cargado. Por lo tanto, se introdujeron nuevos bits de cpuid (o más bien hojas) con el fin de describir una topología combinada de SMT y multi-core. La más reciente de estas características más recientes de cpuid para consultar la topología del procesador es la hoja EAX = 0xB.

Como comentario adicional, no debe usar el algoritmo de enumeración de topología dado en la antigua conversación de Intel para procesadores realizada en 2010 y posteriores, ya que dará recuentos de núcleos incorrectos/inflados. Utilice el método actualizado dado en https://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/ en su lugar. Por desgracia, esta página más nueva es mucho más seca y no responde la pregunta que hiciste, mientras que la anterior habla ...

Cuestiones relacionadas