Domanda

Come funziona la retimizzazione negli array sistolici (usati nei processori di segnale)? Ho letto che esiste una nozione di ritardo negativo che viene utilizzata, ma come può un ritardo essere negativo e se questa è solo un'astrazione, come può essere d'aiuto?

È stato utile?

Soluzione

Il modello base di retiming è che hai fronti d'onda di registri interconnessi da un mucchio di logica combinatoria e stai migliorando il tempo o l'area del circuito risultante riposizionando i registri in punti diversi nel circuito in modo tale che ogni percorso attraverso la logica passa ancora attraverso lo stesso numero di registri. Per un semplice esempio, supponiamo che tu abbia una porta AND che alimenta un registro, il percorso più lungo verso l'ingresso del registro è 12ns, il percorso più lungo dall'uscita del registro è 6ns, il ritardo della porta AND è 3ns, e devi ridurre il tempo di ciclo dell'orologio a 10 ns. È possibile ottenere ciò eliminando il registro e sostituendolo con due registri, uno per ogni ingresso della porta AND, con lo stesso clock del registro originale. Ora hai ridotto il percorso di input più lungo a 9 ns, hai esteso il percorso di output a 9 ns e hai raggiunto l'obiettivo del ciclo di clock. In effetti, hai aggiunto -3ns all'ora di arrivo effettiva nel registro (e hai aggiunto +3 ns all'ora di uscita effettiva).

È disponibile una versione modificata del documento originale di Leiserson e Saxe sui ritocchi qui . Wikipedia ha un articolo decente, anche se breve, sull'argomento con alcuni link. Se hai accesso a IEEE Xplore o alla Biblioteca digitale ACM, una ricerca attraverso gli atti della Conferenza di automazione del design o della Conferenza internazionale sulla progettazione assistita da computer in cerca di ritocchi dovrebbe produrre molti articoli - questa è stata un'area di ricerca attiva per anni .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top