Che materia stai cercando?

DLX sequenziale e DLX Pipelined, Calcolatori elettronici

Il seguente è il Terzo di una serie di appunti dal formato domanda-risposta del corso di Calcolatori Elettronici tenuto dal professor Mattoccia dell'Università di Bologna.
Nonostante tale riassunto sia stato fatto nell'anno accademico 2013-2014, ritengo che esso sia ancora attuale in quanto gli argomenti del corso non sono cambiati.
Ho fatto e utilizzato personalmente questi... Vedi di più

Esame di Calcolatori elettronici docente Prof. S. Mattoccia

Anteprima

ESTRATTO DOCUMENTO

1) Quali tipologie di istruzioni ha il DLX?

Il DLX ha 3 tipologie di istruzioni:

!

1. I (Immediato) L’operando immediato coinvolto è di 16 bit

!

2. R (Registro) Vi è un campo di 11 bit usato per estendere il codice operativo e con il

quale possono essere specificate altre cose

!

3. J (Jump) L’offset è a 26 bit e rappresenta lo scostamento rispetto al PC. Tali 26 bit sono

con segno e dunque permettono salti di 32K avanti o indietro.

La lunghezza delle istruzioni è fissa e vale 32 bit. Tali istruzioni sono allineate così da permettere

in un unico ciclo di bus la lettura di una intera istruzione! (bus a 32 bit!)

!

Indipendentemente dal tipo di istruzione il formato è fisso Abbiamo campi di dimensioni fisse

nell’ambito di istruzioni diverse

1bis) Perché non posso avere un immediato a 32 bit? Perché l’istruzione sarebbe tutto

immediato! Non avrei neanche lo spazio per il codice operativo!

2) Qual è l’unica modalità di indirizzamento prevista dal DLX?

L’unica modalità di indirizzamento prevista dal DLX è registro + offset, ovvero la possibilità di

accedere all’indirizzo che ottieni sommando un registro con un immediato.

Per avere accessi più articolati si possono effettuare operazioni il cui risultato verrà inserito nel

registro considerato per l’indirizzamento. In ultima istanza però si deve utilizzare la notazione

registro + offset!

3) Quanti registri ha il DLX? Come vengono definiti?

Nel DLX vi sono 32 registri da 32 bit di uso generale: R0 … R31 con R0 = 0 (ovvero 32 zeri).

Tali registri sono completamente ortogonali, ovvero un’operazione può essere fatta tra registri

qualsiasi e il risultato può essere messo anch’esso in un registro qualsiasi. Vi è completa libertà, NO

vincoli! (La intel invece ha vincoli! )

4) Come funziona un’istruzione JL (Jump and Link)? E nel caso di funzioni innestate?

Le istruzioni JL corrispondono a dei salti con ritorno. In particolare l’indirizzo di ritorno viene

salvato in R31.

Questo comporta un problema nel caso di funzioni innestate in quanto R31 verrebbe sovrascritto e

dunque il ritorno sarebbe compromesso. In tal caso si dovrà fare in modo di avere una sorta di stack,

prelevare R31 e salvarlo in memoria al fine di non perderlo!

Ricordiamo che nel DLX non ci sono istruzioni specifiche per la gestione dello stack, ma deve

essere implementato via SW. ! Pagina!2

Calcolatori Elettronici – DLX sequenziale ! !

5) Come vengono settate le condizioni nel DLX?

Nel DLX non c’è un registro di FLAG settato dalle istruzioni ALU. Le condizioni vengono settate

esplicitamente nei registri con il gruppo di istruzioni SET condition IN REGISTER (SCN).

6) Quale istruzione tipicamente segue una SET CONDITION? Un branch, ovvero un salto

condizionato!

7) Quali sono i vantaggi che comporta un’architettura semplice come quella del DLX?

La semplicità dell’architettura del DLX comporta un utilizzo inferiore del silicio, il quale può

dunque essere utilizzato per:

Un numero maggiore di registri (32)

• Cache

Incremento così la velocità in quanto limito gli accessi in memoria (collo di bottiglia per la velocità)

8) Come può essere strutturata una CPU?

La struttura di una CPU, come tutte le reti logiche sincrone che elaborano dati, può essere

strutturata in due blocchi:

" !

Datapath Contiene tutte le unità di elaborazione ed i registri necessari per

l’esecuzione delle istruzioni della CPU.

Ogni istruzione appartenente all’InstructionSet è eseguita mediante una successione di

operazioni elementari, dette micro - operazioni.

Una micro - operazione è un’operazione eseguita all’interno del Datapath in un ciclo di

clock (Es. trasferimento di un dato da un registro ad un altro registro, elaborazione ALU)

" !

Unità di Controllo E’ una RSS che in ogni ciclo di clock invia un ben preciso insieme

di segnali di controllo al DATAPATH al fine di specificare l’esecuzione di una determinata

micro-operazione.

I.O.W = L’unità di controllo legge un istruzione dalla memoria, la decodifica e imposta una

sequenza di micro - operazioni per realizzare quella particolare istruzione.

Le istruzioni vengono eseguite dal Datapath, il quale può servirsi della memoria per reperire dati o

per scrivere risultati.

Importante: La CPU per funzionare, ha bisogno della memoria esterna su cui risiedono il

programma e i dati.

8bis) Quando il Datapath deve accedere in memoria? Il Datapath deve accedere in memoria

SOLO se c’è un istruzione di LOAD o di STORE!

! Pagina!3

Calcolatori Elettronici – DLX sequenziale ! !

9) Quali registri sono presenti nella struttura del DLX (esecuzione sequenziale) ? Quali sono

noti al programmatore?

I registri sono:

!

Register File Contiene i 32 registri a 32 bit.

Osserviamo che dal Register File escono 2 porte di uscita in quanto io vorrei poter leggere due

registri alla volta. Esistono infatti certe istruzioni che prevedono 2 registri sorgente. (accelero i

tempi)

Sarà l’unità di controllo, che ha letto e decodificato l’istruzione, a dire al register file quali registri

sono coinvolti nelle operazioni.

!

Registri A,B,C Registri di buffer temporanei usati per accelerare le operazioni.

Es. Se io dovessi scrivere nel register file dovrei anche dire a che indirizzo voglio scrivere. Tale

indirizzo dovrà però anche essere decodificato al fine di individuare un registro tra quelli

disponibili e ciò richiederà del tempo. Per accelerare potrei scrivere in C senza dare l’indirizzo e

nel CK successivo potrebbe avvenire la decodifica dell’indirizzo e la scrittura nel register file.

Impiego due cicli di clock, ma posso lavorare ad una frequenza maggiore.

!

Registro PC Contiene il PC a 32 bit

!

Registro TEMP Registro di deposito temporaneo dei risultati

!

Registro IAR (Interrupt Address Register ) Registro che contiene l’indirizzo di ritorno se si

verifica un interrupt. !

Registro MAR (Memory Address Register ) Registro ch contiene l’indirizzo del dato da

scrivere o leggere in memoria.

In altre parole, se io voglio leggere o scrivere qualcosa in memoria devo specificare l’indirizzo

attraverso il MAR il quale è collegato direttamente con la memoria.

!

Registro MDR (Memory Data Register) Registro di transito temporaneo dei dati da e per la

memoria

Gli unici registri noti al programmatore sono quelli del Register file.

Gli altri non sono visibili, ma sono di utilità interna.

10) Tra le funzioni della ALU vi sono anche funzioni che hanno uscita gli operatori stessi

oppure 0 o 1. A cosa servono?

I flag di uscita vengono memorizzati?

Avere come uscita gli operatori stessi è utile per far transitare valori tra registri.

Avere come uscita 0 o 1 è utile perché potrebbe servirmi per una set condition.

I flag di uscita non vengono memorizzati, ma possono essere testati durante le operazioni dell’unità

di controllo. ! Pagina!4

Calcolatori Elettronici – DLX sequenziale ! !

11) Nel trasferimento dei dati sul Datapath che tempi bisogna tenere in considerazione?

Al fine di valutare la massima frequenza a cui è possibile far funzionare il Datapath è importante

conoscere le seguenti temporizzazioni:

! !

1. (max) Ritardo massimo tra il fronte positivo del clock e l’istante in cui i segnali di

!

controllo generati dall’unità di controllo sono validi

! !

2. (max) Ritardo massimo tra l’arrivo del segnale OE e l’istante in cui i dati del

!"

registro sono disponibili sul bus

! !

3. (max) Ritardo massimo introdotto dalla ALU

!"#

! !

4. (min) Tempo di set-up minimo dei registri (requisito minimo per il corretto

!"

campionamento da parte dei registri)

La massima frequenza di funzionamento del Datapath si calcola come segue:

! > ! ! !"# + ! ! !"# + ! ! !"# + ! ! !"#

!" ! !" !"# !"

!

! !"# = !!

!" !

!"

12) Come avviene il trasferimento tra registri? (consigliato tenere sotto immagine del DLX)

Premesse:

1. I bus S1 ed S2 sono multiplexati (tri-state) con parallelismo 32 bit

2. I registri:

a. Campionano sul fronte positivo del clock

b. Hanno due porte di uscita O1 e O2 per i due bus (o per i registri buffer A e B) e

dispongono di tre ingressi di controllo:

i. Un ingresso di Write Enable (WE*)

ii. Un ingresso di Output Enable per ogni porta di uscita, ovvero uno per ogni

bus. In questo caso poiché i bus sono due (S1 e S2), ogni registro avrà OE1*

e OE2* ! !

Ipotizziamo ora di voler scrivere il contenuto di un registro in un registro

!"# !"

Si avrà che l’unità di controllo invierà il segnale di controllo OE2 per abilitare l’uscita O2 del

!

registro e dunque connetterla con il bus S2.

!"# !

I dati contenuti in transitano dunque sul bus S2 e, attraverso la ALU, la quale non dovrà fare

!"# !

altro che lasciare invariato ciò che l’attraversa, arriveranno in ingresso a .

!"

!

In questo ciclo di CK il segnale WE del registro sarà abilitato e dunque avverrà la scrittura

!"

desiderata!

In questa ottica è più semplice pensare ai tempi del Datapath: !

" L’unità di controllo genera i segnali di controllo OE2 per il registro e WE per il

!"#

! !

registro . Prima di essere campionati dovranno essere stabili! (max)

!" !

!

" Arriva il segnale OE2, i dati contenuti in vengono immessi sul bus S2. Ma ci vorrà un

!"# !

certo tempo prima che essi siano tutti disponibili sul bus! (max)

!"

" I dati sul bus S2 dovranno attraversare la ALU che introdurrà senza dubbio un ritardo, anche

!

se minimo! (max)

!"# !

" Infine i dati che hanno attraversato la ALU dovranno essere campionati dal registro che

!"

!

però avrà un determinato tempo di campionamento da rispettare! (min)

!"

Osservazione: Se a S1 fosse collegato qualcuno non accadrebbe nulla. È sufficiente dire alla ALU

di ignorare quello che arriva da S1. ! Pagina!5

Calcolatori Elettronici – DLX sequenziale ! !

13) Parlare del diagramma degli stati dell’unità di controllo o Controller.

Quali sono gli stadi comuni a tutte le istruzioni?

Il controller, come tutte le reti sequenziali sincrone, permane in un determinato stato per un ciclo di

CK e successivamente transita / può transitare in un altro stato in corrispondenza dei fronti.

Possiamo dunque dire che ad ogni stato corrisponde un ciclo di clock.

Le micro - operazioni che devono essere eseguite in quel ciclo di clock sono specificate in

linguaggio RTL nel diagramma degli stati che descrive il funzionamento del Controller all’interno

degli stati.

Gli stadi comuni a tutte le istruzioni sono: #

1. Inserimento del Program Counter (PC) all’interno del MAR ( MAR PC)

2. Lettura in memoria all’indirizzo specificato nel MAR e inserimento dell’istruzione letta

#

nell’Istruction Register (IR) ( IR M[MAR] )

Questo stadio potrebbe richiedere anche più di un ciclo di clock in quanto la memoria

tipicamente è lenta rispetto al processore. Fino a che non è Ready il processore dovrà

attendere.

3. Incremento del PC (PC+4) utilizzando la ALU e contemporaneamente prelievo degli

operandi sorgente dal Register File (dato il formato dell’istruzione l’unità di controllo sa

# #

dove prenderli) ( A RS1 B RS2)

Tali operazioni vengono fatte per una questione di ottimizzazione e velocità, in quanto gli

operandi sorgente potrebbero non servire, oppure il PC a cui si dovrà fare il FETCH

potrebbe essere un altro (es. JUMP).

In questo tempo si effettua anche la decodifica dell’istruzione (Instruction DECODE).

Una volta decodificata l’istruzione si procederà all’esecuzione di un operazione che a seconda dei

casi sarà di:

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 ! !


ACQUISTATO

5 volte

PAGINE

17

PESO

1.40 MB

AUTORE

pet91

PUBBLICATO

+1 anno fa


DESCRIZIONE APPUNTO

Il seguente è il Terzo di una serie di appunti dal formato domanda-risposta del corso di Calcolatori Elettronici tenuto dal professor Mattoccia dell'Università di Bologna.
Nonostante tale riassunto sia stato fatto nell'anno accademico 2013-2014, ritengo che esso sia ancora attuale in quanto gli argomenti del corso non sono cambiati.
Ho fatto e utilizzato personalmente questi riassunti per superare questo esame ottenendo un ottimo risultato. Le domande in essi scritte, infatti anticipano ciò che il professore potrà chiedere all'esame.
Inoltre, essendo l'esame di calcolatori elettronici dell'università di Bologna conosciuto per essere molto complesso in quanto i professori sono molto esigenti, questi riassunti credo potranno adeguarsi anche per chi cerca una buona preparazione sui calcolatori elettronici.


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
Università: Bologna - Unibo
A.A.: 2014-2015

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à Bologna - Unibo o del prof Mattoccia Stefano.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Calcolatori elettronici

Introduzione, Calcolatori elettronici
Appunto
mapping e decodifica Linguaggio macchina IO, Calcolatori elettronici
Appunto
ARM, Calcolatori Elettronici
Appunto
Domande di Teoria di Calcolatori Elettronici
Appunto