Deseamos mostrarte la mejor información que hemos encontrado en todo internet. Deseamos que te resulte útil y si puedes comentarnos alguna mejora hazlo con libertad.
Solución:
Un núcleo suele ser la unidad de cálculo básica de la CPU: puede ejecutar un solo contexto de programa (o varios si es compatible con subprocesos de hardware, como hiperprocesamiento en CPU Intel), manteniendo el estado correcto del programa, los registros y el orden de ejecución correcto, y realizando las operaciones a través de ALUs. Con fines de optimización, un núcleo también puede contener cachés en el núcleo con copias de fragmentos de memoria de uso frecuente.
Una CPU puede tener uno o más núcleos para realizar tareas en un momento dado. Estas tareas suelen ser procesos de software y subprocesos que programa el sistema operativo. Tenga en cuenta que el sistema operativo puede tener muchos subprocesos para ejecutar, pero la CPU solo puede ejecutar X tareas de este tipo en un momento dado, donde X = número de núcleos * número de subprocesos de hardware por núcleo. El resto tendría que esperar a que el sistema operativo los programe, ya sea adelantando las tareas que se están ejecutando actualmente o por cualquier otro medio.
Además de uno o varios núcleos, la CPU incluirá alguna interconexión que conecta los núcleos con el mundo exterior y, por lo general, también una gran memoria caché compartida de “último nivel”. Hay muchos otros key elementos necesarios para que una CPU funcione, pero sus ubicaciones exactas pueden diferir según el diseño. Necesitará un controlador de memoria para comunicarse con la memoria, controladores de E/S (pantalla, PCIe, USB, etc.). En el pasado, estos elementos estaban fuera de la CPU, en el “chipset” complementario, pero la mayoría de los diseños modernos los han integrado en la CPU.
Además, la CPU puede tener una GPU integrada y casi todo lo demás que el diseñador quería mantener cerca por consideraciones de rendimiento, potencia y fabricación. El diseño de la CPU tiende principalmente a lo que se llama sistema en chip (SoC).
Este es un diseño “clásico”, utilizado por la mayoría de los dispositivos modernos de propósito general (PC cliente, servidores y también tabletas y teléfonos inteligentes). Puede encontrar diseños más elaborados, generalmente en la academia, donde los cálculos no se realizan en unidades básicas “similares a un núcleo”.
Una imagen puede decir más que mil palabras:
* Figura que describe la complejidad de un sistema moderno multiprocesador y multinúcleo.
Fuente:
https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization
Aclaremos primero qué es una CPU y qué es un núcleo, una unidad central de procesamiento CPU, puede tener varias unidades de núcleo, esos núcleos son un procesador en sí mismo, capaz de ejecutar un programa pero está contenido en el mismo chip.
En el pasado una CPU se distribuía entre bastantes chips, pero a medida que avanzaba la Ley de Moore se logró tener una CPU completa dentro de un chip (die), desde los años 90 los fabricantes empezaron a meter más núcleos en la misma matriz, así que esa es la concepto de multinúcleo.
En estos días es posible tener cientos de núcleos en la misma CPU (chip o die) GPU, Intel Xeon. Otra técnica desarrollada en los años 90 fue el subprocesamiento múltiple simultáneo, básicamente encontraron que era posible tener otro subproceso en la misma CPU de un solo núcleo, ya que la mayoría de los recursos ya estaban duplicados como ALU, registros múltiples.
Entonces, básicamente, una CPU puede tener múltiples núcleos, cada uno de ellos capaz de ejecutar un hilo o más al mismo tiempo, podemos esperar tener más núcleos en el futuro, pero con más dificultades para poder programar de manera eficiente.
Si piensas que ha sido útil este post, sería de mucha ayuda si lo compartieras con el resto entusiastas de la programación de este modo nos ayudas a extender este contenido.