Architettura dei Calcolatori 06 Elementi Architetturali Di Base
1. Dispense del corso di
Architettura dei Calcolatori
Elementi architetturali di base
2. a.a. 2007/2008
Architettura dei calcolatori
Semplici sistemi digitali
• Circuiti combinatori e sequenziali possono essere utilizzati per creare
semplici sistemi digitali.
• Questi sono i componenti f d
Q ti ti fondamentali per l creazione di un calcolatore
t li la i l lt
digitale.
• I sistemi digitali di base sono frequentemente caratterizzati in termini
g q
– di registri contenuti
– operazioni che si possono eseguire
• Le operazioni sui dati contenuti nei registri sono dette microoperazioni.
Queste vengono tipicamente eseguite in un solo ciclo di clock.
2
3. a.a. 2007/2008
Architettura dei calcolatori
Architettura di Von Neumann (1/2)
L’architettura di Von Neumann si compone di 3 parti fondamentali:
1 MEMORIA: unità che mantiene le istruzioni che compongono il programma
da eseguire e i dati che fungono da operandi per tali operazioni
2 CPU (central processing unit) o processore: è composto da una unità di
controllo per gestire le comunicazioni con tutte le unità del sistema e per
gestire il prelievo delle istruzioni (fetch) e la loro esecuzione e da una
esecuzione,
unità aritmetico logica (ALU) che esegue le istruzioni stesse e che gestisce
l’accesso agli operandi.
3.
3 INPUT/OUTPUT le porte di interfaccia con l’esterno (e con i corrispondenti
dispositivi periferici) .
Input Output
Memoria
CPU
3
4. a.a. 2007/2008
Architettura dei calcolatori
Architettura di Von Neumann (2/2)
• L’architettura di Von Neumann prevede una unità di elaborazione
centrale (CPU Central Processing Unit) che esegue sequenze di
istruzioni che sono riposte in una struttura di memorizzazione
(memoria).La memoria contiene anche i dati che sono le informazioni
che vengono elaborate dalla CPU in base alle istruzioni.
• Col termine di “memoria” ci si riferisce alla Memoria centrale,
direttamente interfacciata alla CPU, mentre la memoria di massa è
logicamente un sistema di memoria ma fisicamente un dispositivo di I/O
g p
• Dati ed Istruzioni sono fisicamente codificate come stringhe di bit, che
però vengono i t
ò interpretate differentemente dalla CPU
t t diff t t d ll
• Architettura di Von Neuman: in cui esiste una sola memoria che
contiene sia dati che istruzioni
• Architettura di Harvard: in cui dati e istruzioni sono memorizzati su due
memorie separate a cui la CPU accede contemporaneamente
4
5. a.a. 2007/2008
Architettura dei calcolatori
Interfaccia della CPU
• I segnali di interfaccia dei processori si dividono in:
– segnali di indirizzo per lo spazio di indirizzamento in memoria (n
2n locazioni di memoria indirizzabili)
segnali
– segnali di dato (indica il massimo parallelismo di parola nel
trasferimento)
– segnali di controllo
Arbitraggio
Indirizzi
Coprocessore
Dati CPU
o multiprocessore
Controllo
C t ll
Stato interno
del
trasferimento
Interruzioni
Reset Clk Ready
Vcc/ gnd
5
6. a.a. 2007/2008
Architettura dei calcolatori
Progetto di un calcolatore (1/2)
Progetto della CPU
1) definizione dell ISA. Più CPU sono compatibili a livello di ISA ma non di
dell’ISA ISA,
architettura interna (ad es: Intel Pentium , Intel Celeron, AMD, …)
2) definizione dei blocchi logici della CPU a livello di microarchitettura (come
realizzare la pipeline, la superscalarità)
3) definizione di blocchi aggiuntivi per migliorare le prestazioni (ad es branch
es.
prediction table)
4) come progettare i singoli blocchi (come realizzare le ALU i registri e
ALU,
soprattutto l’unità di controllo)
5) come interfacciare la CPU con l’esterno (interfaccia con la memoria e struttura
l esterno
dei bus)
Se poi il sistema è multiprocessor le scelte progettuali sono ancora più numerose
numerose.
6
7. a.a. 2007/2008
Architettura dei calcolatori
Progetto di un calcolatore (2/2)
Definizione dell’architettura del calcolatore
• Definizione dell’architettura delle memorie (gerarchia di memorie,
memorie cache di primo e secondo livello, parallelismo delle memorie,
interallacciamento, )
interallacciamento …)
• Scelte tecnologiche (
g (RAM,DRAM..)
, )
• Interfaccia di bus con le memorie
• Definizione dei bus di I/O (bus PCI, ISA, EIDE, SCSI,…)
• Scelta della gestione delle periferiche
• Scelta delle periferiche
7
8. a.a. 2007/2008
Architettura dei calcolatori
La CPU
• Dal punto di vista strutturale la CPU è composta da alcune parti combinatorie:
– ALU, decodifica degli indirizzi per i registri interni
– decodifica delle istruzioni,…
• e d alcune parti sequenziali
da l i i li
Data path
– REGISTRI di dato e controllo
– Unità di Controllo (Control Unit)
Istruz. s.contr.
Segnali di
• Dal punto di vista funzionale si divide in Unità di controllo nel
controllo
– Data path (o execution unit): calcolatore
il percorso dei dati
– Control unit (l’unità di controllo)
Memorie
I/O
• l’unità di elaborazione acquisisce istruzioni e dati, passa le istruzioni alla unità di
controllo, esegue le operazioni di ALU, genera i risultati, calcola il prossimo
indirizzo…
• la unità di controllo è una FSM che controlla l’unita’ di elaborazione ed i segnali
con l’esterno
• L’implementazione a livello di reti logiche e la progettazione a livello RTL
(corrispondente alla microarchitett ra) è dipendente dalla famiglia delle CPU e
microarchitettura)
dalla casa costruttrice
8
9. a.a. 2007/2008
Architettura dei calcolatori
Organizzazione di un sistema digitale
• Definizione dell’organizzazione interna del calcolatore
– Insieme dei registri e delle loro funzioni
– Insieme delle microoperazioni consentite
– Segnali di controllo che controllano la sequenza di microoperazioni necessaria a
realizzare una certa funzione
• Questo livello della descrizione di un sistema digitale viene detto Register
Transfer Level (RTL) ovvero livello dei trasferimenti tra registri.
• Per evitare di specificare i dettagli a parole si utilizza un formalismo apposito
detto anche Register Transfer Language.
Language
• In questo linguaggio le lettere maiuscole (seguite eventualmente da numeri)
indicano i registri: R0, A, MDR, IP. Alcuni di questi sono acronimi per le funzioni
svolte.
svolte
• A volte si indicano porzioni di registri, quali singoli bit o gruppi di bit:
Rappresentazione dei singoli bit
Registro
R1 7 6 5 4 3 2 1 0
15 15 87 0
0
R2 PC(H) PC(L)
Numerazione d i bit
N i dei Sotto
S tt campi
i
9
10. a.a. 2007/2008
Architettura dei calcolatori
Trasferimenti tra registri
• Un trasferimento è la copia del contenuto di un registro in un altro.
Un trasferimento si indica con: R2 ← R1 e indica di caricare il contenuto di R1 in
•
R2 in un solo ciclo di clock
clock.
• Per realizzare la microoperazione è necessario prevedere un collegamento tra
l’uscita di R1 e l’ingresso di R2 e di avere delle linee di controllo che consentano
di comandare la contemporanea abilitazione dell’uscita di R1 e la scrittura su R2
dell uscita R2.
• E’ possibile poi indicare una condizione in base alla quale eseguire la
microoperazione, dove la condizione è un segnale di controllo binario:
P: R2 ← R1
• Questo indica che se P=1 viene eseguito il trasferimento da R1 a R2.
• Con uno schema a blocchi:
Circuito Load
P
R2 Clock
di
n
controllo
R1
10
11. a.a. 2007/2008
Architettura dei calcolatori
Altre operazioni
• Le operazioni simultanee vengono separate con una virgola:
P: R3 ← R5, MAR ← IR
• In questo caso se la condizione P è vera R5 viene copiato in R3 e il
vera,
registro IR nel registro MAR.
• Con le parentesi tonde si indicano le parti di un registro:
R4(0-7) ← R6(8-15)
• In questo esempio si trasferiscono i bit da 8 a 15 di R6 in quelli da 0 a 7
di R4. Come sempre si dovranno p
p prevedere le opportune linee p il
pp per
trasferimento a livello di architettura hardware.
11
12. a.a. 2007/2008
Architettura dei calcolatori
Connessioni tra i registri
• In un sistema digitale con molti registri non è possibile avere linee di
trasferimento da ogni registro ad ogni altro registro. Questo per la
semplice considerazione che per n registri servirebbero n(n 1) linee di
n(n-1)
connessione ognuna della dimensione del numero di bit dei registri. In un
processore con 32 registri a 32 bit, si avrebbero 31744 piste!
• La soluzione adottata è quella di connettere tutti i registri ad un unico
sistema di comunicazione controllato da alcuni segnali di controllo che
decidono quale registro è connesso come sorgente, e q
q g g quale come
destinazione.
• Questo canale di comunicazione è noto con il nome di bus.
• Con
C questa architettura non è possibile trasferire dati
t hit tt ibil t f i d ti
contemporaneamente tra più coppie di registri.
• Un bus si può realizzare sia con buffer tri-state sia con una struttura a
p
multiplexer.
12
13. a.a. 2007/2008
Architettura dei calcolatori
Trasferimenti con la memoria
• Collettivamente la memoria viene vista come un dispositivo denotato con M.
• Dato che esistono numerose celle, è necessario specificare l’indirizzo della cella
da leggere o scrivere
scrivere.
• Tipicamente questo indirizzo viene posto in un registro apposito denominato
Memory Address Register (MAR) che viene inviato alla memoria.
M
Read
Memory
MAR
unit Write
Data out Data in
• Esiste poi il registro Memory Data Register (MDR) che è il filtro tra la memoria e
la CPU. Tutti i trasferimenti avvengono con questo registro:
MDR ← M[MAR]
M[MAR] ← MDR
• La prima è una operazione di lettura, mentre la seconda è una operazione di
scrittura.
13
14. a.a. 2007/2008
Architettura dei calcolatori
Microarchitettura della CPU (1/2)
CPU
Control unit
clock
Ctrl. sgn.
Instr.
Execution unit
Data out
Instr.
Instr
(data path)
(d h)
Data in
Data bus Address bus
(external) control bus
memory
y
14
15. a.a. 2007/2008
Architettura dei calcolatori
Microarchitettura della CPU (2/2)
MEM na
ctrl bus addr bus
data bus nd
MDR
IR
ALU
REG
CTRL
ctrl signals PC
UNIT
MAR
Registri interni ed unità di elaborazione
IR: instruction register (ultima istruzione prelevata dalla memoria)
REG: register file
PC: program counter (indirizzo della prossima istruzione da eseguire)
MAR: memory address register
MDR: memory data register
ALU: Arithmetic logic unit
15
16. a.a. 2007/2008
Architettura dei calcolatori
Ciclo di istruzione
• Il processore esegue ciclicamente le istruzioni che compongono il programma:
DECODE
FETCH
EXECUTE
1. MAR PC
MDR M[MAR]
[ ] INSTRUCTION FETCH
IR MDR
2. PC PC+n; DECODE DECODE
3. Execute operation EXECUTE (operand fetch)
• n è il numero di byte della istruzione
• le fasi 1 e 2 sono comuni a tutte le istruzioni; la fase 3 dipende dal tipo di istruzione
da eseguire.
• La unità di controllo è una macchina a stati che gestisce la temporizzazione e la
sequenzializzazione dei 3 macro-stati
q
16
17. a.a. 2007/2008
Architettura dei calcolatori
Esempio
• IR contenuto dell’IR
• A,B,ALUout porte logiche della ALU
• Esecuzione dell’istruzione var1=100+var2 che si trova all’indirizzo a0 ( nel PC)
supponendo che esista una istruzione macchina unica per tutte queste
operazioni
MAR PC;
fetch
MDR M[MAR];
IR MDR;
decode
DECODE, PC PC+LUNGH ISTR;
MAR IR[VAR2]; IL CAMPO DELL’ISTRUZIONE CHE
mem_rd
CONTIENE L’INDIRIZZO VAR2
MDR M[MAR];
execute
A MDR B IR[100]
MDR, IR[100]; somma
ALUout A+B;
MAR IR[VAR1], MDR ALUout;
scrittura risultato in memoria
M[MAR] MDR
17
18. a.a. 2007/2008
Architettura dei calcolatori
Instruction fetch
General Purpose ALU
Register set
g
MDR Status Reg
(C)
(B)
Data
(B)
Addr
Add
Contr.
MAR IR
memoria
(A) (D) Control FSM
PC
Address
Generator
1. Instruction Fetch
MAR PC (A)
MDR M[MAR] (B)
IR MDR (C)
… PC PC+n (D)
18
19. a.a. 2007/2008
Architettura dei calcolatori
Instruction decode
General Purpose ALU
Register set
MDR Status Reg
Status Reg
Data
Addr
Add
Contr.
MAR IR IR
Control FSM
PC
Address
Address
Generator
Generator
La Control Unit decodifica l’istruzione corrente prelevandola dall’IR
Se
S possibile contemporaneamente viene eseguito il R i t F t h ossia il
ibil t ti it Register Fetch i
prelevamento dei dati dai registri per eventuali operazioni di ALU (o per la generazione
di indirizzi)
19
20. a.a. 2007/2008
Architettura dei calcolatori
Execute (AluOP)
General Purpose ALU
ALU
Register set
MDR Status Reg
Status Reg
Data
Addr
Contr.
IR
MAR
Control FSM
PC
Address
Generator
Execute (AluOP)
es
es: add r1,r2,r3 (sintassi so g, des r3 r1+r2)
, , 3 (s ass sorg, dest: 3 )
add AX, BX sintassi dest sorg AX AX+BX
20
21. a.a. 2007/2008
Architettura dei calcolatori
Execute (load)
memoria General Purpose
ALU
Register set
(C)
MDR Status Reg
(B)
Data
(B)
Addr
Add
Contr.
MAR IR
(A) Control FSM
PC
Address
Address
Generator
Generator
Execute (load)
es ld R1, ALFA R1 M[ALFA]
MAR IR[ALFA]
[ ] ()
(A)
MDR M[MAR] (B)
R1 MDR (C)
caricamento dei dati dalla memoria al registro interno
21
22. a.a. 2007/2008
Architettura dei calcolatori
Execute (store)
memoria General Purpose
ALU
Register set
g
(B)
Status Reg
MDR
(C)
Data
(C)
Addr
Add
Contr.
MAR IR
(A) Control FSM
PC
Address
Address
Generator
Generator
Execute (store)
es st ALFA, R1 M[ALFA] R1
MAR IR[ALFA] (A)
MDR R1 (B)
M[MAR] MDR (C)
scrittura dei dati in memoria da un registro interno
22
23. a.a. 2007/2008
Architettura dei calcolatori
Esempio
Esempio:
• deve essere eseguita l’istruzione add r1, alfa che si trova all’indirizzo A0 di memoria
(contenuto nel PC)
• r1=r1+alfa dove alfa è locazione di memoria (secondo la sintassi Intel-like, destinazione
sorgente)
• siano A e B le porte di ingresso della ALU e ALUout il registro di uscita
Per eseguire questa istruzione devono essere eseguite tutte le microperazioni seguenti:
MAR <-PC
MDR <-M[MAR] fetch
IR<- MDR
PC<-PC+N ; DECODE (IR) decode
MAR<-IR(opadr)
MDR<-M[MAR]
A<-MDR; B<-r1 execute
ALUOUT <-A+B
< A+B
r1<-ALUOUT
23