Altifigence Academy

5 / 20 · Concetto

Il contratto a un singolo fronte di salita

Fissa numerazione dei fronti, inoltro registrato, accumulo e priorità di inizializzazione.

La convenzione temporale usata in tutto il corso

Reset e clear terminano prima di E0, il primo fronte di salita che consuma dati. Gli ingressi sono stabili immediatamente prima di E_t. A quel fronte, un PE accumula un prodotto dai propri ingressi precedenti al fronte e memorizza gli stessi ingressi nei registri di inoltro verso destra e verso il basso. I nuovi valori di accumulatore e inoltro sono osservabili immediatamente dopo E_t. Un vicino consuma i valori registrati a E_(t+1).

Questa configurazione di base non ha un registro di ingresso separato, un moltiplicatore in pipeline o uno stadio di serializzazione dell'uscita. Aggiungerne uno richiede di rivedere pianificazione e latenza del risultato. «Un risultato al fronte zero» significa l'accumulatore aggiornato dopo E0, non prima. I fronti di inizializzazione sono esclusi dal conteggio dei fronti di calcolo. Clear ha priorità sul MAC, quindi attivare clear insieme alla prima coppia di dati scarta quella coppia; azzera prima e fornisci i dati al fronte seguente.

Due responsabilità in un PE

Con A=1 e B=5 a E0, PE(0,0) aggiorna l'accumulatore a cinque e inoltra gli operandi nei registri. A E1, gli operandi al confine 2 e 7 aggiungono quattordici, producendo diciannove. Allo stesso fronte, i PE vicini possono consumare i primi operandi registrati. Consentire a un token di attraversare due PE in un solo fronte invaliderebbe le nostre successive equazioni di sfasamento.

Le assegnazioni non bloccanti esprimono questo comportamento di lettura prima del fronte e scrittura dopo il fronte. Anche un testbench deve campionare coerentemente dopo l'aggiornamento dello stato, usando un blocco di clocking adatto o la corretta regione di campionamento del simulatore. Non dipendere dall'ordine accidentale dei processi nella regione attiva.

Priorità e pausa globale

La priorità è reset, poi clear, poi advance. Reset e clear azzerano accumulatori e stato valid. Quando advance=0, ogni PE mantiene accumulatore, valori di inoltro, flag valid e tag. Anche il pianificatore al confine si ferma. Un fronte advance esegue un passo logico. Uno zero valido è un vero operando; un token non valido viene ignorato indipendentemente dai bit dei suoi dati.

Se un accumulatore vale cinque e l'array si ferma per due fronti fisici, rimane cinque. Il successivo fronte advance esegue il prossimo passo logico. Riporta separatamente i fronti fisici di clock e i passi logici di avanzamento. L'inizializzazione continua ad avere effetto durante una pausa, impedendo a token obsoleti di entrare nel lavoro successivo.

Prova tu

Clear termina a E−1. Consuma (1,5) a E0, fermati a E1 e consuma (2,7) a E2. Indica l'accumulatore dopo ogni fronte e i numeri dei passi logici.

Leggi la spiegazione

Dopo E0, acc=5 e il passo logico zero è completo. E1 mantiene acc=5. Dopo E2, acc=19 e il passo logico uno è completo. Ci sono stati tre fronti fisici e due fronti di avanzamento.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.