Title: Il processore PD32
1Il processore PD32
2Macchina di von Neumann
Memoria di lavoro
Unità di Ingresso
Unità di Uscita
Unità di Calcolo
Unità di Controllo
3Suddivisione SCA-SCO
Memoria di lavoro
Unità di Ingresso
Unità di Uscita
Unità di Calcolo
SCA
Unità di Controllo
SCO
Segnali di controllo/condizione Flusso dati
4Modifica macchina di Von Neumanncon CPU
Memoria di lavoro
Unità di Ingresso
Unità di Uscita
Unità di Calcolo
Unità di Controllo
CPU
5Dal linguaggio ad alto livello al linguaggio
macchina
Programma in Linguaggio alto Livello
Non dipende dalla macchina HW
abc
Compilatore
- Insieme istruzioni che
- dipendono dalla
- macchina hw (simboliche)
- Commenti
- Riferimenti simbolici
movw b,R1 movw c,R2 addw R2,R1 movw R1,a
Programma in Linguaggio Assembly
Assemblatore
000101..010100 1011101..010100 01011..11101010 010
..1110101010
Programma in Linguaggio Macchina
- Insieme Istruzioni della
- macchina hw
- Riferimenti indirizzi fisici
Macchina HW
6PD32
- Processore virtuale dotato di registri da 32
bit - Non esiste nella realtà, ma le sue funzionalità
sono simulate tramite un programma - Set delle istruzioni sottoinsieme dei processori
Motorola - Nel seguito sarà usato per approfondire alcuni
aspetti legati alle architetture dei calcolatori - Sistema multiciclo
- No pipeline, no memoria cache
7R0, R1... registri
Collega-menti con memoria e I/O
ALU, shifter unità di calcolo
8PD32- 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
9Processamento dellistruzione
- Il processamento dellistruzione (ciclo
istruzione)prevede tre fasi fetch, decodifica e
esecuzione - Il fetch serve per prelevare listruzione dalla
memoria - La decodifica serve per identificare quale
micro-programma del sottosistema di controllo
(SCO) attivare - Lesecuzione serve ad implementare la semantica
dellistruzione. Può richiedere uno o più cicli
macchina (interazioni con la memoria o i
dispositivi di I/O)
10Un semplice esempio
- Consideriamo listruzione aab, 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..
a
a
15
24
a ab
b
b
9
9
Prima
Dopo
11Un semplice esempio (2)
- Per eseguire questa istruzione è necessario
- Stabilire dove sono memorizzati i valori da
sommare - Stabilire dove va scritto il risultato
delloperazione - Quale operazione svolgere
- Nel PD32, gli operandi sono memorizzati nei
registri interni alla CPU (registri visibili al
programmatore) - Il formato dellistruzione è (s può essere B,W,L)
- ADDs ltsorgentegtltdestinazionegt
- Il campo destinazione è un registro che contiene
il valore iniziale di un operando e che sarà
modificato - ADDW R2,R1
- (somma R1 con R2 (16 bit) e poni il risultato in
R1)
12Esecuzione istruzione
Indirizzo
100
adds R2,R1
PC
100
. .
PCProgram Counter contatore di programma
(memorizza indirizzo dell istruzione in
esecuzione)
MEMORIA
13Istruzione fase di fetch
Indirizzo
100
adds R2,R1
PC
100
IR
adds R2,R1
. .
PCProgram Counter IR Instruction
Register (memorizza istruzione in esecuzione)
MEMORIA
14Istruzione decodifica
Indirizzo
100
adds R2,R1
PC
100
IR
adds R2,R1
. .
MEMORIA
Controllo
Decodifica istruzione identifica il
microprogramma per lesecuzione dellistruzione
15Istruzione fase di esecuzione
Indirizzo
100
adds R2,R1
PC
100
IR
adds R2,R1
. .
MEMORIA
Controllo
Risorse di calcolo
Esecuzione dellistruzione (il SCO comanda il SCA)
16CPU come interprete
- Lesecuzione di un programma può essere visto
come la ripetizione continua dei seguenti passi
(Ciclo Istruzione) che interpretano le
istruzioni del programma contenuto in memoria. - fetch (PC)?IR
- incrementa 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
lesecuzione puo modificare il PC) - Tale schema è semplificato poiché per interagire
con lesterno, o gestire situazioni anomale, tale
ciclo deve poter essere interrotto.
La notazione (PC) indica il contenuto della
locazione di memoria con indirizzo PC
17PD32- 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
18PD32- BUS interno, segnali di controllo
Una sola scrittura per volta (controllo mediante
Bi) 2n segnali di controllo (n numero dei
registri)
WR0
WR1
WR7
R0
R1
R7
BR0
BR1
BR7
32 bit
Wi1, leggi dal bus Bi 1 scrivi sul bus
19PD32- BUS interno, esempio R1 -gt R0
- Per eseguire il trasferiemento da R1 ad R0
(simbolicamente (R1)-gtR0) devono essere affermati
solamente i seguenti segnali BR1 1, WR0 1
WR0
WR1
WR7
R0
R1
R7
BR0
BR7
BR1
32 bit
20PD32- 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)
WM
Indirizzo
RM
BUS interno
21PD32- Banco dei registri
Indirizzo registro
Decoder
WM
RM
R0
R1
R7
w7
w1
w0
B0
B1
B7
wi 1, scrivi valore sul bus in Ri Bi 1, invia
sul bus valore di Ri
BUS
22PD32- esempio R7 -gtBUS
Indirizzo registro
Address111, RM1
Decoder
1 1 1
Address
WM
RM
R0
R1
R7
w7
w1
w0
B0
B1
B7
BUS
nota non si può leggere e scrivere
contemporaneamente
23PD32- 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
WT2
WT1
32
OpCode (specifica operazione da eseguire)
ALU
BA
24PD32- ALU, esempio esecuzione addw R2,R1
WM
RM
REGISTRI
TEMP1
TEMP2
WT2
WT1
3
Address
OpCode
ALU
BA
32
25PD32- ALU, esempio esecuzione addw R2,R1
- R1 -gt Temp1 RM1, Address 001, WT11
WM
RM
REGISTRI
TEMP1
TEMP2
WT2
WT1
3
Address
OpCode
ALU
BA
32
26PD32- ALU, esempio esecuzione addw R2,R1
- R1 -gt Temp1 RM1, Address 001, WT1 1
- R2 -gt Temp2 RM1, Address 010, WT2 1
WM
RM
REGISTRI
TEMP1
TEMP2
WT2
WT1
3
Address
OpCode
ALU
BA
32
27PD32- ALU, esempio esecuzione addw R2,R1
- R1 -gt Temp1 RM1, Address 001, WT1 1
- R2 -gt Temp2 RM1, Address 010, WT2 1
- ALU-OUT(Temp1Temp2)-gtR1 WM1, Address 001,
OpCode addw, BA1
WM
RM
REGISTRI
TEMP1
TEMP2
WT2
WT1
3
Address
OpCode
ALU
BA
32
28Osservazioni
- Per lesecuzione dellistruzione (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 dallistruzione. Tale paramentro viene
indicato con CPI (Clock per Instruction) - La velocità di esecuzione di un programma dipende
anche dal numero medio di CPI
29PD32- 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
WT2
WT1
32 bit
OpCode
OpCode
SHIFTER
ALU
BA
BS
30Shifter (background)
Spostamento logico a destra di k posti. bn-i
0 (per 0 i lt k) bi aik (per 1 i n -
k) C ak
31Barrel shifter
32Schema di una cella
33PD32- Status Register
- Contiene informazioni sullesito dellultima
operazione (ex. zero, overflow). Usato anche come
ingresso per alcune operazioni (ex. Salti
condizionati)
TEMP1
TEMP2
WT2
WT1
32
OpCodeALU
OpCodeSHIFTER
SHIFTER
ALU
BA
BS
SR
BSR
34Wt1
Wt2
R0
TEMP1
TEMP2
opcode
AND
opcode
AND
shifter
ALU
B
B
BA
BS
R1
S R
B
SR
AND
AND
decoder
M
.
I R
. . .
U
.
X
.
S
W
MUX
IR
R7
AND
AND
INC(N1,2,4)
PC
W
PC
R
W
M
M
R
PC
N.B. non sono evidenziate le variabili di
condizione che da SR e IR vanno al SCO
35Incremento PC
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
INC4
INC2
PC
INC1
WPC
R
PC
36PD32- 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.
37Memoria organizzazione logica
Organizzazione logica a vettore di 16 celle di
memoria
Unorganizzazione a 4 moduli di 16 celle di
memoria
38Organizzazione di una RAM statica (4 x 3 bit)
39Memoria RAM
40Memoria 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 lintero modulo (Chip Select)
- Dati
Tempo di accesso
n bit
Indirizzo valido
Dati
MR
MR MW CS
Dato valido
Indirizzo
m bit
41Memoria organizzazione in moduli
Data BUS (32 bit)
d23d16
d31d24
d15d8
d7d0
MR MW CS
MR MW CS
MR MW CS
MR MW CS
a2a31
a2a31
a2a31
a2a31
Mb3 Mb2 Mb1 Mb0
Address BUS (30 bit)
42Memoria spazio di indirizzamento
Lo spazio di indirizzamento del PD32 e
monodimensionale e Composto da 232 locazioni
(byte)
Locazione 00000000
Byte (8 bit)
Word (16 bit)
Locazione FFFFFFFF
Longword (32 bit)
43Memoria disallineamento
Esempio di memorizzazione di una informazione di
quattro byte allineati sullo stesso indirizzo di
riga.
Esempio di memorizzazione di una informazione di
quattro byte disallineati
Esempio di memorizzazione di una informazione di
due byte disallineati
44Memoria byte allineati
Data BUS (32 bit)
d23d16
d31d24
d15d8
d7d0
MR MW CS
MR MW CS
MR MW CS
MR MW CS
a2a31
a2a31
a2a31
a2a31
Mb3 Mb2 Mb1 Mb0
Address BUS (30 bit)
45Memoria byte non allineati (1)
Data BUS (32 bit)
d23d16
d31d24
d15d8
d7d0
MR MW CS
MR MW CS
MR MW CS
MR MW CS
a2a31
a2a31
a2a31
a2a31
Mb3 Mb2 Mb1 Mb0
Address BUS (30 bit)
46Memoria byte non allineati (2)
Data BUS (32 bit)
d23d16
d31d24
d15d8
d7d0
MR MW CS
MR MW CS
MR MW CS
MR MW CS
a2a31
a2a31
a2a31
a2a31
Mb3 Mb2 Mb1 Mb0
Address BUS (30 bit)
47Memoria interfaccia del PD32
- Registro Memoria Dati (MDR)
- Registro Indirizzo (MAR)
- Segnali di Controllo (MR,MW, Mb3, Mb2, Mb1, Mb0)
WMDR
Memoria Di Lavoro
SCO
dati
BMDR
MDR
Segnali di Controllo
MAR
indirizzi
Bus interno
WMAR
48Memoria interfaccia SCA del PD32
49PD32- Interazione con lesterno
- Ogni fase che comporta linterazione 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).
50Interfaccia dispositivi di I/O
INTERFACCIA
Indipendente dal dispositivo
Dipendente dal dispositivo
indirizzi
Decoder
segnali di controllo
segnali di controllo
Device Control
dati
dati
BUS
51Dispositivi di I/O interfaccia del PD32
- Registro Dati (I/ODR)
- Registro Indirizzo (I/OAR)
- Segnali di Controllo (I/OR,I/OW, Start, .)
WMDR
Dispositivo di I/O
SCO
dati
BI/ODR
I/ODR
Segnali di Controllo
I/0AR
indirizzi
Bus interno
WMAR
52I/O interfaccia SCA del PD32
53Interconnesione del PD32
30
Memory address bus Memory control bus Memory data
bus
PD32
32
Modulo di memoria
Modulo di memoria
8
32
Interfaccia I/O
dispositivo di I/O
Interfaccia I/O
dispositivo di I/O
I/O address bus I/O control bus I/O data bus
54Sottosistema di controllo (SCO)
55Sottosistema di controllo (SCO)
Decodifica
56SCO schema di Mealy
CK
reg. SEL
variabili di
condizione
circuito di
selezione
ROM
micro ordini
codice
classe
load
CK
spostamento
base
reset
57SCO schema di Moore
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
58Interazione con la memoria ciclo di scrittura
T1
T2
T3
CLOCK
MWR
59Interazione con la memoria ciclo di lettura
T1
T2
T3
CLOCK
BUS
indirizzo
INDIRIZZI
MRD
dato
BUS
DATI
60Passi elementari per eseguire il Fetch(ipotesi
4 byte allineati in memoria)
- PC -gt MAR / trasferimento del contenuto del
PC nel MAR /
61Fetch
- PC -gt MAR / trasferimento del contenuto del
PC nel MAR / - (MAR)-gtMDR / trasferimento istruzione da
eseguire in MDR/
WMDR
Memoria Di Lavoro
WPC
RPC
PC
Data Bus
INC4
MDR
DIR
B
B
MDR
DB
WIR
IR
Address Bus
MAR
WMAR
B
AB
62Fetch
- PC -gt MAR / trasferimento del contenuto del PC
nel MAR / - (MAR) -gt MDR / trasferimento istruzione da
eseguire in MDR/ - MDR -gt IR / trasferimento istruzione da
eseguire nellIR/ - PC4-gtPC / e predisposizione PC per prelievo
prossima istruzione/
WMDR
Memoria Di Lavoro
WPC
RPC
PC
Data Bus
INC4
MDR
DIR
B
B
MDR
DB
WIR
IR
Address Bus
MAR
WMAR
B
AB
63Fetch micro-ordini
- PC -gt MAR / trasferimento del contenuto del PC
sul MAR / - RPC 1, WMAR 1
- (MAR) -gt MDR / trasferimento istruzione da
eseguire in MDR/ - BAB 1 / T1 /
- BAB 1, MRD 1 / T2 /
- BAB 1, MRD 1, WMDR 1 / T3/
- MDR -gt IR / trasferimento istruzione da eseguire
in IR e - predisposizione PC per prelievo prossima
istruzione/ - BMDR 1, WIR 1, INC4 1
64Ciclo Istruzione - Decode
fetch5 decodifica istr. utilizzando IR e dopo
esecuzione delle diverse istruzioni, add, mov,
sub, jump...
RESET
reset
fetch2
fetch3
fetch4
fetch1
fetch5
IR
add1
I MOV
I ADD
add2
addx
SCO
65Ciclo Istruzione
66Ciclo Istruzione - Fetch
Il registro Program Counter contiene
lindirizzo da cui prelevare listruzione da
eseguire. Il SCO lo incrementa di 4 ad ogni fetch
MEMORIA
- Fetch
- PC -gt MAR
- (MAR) -gt MDR
- MDR -gt IR, PC 4 -gt PC
PC
Istruzione 1
Istruzione 2
IR Instruction Register
Istruzione 3
Nellesempio si assume che ogni istruzione sia di
4 byte
Segnali di comando per la SCA e per lo SCO
Bus memoria
67Esecuzione dellistruzione
Nel PD32 la fase di esecuzione di un ciclo
istruzione consiste in un numero variabile di
cicli macchina dipendente dal numero di accessi
in memoria necessari (oltre al fetch)
ADDW 20h, R2
ADDW R1, R2
Uno degli operandi (0x20) è memorizzato nei due
byte successivi a quelli contenente listruzione
(indirizzamento immediato)
Entrambi gli operandi sono contenuti in registri
interni del PD32 (indirizzamento a registro)
- PC -gt MAR
- (MAR) -gt MDR
- MDR -gt IR , PC4-gtPC
- R2 -gt Temp1
- PC -gt MAR
- (MAR) -gtMDR
- MDR -gt Temp2, PC2-gtPC
- OUT_ALU -gt R2
- PC -gt MAR
- (MAR) -gt MDR
- MDR -gt IR , PC4-gtPC
- R1 -gt Temp1
- R2 -gt Temp2
- OUT_ALU -gt R2
68Esercizi
- Con riferimento alla parte SCA della CPU,
rispondere - Cosa succede se elimino il buffer temp2?
discutere lefficienza del sistema (vantaggi e
svantaggi) - Modificare la struttura SCA inserendo due bus
dati - Se ci sono due bus dati come migliora
lefficienza 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 lefficienza? - Dare il microdice per le istruzioni di salto del
PD32