Il processore PD32
description
Transcript of Il processore PD32
Il processore PD32
Macchina di von Neumann
Unità di Calcolo
Unità di Controllo
Memoria dilavoro
Unità di Ingresso
Unità di Uscita
Unità di Calcolo
Unità di Controllo
Memoria dilavoro
Unità di Ingresso
Unità di Uscita
SCO
Suddivisione SCA-SCO
SCA
Segnali di controllo/condizione Flusso dati
Modifica macchina di Von Neumanncon CPU
Unità di Calcolo
Unità di Controllo
Memoria dilavoro
Unità di Ingresso
Unità di Uscita
CPU
Dal linguaggio ad alto livello al linguaggio macchina
Programma in Linguaggio alto Livello
Compilatore
Programma in Linguaggio Assembly
Assemblatore
Programma in Linguaggio Macchina
a=b+c
movw b,R1movw c,R2addw R2,R1movw R1,a
000101..0101001011101..01010001011..11101010010..1110101010
Non dipende dalla macchina HW
• Insieme istruzioni che dipendono dalla macchina hw (simboliche)• Commenti• Riferimenti simbolici
• Insieme Istruzioni della macchina hw• Riferimenti indirizzi fisici
Macchina HW
PD32
• Processore “virtuale” dotato di registri da 32 bit
• Non esiste nella realtà, ma le sue funzionalità sono simulate tramite un programma
• Nel seguito sarà usato per approfondire alcuni aspetti legati alle architetture dei calcolatori
• Sistema multiciclo• No pipeline, no memoria cache
. .
.R0 R1 R7
MDR
MAR
I/ODR
I/OAR
PC
IR
struttura di interconnessione
TEMP1 TEMP2
ALUSR
SHIFTER
UNITA' DI CONTROLLO
N.B. non sono indicati i segnali di controllo che dal SCO vanno verso i registri interni, le unità di calcolo e la struttura di interconnessione
CPU
mem
ori
a
di la
voro
d
isposi
tivi
ingre
sso/u
scit
a
R0,R1... registri
ALU, shifter unità di calcolo
Collega-menti con memoria e I/O
PD32- Sottosistema di Calcolo (SCA)
• Registri (basati su Flip-Flop D con segnale di Enable)– speciali – generali
• Dispositivi di calcolo – Shifter– ALU (somma e sottrazione)
• MUX • Decodificatori• Struttura di interconnessione: BUS
Esecuzione dell’istruzione
L’esecuzione dell’istruzione prevede tre fasifetch, decodifica e esecuzione-La decodifica è fatta dal sistema di controllo (SCO); le altre da SCA-SCA utilizza le risorse del processore -La fase di esecuzione di un ciclo istruzione consiste in un numero variabile (dipende dall’istruzione) di operazioni elementari (cicli macchina)- Ciascun ciclo esegue un’operazione elementare (ad esempio trasferimento di un dato da un registro)
Un semplice esempio
Consideriamo l’istruzione a=a+b, espressa in un linguaggio di alto livello
• “Memorizza nella variabile di nome a, la somma dei valori contenuti nelle variabili di nome a e b”
• Nota: Le variabili sono individuate da un nome simbolico deciso precedentemente nel programma..
15a
9b
24
9
a
b
Prima Dopo
a =a+b
Un semplice esempio (2)Per eseguire questa istruzione è necessario
– Stabilire dove sono memorizzati i valori da sommare– Stabilire dove va scritto il risultato dell’operazione– Quale operazione svolgere
• Nel PD32, gli operandi sono memorizzati nei registri interni alla CPU (registri visibili al programmatore)
• Il formato dell’istruzione è (s può essere B,W,L)ADDs <sorgente><destinazione>
Il campo destinazione è un registro che contiene il valore iniziale di un operando e che sarà modificato
ADDW R2,R1 #somma R1 con R2 (32 bit) e poni il risultato in R1
Esecuzione istruzione
100PC adds R2,R1
.
.
100
Indirizzo
MEMORIAPC=Program Counter
contatore di programma (memorizza indirizzo
dell’ istruzione in esecuzione)
Istruzione: fase di fetch
100PC adds R2,R1
.
.
100
Indirizzo
adds R2,R1IR
MEMORIAPC=Program CounterIR= Instruction Register(memorizza istruzionein esecuzione)
Istruzione: decodifica
100PC adds R2,R1
.
.
100
Indirizzo
adds R2,R1IR
Controllo
MEMORIA
Decodifica istruzione: predispone i comandi per la sua esecuzione
Istruzione: fase di esecuzione
100PC adds R2,R1
.
.
100
Indirizzo
adds R2,R1IR
ControlloRisorse di
calcolo
MEMORIA
Esecuzione dell’istruzione (consiste di diversi passi)
CPU come interpreteLa CPU può essere specificato come la ripetizione continua
del seguenti passi (Ciclo Istruzione) che interpretano le istruzioni di un programma contenuto in memoria.
fetch: (PC)IRincrementa PC
esegui istruzione in IR vai al passo fetch
• La CPU interpreta le istruzioni che man mano sono presenti nel suo Instruction Register (nota che l’esecuzione istr. puo’ modificare PC)
• Tale schema è semplificato poiché per interagire con l’esterno, o gestire situazioni anomale, tale ciclo deve poter essere interrotto.
La notazione (PC) indica il contenuto della locazione di memoria con indirizzo PC
PD32- BUS interno
• Usato per il collegamento dei registri interni• Operazioni che caratterizzano il bus
– Ricezione dati• i bit presenti sul bus sono memorizzati in un registro
– Trasmissione dati• Il contenuto di un registro è posto sul bus
• Al più un solo registro può scrivere sul bus – segnali di controllo opportunamente generati
• Il segnale di abilitazione alla scrittura di un registro corrisponde alla ricezione dei dati presenti sul bus in quel momento
• Il segnale di abilitazione sul buffer three-state permette di trasferire sul bus il contenuto del registro
PD32- BUS interno, segnali di controllo
32 bit
R0 R1 R7
WR0 WR1 WR7
BR0 BR1 BR7
Una sola scrittura per volta (controllo mediante Bi)2n segnali di controllo (n numero dei registri)
Wi=1, leggi dal bus Bi =1 scrivi sul bus
PD32- BUS interno, esempio R1 -> R0
Per eseguire il trasferiemento da R1 ad R0 (simbolicamente (R1)->R0) devono essere affermati solamente i seguenti segnali: BR1 = 1, WR0 = 1
32 bit
R0 R1 R7
WR0 WR1 WR7
BR0 BR1BR7
PD32- Banco dei registri
• Insieme di 8 registri generali indicati da R0 ad R7• Sono controllati mediante
– Segnali di abilitazione per • scrittura del registro (WM)
• lettura e conseguente invio sul bus interno del contenuto del registro (RM)
Indirizzo
BUS interno
WM
RM
R0 R1 R7
w0w1
w7
B0 B1 B7
BUSwi =1, scrivi valore sul bus in RiBi = 1, invia sul bus valore di Ri
Decoder
WM
RM
Indirizzo registro
PD32- Banco dei registri
PD32- esempio: R7 ->BUS
R0 R1 R7
w0w1
w7
B0 B1 B7
BUS
Decoder
Indirizzo registro
111
WM
RM
Address=111, RM=1Address
nota: non si può leggere e scrivere contemporaneamente
PD32- ALU
• Esegue le operazioni aritmetiche e logiche dei valori memorizzati in due registri tampone (non visibili al programmatore) Temp1 e Temp2
• Il risultato è posto in un registro generale Ri
TEMP1 TEMP2
OpCode (specifica operazione da eseguire)BA
WT1
WT2
ALU
32
PD32- ALU, esempio: esecuzione addw R2,R1
TEMP1 TEMP2
OpCode
BA
WT1
WT2
ALU
REGISTRI
WM RM
3
32
Address
PD32- ALU, esempio: esecuzione addw R2,R1
1. R1 -> Temp1 RM=1, Address = 001, WT1=1
TEMP1 TEMP2
OpCode
BA
WT1
WT2
ALU
REGISTRI
WM RM
3
32
Address
PD32- ALU, esempio: esecuzione addw R2,R1
1. R1 -> Temp1 RM=1, Address = 001, WT1 = 12. R2 -> Temp2 RM=1, Address = 010, WT2 = 1
TEMP1 TEMP2
OpCode
BA
WT1
WT2
ALU
REGISTRI
WM RM
3
32
Address
PD32- ALU, esempio: esecuzione addw R2,R1
1. R1 -> Temp1 RM=1, Address = 001, WT1 = 12. R2 -> Temp2 RM=1, Address = 010, WT2 = 13. ALU-OUT(Temp1+Temp2)->R1 WM=1, Address = 001, OpCode
= addw, BA=1
TEMP1 TEMP2
OpCode
BA
WT1
WT2
ALU
REGISTRI
WM RM
3
32
Address
Osservazioni
• Per l’esecuzione dell’istruzione (senza considerare la fase di fetch) sono state necessarie 3 operazioni elementari
• Ogni operazione viene eseguita durante un ciclo di clock
• In generale il numero di cicli di clock richiesti per completare una istruzione è variabile e dipende dall’istruzione. Tale paramentro viene indicato con CPI (Clock per Instruction)
• La velocità di esecuzione di un programma dipende anche dal numero medio di CPI
PD32- Shifter
Usato per eseguire operazioni di scorrimento di posizioni, nonché per lo spostamento di dati tra registri interni (i registri tampone non possono scrivere sul bus mentre i segnali di controllo valgono per tutti i registri)
TEMP1 TEMP2
OpCode
BA
WT1
WT2
ALU
32 bit
SHIFTEROpCode
BS
Shifter (background)
Spostamento logico a destra di k posti.
bn-i = 0 (per 0 ≤ i < k)bi = ai+k (per 1≤ i ≤ n - k)C = ak
0 . . .0 a . . a a a . . . a n k+2 k+1 k 1
b b b b b C n n-k+1 n-k 2 1
Barrel shifter
. . .
. . .
. . .
.
.
.
.
.
.
. . .. . .
bn bn/2 b1
. . .. . .
an a a a an-2 1
.
.
.
.
.
.
registro di controllo
1
2
3
c
c
c
log nc
n-1 n-3
log nc
-1
1
2
3
log n -1
log n
d
Schema di una cella
Ci
d
PD32- Status Register
Contiene informazioni sull’esito dell’ultima operazione (ex. zero, overflow). Usato anche come ingresso per alcune operazioni (ex. Salti condizionati)
TEMP1 TEMP2
OpCodeALU
BA
WT1
WT2
ALU
32
SHIFTEROpCodeSHIFTER
BS
SR
BSR
singola linea
linee multiple
N.B. non sono evidenziate le variabili di condizione che da SR e IR vanno al SCO
opcode
B BBA BSS R
PC
RPC
PCW
M U X
I R
B SR
.
.
.
R WMM
dec
oder
AND
R0
R1
R7
AND
AND AND
ANDAND
. . .
shifterALU
TEMP1 TEMP2
Wt1 Wt2
opcode
W IRS MUX
INC(N=1,2,4)
Incremento PC
PC
RPC
INC2INC1WPC
Il PC deve essere incrementato (se non si eseguono istruzione di salto)
NOTA: le istruzioni PD-32 possono avere lunghezza diversa; quindi incremento PC è variabile
PD32- Interazione con la memoria
• La memoria contiene sia i dati che le istruzioni e può essere sia letta che scritta.
• E’ necessario quindi:– Prelevare istruzioni– Leggere dati– Scrivere dati
• Le operazioni di lettura/scrittura avvengono fra una locazione di memoria e un registro (registro dati, RI, PC)
• E’ necessario quindi instradare opportunamente i dati ricevuti dalla memoria verso i registri e viceversa.
Memoria: organizzazione logica
a a a a 3 2 1 0
0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
a a a a 3 2 1 0
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0
a a a a a a a a 3 2 1 0
a a a a 3 2 1 00 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1
3 2 1 0
0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0
0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1
Organizzazione logica a vettore di 16 celle di memoria
Un’organizzazione a 4 moduli di 16 celle di memoria
Memoria RAM
.
.
.
decoder di colonna
deco
der
di
rig
a
indirizzi
amplificatore di uscita
amplificatore di scrittura
RD
WR
CS
al DB
dal DB
dall'AB
matrice m x m bit
1
2
m
1 2 m. . .
linea singola
linee multiple
Memoria comportamento esterno
Funzionalmente è caratterizzata dai seguenti segnali – Indirizzo della parola da leggere/scrivere– MR, affermato se si vuole leggere– MW, affermato se si vuole scrivere– CS, Abilita l’intero modulo (Chip Select)– Dati
Indirizzo
Dati
MRMWCS
m bit
n bitIndirizzo valido
Dato valido
Tempo di accesso
MR
Memoria organizzazione in moduli
Address BUS (30 bit)
Data BUS (32 bit)
a2…a31
a2…a31
d23…d16d31…d24
a2…a31
d15…d8
a2…a31
d7…d0
Mb3
Mb2
Mb1
Mb0
MRMW
CS
MRMW
CS
MRMW
CS
MRMW
CS
Lo spazio di indirizzamento del PD32 e’ monodimensionale eComposto da 232 locazioni (byte)
Locazione00000000
LocazioneFFFFFFFF
Byte (8 bit)
Word (16 bit)
Longword (32 bit)
Memoria: spazio di indirizzamento
Memoria: disallineamento
Esempio di memorizzazione di una informazione di quattro byte allineati sullo stesso indirizzo di riga.
a a a a 3 2 1 0
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0
a a a a a a a a 3 2 1 0
a a a a 3 2 1 00 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1
3 2 1 0
0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0
0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1
a a a a 3 2 1 0
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0
a a a a a a a a 3 2 1 0
a a a a 3 2 1 00 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1
3 2 1 0
0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0
0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1
Esempio di memorizzazione di una informazione di quattro byte disallineati
Esempio di memorizzazione di una informazione di due byte disallineati
a a a a 3 2 1 0
0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0
a a a a a a a a 3 2 1 0
a a a a 3 2 1 00 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1
3 2 1 0
0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0
0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1
Memoria: byte allineati
Address BUS (30 bit)
Data BUS (32 bit)
a2…a31
a2…a31
d23…d16d31…d24
a2…a31
d15…d8
a2…a31
d7…d0
Mb3
Mb2
Mb1
Mb0
MRMW
CS
MRMW
CS
MRMW
CS
MRMW
CS
Memoria: byte non allineati (1)
Address BUS (30 bit)
Data BUS (32 bit)
a2…a31
a2…a31
d23…d16d31…d24
a2…a31
d15…d8
a2…a31
d7…d0
Mb3
Mb2
Mb1
Mb0
MRMW
CS
MRMW
CS
MRMW
CS
MRMW
CS
Memoria: byte non allineati (2)
Address BUS (30 bit)
Data BUS (32 bit)
a2…a31
a2…a31
d23…d16d31…d24
a2…a31
d15…d8
a2…a31
d7…d0
Mb3
Mb2
Mb1
Mb0
MRMW
CS
MRMW
CS
MRMW
CS
MRMW
CS
Memoria: interfaccia del PD32
• Registro Memoria Dati (MDR)• Registro Indirizzo (MAR)
• Segnali di Controllo (MR,MW, Mb3, Mb2, Mb1, Mb0)
MD
RM
AR
MemoriaDi
Lavoro
WMAR
WMDR
Bus interno
dati
indirizzi
SCOSegnali di Controllo
BMDR
Memoria: interfaccia SCA del PD32
Address BusBu
s In
tern
o d
el P
D3
2
M D R
M A R
Data Bus
SCA del PD32
BMDR MDRWBDIR
DB
BAB
WMAR
PD32- Interazione con l’esterno
• Ogni fase che comporta l’interazione con le unità esterne viene detta ciclo macchina.
• Ogni ciclo macchina può essere costituito da uno o due cicli di bus; per esempio la lettura di una parola memorizzata su due byte non allineati sullo stesso indirizzo di riga necessita di due accessi in memoria (cioè di due cicli di bus).
Interfaccia dispositivi di I/O
DeviceControl
Dipendente dal dispositivo
Indipendente dal dispositivo
INTERFACCIA
BUS
Decoder
Registro
indirizzi
dati
segnali di controllo
dati
segnali di controllo
Dispositivi di I/O: interfaccia del PD32
• Registro Dati (I/ODR)• Registro Indirizzo (I/OAR)• Segnali di Controllo (I/OR,I/OW, Start, ……….)
I/O
DR
I/0 A
RDispositivo
di I/O
WMAR
WMDR
Bus interno
dati
indirizzi
SCOSegnali di Controllo
BI/ODR
I/O: interfaccia SCA del PD32
I/O Address Bus
Bu
s In
tern
o d
el P
D3
2 I/O Data Bus
SCA del PD32
B WBDIR
BW
I/O D R
I/O A R
I/ODR I/ODRI/ODB
I/OABI/OAR
Interconnesione del PD32
PD32Memory address busMemory control busMemory data bus
Modulo dimemoria
Modulo dimemoria
30
32
I/O address busI/O control busI/O data bus
8
Inte
rfacc
iaI/O
Inte
rfacc
iaI/O
32
dispositivodi I/O
dispositivodi I/O
Sottosistema di controllo (SCO)
SCA(SLAVE)
SCO(MASTER)
TASK
Data In Data Out
Stato o variabili di condizionamento
Variabili Condizionamento
esterne
Uscite esterne
Sottosistema di controllo (SCO)
microprogramma relativo alla fase di
fetch
. . .
XXX YYY
start
codice della classe dell' istruzione
ZZZ
microprogramma relativo alle istruzione la cui classe è XXX
microprogramma relativo alle istruzione la cui classe è YYY
microprogramma relativo alle istruzione la cui classe è ZZZ
Decodifica
SCO: schema di Mealy
spostamento base
load
reset
codice classe
micro ordini
reg. SELci
rcui
to d
i se
lezi
one
ROM
variabili di condizione
CK
CK
SCO: schema di Moore
. . .
ROMmicro ordini
circuito di selezionemultiplexer
spos
tam
ento
base
load reset
codice classe
SS1 SS2 SSm
CK
SEL
variabili di condizione
Cod. Classe: codice istruzione
Load: segnale di caricamento nuova istruzione (a fine fetch)
Reset: azzera cod. classe (inizia fetch)
variab. di cond.: influenzano esecuzione istr. (ad es. var. in SR)
Micrordini: comandi per SCA
CK: clock
Interazione con la memoria: ciclo di scrittura
T1 T2 T3
CLOCK
MWR
BUS INDIRIZZI
indirizzo
datoBUS DATI
Interazione con la memoria: ciclo di lettura
T1 T2 T3
CLOCK
BUS INDIRIZZI
MRD
BUS DATI
indirizzo
dato
Passi elementari per eseguire il Fetch(ipotesi: 4 byte allineati in memoria)
1. PC -> MAR; /* trasferimento del contenuto del PC nel MAR */
MD
RM
AR
MemoriaDi
Lavoro
WMAR
WMDR
PC RPC
IRWIR
WPC
Address Bus
Data Bus
BDIR DB
BAB
INC4
BMDR
Fetch1. PC -> MAR; /* trasferimento del contenuto del PC nel MAR */
2. (MAR)->MDR /* trasferimento istruzione da eseguire in MDR*/
MD
RM
AR
MemoriaDi
Lavoro
WMAR
WMDR
PC RPC
IRWIR
WPC
Address Bus
Data Bus
BDIRDB
BAB
INC4
BMDR
Fetch
1. PC -> MAR; /* trasferimento del contenuto del PC nel MAR */
2. (MAR) -> MDR /* trasferimento istruzione da eseguire in MDR*/
3. MDR -> IR /* trasferimento istruzione da eseguire nell’IR*/
PC+4->PC /* e predisposizione PC per prelievo prossima istruzione*/
MD
RM
AR
MemoriaDi
Lavoro
WMAR
WMDR
PC RPC
IRWIR
WPC
Address Bus
Data Bus
BDIR DB
BAB
INC4
BMDR
Fetch: micro-ordini
1. PC -> MAR; /* trasferimento del contenuto del PC sul MAR */
1. RPC = 1, WMAR = 1
2. (MAR) -> MDR /* trasferimento istruzione da eseguire in MDR*/
1. BAB = 1 /* T1 */
2. BAB = 1, MRD = 1 /* T2 */
3. BAB = 1, MRD = 1, WMDR = 1 /* T3*/
3. MDR -> IR /* trasferimento istruzione da eseguire in IR e
predisposizione PC per prelievo prossima istruzione*/
1. BMDR = 1, WIR = 1, INC4 = 1
Ciclo Istruzione - Decode
IR
SCO
reset
RESET
fetch2
I = ADD
I = MOV
fetch3
add1
fetch4
add2addx
fetch1 fetch5
fetch5: decodifica istr. utilizzando IR e dopo esecuzione delle diverse istruzioni, add, mov, sub, jump...
Ciclo Istruzione
PC
Il registro “Program Counter” contiene l’indirizzo da cui prelevare l’istruzione da eseguire.Il SCO lo incrementa di 4 ad ogni fetch
IR = Instruction Register
Segnali di comando per la SCA e per lo SCO
Fetch1) PC -> MAR2) (MAR) -> MDR3) MDR -> IR, PC + 4 -> PC
Bus memoria
MEMORIA
Istruzione 1
Istruzione 2
Istruzione 3
Ciclo Istruzione - Fetch
Si assume che ogni istruzione sia di 4 byte
Esecuzione dell’istruzioneNel PD32 la fase di esecuzione di un ciclo istruzioneconsiste in un numero variabile di cicli macchina dipendente dal numero di accessi in memoria necessari (oltre al fetch)
1. PC -> MAR;
2. (MAR) -> MDR
3. MDR -> IR , PC+4->PC
4. R2 -> Temp1
5. PC -> MAR
6. (MAR) ->MDR
7. MDR -> Temp2, PC+2->PC
8. OUT_ALU -> R2
Entrambi gli operandi sono contenuti in registri interni del PD32(indirizzamento a registro)
Uno degli operandi (0x20) è memorizzato nei due byte successivi a quelli contenente l’istruzione (indirizzamento immediato)
ADDW #20h, R2ADDW R1, R2
1. PC -> MAR;
2. (MAR) -> MDR
3. MDR -> IR , PC+4->PC
4. R1 -> Temp1
5. R2 -> Temp2
6. OUT_ALU -> R2
Esercizi
Con riferimento alla parte SCA della CPU, rispondere• Cosa succede se elimino il buffer temp2? discutere
l’efficienza del sistema (vantaggi e svantaggi)• Modificare la struttura SCA inserendo due bus dati• Se ci sono due bus dati come migliora l’efficienza del
sistema? su quali operazioni?• Nel PD32 ci sono 8 registri dati; discutere vantaggi e
svantaggi di avere molti registri dati (ad es. cento)• Nel fetch si incrementa il PC per tutte le istruzioni.
Perché è corretto anche per i salti; migliora l’efficienza?
• Dare il microdice per le istruzioni di salto del PD32