Anteprima
Vedrai una selezione di 10 pagine su 168
Calcolatori elettronici - Appunti Pag. 1 Calcolatori elettronici - Appunti Pag. 2
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 6
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 11
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 16
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 21
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 26
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 31
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 36
Anteprima di 10 pagg. su 168.
Scarica il documento per vederlo tutto.
Calcolatori elettronici - Appunti Pag. 41
1 su 168
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

PRIMO STADIO: INSTRUCTION FETCH

Operazione di fetch identica per qualunque istruzione venga eseguita

➢ PC è aggiornato ad ogni ciclo di clock per poter caricare un’istruzione ad ogni ciclo

➢ Informazioni in IF/ID (registro interstadio tra fetch e decode):

➢ Istruzione da decodificare ed eseguire

o PC+4 (può essere utilizzato per il calcolo dell’indirizzo nel caso della beq)

o

Il primo stadio è responsabile del fetch dell’istruzione, che contiene una memoria dedicata solo

alle istruzioni.

Lo stadio riceve i 32 bit usati come indirizzo e produce l’istruzione che dovrà essere scritta nel

registro interstadio successivo.

I 32 bit verranno sommati a 4, valore che serve per aggiornare il PC.

Si ha il parallelo fra il sommatore e la memoria: si calcola contemporaneamente l’indirizzo

dell’istruzione successiva e si accede alla memoria per quella corrente.

Sarà necessario un MUX con il quale possiamo decidere se far arrivare al PC l’indirizzo di PC + 4

(0) oppure un altro valore, utile nel caso dei salti (1) che vedremo in seguito.

Ogni stadio devono produrre i dati da utilizzare negli stadi successivi. Ad esempio, nel caso della beq, lo stadio di fetch

deve fornire a quello successivo anche il valore di PC+4 che farà riferimento non alla beq ma all’istruzione

immediatamente dopo di questa, ossia che è in esecuzione nello stadio precedente e a partire da tale indirizzo verrà

calcolato l’indirizzo di arrivo della beq. 113

Matilde Simonini Ingegneria Informatica anno 2021/2022

SECONDO STADIO: INSTRUCTION DECODE

Operazione di decode identica per qualunque istruzione venga eseguita

➢ Informazioni in IF/ID (input):

➢ Istruzione da decodificare ed eseguire

o PC+4 (può essere utilizzato per il calcolo dell’indirizzo nel caso della beq)

o

Informazioni prodotte in ID/EX (output):

➢ Valori registri rs e rt letti da Register File

o numero dei registri rt e rd (possibili destinazioni)

o Offset con estensione del segno (cfr. lw, sw, beq)

o beg

per

PC+4 (direttamente da IF/ID) che può servire in seguito

o

In questo stadio abbiamo l’istruzione e dobbiamo fare il prelievo degli operandi.

Si decodifica l’istruzione per comprendere ad esempio quali saranno i segnali di controllo

relativi.

Durante questo secondo stadio, le unità che sono presenti non sono comandate dall’unità di

controllo e quindi devono agire indipendentemente dall’istruzione stessa, perché altrimenti

violeremmo il vincolo che ci siamo imposti.

Ad esempio, nel caso della Tipo-R dovremmo sommare i valori di rs e rt (le 2 frecce in uscita dai registri), operazione

che non può essere fatta nello stesso stadio a causa dei vincoli posti e di conseguenza andranno salvati nel registro

interstadio. Oltre a questo, servirà conoscere in che posizione salvare il risultato, ossia il campo rd che viene salvato nel

registro interstadio.

Nel caso di lw e sw avremo bisogno anche di una costante di 16 bit, che verranno presi dall’istruzione e messi in

ingresso all’unità di estensione del segno per passare da 16 a 32 bit → questo implica che nel registro interstadio

abbiamo posto anche i 6 bit relativi al campo funct.

Fra le linee in basso portiamo anche il campo rt, ossia i 5 bit che indicano sostanzialmente l’indirizzo di rt (e non il suo

valore, che viene salvato nei registri).

Nel caso della sw è necessario prendere il valore d rt per poi scriverlo dentro la memoria all’indirizzo che abbiamo

appena posto nel registro intermedio.

Nel caso della beq: deve confrontare i valori di rs e rt che ha già a disposizione ed eventualmente saltare all’indirizzo

dato da (PC + 4) + (const * 4) → PC +4 lo abbiamo già in entrata, ossia è già presente nel registro intermedio precedente

mentre per quanto riguarda la costante * 4 viene calcolata attraverso il sign extended.

TERZO STADIO: EXECUTE

Utilizzo della ALU + determinazione del registro da usare come (eventuale)

➢ destinazione: ovviamente variano a seconda dell’istruzione ben

Informazioni in ID/EX (input):

➢ valori registri rs e rt letti da Register File

o numero dei registri rt e rd (possibili destinazioni)

o offset con estensione del segno (cfr. lw, sw, beq)

o PC+4 (direttamente da IF/ID)

o

Informazioni in EX/MEM (output):

➢ indirizzo utilizzato dal salto condizionato (beq)

o risultato della ALU (per lw e sw è l’indirizzo!) e zero (verrà utilizzato dalla beq)

o rt (se l’istruzione è sw, questo dato verrà scritto in memoria!)

o numero del registro destinazione, che ora può essere determinato (rd per

o TIPO-R, rt per lw)

In questo stadio, a differenza di quello precedente, possiamo avere dei segnali di controllo

che dipendono dall’istruzione stessa. 114

Matilde Simonini Ingegneria Informatica anno 2021/2022

Nel caso delle Tipo-R: deve calcolare un’operazione determinata dal campo funct su rt e rs.

Utilizziamo l’unità di controllo ALUControl, comandata dal segnale di controllo ALUOp, che riceve in ingresso i 6 bit del

capo funct. Attraverso il segnale di controllo è possibile stabilire se fare una somma (add), una sottrazione (sub) …

Il risultato viene scritto nel registro interstadio successivo.

Le istruzioni che utilizzano un registro di destinazione sono le Tipo-R e lw, che scrivono in rt o rd → possiamo mettere

un MUX che riceve in ingresso rt e rd e che seleziona il numero del registro destinazione ed è comandato da un segnale

di controllo RegDst (1 o 0).

Nel caso della lw sarà necessaria la somma fra rs e la costante, per trovare l’indirizzo, per poi usarlo per l’accesso in

memoria che verrà poi scritto in rt.

La costante ce l’abbiamo già in ingresso e possiamo utilizzare la ALU per fare la somma. Il MUX appena prima della ALU

consente di scegliere rt oppure la costante da 16 bit estesa di segno (offset), con segnale di controllo ALUSrc.

ALUScr = 1 nel caso della lw e ALUOp = 0 → in questo modo, in uscita dalla ALU si produce l’indirizzo al quale leggere in

memoria, che verrà salvato nel registro interstadio.

Per quanto riguarda la sw, deve fare l’operazione duale alla lw: deve prendere il valore di rt e scriverlo dentro la

memoria nello stadio successivo. Per farlo necessita del valore di rt, che si trova in ingresso → attraverso una linea

salviamo e portiamo avanti il valore nel registro interstadio successivo.

Nel caso della beq: deve confrontare rs e rt e per farlo utilizza la ALU per fare la sottrazione fra i due valori. Quello che

interessa è il bit di 0 che indica se saltare oppure no, valore che viene portato avanti.

Nel caso in cui si debba saltare, l’indirizzo è dato da PC + 4 + const * 4 (o shiftLeft di 2 dell’offset). Per questo viene

utilizzata un’altra ALU che calcola questo indirizzo.

QUARTO STADIO: MEMORY ACCESS

Utilizzo della memoria (lettura e scrittura) ed eventuale aggiornamento PC (beq con

➢ salto da eseguire)

Informazioni in EX/MEM (input):

➢ indirizzo utilizzato dal salto condizionato (beq)

o risultato della ALU (per lw e sw è l’indirizzo!) e zero

o rt

o numero del registro destinazione

o

Informazioni in MEM/WB (output):

➢ dato letto dalla memoria (per lw)

o risultato calcolo ALU effettuato nello stadio precedente riportato da EX/MEM

o (per TIPO-R)

# registro destinazione riportato da EX/MEM (per lw e TIPO-R)

o

Nel caso della sw: ha a disposizione il valore di rt che deve andare a scrivere nella memoria

che riceve come indirizzo il valore dato da rs + const in corrispondenza del quale deve

venire scritto il valore di rt.

Anche la lw deve leggere il valore di memoria, per andare a scrivere il valore corrispondente in rt. Dati i vincoli, il valore

va scritto nel registro successivo e quindi in questo stadio verrà portato avanti il valore #dest.

Le Tipo-R devono poter scrivere nel RF. Hanno a disposizione del risultato calcolato dalla ALU e anche l’indirizzo al

quale scriverlo. Siccome questo stadio non è dedicato alla scrittura ma solo all’accesso alla memoria, si ha che la Tipo-R

attraversa lo stadio senza fare nulla → si lixmita a portare avanti i dati che le serviranno successivamente (ALUOut e

indirizzo).

Questo perché abbiamo previsto che lo stadio di scrittura fosse l’ultimo.

Per beq (forma: rs, rt, destinazione) abbiamo già a disposizione della condizione (vera o falsa). Se il risultato è 1

dobbiamo poter sostituire PC + 4 con l’indirizzo di destinazione → si effettua la scrittura nel PC dell’indirizzo di

destinazione per effettuare il salto.

Se il valore fosse 0 allora non si salterebbe e si continuerebbe con PC + 4.

(le linee che vanno verso sinistra vanno in entrata al MUX che precede il PC).

115

Matilde Simonini Ingegneria Informatica anno 2021/2022

Si utilizza una porta di AND che consente di annullare il bit di 0 attraverso il segnale di controllo Branch → nel caso

della beq verrà posto a 1 così che nel caso in cui il valore di zero è 1 si possa saltare. Nel caso delle altre istruzioni il

valore di Branch sarà posto a 0 in modo da non saltare.

NB: nel caso del salto si va a scrivere nel PC il valore al quale bisogna saltare mentre sono già in esecuzione le istruzioni

che dovrebbero essere saltate e questo risulta un problema della pipeline!! → problema della criticità sui salti.

QUINTO STADIO: WRITE BACK

Scrittura del risultato nel register file

➢ Register File “in scrittura” fa parte di questo stadio!

informazioni in MEM/WB (input):

➢ dato letto dalla memoria (per lw)

o risultato calcolo ALU effettuato nello stadio precedente riportato da EX/MEM (per

o TIPO-R)

# registro destinazione riportato da EX/MEM (per lw e TIPO-R)

o

Operazione eseguita: se l’istruzione è lw o Tipo-R, scrive nel registro destinazione (#dest) il valore

calcolato dalla ALU (per Tipo-R) o letto dalla memoria (per lw).

deve essere utilizzato il segnale RegWrite ⇒ non occorre un registro interstadio di output: il

risultato è scritto nel register file!

Le uniche due istruzioni che devono ancora fare qualcosa in questo stadio sono la lw e la Tipo-R:

scrivere il dato letto dalla memoria (lw) oppure scrivere il dato prodotto dalla ALU (Tipo-R) entrambi nel registro

destinazione.

Per selezionare il valore che si deve utilizzare viene sfruttato un MUX comandato dal segnale di controllo MemToReg.

Le frecce uscenti verso sinistra vanno ad entrare nel RF presente al secondo stadio (#dest indica il registro

destinazione).

Datapath complessivo 116

Matilde Simonini Ingegneria Informatica anno 2021/2022

PIPELINE: IL CONTROLLO

NB: come visto, al datapath arrivano segnali di controllo, che dovranno essere imposta

Dettagli
A.A. 2021-2022
168 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher matilde simonini di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Brescia o del prof Giacomin Massimiliano.