¿Por qué una tubería más profunda podría traer velocidades de reloj más rápidas?

Suponga que un cálculo particular es puramente combinatorio, es decir, son algunas entradas que alimentan una vasta colección de compuertas AND, OR e INVERT, que alimentan algo de salida. Supongamos que todas las puertas tienen la misma latencia y que no hay demoras en los cables, demoras en la carga u otras realidades molestas. Suponga que la ruta de acceso del peor de los casos de alguna entrada a alguna salida es de 100 retrasos de puerta.

Supongamos que un retraso de puerta es de 100 picosegundos. Luego, este cálculo se ejecuta (en el peor de los casos) en 10,000 picosegundos, o 10 nanosegundos. El rendimiento máximo que podría tener es un resultado cada 10 nanosegundos y una latencia de un reloj. La velocidad de reloj máxima es igualmente cada 10 nanosegundos, o 100 megahercios.

Ahora ordene las puertas por el número de demoras de puerta, el peor de los casos, entre las entradas y la puerta. Cada 10 filas de puertas, coloque un registro cronometrado en cada cable que cruza esa línea. Cada ruta debe tener 10 registros (así como las puertas originales).

¡Ahora el ciclo de reloj mínimo es de solo 1 nanosegundo! Cualquier conjunto particular de operandos se abrirá paso a través de la lógica y los registros en 10 ciclos. La latencia será la misma que antes, pero la lógica canalizada puede producir un nuevo resultado cada ciclo de nanosegundos.

Pasar de una tubería de 1 etapa a una tubería de 10 etapas nos permitió aumentar la velocidad del reloj por 10x y multiplicar el número de resultados por unidad de tiempo por 10. El tiempo para producir cualquier resultado en particular no cambia.

El lector de alertas notará que no cobré nada por todos estos registros. Si están separados de la lógica, ellos mismos agregan demora, pero hay diseños que integran la lógica con los registros, como Earle Latches, que permiten registros de tubería “libres”.

Es importante recordar que las altas frecuencias de reloj en sí mismas son algo malo. La energía utilizada por la lógica CMOS es proporcional a la velocidad del reloj, y generalmente tiene que ejecutar la lógica a voltajes más altos para acelerar el reloj, lo que también aumenta el uso de energía. Mientras el rendimiento de toda la máquina mejore en el mismo factor (o no le importa la potencia), todavía está bien.

Porque divides el trabajo en pedazos más pequeños. La velocidad del reloj está determinada por la etapa más lenta. Si divide esa etapa en unos pocos pasos, puede aumentar la velocidad del reloj.

Solo piense en una línea de montaje, agregue más trabajadores y ¿qué sucede? Cada uno de ellos hace menos trabajo, por lo que todos pasan su porción de trabajo al siguiente trabajador más rápidamente.