La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuál es la diferencia entre socket, núcleo y procesador?

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

Cuando utilizamos comandos como nproc o lscpu para obtener la arquitectura y el rendimiento de la computadora a nivel de CPU, a menudo nos encontramos con que no podemos interpretar correctamente los resultados de estos comandos porque no conocemos el significado de algunos términos, como CPU (físico). CPU (CPU lógica (CPU virtual) CPU, núcleos, subprocesos y granularidad. Si añadimos el concepto de hyper-threading (que no debe confundirse con multi-threading), no tenemos idea de cuántos núcleos tiene nuestra máquina. Por ejemplo, Obviamente compramos una máquina con procesador de 4 núcleos, pero los resultados de usar el comando htop muestran que tenemos 8 CPU en total, es un desastre. Para resolver estos problemas, usaré un conjunto simple de gráficos. Espero que puedas comprender fácilmente estos conceptos y nunca más te confundas.

Volvamos a la era de los procesadores Pentium, cuando conceptos como multi-. El núcleo, la CPU virtual y la CPU lógica no existían. La mayoría de las computadoras solo tienen un chip de gran capacidad instalado en la placa base, al que llamamos microprocesador, procesador o CPU simple. Solo unas pocas computadoras empresariales o servidores de gran tamaño tienen la misma placa base. porque requieren un mayor rendimiento de procesamiento. Hay dos o más chips de CPU en la placa base: a este tipo de máquina llamamos sistema multiprocesador. Estos chips se comunican con otros componentes de la placa base a través de conectores o zócalos. CPU en la placa base es muy simple: esta computadora tiene tantas CPU como conectores o zócalos hay. Para obtener un rendimiento de procesamiento más potente, una es instalar más CPU en la placa base y la otra es aumentar la potencia de procesamiento de cada una. CPU p>

Pero luego Intel se dio cuenta de que la comunicación entre diferentes procesadores en máquinas multiprocesador era muy ineficiente porque dicha comunicación tenía que pasar a través del bus del sistema, lo que a menudo era muy lento y a menudo provocaba cuellos de botella en el rendimiento que no podían solucionarse. Se utiliza por completo la potencia informática proporcionada por cada CPU.

Para resolver los problemas anteriores, surgió la tecnología Hyper-Threading. El principio de Hyper-Threading es que habrá varias copias de algunas partes internas. componentes, como registros, en el mismo chip de CPU o un caché de primer nivel, de modo que la misma CPU se pueda usar para ejecutar múltiples subprocesos o procesos. La comunicación entre ellos se realiza dentro de la CPU y no habrá rendimiento. cuello de botella causado por la comunicación a través del bus del sistema. Si un proceso espera y el proceso se interrumpe y bloquea, entonces otro proceso puede continuar usando esta CPU para los cálculos (Nota: de hecho, el hyperthreading realmente no puede lograr el paralelismo)

De hecho, este método puede acelerar múltiples procesos de cálculo y, al proporcionar un rendimiento general más potente que los procesadores tradicionales, el sistema operativo en este momento está engañado hasta cierto punto, porque Hyper-Threading en realidad solo proporciona dos CPU virtuales o lógicas (LCPU). , permitiendo que el sistema operativo ejecute dos procesos "simultáneamente" (nota: tenga en cuenta que las comillas también se agregan. Cabe señalar que los procesadores que utilizan tecnología Hyper-Threading no pueden proporcionar el doble de potencia informática que los procesadores tradicionales). lograr una verdadera computación paralela (nota: esto también se agrega al mismo tiempo. Motivo de las comillas. )

Entonces, desde la perspectiva de Linux u otros sistemas operativos, un procesador de un solo núcleo muestra la capacidad de tener dos procesadores. Es solo que estas dos CPU lógicas se ejecutan dentro de la misma CPU física.

La siguiente figura ilustra el principio de implementación del hyper-threading:

Nota: Para entender esta figura, una CPU física tiene dos conjuntos de registros, que pertenecen a una CPU lógica, pero sólo un conjunto de ALU (Unidad Lógica Aritmética). Si cada CPU lógica ejecuta un proceso, entonces la comunicación entre los dos procesos se realiza completamente dentro de la CPU y no pasa por el bus del sistema. Sin embargo, también podemos ver en la única ALU que en realidad es imposible ejecutar dos procesos en la misma. mismo tiempo.

Como se mencionó anteriormente, aunque la tecnología Hyper-Threading proporciona un mayor rendimiento de procesamiento, no puede actuar como dos procesadores físicos independientes. Por lo tanto, una mejora adicional sería hacer que todos los componentes del procesador sean más pequeños para que puedan existir múltiples procesadores simultáneamente en el mismo chip.

Cada procesador en el mismo chip se llama núcleo. No es necesario que varios núcleos en el mismo chip se comuniquen a través del bus lento del sistema porque hay un bus interno dentro del chip.

Nota: A menudo nos referimos a varios núcleos: el núcleo representa una CPU independiente, el zócalo representa un chip en la placa base y la arquitectura de múltiples núcleos significa colocar múltiples procesadores en un chip, como se mencionó anteriormente, así que si decimos dos de 4 núcleos, es decir, hay dos ranuras para chips en la placa base y cada chip tiene cuatro CPU, entonces tenemos ocho CPU físicas. Si la tecnología Hyper-Threading está disponible,

La siguiente imagen muestra una CPU de cuatro núcleos que utiliza la tecnología Hyper-Threading. Podemos ver que los cuatro núcleos existen en el mismo chip de CPU y se comunican a través de una interfaz de bus interna.

A diferencia de Hyper-Threading, ahora duplicamos la potencia de procesamiento. Y en términos de rendimiento, un procesador de cuatro núcleos es mejor que cuatro procesadores de un solo núcleo (es decir, las CPU tradicionales de un solo núcleo).

A nivel de sistema operativo, un procesador físico de cuatro núcleos será tratado como cuatro procesadores independientes. Si proporciona Hyper-Threading, puede haber 4 procesadores lógicos (LCPU) más, por lo que si lo miramos a través de la línea de comando, mostrará 8 CPU, pero como señalamos antes, 8 CPU con Hyper-Threading son definitivamente no es tan bueno como uno sin procesador físico de 8 núcleos Hyper-threaded.

En ocasiones nos encontraremos con que el procesador tiene 4 hilos por núcleo, 2 hilos y similares. En pocas palabras, esto se refiere a la cantidad de subprocesos o procesos que se pueden ejecutar "simultáneamente" en cada CPU central (tenga en cuenta que las comillas todavía se incluyen al mismo tiempo). Básicamente, una CPU lógica (LCPU) puede ejecutar un proceso o subproceso. Si cada núcleo puede ejecutar dos o más subprocesos, entonces se debe utilizar la tecnología Hyper-Threading; de lo contrario, cada núcleo solo puede ejecutar un subproceso o proceso.

La CPU virtual es básicamente equivalente a la CPU lógica, pero hay una diferencia: en el contexto de la virtualización informática, la CPU virtual está más restringida. La CPU virtual se asigna a los recursos de hardware del host subyacente de la virtualización. En términos generales, la CPU lógica del host se asigna a la CPU virtual dentro de la máquina virtual, por lo que es básicamente el mismo término.

Nota:

Finalmente, adjunto la información de la CPU de uno de mis entornos, que es un host que ejecuta una máquina virtual. Vemos que tiene 40 CPU lógicas. Cuando asigno 40 CPU a una máquina virtual en la plataforma de administración de virtualización, informo un error y 39 se crearon con éxito, lo que hasta cierto punto prueba la afirmación anterior sobre las CPU virtuales:

Traducido de:/ es/diferencias-entre-CPU-física vs. CPU-lógica-vs-núcleo-vs.