Desde mediados de la década de 1990, las CPU de escritorio ofrecen múltiples núcleos de CPU en un solo paquete. Este es un procesador multinúcleo. Mientras que los primeros diseños estaban limitados a dos o cuatro núcleos de CPU, las CPU modernas ofrecen hasta 64 núcleos físicos en una sola CPU. Los recuentos de núcleos tan altos no son estándar para las CPU de escritorio y generalmente se reservan para estaciones de trabajo o servidores de gama alta. Los recuentos típicos de núcleos en las CPU de escritorio modernas están entre 4 y 16. Pero, ¿qué tienen las CPU multinúcleo que las hacen dominantes en las computadoras modernas?
Núcleo simple
Históricamente, una CPU de un solo núcleo se limitaba a realizar una sola tarea a la vez. Esto viene con una amplia gama de problemas. Por ejemplo, en una computadora moderna, hay una gran cantidad de procesos en segundo plano ejecutándose. Si una CPU solo puede procesar una cosa a la vez, significa que estos procesos en segundo plano deben restarle tiempo de procesamiento al proceso en primer plano. Además, las fallas de caché significan que los datos deben recuperarse de una memoria RAM comparativamente lenta. Durante el tiempo en que se obtienen los datos de la RAM, el procesador simplemente permanece inactivo, ya que no puede hacer nada hasta que obtenga los datos. Esto detiene el proceso en ejecución, así como cualquier otro proceso que esté esperando a que se complete.
Si bien los procesadores modernos de un solo núcleo no son realmente una cosa gracias al aumento de las CPU multinúcleo económicas, podrían usar otros trucos modernos para operar más rápido. Una tubería permitiría que cada parte diferente del manejo de una instrucción se use simultáneamente, proporcionando un aumento significativo del rendimiento en comparación con el uso de una sola etapa de la canalización por reloj ciclo. Una tubería amplia vería que se pueden manejar múltiples instrucciones en cada etapa de la tubería por ciclo de reloj. El procesamiento fuera de servicio permitiría programar las instrucciones de una manera más eficiente en el tiempo. Un predictor de bifurcación podría predecir el resultado de una instrucción de bifurcación y ejecutar de manera preventiva la respuesta supuesta.
Todos estos factores funcionarían bien y proporcionarían cierto rendimiento. Sin embargo, agregar uno o más núcleos permite todo eso, y de un solo golpe permite el procesamiento del doble de datos a la vez.
multinúcleo
Agregar un segundo núcleo parece que debería duplicar el rendimiento bruto. Las cosas son, desafortunadamente, más complicadas que eso. La lógica del programa es a menudo de un solo subproceso, lo que significa que solo hay una cosa que un programa intenta hacer en un momento dado. Sin embargo, lo que puede suceder es que otros procesos puedan usar el otro núcleo al mismo tiempo. Si bien no hay un aumento de rendimiento inherente a la mayoría de los programas individuales, la provisión de un extra recurso de procesamiento, reduce efectivamente la competencia por un recurso limitado, que proporciona un aumento de rendimiento. Este aumento de rendimiento, simplemente por reducir la competencia por el tiempo de CPU, es más notable cuando se salta de un solo a una CPU de doble núcleo, hay rendimientos decrecientes al aumentar aún más el número de núcleos, aunque generalmente es más mejor.
Para aprovechar adecuadamente los sistemas multinúcleo y realmente ver un aumento sólido en el rendimiento, los programas deben programarse para usar múltiples subprocesos de procesamiento. La lógica de subprocesos múltiples es notoriamente difícil de hacer de manera confiable, ya que a menudo es difícil de aprender y hay muchas trampas potenciales. Un escollo de ejemplo se conoce como condición de carrera. En una condición de carrera, un proceso asume que otro proceso que inicia se ejecutará sin problemas, luego intenta hacer algo que se basa en que ese otro proceso se haya ejecutado sin problemas. Por ejemplo, imagine que un proceso inicia otro proceso para cerrar un documento y abrir otro. Si el proceso original no verifica correctamente si el segundo proceso se ha completado, esto puede generar resultados inesperados. Si hubo un problema al cerrar el primer documento, por ejemplo, aún podría estar abierto cuando el proceso original solo escribe más datos en él.
Problemas térmicos
Uno de los mayores problemas con los que terminan luchando los procesadores multinúcleo es el calor. Si bien un núcleo de CPU no emite tanto calor, dos emiten más. En las CPU de alto número de núcleos, esta concentración de calor puede resultar en un reloj de impulso más bajo, ya que la CPU gestiona su temperatura. Un reloj de impulso más bajo provocará un rendimiento más bajo en aplicaciones de subproceso único. Esto a menudo se puede ver en los puntos de referencia de rendimiento de los juegos. Los videojuegos a menudo dependen en gran medida de un solo hilo. Como tal, el rendimiento de un solo subproceso suele ser fundamental para los juegos. Las CPU de alto número de núcleos, como los modelos de 16 núcleos, a menudo provienen de contenedores de alto rendimiento. A pesar de esto, se puede encontrar regularmente que son superados por CPU "menores" con un recuento de núcleos más bajo en los puntos de referencia de un solo subproceso. Este problema es aún más evidente en las CPU con un número ultraalto de núcleos, como AMD Threadripper de 64 núcleos, donde la velocidad del reloj es notablemente inferior a la de las CPU de escritorio de gama alta.
Éxitos
Muchas aplicaciones pueden hacer un uso adecuado de múltiples núcleos de CPU. Por ejemplo, el procesamiento de CPU es una tarea relativamente fácil de paralelizar. Las mejoras de rendimiento se pueden ver hasta 64 núcleos y más, aunque actualmente ninguna CPU ofrece más de 64 núcleos. Muchas aplicaciones simplemente no pueden ser multiproceso ya que dependen de la lógica secuencial. Si bien estos no se acercan a la velocidad de un programa de subprocesos múltiples, el hecho de que los programas de subprocesos múltiples y otros programas de subproceso único pueden usar otros núcleos de CPU liberan tiempo del procesador, lo que permite una mejor actuación.
Opciones arquitectónicas
En los procesadores de escritorio, cada núcleo de CPU dentro de una CPU multinúcleo generalmente ha sido idéntico. Esta homogeneidad simplifica el trabajo de programación en los núcleos. Usar el mismo diseño repetitivo también ayuda a mantener bajos los costos de desarrollo. Sin embargo, los procesadores móviles llevan mucho tiempo utilizando arquitecturas centrales heterogéneas. En este diseño, hay dos o incluso tres niveles de núcleo de CPU. Cada nivel puede ejecutar los mismos procesos, sin embargo, algunos están diseñados para la eficiencia energética y otros están ajustados para el rendimiento. Esto ha demostrado ser una receta para el éxito de los dispositivos que funcionan con baterías, ya que muchas tareas pueden utilizar cuanto más lento sea. núcleos de bajo consumo, lo que aumenta la duración de la batería, mientras que los procesos de alta prioridad aún se pueden ejecutar a alta velocidad cuando sea necesario.
La arquitectura de CPU de escritorio también se está moviendo en la dirección de un diseño de núcleo heterogéneo. Alder Lake 12 de Intelel La línea de CPU Core de generación es la primera CPU de escritorio que hace esto. En este caso, el principal factor impulsor de los núcleos más pequeños no es necesariamente la eficiencia energética sino la eficiencia térmica, aunque esas son las dos caras de la misma moneda. Tener varios núcleos potentes proporciona un alto rendimiento, mientras que muchos núcleos eficientes pueden manejar tareas en segundo plano sin afectar demasiado a los núcleos principales.
Conclusión
Una CPU multinúcleo es una CPU que presenta múltiples núcleos de procesamiento en un solo paquete, a menudo, aunque no exclusivamente, en el mismo dado. Las CPU multinúcleo no ofrecen una gran mejora directa en el rendimiento de muchos programas; sin embargo, al aumentar la cantidad de núcleos, los programas de subproceso único no necesitan competir tanto por el tiempo de la CPU. Algunos programas pueden aprovechar al máximo los núcleos múltiples, haciendo uso directo de tantos como estén disponibles. Esto proporciona un gran aumento de rendimiento, aunque debido a las limitaciones térmicas y de energía, este aumento no es necesariamente una duplicación directa del rendimiento con una duplicación de núcleos.