¿Por qué mi CPU de doble núcleo es reconocida como una de cuatro núcleos?

52

Mi procesador es un Intel Core i3-380m . Como puede ver, son 2 núcleos y 4 hilos.

Aunque, tanto Ubuntu 11.04 como Windows 7 parecen pensar que es una CPU de cuatro núcleos:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¿Por qué es esto? ¿Es porque hay 2 hilos por núcleo, dividiendo la CPU en 4 unidades de procesamiento?

seriousdev
fuente

Respuestas:

43

Como se mencionó, tiene un sistema de doble núcleo, con 2 hilos por núcleo.

Intel lo comercializa como hyperthreading y varios fabricantes lo han hecho de varias maneras a lo largo de los años.

Para explicarlo en su forma más simple, cada núcleo de CPU consta de un "núcleo" y varias arquitecturas alrededor de ese núcleo que mantienen la información de estado y proceso para cada subproceso. Un núcleo con un solo subproceso tiene la arquitectura para mantener 1 subproceso de información de estado almacenado a la vez, un núcleo con subproceso hipertónico mantiene dos conjuntos distintos de información de estado, lo que permite que dos procesos separados se ejecuten a la vez siempre que requieran diferentes partes del núcleo ( lo que es razonable que suceda ya que el núcleo consta de múltiples unidades de múltiples tipos diferentes de unidades de procesamiento).

Para simplificar cómo se ve la CPU en el sistema, cada hyperthread se ve como una CPU separada, por lo que un procesador de doble núcleo y 2 hilos por núcleo aparece como un procesador de cuatro núcleos.

También es posible que el sistema operativo use Core-parking (una característica en los procesadores Intel más nuevos) que permite que el sistema operativo suspenda la mitad de un núcleo hiperprocesado para que cuando no se necesite la capacidad de procesamiento adicional de hyperthreading, el rendimiento de un solo hilo se incrementa ya que el núcleo ya no comparte su caché en 2 subprocesos y ahora puede dedicar completamente el caché en el núcleo a un solo subproceso.

Mokubai
fuente
Gracias por la explicación. Entonces, ¿podemos decir aquí que un hilo es para un núcleo lo que un núcleo es para un procesador?
seriousdev
2
En cierto modo, sí. El sistema operativo ve el procesador, sabe cuántos núcleos hay en ese procesador y, a su vez, cuántos subprocesos admite cada núcleo, de ahí que el uso de CPU que está viendo ahora sea "por subproceso" en lugar de "por núcleo". No es tan simple (ya que cada subproceso en realidad parece un sistema operativo no compatible con hyperthreading como un núcleo de CPU completo), pero esa es la idea general.
Mokubai
El enlace de estacionamiento central de @Mokubai no funciona.
Biswapriyo 01 de
49

La razón es hyperthreading , que su procesador admite. Hyperthreading no es el equivalente de un procesador adicional, pero realmente puede aumentar el rendimiento en aplicaciones multiproceso. Para cada núcleo de procesador que está físicamente presente, el sistema operativo se dirige a dos procesadores virtuales y comparte la carga de trabajo entre ellos cuando es posible.

Keltari
fuente
77
¿Es esto conocido como núcleos físicos vs lógicos?
xdumaine
11
Sí, un núcleo físico es ... bueno ... físico. Puedes tocarlo. Los núcleos hiperhilos no son reales, por lo tanto lógicos También puede dividir núcleos físicos en núcleos lógicos a través de la virtualización.
Keltari
3
@Keltari en realidad, tiene una parte física ... Hyperthreading es un componente de hardware en un núcleo de CPU (y solo se puede deshabilitar a nivel de hardware). Consulte este documento técnico de Intel para obtener más detalles. Básicamente, comparte los recursos de un núcleo entre dos unidades de ejecución física. Técnicamente, ambos núcleos vistos por el sistema operativo en un núcleo hiperprocesado son "lógicos", no hay uno físico y lógico.
Avance
1
Es cierto, hyperthreading es una parte física del procesador, pero no un núcleo físico.
Keltari
1
La mejor manera de pensar en HT es un "núcleo y medio" que comparte muchos más recursos con su hermano que los núcleos separados. Sin embargo, es capaz de ejecutar un subproceso "por sí solo" y el sistema operativo lo trata como una unidad de ejecución de subprocesos (que usted asoció con un núcleo).
crasic
12

Las cosas son mucho más complejas de lo que eran en los días de una instrucción de CPU por ciclo de reloj.

Ahora hay una canalización para cada instrucción que consta de una serie de pasos. He escuchado hasta 41, aunque eso fue hace un tiempo y no tengo idea de cómo son las tuberías actuales de la CPU. Sé que si la tubería es lo suficientemente larga, puede comenzar una nueva instrucción en la tubería antes de que termine la última instrucción, a veces en el mismo ciclo de reloj, de modo que su núcleo único esté haciendo efectivamente dos cosas a la vez.

Sin embargo, hay un truco aquí. No puede usar esto para acelerar la velocidad a la que su procesador mastica las instrucciones de un programa específico. Hay un problema de corrección: la siguiente instrucción puede depender del resultado aún no determinado de la instrucción anterior. Para aprovechar la larga tubería de manera segura , el chip presentará dos núcleos de procesador separados al planificador del sistema operativo y se enviarán instrucciones alternativas a cada núcleo para que dos instrucciones al mismo "núcleo" nunca estén en la tubería al mismo tiempo. De esta manera, podemos estar seguros de que las instrucciones ejecutadas simultáneamente no interferirán entre sí. Esto se llama hyperthreading .

Vale la pena señalar aquí que, si bien el hyperthreading puede aumentar significativamente la cantidad de trabajo que obtiene de su CPU, no es tan bueno como tener tantos núcleos físicos. Dependiendo de su carga de trabajo, puede significar una mejora mínima del 15% o una mejora del 40%. En algunas circunstancias, es posible que desee deshabilitar la función para que los núcleos restantes tengan acceso exclusivo exclusivo a la caché L1 / L2 para ese núcleo (esto a veces se hace con servidores de bases de datos dedicados).

Cuando su chip anuncia que tiene 2 núcleos con 4 hilos, eso significa que es un procesador de doble núcleo que admite hyperthreading.

Joel Coehoorn
fuente
2

Eche un vistazo a esta página de inteligencia : tiene muchas animaciones que muestran cómo hyperthreading acelera sus tareas.

La Utilization of Processor Resourceses la mejor animación, mírala y haz clic en el botón "avanzar".

woliveirajr
fuente
1

¿Por qué es esto? ¿Es porque hay 2 hilos por núcleo, dividiendo la CPU en 4 unidades de procesamiento?

En pocas palabras, la respuesta es sí. Cada núcleo de su CPU puede admitir dos subprocesos independientes, por lo que 4 en total. Pero eso no significa que tenga el mismo rendimiento que una CPU de un solo núcleo de cuatro núcleos. Prácticamente el rendimiento de una CPU de doble núcleo y doble hilo es menor que el de una CPU de un solo núcleo y cuatro núcleos. Como el AMD Phenom X4.

aminfar
fuente
¿Sabes por qué?
seriousdev
1
La razón es que en un núcleo de doble subproceso los recursos de hardware (como el búfer de reordenamiento) se comparten entre dos subprocesos, mientras que en una CPU de un solo subproceso todos los recursos están dedicados a un núcleo. Vale la pena mencionar que tener un núcleo roscado mulch aumenta la utilización y el rendimiento del hardware, pero es malo para la latencia. Hay muchas compensaciones involucradas. Entonces la palabra "rendimiento" es realmente vaga aquí. Para la gente común significa la latencia de un solo hilo.
aminfar