Microelettronica -...
Transcript of Microelettronica -...
S. Salvatori - Microelettronica – marzo 2017 – (1 di 70)
Microelettronica
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.
Corso introduttivo di progettazione di sistemi embedded
S. Salvatori - Microelettronica – marzo 2017 – (2 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 – (3 di 70)
Intel 4004
2300 transistor
S. Salvatori - Microelettronica – marzo 2017 – (4 di 70)
La tecnologia di oggi
S. Salvatori - Microelettronica – marzo 2017 – (5 di 70)
Livelli di interconnessione
S. Salvatori - Microelettronica – marzo 2017 – (6 di 70)
Un processore di oggi
> 109 transistor
S. Salvatori - Microelettronica – marzo 2017 – (7 di 70)
Legge di Moore
curve shows transistor count doubling every two years
2,300
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
2,600,000,000
1971 1980 1990 2000 2011
Date of introduction
4004
8008
8080
RCA 1802
8085
8088
Z80
MOS 6502
6809
8086
80186
6800
68000
80286
80386
80486
PentiumAMD K5
Pentium IIPentium III
AMD K6
AMD K6-IIIAMD K7
Pentium 4Barton Atom
AMD K8
Itanium 2 CellCore 2 Duo
AMD K10Itanium 2 with 9MB cache
POWER6
Core i7 (Quad)Six-Core Opteron 2400
8-Core Xeon Nehalem-EXQuad-Core Itanium TukwilaQuad-core z1968-core POWER7
10-Core Xeon Westmere-EX
16-Core SPARC T3
Six-Core Core i7
Six-Core Xeon 7400
Dual-Core Itanium 2
AMD K10
Microprocessor Transistor Counts 1971-2011 & Moore's Law
Tra
nsis
tor
coun
t
Il numero di transistor integrati in un chip
raddoppia ogni anno
S. Salvatori - Microelettronica – marzo 2017 – (8 di 70)
Legge di Moore
curve shows transistor count doubling every two years
2,300
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
2,600,000,000
1971 1980 1990 2000 2011
Date of introduction
4004
8008
8080
RCA 1802
8085
8088
Z80
MOS 6502
6809
8086
80186
6800
68000
80286
80386
80486
PentiumAMD K5
Pentium IIPentium III
AMD K6
AMD K6-IIIAMD K7
Pentium 4Barton Atom
AMD K8
Itanium 2 CellCore 2 Duo
AMD K10Itanium 2 with 9MB cache
POWER6
Core i7 (Quad)Six-Core Opteron 2400
8-Core Xeon Nehalem-EXQuad-Core Itanium TukwilaQuad-core z1968-core POWER7
10-Core Xeon Westmere-EX
16-Core SPARC T3
Six-Core Core i7
Six-Core Xeon 7400
Dual-Core Itanium 2
AMD K10
Microprocessor Transistor Counts 1971-2011 & Moore's Law
Tra
nsis
tor
coun
t
109
curve shows transistor count doubling every two years
2,300
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
2,600,000,000
1971 1980 1990 2000 2011
Date of introduction
4004
8008
8080
RCA 1802
8085
8088
Z80
MOS 6502
6809
8086
80186
6800
68000
80286
80386
80486
PentiumAMD K5
Pentium IIPentium III
AMD K6
AMD K6-IIIAMD K7
Pentium 4Barton Atom
AMD K8
Itanium 2 CellCore 2 Duo
AMD K10Itanium 2 with 9MB cache
POWER6
Core i7 (Quad)Six-Core Opteron 2400
8-Core Xeon Nehalem-EXQuad-Core Itanium TukwilaQuad-core z1968-core POWER7
10-Core Xeon Westmere-EX
16-Core SPARC T3
Six-Core Core i7
Six-Core Xeon 7400
Dual-Core Itanium 2
AMD K10
Microprocessor Transistor Counts 1971-2011 & Moore's Law
Tra
nsis
tor
coun
t
S. Salvatori - Microelettronica – marzo 2017 – (9 di 70)
Come lavora un processore:
cenni sulla
programmazione strutturata
S. Salvatori - Microelettronica – marzo 2017 – (10 di 70)
Il processore come macchina programmabile
● Un processore è un sistema elettronico in grado di eseguire un programma
address
instructions
processor
memory
registers
instructions
data
00..0016
FF..FF16
and data
S. Salvatori - Microelettronica – marzo 2017 – (11 di 70)
Descrizione di un algoritmo
input/output
istruzione
condizione
inizio/fine
connessione
blocco di istruzioni
S. Salvatori - Microelettronica – marzo 2017 – (12 di 70)
Programmazione strutturata
sequenza
T F
condizione
cond T
F
ciclo while
cond
S. Salvatori - Microelettronica – marzo 2017 – (13 di 70)
Esempio
In B
somma
end
Out C
C ← A + B
In A
Addizione tra due numeri
input
assegnazione
output
S. Salvatori - Microelettronica – marzo 2017 – (14 di 70)
Esempio
max
end
Out max
In A , B
Massimo tra due numeri
T FA > B
max ← A max ← B
confronto
S. Salvatori - Microelettronica – marzo 2017 – (15 di 70)
Esempio
end
Out max
In A
Ricerca massimo (-1 per uscire)
T FA > max
max ← A
A != -1
T
F
A ← 0
max ← 0
max
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)
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 – (18 di 70)
Ciclo for
cond. i
T
F
i ← iniz
modif. i
S. Salvatori - Microelettronica – marzo 2017 – (19 di 70)
Ciclo for
cond. i
T
F
i ← iniz
modif. i
T
F
ciclo while
cond
S. Salvatori - Microelettronica – marzo 2017 – (20 di 70)
Ciclo for: esempio
i > 0
T
F
I ← 3600000
i ← i - 1
for(i = 3600000 ; i>0; i){
...}
i = 3600000;while(i>0){
... i; }
Ciclo while equivalente
S. Salvatori - Microelettronica – marzo 2017 – (21 di 70)
Ciclo for: esempio
i > 0
T
F
I ← 3600000
i ← i - 1
for(i = 3600000 ; i>0; i){
...}
Assegnazione iniziale
Condizione per rimanere nel ciclo
Operazione di aggiornamento alla fine
di un ciclo
blocco di istruzione
eseguite ad ogni ciclo
S. Salvatori - Microelettronica – marzo 2017 – (22 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 – (23 di 70)
Ciclo per un uC
true
T
F
funzione
iniziallizz.
start
end
Ciclo infinito
S. Salvatori - Microelettronica – marzo 2017 – (24 di 70)
Ciclo per un uC
true
T
F
funzione
iniziallizz.
start
end
... //istruzioni di inizializzazione
while(1){
... //istruzioni eseguite dal // uC durante il suo lavoro }
S. Salvatori - Microelettronica – marzo 2017 – (25 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 – (26 di 70)
“4 eventi”
IN = 0
T
F
evento
return
Aspetta che l'input “esca” dallo stato basso
Qui c'è stato il fronte positivo
Att.ne: che succede se rientro “troppo presto”?
Specifiche:
• 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.
S. Salvatori - Microelettronica – marzo 2017 – (27 di 70)
“4 eventi”
IN = 0
T
F
evento
return
Inizio “test”
fine “test”
Inizio nuovo “test”
IN:
Così uscirei subito ma in realtà non c'è stato il nuovo fronte positivo
S. Salvatori - Microelettronica – marzo 2017 – (28 di 70)
“4 eventi”
IN = 0
T
F
evento
IN = 1
T
F
return
Aspetta che l'input “esca” dallo stato basso
Qui c'è stato il fronte positivo
Aspetta che l'input torni nello stato basso
Specifiche:
• 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.
S. Salvatori - Microelettronica – marzo 2017 – (29 di 70)
“4 eventi”
IN = 0
T
F
evento
IN = 1
T
F
return
Specifiche:
• 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.
start
true
T
e < 4
T
F
evento
e ← e + 1
e ← 0
out ← 0
out ← 1
end
S. Salvatori - Microelettronica – marzo 2017 – (30 di 70)
Architettura e organizzazione
di un microprocessore
S. Salvatori - Microelettronica – marzo 2017 – (31 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 – (32 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 – (33 di 70)
Programma memorizzato
● Un processore è un automa che esegue istruzioni scritte nella memoria programma
address
instructions
processor
memory
registers
instructions
data
00..0016
FF..FF16
and data
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
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)
S. Salvatori - Microelettronica – marzo 2017 – (34 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 – (35 di 70)
Elementi fondamentali di una CPU
ALU
REG
REG
MDR
PC
MAR
FUNZ
AI BUSESTERNI
DECODER
IR
R0
R1
Rn
BANCODI
REGISTRI
...
SR
incrementer
S. Salvatori - Microelettronica – marzo 2017 – (36 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