¿Podríamos aumentar teóricamente masivamente la cantidad de cálculos paralelos (para algunos problemas) eliminando la sincronización de la CPU?

0

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?

    
pregunta user56834

4 respuestas

1

La técnica se llama "oleoducto de ondas" y se ha estudiado durante cincuenta años. Es muy difícil de lograr en la práctica, por lo que sigue siendo un tema de investigación arcano. La dificultad es mantener relaciones de tiempo precisas entre las rutas de tiempo frente a la variación de fabricación, la variación de la fuente de alimentación, la variación de temperatura, etc.     

respondido por el Elliot Alderson
1

Teóricamente sí. Se llama lógica asíncrona y se ha considerado durante décadas, en particular debido a las ventajas de la distribución de energía. En principio, cada sección de un proceso puede optimizarse individualmente y las señales locales de handshake se encargan del flujo de datos. En algunas aplicaciones puede haber grandes ganancias de eficiencia y velocidad, pero la compensación se convierte en medidas de rendimiento estadístico en lugar de deterministas. Esto hace que sea más difícil de integrar en un diseño. Básicamente, esto deja la comprensión detallada de la sincronización del diseño para el usuario final en lugar de abordarlo por adelantado.

Sin embargo, las ventajas del diseño totalmente asíncrono se han incorporado principalmente en diseño mesocrónico , donde las múltiples secciones de un IC se ejecutan con diferentes fases y velocidades de reloj, pero aún así se sincronizan en los límites, preservando así la sincronía global en el sistema y las garantías de desempeño en el peor de los casos.

    
respondido por el Edgar Brown
0

Cada etapa del proceso debe indicar la siguiente cuando esté lista: esto es efectivamente un reloj para la siguiente etapa.

Es cierto que las etapas no necesariamente tienen que tener el mismo reloj que las otras, pero tienen que tener alguna forma de decir "aquí está mi salida". Los relojes de los convertidores de serie a paralelo a menudo no están directamente relacionados con los relojes de salida.

    
respondido por el jonathanjo
0

Hay algo que se llama Hazard (también conocido como Race risk ), cuento, se trata de los retrasos de cada compuerta lógica individual, un camino de entrada a salida puede ser más rápido que otro camino. Esto, a su vez, significa que la salida puede estar muy equivocada hasta que todas las entradas se hayan propagado a la salida.

Una solución al peligro es usar un reloj y dar suficiente tiempo para que lo que sea que esté en la salida sea correcto.

Otra solución al peligro es buscar en el Mapa de Karnaugh (K-map ) de su función booleana y haga que todos los grupos (términos) se superpongan. No siempre se pueden superponer grupos en el mapa K, una solución a ese subproblema sería agregar una señal de "hecho", que esencialmente actuaría como un reloj. Además, agregar más grupos para que todos los grupos estén conectados conduce a más compuertas, lo que conduce a más transistores y más consumo de energía y menos espacio en el silicio para su circuito.

Déjame reescribirlo un poco. Por lo general, las personas usan K-maps para encontrar el número más pequeño de puertas requeridas para representar una función booleana, pero lo usaríamos para encontrar qué se superponen, lo que significa que probablemente no sea no Obtener una solución mínima. Y sea cual sea la velocidad en la que trabajará nuestro circuito, cualquiera que sea el máximo teórico en realidad, podríamos usar un reloj para eso junto con una solución mínima.

Si no estoy lo suficientemente claro, sí, puedes hacerlo, adelante. Pero es muy probable que pierdas en ello.

    
respondido por el Harry Svensson

Lea otras preguntas en las etiquetas