Arquitectura de la computadora: ¿Cómo se usan los transistores multimillonarios dentro de una CPU moderna?

Cómo gasta sus transistores realmente depende del problema que está tratando de resolver.

Si abre un procesador x86 de mil millones de transistores, verá un puñado de núcleos de CPU muy complejos, con muchos transistores dedicados a decodificar y programar instrucciones, predecir ramas y administrar memoria virtual. También verá muchos transistores dedicados a memorias caché muy rápidas. Esta combinación de transistores refleja el propósito general, las cargas de trabajo variadas que un Windows o Mac típico puede encontrar.

Si abre un procesador de servidor SPARC de mil millones de transistores, encontrará un montón de núcleos SPARC bastante simples en orden y una tonelada de caché. Estos tipos están optimizados para muchos subprocesos de bases de datos paralelas que operan en grandes conjuntos de trabajo de bases de datos.

Si abre un procesador de GPU de mil millones de transistores, verá cientos de rutas de datos de cómputo de punto flotante muy especializadas, profundamente canalizadas, planificadores de hilos de grano fino y motores de transferencia de memoria diseñados para transmitir texturas, vértices y otros datos a través del procesador eficientemente. No hay mucha lógica de control de sucursal, sino un montón de hardware de cómputo de coma flotante amigable con la matriz, junto con RAM para almacenar los datos a medida que pasan.

Si abre un DSP de mil millones de transistores optimizado para aplicaciones de estación base celular (algo con lo que trabajé en un trabajo anterior), encontrará múltiples bloques de procesamiento de señal dedicados para manejar varios protocolos de codificación por aire, una gran red -bloque acelerador para manejar millones de paquetes que zumban a través del dispositivo en latencias de microsegundos, algunos DSP de propósito general altamente capaces que dedican la mayoría de sus transistores a operaciones de acumulación múltiple, y algunos ARM para programar todo. Los transistores están divididos entre 50 y 50 entre el movimiento de cómputo / datos y la memoria. (O tal vez más cerca de 40-60.)

Si abre un procesador de teléfono celular de mil millones de transistores, encontrará la combinación más variada de todas. Verá algunos procesadores ARM de propósito general (muy probablemente), algunas GPU, algunos aceleradores de codificación / decodificación de video, tal vez algunos DSP, algunos periféricos de red y muchos otros periféricos para administrar USB, Bluetooth, WiFi e interactuar con cámaras, micrófonos y altavoces.

Todo depende de lo que intentes hacer …

Al diseñar una CPU moderna, empresas como Intel y ARM se centran en las siguientes compensaciones:

  1. ¿Cuántos núcleos de CPU son suficientes? Esto depende de cuántos hilos de software puedan usar todos los núcleos disponibles
  2. Cuántos niveles de caché interno (1,2,3,4) y cuánto caché total debe tener.
  3. Gráficos (Intel). Cómo agregar rendimiento gráfico sin demasiados costos o potencia adicionales

Más núcleos de CPU permiten que se ejecuten más subprocesos en paralelo, lo que brinda un mejor rendimiento general. Un caché más grande garantiza una mayor tasa de aciertos (evitando que los hilos se detengan). ¿Cuál es más importante? La respuesta depende del software al que se dirigen las CPU.

En un entorno de servidor, un fabricante de CPU puede preferir tener más núcleos de CPU, ya que permitirá más subprocesos simultáneos.

En un entorno móvil (como un teléfono), la baja potencia es más importante, por lo que puede ser conveniente tener menos núcleos y quizás incluso un caché más grande (para permitir que la memoria externa se vaya a dormir o minimizar la actividad.

Buses de datos más amplios, más operaciones paralelas aumentan las tasas de transferencia de datos.

Las memorias caché de múltiples niveles, cada una en tamaños de varios megabytes, también aceleran el funcionamiento de la CPU.

Básicamente, las operaciones y procesos más paralelos compensan no aumentar la velocidad linealmente.

Las primeras rutas de datos ahora tienen 64 bits de ancho, lo que significa que cada porción de datos necesita al menos 64 de todo. Además de lo que mencionas, hay numerosos circuitos que decodifican las instrucciones. Para complicar aún más este sistema, creo que los chips más nuevos pueden decodificar la instrucción que los chips más antiguos podrían.

Más concretamente, los transistores no solo se usan para trabajos que uno asociaría con un transistor, sino que también se usan para resistencias, condensadores e incluso cables.