Architettura
IA - 32
Politecnico di Torino
Dip. di Automatica e Informatica
1
Prof. Marco Mezzalama – a.a. 06/07
IA – 32 (IA – 16) IL PROCESSORE PENTIUM
2
Prof. Marco Mezzalama – a.a. 06/07
3
Prof. Marco Mezzalama – a.a. 06/07
Caratteristiche Generali
del Pentium III
•
•
•
•
•
•
•
•
4
Versione Tualatin, 1999, con tecnologia di 0.13 micron.
Il chip è composto da circa 44 milioni transistor ed ha 370 pin.
Integra L1 cache e L2 cache (256KB)
A seconda dei modelli può lavorare ad una frequenza max di 1.5
GHz, con clock di sistema max a 133 MHz
Richiede un'unica tensione di alimentazione (1.65V).
Spazio di indirizzamento pari a 232=4Gbyte o 236=64Gbyte .
Opera in modo protetto, VM86 e real mode (accensione).
È orientato alla multiprogrammazione ed al multiprocessing.
Prof. Marco Mezzalama – a.a. 06/07
Caratteristiche Generali
del Pentium IV
The original Pentium 4, codenamed "Willamette", ran at
1.4 and 1.5 GHz and was released in November 2000 on the
Socket 423 platform, and later Socket 478 from 1.5GHz to
2GHz. Notable with the introduction of the Pentium 4 was
the comparatively fast 400 MT/s FSB.
the Pentium 4 also came in a low-end Celeron version
(often referred to as Celeron 4) and a high-end Xeon
version intended for SMP configurations. A dual core
version was called the Pentium D.
5
Prof. Marco Mezzalama – a.a. 06/07
Caratteristiche Generali
del Pentium IV
• Versione Prescott 2M, 2005, con
tecnologia di 90 nm.
• Il chip è composto da circa 70 milioni
transistor
• Integra L1 cache e L2 cache (2 MB)
• A seconda dei modelli può lavorare ad
una frequenza max di 4 GHz,
• incorporated Hyper-Threading
• EM64 architecture
6
Prof. Marco Mezzalama – a.a. 06/07
Caratteristiche Generali
del Core 2
• Versione del giugno 2006, con
tecnologia di 65 nm.
• 2*cpu pentium
• not stress designs based on extremely
high clock speeds ( 3 GHz) but rather
improvements on other CPU features,
including cache efficiency and number
of cores.
• incorporated Hyper-Threading
• EM64 architecture
7
Prof. Marco Mezzalama – a.a. 06/07
IA – 32 (IA – 16) IL PROCESSORE PENTIUM
Il Pentium è un processore con architettura nativa a 32 bit (registri dati e
indirizzi) esteso nelle ultime versioni a 64 bit di indirizzamento.
Per compatibilità con i precedenti processori intel permette di realizzare
anche una architettura a 16 bit.
Opera in due modi fondamentali:
8
1.
Modo reale, che realizza di fatto l’emulazione hw dello 8086; tale
modo è attivo al reset ed è pertanto il modo nativo del BIOS nei PC
2.
Modo protetto, che realizza l’architettura a 32 bit e che è il modo base
di Windows MSW e di Linux
Prof. Marco Mezzalama – a.a. 06/07
I REGISTRI IA - 32
9
Prof. Marco Mezzalama – a.a. 06/07
I REGISTRI IN MODO REALE
10
Prof. Marco Mezzalama – a.a. 06/07
Registri
Possono essere suddivisi in 4 gruppi:
• registri di dato
• registri puntatore/di indirizzo
• registri di segmento
• Registri di controllo.
11
Prof. Marco Mezzalama – a.a. 06/07
I registri dati
ah
al
ax
eax
12
Prof. Marco Mezzalama – a.a. 06/07
I registri di controllo e di indirizzo
ip
eip
Indirizzamento: 232 = 4 GB; 216 = 64KB
13
Prof. Marco Mezzalama – a.a. 06/07
Modello Architetturale in modo reale
(8086)
Data Register
AH
AL
BH
BL
CH
CL
DH
DL
Instruction Queue
Address
20 pin
Control
Logic
Data
16 pin
Pointers
ARITMETIC
LOGIC UNIT
PSW
14
SP
BP
SI
DI
IP
Segment Register
CS
SS
DS
ES
Prof. Marco Mezzalama – a.a. 06/07
Clock
Registri di Dato
Sono AX (Accumulator Register), BX (Base Register), CX
(Count Register) e DX (Data Register).
Sono utilizzati per memorizzare operandi e risultato delle
operazioni.
Possono essere utilizzati come registri da 16 bit oppure
come coppie di registri da 8 bit.
BX può anche essere utilizzato nel calcolo di indirizzi.
CX viene anche utilizzato come contatore da talune
istruzioni.
DX contiene l'indirizzo di I/O in alcune istruzioni di I/O.
15
Prof. Marco Mezzalama – a.a. 06/07
Registri Puntatore
Sono IP, SP, BP, SI e DI.
IP (Instruction Pointer) contiene il puntatore alla prima
istruzione da eseguire. IP non può comparire
esplicitamente come operando di una istruzione.
SP (stack pointer) contiene il puntatore alla testa dello
stack.
BP (Base Pointer) viene utilizzato come base per fare
accesso all'interno dello stack.
SI (Source Index) e DI (Destination Index) vengono
utilizzati come registri indice.
16
Prof. Marco Mezzalama – a.a. 06/07
Registri di Segmento
Sono CS, DS, ES e SS.
Vengono utilizzati per costruire gli indirizzi fisici con i
quali fare accesso in memoria.
Contengono i puntatori all'inizio dei segmenti di codice, di
dato, di dato supplementare e di stack, rispettivamente.
17
Prof. Marco Mezzalama – a.a. 06/07
Segmentazione della Memoria
DS
}
Segmento Dati
CS
IP
}
Segmento Codice
SS
SP, BP
}
Segmento Stack
BX, SI, DI
18
Prof. Marco Mezzalama – a.a. 06/07
Calcolo degli indirizzi
Ogni volta che l'8086 deve generare un indirizzo da mettere
sull'A-bus (physical address), esso esegue una operazione di
somma tra il contenuto di un registro puntatore oppure di BX
(effective address o offset) ed il contenuto di un registro di
segmento (segment address).
La somma avviene dopo aver moltiplicato per 16 (shift di 4
posizioni) il contenuto del registro di segmento:
16 bit
+
16 bit
0000
=
20 bit
19
Prof. Marco Mezzalama – a.a. 06/07
Effective Address
Segment Address * 16
Physical Address
Segmenti
La memoria può essere considerata come organizzata in
segmenti, ognuno di dimensione pari a 64 Kbyte. Tutti i
segmenti cominciano ad indirizzi multipli di 16.
00000
Segmento 1
00010
Segmento 2
00020
Segmento 3
Segmento 4
00030
20
Prof. Marco Mezzalama – a.a. 06/07
Uso dei Segment Register
Una volta caricato l'indirizzo di
testa del segmento in un
segment register, tutti gli
indirizzi
all'interno
del
segmento sono esprimibili
attraverso
un
registro
contenente l'offset.
21
Segmento Dati
123A0
DS
123A0
157BB
SI
341B
Prof. Marco Mezzalama – a.a. 06/07
Paragrafi
I gruppi di 16 byte che iniziano ad indirizzi multipli di 16 si
definiscono paragrafi. La memoria è quindi organizzata in
paragrafi.
22
Paragrafo 0
00000h
Paragrafo 1
00010h
Paragrafo 2
00020h
Paragrafo 3
00030h
Paragrafo 4
00040h
Prof. Marco Mezzalama – a.a. 06/07
Vantaggi della Segmentazione
• Spazio di indirizzamento pari a 220, ma indirizzi su 16 bit
• Separazione tra dati, codice e stack
• Possibilità di avere più segmenti dello stesso tipo (dati,
codice o stack)
• Possibilità di sovrapposizione tra segmenti, con
minimizzazione della memoria sprecata
• Rilocabilità.
23
Prof. Marco Mezzalama – a.a. 06/07
Process Status Word (PSW)
È composta da 16 bit, ma solo 9 di questi sono usati. Ogni
bit corrisponde ad un flag. I flag si dividono in:
• flag di condizione
• flag di controllo.
OF DF IF TF SF ZF
24
Prof. Marco Mezzalama – a.a. 06/07
AF
PF
CF
Flag di Condizione
Vengono automaticamente scritti al termine di varie operazioni:
• SF (Sign Flag): coincide con il MSB del risultato dopo una operazione
aritmetica
• ZF (Zero Flag): vale 1 se il risultato è nullo, 0 altrimenti
• PF (Parity Flag): vale 1 se il numero di 1 negli 8 bit meno significativi del
risultato è pari, 0 altrimenti
• CF (Carry Flag): dopo le operazioni aritmetiche vale 1 se c'è stato riporto
(somma) o prestito (sottrazione); altre istruzioni ne fanno un uso particolare
• AF (Auxiliary Carry Flag): usato nell'aritmetica BCD; vale 1 se c'è stato
riporto (somma) o prestito (sottrazione) dal bit 3
• OF (Overflow Flag): vale 1 se l'ultima istruzione ha prodotto un overflow.
25
Prof. Marco Mezzalama – a.a. 06/07
Flag di Controllo
Possono venire scritti e manipolati da apposite istruzioni, e
servono a regolare il funzionamento di talune funzioni del
processore:
• DF (Direction Flag): utilizzato dalle istruzioni per la
manipolazione delle stringhe; se vale 0 le stringhe
vengono manipolate partendo dai caratteri
all'indirizzo minore, se vale 1 a partire dall'indirizzo
maggiore
• IF (Interrupt Flag): se vale 1, i segnali di Interrupt
mascherabili vengono percepiti dalla CPU, altrimenti
questi vengono ignorati
• TF (Trap Flag): se vale 1, viene eseguita una trap al
termine di ogni istruzione.
26
Prof. Marco Mezzalama – a.a. 06/07
Accesso alla Memoria
Il modello IA - 16 ha uno spazio di indirizzamento pari a 1
Mbyte.
Il processore è in grado di accedere in un solo passo ad un
byte oppure ad una word di memoria, purché questa inizi
ad un indirizzo pari. L'accesso a word allineate su indirizzi
dispari richiede due cicli di memoria.
27
Prof. Marco Mezzalama – a.a. 06/07
Rappresentazione delle word
Si presuppone che i dati
memorizzati in una word
abbiano
il
byte
meno
significativo memorizzato nel
byte con indirizzo minore
(little endian).
Nell'esempio si vede come sia
memorizzato il numero FF00.
00000
00
FF
FFFFF
28
Prof. Marco Mezzalama – a.a. 06/07
Parti Riservate della Memoria
Alcune parti della memoria non sono
libere, ma dedicate, oppure riservate.
Ad esempio la memoria dall'indirizzo
00000H allo 003FFH è riservata, in
quanto contiene la Interrupt Vector
Table.
Interrupt
Vector
Table
00000
003FF
Liberi
Gli indirizzi da FFFF0H a FFFFBH
sono
utilizzati
per
contenere
un’istruzione di salto alla routine di
FFFF0
Reset
Bootstrap
caricamento
di
programma
di
FFFFC
bootstrap.
Riservati
Le locazioni da FFFFCH a FFFFFH
29 sono invece riservate
perMezzalama
usi futuri.
Prof. Marco
– a.a. 06/07
Architettura
Interna
Bus Control
Logic
C-BUS
Address Bus
20 bit
Data
Bus
16 bit
INTRUCTION
QUEUE
BBUS
ES
CS
SS
DS
IP
BUS
INTERFACE
UNIT
EXECUTION UNIT
CONTROL
SYSTEM
ALU Data Bus
118 bit
Registri Temporanei
EXECUTION
UNIT
AH
BH
CH
DH
AL
BL
CL
DL
SP
BP
SI
DI
30
ARITMETIC
LOGIC UNIT
FLAGS
Prof. Marco Mezzalama – a.a. 06/07
Execution Unit (EU)
Provvede alla decodifica ed alla esecuzione delle istruzioni.
Riceve byte per byte le istruzioni dalla BIU, le decodifica,
genera gli indirizzi degli operandi (se necessario), li passa
alla BIU; una volta ricevuti tutti gli operandi esegue
l'istruzione, testa ed aggiorna i flag.
31
Prof. Marco Mezzalama – a.a. 06/07
Bus Interface Unit (BIU)
Gestisce tutte le operazioni da e per l'esterno:
• Fetch delle istruzioni
• Lettura e scrittura operandi e risultati di istruzioni
• Generazione degli indirizzi
• Accodamento delle istruzioni
• La BIU lavora in parallelo con la EU.
32
Prof. Marco Mezzalama – a.a. 06/07
Coda delle Istruzioni
La BIU gestisce una struttura FIFO di dimensioni pari a 6
byte in cui vengono accumulate le istruzioni che si prevede
dovranno essere eseguite.
La Coda delle Istruzioni viene caricata dalla BIU ogni qual
volta vi è una word libera, ed il bus è libero; in tal caso
viene letta dalla memoria la word successiva nel Code
Segment.
Se viene eseguita una istruzione di salto, la Coda delle
Istruzioni viene azzerata, e la EU deve attendere il tempo
necessario per il fetch di una nuova istruzione prima di
poter lavorare.
33
Prof. Marco Mezzalama – a.a. 06/07
Coda di istruzioni
Per ottimizzare il processamento della istruzioni da parte
della EU, la BIU esegue l’operazione di prefetch, ossia
carica preventivamente word di istruzioni dalla memoria.
Tali word vengono memorizzate nella coda di istruzioni.
34
Prof. Marco Mezzalama – a.a. 06/07
Coda di istruzioni
BIU
{
F2{
F1{
F3
35
BIU
{
F2{
F3
F1 {
EU
EU
a)
b)
Prof. Marco Mezzalama – a.a. 06/07
Pipeline
Si noti che si può avere: pipeline perfetto o ideale, o pipeline imperfetto
(parallelismo a livello di istruzioni)
36
Prof. Marco Mezzalama – a.a. 06/07
Pipeline ideale
stadio 1
stadio 2
stadio 3
stadio 4
F1
F2
F3
F4
F5
F6
F7
F8
F1
F2
F3
F4
F5
F6
F7
F1
F2
F3
F4
F5
F6
F1
F2
F3
F4
F5
t
37
Prof. Marco Mezzalama – a.a. 06/07
Pipeline
Sia detto:
Ts il tempo di esecuzione di una istruzione in un sistema
senza pipeline
Tp il tempo di esecuzione di una istruzione in un sistema
con pipeline
Si ha che:
Ts <= Tp (si veda la figura precedente)
Ciò avviene nel caso di pipeline imperfetto o nel caso di
blocco del pipeline perfetto
38
Prof. Marco Mezzalama – a.a. 06/07
Pipeline
Prestazioni, valutate in MIPS:
MIPSs = 1/Ts (sistema senza pipeline)
MIPSp = n/Tp (sistema con pipeline), con n numero stadi
MIPSs<<MIPSp
In teoria le prestazioni crescono linearmente con n, in
realtà esiste un asindoto per n >= na poiché al crescere di n
non si riesce più a soddisfare il vincolo del pipeline ottimo.
MIPS
na
39
Prof. Marco Mezzalama – a.a. 06/07
n
Pipeline
Un meccanismo di pipeline ideale è costituito da una serie
di stadi che eseguono un compito specifico in un tempo di
esecuzione costante ed uguale per tutti gli stadi.
Una catena di montaggio di una fabbrica automobilistica
funziona con il meccanismo di pipeline. L’assemblaggio di
una automobile è caratterizzata da diversi stadi da eseguire
in un ordine fisso e caratterizzato da un determinato tempo
di esecuzione (ad es. creazione scocca, montaggio del
motore, sistemazione degli interni e verniciatura).
I vari stadi produttivi sono posti in cascata e lavorano in
modo che l’uscita di uno stadio coincida con l’ingresso dello
stadio seguente.
40
Prof. Marco Mezzalama – a.a. 06/07
Pipeline
(segue)
A regime, ogni stadio è caratterizzato da una coda di
prodotti in attesa di essere processati.
Se i tempi di esecuzione delle varie fasi sono uguali il
sistema funziona in maniera ideale: ogni stadio è sempre
attivo e la sua coda è sempre vuota; al termine di
un’operazione il prodotto passa allo stadio a valle e l’unità
produttiva è pronta a processare il prodotto che gli arriva
dallo stadio a monte.
In una pipeline ideale il sistema globale riduce il tempo
medio di fabbricazione di un prodotto di un fattore pari al
numero di stadi della pipeline.
41
Prof. Marco Mezzalama – a.a. 06/07
Pipeline
imperfettonell’8086,386,486
F1
E1
F2
E2
F3
processamento sequenziale
F1
F2
E1
F3
E2
F3
processamento in parallelo (I singoli stadi
non hanno tempi di esecuzione uguali)
42
Prof. Marco Mezzalama – a.a. 06/07
E3
Pipeline nel Pentium
•L2 cache
•DRAM
L1
cache
F
43
Prof. Marco Mezzalama – a.a. 06/07
D1
D2
EX
WB
Pipeline nel Pentium
Nel processore Pentium esiste una vera pipeline di 5 stadi:
• la fase di fetch (eseguita dalla coda o da L1 cache)
• la fase di decodifica dell’istruzione, in cui vengono anche eseguiti
i controlli di privilegio e di attributi in modo protetto(D1)
• La fase di calcolo degli indirizzi degli operandi, in cui sono
calcolati gli indirizzi reali tramite segmentazione e
paginazione(D2)
• La fase di esecuzione, in sono eseguite le operazioni della ALU e
settati i flag
• La fase di write-back, in cui sono scritti i risultati nei registri o
nella L1 cache o in memoria.
Ogni stadio richiede 1 CLK
In alcune condizioni in uno stadio si inseriscono più periodi di
CLK, es. accesso alla memoria.
44
Prof. Marco Mezzalama – a.a. 06/07
Gestione della memoria
Durante il prefetch delle istruzioni, quando vi siano almeno
due byte liberi nella coda delle istruzioni, la BIU preleva
dalla memoria, o dalla L1 cache una parola allineata
all’indirizzo pari.
BIU
esterna
L1
cache
•L2 cache
•DRAM
45
Prof. Marco Mezzalama – a.a. 06/07
BIU
interna
Coda
Istr.
FETCH
Lo Stack
L'8086 prevede alcune strutture e meccanismi hadware per
la gestione di uno stack.
Lo stack corrisponde al segmento di memoria la cui testa è
puntata da SS. Il top dello stack (locazione riempita per
ultima) è puntato da SP.
Lo stack cresce dalle locazioni di memoria con indirizzo
maggiore verso quelle ad indirizzo minore.
Ogni operazione di PUSH decrementa di 2 unità SP e scrive
una word nella locazione da questo puntata.
Ogni operazione di POP estrae una word dalla locazione
puntata da SP, e successivamente incrementa SP di 2 unità.
46
Prof. Marco Mezzalama – a.a. 06/07
Esempio di Stack
bottom of the stack 1068
FF
FF
1066
00
A0
1064
13
B4
1062
45
09
top of the stack 1060
34
00
SS
01
05
SP
00
10
105E
105C
105A
1058
1054
1052
end of the stack 1050
47
Prof. Marco Mezzalama – a.a. 06/07
Operazioni sullo stack
Stack vuoto
PUSH AX
AX
1060
13
41
13
41
105E
PUSH AX
AX
45
F0
13
41
45
F0
POP BX
BX
45
F0
13
41
105C
105A
1058
1054
1052
1050
48
SS
01
05
01
05
01
05
01
05
SP
00
12
00
10
00
0E
00
10
Prof. Marco Mezzalama – a.a. 06/07
Uso dello Stack
Oltre che a seguito delle istruzioni che esplicitamente lo
manipolano (PUSH e POP), lo stack viene modificato in
altri due casi:
• all'atto della chiamata (CALL) o del ritorno (RET) da
una
procedura:
nel
primo
caso
viene
automaticamente eseguita la PUSH dell'IP, nel
secondo caso l'analoga POP;
• all'atto dell'attivazione di un interrupt, e del ritorno
dalla corrispondente routine di servizio (IRET); nel
primo caso vengono eseguite automaticamente le
PUSH del program counter (registri CS e IP) e della
PSW, nel secondo caso vengono eseguite le
corrispondenti POP.
49
Prof. Marco Mezzalama – a.a. 06/07
I/O
L'accesso alle periferiche avviene spesso attraverso speciali
locazioni associate ad un certo indirizzo.
L'accesso a tali locazioni può avvenire nei processori 80x86
sia in modo memory mapped sia in isolated I/O. Nel primo
caso l'accesso alla periferica avviene attraverso una
normale istruzione, nel secondo attraverso speciali
istruzioni di I/O.
Lo spazio di indirizzamento dell'I/O è pari al più a 64K.
50
Prof. Marco Mezzalama – a.a. 06/07
Scarica

1 Prof. Marco Mezzalama – aa 06/07