Anteprima
Vedrai una selezione di 5 pagine su 17
DLX sequenziale e DLX Pipelined, Calcolatori elettronici Pag. 1 DLX sequenziale e DLX Pipelined, Calcolatori elettronici Pag. 2
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
DLX sequenziale e DLX Pipelined, Calcolatori elettronici Pag. 6
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
DLX sequenziale e DLX Pipelined, Calcolatori elettronici Pag. 11
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
DLX sequenziale e DLX Pipelined, Calcolatori elettronici Pag. 16
1 su 17
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

ALU

• Data Transfer

• Set

• Jump

• Branch

14) Quali sono le fasi del FETCH?

Ricordiamo che per nostra ipotesi un interrupt NON può interrompere un istruzione in corso!

Di conseguenza durante la fase di FETCH e dunque all’inizio di ogni nuova istruzione che viene

letta dalla memoria, viene anche verificato se è presente o meno un interrupt.

" Se l’interrupt è presente E può essere servito, ovvero Interrupt Enable (IEN) = true, si

esegue implicitamente l’istruzione di chiamata a procedura all’indirizzo 0, e si salva

l’indirizzo di ritorno nell’apposito registro Interrupt Address Register (IAR)

Inoltre si pone IEN = false, così da rendere l’elaboratore insensibile alle interruzioni.

Se arrivasse un’altra interruzione infatti il PC salvato in IAR verrebbe sovrascritto!

Fatto ciò si procede dall’inizio, però nel ramo sinistro in quanto IEN = false adesso!

" Se l’interrupt NON è presente O le interruzioni non sono abilitate, ovvero Interrupt Enable

(IEN) = false, si va a leggere in memoria la prossima istruzione da eseguire (il cui indirizzo

è in PC). Ovvero si procede normalmente!

!

IMPORTANTE Supporto HW nel DLX è per una sola interruzione. Per supportarne di più

bisogna agire via SW. ! Pagina!6

Calcolatori Elettronici – DLX sequenziale ! !

14 bis) Cosa ci sarà all’indirizzo 0 ?

Routine del SO che dovrà andare a vedere chi ha richiesto l’interrupt, scegliere il più prioritario e

servirlo!

15) Come si potrebbe ottimizzare il FETCH delle istruzioni nel DLX?

Per eseguire il FETCH dalla memoria è necessario recuperare il Program Counter (PC), inviarlo al

MAR, dal MAR inviarlo all’ingresso della memoria come indirizzo, attendere un certo tempo,

ottenere l’istruzione e inviarla all’unità di controllo.

Potrebbe dunque essere una buona idea collegare il PC agli ingressi della memoria attraverso un

MUX così da poter bypassare il MAR e risparmiare un ciclo di CK.

Il MUX si rivela necessario in quanto per gli accessi ai dati è necessario il passaggio attraverso il

MAR. Tale MUX sarà gestito dall’unità di controllo.

!

Osservazione importante Se effettuassimo la modifica di connettere con un MUX direttamente

#

PC alla memoria ci risparmieremmo un CK in quanto bypasseremmo il MAR: IR M [PC]

Bisogna però fare attenzione al fatto che l’introduzione del MUX dilaterebbe i tempi e questo

potrebbe comportare una diminuzione della frequenza di CK di tutto il sistema!

16) In un istruzione di Branch a cosa bisogna stare attenti?

Poiché PC + 4 viene fatto sempre prima dello svolgimento dell’istruzione si ha che l’offset del

branch dovrà essere relativo all’istruzione successiva al branch e non a quella corrente!

Dunque l’immediato inserito come offset dovrà essere relativo a PC +4 e dunque dovrà essere

Immediato - 4 !

17) Cosa si usa fare nei processori RISC per aumentarne la velocità?

Una cosa che si usa fare nei processori RISC è l’unità di controllo cablata su silicio. Questo

consente di andare molto velocemente!

L’unità di controllo cablata su silicio è una RSS nella quale in mezzo vi è una grande rete

combinatoria in grado di tenere un informazione dell’ordine di grandezza dei 40 Mbyte

17bis) Quali sono gli output e gli input dell’unità di controllo cablata su silicio?

Output

Segnali di controllo (Es. OE)

• Immediato a 26 bit (Considera anche il caso peggiore, in quanto solitamente l’immediato è a

• 16 bit)

RS1 (registro sorgente 1), RS2 (registro sorgente 2), RD (registro destinazione).

• Saranno 15 fili in quanto sono 15 bit!

Questi Output sono Input per il Datapath!

Input 32 bit di istruzione letti dalla memoria

• Segnali di INT e READY

• 12 bit di OPCODE (in quanto in alcune istruzioni ALU c’è un estensione del codice

• operativo di 6 bit)

3 bit che rientrano dal Datapath all’unità di controllo.

• Tali fili si rivelano essenziali in quanto permettono al Datapath di segnalare all’unità di

controllo se il risultato di un operazione è per esempio 0 oppure no.

Questi 3 fili sono dunque alla base dei salti condizionati! Se non ci fossero il calcolatore

farebbe una serie di operazioni cablata in quanto non sarebbe in grado di testare condizioni.

! Pagina!7

Calcolatori Elettronici – DLX sequenziale ! !

18) Quali sono i 5 passi in cui tutte le istruzioni DLX possono essere scomposte?

I passi sono: !

1. FETCH L’istruzione viene prelevata dalla memoria e posta in IR (Instruction Register)

!

2. DECODE L’istruzione in IR viene decodificata e nel frattempo vengono prelevati gli

operandi sorgente dal Register File e viene incrementato il PC (PC + 4)

!

3. EXECUTE Elaborazione aritmetica o logica mediante la ALU

!

4. MEMORY * Accesso alla memoria e, nel caso di BRANCH, aggiornamento del PC

!

5. WRITE-BACK Scrittura sul Register File (nel caso sia stato modificato il registro

destinazione)

* Ricorda: Solo due istruzioni prevedono accesso alla memoria e sono LOAD e STORE

18bis) Potrei invertire il passo 4 e il passo 5?

Non avrebbe senso in quanto se io facessi una LOAD , la LOAD carica dalla memoria e modifica

un registro! ! Pagina!8

Calcolatori Elettronici – DLX sequenziale ! !

Calcolatori Elettronici – DLX Pipelined

Descrizione DLX pipelined:

Nel DLX pipelined l’unità di controllo non sarà concentrata, ma sarà distribuita tra i vari stadi

della pipeline.

Al termine di ogni stadio vi è una “barra” che contiene dei registri edge triggered. Ognuno di questi

contiene le informazioni che è necessario trasferire da uno stadio a quello successivo.

Mano a mano che la pipeline procede, alcune informazioni ormai non più necessarie verranno

scartate. !

Stadio ID In questo stadio vengono estratti dal Register File due registri sorgente come

avveniva anche nel DLX sequenziale. In contemporanea viene effettuata l’estensione del segno e

la decodifica dell’istruzione.

La decodifica dell’istruzione viene effettuata da una rete combinatoria DEC molto veloce che deve

operare all’interno del ciclo di CK rispettando i tempi di SU del registro edge triggered a cui deve

inviare l’informazione al fine di evitare condizioni di metastabilità.

Se la rete di decodifica non fosse sufficientemente veloce bisognerebbe, infatti, inserire uno “stallo”

nella pipeline.

Tale rete di decodifica si occupa di prendere i primi 6 bit del codice operativo ed eventualmente i

bit di estensione dello stesso.

Importante: In tale stadio si fa tutto senza sapere minimamente di che istruzione stiamo parlando.

!

Stadio EX Tale stadio è il più critico da un punto di vista combinatorio tra i 5.

La cosa importante è che la ALU sia veloce così da avere una frequenza di CK più alta.

!

Stadio IF Nello stadio di IF vi è la cache del codice INSTR MEM da dove si andranno a

prelevare le istruzioni. Vi è poi PC, un registro edge triggered, che contiene il Program Counter.

Sempre in tale stadio vi è una ALU semplificata volta all’incremento del PC.

!

Stadio MEM Nello stadio di MEM vi è la cache dei dati DATA MEM.

In caso di salti incondizionati o BRANCH c’è una retroazione in questo stadio che dice al MUX

dello stadio di IF di non considerare il FETCH, ma di considerare l’indirizzo di destinazione del

salto, passato anch’esso da una retroazione della fase di MEM.

Questo indirizzo, andrà di fatto a finire in modo sincrono nel registro PC (ricordiamo che è edge

triggered ) ed è dunque importante osservare che, se il salto è preso, PC verrà aggiornato al

prossimo fronte del CK e dunque l’istruzione corrente deve essere resa “inoffensiva”. (NOP)

Lo stadio di MEM è uno stadio che potrebbe anche essere molto lento in quanto se la cache non

contiene il dato richiesto deve andarlo a recuperare in una cache di livello più basso o nel caso

peggiore dalla memoria. Ricordiamo che finché READY != 1 la memoria non è pronta!

Nel caso dunque di memoria !READY sarà dunque necessario bloccare i primi 4 stadi.

!

Stadio WB In tale stadio viene aggiornato il Register File.

Vi è un MUX finale che, in base al tipo di istruzione, decide se ad esempio, inviare o meno dati al

RF. Nel caso in cui i dati debbano essere inviati, allora l’unità di controllo dovrà abilitare il WE del

RF e il registro destinazione verrà identificato grazie ai 5 bit che mi sono portato lungo la pipeline.

! !

DLX$Pipelined$

! !

1) Che cosa intendiamo con pipelining?

Il pipelining è oggi la principale tecnica di base impiegata per rendere “veloce” una CPU e viene

utilizzata su tutti i processori moderni.

Nel nostro caso osserviamo che il DLX pipeline è molto più efficiente rispetto al DLX sequenziale.

1bis) È possibile avere più istruzioni per ciclo di clock?

Avere più istruzioni per ciclo di clock con una singola pipeline non è possibile! Ci vogliono più

pipeline!

2) Cosa intendiamo con latenza? E con throughput?

!

Latenza In generale è il tempo che intercorre fra l’inizio e il completamento di un’attività A.

!

Throughput Frequenza con cui vengono completate le attività.

Per quel che riguarda il nostro ambito l’attività è un istruzione.

3) Quali sono i maggiori problemi del DLX pipelined ?

I problemi maggiori del DLX pipelined sono:

Salti, in particolare BRANCH

• ALEE, ovvero dipendenze fra i dati

4) Perché è necessario introdurre un Adder nello stadio di Instruction FETCH (IF) ?

È necessario introdurre un Adder nello stadio di IF per evitare conflitti sul bus.

Infatti vi sono due stadi che necessitano di un’unità di calcolo: IF e EX.

Ciò comporterebbe che ad ogni ciclo di CK ci sarebbe un conflitto per ottenere la risorsa ALU!

IF vuole infatti fare PC+4, mentre EX vuole poter eseguire operazioni aritmetico-logiche.

Per risolvere il conflitto dobbiamo duplicare la risorsa ALU e in particolare aggiungere una ALU

semplificata nella fase di FETCH, e inserire una ALU ad hoc nella fase di EX.

5) Nella fase di IF sarebbe possibile sostituire l’adder che esegue il PC + 4 con un contatore?

SI, sarebbe possibile. L’adder che esegue PC + 4 potrebbe essere sostituito da un contatore in

quanto fare +4 sapendo che le istruzioni sono lunghe 4 byte (32 bit) è come fare +1 usando 30 bit!

Infatti il FETCH viene fatto a indirizzi allineati e

Dettagli
Publisher
A.A. 2013-2014
17 pagine
5 download
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher pet91 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 Bologna o del prof Mattoccia Stefano.