11Aug
Si alguna vez ha hecho muchas compras de comparación para una nueva CPU, puede haber notado que todos los núcleos parecen tener la velocidad en lugar de una combinación de diferentes.¿Porqué es eso? La publicación SuperUser Q & A de hoy tiene la respuesta a la pregunta de un lector curioso.
Pregunta de hoy &La sesión de respuesta nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web Q & A dirigida por la comunidad.
La pregunta
SuperUser reader 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, debería determinar qué procesador comprar en función de la carga de trabajo esperada para la computadora. El rendimiento en los videojuegos tiende a estar determinado por la velocidad de núcleo único, mientras que las aplicaciones como la edición de video 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, siendo las principales diferencias 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, 6nú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 en aumento, 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 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, máximo 16 GHz)?¿Sería la segunda opción igual de buena en las cargas de trabajo de subproceso único, pero potencialmente mejor en las cargas de trabajo de múltiples subprocesos?
Pregunto esto como una pregunta general y no específicamente con respecto a las CPU enumeradas anteriormente o sobre una 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 CPU tienen la misma velocidad en lugar de los diferentes?
La respuesta
SuperUser contribuidor bwDraco tiene la respuesta para nosotros:
Esto se conoce como procesamiento múltiple heterogéneo( HMP) y es ampliamente adoptado por dispositivos móviles. En dispositivos basados en ARM que implementan big. LITTLE, el procesador contiene núcleos con diferentes perfiles de rendimiento y potencia, es decir, algunos núcleos funcionan rápidamente pero consumen mucha energía( arquitectura más rápida y relojes más altos) mientras que otros son energéticamente eficientes pero lentos( arquitectura más lenta y / o relojes más bajos).Esto es útil porque el uso de la energía tiende a aumentar desproporcionadamente a medida que aumenta el rendimiento una vez que pasa un cierto punto. La idea aquí es obtener el rendimiento cuando lo necesites y la duración de la batería cuando no lo necesites.
En plataformas de escritorio, el consumo de energía es mucho menos problemático, 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 los sistemas HMP son mucho más complejos que la programación para los sistemas tradicionales de multiprocesamiento simétrico( SMP). Técnicamente, Windows 10 admite HMP, pero principalmente para dispositivos móvilesdispositivos que usan ARM big. LITTLE).
Además, la mayoría de los procesadores de escritorio y laptops actuales no están limitados térmica o eléctricamente hasta el punto en que algunos núcleos necesitan correr más rápido que otros, incluso para ráfagas cortas. Básicamente, nos hemos topado con un muro sobre qué tan rápido podemos hacer núcleos individuales, por lo que reemplazar algunos núcleos con otros más lentos no permitirá que los núcleos restantes corran más rápido.
Si bien hay unos pocos procesadores de escritorio que tienen uno o dos núcleos capaces de funcionar más rápido que los demás, esta capacidad está actualmente limitada a ciertos procesadores Intel de gama alta( conocidos como Turbo Boost Max Technology 3.0) y solo implica una ligera gananciaen rendimiento para esos núcleos que pueden correr más rápido.
Si bien es posible diseñar un procesador tradicional x86 con núcleos grandes y rápidos y núcleos más pequeños y lentos para optimizar cargas de trabajo con mucho subproceso, esto agregaría una complejidad considerable al diseño del procesador y es poco probable que las aplicaciones lo soporten adecuadamente.
Tome un procesador hipotético con dos núcleos rápidos de Kaby Lake( séptima generación) y ocho lentos núcleos Goldmont( Atom).Tendría un total de 10 núcleos, y las cargas de trabajo con muchos subprocesos optimizadas para este tipo de procesador podrían ver un aumento en el rendimiento y la eficiencia en comparación con un procesador Kaby Lake normal de cuatro núcleos. Sin embargo, los diferentes tipos de núcleos tienen niveles de rendimiento increíblemente 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 tanto el núcleo grande como el PEQUEÑO apoyen las mismas instrucciones)
De nuevo, la mayoría de las aplicaciones de múltiples subprocesos basadas en Windows suponen que cada núcleo tiene el mismo o casi el mismo nivel de rendimiento y pueden ejecutar las mismas instrucciones, por lo que este tipo de asimetría probablemente resultará en un rendimiento inferior al ideal, tal vezincluso se bloquea si usa instrucciones que no son compatibles con los núcleos más lentos. Aunque Intel podría modificar los núcleos lentos para agregar soporte de instrucción avanzada 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 para el diseño de aplicaciones, más cercano a lo que probablemente esté pensando en su pregunta, usaría la GPU para la aceleración de porciones de aplicaciones altamente paralelas. Esto se puede hacer usando API como OpenCL y CUDA.En cuanto a una solución de un solo chip, AMD promueve soporte de hardware para aceleración de 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éneo, aunque esto no ha visto mucha aceptación de la industriade algunas aplicaciones especializadas.
¿Tiene algo que agregar a la explicación? Suena apagado en los comentarios.¿Desea leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Mira el hilo de discusión completo aquí.
Crédito de la imagen: Mirko Waltermann( Flickr)