La sincronización de la CPU implica asegurarse de que cada operación o parte de una operación tome exactamente una cierta cantidad de tiempo (el tiempo de ciclo de la máquina).
Una forma de aumentar la eficiencia de una CPU es mediante la introducción de la tubería: cortamos un cálculo básico (por ejemplo, la multiplicación de punto flotante) en partes, y luego nos aseguramos de que cada parte dure un ciclo de máquina. Si luego tenemos por ej. 5 partes, teóricamente podemos ejecutar 5 instrucciones simultáneamente haciendo que pasen por cada etapa de la tubería por separado.
Sin embargo, la canalización requiere el uso de pestillos, para demarcar las etapas de la tubería, y el reloj de la CPU está conectado a estos pestillos. Esto pone un límite superior al número de cálculos que se pueden realizar simultáneamente: al menos, no puede haber más etapas que la profundidad del circuito combinacional.
Sin embargo, mi pensamiento es: deshacerse de la sincronización total y deshacerse de los pestillos. Luego, simplemente envíe cada cálculo "inmediatamente después del otro" , de modo que, teóricamente, el circuito podrá realizar tantos cálculos de manera tal que las señales enviadas inmediatamente una detrás de la otra se puedan distinguir.
Sé que esto tiene muchos problemas prácticos:
-
escribir los resultados en la memoria será un cuello de botella (creo)
-
la sincronización de los cálculos es difícil.
Sin embargo, me pregunto si tal propuesta tiene alguna esperanza de ser implementada alguna vez. ¿Ya ha trabajado la gente en esto?