¿Por qué ahora vemos una tendencia de más núcleos en lugar de más GHz de las CPU?

Respuesta corta: Muro de poder

Explicación: Con la llegada de los dispositivos submicrónicos, la potencia se convirtió en un gran problema en los chips. La mayoría de las técnicas hoy en día están orientadas a reducir la potencia, ya que hemos alcanzado lo que se conoce como la pared de potencia. Si los chips consumen demasiada energía, básicamente se quemarán.

Ahora, echemos un vistazo a cuáles son los principales contribuyentes al poder en los chips VLSI. En primer lugar, debemos tener en cuenta que hay 2 tipos de potencias, dinámica (es decir, la potencia consumida cuando el chip está trabajando activamente) y estática (es decir, la potencia de fuga consumida mientras no se trabaja).

El consumo dinámico de energía de un chip viene dado por la expresión:
[matemática] P_ {dyn} = CV ^ 2f [/ matemática] ………………………… C-Vsquared-f (donde C = capacitancia, V = voltaje de alimentación, f = frecuencia de operación)

El objetivo de un diseñador es mejorar el producto (en este caso, la CPU) haciendo que funcione más rápido. Tenga en cuenta que el trabajo en un chip es básicamente cambiar de 0 → 1 o 1 → 0. Esto no es más que cargar y descargar cargas (capacitancia). Sin embargo, para hacer el cambio más rápido, deberíamos tener una carga más baja para cambiar (es decir, una reducción en C) o deberíamos tener una corriente más alta para cargar y descargar las cargas, lo cual se logra al establecer un voltaje de suministro (V) más alto. Además, tenga en cuenta que la C depende de la estructura del circuito, y no hay mucho que podamos hacer para reducirla (quiero decir, por supuesto, hay buenos diseños que usan un número menor de bloques, por lo tanto, menor C para cambiar y diseños malos con C más alta, pero en el nivel industrial donde más o menos todo está estandarizado, no hay mucho margen de mejora, en términos de C). Por lo tanto, nos queda la opción alternativa de aumentar V. Tenga en cuenta que esto dará como resultado que P_dyn se dispare (ya que tanto V como f aumentan), lo que no es deseable por las razones mencionadas anteriormente.

Ahora, supongamos que tenemos 2 núcleos idénticos que funcionan a la frecuencia f / 2 cada uno, en lugar de 1 núcleo que funciona a f . Creo que es bastante fácil convencerse de que tenemos una potencia informática equivalente en ambos casos. Es como contratar a una persona fuerte, o 2 personas de la mitad del poder para hacer un determinado trabajo. Obviamente, la C es la misma en ambos casos (es decir, los 3 núcleos considerados) ya que tienen estructuras exactamente idénticas. Sin embargo, si el núcleo que trabaja en f requiere un voltaje de suministro de V , un núcleo que funciona en f / 2 puede hacerlo con un voltaje de suministro de αV (donde α <1). Ahora, comparemos la potencia consumida en ambos casos:

CASO 1: Núcleo único
[matemáticas] P_ {dyn} = CV ^ 2f [/ matemáticas]

CASO 2: Doble núcleo
Potencia (en cada núcleo) = [matemática] P_ {dyn} = C (αV) ^ 2f / 2 [/ matemática]

[matemática] Potencia_total (para 2 núcleos) = C (αV) ^ 2f / 2 + C (αV) ^ 2f / 2 = C (αV) ^ 2f [/ matemática]

Tenga en cuenta que la potencia total en CASE2 (doble núcleo) es [matemática] a ^ 2 [/ matemática] veces (menor, porque α <1) que la potencia consumida en CASE1. Por lo tanto, si la potencia de cálculo sigue siendo la misma, podemos lograr una reducción de potencia mediante la introducción de múltiples núcleos.

Una pregunta relacionada:
Si ir a 2 núcleos (en lugar de 1 núcleo) nos da una reducción de potencia, ¿por qué no seguimos buceando los núcleos una y otra vez y trabajamos con un sistema de múltiples núcleos (digamos diez mil núcleos)?
Responder:
Tenga en cuenta que en el ejemplo presentado anteriormente, solo los poderes de cálculo son equivalentes. Eso no significa necesariamente que los casos (es decir, núcleo único y núcleo múltiple) van a requerir exactamente el mismo tiempo para realizar cualquier tarea. De hecho, el sistema de doble núcleo puede tomar hasta el doble de tiempo, incluso con la misma potencia de cálculo. ¿Por qué? Debido a que la tarea asignada puede no ser paralelizable, es decir, puede ser una tarea que debe realizarse en serie. En tal situación, mientras un núcleo funciona, el otro tiene que estar inactivo y, en cualquier momento, solo funcionará uno de los núcleos, y dado que cada núcleo tiene la mitad de la capacidad de cálculo en comparación con la máquina de un solo núcleo , tardarán el doble en hacer el mismo trabajo. Sin embargo, prácticamente la mayoría de las tareas tienen algún elemento de paralelismo en ellas, y eso es lo que ha llevado al advenimiento de múltiples núcleos. Paralelizar los códigos para hacer el mejor uso del hardware de soporte es una fuente constante de dolor de cabeza para los programadores. Además, incluso si se escribe un código perfectamente paralelo, incluso entonces necesitaremos un sistema operativo extremadamente eficiente para realizar un seguimiento de los diferentes fragmentos del código que se ejecutan en diferentes CPU, ensamblar y asimilar las salidas fragmentadas para obtener la salida final. Además, a medida que seguimos reduciendo la frecuencia, las ganancias en potencia siguen reduciéndose, es decir, α se acerca cada vez más a 1. Estas son algunas de las limitaciones prácticas de dividir el núcleo indefinidamente.

Porque ya no podemos aumentar dramáticamente la frecuencia de un solo núcleo. Tan sencillo como eso. Además, hay problemas de calefacción. Cuanto más aumenta la frecuencia de funcionamiento de un núcleo, más calor produce. Lo creas o no, la gestión del calor ha sido el cuello de botella en la producción de núcleos de alta velocidad.

En los años 90, con cada año que pasaba o dos, uno podía presenciar un aumento cuántico en las frecuencias de CPU. El 8086 tiene una frecuencia operativa máxima de 5Mz. Mi Core i5 de cuarta generación hoy puede funcionar a 2.3Ghz con turbo boost. ¿El aumento que logramos? 460X. Y ten en cuenta que el mío es un i5 core de cuarta generación, que tiene más de 2 años.

¿Has oído hablar de las supercomputadoras? ¿Crees que tienen un núcleo único y masivo que funciona a frecuencias extremadamente altas? No La mayoría de las supercomputadoras de alto rendimiento hoy en día son clústeres, es decir, tienen miles de núcleos que se comunican entre sí y funcionan en paralelo. La comunicación puede ser manejada por un lenguaje como MPI (interfaz de paso de mensajes). Y esto puede sorprenderlo un poco, los sistemas de gestión del calor de estos grupos masivos pueden costar millones de dólares.

Si juegas, es posible que hayas oído hablar de las GPU. Las unidades de procesamiento de gráficos son procesadores masivamente paralelos. Tienen muchos núcleos, cada núcleo tiene muchas cuadrículas que están formadas por muchos bloques que a su vez están formados por hilos. Los hilos pueden funcionar en paralelo. En una sola GPU, puede haber millones de subprocesos (de ahí el nombre masivamente paralelo). Aquí está la arquitectura Fermi, desarrollada por Nvidia.

¿Ves cuántos núcleos tiene? Todo esto puede funcionar en paralelo. De esta manera, podemos aumentar drásticamente el rendimiento máximo.

El rendimiento máximo ofrecido por la arquitectura anterior es 1.5TFLOPS (operaciones de punto flotante Tera por segundo). El ancho de banda de la DRAM es de 192 GB / s. Entonces, ¿significa que siempre obtendremos el máximo rendimiento? No Todo depende de cuánto podamos optimizar nuestro código. En el caso anterior, necesitamos tener una relación CGMA (relación de acceso de computadora a memoria) de 31.25 para alcanzar el máximo rendimiento. Una ración menor que esta dará como resultado un bajo rendimiento. Por ejemplo, si la relación CGMA es 1, ¡su código solo puede alcanzar 48GFLOPS!

La programación de GPU es un campo en sí mismo, y gran parte comprende la optimización del código para lograr el máximo rendimiento.

Para resumir, usamos núcleos múltiples en lugar de núcleos únicos porque:

1. Hemos alcanzado el límite de aumentar la frecuencia de funcionamiento en un solo núcleo.

2.Incluso si encontramos alguna forma de aumentarlo (altamente improbable), la gestión del calor será un problema.

3. Los núcleos múltiples nos proporcionan un aumento dramático en el rendimiento a bajo precio.

Hay una limitación de GHz, lo que significa que GHz significa microondas, y las microondas necesitan transistores de alta frecuencia, solo piense que un transistor que funciona bien a 1.5GHz cuesta aproximadamente 10 veces más que un transistor que funciona bien a 300MHz. 300MHz es una frecuencia relativamente alta utilizada en comunicaciones de RF. También es difícil aislar las capas de silicio para que no interfieran entre sí a una frecuencia alta.

Además, con el aumento de la frecuencia consumirá más energía. Eso es porque tienes más de 1 en la misma cantidad de tiempo. Es lo mismo que se usa en dispositivos analógicos controlados con PWM.

Además, el calor crea inestabilidad, los electrones y las moléculas están locos cuando la temperatura es alta, vibran mucho y esto puede provocar fugas no deseadas de cargas eléctricas que conducen a errores de hardware.

Se debe principalmente a una combinación de razones, en comparación con los procesadores de escritorio y móviles hace 15 años más o menos.

  • Poder y calor . Todas las demás respuestas a esta pregunta hasta ahora entran en detalles al respecto: no se puede introducir suficiente potencia en el chip para soportar velocidades de reloj más altas, y tampoco se puede apagar el calor lo suficientemente rápido.
  • Rendimientos rápidamente decrecientes . Fui activo en la investigación de microarquitectura a principios de la década de 2000, y nos topamos con lo que podríamos lograr con un único procesador superescalar y fuera de servicio. Todo se detiene cuando fallas en el caché y tienes que extraerlo de la memoria o del disco. Incrementar la velocidad del procesador no hace más que quemar energía mientras está esperando. Tenía una aplicación que pasaba más del 95% de sus ciclos de procesador esperando en la memoria: el conjunto de datos era enorme.

Para ilustrar los puntos, las GPU se han vuelto tan populares para la supercomputación recientemente porque:

  • Potencia: pueden hacer más cálculos por vatio-hora.
  • Tolerancia de latencia: las GPU mitigan los efectos de la latencia al ejecutar grandes cantidades de subprocesos en paralelo. El aumento de la frecuencia de reloj puede seguir mejorando el rendimiento siempre que haya suficientes subprocesos con trabajo por hacer.

Algunas buenas respuestas aquí. Sin embargo, desde principios de los años ochenta se han desarrollado dos tendencias. Como dijo Tom Brown, es un factor de disipación de calor. Tiene una compensación entre velocidad y eliminación de calor. Déjame mostrarte un ejemplo de principios de los 80:

Tenga en cuenta que el borde de color cobre alrededor de la placa de la computadora? Es cobre. ¡4.2 libras de cobre! Está ahí para extraer calor del tablero.

El Sr. Cray estaba llegando al límite con los chips del día (suena familiar) y su solución fue un sistema de múltiples CPU. Luego diseñó el Cray-2 y Steve Chen creó el Cray X-MP. ¡El Cray-2 produjo tanto calor que tuvo que ser bañado en un líquido! Aquí hay un Cray-2:

Entonces, incluso a principios de los años 80, los límites se veían afectados. Los Microcomputer Chips se hicieron cada vez más pequeños y rápidos, sin embargo, alrededor de 2006 ~ 2010, las cosas comenzaron a deteriorarse. ¿La solución para chips de microordenador? Lo mismo que el Sr. Cray y otros fueron pioneros en los años 80: ¡Sistemas de CPU paralelos!

Resultado neto: si no puede viajar 10 millas a 100 millas por hora, ¡entonces haga que 10 personas viajen 10 millas cada una a 10 millas por hora! (No es exacto, pero entiendes la idea).

Para explicarlo fácilmente, déjenme decirlo de esta manera. ¿Quién puede construir un rascacielos más rápido? ¿Un gato de todos los oficios que hace milagros o un equipo completo de constructores con capacidad para lesder? Igual por qué CPU. En lugar de tener un súper núcleo gigante, hacen núcleos múltiples para un manejo más fácil. De esa manera, su CPU del ejército de un solo hombre no se mantendrá a 200 grados trabajando las 24 horas, los 7 días de la semana, lo que reducirá el consumo de energía mientras aumenta su rendimiento y el tiempo de respuesta y los problemas de calor.

Sí, el enfriamiento es un problema y los aspectos físicos de los chips no pueden obtener rutas de datos mucho más pequeñas en el chip, por lo que el procesamiento en paralelo es el camino a seguir. Habrá un salto adelante en el futuro, pero serán nuevos super materiales.

Los fabricantes están trabajando en la creación de autopistas de 10 carriles a 100 Mph en lugar de una sola autopista a 1000 Mph

Tiempos emocionantes por delante.

Porque GHz en realidad no significa mucho.

En 2004 compré una computadora portátil con un procesador Pentium 4 de 3.4 GHz. Eso es más de lo que la mayoría de los procesadores tienen en estos días.

Pero, ¿eso significa que este Pentium 4 de más de diez años sería más rápido que mi i7 actual con solo 2.5 GHz, si solo ejecutara un núcleo? Por supuesto no.

Piense en GHz más como las revoluciones del motor de un automóvil.

Si tiene dos motores idénticos y puede hacer que uno ejecute 8000 revoluciones mientras que el otro solo ejecuta hasta 6000 revoluciones, el que tenga más revoluciones generará más potencia.

Pero es posible que no cree tanta potencia como un motor completamente diferente y mejor diseñado que solo sube a 4000 revoluciones.

GHz ≠ Potencia

Hasta donde yo sé, el factor principal es la disipación de potencia (calor). Si registra la CPU más rápido, generará más calor con menos tiempo para deshacerse de ella.