¿El único propósito de los transistores en una CPU es actuar como los interruptores que definen su conjunto de instrucciones? Y si es así, ¿por qué aumentar el número de transistores aumenta su velocidad?
¿El único propósito de los transistores en una CPU es actuar como los interruptores que definen su conjunto de instrucciones? Y si es así, ¿por qué aumentar el número de transistores aumenta su velocidad?
Respuestas:
La parte superior de mi cabeza:
Más caché , que es más rápido que RAM
Más instrucciones SIMD , que se procesan más rápido que las instrucciones de datos individuales
Más núcleos , para que pueda hacer dos o más cosas a la vez
Más unidades funcionales, como una función de la FPU s, y múltiples ALU s
Tuberías , por lo que cada núcleo puede hacer más cosas a la vez
Mejor lógica de procesamiento, como una lógica de predicción de rama más sofisticada
Si tiene curiosidad sobre este tipo de cosas, le recomiendo el libro The Elements of Computing de Noam Nisan y Shimon Schocken (al menos la primera mitad). Después de analizarlo, podrá responder su propia pregunta en gran detalle con una apreciación completa de las partes involucradas.
El sitio web complementario en realidad tiene algunos capítulos y notas de muestra. Es un libro muy accesible. Lo supe por mi cuenta sin ningún problema y luego tomé una clase nueva en mi universidad que la usó como texto principal.
La respuesta simple es que más transistores no hacen que el resto de ellos vaya más rápido , pero en lugar de hacer una cosa por período de tiempo, ahora podemos hacer dos (con algunas limitaciones).
Ken ya resumió algunas de las razones en su respuesta . Para ampliar eso aún más
- Más caché , que es más rápido que RAM
Obviamente, los cachés más grandes necesitan más transistores. Pero con más transistores también tenemos la opción de usar cachés más rápidos . Los cachés de la CPU son solo SRAM, que generalmente está hecho de 6 transistores (AKA 6T SRAM). Sin embargo, cuando hay suficientes transistores, puede valer la pena usar celdas SRAM más rápidas pero más grandes hechas de más de 6 transistores (como 8T, 10T SRAM)
- Más instrucciones SIMD , que se procesan más rápido que las instrucciones de datos individuales
No solo SIMD sino cualquier tipo de instrucciones de aceleración. Por ejemplo, las arquitecturas modernas a menudo tienen una unidad AES para un cifrado / descifrado más rápido, FMA para un mejor cálculo matemático (especialmente procesamiento de señales digitales) o virtualización para máquinas virtuales más rápidas. Apoyar más instrucciones significa que se necesitan más recursos para decodificarlas y ejecutarlas.
Estos son bastante claros
En el pasado, no había suficiente área de matriz para la FPU, por lo que las personas deben comprar una separada si tienen altos requisitos de aritmética de punto flotante. Con significativamente más transistores, es posible tener la FPU incorporada, lo que acelera mucho las matemáticas de punto flotante
Además, las CPU modernas son superescalares y tratarán de hacer varias cosas a la vez al encontrar piezas de datos independientes y calcularlas antes, aunque el flujo de instrucciones sea lineal y serial. Cuantas más cosas puedan hacer en paralelo, más rápido serán. Para hacer eso, una CPU puede tener múltiples ALU y una ALU puede tener múltiples unidades de ejecución. Si, por ejemplo, una CPU tiene 5 sumadores en comparación con 4 en la generación anterior, entonces ya está funcionando un 25% más rápido en la situación más optimista sin ningún cambio de reloj. Las CPU más sofisticadas incluso emplean la ejecución fuera de orden (que es el caso de la mayoría de las CPU modernas de alto rendimiento)
- Mejor lógica de procesamiento, como una lógica de predicción de rama más sofisticada
Las operaciones generalmente se pueden realizar de varias maneras. Si tiene más transistores, tendrá más recursos para usar una técnica más rápida. Algunos ejemplos simples:
Cambio de bit:
Se realiza una palanca de cambios simple conectando en serie las chanclas.
Eso solo necesita un flip-flop por bit, por lo tanto, extremadamente compacto. Pero necesita un reloj para desplazarse un poco hacia la izquierda o hacia la derecha. Es por eso que los microcontroladores y las pequeñas CPU integradas solo tienen instrucciones para cambiar por uno. Ver
Cuando tenga más transistores para gastar, puede cambiar a una palanca de cambio de barril . Ahora una CPU puede cambiar bits en un solo reloj con el costo de cientos o miles de transistores
Adición:
Lo mismo se aplica a otras unidades como multiplicadores, divisores, planificador ... Por ejemplo, podemos hacer una multiplicación extremadamente rápida en un solo reloj usando lógica combinacional . Puede ver algunos ejemplos simples en la pregunta Multiplicadores de 3 bits: ¿cómo funcionan? . Pero los transistores necesarios crecerán hasta el cuadrado de los anchos de entrada, por lo tanto, las CPU pequeñas con un multiplicador usan lógica secuencial para ahorrar mucho espacio para el multiplicador:
Las arquitecturas multiplicadoras más antiguas empleaban una palanca de cambios y un acumulador para sumar cada producto parcial, a menudo un producto parcial por ciclo, cambiando la velocidad por el área del dado. Las arquitecturas modernas de multiplicadores utilizan el algoritmo Baugh – Wooley (modificado), los árboles Wallace o los multiplicadores Dadda para agregar los productos parciales en un solo ciclo. El rendimiento de la implementación del árbol de Wallace a veces se mejora mediante la codificación Booth modificada de uno de los dos multiplicandos, lo que reduce la cantidad de productos parciales que deben sumarse
https://en.wikipedia.org/wiki/Binary_multiplier#Implementations
Una vez que tenga un gran grupo de transistores, incluso puede usar la lógica combinacional para hacer un FMA que requiere muchos más recursos que un multiplicador.
Las computadoras modernas pueden contener un MAC dedicado, que consiste en un multiplicador implementado en lógica combinacional seguido de un sumador y un registro acumulador que almacena el resultado. La salida del registro se retroalimenta a una entrada del sumador, de modo que en cada ciclo de reloj, la salida del multiplicador se agrega al registro. Los multiplicadores combinacionales requieren una gran cantidad de lógica, pero pueden calcular un producto mucho más rápido que el método de cambio y adición típico de las computadoras anteriores.