Salta al contenuto
Note per Studenti Datapath e microarchitettura

Datapath e microarchitettura

In questa pagina 5
In questa pagina 4

La microarchitettura è il modo in cui un'ISA viene realizzata in hardware (vedi Architettura e organizzazione di un calcolatoreDifferenza tra architettura (ciò che vede il programmatore) e organizzazione (come è realizzata); struttura e funzione; le quattro funzioni e i quattro componenti; macchina di von Neumann e IAS; generazioni tecnologiche e legge di Moore.Architettura e organizzazione di un calcolatore →). Si divide in datapath (gli elementi che memorizzano e trasformano i dati) e unità di controllo (che ne comanda il funzionamento, vedi Unità di controlloCompiti dell'unità di controllo e micro-operazioni; segnali di controllo del datapath con tabella per le classi di istruzioni; controllo cablato (combinatorio o a stati finiti) e controllo microprogrammato (memoria di controllo, microistruzioni orizzontali e verticali); confronto.Unità di controllo →). Qui si usa un processore RISC semplificato con istruzioni aritmetiche, load/store e salto condizionato (lo schema classico dei libri di testo, valido per MIPS e per un sottoinsieme di ARM).

Elementi del datapath

Elemento Tipo Funzione
PC registro indirizzo dell'istruzione
memoria istruzioni combinatoria in lettura dà l'istruzione all'indirizzo PC
sommatore PC + 4 combinatorio indirizzo dell'istruzione successiva
banco dei registri 2 letture, 1 scrittura (vedi Registri e contatoriRegistro parallelo a n bit con caricamento abilitato; banco dei registri con due porte di lettura e una di scrittura; registri a scorrimento; contatori sincroni e asincroni (ripple), contatore modulo N con esempio svolto.Registri e contatori →) operandi e risultati
estensione del segno combinatorio porta l'immediato da 16 (o 12) a 32 bit
ALU combinatoria (vedi Unità aritmetico-logica (ALU)Ruolo dell'ALU, ingressi, uscite e flag; ALU a 1 bit con AND, OR e sommatore selezionati da un multiplexer; estensione a 32 bit, sottrazione, confronto set-less-than e rilevazione dello zero e dell'overflow; tabella dei segnali di controllo; unità di moltiplicazione e virgola mobile.Unità aritmetico-logica (ALU) →) calcoli, indirizzi, confronti
memoria dati lettura/scrittura load e store
multiplexer combinatori scelgono tra sorgenti diverse

Percorso delle istruzioni

Aritmetica (add rd, rs, rt): PC → memoria istruzioni → lettura di rs e rt → ALU → scrittura in rd. Il PC diventa PC + 4.

Load (lw rt, off(rs)): lettura di rs → ALU calcola rs + estensione(off) → memoria dati in lettura → scrittura in rt. È l'istruzione più lunga: usa tutti gli elementi.

Store (sw rt, off(rs)): come la load fino all'indirizzo; il dato letto da rt va alla memoria dati in scrittura; nessuna scrittura nei registri.

Salto condizionato (beq rs, rt, off): l'ALU sottrae rs - rt; se l'uscita Zero vale 1 il PC diventa PC + 4 + (off · 4), altrimenti PC + 4. Serve un secondo sommatore per il bersaglio.

I multiplexer necessari:

  • secondo ingresso dell'ALU: registro rt oppure immediato esteso (ALUSrc);
  • dato da scrivere nel registro: uscita dell'ALU oppure dato letto dalla memoria (MemtoReg);
  • registro destinazione: rd o rt a seconda del formato (RegDst);
  • nuovo PC: PC + 4 oppure bersaglio del salto (PCSrc = Branch AND Zero).

Ciclo singolo

Ogni istruzione si esegue in un ciclo di clock. Il periodo deve bastare per l'istruzione più lenta. Con ritardi: memoria 200 ps, banco registri 100 ps, ALU 200 ps:

Istruzione Mem. istr. Lettura reg. ALU Mem. dati Scrittura reg. Totale
aritmetica 200 100 200 — 100 600 ps
load 200 100 200 200 100 800 ps
store 200 100 200 200 — 700 ps
salto cond. 200 100 200 — — 500 ps

Periodo = 800 ps (1,25 GHz) per tutte le istruzioni: un'aritmetica spreca 200 ps. Inoltre servono memorie istruzioni e dati separate e più sommatori, perché ogni unità si può usare una sola volta per ciclo.

Multiciclo

L'esecuzione si divide in passi di un ciclo ciascuno (prelievo, decodifica e lettura registri, esecuzione, accesso alla memoria, scrittura); ogni istruzione usa solo i passi che le servono. Il clock è dettato dal passo più lento (qui 200 ps) e:

  • aritmetica 4 cicli = 800 ps, load 5 cicli = 1000 ps, store 4, salto 3;
  • un'unica memoria e un'unica ALU possono servire più passi (con registri intermedi tra i passi);
  • l'unità di controllo diventa un automa a stati finiti.

Il miglioramento davvero efficace è la PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline →: gli stessi cinque passi, ma con istruzioni diverse in passi diversi contemporaneamente.

Errori tipici

  • Pensare che nel ciclo singolo le istruzioni semplici durino meno: il clock è unico, durano tutte quanto la più lenta.
  • Dimenticare che il bersaglio di un salto si calcola rispetto a PC + 4, non a PC.

Versione ripasso

La microarchitettura realizza l'ISA (Architettura e organizzazione di un calcolatoreDifferenza tra architettura (ciò che vede il programmatore) e organizzazione (come è realizzata); struttura e funzione; le quattro funzioni e i quattro componenti; macchina di von Neumann e IAS; generazioni tecnologiche e legge di Moore.Architettura e organizzazione di un calcolatore →): datapath (elementi che memorizzano e trasformano i dati) e unità di controllo (Unità di controlloCompiti dell'unità di controllo e micro-operazioni; segnali di controllo del datapath con tabella per le classi di istruzioni; controllo cablato (combinatorio o a stati finiti) e controllo microprogrammato (memoria di controllo, microistruzioni orizzontali e verticali); confronto.Unità di controllo →).

Elementi

PC; memoria istruzioni; sommatore PC + 4; banco dei registri (2 letture, 1 scrittura, Registri e contatoriRegistro parallelo a n bit con caricamento abilitato; banco dei registri con due porte di lettura e una di scrittura; registri a scorrimento; contatori sincroni e asincroni (ripple), contatore modulo N con esempio svolto.Registri e contatori →); estensione del segno (immediato a 32 bit); ALU (Unità aritmetico-logica (ALU)Ruolo dell'ALU, ingressi, uscite e flag; ALU a 1 bit con AND, OR e sommatore selezionati da un multiplexer; estensione a 32 bit, sottrazione, confronto set-less-than e rilevazione dello zero e dell'overflow; tabella dei segnali di controllo; unità di moltiplicazione e virgola mobile.Unità aritmetico-logica (ALU) →); memoria dati; multiplexer.

Percorsi

  • Aritmetica (add rd, rs, rt): PC →\to memoria istruzioni →\to lettura rs, rt →\to ALU →\to scrittura rd; PC ←\leftarrow PC + 4.
  • Load (lw rt, off(rs)): ALU calcola rs + estensione(off) →\to memoria dati →\to scrittura rt; usa tutti gli elementi.
  • Store (sw): come la load fino all'indirizzo; il dato di rt va in memoria, nessuna scrittura nei registri.
  • Salto (beq): l'ALU calcola rs - rt; se Zero = 1 il PC diventa PC + 4 + (off ⋅\cdot 4), altrimenti PC + 4 (secondo sommatore).
  • Multiplexer: secondo ingresso ALU (ALUSrc), dato da scrivere (MemtoReg), registro destinazione (RegDst), nuovo PC (PCSrc = Branch AND Zero).

Ciclo singolo

Un ciclo per istruzione, periodo = istruzione più lenta. Con memoria 200 ps, registri 100 ps, ALU 200 ps: aritmetica 600, load 800, store 700, salto 500 ps. Periodo 800 ps (1,25 GHz) per tutte; servono memorie istruzioni e dati separate e più sommatori.

Multiciclo

Passi da un ciclo (prelievo, decodifica, esecuzione, memoria, scrittura); clock dettato dal passo più lento (200 ps): aritmetica 4 cicli = 800 ps, load 5 = 1000 ps, store 4, salto 3. Unità di controllo = automa a stati finiti. Miglioramento efficace: PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline →.

Errori tipici: nel ciclo singolo le istruzioni semplici non durano meno; il bersaglio del salto è relativo a PC + 4, non a PC.

Lezioni in cui compare

Teoria collegata