¿Qué son los núcleos virtuales y por qué aceleran el rendimiento?

El núcleo de una CPU consta de tres partes principales: la “ALU” (Unidad de lógica aritmética), que realiza todas las operaciones matemáticas, computacionales, lógicas y comparativas, la CU (Unidad de control), que decodifica las instrucciones de la CPU y es responsable de “informar las otras partes qué hacer “- (es decir, acceder a ubicaciones de registro y memoria, obtener instrucciones y datos, generar datos, etc.), y el” caché “, un parche (o memorias) (muy rápido) de memoria que almacena las ubicaciones de memoria de datos de acceso frecuente (o los datos en sí).

Al unir una segunda Unidad de Control (o simplemente una segunda “tubería” a la CU, dependiendo del procesador) a un núcleo que todavía contiene una sección de caché normal y ALU, el “núcleo” de esa CPU puede buscar y decodificar una instrucción en una CU mientras ejecuta una instrucción diferente en el otro. Una vez que la primera CU ha completado con éxito su tarea, puede buscar y decodificar la siguiente instrucción mientras la segunda CU ejecuta su instrucción (anterior “analizada” y “configurada”). Debido a que solo la instrucción activa está accediendo a la ALU y al caché al mismo tiempo, estos circuitos no se “duplican”, sino que todas las operaciones de configuración (como buscar en el caché un dato o dirección “golpean”, decodifican la página y la dirección de la siguiente ubicación de memoria a la que se accederá, etc.) se realizan simultáneamente con una ejecución de instrucción real, lo que lleva a un tiempo de respuesta significativamente más rápido.

Si bien no duplica el trabajo de un núcleo (debido a la espera de que el caché y la ALU estén disponibles), este diseño permite un aumento de aproximadamente el 50% en el rendimiento (frente a un núcleo único “fijo” sin HyperThreading) , por lo tanto, se llama un “núcleo virtual”, aunque en realidad es solo un poco más de lógica y circuitos de tubería conectados a un núcleo de CPU normal.

Bueno, tienes núcleos físicos y núcleos virtuales.
En pocas palabras, un núcleo físico es lo que hace la mayor parte de la carga de trabajo. Puede compartir la carga entre uno o varios núcleos si es necesario.
Los núcleos virtuales encuentran “espacios” vacíos dentro de cada subproceso y se aprieta en una tarea de espera para mantenerse en movimiento.

En otras palabras, piense en sus núcleos e hilos como la interestatal donde todos intentan llegar de la A a la Z. Y por el bien de la discusión, supongamos que todos conducen respectivamente para que el flujo de tráfico sea bastante consistente. Pero entre esos dos puntos hay una serie de rampas de entrada que permiten que más autos llenen la carretera, de modo que una vez que llegue a Z, ahora tenga una carretera completamente saturada.
El punto A es donde se procesan sus núcleos físicos. Los puntos intermedios son donde los núcleos virtuales pueden incluir procesos donde sea posible. El punto Z es el resultado final.

Piensa en esto, de esta manera:

Las operaciones de coma flotante son bolsas de chips.

Los núcleos físicos son bocas.

Los núcleos virtuales, también conocidos como hilos, son manos.

Aunque esta analogía no es perfecta, sigue siendo muy útil, la cantidad de manos o hilos aumenta la eficiencia de los núcleos, lo que les permite poner en cola las tareas, sin embargo, más bocas obviamente serán más rápidas.

Un núcleo de CPU real cambia las tareas rápidamente creando 2 núcleos virtuales, permiten la ejecución simultánea de más hilos de los que normalmente tiene su CPU.