27 votos

¿Por qué no hacer un gran núcleo de CPU?

No entiendo por qué los fabricantes de CPUs hacen chips multinúcleo. El escalado de múltiples núcleos es horrible, esto es muy específico de la aplicación, y estoy seguro de que se puede señalar cierto programa o código que se ejecuta muy bien en muchos núcleos, pero la mayoría de las veces el escalado es una basura. Es un desperdicio de espacio en la matriz de silicio y un desperdicio de energía.

Los juegos, por ejemplo, casi nunca utilizan más de cuatro núcleos. Las simulaciones científicas y de ingeniería, como Ansys o Fluent, tienen un precio en función del número de núcleos del PC en el que se ejecutan, así que pagas más porque tienes más núcleos, pero el beneficio de más núcleos se vuelve realmente pobre a partir de los 16 núcleos, y sin embargo tienes estas estaciones de trabajo de 64 núcleos... es un desperdicio de dinero y energía. Es mejor comprar un calentador de 1500 W para el invierno, mucho más barato.

¿Por qué no hacen una CPU con un solo núcleo grande?

Creo que si hicieran un equivalente de un núcleo de una CPU de ocho núcleos, ese núcleo tendría un aumento del 800% en el IPC, por lo que se obtendría el rendimiento completo en todos los programas, no sólo en los que están optimizados para varios núcleos. Más IPC aumenta el rendimiento en todas partes, es una forma fiable y sencilla de aumentar el rendimiento. Los núcleos múltiples aumentan el rendimiento sólo en un número limitado de programas, y el escalado es horrible y poco fiable.

12voto

Robert Smith Puntos 21

Permítanme hacer una analogía:

Si tienes un mono tecleando en una máquina de escribir, y quieres que escriba más, puedes darle café, clases de mecanografía, y tal vez hacer amenazas para que trabaje más rápido, pero llega un punto en el que el mono escribe al máximo de su capacidad.

Así que si quieres conseguir más mecanografía, tienes que conseguir más monos.


Para ampliar la analogía, se necesita una máquina de escribir distinta para cada mono (que representa el bus de datos que necesitará cada núcleo), se necesita una forma de hacer llegar los plátanos a cada mono y algo para recoger sus excrementos (análogo a la distribución de la energía y la disipación del calor) y se necesita una forma de asegurar que los monos no estén todos intentando escribir el mismo pasaje en Noche de Reyes (análogo a dividir correctamente la carga de trabajo entre los procesadores). Pero todo esto es menos trabajo para más ganancia que tratar de obtener más mecanografía de un solo mono.

7voto

graycrow Puntos 1175

Usted señala que mucho software no utiliza más de (x) núcleos. Pero esto es una limitación impuesta por los diseñadores de ese software. Los PCs domésticos con múltiples núcleos son todavía nuevos (más o menos) y el diseño de software multihilo es también más difícil con las APIs y lenguajes tradicionales.

Su PC no sólo está ejecutando ese programa. Está haciendo un montón de otras cosas que se pueden poner en los núcleos menos activos para que su software principal no sea interrumpido por ellos tanto.

Actualmente no es posible aumentar la velocidad de un solo núcleo para igualar el rendimiento de 8 núcleos. Es probable que la mayor velocidad tenga que provenir de una nueva arquitectura.

A medida que se disponga de más núcleos y las API se diseñen con esa premisa, los programadores empezarán a utilizar habitualmente más núcleos. Los esfuerzos por facilitar los diseños multihilo están en marcha. Si te hicieras esta pregunta dentro de unos años, probablemente dirías: "Mis juegos sólo utilizan habitualmente 32 núcleos, así que ¿por qué mi CPU tiene 256?".

3voto

Ozzyprv Puntos 1

La razón más convincente desde el punto de vista histórico, es disipación de energía .

Después del Pentium IV, Intel intentó sacar adelante una nueva generación de procesadores con el nombre en clave de Tejas, que supuestamente funcionaría en el rango de 4 GHz a 12 GHz. El problema era que al funcionar a esa velocidad generaba demasiado calor para ser viable.

Tras la cancelación de Tejas, Intel tardó entre 10 y 15 años más en tener por fin núcleos que funcionaran a 4 GHz con niveles de calor aceptables.

Ver _Tejas y Jayhawk_ .

Intel tenía otro proyecto en paralelo con Tejas que implicaba el uso de múltiples núcleos. Ese proyecto tenía unos niveles de calor aceptables, así que se optó por esa vía. Les permitió aumentar el rendimiento ahora en lugar de esperar otros 10 años a los procesos de fabricación de 10 nm.

Suponiendo que los núcleos no estén faltos de recursos, para obtener el mismo número de instrucciones por segundo de un solo núcleo en lugar de N núcleos se necesitaría que la tasa de instrucción de ese único núcleo fuera N veces más rápida. La disipación de energía dinámica de un núcleo de CPU es linealmente proporcional a la frecuencia de funcionamiento. También es proporcional al cuadrado de la tensión de funcionamiento. Funcionar a frecuencias más bajas permite utilizar voltajes de funcionamiento más bajos. El uso de voltajes más bajos a frecuencias más bajas significa que, en la práctica, el calor generado disminuye con el cubo de la frecuencia de funcionamiento.

Un ejemplo extremo es el cerebro humano, que puede realizar el equivalente a 2^18 operaciones por segundo con sólo 20 W de potencia. Lo consigue utilizando miles de millones de neuronas que funcionan en paralelo a sólo unos cientos de Hz.

También hay que tener en cuenta que normalmente hay cientos o miles de hilos funcionando a la vez en un PC. El sistema operativo se encarga de asignar tiempo en un núcleo a cada hilo. Así que, aunque un programa individual no aproveche todos los núcleos, sigue beneficiándose porque los demás programas ocupan menos tiempo de su CPU si se ejecutan en otro núcleo.

En todo caso, el mercado de alto rendimiento se está moviendo hacia un procesamiento más paralelo en forma de FPGAs. Intel compró recientemente Altera (el segundo mayor fabricante de FPGAs) y ahora vende placas con un acelerador de hardware FPGA en ellas. El software puede cargar la FPGA con una imagen en tiempo de ejecución mediante una llamada a la API. A continuación, la CPU introduce los datos en la FPGA y deja que ésta haga la mayor parte del trabajo. Los tipos de aplicaciones suelen ser la codificación de vídeo, la IA, el renderizado, la búsqueda en bases de datos, etc.

2voto

Rishi Puntos 29

Sólo para completar la imagen de hacia dónde va todo esto...

Las redes neuronales y la IA son los temas más candentes del momento. Una de las razones es que se puede utilizar eficientemente un gran número de núcleos simples en paralelo y así extraer un rendimiento de cálculo cercano al máximo. El requisito es intrínsecamente paralelo de forma masiva y se traslada con bastante facilidad a un conjunto de procesadores sin necesidad de mucha comunicación entre los núcleos. Por eso las GPU fueron la primera tecnología de referencia para la aceleración de la IA. Ahora mismo estamos viendo cómo salen al mercado chips optimizados incluso mejor que las GPU de vídeo para las NN. El siguiente paso, o tal vez el último, es hacer NNs utilizando tecnologías analógicas como los memristores.

Además, en un PC para juegos hay mucho más rendimiento bruto en la tarjeta gráfica que en la CPU multinúcleo de Intel o AMD.

1voto

ozmank Puntos 127

Fundamentalmente, las pérdidas del CMOS son exponencialmente (^1,5) proporcionales a la frecuencia y el rendimiento de la CPU en paralelo es algo menos que lineal proporcional al número de CPUs.

Así, la relación entre la potencia de cálculo y la disipación de energía mejora en las aplicaciones multi-CPU a diferentes velocidades de reloj cuando se compara la velocidad con el número de CPU para una disipación de energía fija.

Es más complejo que esto, pero estos son los fundamentos por los que las CPUs paralelas son mejores por vatio en aplicaciones dinámicas. Siempre habrá excepciones cuando se optimiza para un escenario.

No es el tamaño de una CPU más grande lo que la hace más rápida para las aplicaciones de PC típicas de Intel/AMD, sino que es el tamaño reducido por la resolución litográfica y la menor capacitancia de la puerta lo que reduce la potencia junto con la reducción del nivel de sub-umbral y el voltaje del núcleo.

La mejora no es lineal y no significa que 8 núcleos sean 4 veces mejor que 2, pero el objetivo, si se cumple, es tener más rango dinámico de procesamiento con el estrangulamiento de la disipación de energía, la velocidad y el voltaje para mejorar tanto el rendimiento como la eficiencia y el pico de potencia bajo demanda sin un aumento excesivo de la temperatura.

Para una respuesta más científica, lea https://www.sciencedirect.com/topics/computer-science/dynamic-power-consumption

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X