Página principal » cómo » ¿Por qué todos los núcleos de la CPU tienen la misma velocidad en lugar de diferentes?

    ¿Por qué todos los núcleos de la CPU tienen la misma velocidad en lugar de diferentes?

    Si alguna vez ha realizado muchas comparaciones para comprar una nueva CPU, es posible que haya notado que todos los núcleos parecen tener la velocidad en lugar de una combinación de diferentes. ¿Porqué es eso? La publicación de preguntas y respuestas de SuperUser de hoy tiene la respuesta a la pregunta de un lector curioso.

    La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..

    La pregunta

    El lector superusuario Jamie quiere saber por qué los núcleos de la CPU tienen la misma velocidad en lugar de diferentes:

    En general, si está comprando una computadora nueva, determinaría qué procesador comprar basándose en la carga de trabajo esperada para la computadora. El rendimiento en los videojuegos tiende a estar determinado por la velocidad de un solo núcleo, mientras que las aplicaciones como la edición de videos están determinadas por la cantidad de núcleos. En términos de lo que está disponible en el mercado, todas las CPU parecen tener aproximadamente la misma velocidad y las diferencias principales son más hilos o más núcleos..

    Por ejemplo:

    • Intel Core i5-7600K, frecuencia base 3.80 GHz, 4 núcleos, 4 hilos
    • Intel Core i7-7700K, frecuencia base 4.20 GHz, 4 núcleos, 8 hilos
    • AMD Ryzen 5 1600X, frecuencia base 3.60 GHz, 6 núcleos, 12 hilos
    • AMD Ryzen 7 1800X, frecuencia base 3.60 GHz, 8 núcleos, 16 hilos

    ¿Por qué vemos este patrón de núcleos crecientes, pero todos los núcleos tienen la misma velocidad de reloj? ¿Por qué no hay variantes con diferentes velocidades de reloj? Por ejemplo, dos núcleos "grandes" y muchos núcleos pequeños.

    En lugar de, digamos, cuatro núcleos a 4.0 GHz (es decir, 4 × 4 GHz, máximo de 16 GHz), ¿qué tal una CPU con dos núcleos funcionando a 4.0 GHz y cuatro núcleos funcionando a 2.0 GHz (es decir, 2 × 4.0 GHz + 4 × 2.0)? GHz, 16 GHz máximo)? ¿La segunda opción sería igual de buena en cargas de trabajo de un solo hilo, pero potencialmente mejor en cargas de trabajo de varios hilos??

    Hago esto como una pregunta general y no específicamente con respecto a las CPU enumeradas anteriormente o sobre cualquier carga de trabajo específica. Solo tengo curiosidad por saber por qué el patrón es lo que es.

    ¿Por qué todos los núcleos de la CPU tienen la misma velocidad en lugar de diferentes??

    La respuesta

    El contribuidor de Superusuario bwDraco tiene la respuesta para nosotros:

    Esto se conoce como multiprocesamiento heterogéneo (HMP) y es ampliamente adoptado por los dispositivos móviles. En los dispositivos basados ​​en ARM que implementan big.LITTLE, el procesador contiene núcleos con diferentes perfiles de potencia y rendimiento, es decir, algunos núcleos se ejecutan rápido pero consumen mucha energía (arquitectura más rápida y / o relojes más altos) mientras que otros son eficientes energéticamente pero lentos ( Arquitectura más lenta y / o relojes inferiores). Esto es útil porque el uso de la energía tiende a aumentar desproporcionadamente a medida que aumenta el rendimiento una vez que supera un cierto punto. La idea aquí es obtener el rendimiento cuando lo necesite y la duración de la batería cuando no lo necesita..

    En las plataformas de escritorio, el consumo de energía es un problema mucho menor, por lo que no es realmente necesario. La mayoría de las aplicaciones esperan que cada núcleo tenga características de rendimiento similares, y los procesos de programación para sistemas HMP son mucho más complejos que la programación para los sistemas tradicionales de multiprocesamiento simétrico (SMP) (técnicamente, Windows 10 tiene soporte para HMP, pero está destinado principalmente para dispositivos móviles dispositivos que utilizan ARM big.LITTLE).

    Además, la mayoría de los procesadores de computadoras de escritorio y portátiles actuales no están limitados térmica o eléctricamente hasta el punto en que algunos núcleos necesitan ejecutarse más rápido que otros, incluso para explosiones cortas. Básicamente, hemos chocado contra una pared por la rapidez con la que podemos hacer núcleos individuales, por lo que reemplazar algunos núcleos por otros más lentos no permitirá que los núcleos restantes funcionen más rápido.

    Si bien hay algunos procesadores de escritorio que tienen uno o dos núcleos capaces de ejecutarse más rápido que los otros, esta capacidad actualmente está limitada a ciertos procesadores Intel de muy alto nivel (conocido como Turbo Boost Max Technology 3.0) y solo implica una leve ganancia en Rendimiento para aquellos núcleos que pueden correr más rápido..

    Si bien es ciertamente posible diseñar un procesador x86 tradicional con núcleos grandes y rápidos y núcleos más pequeños y lentos para optimizar las cargas de trabajo con muchos subprocesos, esto agregaría una complejidad considerable al diseño del procesador y es poco probable que las aplicaciones lo respalden adecuadamente..

    Tome un procesador hipotético con dos núcleos rápidos de Kaby Lake (séptima generación) y ocho núcleos lentos de Goldmont (Atom). Tendría un total de 10 núcleos, y las cargas de trabajo con muchos subprocesos optimizados para este tipo de procesador pueden ver un aumento en el rendimiento y la eficiencia en comparación con un procesador de cuatro núcleos Kaby Lake normal. Sin embargo, los diferentes tipos de núcleos tienen niveles de rendimiento muy diferentes, y los núcleos lentos ni siquiera admiten algunas de las instrucciones que admiten los núcleos rápidos, como AVX (ARM evita este problema al requerir que los núcleos grande y LITTLE admitan las mismas instrucciones) ).

    Nuevamente, la mayoría de las aplicaciones de subprocesos múltiples basadas en Windows asumen que cada núcleo tiene el mismo o casi el mismo nivel de rendimiento y puede ejecutar las mismas instrucciones, por lo que este tipo de asimetría es probable que resulte en un rendimiento menos que ideal, tal vez incluso se bloquea si utiliza instrucciones no admitidas por los núcleos más lentos. Si bien Intel podría modificar los núcleos lentos para agregar soporte de instrucciones avanzadas para que todos los núcleos puedan ejecutar todas las instrucciones, esto no resolvería los problemas con el soporte de software para procesadores heterogéneos..

    Un enfoque diferente del diseño de la aplicación, más cercano a lo que probablemente esté pensando en su pregunta, usaría la GPU para acelerar partes altamente paralelas de las aplicaciones. Esto se puede hacer utilizando API como OpenCL y CUDA. En cuanto a una solución de un solo chip, AMD promueve el soporte de hardware para la aceleración de la GPU en sus APU, que combina una CPU tradicional y una GPU integrada de alto rendimiento en el mismo chip, como la Arquitectura de sistema heterogénea, aunque esto no ha visto una gran aceptación de la industria fuera de unas pocas aplicaciones especializadas.


    ¿Tienes algo que agregar a la explicación? Apaga el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.

    Crédito de la imagen: Mirko Waltermann (Flickr)