Anteprima
Vedrai una selezione di 14 pagine su 65
Architettura dei Processori (Parte 2 della Raccolta) Pag. 1 Architettura dei Processori (Parte 2 della Raccolta) Pag. 2
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 6
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 11
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 16
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 21
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 26
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 31
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 36
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 41
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 46
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 51
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 56
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Architettura dei Processori (Parte 2 della Raccolta) Pag. 61
1 su 65
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

I primi 15 bit (dopo i 6 dell’OP) dell’istruzione rappresentano gli indirizzi dei due registri sorgente

5

2

(operandi) e del registro destinazione (sono 5 bit perché con essi è possibile indirizzare tutti e =

32 registri del Register File). Tali indirizzi vanno in ingresso al Register File, e dopo un certo ritardo

in uscita escono i valori dei due registri sorgente che, vanno in ingresso all’ALU la quale effettua

l’operazione indicata dal segnale di controllo ALU control inviatogli dall’unità di controllo. Dopo

un certo ritardo dovuto alla parte combinatoria dell’ALU, viene fornito in output il risultato

dell’operazione il quale viene memorizzato nell’ingresso Write Data del Register File. Occorre un

segnale di abilitazione alla scrittura nel Register File chiamato RegWrite che l’unità di controllo

pone a 1 quando l’istruzione fornisce un risultato da memorizzare. Gli ingressi ovviamente non

cambieranno fino alla fine del ciclo. Si costruisce adesso il pezzo di datapath relativo all’executing

delle istruzioni load e store (formato I):

Adesso è presente anche la memoria dati; il formato d’istruzione I prevede l’OP, i 2 registri, ed un

valore costante chiamato immediato. Read Addr1 e read Addr2 rappresentano i due indirizzi dai

quali andare a leggere/scrivere. I restanti 16 bit indicano lo spiazzamento che occorre sommare

alla base, cioè al valore del contenuto del registro Read Data1, utilizzando l’ALU posta subito dopo

il Register File; il valore della base è però a 32 bit per cui occorre estendere in segno lo

spiazzamento a 32 bit, il risultato finale dell’ALU sarà l’indirizzo per accedere ad una locazione

della Data Memory, tenendo presente che:

 Nel caso di uno store il register file seleziona nell’uscita Read Data2 il valore del registro da

scrivere nella memoria dati (quello richiesto dall’ingresso Read Addr2), e tale valore viene

15

scritto in memoria mediante l’ingresso Write Data. Per fare ciò il segnale di controllo

MemWrite deve essere settato a 1. In questo caso i 10 bit dell’istruzione successivi all’OP

vengono utilizzati per accedere alle locazioni Read Addr1 e Read Adrd2.

 Nel caso di una load viene settato ad 1 il segnale MemRead dall’unità di controllo, viene

effettuato un accesso nella memoria dati in lettura, accedendo alla locazione di memoria

specificata dall’uscita dell’ALU, ed il valore letto dalla memoria viene scritto nel registro

mediante l’ingresso WriteData. In questo caso i 10 bit dell’istruzione successivi all’OP

vengono utilizzati per accedere alle locazioni Read Addr1 e Write Addr.

Adesso si costruisce il pezzo di Datapath relativo all’executing delle istruzioni branch (Formato I):

Il branch è l’operazione di salto condizionato: in ingresso al Register File vanno gli indirizzi dei due

registri di cui si vuole confrontare il valore, e dopo un certo ritardo il register file tira fuori il valore

di tali registri, che entrano in ingresso all’ALU. Quest’ultima effettua una sottrazione tra i due

operandi per confrontarli, così che se i due operandi sono uguali, il flag zero dell’ALU è pari ad 1;

questo flag sarà inviato ad una logica di controllo che dovrà capire se eseguire la prossima

istruzione (cioè PC + 4) oppure quella riportata nella destinazione di salto (PC + 4 + Spiazzamento).

Nel frattempo l’indirizzo di salto viene calcolato in parallelo prendendo i 16 bit dello spiazzamento

estendendoli a 32 e poi shiftandoli a sinistra di 2 bit per allineare le parole, ed infine sommando il

risultato di questa operazione con PC + 4. Cosi dal confronto degli operandi ((cioè dal flag zero) si

decide se saltare all’indirizzo di destinazione oppure proseguire normalmente alla prossima

istruzione. Il motivo di questo shift a sinistra di 2 bit è che in tal modo il secondo addendo

dell’adder terminerà con due zeri, ma anche il primo addendo PC + 4 termina con due zeri perché

si vuole accedere sempre al primo byte dell’indirizzo dell’istruzione, e la somma fra questi due

addendi sarà tale per cui il risultato termina sempre con due zeri, per cui anche in caso di salto si

accederà sempre al primo byte dell’indirizzo dell’istruzione. Infine si costruisce il pezzo di Datapath

relativo all’executing delle istruzioni Jump (Formato J): 16

Jump è l’operazione di salto incondizionato, ed è un’istruzione che ha formato J; la caratteristica

principale delle istruzioni di formato J è che tolti i 6 bit dell’OP, queste ultime contengono soltanto

i 26 bit di offset che compongono una parte dell’indirizzo a cui saltare. Grazie ad una operazione di

shift a sinistra questi 26 bit vengono portati a 28 (aggiungendo 00 alle ultime due posizioni per

allineare la parola), e poi ad essi vengono affiancati i 4 bit più significativi del PC + 4, cioè della

prossima istruzione da eseguire. I 32 bit ottenuti diventano l’indirizzo a cui saltare. Mettendo

insieme tutti questi pezzi si ottiene un datapath completo che esegue contemporaneamente tutte

queste istruzioni in un unico ciclo di clock. Basta mettere una serie di MUX le cui linee di selezione

sono controllate dall’unità di controllo: 17

 MUX 1: Nel caso di istruzioni beq o aritmetiche-logiche (formato R), l’uscita Read Data2

(contenuto del secondo registro) del Register File entra nell’ALU. Invece nel caso di

istruzioni Load o Store, nella ALU entra l’immediato esteso a 32 bit. Il segnale che gestisce

questo MUX è l’ALUscr (o ALU_opB), che vale 0 quando il secondo operando dell’ALU è il

Read Data 2, oppure vale 1 quando il secondo operato è l’immediato esteso a 32 bit.

 MUX 2: Nel caso di una istruzione R l’uscita dell’ALU entra nel Register File e viene scritto in

Write Data, ma non è così nel caso di istruzioni Load perché in tal caso nel Write Data del

register File viene scritto il dato letto dalla memoria dati. Il segnale di controllo si chiama

MemToReg, e vale 0 in caso di scrittura in WriteData dell’output dell’ALU, altrimenti vale 1

in caso di scrittura del contenuto letto da memoria.

 MUX 3: Serve per fondere nel datapath anche l’istruzione branch. Tramite il segnale di

controllo PCSrc generato dall AND fra il flag zero ed il segnale Branch dell’Unità di

Controllo, viene deciso se il prossimo indirizzo da eseguire è PC + 4 (PCSrc = 0) oppure

l’indirizzo di salto (PCSrc = 1). Il Segnale Branch vale invece 1 quando c’è un’istruzione di

tipo beq oppure bne (branch not equals).

 MUX 4: Serve per inserire nel datapath anche l’istruzione di jump. Tramite il segnale di

controllo Jump viene deciso se la prossima istruzione da eseguire è un salto incondizionato

(Jump = 1) oppure la prossima istruzione PC + 4 (Jump = 0); la scelta che viene fatta viene

scritta nel PC.

 MUX 5: Decide se (in base al tipo di formato) ci sarà una scrittura nel Register File, perché

nel caso di istruzioni branch e store non viene scritto nulla nel banco di registri, ma per le

istruzioni R e load invece in essi viene scritto qualcosa. Tramite il segnale di controllo

RegDst quindi l’Unità di Controllo sceglie se far entrare o meno 5 bit dell’istruzione in Read

Addr2 (RegDst = 1, caso delle istruzioni R) oppure in Write Addr (RegDst = 0, caso di store).

La parte in rosso nella figura è quella relativa all’Unità di Controllo che deve generare nella fase di

Decoding delle istruzioni tutti i segnali di controllo da dare ai vari componenti (ALU, MUX,

Registri). In ingresso all’Unità di Controllo ci sono soltanto i 6 bit dell’OP; per semplificare

ulteriormente la progettazione è possibile scindere per essa la parte che riguarda l’ALU da tutto il

resto, generando un nuovo segnale chiamato ALU_op, che diviene l’input di questo nuovo

sottoblocco della unità di Controllo che gestisce l’ALU insieme agli eventuali ultimi 6 bit di funct

dell’istruzione R (in caso si volessero ampliare le funzionalità dell’ALU). Altri segnali di controllo

molto importanti generati dall ALU sono il RegWrite, che quando vale 1 abilita la scrittura alla fine

del ciclo di istruzione nel Write Data del Register File (nella locazione specificata dal Write Addr),

oppure il MemRead ed il MemWrite, che quando pari ad 1 abilitano la scrittura/lettura nella

memoria dati nel caso di istruzioni load/store. Si analizzano infine i PRO e CONTRO di questa

progettazione: 18

 PRO: La soluzione è molto semplice, che perché l’Unità di Controllo è semplicissima da

realizzare, in quanto è una macchina combinatoria (un decoder oppure un transcoder) che

prende in ingresso l’OP dell’istruzione da eseguire e tira fuori i giusti segnali di controllo a

6

2

seconda della configurazione di bit dell’OP (in totale ci sono possibili combinazioni di

segnali).

 CONTRO: Il periodo del clock T deve durare quanto l’istruzione più lunga che è la load (in

quanto oltre alla lettura nella memoria dati c’è anche un Write Back nel Register File).

Questo vuole dire che nel caso di istruzioni che durano poco tempo come una Jump si

perde molto tempo inutilmente.

 CONTRO: Ci sono risorse di calcolo duplicate (ci sono 2 adder e 2 Memorie), ma non è

possibile accorparle insieme perché durante il ciclo di clock esse vengono utilizzate più

volte. Nella soluzione Multi-Ciclo l’ALU ed i 2 Adder vengono accorpati.

Quindi progettare un MIPS con una singola istruzione per ciclo di clock semplifica notevolmente la

soluzione, però comporta problemi di lentezza e di risorse duplicate.

1.1.5. Progetto di un Processore MIPS Multiple-Cycle

Per risolvere le inefficienze riscontrate nella progettazione del MIPS a singolo ciclo si cambia

approccio:

Ogni istruzione viene suddivisa in più fasi (massimo 5), dove ogni fase coincide con un ciclo

di clock, il cui periodo T sarà pari alla durata della fase più lenta.

Le 5 fasi dell’istruzione più lenta (load) sono le seguenti:

o Instruction Fetch: viene prelevata l’istruzione ed aggiornato il PC.

o Decode: l’Unità di Controllo decodifica l’istruzione ed invia i segnali di controllo ai

componenti; vengono letti gli operandi dell’istruzione dai registri, e viene calcolato

il valore esteso in segno dell’immediato per il Branch.

o Exec: vengono eseguite le istruzioni formato R, calcolati gli indirizzi di memoria, e

vengono completare già qui alla terza fase le istruzioni di Branch e Jump. 19

o Memory Access: viene effettuato l’accesso in memoria dati in lettura e scrittura,

vengono completate le istruzioni R con la scrit

Dettagli
A.A. 2020-2021
65 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher appuntiDiIngegneria94 di informazioni apprese con la frequenza delle lezioni di Architettura dei calcolatori 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 della Campania "Luigi Vanvitelli" o del prof Venticinque Salvatore.