Beruflich Dokumente
Kultur Dokumente
2
Richiami riguardanti …
• Sottoinsieme di istruzioni
(sufficiente però a far vedere l’architettura del processore)
3
Insieme di istruzioni semplificato del MIPS
4
Esempi di istruzioni
5
Esempi di istruzioni (2)
6
Registri del processore MIPS a 32 bit
7
Formato delle istruzioni MIPS
10
Modalità di indirizzamento (2)
• Indirizzamento tramite registro
– L’operando è il contenuto di un registro del processore
– Esempio: add $s0, $s1, $s2 (formato tipo R)
11
Modalità di indirizzamento (3)
• Indirizzamento relativo al Program Counter
– L’operando è in una locazione di memoria, il cui indirizzo si ottiene
sommando il contenuto del Program Counter (PC) ad un valore
costante (offset o spiazzamento) specificato nell’istruzione
– Esempio: beq $s0, $s1, L1 (formato tipo I)
» Indirizzo= PC+4+L1
• Indirizzamento pseudo-diretto
– Una parte dell’indirizzo è presente come valore costante (offset)
nell’istruzione, ma deve essere completato
– L’indirizzo di destinazione del salto si ottiene traslando a sinistra di
2 bit i 26 bit di offset specificati nell’istruzione e concatenando i 28
bit così ottenuti con i 4 bit più significativi del PC
– Esempio: j L2 (formato tipo J)
» Indirizzo = 4 bit più sign.di (PC+4)*L2*00
12
Il processore (1)
Distinguiamo unità di elaborazione (SCA) e unità di
controllo (SCO)
• Unità di controllo
– Riceve dei segnali di ingresso e genera in uscita segnali per la
lettura/scrittura degli elementi di memoria, segnali di selezione
per i multiplexer, segnali per il controllo della ALU
13
Il processore (2)
• Implementazione dell’unità di elaborazione a ciclo singolo
– tutte le istruzioni vengono eseguite in un solo ciclo di clock, la cui
durata è determinata dal percorso critico
• Implementazione dell’unità di elaborazione a ciclo
multiplo
– l’esecuzione di un’istruzione richiede più cicli di clock
• Implementazione dell’unità di elaborazione a pipeline
– l’esecuzione di un’istruzione richiede più cicli di clock
– nel SCA ci sono tante istruzioni per quanti sono gli stadi della
pipeline
14
I cinque passi delle istruzioni
• Ogni istruzione può al più essere eseguita in cinque
passi (i primi tre vengono sempre eseguiti):
– prelievo dell’istruzione (Instruction fetch: IF)
– decodifica dell’istruzione/prelievo dei dati dai registri
(Instruction decode: ID)
– Esecuzione e/o calcolo dell’indirizzo di memoria (Execute:
EX)
– accesso alla memoria in lettura o scrittura (Memory
access: MEM)
– scrittura del risultato nel registro destinazione (Write-back:
WB)
IF ID EX MEM WB
Instruction Fetch Instruction Decode EXecute MEMory access Write-Back
15
Esecuzione delle istruzioni logico-aritmetiche
16
Esecuzione delle istruzioni di load
17
Esecuzione delle istruzioni di store
18
Esecuzione delle istruzioni di salto condizionato
19
Esecuzione delle istruzioni
20
Esecuzione delle istruzioni (2)
21
SCO-SCA uniciclo
22
Struttura di base del processore MIPS
23
Componenti di base (1)
Load (nel seguito non lo evidenzieremo... Ck)
ALU
control
sum
zero Adder
ALU
<
result
Componenti di base (2)
Registers Mem Write
5
Reg-sorg 1 32
address
5
Reg-sorg 2 (Reg-sorg 1) Read data
5 Write data
Reg-dest 32
Data
32
Data-to-write (Reg-sorg 2) Memory
Reg write
R0 R1 w31 R31
w1
w0
Data to write
Banco dei registri (lettura)
Decoder Decoder
R0 R1 R31
30
Il significato dei segnali di controllo
Segnale Effetto quando vale 0 Effetto quando vale 1
RegDst Registro destinazione = rt Registro destinazione = rd
31
L’unità di elaborazione a ciclo singolo
con l’unità di controllo
32
Il valore dei segnali di controllo
Istruzione RegDst ALUSrc MemtoR RegWriMemR MemW Branch ALUOp
eg te ead rite
tipo-R 1 0 0 1 0 0 0 10
lw 0 1 1 1 1 0 0 00
sw X 1 X 0 0 1 0 00
beq X 0 X 0 0 0 1 01
33
SCO-SCA multiciclo
34
L’unità di elaborazione a ciclo multiplo
• L’esecuzione di un’istruzione è distribuita su più cicli
• Si utilizza un ciclo di clock di durata inferiore rispetto a
quello dell’implementazione a ciclo singolo
• Implementazione dell’unità di elaborazione a ciclo
multiplo
– Più complessa del ciclo singolo
– Ogni fase di esecuzione di un’istruzione richiede un ciclo di
clock
– Un’unità funzionale può essere usata più di una volta per
istruzione in cicli differenti (condivisione di unità funzionali ed
eliminazione di ridondanze hardware)
• Singola unità di memoria per istruzioni e dati anziché due
memorie distinte
• Una sola ALU anziché una ALU e due sommatori
– Occorre introdurre dei registri interni addizionali per
memorizzare i valori da usare nei cicli di clock successivi
35