2009-05-27 29 views

Respuesta

10

Sí, Nehalem-based procesadores implementar Hyper-threading.

El nuevo Nehalem-EX al que se refiere tiene 8 núcleos físicos donde cada núcleo puede verse como 2 núcleos lógicos para un total de 16 núcleos lógicos, lo que permite la ejecución de 16 subprocesos de aplicación en un solo procesador.

Esta es la misma tecnología utilizada en los procesadores Pentium 4 habilitados para Hyper-threading y, más recientemente, en los procesadores Atom. Mi Eee PC tiene un procesador Atom de un solo núcleo que tiene dos núcleos lógicos: el Administrador de tareas de Windows mostrará dos gráficos de CPU; uno para cada núcleo lógico.

de UltraSPARC T2 (y el T1) también permiten simultaneous multithreading (de los cuales la aplicación de Intel se llama Hyper-Threading - una marca comercial de Intel) Sun que permite que un solo núcleo que aparezca como múltiples núcleos lógicos para ejecutar múltiples hilos en una sola núcleo.

La idea básica detrás del multithreading simultáneo es tener múltiples registros para almacenar el estado del procesador, por lo que parece que en realidad hay múltiples núcleos en un solo núcleo, porque tiene múltiples conjuntos completos de registros de hardware.

Mientras que las instalaciones físicas como la ALU y la FPU pueden no aumentar, tener más conjuntos de registros para ejecutar más subprocesos en un núcleo físico puede conducir a una mejor utilización de los recursos de procesador disponibles. Es posible que el núcleo no se haya saturado al ejecutar un único subproceso, pero la ejecución de múltiples podría saturar todas las unidades a su máximo potencial.

¿Qué significa para los programadores?

Significa que todavía tendremos que escribir software de subprocesos múltiples: tener un programa que solo tenga un solo subproceso solo podrá utilizar un único núcleo lógico. Solo al tener un código de múltiples subprocesos bien escrito, podemos aprovechar la gran cantidad de núcleos lógicos que estos procesadores ofrecen.

Incluso con el multihilo simultáneo, el código se ejecuta en un hilo por núcleo lógico.

1

Hyperthreading (la marca registrada de INTEL por cierto) permite que cada hilo se ejecute de manera simultánea. Entonces, en este caso, podría ejecutar subprocesos de aplicación 8X2 al mismo tiempo.

Desde el folleto ...

Intel Nehalem arquitectura construida sobre la tecnología de proceso de 45 nm de Intel única high-k puerta de metal

Up to **8 cores** per processor 
Up to **16 threads per processor** with Intel® Hyper-threading 
2.3 billion transistors 

comparar esto con una sola CPU, sistemas de un solo núcleo, donde cada uno debe hilo programarse y, como máximo, solo un subproceso estará activo: el que ejecuta la tarea vinculada a la CPU y los demás que esperan una transferencia de E/S.

Originalmente, el subprocesamiento se utilizaba para modelar un conjunto de actividades simultáneas (no para el modelo que no se ejecutaba en paralelo) o para producir la apariencia de un sistema que respondía incluso al hacer E/S. Por ejemplo, sin enhebrar, su procesador de textos parecería estancarse al guardar un documento.

Durante muchos años me resistí a la idea de tener múltiples hilos en mis aplicaciones de escritorio -complicó el código y redujo el rendimiento- piense en todas esas operaciones mutex que requieren que el kernel OS se involucre. Con el advenimiento de la ejecución de subprocesos en realidad paralela, mis objeciones se reducen, pero sigo creyendo que los procesos múltiples en lugar de múltiples hilos en un solo proceso es un mejor enfoque.

Chris

+2

¿Quiere decir 8 veces 16 cuando escribe 8X16? Si es así, supongo que es, al igual que las CPU HT más antiguas, dos hilos por núcleo, es decir, 16 hilos en total, no 128. – OregonGhost

+1

Sí. Según INTEL, realmente significa 16 hilos en cada núcleo. Para lograrlo, deben asegurarse de que haya mucha duplicación de lógica en el dado. –

+2

Obviamente, no significan eso. Citó la pieza usted mismo: 16 hilos por ** procesador **. – MSalters

2

No se ha cambiado el nombre de hiper-threading, es hyper-threading (está escrito en esta página web le dio un enlace).

Simplemente, el procesador le dice a OS que tiene 16 núcleos, por lo que puede equilibrar las tareas en el número duplicado de núcleos. La tecnología Hyper-Threading proporciona algún beneficio, ya que en algunos casos dos instrucciones diferentes de dos programas/hilos diferentes se pueden ejecutar simultáneamente en un núcleo. Pero seguro que no dará una aceleración del 200%. No trabajé en dicho procesador, pero creo que puede obtener un 10% -20% de tiempo adicional de la CPU.

1

Depende del modelo de subprocesamiento de cada sistema operativo mapear subprocesos de nivel de sistema operativo a subprocesos de nivel de hardware como los descritos en la pregunta.

Los hilos lógicos generados por los lenguajes de programación de alto nivel utilizados por los programadores de aplicaciones siguen siendo un nivel del SO eliminado del hardware, a menos, por supuesto, que hable del código del sistema operativo que realiza la asignación.

4

Un extremo de un procesador multihilo es el procesador de barril. Esta es una forma de SMT en la que el procesador divide las ranuras entre los múltiples hilos por igual en forma de round robin. Para hacer esto, solo necesita copias de varios registros mientras usa el mismo conjunto de unidades de ejecución. Entonces, en 4 ciclos de reloj pondría el código de los hilos 0-3 en la tubería.

Puede pensar que el resto de estos procesadores funcionan de manera similar, en mayor o menor grado. En lugar de distribuir ranuras por igual, puede que solo ocupe las ranuras que están vacías debido a riesgos de control o de datos en el procesador.

Por ejemplo, cuando se toma una bifurcación, las instrucciones en la tubería pueden necesitar ser enjuagadas. En lugar de enjuagar por completo todo, algunas de las ranuras se pueden usar para otros hilos. La idea es mejorar el rendimiento al no desperdiciar los ciclos de la CPU.

Así es como varios hilos funcionan en el hardware.

Cuestiones relacionadas