1 votos

¿Es posible fusionar los núcleos de la CPU?

En el pasado existía algo llamado hyperthreading en el que un solo núcleo de la CPU actuaba como dos núcleos.

Pero, ¿es posible fusionar dos núcleos de la CPU a uno solo para mejorar el rendimiento en programas que no utilizan varios núcleos decentemente? (desde juegos antiguos hasta el X Plane 11)

2 votos

Respuesta corta, no es posible, que yo sepa. También me gustaría que lo fuera, ya que sufro de problemas similares.

1 votos

No, a menos que tengas una realmente realmente un pequeño soldador, y una mano firme...

0 votos

@Tetsujin que alguien envíe esta idea a la Intel rápidamente y luego haga lemona combustible

4voto

Layne Bernardo Puntos 512

Respuesta corta: No.

Respuesta algo más larga: Los núcleos de un chip multinúcleo son básicamente procesadores físicos separados. Hyperthreading permite dividir un núcleo físico en, por ejemplo, dos hilos. La ventaja de esto es que el núcleo único puede intercambiar entre hilos, de modo que cuando un hilo está esperando (para E/S, por ejemplo) el otro hilo puede reanudarse. Dos hilos en un núcleo hiperhilo comparten recursos, lo que permite un cambio de contexto muy eficiente entre hilos.

Entonces, ¿por qué no puedes hacer lo contrario? Bueno, imagínate. Tienes dos núcleos físicos pero un solo proceso. Hay dos escenarios posibles:

  1. El código que se ejecuta puede ser ejecutado en paralelo. En este caso, sólo habría dos hilos, uno para cada núcleo. De esta manera, ambos hilos pueden ejecutarse al mismo tiempo.

  2. El código que se ejecuta no puede ejecutarse en paralelo. Esto es lo que usted pregunta. En este caso, tienes un solo hilo. Como el código no puede ejecutarse en paralelo, no puedes ejecutarlo en dos procesadores distintos al mismo tiempo. Para ejecutar un único hilo en ambos núcleos, simplemente estarías cambiando el hilo de un lado a otro entre los dos núcleos. Esto no produciría ninguna ganancia de rendimiento, y de hecho perjudicaría el rendimiento debido a los cambios de contexto innecesarios.

Esta es una desafortunada desventaja de los sistemas multinúcleo; sólo se ve una ganancia de rendimiento cuando la aplicación puede realizar múltiples tareas en paralelo y está escrita para hacerlo. Incluso entonces, la ganancia no es directamente proporcional al número de núcleos (véase Ley de Amdahl ).

1 votos

"sólo se ve una ganancia de rendimiento cuando la aplicación puede realizar varias tareas en paralelo y está escrita para ello" - O en la multitarea, es decir, hacer que dos programas de un solo hilo operen en núcleos separados, de modo que el rendimiento "mejore" porque ningún programa tiene que "esperar" a que otro avance.

2voto

Quanten Puntos 11

No, en realidad no.

Habría que paralelizar las instrucciones de cualquier manera y muchas de ellas dependen de los resultados de otras instrucciones [1]. Además, la unidad aritmética (el cerebro, que es quien realmente calcula) no suele ser el cuello de botella.

Para acceder a los datos y calcularlos hay que almacenarlos. Para hacer esto rápido, hay múltiples capas de memoria (registros, Cache (Nivel 1,2,3), RAM). Dos núcleos (en un procesador x86) normalmente sólo comparten la RAM (y quizás una caché L3). Así que no puedes simplemente dividir un programa, porque la otra mitad tendría los datos que necesita.

Cómo funciona Hyperthreading

Hyperthreading está aprovechando el tiempo, la unidad de computación está esperando algo más.

Se tarda mucho tiempo en cargar un valor desde, por ejemplo, la memoria RAM (AFAIK en torno a 500 ciclos de CPU). En este tiempo, cuando la unidad aritmética normalmente no haría nada, Hyperthreading ejecuta el segundo proceso en el mismo núcleo.

[1] Ese es también el punto en el que la ejecución especulativa intenta ayudar. Y tal vez crear algunos agujeros de seguridad (Spectre y Meltdown)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: