Pregunta

He estado viendo en la literatura algunas de las CPU más nuevas, como la Intel Xeon "Nehalem-EX" por tener 8 núcleos y 16 hilos.¿De qué están hablando aquí?Vi una mención de esto en referencia, por lo que SPARCS también, ¿seguramente este no es el tipo de subprocesos lógicos generados por el código?¿Se ha cambiado el nombre de este hyperthreading?

¿Fue útil?

Solución

Sí, Con sede en Nehalem procesadores implementan Hyper-threading.

El nuevo Nehalem-EX al que usted 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 aplicaciones 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.

del sol UltraSPARC T2 (y el T1) también permiten subprocesos múltiples simultáneos (cuya implementación de Intel se llama Hyper-Threading, una marca registrada de Intel) que permite que un solo núcleo aparezca como múltiples núcleos lógicos para ejecutar múltiples subprocesos en un solo núcleo.

La idea aproximada detrás del subproceso múltiple 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.

Si bien es posible que las instalaciones físicas como ALU y FPU no aumenten, 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 del procesador disponibles.Es posible que el núcleo no se haya saturado al ejecutar un solo subproceso, pero ejecutar varios podría saturar todas las unidades a su máximo potencial.

Entonces, ¿qué significa para los programadores?

Significa que todavía necesitaremos escribir software de subprocesos múltiples: tener un programa que solo tenga un subproceso solo podrá utilizar un único núcleo lógico.Sólo si tenemos un código multiproceso bien escrito podremos aprovechar la enorme cantidad de núcleos lógicos que ofrecen estos procesadores.

Incluso con subprocesos múltiples simultáneos, el código se ejecuta en un subproceso por núcleo lógico.

Otros consejos

Un extremo de un procesador multi-roscado es el procesador de barril. Esta es una forma de SMT donde el procesador divide ranuras entre los múltiples hilos igualmente de una manera round robin. Para ello, sólo necesita copias de los diferentes registros mientras se utiliza el mismo conjunto de unidades de ejecución. Así, en 4 ciclos de reloj que pondría código de Temas 0-3 en la tubería.

Se puede pensar en el resto de estos procesadores que trabajan de una manera similar, en un grado mayor o menor medida. En lugar de distribuir las ranuras alrededor de la misma, sólo puede utilizar hasta las ranuras que están vacíos ya sea debido a los riesgos de control o de datos en el procesador.

Por ejemplo, cuando se toma una rama, las instrucciones en la tubería pueden necesitar ser vaciadas. En lugar de lavado completo todo, algunas de las ranuras puede ser utilizado para otros hilos. La idea es mejorar el rendimiento al no desperdiciar ciclos de CPU.

Así es como funciona hilos múltiples en el hardware.

No es hyper-threading renombrado - se Hyper-Threading (está escrito en esta página web que diste enlace a)

.

Simplemente, dice procesador OS que tiene 16 núcleos, por lo que puede equilibrar las tareas en el número de núcleos duplicado. La tecnología Hyper-threading dar algún beneficio lástima pues en algunos casos dos instrucciones diferentes de dos programas diferentes / hilos se pueden ejecutar en un núcleo de forma simultánea. Sin embargo, para asegurarse de que no va a dar 200% de velocidad hacia arriba. Yo no trabajo en tales procesador, pero creo que se puede obtener alrededor de 10% -20% Tiempo de CPU adicional.

Depende de modelo de hilos de cada sistema operativo para mapear las discusiones a nivel de sistema operativo a las discusiones a nivel de hardware, tales 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 una retirado del hardware de nivel de sistema operativo, a menos por supuesto que está hablando el código del sistema operativo que realiza la asignación.

Hyperthreading (marca registrada de INTEL por cierto) permite que cada hilo para ejecutar realmente simultáneamente. Así que en este caso podría ejecutar aplicaciones 8x2 hilos 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

Compare esto con una sola CPU, los sistemas individuales de núcleo donde cada hilo debe ser programada y como máximo sólo un hilo estará activo -. Que uno corriendo tarea depende de la CPU y los otros esperando en una transferencia de E / S

Originalmente de roscado se utilizó ya sea para modelar un conjunto de actividades concurrentes (no modelar en realidad no se ejecuta en paralelo) o para producir la aparición de un sistema que era sensible incluso mientras se hace I / O. Por ejemplo, sin roscar, su procesador de textos aparecería para detener al guardar un documento.

Durante muchos años he resistido a la idea de tener múltiples hilos en aplicaciones de escritorio - que complica el código y potencialmente reduce el rendimiento - pensar en todas aquellas operaciones que requieren la exclusión mutua núcleo del sistema operativo para involucrarse. Con el advenimiento de la ejecución en paralelo de hilos en realidad, mis objeciones se reducen, pero sigo creyendo que múltiples procesos en lugar de múltiples hilos en un solo proceso es un mejor enfoque.

Chris

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top