He estado viendo en la literatura que algunas de las CPU más nuevas como la Intel Xeon "Nehalem-EX" tienen 8 núcleos y 16 hilos. ¿De qué están hablando aquí? Vi una mención de esto en referencia así que SPARCS también, seguramente este no es el tipo de hilos lógicos generados por el código. ¿Es este hyperthreading renombrado?¿Qué es un subproceso de CPU y cómo se relaciona con los subprocesos lógicos en el código?
Respuesta
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.
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
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.
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.
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.
- 1. ¿Qué es hiedra? y cómo se relaciona con la hormiga?
- 2. ¿Cómo determinar en qué CPU se ejecuta un subproceso?
- 3. ¿Qué es Cordova y cómo se relaciona con PhoneGap?
- 4. ¿Qué es SSL y cómo se relaciona con HTTPS?
- 5. ¿Cuál es el "costo" aproximado de un subproceso en ciclos de CPU y memoria?
- 6. Buscar uso de CPU para un subproceso en Linux
- 7. ¿Cómo se relaciona con un control System.Windows.Forms.Treeview?
- 8. Qué es un subproceso de python
- 9. ¿Se relaciona con un método en WPF?
- 10. ¿Qué es el "reino" en la autenticación IIS y cómo se relaciona con los parámetros del certificado SSL?
- 11. ¿cómo se relaciona el código de operación de PHP con el código binario realmente ejecutado?
- 12. El subproceso de Python parece ejecutar subprocesos
- 13. Con ThreadPoolExecutor, ¿cómo obtener el nombre del subproceso que se ejecuta en el grupo de subprocesos?
- 14. ¿Qué es "sal" cuando se relaciona con MYSQL sha1?
- 15. Operadores lógicos y lógicos y controles nulos
- 16. ¿Qué es un subproceso process_reaper en Java?
- 17. ¿Cómo relaciona ggplot2 grobs con los datos?
- 18. ¿Cómo se relaciona el quicksort con el caché?
- 19. ¿Cómo se relaciona Jira con git?
- 20. ¿Con qué frecuencia un subproceso administrado cambia los subprocesos del sistema operativo?
- 21. Los subprocesos hijo salen cuando finaliza el subproceso principal
- 22. Perfil Python Uso de CPU por subproceso
- 23. subprocesos lógicos actuales aumentando/la pila de subprocesos se está filtrando
- 24. ¿Cómo saber si un programa se bloqueó con un subproceso?
- 25. ¿Cómo se relaciona Capistrano con Rake?
- 26. ¿Disminuye el uso de CPU/memoria de un subproceso en Java?
- 27. uso de CPU de subproceso múltiple en C#
- 28. ¿Cuál es la diferencia entre usar el grupo de subprocesos y un subproceso normal?
- 29. ¿Subproceso de mensaje de subproceso para un subproceso con una ventana oculta?
- 30. ¿Es posible que un programa de subproceso único se ejecute simultáneamente en más de un núcleo de CPU?
¿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
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. –
Obviamente, no significan eso. Citó la pieza usted mismo: 16 hilos por ** procesador **. – MSalters