Diferencia entre núcleo y procesador

197

¿Cuál es la diferencia entre un núcleo y un procesador?

Ya lo he buscado en Google, pero solo tengo una definición de múltiples núcleos y multiprocesadores, pero no coincide con lo que estoy buscando.

Saad Achemlal
fuente

Respuestas:

197

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 admite subprocesos de hardware como hyperthreading en CPU de Intel), mantener el estado correcto del programa, los registros y el orden correcto de ejecución, y realizando las operaciones a través de ALU . Para 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 el sistema operativo programa. Tenga en cuenta que el sistema operativo puede tener muchos subprocesos para ejecutar, pero la CPU solo puede ejecutar X tales tareas 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 al adelantarse a las tareas que se ejecutan actualmente o por cualquier otro medio.

Además del uno o varios núcleos, la CPU incluirá cierta interconexión que conecta los núcleos con el mundo exterior y, por lo general, también una gran caché compartida de "último nivel". Hay muchos otros elementos clave 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 "conjunto de chips" complementario, pero el diseño más moderno los ha integrado en la CPU.

Además, la CPU puede tener una GPU integrada, y prácticamente todo lo demás que el diseñador quería mantener cerca por motivos 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 uso 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 "centrales".

Leeor
fuente
@Leeor, entonces, para una máquina de 4 cpu y 2 núcleos, si ejecuto un bucle ocupado, ¿no debería activar solo 1 cpu y 1 core (es decir, 50%) de solo una de las cpu? Mi observación muestra que involucra toda la CPU al 100% ... algo falta en mi entendimiento ...
Nrj
2
@Nrj, si ejecuta una aplicación de subproceso único, se asignará a un solo núcleo y activará solo un subproceso HW en él. Ese subproceso podrá utilizar el 100% de ese núcleo ya que no hay otro subproceso que se ejecute junto con él. Si activa otra aplicación, generalmente se asignará a otro núcleo, y así sucesivamente hasta que sature el número de núcleos. Más allá de eso, cualquier subproceso adicional se programará en los mismos núcleos nuevamente utilizando SMT. En ese punto, la utilización del núcleo se distribuirá entre los 2 hilos (y si se comportan simétricamente, cada uno probablemente alcanzaría ~ 50%)
Leeor
@Leeor aparentemente esta era mi expectativa, pero no es lo que encontré. Vi que las cuatro CPU (en el administrador de tareas) saltan para mostrar un uso del 100%. El código era simple: for (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj
@Leeor Creo que hice la prueba de forma incorrecta. parece que mi espacio de trabajo en línea tiene CPU virtuales (4) pero un solo procesador. Es por eso que todos se ponen ocupados. Cuando realicé la prueba en una máquina física de 2 CPU (doble núcleo), puedo ver que la utilización de la CPU es de aproximadamente el 25%, lo que está en línea con las expectativas.
Nrj
Tenga en cuenta que esta terminología varía, dependiendo de a quién le pregunte. Por ejemplo, en mi sistema Debian, al inspeccionar /proc/cpuinfo, veo dieciséis processor:líneas, aunque dice model: AMD Ryzen 7 2700X Eight-Core Processor. Entonces, al menos en este caso, cada uno de los 8 "núcleos" tiene dos "procesadores", lo que está en desacuerdo con algunas otras respuestas aquí.
jwd
130

Una imagen puede decir más de mil palabras:

Una imagen puede decir más que mil palabras.

* Figura que describe la complejidad de un moderno sistema multiprocesador y multiprocesador.

Fuente:

https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization

JohnTortugo
fuente
114
Sin embargo, probablemente diga más de mil palabras para criaturas pequeñas como las hormigas.
Cielo
12
No tengo nada en contra del uso de imágenes, pero al menos podrías dar una explicación más detallada, no solo copiar / pegar una imagen.
Patricio Sard
1
@ Sky Tenga cuidado con las hormigas ... #hunter_x_hunter: 3
Saad Achemlal
Para aquellos que dijeron que es demasiado pequeño para leer, intente hacer clic derecho sobre él, Open images in new tabluego acercar usando cltr++
Ng Sek Long
28

Aclaremos primero qué es una CPU y qué es un núcleo, una CPU de unidad de procesamiento central, puede tener múltiples unidades de núcleo, esos núcleos son un procesador por sí mismos, capaces de ejecutar un programa pero están autocontenidos en el mismo chip.

En el pasado, una CPU se distribuía entre bastantes chips, pero a medida que avanzaba la Ley de Moore lograron tener una CPU completa dentro de un chip (dado), desde los años 90 el fabricante comenzó a colocar más núcleos en el mismo dado, así que ese es el concepto de multi-core.

En estos días es posible tener cientos de núcleos en la misma CPU (chip o matriz) GPU, Intel Xeon. Otra técnica desarrollada en los años 90 fue el subprocesamiento múltiple simultáneo, básicamente descubrieron que era posible tener otro subproceso en la misma CPU de núcleo único, 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.

Germán Alfaro
fuente
Incluso " Intel E5-2697 v2 " solo tiene 12 núcleos ... ¿Por qué dice "cientos de núcleos en la misma CPU"? ¿Qué limita la cantidad de núcleos posibles en una sola CPU?
Pacerier
2
Son microprocesadores de investigación en el recuento de +100 núcleos y unos pocos en producción eche un vistazo a: tomshardware.com/forum/318101-28-which-maximum-cores-cores
Germán Alfaro
9

La CPU es una unidad central de procesamiento. Desde 2002 solo tenemos un procesador de un solo núcleo, es decir, solo realizaremos una sola tarea o un programa a la vez.

Para ejecutar múltiples programas a la vez, tenemos que usar el procesador múltiple para ejecutar múltiples procesos a la vez, por lo que requerimos otra placa base para eso y eso es muy costoso.

Entonces, Intel introdujo el concepto de hiperprocesamiento, es decir, convertirá la CPU individual en dos CPU virtuales, es decir, tenemos dos núcleos para nuestra tarea. Ahora la CPU es única, pero solo finge (enmascarada) que tiene una CPU dual y realiza múltiples tareas. Pero tener núcleos múltiples reales será mejor que eso, de modo que las personas se desarrollen haciendo procesadores de múltiples núcleos, es decir, procesadores múltiples en una sola caja, es decir, tomando una CPU múltiple en una sola CPU grande. Es decir, múltiples núcleos.

Himanshu Gupta
fuente
12
¿Qué pasó exactamente en 2002?
Peter Mortensen
1
Intel no inventó el concepto de subprocesamiento múltiple simultáneo. Wikipedia dice que Alpha EV8 fue la primera implementación comercial importante .
Peter Cordes
3

En los primeros días ... como antes de los 90 ... los procesadores no podían realizar múltiples tareas de manera eficiente ... porque un solo procesador podía manejar una sola tarea ... así que cuando solíamos decir que mi antivirus, microsoft word, vlc, etc. todos los softwares se ejecutan al mismo tiempo ... eso no es realmente cierto. Cuando dije que un procesador podía manejar un solo proceso a la vez ... lo dije en serio. En realidad, procesaría una sola tarea ... luego solía pausar esa tarea ... tomar otra tarea ... completarla si es corta o pausarla nuevamente y agregarla a la cola ... luego la siguiente. Pero esta 'pausa' que mencioné fue tan pequeña (aprox. 1ns) que no entendiste que la tarea se detuvo. P.ej. En vlc mientras escucho música, hay otras aplicaciones ejecutándose simultáneamente, pero como te dije ... un programa a la vez ...

Pero esto era sobre los viejos procesadores ...

Los procesadores de hoy en día, es decir, las PC de tercera generación tienen procesadores de múltiples núcleos. Ahora los 'núcleos' se pueden comparar con los procesadores de primera o segunda generación en sí ... integrados en un solo chip, un único procesador. Así que ahora entendemos qué son núcleos, es decir, son mini procesadores que se combinan para convertirse en un procesador. Y cada núcleo puede manejar un solo proceso a la vez o múltiples subprocesos según lo diseñado para el sistema operativo. Y siguen los mismos pasos que mencioné anteriormente sobre el procesador único.

P.ej. Un procesador i7 6gen tiene 8 núcleos ... es decir, 8 mini procesadores en 1 i7 ... es decir, su velocidad es 8 veces mayor que los procesadores antiguos. Y así es como se pueden realizar múltiples tareas.

Podría haber cientos de núcleos en un solo procesador, por ejemplo. Intel i128.

Espero haberlo explicado bien.

Hrishikesh Dabir
fuente
0

La imagen de Intel es útil, como lo muestra la mejor respuesta de Tortuga. Aquí hay un título para ello.

Procesador : un chip semiconductor, la CPU (unidad central de procesamiento) asentada en un zócalo, alrededor de los años 1950 y 2010. Con el tiempo, se han incluido más funciones en el chip de la CPU. Antes de los lanzamientos de los procesadores de un solo chip en la década de 1950, un procesador podría haberse extendido a varios chips. A mediados de la década de 2010, los chips de sistema en un chip hicieron un poco más incompleto equiparar un procesador a un chip, aunque eso es lo que generalmente se entiende por procesador, como en "esta computadora tiene un procesador i7" o "este sistema informático tiene cuatro procesadores ".

Núcleo : un bloque de una CPU, ejecutando una instrucción a la vez. (Verá que la gente dice una instrucción por ciclo de reloj, pero algunas CPU usan varios ciclos de reloj para algunas instrucciones).

Bennett Brown
fuente
1
Un núcleo x86 ejecuta lógicamente las instrucciones una a la vez, en orden de programa, pero en realidad las CPU modernas gastan muchos transistores para preservar la ilusión de hacerlo mientras en realidad son ejecuciones fuera de orden superescalar de 4 anchos. realworldtech.com/haswell-cpu . (O 5 o 6 de ancho, para Ryzen). Más de 3 instrucciones por reloj no es raro en la práctica, para algunos códigos. Pero muy por debajo de 1 también es común en otro código que bloquea los errores de caché y / o errores de ramificación.
Peter Cordes
Además, las arquitecturas VLIW como Itanium son explícitamente paralelas, y lógicamente y físicamente ejecutan múltiples instrucciones en paralelo. Por cierto, interesante punto histórico de que una CPU tomó más de un chip en los primeros días.
Peter Cordes