Microelettronica
Corso introduttivo di progettazione di sistemi embedded
Elementi per il progetto di un
microprocessore
prof. Stefano Salvatori
A.A. 2016/2017
Eccetto dove diversamente specificato, i contenuti di questo documento sono rilasciati sotto Licenza Creative Commons Attribuzione 3.0 Italia.
S. Salvatori - Microelettronica – marzo 2017 – (1 di 70)
Sommario
●
Evoluzione della tecnologia
●
L'esecuzione di una istruzione
–
Programmazione strutturata
●
Architettura e organizzazione di un microprocessore
●
Progetto di un processore minimo
●
–
livello datapath
–
sintesi FSM
Note sul progetto di un set di istruzioni
–
formato
–
tipi
–
modi di indirizzamento
S. Salvatori - Microelettronica – marzo 2017 – (2 di 70)
Intel 4004
2300 transistor
S. Salvatori - Microelettronica – marzo 2017 – (3 di 70)
La tecnologia di oggi
S. Salvatori - Microelettronica – marzo 2017 – (4 di 70)
Livelli di interconnessione
S. Salvatori - Microelettronica – marzo 2017 – (5 di 70)
Un processore di oggi
> 109 transistor
S. Salvatori - Microelettronica – marzo 2017 – (6 di 70)
Legge di Moore
Microprocessor Transistor Counts 1971-2011 & Moore's Law
16-Core SPARC T3
Six-Core Core i7
Six-Core Xeon 7400
2,600,000,000
Dual-Core Itanium 2
AMD K10
POWER6
Itanium 2 with 9MB cache
AMD K10
1,000,000,000
AMD K8
Barton
Pentium 4
Transistor count
8-core POWER7
Quad-core z196
Quad-Core Itanium Tukwila
8-Core Xeon Nehalem-EX
Six-Core Opteron 2400
Core i7 (Quad)
Core 2 Duo
Cell
Itanium 2
100,000,000
10-Core Xeon Westmere-EX
curve shows transistor
count doubling every
two years
10,000,000
Atom
AMD K7
AMD K6-III
AMD K6
Pentium III
Pentium II
Il numero di transistor
integrati in un chip
raddoppia ogni anno
AMD K5
Pentium
80486
1,000,000
80386
80286
100,000
68000
8088
8086
8085
6800
10,000
6809
Z80
8080
MOS 6502
8008
2,300
4004
80186
RCA 1802
1971
1980
1990
2000
2011
Date of introduction
S. Salvatori - Microelettronica – marzo 2017 – (7 di 70)
Legge di Moore
Microprocessor Transistor Counts 1971-2011 & Moore's Law
16-Core SPARC T3
sor Transistor Counts 1971-2011 & Moore's Law
Six-Core Core i7
Six-Core Xeon 7400
2,600,000,000
Dual-Core Itanium 2
AMD K10
POWER6
Itanium 2 with 9MB cache
AMD K10
1,000,000,000
AMD K8
Barton
Transistor count
Pentium 4
Pentium
80486
80386
80286
100,000
68000
8085
6800
9
Dual-Core Itanium 2
AMD K10
POWER6
Itanium 2 with 9MB cache
AMD K10
80186
6809
10-Core Xeon Westmere-EX
8-core POWER7
Quad-core z196
Quad-Core Itanium Tukwila
8-Core Xeon Nehalem-EX
Six-Core Opteron 2400
Core i7 (Quad)
Core 2 Duo
Cell
Itanium 2
AMD K8
Z80
8080
MOS 6502
8008
4004
10
8088
8086
10,000
Six-Core Core i7
Six-Core Xeon 7400
AMD K6
Pentium III
Pentium II
AMD K5
1,000,000
16-Core SPARC T3
Atom
AMD K7
AMD K6-III
curve shows transistor
count doubling every
two years
10,000,000
2,300
8-core POWER7
Quad-core z196
Quad-Core Itanium Tukwila
8-Core Xeon Nehalem-EX
Six-Core Opteron 2400
Core i7 (Quad)
Core 2 Duo
Cell
Itanium 2
100,000,000
10-Core Xeon Westmere-EX
RCA 1802
Pentium 4
1971
1980
1990
curve shows transistor
Date of introduction
count doubling every
two years
Barton
Atom
2011
2000
AMD K7
AMD K6-III
S.
AMD K6
Pentium III
Salvatori
Pentium II- Microelettronica
– marzo 2017 – (8 di 70)
Come lavora un processore:
cenni sulla
programmazione strutturata
S. Salvatori - Microelettronica – marzo 2017 – (9 di 70)
Il processore come macchina programmabile
●
Un processore è un sistema elettronico in
grado di eseguire un programma
FF..FF16
instructions
registers
address
data
processor
instructions
and data
memory
00..0016
S. Salvatori - Microelettronica – marzo 2017 – (10 di 70)
Descrizione di un algoritmo
input/output
istruzione
blocco di
istruzioni
condizione
inizio/fine
connessione
S. Salvatori - Microelettronica – marzo 2017 – (11 di 70)
Programmazione strutturata
cond
T
cond
F
F
T
condizione
sequenza
ciclo while
S. Salvatori - Microelettronica – marzo 2017 – (12 di 70)
Esempio
somma
Addizione tra due
numeri
In A
input
In B
C ←A+ B
Out C
assegnazione
output
end
S. Salvatori - Microelettronica – marzo 2017 – (13 di 70)
Esempio
max
Massimo tra due
numeri
In A , B
T
A>B
max ← A
F
confronto
max ← B
Out max
end
S. Salvatori - Microelettronica – marzo 2017 – (14 di 70)
max
Esempio
max ← 0
A←0
Ricerca massimo
(-1 per uscire)
A != -1
F
T
In A
T
A > max
F
max ← A
Out max
end
S. Salvatori - Microelettronica
– marzo 2017 – (15 di 70)
Esercizi
1. Disegnare la struttura del ciclo for;
2. Disegnare la struttura del diagramma di flusso che
descrive il lavoro svolto da un microcontrollore;
3. Disegnare il diagramma di flusso del lavoro svolto da un
sistema a uC che risponda alle seguenti specifiche:
•
•
•
Acquisisca lo stato di un ingresso;
Ogni volta che l'ingresso passa dallo stato logico basso a quello alto
si genera un evento;
Una uscita deve diventare alta ogni 4 eventi.
S. Salvatori - Microelettronica – marzo 2017 – (16 di 70)
Esercizi
1. Disegnare la struttura del ciclo for;
2. Disegnare la struttura del diagramma di flusso che
descrive il lavoro svolto da un microcontrollore;
3. Disegnare il diagramma di flusso del lavoro svolto da un
sistema a uC che risponda alle seguenti specifiche:
•
•
•
Acquisisca lo stato di un ingresso;
Ogni volta che l'ingresso passa dallo stato logico basso a quello alto
si genera un evento;
Una uscita deve diventare alta ogni 4 eventi.
S. Salvatori - Microelettronica – marzo 2017 – (17 di 70)
Ciclo for
i ← iniz
cond. i
F
T
modif. i
S. Salvatori - Microelettronica – marzo 2017 – (18 di 70)
Ciclo for
i ← iniz
cond
T
F
cond. i
F
T
modif. i
ciclo while
S. Salvatori - Microelettronica – marzo 2017 – (19 di 70)
Ciclo for: esempio
for(i = 3600000 ; i>0; i­­)
{
...
}
I ← 3600000
i>0
F
T
i = 3600000;
while(i>0)
Ciclo while
{
equivalente
...
i­­; }
i←i-1
S. Salvatori - Microelettronica – marzo 2017 – (20 di 70)
Ciclo for: esempio
blocco di
istruzione
eseguite ad
ogni ciclo
for(i = 3600000 ; i>0; i­­)
{
...
}
I ← 3600000
i>0
F
T
Assegnazione
iniziale
i←i-1
Condizione per
rimanere nel ciclo
Operazione di
aggiornamento alla fine
di un ciclo
S. Salvatori - Microelettronica – marzo 2017 – (21 di 70)
Esercizi
1. Disegnare la struttura del ciclo for;
2. Disegnare la struttura del diagramma di flusso che
descrive il lavoro svolto da un microcontrollore;
3. Disegnare il diagramma di flusso del lavoro svolto da un
sistema a uC che risponda alle seguenti specifiche:
•
•
•
Acquisisca lo stato di un ingresso;
Ogni volta che l'ingresso passa dallo stato logico basso a quello alto
si genera un evento;
Una uscita deve diventare alta ogni 4 eventi.
S. Salvatori - Microelettronica – marzo 2017 – (22 di 70)
Ciclo per un uC
start
iniziallizz.
Ciclo
infinito
true
F
T
funzione
end
S. Salvatori - Microelettronica – marzo 2017 – (23 di 70)
Ciclo per un uC
... //istruzioni di inizializzazione
while(1)
{
... //istruzioni eseguite dal
// uC durante il suo lavoro }
start
iniziallizz.
true
F
T
funzione
end
S. Salvatori - Microelettronica – marzo 2017 – (24 di 70)
Esercizi
1. Disegnare la struttura del ciclo for;
2. Disegnare la struttura del diagramma di flusso che
descrive il lavoro svolto da un microcontrollore;
3. Disegnare il diagramma di flusso del lavoro svolto da un
sistema a uC che risponda alle seguenti specifiche:
•
•
•
Acquisisca lo stato di un ingresso;
Ogni volta che l'ingresso passa dallo stato logico basso a quello alto
si genera un evento;
Una uscita deve diventare alta ogni 4 eventi.
S. Salvatori - Microelettronica – marzo 2017 – (25 di 70)
“4 eventi”
Specifiche:
•
•
•
evento
Acquisire lo stato di un
ingresso;
Ogni volta che l'ingresso
passa dallo stato logico
basso a quello alto si
genera un evento;
IN = 0
F
Aspetta che l'input “esca”
dallo stato basso
T
Una uscita deve diventare
alta ogni 4 eventi.
return
Qui c'è stato il fronte
positivo
Att.ne: che succede se rientro “troppo presto”?
S. Salvatori - Microelettronica – marzo 2017 – (26 di 70)
“4 eventi”
evento
IN = 0
fine
“test”
F
T
return
Inizio
“test”
Inizio
nuovo
“test”
IN:
Così uscirei subito ma
in realtà non c'è stato il
nuovo fronte positivo
S. Salvatori - Microelettronica – marzo 2017 – (27 di 70)
“4 eventi”
Specifiche:
•
•
•
evento
Acquisire lo stato di un
ingresso;
Ogni volta che l'ingresso
passa dallo stato logico
basso a quello alto si
genera un evento;
IN = 0
F
Aspetta che l'input “esca”
dallo stato basso
T
Qui c'è stato il fronte
positivo
Una uscita deve diventare
alta ogni 4 eventi.
IN = 1
T
F
Aspetta che l'input torni
nello stato basso
return
S. Salvatori - Microelettronica – marzo 2017 – (28 di 70)
•
•
•
“4 eventi”
start
Specifiche:
true
Acquisire lo stato di un
ingresso;
Ogni volta che l'ingresso
passa dallo stato logico
basso a quello alto si
genera un evento;
Una uscita deve diventare
alta ogni 4 eventi.
end
T
out ← 0
e←0
e<4
evento
F
IN = 0
F
T
T
evento
IN = 1
e←e+1
out ← 1
T
return
S. Salvatori - Microelettronica – marzo 2017 – (29 di 70)
F
Architettura e organizzazione
di un microprocessore
S. Salvatori - Microelettronica – marzo 2017 – (30 di 70)
Architettura e organizzazione di un uP
●
●
●
●
Un computer general purpose consiste in un sistema
denominato: computer digitale con programma memorizzato
La tecnologia microelettronica ha consentito di integrare
milioni di MOS su un solo chip dando luogo alla nascita di
sistemi ultraveloci e di complessità sempre più alta
Il progresso nel campo dei uP non si è avuto solo grazie al
progresso tecnologico
Allo sviluppo hanno certamente contribuito le capacità degli
ingegneri in grado di definire sia l'architettura che
l'organizzazione di un microcomputer
S. Salvatori - Microelettronica – marzo 2017 – (31 di 70)
Architettura e organizzazione di un uP
●
●
Architettura: descrive il computer dal punto di vista dell'utente
●
Set delle istruzioni
●
Registri disponibili
●
Gestione della memoria
●
Gestione delle eccezioni …
Organizzazione: descrive come è implementata l'architettura
●
Struttura della pipeline
●
Chache
●
Soluzioni hardware ...
S. Salvatori - Microelettronica – marzo 2017 – (32 di 70)
Programma memorizzato
●
Un processore è un automa che esegue istruzioni scritte
nella memoria programma
FF..FF16
instructions
registers
address
data
processor
instructions
and data
memory
dati e programma sono immagazzinati nella
stessa memoria  le istruzioni sono
trattate come i dati (questo può anche
portare a un codice che si auto-modifica)
00..0016
 Lo stato del sistema è
determinato dai valori
memorizzati in locazioni di
memoria e in registri interni al
uP
 ogni istruzione definisce le
modalità di cambiamento dei
dati e quindi dello stato
 essendo programmabili, i uP
risultano dispositivi universali,
potendo eseguire qualunque
algoritmo
S. Salvatori - Microelettronica – marzo 2017 – (33 di 70)
Astrazione nella progettazione
●
●
●
●
I uP sono dispositivi che integrano milioni di MOS che
operano a velocità elevatissima.
I dispositivi commutano milioni di volte al secondo.
Il sistema deve operare in modo ripetibile e controllato per
non cadere in uno stato imprevisto (collasso).
Come può essere progettato un sistema tanto complesso?
–
→ livelli di astrazione che abbiamo visto
S. Salvatori - Microelettronica – marzo 2017 – (34 di 70)
Elementi fondamentali di una CPU
incrementer
PC
... DECODER
MAR
AI BUS
ESTERNI
IR
MDR
R0
REG
FUNZ
SR
R1
ALU
BANCO
DI
REGISTRI
Rn
REG
S. Salvatori - Microelettronica – marzo 2017 – (35 di 70)
Il processore minimo
●
Il tipo più semplice di processore prevederà:
• un PC, Program Counter, per puntare all’istruzione
da eseguire
• un IR, Instruction Register, che mantiene il codice
dell’istruzione da eseguire
• un registro, Accumulatore, in grado di
immagazzinare il dato su cui lavorare in un certo
istante
• una ALU, Arithmetic Logic Unit, in grado di eseguire
operazioni elementari
• una unità di decodifica e controllo che imposterà le
azioni in funzione dell’istruzione
MU0..6
S. Salvatori - Microelettronica – marzo 2017 – (36 di 70)