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

Definizione (percorso delle istruzioni nel datapath). 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.

Esempio. Per beq rs, rt, off con off=3 e Zero =1=1, il PC diventa PC+4+3⋅4=PC+16\text{PC}+4+3\cdot4=\text{PC}+16.

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

Formula (periodo di clock del 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.

Esempio. La load impiega 200+100+200+200+100=800200+100+200+200+100=800 ps, quindi f=1/800 ps=1,25f=1/800\ \mathrm{ps}=1{,}25 GHz per tutte le istruzioni.

Multiciclo

Definizione (esecuzione 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.

Esempio. Con clock di 200200 ps, una aritmetica da 44 cicli dura 4⋅200=8004\cdot200=800 ps e una load da 55 cicli 10001000 ps.

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.

Teoria collegata