You are on page 1of 730

'I : ,

~
\
1.,
-
!
i
.
,I'
~ I
."
'I"
j ,
11'
iI
Indice generale
--
; ..~
-
Prefazione
Elementi architetturali di base ...
Struttura dei calcolatori
2.L1 D sistema CPUmemoria
La CPU
Primo esame del funzionamento della CPU
2.3.1 Esecuzione di un'istruzione
2..3...2 Due approcci per la progettazione dell1unita di cantralla
~ Cablata 0 microprogrammata?
.-.
-
-
.-

...
" ..-
..
--
--
,... ...
~
..
VlI
1
1
3
6
8
8
10
11
11
12
13
22
22

23
24
25
27
28
29
32
34
35
36
37
37
39
41
41
44
45
47
48
51
55
~
,
,
Introduzione
Qualche cenoo storieo
1.1.1 I microprocessori
1.1.2 Le architettilre RlSC
Rappresentazione dell'informazione
1.2.1 Sistemi di numerazione.
1.2.2 C.onversione di base
1.2.3 Ar:itmetica binaria
1.2.4 Numeri negativi
1.2.5 Numeri frazionari
1.2.6 Numeri in virgola mobile
1.2.7 lnformazioni di carattere alfanumerico
Logica dei sistemi digitali
1.3.1 L'algebra delle reti
Reti combinatorie e reti sequenziali
1.4.1 Reti sequenziali sincrone
Registri
Trasferimento dell'informazione
Unita aritmetiche e logiche
1.7.1 Esempio di costruzione di un'unita. aritmetica e logica
Sistemi digitali
1.8.1 Un modello eli rete.a stadi
1.8.2 Alcuni blocchi componenti i sistemi digitali
Questioni di notazione
L 9.1 Notazione per i segnali
Esercizi 1.10
1.8
1.9
1.3
1.5
1.6
1.7
.L
2.1
1.4
1.2
1
1.1
II
2.3
,
,jl
,
~ I
"
;1,

~
::
;1
I
,
J
."
"
."
'.i
l
'
"
"
,I:
"

"

\
c,
,
.,
~ I
.:
,'I'
"

II
, ..,
.' ' ,

!
! I;'
,

I
,
,
,
I
!
!

I
"
,

l
I
1
\
I
J
I
I
!
\
I
1
A-PDF Page Cut DEMO: Purchase from www.A-PDF.com to remove the watermark
'I : ,
~
\
1.,
-
!
i
.
,I'
~ I
."
'I"
j ,
11'
iI
Indice generale
--
; ..~
-
Prefazione
Elementi architetturali di base ...
Struttura dei calcolatori
2.L1 D sistema CPUmemoria
La CPU
Primo esame del funzionamento della CPU
2.3.1 Esecuzione di un'istruzione
2..3...2 Due approcci per la progettazione dell1unita di cantralla
~ Cablata 0 microprogrammata?
.-.
-
-
.-

...
" ..-
..
--
--
,... ...
~
..
VlI
1
1
3
6
8
8
10
11
11
12
13
22
22

23
24
25
27
28
29
32
34
35
36
37
37
39
41
41
44
45
47
48
51
55
~
,
,
Introduzione
Qualche cenoo storieo
1.1.1 I microprocessori
1.1.2 Le architettilre RlSC
Rappresentazione dell'informazione
1.2.1 Sistemi di numerazione.
1.2.2 C.onversione di base
1.2.3 Ar:itmetica binaria
1.2.4 Numeri negativi
1.2.5 Numeri frazionari
1.2.6 Numeri in virgola mobile
1.2.7 lnformazioni di carattere alfanumerico
Logica dei sistemi digitali
1.3.1 L'algebra delle reti
Reti combinatorie e reti sequenziali
1.4.1 Reti sequenziali sincrone
Registri
Trasferimento dell'informazione
Unita aritmetiche e logiche
1.7.1 Esempio di costruzione di un'unita. aritmetica e logica
Sistemi digitali
1.8.1 Un modello eli rete.a stadi
1.8.2 Alcuni blocchi componenti i sistemi digitali
Questioni di notazione
L 9.1 Notazione per i segnali
Esercizi 1.10
1.8
1.9
1.3
1.5
1.6
1.7
.L
2.1
1.4
1.2
1
1.1
II
2.3
,
,jl
,
~ I
"
;1,

~
::
;1
I
,
J
."
"
."
'.i
l
'
"
"
,I:
"

"

\
c,
,
.,
~ I
.:
,'I'
"

II
, ..,
.' ' ,

!
! I;'
,

I
,
,
,
I
!
!

I
"
,

l
I
1
\
I
J
I
I
!
\
I
1
,
, xii
Indice generate
'. ..
lndice genera.le XlII
3.8.4
3.8.5
Esercizi
La CPU 159
Notazione 159
Architettura di riferimento della CPU 160
Blocchi componenti 163
5.3.1 I registri di usa generale 163
53.2 ALU 163
5.3.3 Memoria 164
Sviluppo di CPUI 164
5.4.1 Sezione di prelievo delle istruzioni 166
5.4.2 Sezione di decodifica delPistruzione ...
5.4.3 Sezione ALU 169
5.4.4 La sezione di memoria dati e scrittura nel registro di destinazione170
5.4.5 Ricomposizione (provvisori.) 173
Considerazioni suUa realizzazione a singol0
periodo di clock . 173
5.5.1 Ricomposizione finale di CPUI 175
CPU1 con memoria unificata 175
Sviluppo di CPU2 179
5.7.1 Fase di prelievo delle istruzioni, IF ( 180
108
108
109
113
114
114
116
116
118
122
123
123
127
J
Gestione sotto cantrollo di interruzione
Esempia semplificata di sistema di interruzione
4.4.1 Esempio di routine servizia
4.4.2 Le interruzioni non mascherabili
lnterruzione da parte di pili periferiche
4.5.1 Discriminazione da programma
Interruzioni vettorizzate
4.6.1 Linee di richiesta indipendenti
4.6.2 Vettorizzazione esterna
Interruzioni' annidate
Interruzioni vettorizzate con daisy chain
4.8.1 Daisy chain asincrona
4.8.2 Daisy chain sincrona
Esempio di controllore di interruzioni:
il dispositivo 8259A 130
4.9.1 Vettorizzazione delle interruzioni' 132
4.9.2 Mascheramento 132
4.9.3 Priorit. 132
4.9.4 Riconoscimento di livelli 0 dei fronti 133
4.9.5 Schema di esecuzione della routine di servizio 134
4.9.6 Esempio di trattamento eli una sequenza di .interruzioni nidificate135
L1accesso diretto alIa memoria 137
4.10.1 Struttur. e funzion.mento del controllore DMA 138
4.10.2 Modalit. di trasferimento singolo 139
4.1O.:r Modalit. di trasferimento a blocchi 140
Un esempio di DMAC: il dispositivo Intel 8237 141
4.11.1 Funzionamento .. 142
Esercizi 144
5.6
5.7
4.11
\
5
5.1
5.2
5.3
4.12
5.5
5.4
4.10
4.9
4.7
4.8
4.6
4.5
4.3
.--
4.4
-
':'
,
,
'.
'"I
i.
')1
I',
i
J
I."
i.I
,
\1
I
,1
,>
..I
!;
.'.'
,.
.r,
o
it
..
!I
1,"
';1
"
'I.
,
"I'
.)
" :
".
.'
.,
, .

,
..,
,1
'
, '
.
,,'
..

1
't
:.; .
..
I
,..
.
:11'
" '
,
96
96
97
77
77
78
78
79
81
83
84
89
92
93
93
95
85
86
88
89
58
59 ..
61
62
62
64
65
@
C8ID
70
74
74
97
98
99
100
101
106
106
101
Prestazioni della CPU
2.4.1 La valutazione delle prestazioni
2.i..2 Papolari indici di prestazioni
n repertorio delle istruzioni
:l4J.- R.epertorio stile RISC
:h>.:! Repertorio stile CISC
Criteri di classificazione delle architetture
Indirizzamento
2.7.1 Ordinamento
2.7.2 AJlineamento
2 7 3 Indirizzamento dei dati
2.7.4 lndirizzamento nei trasferimenti del contrallo
Esercizi
La memoria principale
Le memorie RAM
3.1.1 Parametri di valutazione
Le memorie statiche
3.2.1 Un esempio di memoria statica
Le memorie dinamiche
Un esempio di memoria DRAM
3.3.2 L'interfacciamento COD il processore
ndimensionamento delle alimentazioni
di un sistema di memoria
Organizzazione'
3.5.1 Interlacciamento
Relazione tra 1a velocita della CPU e 1a velocita della memoria
3.6.1 Case di studio: evoluzione della velocit' dell. famiglia 8086 in
rapporto a quell. delle DRAM
Localita, arganizzazione gerarchica
3.7.1 Localitil.
3.7.2
3.7.3 di gerarchia
R.a.ssegna sui principali tipi di DRAM
commerciali
3.8.1 DRAM con accesso a pagina
3.8.2 Cached DRAM
3.8.3 SDRAM (Synchronous Dinamic Random Access
Memory) DRAM sincrone
Moduli commerciali
Cantralla di errore
11 sottosistema di ingresso/ uscita
Elementi di base del sattosistema di
ingresso/uscita
Gestione a centralla di programma
4.2.1 nsattoprogramma eli gestione
I
\8
I
\.9
.L
D.

2.4
- ,
\
I .25
I 26
'2.4
I
\
2.8
\
111
-
).3
2
lJ.
1
3
.
4
3.5_
)3.6
If
,
, xii Indice generate
'. ..
lndice genera.le XlII
3.8.4
3.8.5
Esercizi
La CPU 159
Notazione 159
Architettura di riferimento della CPU 160
Blocchi componenti 163
5.3.1 I registri di usa generale 163
53.2 ALU 163
5.3.3 Memoria 164
Sviluppo di CPUI 164
5.4.1 Sezione di prelievo delle istruzioni 166
5.4.2 Sezione di decodifica delPistruzione ...
5.4.3 Sezione ALU 169
5.4.4 La sezione di memoria dati e scrittura nel registro di destinazione170
5.4.5 Ricomposizione (provvisori.) 173
Considerazioni suUa realizzazione a singol0
periodo di clock . 173
5.5.1 Ricomposizione finale di CPUI 175
CPU1 con memoria unificata 175
Sviluppo di CPU2 179
5.7.1 Fase di prelievo delle istruzioni, IF ( 180
108
108
109
113
114
114
116
116
118
122
123
123
127
J
Gestione sotto cantrollo di interruzione
Esempia semplificata di sistema di interruzione
4.4.1 Esempio di routine servizia
4.4.2 Le interruzioni non mascherabili
lnterruzione da parte di pili periferiche
4.5.1 Discriminazione da programma
Interruzioni vettorizzate
4.6.1 Linee di richiesta indipendenti
4.6.2 Vettorizzazione esterna
Interruzioni' annidate
Interruzioni vettorizzate con daisy chain
4.8.1 Daisy chain asincrona
4.8.2 Daisy chain sincrona
Esempio di controllore di interruzioni:
il dispositivo 8259A 130
4.9.1 Vettorizzazione delle interruzioni' 132
4.9.2 Mascheramento 132
4.9.3 Priorit. 132
4.9.4 Riconoscimento di livelli 0 dei fronti 133
4.9.5 Schema di esecuzione della routine di servizio 134
4.9.6 Esempio di trattamento eli una sequenza di .interruzioni nidificate135
L1accesso diretto alIa memoria 137
4.10.1 Struttur. e funzion.mento del controllore DMA 138
4.10.2 Modalit. di trasferimento singolo 139
4.1O.:r Modalit. di trasferimento a blocchi 140
Un esempio di DMAC: il dispositivo Intel 8237 141
4.11.1 Funzionamento .. 142
Esercizi 144
5.6
5.7
4.11
\
5
5.1
5.2
5.3
4.12
5.5
5.4
4.10
4.9
4.7
4.8
4.6
4.5
4.3
.--
4.4
-
':'
,
,
'.
'"I
i.
')1
I',
i
J
I."
i.I
,
\1
I
,1
,>
..I
!;
.'.' ,.
.r,
o
it
..
!I
1,"
';1
"
'I.
,
"I'
.)
" :
".
.'
.,
, .

,
..,
,1
'
, '
.
,,'
..

1
't
:.; .
..
I
,..
.
:11'
" ' ,
96
96
97
77
77
78
78
79
81
83
84
89
92
93
93
95
85
86
88
89
58
59 ..
61
62
62
64
65
@
C8ID
70
74
74
97
98
99
100
101
106
106
101
Prestazioni della CPU
2.4.1 La valutazione delle prestazioni
2.i..2 Papolari indici di prestazioni
n repertorio delle istruzioni
:l4J.- R.epertorio stile RISC
:h>.:! Repertorio stile CISC
Criteri di classificazione delle architetture
Indirizzamento
2.7.1 Ordinamento
2.7.2 AJlineamento
2 7 3 Indirizzamento dei dati
2.7.4 lndirizzamento nei trasferimenti del contrallo
Esercizi
La memoria principale
Le memorie RAM
3.1.1 Parametri di valutazione
Le memorie statiche
3.2.1 Un esempio di memoria statica
Le memorie dinamiche
Un esempio di memoria DRAM
3.3.2 L'interfacciamento COD il processore
ndimensionamento delle alimentazioni
di un sistema di memoria
Organizzazione'
3.5.1 Interlacciamento
Relazione tra 1a velocita della CPU e 1a velocita della memoria
3.6.1 Case di studio: evoluzione della velocit' dell. famiglia 8086 in
rapporto a quell. delle DRAM
Localita, arganizzazione gerarchica
3.7.1 Localitil.
3.7.2
3.7.3 di gerarchia
R.a.ssegna sui principali tipi di DRAM
commerciali
3.8.1 DRAM con accesso a pagina
3.8.2 Cached DRAM
3.8.3 SDRAM (Synchronous Dinamic Random Access
Memory) DRAM sincrone
Moduli commerciali
Cantralla di errore
11 sottosistema di ingresso/ uscita
Elementi di base del sattosistema di
ingresso/uscita
Gestione a centralla di programma
4.2.1 nsattoprogramma eli gestione
I
\8
I
\.9
.L
D.

2.4
- ,
\
I .25
I 26
'2.4
I
\
2.8
\
111
-
).3
2
lJ.
1
3
.
4
3.5_
)3.6
If
xiv Indice generate
I
if 1
Iodice generate xv
.

5.8
5.9
5.10
5.11
5.12
6
JQ
.6.2
6.3
.fiA:)

6.6
6.7

6.8


5.7.2 Fase di decodifica delle istruzioni, ill
5.7.3 Pase eli eseeuzione, EX
5.7.4 Pase eli memoria, ME
5.7.5 Fase d.i scrittura del registro di destinazione, WB
5.7.6 Ricomposizione
5.7.7 Segnali di comando
5.7.8 Stati comuni a tutte Ie istruzioni
5.7.9 Stati elipendenti dal tipo di istruzione
Espressioni logiche per comandi e selettori
Considerazioni sulla realizzazione multiciclo
5.9.1 Miglioramenti a CPU2
Le interruzioni
5.10.1 Classificazione
5.10.2 I problemi per il trattamento delle interruzioni
Interruzioni BU CPU2'
5.11.1 Considerazioni
5.11.2 Miglioramenti
5.11.3 Interruzioni vettorizzate
5.11.4 Atomicita dell'interruzione
Esercizi
La pipeline
Introduzione
Prestazioni
6.2.1 Indici delle prestazioni
Considerazioni
Alcune estensioni al repertorio delle istruzioni
Esecuzione in pipeline
Le fasi di esecuzione
6.5.1 lBtruzioni aritmetiche
6.5.2 Istruzioni di Load/Store
6.5.3 Istruzioni di saito
6.5.4 Sintesi del contenuto dei campi EX
l
ME, WE
LJunita di controllo
6.6.1 Realizzazione dell'unita di controllo
Conflitti
Ji.L.l Conflitti strutturali
Conflitti dati
6.8.1 Tecniche per la Boluzione dei conftitti dati
6.8.2 Riconoscimento del conftitto dati
6.8.3 Soluzione dei eonflitti tramite stallo
6.8.4 Soluzione dei con.fiitti sui dati tramite anticipazione
6.8.5 I conflitti per Ie istruzioni load
6.8.6 Sovrapposizione
6.8.7 Riordinamento
Conllitti di controllo
6.9.1 Conllitti per salti (ineondizionati)
6.9.2 Confiitti per Ie diramazioni
180
182
182
183
183
183
186
188
190
192
194
196
196
197
198
199
202
204
204
205
209
210
211
211
213
214
219
222
223
225
227
230
231
236
236
238
238
239
240
242
244
246
248
249
250
251
252
,
.,
1",
t
Ji

I
I ..
,jf
"1
,;1'
i
.,
i
,
.,
J,
-'I
. 1
ii
.I'
"I
!I
:.1
{'
6.10
6.11
-
6.12
6.13
6.14
6.15
7
-
7.1
7.2
7.3
7.4
7.5
7.6
6.9.3 La soluzione software: Ie diramazioni ritardate
Predizione dinamica delle diramazioni
6.10.1 Tabeila di predizione delle diramazioni
6.10.2 Statistics. di esecuzione e accuratezza della predizione
Branch Target Buffer
6.11.1 Prestazioni del BTB
6.11.2 Ottimizzazione del BTB
6.11.3 Uunita per la predizione dei salti condizionati
del Pentium
Predittore adattativo a due livelli
6.12.1 Realizzazioni alternative del predittore a due livelli
Le interruzioni
6.13.1 n concetto di interruzione precisa
6.13.2 Interruzioni esterne
Eccezioni
6.14.1 Eccezioni e interruzioni esterne
Esercizi
La memoria cache
,
Funzionarnento della memoria cache
Cache a mappatura diretta
7.1.2 Cache completamente associativa
7.1.3 Cache parzialmente associativa
7.1,1. n problema della serittura
7.1.5 10 state della linea di cache
Algoritmi di rir]lpiazzamento delle linee di cache
7.2.1 Sostituzione a' caso
7.2.2 Rimpiazzamenti con algoritmi LRU
7.2.3 La teenlea PIFO
AnaHsi deile prestazioni
7.3.1 Le cause di fallimento nelPaccesso alia cache
Elementi che influenzano le prestazioni
7.4.1 Dirnensione della cache
7.4.2 Dimensione della linea
7.4.3 Associativita
7.4.4 Algoritmi di rimpiazzamento
7.4.5 Cache divisa 0 unifieata
7.4.6 Aggiornamento della memoria centrale
7.4.7 Cache multilivello
7.4.8 Posiziol}amento della cache
7.4.9 Multiprogrammazione
Sistemi a multiprocessore: coerenza della cache
7.5.1 Coerenza
7.5.2 Protocolli per iI mantenimento della coerenza
7.5.3 Protocolli snoopy
Esercizi
25" ]
256
25"
25: I
25,
261
26: I
264
266
26 \
271
270
273
27: ]
27!
279
28: (
28: ,
285
28
7
\
28,

291
29: I
29. \
1
298
30r I
30:

303
30: I
30: I
,
306
307
30' I
30;
309
311 J
31
31:
316
31.
0
)
32'
xiv Indice generate
I
if 1
Iodice generate xv
.

5.8
5.9
5.10
5.11
5.12
6
JQ
.6.2
6.3
.fiA:)

6.6
6.7

6.8


5.7.2 Fase di decodifica delle istruzioni, ill
5.7.3 Pase eli eseeuzione, EX
5.7.4 Pase eli memoria, ME
5.7.5 Fase d.i scrittura del registro di destinazione, WB
5.7.6 Ricomposizione
5.7.7 Segnali di comando
5.7.8 Stati comuni a tutte Ie istruzioni
5.7.9 Stati elipendenti dal tipo di istruzione
Espressioni logiche per comandi e selettori
Considerazioni sulla realizzazione multiciclo
5.9.1 Miglioramenti a CPU2
Le interruzioni
5.10.1 Classificazione
5.10.2 I problemi per il trattamento delle interruzioni
Interruzioni BU CPU2'
5.11.1 Considerazioni
5.11.2 Miglioramenti
5.11.3 Interruzioni vettorizzate
5.11.4 Atomicita dell'interruzione
Esercizi
La pipeline
Introduzione
Prestazioni
6.2.1 Indici delle prestazioni
Considerazioni
Alcune estensioni al repertorio delle istruzioni
Esecuzione in pipeline
Le fasi di esecuzione
6.5.1 lBtruzioni aritmetiche
6.5.2 Istruzioni di Load/Store
6.5.3 Istruzioni di saito
6.5.4 Sintesi del contenuto dei campi EX
l
ME, WE
LJunita di controllo
6.6.1 Realizzazione dell'unita di controllo
Conflitti
Ji.L.l Conflitti strutturali
Conflitti dati
6.8.1 Tecniche per la Boluzione dei conftitti dati
6.8.2 Riconoscimento del conftitto dati
6.8.3 Soluzione dei eonflitti tramite stallo
6.8.4 Soluzione dei con.fiitti sui dati tramite anticipazione
6.8.5 I conflitti per Ie istruzioni load
6.8.6 Sovrapposizione
6.8.7 Riordinamento
Conllitti di controllo
6.9.1 Conllitti per salti (ineondizionati)
6.9.2 Confiitti per Ie diramazioni
180
182
182
183
183
183
186
188
190
192
194
196
196
197
198
199
202
204
204
205
209
210
211
211
213
214
219
222
223
225
227
230
231
236
236
238
238
239
240
242
244
246
248
249
250
251
252
,
.,
1",
t
Ji

I
I ..
,jf
"1

,;1'
i
.,
i
,
.,
J,
-'I
. 1
ii
.I'
"I
!I
:.1
{'
6.10
6.11
-
6.12
6.13
6.14
6.15
7
-
7.1
7.2
7.3
7.4
7.5
7.6
6.9.3 La soluzione software: Ie diramazioni ritardate
Predizione dinamica delle diramazioni
6.10.1 Tabeila di predizione delle diramazioni
6.10.2 Statistics. di esecuzione e accuratezza della predizione
Branch Target Buffer
6.11.1 Prestazioni del BTB
6.11.2 Ottimizzazione del BTB
6.11.3 Uunita per la predizione dei salti condizionati
del Pentium
Predittore adattativo a due livelli
6.12.1 Realizzazioni alternative del predittore a due livelli
Le interruzioni
6.13.1 n concetto di interruzione precisa
6.13.2 Interruzioni esterne
Eccezioni
6.14.1 Eccezioni e interruzioni esterne
Esercizi
La memoria cache
,
Funzionarnento della memoria cache
Cache a mappatura diretta
7.1.2 Cache completamente associativa
7.1.3 Cache parzialmente associativa
7.1,1. n problema della serittura
7.1.5 10 state della linea di cache
Algoritmi di rir]lpiazzamento delle linee di cache
7.2.1 Sostituzione a' caso
7.2.2 Rimpiazzamenti con algoritmi LRU
7.2.3 La teenlea PIFO
AnaHsi deile prestazioni
7.3.1 Le cause di fallimento nelPaccesso alia cache
Elementi che influenzano le prestazioni
7.4.1 Dirnensione della cache
7.4.2 Dimensione della linea
7.4.3 Associativita
7.4.4 Algoritmi di rimpiazzamento
7.4.5 Cache divisa 0 unifieata
7.4.6 Aggiornamento della memoria centrale
7.4.7 Cache multilivello
7.4.8 Posiziol}amento della cache
7.4.9 Multiprogrammazione
Sistemi a multiprocessore: coerenza della cache
7.5.1 Coerenza
7.5.2 Protocolli per iI mantenimento della coerenza
7.5.3 Protocolli snoopy
Esercizi
25" ]
256
25"
25: I
25,
261
26: I
264
266
26 \
271
270
273
27: ]
27!
279
28: (
28: ,
285
28
7
\
28,

291
29: I
29. \
1
298
30r I
30:

303
30: I
30: I
,
306
307
30' I
30;
309
311 J
31
31:
316
31.
0
)
32'

Indice generale
Indice generale. XYli
I
11
11.1
11.2
,
,
t:
11.3
,
,
407
408
410
412
412
413
414
415
417
417
417
420
421
421
422
423
423
471
474
475
425
425
427
429
432
432
433
434
438
439
447
447
452
455
458
459
462
463
465
466

..,
La gestione dei processi in modo protetto
9.4.1 n segrnento di stato di un
9.4.2 Commutazione Era processi
La protezione: criteri generali
9.5.1 Verifica del tipo di accesso ai segmenti
9.5.2 Livelli di privilegio
9.5.3 Criteri generali per il cantrallo dei privilegi
9.5.4 I livelli controllati
Protezione negli accessi
9.6.1 Protezione nell'accesso ai dati
9.6.2 Protezione nei passaggi di controllo
9.6.3 Protezione nella commutazione fra processi
Altri aspetti legati alIa protezione a livelli
9.7.1 Variazione dellivello ill privilegio
9.7.2 L'attacco can il cavallo di Troia
9.7.3 Istruzioni privilegiate
La protezione di pagina
BUS di sistema
Un po' di storia
La standardizzazione
11.2.1 Operaziani suI bus
Allocazione del bus
11.3.1 Arbitraggio distribuito Con schema daisy chain
11.3.2 Arbitraggio centralizzato con schema parallelo'
11.3.3 Arbitraggio distribuito con schema parallelo
11.3.4 Arbitraggio centralizzato con schema daisy chain
Esempio di progetto della logica di arbitraggio distribuita in daisy chain
Organizzazione dei moderp.i calcolatori
personali
11.5.1 Il chipset
11.5.2 . Chipset per la ela.sse Pentium
Esecuzione fuori ardine
Pipeline con unita funzionali multiciclo
Esecuzione fuori ordine
10.2.1 Gestione delle prenotazioni del bus dei risultati
Completamento in ordine
10.3.1 Completamento in ordine rispetto ai registri
10.3.2 Completamento in ordine rispetto alIa memoria
Metoda del buffer di riordinamento
10.4.1 Uso di ROB e di perco,si di bypa.ss
Metodo dell'history buffer
Gestione dei conflitti di controllo in pipeline
con unita funzionali multiciclo ,441
10.6.1 Stato coerente nel caso del completamento in ordine delle istruzioni442
10.6.2 Ripristino della stato coerente in presenza ill ROB 443
10.6.3 Ripristino dello stato coerente con history buffer 444
9.6
9.7
9.5
9.4
10.4
9.8
10.3
10.5
10.6
11.4
11.5
10
-
lQ.J..
102
""
._,
']I;
ii'
(I,
;:1
.j:
.\1,
",
,
"
'. ,
';'

.,
il
0.'
,.
.:1'
,
,

"-/
'I
.
,
.;Il
,
1:
'i;

.JI
oil
.,
-:j,


...
"1
.\.
.)1:
357
357
359
362
363
364
365
3.71
372
375
376
377
377
377
381
384
385
331
331
334
337
338
340
343
346
347
347
353
355
357
386
388
390
392
392
396
399
399
400
401
403
404
405
La memoria virtuale
Introduzione
Sistemi di paginazione
8.2.1 Dimensione della pagina
8.2.2 n Translation Lookaside Buffer
8.2.3 Gestione della tabella
8.2.4 Tabella delle pagine gerarchica
Tabella delle pagine invertita
8.3.1 La codilica ha.sh
8.3.2 Gestione della tabella IPT
8.3.3 n problema delle catene trappo lunghe
La segmentazione
Segmentazione e paginazione
Approfondimenti sulla gestione della memoria
virtuale
8.6.1 Gestione della paginazione e della segmentazione
8.6.2 Algoritmi di rimpiazzarnento
8.6.3 Occupazione della memoria
Esempio di memoria paginata: la memoria del microprocessore 68030
8.7.1 Traduzione degli indirizzi
8.7.2 La tabella di traduzione degli indirizzi
8.7.3 n TLB
8.7.4 8u alcune caratteristiche speciliche della MMU
8.7.5 La pratezione
8.7.6 Considerazioni sulla memoria virtuale del micro 68030
Esempio di memoria virtuale segmentata:
1a memoria virtuale del 286
8.8.1 Indirizzamento in modo Teale
8.8.2 Indirizzamento in modo virtuale
8.8.3 Tabelle dei descrittori di segmento .
8.8.4 Gestione della memoria fisica
8.8.5 Ali""
Esempio di memoria virtuale segmentata e
paginata: la memoria virtuale del Pentium
8.9.1 La segmentazione del 386 e modelli successivi
8.9.2 eli pagina
Esempio di merrioria con tabella di pagine
invertita: la memoria del PowerPC
8.10.1 La IPT del PowerPC: la HPT
Esercizi
La protezione
La protezione nei sistemi Intel
I descrittori e la lora funzione
9.2.1 Descrittori di segmenti di codice e di dati (8=1)
9.2.2 Descrittori di sistema (8=0)
Trattamento delle interruzioni in modo protetto
9.3.1 La.tabella dei deScrittori di interruzione
8.10
I
1
8
.
11
-
)
1
9
!9.1
1
9
.
2
] 88
9.3
\M
8.5
-
\ 8.6
i
l
18.7
I
I 8.3
I
8
\.D
Jll
8.9
1

Indice generale
Indice generale. XYli
I
11
11.1
11.2
,
,
t:
11.3
,
,
407
408
410
412
412
413
414
415
417
417
417
420
421
421
422
423
423
471
474
475
425
425
427
429
432
432
433
434
438
439
447
447
452
455
458
459
462
463
465
466

..,
La gestione dei processi in modo protetto
9.4.1 n segrnento di stato di un
9.4.2 Commutazione Era processi
La protezione: criteri generali
9.5.1 Verifica del tipo di accesso ai segmenti
9.5.2 Livelli di privilegio
9.5.3 Criteri generali per il cantrallo dei privilegi
9.5.4 I livelli controllati
Protezione negli accessi
9.6.1 Protezione nell'accesso ai dati
9.6.2 Protezione nei passaggi di controllo
9.6.3 Protezione nella commutazione fra processi
Altri aspetti legati alIa protezione a livelli
9.7.1 Variazione dellivello ill privilegio
9.7.2 L'attacco can il cavallo di Troia
9.7.3 Istruzioni privilegiate
La protezione di pagina
BUS di sistema
Un po' di storia
La standardizzazione
11.2.1 Operaziani suI bus
Allocazione del bus
11.3.1 Arbitraggio distribuito Con schema daisy chain
11.3.2 Arbitraggio centralizzato con schema parallelo'
11.3.3 Arbitraggio distribuito con schema parallelo
11.3.4 Arbitraggio centralizzato con schema daisy chain
Esempio di progetto della logica di arbitraggio distribuita in daisy chain
Organizzazione dei moderp.i calcolatori
personali
11.5.1 Il chipset
11.5.2 . Chipset per la ela.sse Pentium
Esecuzione fuori ardine
Pipeline con unita funzionali multiciclo
Esecuzione fuori ordine
10.2.1 Gestione delle prenotazioni del bus dei risultati
Completamento in ordine
10.3.1 Completamento in ordine rispetto ai registri
10.3.2 Completamento in ordine rispetto alIa memoria
Metoda del buffer di riordinamento
10.4.1 Uso di ROB e di perco,si di bypa.ss
Metodo dell'history buffer
Gestione dei conflitti di controllo in pipeline
con unita funzionali multiciclo ,441
10.6.1 Stato coerente nel caso del completamento in ordine delle istruzioni442
10.6.2 Ripristino della stato coerente in presenza ill ROB 443
10.6.3 Ripristino dello stato coerente con history buffer 444
9.6
9.7
9.5
9.4
10.4
9.8
10.3
10.5
10.6
11.4
11.5
10
-
lQ.J..
102
""
._,
']I;
ii'
(I,
;:1
.j:
.\1,
",
,
"
'. ,
';'

.,
il
0.'
,.
.:1'
,
,

"-/
'I
.
,
.;Il
,
1:
'i;

.JI
oil
.,
-:j,


...
"1
.\.
.)1:
357
357
359
362
363
364
365
3.71
372
375
376
377
377
377
381
384
385
331
331
334
337
338
340
343
346
347
347
353
355
357
386
388
390
392
392
396
399
399
400
401
403
404
405
La memoria virtuale
Introduzione
Sistemi di paginazione
8.2.1 Dimensione della pagina
8.2.2 n Translation Lookaside Buffer
8.2.3 Gestione della tabella
8.2.4 Tabella delle pagine gerarchica
Tabella delle pagine invertita
8.3.1 La codilica ha.sh
8.3.2 Gestione della tabella IPT
8.3.3 n problema delle catene trappo lunghe
La segmentazione
Segmentazione e paginazione
Approfondimenti sulla gestione della memoria
virtuale
8.6.1 Gestione della paginazione e della segmentazione
8.6.2 Algoritmi di rimpiazzarnento
8.6.3 Occupazione della memoria
Esempio di memoria paginata: la memoria del microprocessore 68030
8.7.1 Traduzione degli indirizzi
8.7.2 La tabella di traduzione degli indirizzi
8.7.3 n TLB
8.7.4 8u alcune caratteristiche speciliche della MMU
8.7.5 La pratezione
8.7.6 Considerazioni sulla memoria virtuale del micro 68030
Esempio di memoria virtuale segmentata:
1a memoria virtuale del 286
8.8.1 Indirizzamento in modo Teale
8.8.2 Indirizzamento in modo virtuale
8.8.3 Tabelle dei descrittori di segmento .
8.8.4 Gestione della memoria fisica
8.8.5 Ali""
Esempio di memoria virtuale segmentata e
paginata: la memoria virtuale del Pentium
8.9.1 La segmentazione del 386 e modelli successivi
8.9.2 eli pagina
Esempio di merrioria con tabella di pagine
invertita: la memoria del PowerPC
8.10.1 La IPT del PowerPC: la HPT
Esercizi
La protezione
La protezione nei sistemi Intel
I descrittori e la lora funzione
9.2.1 Descrittori di segmenti di codice e di dati (8=1)
9.2.2 Descrittori di sistema (8=0)
Trattamento delle interruzioni in modo protetto
9.3.1 La.tabella dei deScrittori di interruzione
8.10
I
1
8
.
11
-
)
1
9
!9.1
1
9
.
2
] 88
9.3
\M
8.5
-
\ 8.6
i
l
18.7
I
I 8.3
I
8
\.D
Jll
8.9
1
xviii Indice generale
,I
,i'
,.1
lndice generale XIX
1
11.5.3
Chipset per la classe Pentium 1I1
477
,
A.9 Sincronizzazione
540
11.6
IT bus SCSI
.....
A.IO Reti sequenziali sincrone
542
479
.
I
11.6.1
Principi eli fUnzlonamento
479
., '
A.1O.1 Flip-flop Master-Slave
543
,
.,
11.6.2
I segnali SCSI
481
-1 :
A.10.2
Altre considerazioni sui flip-aop
545
' .
11.6.3
FMi del bus
482 ' '
A.10.3
Madella dj Mealy e madelia di Moore
546
.- 11.6.4
Un esempio di operazione suI bus SCSI
' :
Esempi di analisi e progetto di reti sequenziali
549
485 ' .
A.lI

I
11.6.5
Conclusioni
488
..
A.1Ll Esempio di progetto: generazione di un 'egnale di WAIT
549
, 11.7
IT bus PCI

A.11.2
Esempio di progetto: rete per Fadattamento
488
11.7.1
Principi .di funzionamento
488 ',
della temporizzazione dei segnali
551
,'. '
11. 7.2
I segnali del PCI bu,
..
A.12 Esercizi
555
490
I ",
\
11.7.3
di trasferimento dati
49.1
,
<!
11.7.4
Arbitraggio
495
B L'architettura 8086
559
I
11.7.5
Prestazioni
497

B.1 Un pO' di storia
562
11.7.6
Blocco delle riaorse
498
"
B.2
Architettura di base: il micro 8086
564
l
11.8
IT bus USB
501
4
B.2.1
nmodella eli programmazione
565
I
)
11.8.1
Caratteristicbe generali
501
B.2.2
Organizzazione della memoria
568
11.8.2
Struttura fisica
,
B.2.3
Accesso alia memoria
571
502

11.8.3
Organizzazione a livelli
503
I :
B.2.4
Osservazioni sull'organizzazione di memoria dell'8086
572
11.8.4
Host
,.
B.2.5
Struttura interna del microprocessore 8086
573
l
505
..
". , ,
"
575
11.8.5
Periferiche
505
,r ,
. B.2.6
Cieli' di bus
11.8.6
Hub
506
". ,
B.2.7
Modalita di funzionamento
576
11.8.7
Modella dei Busai informativi
506
1
B.2.8
La fase di partenza
576
,
11.8.8
ncavo
508
.,
B.3
nrepertorio delle istruzioni
577
I
,
Riconoscimento e configurazione delle periferiche

Modalita di indirizzamento
578
11.8.9
511
B.4
11.8.10
Trasferimento di dati
512
-i
B.4.1
Indirizzamento degli operandi
578
I .
11.8.11
nprotocollo e Uformate dei pacchetti
513

8.4.2
lndirizzamento nei salti
580
;

581
I
"
B.5
Formati delle istruzioni
..
,
A
Sistemi DigitaJi

0
B6
II coprocessare 8087
584
517
q '.
I

--
A.1
Proprieta dell'algebra delle reti
.i.
B,6.1
Madello di programmazione esteao
584

517
, A.2
Forme canoniche
519
B,6.2
Tipi di dati
,
586

A.2.1
Prima forma canonica
519

B.6.3
Collegamento can la CPU 8086/8088
586
I
'. A.2.2
Secanda forma canonica
520
,
B.6.4
Coordinamento con la CPU: aspetti generali
587
;
A.3
Minimizzazione
,
Coordinamento coo la CPU, il controllo del bus
591
521
..
B.6.5

A.4
. Altri operatori e altri tipi di porta
522
;
B.6.6
Emulazione del coprocessore
593
,
A.4.1
NAND e NOR
522

B.7
IT microprocessore 80286 (286)
594
\
A.4.2
Reti can sale porte NAND a 'ole porte NOR
524
,
B.7.1
Modello di progranimazione
595
A.4.3
Una tecnica grafica per la trasformazione
524
.,
B.7.2
La struttura interna
596
.. A.4.4
XORe NXOR
525
j
B.7.3
Modo protetto
597

A.5
Esempi di reti combinatorie
526
,
B,8
IT microprocessore 80386 (386)
597
1

A.5.1
ncantrollo di parita.
526
B,8.1
Emulazione
598
,
A.5.2
Comparatore digitale
528
1 B:9
n microprocessore 80486 (486)
600
A.6
Unita aritmeticbe

8.9.1 .
La cache interna
600
530
'. A.6.1
Somma Con calcolo del riporto
"
Vevoluzione verso frequenze pili elevate
601
J
530
B.9.2
A.6.2
Ancora sui sommatore completo
532
B.lO II Pentium
602
A7
Unita aritmetiche e logiche
533
B.lO.l
La struttura interna
602
A.8
Reti sequenziali
536
B.1O.2
L'unita per la predizione dei salti condizionati
605
A.8.1
Modellogenerale
536
B.1O.3
L'unita per il calcolo in virgola mobile
609
J
A.82
Rappresentazione delle funzioni c,li stato e uscita
538
,
B.10.4
Le due cache interne
609

"
xviii Indice generale
,I
,i'
,.1
lndice generale XIX
1
11.5.3
Chipset per la classe Pentium 1I1
477
,
A.9
Sincronizzazione
540
11.6
IT bus SCSI
.....
A.IO Reti sequenziali sincrone
542
479
.
I
11.6.1
Principi eli fUnzlonamento
479
., '
A.1O.1
Flip-flop Master-Slave
543
,
.,
11.6.2
I segnali SCSI
481
-1 :
A.10.2
Altre considerazioni sui flip-aop
545
' .
11.6.3
FMi del bus
482
' '
A.10.3
Madella dj Mealy e madelia di Moore
546
.-
11.6.4
Un esempio di operazione suI bus SCSI
' :
Esempi di analisi e progetto di reti sequenziali
549
485
' .
A.lI

I
11.6.5
Conclusioni
488
..
A.1Ll Esempio di progetto: generazione di un 'egnale di WAIT
549
, 11.7
IT bus PCI

A.11.2
Esempio di progetto: rete per Fadattamento
488

11.7.1
Principi .di funzionamento
488 ',
della temporizzazione dei segnali
551
,'. '
11. 7.2
I segnali del PCI bu,
..
A.12 Esercizi
555
490

I ",
\
11.7.3
di trasferimento dati
49.1
,
<!
11.7.4
Arbitraggio
495
B L'architettura 8086
559
I
11.7.5
Prestazioni
497

B.1
Un pO' di storia
562
11.7.6
Blocco delle riaorse
498
"
B.2
Architettura di base: il micro 8086
564
l
11.8
IT bus USB
501
4
B.2.1
nmodella eli programmazione
565
I
)
11.8.1
Caratteristicbe generali
501
B.2.2
Organizzazione della memoria
568
11.8.2
Struttura fisica
,
B.2.3
Accesso alia memoria
571
502

11.8.3
Organizzazione a livelli
503
I :
B.2.4
Osservazioni sull'organizzazione di memoria dell'8086
572
11.8.4
Host
,.
B.2.5
Struttura interna del microprocessore 8086
573
l
505
..
". ,
,
"
575
11.8.5
Periferiche
505
,r ,
. B.2.6
Cieli' di bus
11.8.6
Hub
506
". ,
B.2.7
Modalita di funzionamento
576
11.8.7
Modella dei Busai informativi
506
1
B.2.8
La fase di partenza
576
,
11.8.8
ncavo
508
.,
B.3
nrepertorio delle istruzioni
577
I
,
Riconoscimento e configurazione delle periferiche

Modalita di indirizzamento
578
11.8.9
511

B.4
11.8.10
Trasferimento di dati
512
-i
B.4.1
Indirizzamento degli operandi
578
I .
11.8.11
nprotocollo e Uformate dei pacchetti
513

8.4.2
lndirizzamento nei salti
580
;

581
I
"
B.5
Formati delle istruzioni
..
,
A
Sistemi DigitaJi

0
B6
II coprocessare 8087
584
517
q '.
I

--
A.1
Proprieta dell'algebra delle reti
.i.
B,6.1
Madello di programmazione esteao
584

517
, A.2
Forme canoniche
519
B,6.2
Tipi di dati
,
586

A.2.1
Prima forma canonica
519

B.6.3
Collegamento can la CPU 8086/8088
586
I
'. A.2.2
Secanda forma canonica
520
,
B.6.4
Coordinamento con la CPU: aspetti generali
587
;
A.3
Minimizzazione
,
Coordinamento coo la CPU, il controllo del bus
591
521
..
B.6.5

A.4
. Altri operatori e altri tipi di porta
522
;
B.6.6
Emulazione del coprocessore
593
,
A.4.1
NAND e NOR
522

B.7
IT microprocessore 80286 (286)
594
\
A.4.2
Reti can sale porte NAND a 'ole porte NOR
524
,
B.7.1
Modello di progranimazione
595
A.4.3
Una tecnica grafica per la trasformazione
524
.,
B.7.2
La struttura interna
596
..
A.4.4
XORe NXOR
525
j
B.7.3
Modo protetto
597

A.5
Esempi di reti combinatorie
526
,
B,8
IT microprocessore 80386 (386)
597
1

A.5.1
ncantrollo di parita.
526
B,8.1
Emulazione
598
,
A.5.2
Comparatore digitale
528
1 B:9
n microprocessore 80486 (486)
600
A.6
Unita aritmeticbe

8.9.1 .
La cache interna
600
530
'.
A.6.1
Somma Con calcolo del riporto
"
Vevoluzione verso frequenze pili elevate
601
J
530

B.9.2
A.6.2
Ancora sui sommatore completo
532
B.lO II Pentium
602
A7
Unita aritmetiche e logiche
533
B.lO.l
La struttura interna
602
A.8
Reti sequenziali
536
B.1O.2
L'unita per la predizione dei salti condizionati
605
A.8.1
Modellogenerale
536
B.1O.3
L'unita per il calcolo in virgola mobile
609
J
A.82
Rappresentazione delle funzioni c,li stato e uscita
538
,
B.10.4
Le due cache interne
609

"
E Comunicazione tra Calcolatori 689
E.l lotroduziooe 689
E.l.l nmezzo trasmissivo 690
E.2 II modello 1S0/0S1 691
E.2.1 II Protocollo TCP/IP 692
E.3 Livello fisico 693
E.3.1 Tipi di trasmissione 693
E.3.2 Esempio di standard di livello fisico: RS232C/V24 694
E.3.3 Esempi di collegamenti RS232C 696
E.3.4 Altri standard seriali 697
E.4 Livello di colJegamento 698
E.4.1 Thasmissione asincrona 699
E.4.2 Trasmissione sincrona 700
E.4.3 Controllo degJi errori 704
E.4.4 Protocolli per il livello collegamento 708
E.4.5 Esempio di dispositivQ per il cantralla della trasmissione: P8251A710
E.5 Cenni sulle LAN 711
E.5.1 Topologia di una LAN 713
E.5.2 Tecniche di trasmissione 715
E.5.3 Tecniche di accesso 716
E.5.4 Esempio di LAN: la rete Ethernet 717
1
xx
B.ll
\
I
B.12
I
I B.13
B.14
l B.15
B.16

C
I C.1
,
I C.2
I
C.3
C.4
C.5
\ C6
)gl
\ D.2
,
I D,3
I
I
I
I
D
.4
I
I
Indice generale
n'Pentium con tecDologia MMX
B.1Ll L'estensiooe MMX
8.11.2 La struttura interna
nPentium Pro
,
B.12.1 La pipeline e l'esecllzione dinamica
B.12.2 Ridenominazione dei registri
n Peotium II
B,13.1 La struttura interna
n Peotium ill
La for"ma esterna
,
i bus e altro
Esercizi
L'architettura PowerPC
Architettura PowerPC
C.l.1 Formati istruzione
C.1.2 Organizzazione
0.1.3 Caratteristiche e prestazioni di alcuni modelli
La CPU MPC 601
C.2.1 Gestione della memoria
C.2.2 La coda istruzioni del 601
C,2,3 La pipeline del 601
Un esempio di Bussa istruzioni per it 601
La CPU MPC 604
C.4.1 La pipelioe del 604
Un esempio di Bussa istruzioni per il 604

Un confronto tra Ie prestaziooi del 601 e 604


C.6.1 I.e prestazioni del 601
C.6.2 Le prestaziooi del 604
0.6.3 Prestazioni relative
n linguaggio assembler
Generalitil.
D.1.1 Sintassi
Segmenti e moduli
D.2.l Direttive per 1a gestione dei segmenti
D.2.2 Generazione dei riferimenti: 1a direttiva ASSUME
D.2.3 Relazione tra segmenti e moduli
I simboli definiti daJ programmatore
D.3.1 Eticbette
D.3.2 VariabiJi
D.3.3 Variabili strutturate
D.3.4 Costanti
D.3.5 Procedure
Direttive per il collegamento dei moduli
DA.l Direttive per la programmazione modulare
D.4.2 La direttiva END
D.4.3 La direttiva INCLUDE
D.4.4 n sistema macro del MASM
610
610
611
611
613
618
619
620
b
622
626
627
628
628
628
631
631
633
633
635
638
639
641
643
646
648
649
650
651
652
654
657
657
659
661
664
664
665
667
668
670
670
670
671
671
672
II
."
ii'
'1 '
'
\'1
.JI
,

I
II
I'
]1.
"I'
,
,
,I,
e .'
t
1
.
j,
J:
'II,

-
l
1
1
.,
j
,
1
i
"
I
I'
I
I'
",
1
"
til
11
'"
,
,.

, ,..
,
,
"

,
1
.'
"
,
,
D.5 Un esempio di programma assembler
D.6 It processo di traduzione
D.6.1 Assemblatore: primo passo
D.6.2 Assemblatore: secondo passe
D.7 Collegamento e caricarnento
D.7.! Caricamento in memoria ed esecuzione
D.8 Esercizi

Indice generale XXI
673
678
681
683
684
685
685
719
E Comunicazione tra Calcolatori 689
E.l lotroduziooe 689
E.l.l nmezzo trasmissivo 690
E.2 II modello 1S0/0S1 691
E.2.1 II Protocollo TCP/IP 692
E.3 Livello fisico 693
E.3.1 Tipi di trasmissione 693
E.3.2 Esempio di standard di livello fisico: RS232C/V24 694
E.3.3 Esempi di collegamenti RS232C 696
E.3.4 Altri standard seriali 697
E.4 Livello di colJegamento 698
E.4.1 Thasmissione asincrona 699
E.4.2 Trasmissione sincrona 700
E.4.3 Controllo degJi errori 704
E.4.4 Protocolli per il livello collegamento 708
E.4.5 Esempio di dispositivQ per il cantralla della trasmissione: P8251A710
E.5 Cenni sulle LAN 711
E.5.1 Topologia di una LAN 713
E.5.2 Tecniche di trasmissione 715
E.5.3 Tecniche di accesso 716
E.5.4 Esempio di LAN: la rete Ethernet 717
1
xx
B.ll
\
I
B.12
I
I B.13
B.14
l B.15
B.16

C
I C.1
,
I C.2
I
C.3
C.4
C.5
\ C6
)gl
\ D.2
,
I D,3
I
I
I
I
D
.4
I
I
Indice generale
n'Pentium con tecDologia MMX
B.1Ll L'estensiooe MMX
8.11.2 La struttura interna
nPentium Pro
,
B.12.1 La pipeline e l'esecllzione dinamica
B.12.2 Ridenominazione dei registri
n Peotium II
B,13.1 La struttura interna
n Peotium ill
La for"ma esterna
,
i bus e altro
Esercizi
L'architettura PowerPC
Architettura PowerPC
C.l.1 Formati istruzione
C.1.2 Organizzazione
0.1.3 Caratteristiche e prestazioni di alcuni modelli
La CPU MPC 601
C.2.1 Gestione della memoria
C.2.2 La coda istruzioni del 601
C,2,3 La pipeline del 601
Un esempio di Bussa istruzioni per it 601
La CPU MPC 604
C.4.1 La pipelioe del 604
Un esempio di Bussa istruzioni per il 604

Un confronto tra Ie prestaziooi del 601 e 604


C.6.1 I.e prestazioni del 601
C.6.2 Le prestaziooi del 604
0.6.3 Prestazioni relative
n linguaggio assembler
Generalitil.
D.1.1 Sintassi
Segmenti e moduli
D.2.l Direttive per 1a gestione dei segmenti
D.2.2 Generazione dei riferimenti: 1a direttiva ASSUME
D.2.3 Relazione tra segmenti e moduli
I simboli definiti daJ programmatore
D.3.1 Eticbette
D.3.2 VariabiJi
D.3.3 Variabili strutturate
D.3.4 Costanti
D.3.5 Procedure
Direttive per il collegamento dei moduli
DA.l Direttive per la programmazione modulare
D.4.2 La direttiva END
D.4.3 La direttiva INCLUDE
D.4.4 n sistema macro del MASM
610
610
611
611
613
618
619
620
b
622
626
627
628
628
628
631
631
633
633
635
638
639
641
643
646
648
649
650
651
652
654
657
657
659
661
664
664
665
667
668
670
670
670
671
671
672
II
."
ii'
'1 '
'
\'1
.JI
,

I
II
I'
]1.
"I'
,
,
,I,
e .'
t
1
.
j,
J:
'II,

-
l
1
1
.,
j
,
1
i
"
I
I'
I
I'
",
1
"
til
11
'"
,
,.

, ,..
,
,
"

,
1
.'
"
,
,
D.5 Un esempio di programma assembler
D.6 It processo di traduzione
D.6.1 Assemblatore: primo passo
D.6.2 Assemblatore: secondo passe
D.7 Collegamento e caricarnento
D.7.! Caricamento in memoria ed esecuzione
D.8 Esercizi

Indice generale XXI
673
678
681
683
684
685
685
719
v
, :\ .
; ..,- ".,
"
"-
,
n
,
1
"
,
,
, "
:'
,:ll'


'II,',
" '
jl "
'I'
,
',"
Introduzione
1
I
1
, "
"
....n
;\'1' ' ,. - '
_lOll,
1

dl
l
"II'
',1
,
,
:1
""I'
,'}
'"
",
I


JI
"
" '
;11
','
"I
,.j) :
'1,
'''',
4'
, 'II'
'1J",
"
:
,
-if

-"
ill
,::j,
"I

"
,,',;
'-I


,,,I

, "
"
!
,
,
I
,
"
\
J
Questa capitola eintroduttivo aile tematiche dellibro. Dopa Un breve resaconto stori- )
C9 s)Jll'evoluzione dei calcolatori elettronici, vengono richiamati alcuni concetti di ca-
rattere generale sui sistemi di numerazione, sulla rappresentazione dell'informazione
l
sulle unita. aritmetiche, sui sistemi digitali e sulla struttura ill base dei calcolatori. !
Ritenendo che la parte degli argomenti relativi ai sistemi digitali (algebra, reti
combinatorie e sequenziali) meritasse un approfondimento maggiore, e stata predi-
sposta !'Appendice A, alIa quale si fa spesso riferimento.
\
1.1 Qualche cenno storico I
I
La storia dell'evoluzione dei caicolatori elettronici costituisce da sola materiale suffi-
Ciente per la scrittura di un volume di carta stampata. Le poche notizie che seguono
'vengono fornite al solo scopo di dare al lettore la misura di come questa evoluzione I
sia stata incontenibile. Una ricostruzione pili dettagliata', specialmente per quanto
riguarda il primo periodo storieo, si trova in [HP93] .
11 primo ca1colatore elettronico venne progettato e costruita da J. P. Eckert I
e J. Mauchly, dell'Universita della Pennsylvania
1
. La macchina venne denomina-
ta ENIAC per Electronic Numerical Integrator and Calculator e Ia sua costruzione J
venne finanziata dal Ministero della Difesa Usa durante la seeonda guerra mondiale.
La macchina veniva impiegata per calcoli balistici. La sua esistenza venne resa nota \
ne11946, a guerra finita. Occupava un volume immenso: aveva fonna di U, era lunga J
circa 30 metri, alta 2 e spessore di 1 metro, per oltre 120 metri cubi di volume, su
una superficie di 180 mq. Pesava 30 tonnellate. Impiegava oitre 18.000 tubi a vuoto
(valvole) collegat; da 500,000 contatti saldati a mano, Aveva 20 registr; <Ii 10 ellre; I
ogni registro era lunge oltre mezzo metro. Era in grade di eseguire 1900 somme at
secondo. La programmazione avveniva in modo manuale, attraversa fill e interruttori
1Nel 1973 un giudicefedera.le americana ha annullato il brevetto di Mauchlye Eckert, stabilendo )
che I'ENIAC derivava dal computer di J. Atanasaff e C. Berry, costruita nel 1939.
v
, :\ .
; ..,- ".,
"
"-
,
n
,
1
"
,
,
, "
:'
,:ll'


'II,',
" '
jl "
'I'
,
',"
Introduzione
1
I
1
, "
"
....n
;\'1' ' ,. - '
_lOll,
1

dl
l
"II'
',1
,
,
:1
""I'
,'}
'"
",
I


JI
"
" '
;11
','
"I
,.j) :
'1,
'''',
4'
, 'II'
'1J",
"
:
,
-if

-"
ill
,::j,
"I

"
,,',;
'-I


,,,I

, "
"
!
,
,
I
,
"
\
J
Questa capitola eintroduttivo aile tematiche dellibro. Dopa Un breve resaconto stori- )
C9 s)Jll'evoluzione dei calcolatori elettronici, vengono richiamati alcuni concetti di ca-
rattere generale sui sistemi di numerazione, sulla rappresentazione dell'informazione
l
sulle unita. aritmetiche, sui sistemi digitali e sulla struttura ill base dei calcolatori. !
Ritenendo che la parte degli argomenti relativi ai sistemi digitali (algebra, reti
combinatorie e sequenziali) meritasse un approfondimento maggiore, e stata predi-
sposta !'Appendice A, alIa quale si fa spesso riferimento.
\
1.1 Qualche cenno storico I
I
La storia dell'evoluzione dei caicolatori elettronici costituisce da sola materiale suffi-
Ciente per la scrittura di un volume di carta stampata. Le poche notizie che seguono
'vengono fornite al solo scopo di dare al lettore la misura di come questa evoluzione I
sia stata incontenibile. Una ricostruzione pili dettagliata', specialmente per quanto
riguarda il primo periodo storieo, si trova in [HP93] .
11 primo ca1colatore elettronico venne progettato e costruita da J. P. Eckert I
e J. Mauchly, dell'Universita della Pennsylvania
1
. La macchina venne denomina-
ta ENIAC per Electronic Numerical Integrator and Calculator e Ia sua costruzione J
venne finanziata dal Ministero della Difesa Usa durante la seeonda guerra mondiale.
La macchina veniva impiegata per calcoli balistici. La sua esistenza venne resa nota \
ne11946, a guerra finita. Occupava un volume immenso: aveva fonna di U, era lunga J
circa 30 metri, alta 2 e spessore di 1 metro, per oltre 120 metri cubi di volume, su
una superficie di 180 mq. Pesava 30 tonnellate. Impiegava oitre 18.000 tubi a vuoto
(valvole) collegat; da 500,000 contatti saldati a mano, Aveva 20 registr; <Ii 10 ellre; I
ogni registro era lunge oltre mezzo metro. Era in grade di eseguire 1900 somme at
secondo. La programmazione avveniva in modo manuale, attraversa fill e interruttori
1Nel 1973 un giudicefedera.le americana ha annullato il brevetto di Mauchlye Eckert, stabilendo )
che I'ENIAC derivava dal computer di J. Atanasaff e C. Berry, costruita nel 1939.
\
\
I
I
1.
4Per anni estato costume confrontare con iI Vax Ie prestazioni di nuove m8.C;Chine immesse sui
mercato.
:lUna d'anni dopo l'avvento dei microprocesaori 1a DEC entrera in una rase di lenta declino
e fininl. per essere assorbita nel 1998 dalla Compaq, un'industria nata negli anni ottanta e fattasi
ricca fabbricando personal computer.

colatore, il PDP 8, prima macchina a costare sotto 20.000 Dollari. Si trattava di una
macchina con registri di 8 bit, Con i minicalcolatori di queste macchine si
diffonde anche entro organizzazioni non dotate di bilanci miliardari. Nacquero nuove
industrie per produrre maccrune di questa categoria (per esempio, 1a Data General);
come pure ci furona industrie attive in altri campi che si misero a fabbricare calco-
latori (per esempio, 130 Hewlett Packard, HP). Sempre 130 Digital introdusse nei primi
anni settanta il PDP 11. Si trattava di un minicalcolatore a 16 bit organizzato attor-
no a un unieo bus. Un'organizzazione che sara 10 standard per una ventina di anni,
specialmente con l'avvento dei microprocessori. Piu tardi 130 DEC introdusse il Vax,
estendendo in molti versi l'architettura PDP 11. n Vax. sara. una specie di riferimento
per Ie macchine di categoria intermedia e avra grande diffusione nel mondo scientifi-
co, accademico e industriale
4
. A fine anni settanta la DEC occupava saIdamente la
seconda posizione nella classifica dei produttori di sistemi di elaborazione, sebbene
assai distanziata quanta a fatturati dal gigante IBM'.
Introduzione 3
1.1. I I microprocessori
II termine llmicroprocessore" venne usato per 130. prima volta dalla Intel nel 1972,
quando rese disponibile un "computer microprogrammmabile su un unico chip" corn-
posta da una: CPU integrata completa di un sommatore parallelo a. 4 bit, 16 registri
a 4 bit, un accumulatore e uno stack. Questa. CPU venne denominata 4004 e, con
l'aggiunta di memorie di tipo RAM e ROM, costitui il sistema MCS-4. I micropro-
cessori hanno rappresentato il punto di avolta nell'uso del calcolatore: da macchina
gigante, utilizzata solo da pochi 30ddetti ai lavori, il calcolatore elettronico ediventato
un dispositivo piccolo cODvenientemente utilizzato nell'industria, negli uffici e anche
a livello domestico,
Dalla fine degli annj sessanta. si era evidenziato un serio problema nella proget-
tazione: 130 complessita dei sistemi digitali si avvicinava al punto in cui il Dumero
di componenti necessari alla re3olizzazione delle funzionalita. richieste dagli apparati
avrebbe superato i limiti del trattabile. Un rimedio consistette nell'utilizzare logica
convenzionale accoppiandola a memorie ROM in funzione eli reti combinatorie com-
plesse. Questa soluzione condusse alia nascita del microprocessore. Nell'estate del
1969, il costruttore giapponese Busicom chiese alIa Intel di pr'odurre un integrato
per una famiglia di calcolatrici progra.mmabili ad alte prestazioni, n committente
intende.va realizzare calcolatrici con una mezza dozzina di integrati, per ciascuno dei
quali si prevedevano dai 600 ai 1000 transistori. All'Intel (allor3o una piccolissima
1
per quanto brillante societa) esaminarono il progetto e conclusero che 10 sviluppo di
un tale apparato sarebbe stato troppo complesso per il prezzo previsto di mercato.
Alcuni progetti Intel avevano esperienza d'uso del rninicalcolatore PDP 8, al cui in-
terno c'era una ROM piuttosto grande, e pensarono che la tecnologia fosse matura
per sviluppare in forma integrata un processore capa.ce di interpretare di

.,:
'j'l

"

J
'.'
.,.

" .',
(


I

:,. "
,
"
,
.'
,

'.,
,
..,
.,

"
,
I. ,I.
,"
"
,
!.r.
'F
'JI'
.,

"\'
)
'ii,

"'
,,:'
' .. '

"
:,tl
,
,
.;\
::1'
i1
;:;1

,:;,1
,
"..
',"I'
"
c;.'!
'If,
"
,
"
"I
" "
'Ii:
" 'r"
"
.;'!,
J
.J
,,jl
,.,.
"
,. ..
,
"
2 Capitolo 1
)
) 'Le oehede perlo,"" .",anoo per annl 10 stand.rd di ingresso, oon 0010 por i d.tl, m. anch. por
j programmi. Fino alla meta degli anni settanta perforatori e lettori di scbede facevano parte del
normale paesaggio di qualunque centro di ca.lcolo.
1
3Hennessy e Patterson [HP93} espongono una serie di argomenti in base ai quali la fama del
signor Von Neuman eda considerarsi parzialmente usurpata e che ad altri avrebbe dovuto sorridere
1a gloria.
suI pannello di cantrollo, non dissimile cia queUo di una vecchia centralina telefonica.
I dati, venivano introdotti attraverso schede perlorate
2
.
n problema principale della macchina era la modalita. d.i programmazione. John
von ,Neuman, che faceva parte: sin dal 1944 del gruppo di ricercatori e progettisti
che ruotava attorno al Ministero della Difesa Usa, scrisse un rapporto in cui veniva
esposta per la prima volta l'idea di costruire un calcolatore a programma mernorizzato,
che egli chiamo EDVAC (Electronic Discrete Variable Automatic Camputer). Questa
soluzione divento la norma e, di fatto, distingue quelli che oggi chiamiamo calcolatori
elettronici cia precedenti macchinededicate a1 calcola. Von Neuman passe (llia storia
3
.
Eckert e Mauchly fondarono una societa che eostful il prototipo chiamato BINAC.
La societa. venne poi acquistata dalla Remington-Rand, per la quale, nel1951, venne
prodotto il primo esempio di calcolatore commerciale: l'UNIVAC I, venduto per circa
250.000 Dollari Usa. Di UNIVAC I ne vennero prodotti 48 esemplari.
L'IBM, presente da anni nel settore delle macchine da ufficio, entro in campo
e produsse il primo suo calcolatore (I 'IBM 701) nel 1952, vendendone una ventina,
Negli anni sessanta l'IBM introdusse il sistema S/360, come risultato di un proget-
to di sviluppo nel Quale la societa aveva investito svariati milioni di Dollari. Per la
prima volta si. distingueva il concetto di architettura da quello eli nel
sensa che l'illM aveva definito un'organizzazione di macchina die sarebbe stata co-
roune a tutta una famiglia d.i calcolatori. Questi avrebbero potuto dimensioni,
capacita e potenzialita diverse, avrebbero potuto essere realizzati con tecnologie di-
verse, ma sarebbero stati comunque compatibili tr30 di loro. Si tratto di un passaggio
fondamentale: da quel momenta i concetti di archi-tettura e compatibilita avrebbero
costituito il fondamento per ogni produzione industriale, L'IBM dominera per anni
il mercato dei calcolatori in tutto il mondo. Agli inizi degli anni settanta, essa era ....
\
pa.d.rona di oltre il 60% del mercato, mentre gli al.tri si dividevano quel che rimaneva.
\1 A fine anni sessanta,.venne introdotto il sistema S/370, successore del precedente, rna
) sempre compatibile. Negli anei successivi: fino ai nostri giorni LTBM ha continu.ato a
costruire macch.ine sostanzialmente discendenti da quell'architettura. Non ci 'si deve
)
stupire: dal momento in cui erano stati fatti investimenti giganteschi nel software da
parte di chi 10 impiegava, Ie macchine IBM erano in ogni ministero 0 grande
impresa. La necessita. di salvaguardare questa patrhnonio estata e continua a essere
una delle forze condizionanti dell'evoluzione del mercato dell'informatica.
\
Gli annj sessanta e settanta sono stati gli anni delle macchine della categoria
chiamata mainframe. Si trattava d.i macchine costose (di norma sopra al centinaio
di milioni di Lire) equipaggiate con sistemi operativi che ne permettevano un' uso
condiviso da parte di piu utenti. Nel 1963 apparve il CDC 6600, il primo vero super-
1
calcolatore. n suo progettista S. Cray, dopo aver progettato altri calcolatori per 1a
Control Data CorporatioD, fondo successivarnente una sua societa. che ha continuato
J a produrre macchine ultrapotenti..
Net 1965 la DEC (Digital Equipment Corporation) introdusse il primo minical-
\
I
1
1
.J
\
\
I
I
1.
4Per anni estato costume confrontare con iI Vax Ie prestazioni di nuove m8.C;Chine immesse sui
mercato.
:lUna d'anni dopo l'avvento dei microprocesaori 1a DEC entrera in una rase di lenta declino
e fininl. per essere assorbita nel 1998 dalla Compaq, un'industria nata negli anni ottanta e fattasi
ricca fabbricando personal computer.

colatore, il PDP 8, prima macchina a costare sotto 20.000 Dollari. Si trattava di una
macchina con registri di 8 bit, Con i minicalcolatori di queste macchine si
diffonde anche entro organizzazioni non dotate di bilanci miliardari. Nacquero nuove
industrie per produrre maccrune di questa categoria (per esempio, 1a Data General);
come pure ci furona industrie attive in altri campi che si misero a fabbricare calco-
latori (per esempio, 130 Hewlett Packard, HP). Sempre 130 Digital introdusse nei primi
anni settanta il PDP 11. Si trattava di un minicalcolatore a 16 bit organizzato attor-
no a un unieo bus. Un'organizzazione che sara 10 standard per una ventina di anni,
specialmente con l'avvento dei microprocessori. Piu tardi 130 DEC introdusse il Vax,
estendendo in molti versi l'architettura PDP 11. n Vax. sara. una specie di riferimento
per Ie macchine di categoria intermedia e avra grande diffusione nel mondo scientifi-
co, accademico e industriale
4
. A fine anni settanta la DEC occupava saIdamente la
seconda posizione nella classifica dei produttori di sistemi di elaborazione, sebbene
assai distanziata quanta a fatturati dal gigante IBM'.
Introduzione 3
1.1. I I microprocessori
II termine llmicroprocessore" venne usato per 130. prima volta dalla Intel nel 1972,
quando rese disponibile un "computer microprogrammmabile su un unico chip" corn-
posta da una: CPU integrata completa di un sommatore parallelo a. 4 bit, 16 registri
a 4 bit, un accumulatore e uno stack. Questa. CPU venne denominata 4004 e, con
l'aggiunta di memorie di tipo RAM e ROM, costitui il sistema MCS-4. I micropro-
cessori hanno rappresentato il punto di avolta nell'uso del calcolatore: da macchina
gigante, utilizzata solo da pochi 30ddetti ai lavori, il calcolatore elettronico ediventato
un dispositivo piccolo cODvenientemente utilizzato nell'industria, negli uffici e anche
a livello domestico,
Dalla fine degli annj sessanta. si era evidenziato un serio problema nella proget-
tazione: 130 complessita dei sistemi digitali si avvicinava al punto in cui il Dumero
di componenti necessari alla re3olizzazione delle funzionalita. richieste dagli apparati
avrebbe superato i limiti del trattabile. Un rimedio consistette nell'utilizzare logica
convenzionale accoppiandola a memorie ROM in funzione eli reti combinatorie com-
plesse. Questa soluzione condusse alia nascita del microprocessore. Nell'estate del
1969, il costruttore giapponese Busicom chiese alIa Intel di pr'odurre un integrato
per una famiglia di calcolatrici progra.mmabili ad alte prestazioni, n committente
intende.va realizzare calcolatrici con una mezza dozzina di integrati, per ciascuno dei
quali si prevedevano dai 600 ai 1000 transistori. All'Intel (allor3o una piccolissima
1
per quanto brillante societa) esaminarono il progetto e conclusero che 10 sviluppo di
un tale apparato sarebbe stato troppo complesso per il prezzo previsto di mercato.
Alcuni progetti Intel avevano esperienza d'uso del rninicalcolatore PDP 8, al cui in-
terno c'era una ROM piuttosto grande, e pensarono che la tecnologia fosse matura
per sviluppare in forma integrata un processore capa.ce di interpretare di

.,:
'j'l

"

J
'.'
.,.

" .',
(


I

:,. "
,
"
,
.'
,

'.,
,
..,
.,

"
,
I. ,I.
,"
"
,
!.r.
'F
'JI'
.,

"\'
)
'ii,

"'
,,:'
' .. '

"
:,tl
,
,
.;\
::1'
i1
;:;1

,:;,1
,
"..
',"I'
"
c;.'!
'If,
"
,
"
"I
" "
'Ii:
" 'r"
"
.;'!,
J
.J
,,jl
,.,.
"
,. ..
,
"
2 Capitolo 1
)
) 'Le oehede perlo,"" .",anoo per annl 10 stand.rd di ingresso, oon 0010 por i d.tl, m. anch. por
j programmi. Fino alla meta degli anni settanta perforatori e lettori di scbede facevano parte del
normale paesaggio di qualunque centro di ca.lcolo.
1
3Hennessy e Patterson [HP93} espongono una serie di argomenti in base ai quali la fama del
signor Von Neuman eda considerarsi parzialmente usurpata e che ad altri avrebbe dovuto sorridere
1a gloria.
suI pannello di cantrollo, non dissimile cia queUo di una vecchia centralina telefonica.
I dati, venivano introdotti attraverso schede perlorate
2
.
n problema principale della macchina era la modalita. d.i programmazione. John
von ,Neuman, che faceva parte: sin dal 1944 del gruppo di ricercatori e progettisti
che ruotava attorno al Ministero della Difesa Usa, scrisse un rapporto in cui veniva
esposta per la prima volta l'idea di costruire un calcolatore a programma mernorizzato,
che egli chiamo EDVAC (Electronic Discrete Variable Automatic Camputer). Questa
soluzione divento la norma e, di fatto, distingue quelli che oggi chiamiamo calcolatori
elettronici cia precedenti macchinededicate a1 calcola. Von Neuman passe (llia storia
3
.
Eckert e Mauchly fondarono una societa che eostful il prototipo chiamato BINAC.
La societa. venne poi acquistata dalla Remington-Rand, per la quale, nel1951, venne
prodotto il primo esempio di calcolatore commerciale: l'UNIVAC I, venduto per circa
250.000 Dollari Usa. Di UNIVAC I ne vennero prodotti 48 esemplari.
L'IBM, presente da anni nel settore delle macchine da ufficio, entro in campo
e produsse il primo suo calcolatore (I 'IBM 701) nel 1952, vendendone una ventina,
Negli anni sessanta l'IBM introdusse il sistema S/360, come risultato di un proget-
to di sviluppo nel Quale la societa aveva investito svariati milioni di Dollari. Per la
prima volta si. distingueva il concetto di architettura da quello eli nel
sensa che l'illM aveva definito un'organizzazione di macchina die sarebbe stata co-
roune a tutta una famiglia d.i calcolatori. Questi avrebbero potuto dimensioni,
capacita e potenzialita diverse, avrebbero potuto essere realizzati con tecnologie di-
verse, ma sarebbero stati comunque compatibili tr30 di loro. Si tratto di un passaggio
fondamentale: da quel momenta i concetti di archi-tettura e compatibilita avrebbero
costituito il fondamento per ogni produzione industriale, L'IBM dominera per anni
il mercato dei calcolatori in tutto il mondo. Agli inizi degli anni settanta, essa era ....
\
pa.d.rona di oltre il 60% del mercato, mentre gli al.tri si dividevano quel che rimaneva.
\1 A fine anni sessanta,.venne introdotto il sistema S/370, successore del precedente, rna
) sempre compatibile. Negli anei successivi: fino ai nostri giorni LTBM ha continu.ato a
costruire macch.ine sostanzialmente discendenti da quell'architettura. Non ci 'si deve
)
stupire: dal momento in cui erano stati fatti investimenti giganteschi nel software da
parte di chi 10 impiegava, Ie macchine IBM erano in ogni ministero 0 grande
impresa. La necessita. di salvaguardare questa patrhnonio estata e continua a essere
una delle forze condizionanti dell'evoluzione del mercato dell'informatica.
\
Gli annj sessanta e settanta sono stati gli anni delle macchine della categoria
chiamata mainframe. Si trattava d.i macchine costose (di norma sopra al centinaio
di milioni di Lire) equipaggiate con sistemi operativi che ne permettevano un' uso
condiviso da parte di piu utenti. Nel 1963 apparve il CDC 6600, il primo vero super-
1
calcolatore. n suo progettista S. Cray, dopo aver progettato altri calcolatori per 1a
Control Data CorporatioD, fondo successivarnente una sua societa. che ha continuato
J a produrre macchine ultrapotenti..
Net 1965 la DEC (Digital Equipment Corporation) introdusse il primo minical-
\
I
1
1
.J
9Di queati aviluppi 5i parla con maggiori dettagli nell'Appendice apPOl3itamente dedicata J
all'architettura della fa:migJia x86.
sto versioni a. 16 bit dei micro Motorola e Zilog. La prima introdusse il dispositivo
,MC68000, la secooda introdusse 10 Z8000. In comune all'8086 avevano il bus dati I
esterno di 16 bit e la possibilita di indirizzate un spazio eli memoria immenso. Biso-
gna dire che 10 Z8000 aveva., almeno sulla carta, caratteristiche architetturali superiori
a11'8086: da un certo punta di vista era una specie di super insieme dello 8086, rna
era possibile evitare Ie complicazioni del madelIa di memoria di quest
l
ultime. Anche I
il 68000 aveva caratteristiche architetturali pili convincenti delP8086: presentava an-
zitutto uno spazio Iineare. e si annunciava pili potente. Tuttavia sia 10 zaooa sia il
68000, si fecero aspettare troppo a lunge dopo I'introduzione dell'8086. n68000 arrivo
suI mercato con quasi due anni d.i ritardo, concedendo all'8086 grande vantaggio. \
Ma fu l'introduzione dell'8088 a cambiare Ie cose. L'8088 era un 8086 rna con bus
esterno a 8 bit. Motorola e Zilog annunciarono Ie versioni a 8 bit (MC68008 e Z8008),
rna. quando 1'IBM castrul il suo PC (Pe.rsonal Computer), sul mercato c'era un unico
miqo a 8 bit capace di almena 1Mbyte di memoria: 1'8088. Quello fu il
punto.di svolta dell'evoluzione del mondo dell'informatica. L'architettur& Intel diven- ]
ne 10 standard eli fatto nel mondo dei PC, la Microsoft stabilile basi per eliventare la
maggior compagnia di software del pianeta
9
.
n 68000 ebbe ottima accoglienza da parte dei costruttori delle c08iddette work- I
station, ovver? sistemi allora molto pill
dei calcolaton per I quah II SIstema operativo UnIX era la norma. n madelIa
di memoria !ineare del 68000 era adeguato per la tecnica di gestione della memoria
virtuale eli Unix. n 68000 aveva inoltre piu potenza dell'8086, ancbe percbe bus da- ,
ti e indirizzi non erano condivisi come Quest'ultimo (l'integrato MC68000 aveva 64 ! I
piedini). Per anni l'architettura Motorola sara 10 standard di fatto delle pili diffuse
workstation.' 'n 68000 e i suoi successori sarebbero stati impiegati da Sun Micro-
systems (it pili accreditato costruttore di questa categoria di macchine), cia HP, da \
Apollo (poi assorbita da HP) da molti altri. l'l 68000 venne pure impiegato nei
McIntosh della Apple. La famiglia 68000 ebbe largo impiego ancbe nel campo indu- I
striale 0 come embedded computer, in quei casi, come nelle stampanti postscript in cui
si richiedevano buone capacita elaborative. La della famiglia MC68000 co- I
minced. a declinare verso la fine degli anm ottanta, Quando i principali costruttori.di
workstation cominciarono a ricorrere 0 a produrre direttamente CPU RISC (Reduced
Instruction Set Computer), corne accennato poco pili avanti.
Lo Z8000 non sfonda nel mercato dell'informatica dei grandi numeri ne trovo \
impiego in ambiente industriale. Venne impiegato nel Commodore
l
un calcolatore
personale venduto essenzialmente come videogioco. In Italia 1'Olivetti usc 10 Z8000
per i1 suo primo PC (denominato M20). L'M20 era una buona macchina, rna non
incontro i favori del grande pubblico e, dopa poco tempo, il costruttore fu costretto a J
riconvertire la sua linea di calcolatori personali
1
passando alIa produzione di macchine
compatibili col PC: 1a torta era tanto ricca che unlesigua fettina Yaleva molto di piu
del totale dominio in aree parallele.
I microprocessori. a 16 bit entrarono in una fase di grande crescita. Apparvero I
componenti di corredo avanzati, come gestori di memoria (MMU, Memory Manage.
ment Unit), unita aritmetiche in virgola mobile (FPU, Floating Point Unit) e control-
-
'-
4 Ca.pitola 1
istruzioni generali, contenute in ROM. Una simile CPU avrebbe trovato impiego non
solo nelle 'calcolatrici rna anche in luogo .dei minicomputer
6
. Nel Novembre del 1971
Intel decise di pubblicare il primo articol0 sull'MCS-4. L'interesse fu subito notevole
e Intel realizzQ un modesto rna promettente guadagno di 8500 Dollari.
Mentre stava lavoranda al 4004, l'Intel aveva avviato un progetto paraUelo che
avrebbe portato al primo microprocessore a 8 bit, 1'8008: U80G8 fu introdotto
neWAprile del 1972} nella forma di un integrato a 18 piedini
7
ed era realizzato in
tecnologia PMOS. Esse aveva. un tempo media di esecuzione delle istruzioni di 301JS.
Fu pero solo con I'introduziooe dell'8080 [Noy81] nell'Aprile del 1974, che 11 mi-
croprocessore venne accreditato dalla comunita scientifica e tecnologica come un dis
positivQ non solo capace di sostituire la logica convenzionale, rna anche in grade di
essere impiegato come un elaboratore di U.80 generale. V8080 venne prodotto in tec-
nologia n-MOS da 6 micron, per un totale d.i 6.000 transistori in un integrato a 40
piedini (DIP). La frequenza del clock poteva raggiungere i 2 MHz consentendo I'esecu-
zione di alcune isttuzioni in 2 jJ.s. Si trattava di un dispositivo con prestazioni tali da
eaaere in breve tempo riconosciuto come 1a macchina a 8 bit per ecceUenza. La rapida
approvazione da parte del mercato e Ie forti richieste' dell'8080, generarono due nuovi
microprocessori concorrenti, il Motorola MC6800 e 10 Zilog Z80
8
. n 6800, introdotto a
meta del 1974, fu it primo microprocessore ad avere un'alimentazione singola di +5V
(La risposta dell'Intel fu 1'8085, evoluzione tecnologica - e minimamente archi.tettu-
tale - dell'8080). Veliminazione di tensioni di alimentazione multiple abbasso il costa
del prodotto e rese il 6800 malta diffuso sul mercato. Lo Z80, realizzato nel 1975,
riHetteva i progressi nell'architettura fatti nei due anni success.ivi aWuscita dell'8080 e
del 6800. La Z80 estate considerato come il punta pili alto raggiunto dall'evoluzione'
delle architetture di questa categoria di maccrune. Esse incorporava il repertorio di ...
istruzioni dell'8080 e quindi aveva piena compatibilita. con i programmi che erano stati
scritti fino a quel tempo per 1'8080.
n primo microprocessore su singolo integrato con bus dati esterno a 16 bit fu
il PACE, introdotto nel 1974 dalla National. Si trattava di un dispositivo MOS a
canale p, con un cido di istruzione di 10 J.Ls, contenuto in un package DIP da 40
piedini. Altri .costruttori produssero i loro microprocessori a 16 bit, corne il 9900 della
Texas Instruments. Purtroppo quesH dispositivi continuavano a indirizzare "sold'
64 kbyte, perche, alPepeca, questa rnisuta era generalmente giudicata al di sopra di
qualunque necessita. pratica.
Fu 1'8086 della Intel, introdotto nel Giugno 1978, con il suo Mbyte di memoria
indirizzabile a far passare alia seconda generazione ill micraprocessori. L'8086 venne
prodotto in tecnologia HMOS da 3 jJ.m, per un totale di 29.000 transistori, in un in-
tegrato a 40 pieelini (DIP). La frequenza del clock era eli 5 MHz, per una capacit1>
elaborativa media di 0,33 MIPS (Milioni di Istruzioni Per Secondo). Seguirono pres-
eUn .grOsso contributo aHa cruzione dell'MeS-4. fu dato anche da Federico Faggin, in seguito
fondatore e presidente della Zilog, it quaJe, approdato aHa Intel nel 1970, rapidamente it
concetto del nuovo dispotlitivo che ili stava sviluppando e ne comincio l'ottlmlzzazione in tecnologia
MOS: in soli 9 mesi produsse campioni dei 4. integrati che sarebbero poi diventati I'MCS-4.
11 piedini erano su due file, costltueodo iI cosiddetto packoge DIP, da Duol Inline Package.
8Naturalmente a Silicon Valley e dintomi non c'era. aolo 1'lntel a studiare queate nuove tecnologie,
praticamentl}! tutti i grandi produttori di diapositivi elettrooici erano impiegati nello aviluppo dei
loro microprocessori, cercando di acrivare sul mercato con il massimo anticipo poosibile rispetto alia
concorrenza.
,.:" ,
,', ." ,".. ...
.
l '
." .

:. [j;
'f
e,
..
j
"
.. ; .
<, '
:
,..,
,
'" i'j

.
.'
,
,.
,.,
l
,I
I

:.:'f
i.' 'I'

.,.
"'1
-I
. .,
:j
':J:'
'

,
''iI
,:'
..,


.""
'a
'r
h
n
l
.. "1
f
"

J'
l
1
..
.'. '
'j
'JI
.,
"I ;1
",'
"
\1
.j',
..

.,
,
,
"1
I
"
,

,11
"II

Intro.duzione
5
I
]
9Di queati aviluppi 5i parla con maggiori dettagli nell'Appendice apPOl3itamente dedicata J
all'architettura della fa:migJia x86.
sto versioni a. 16 bit dei micro Motorola e Zilog. La prima introdusse il dispositivo
,MC68000, la secooda introdusse 10 Z8000. In comune all'8086 avevano il bus dati I
esterno di 16 bit e la possibilita di indirizzate un spazio eli memoria immenso. Biso-
gna dire che 10 Z8000 aveva., almeno sulla carta, caratteristiche architetturali superiori
a11'8086: da un certo punta di vista era una specie di super insieme dello 8086, rna
era possibile evitare Ie complicazioni del madelIa di memoria di quest
l
ultime. Anche I
il 68000 aveva caratteristiche architetturali pili convincenti delP8086: presentava an-
zitutto uno spazio Iineare. e si annunciava pili potente. Tuttavia sia 10 zaooa sia il
68000, si fecero aspettare troppo a lunge dopo I'introduzione dell'8086. n68000 arrivo
suI mercato con quasi due anni d.i ritardo, concedendo all'8086 grande vantaggio. \
Ma fu l'introduzione dell'8088 a cambiare Ie cose. L'8088 era un 8086 rna con bus
esterno a 8 bit. Motorola e Zilog annunciarono Ie versioni a 8 bit (MC68008 e Z8008),
rna. quando 1'IBM castrul il suo PC (Pe.rsonal Computer), sul mercato c'era un unico
miqo a 8 bit capace di almena 1Mbyte di memoria: 1'8088. Quello fu il
punto.di svolta dell'evoluzione del mondo dell'informatica. L'architettur& Intel diven- ]
ne 10 standard eli fatto nel mondo dei PC, la Microsoft stabilile basi per eliventare la
maggior compagnia di software del pianeta
9
.
n 68000 ebbe ottima accoglienza da parte dei costruttori delle c08iddette work- I
station, ovver? sistemi allora molto pill
dei calcolaton per I quah II SIstema operativo UnIX era la norma. n madelIa
di memoria !ineare del 68000 era adeguato per la tecnica di gestione della memoria
virtuale eli Unix. n 68000 aveva inoltre piu potenza dell'8086, ancbe percbe bus da- ,
ti e indirizzi non erano condivisi come Quest'ultimo (l'integrato MC68000 aveva 64 ! I
piedini). Per anni l'architettura Motorola sara 10 standard di fatto delle pili diffuse
workstation.' 'n 68000 e i suoi successori sarebbero stati impiegati da Sun Micro-
systems (it pili accreditato costruttore di questa categoria di macchine), cia HP, da \
Apollo (poi assorbita da HP) da molti altri. l'l 68000 venne pure impiegato nei
McIntosh della Apple. La famiglia 68000 ebbe largo impiego ancbe nel campo indu- I
striale 0 come embedded computer, in quei casi, come nelle stampanti postscript in cui
si richiedevano buone capacita elaborative. La della famiglia MC68000 co- I
minced. a declinare verso la fine degli anm ottanta, Quando i principali costruttori.di
workstation cominciarono a ricorrere 0 a produrre direttamente CPU RISC (Reduced
Instruction Set Computer), corne accennato poco pili avanti.
Lo Z8000 non sfonda nel mercato dell'informatica dei grandi numeri ne trovo \
impiego in ambiente industriale. Venne impiegato nel Commodore
l
un calcolatore
personale venduto essenzialmente come videogioco. In Italia 1'Olivetti usc 10 Z8000
per i1 suo primo PC (denominato M20). L'M20 era una buona macchina, rna non
incontro i favori del grande pubblico e, dopa poco tempo, il costruttore fu costretto a J
riconvertire la sua linea di calcolatori personali
1
passando alIa produzione di macchine
compatibili col PC: 1a torta era tanto ricca che unlesigua fettina Yaleva molto di piu
del totale dominio in aree parallele.
I microprocessori. a 16 bit entrarono in una fase di grande crescita. Apparvero I
componenti di corredo avanzati, come gestori di memoria (MMU, Memory Manage.
ment Unit), unita aritmetiche in virgola mobile (FPU, Floating Point Unit) e control-
-
'-
4 Ca.pitola 1
istruzioni generali, contenute in ROM. Una simile CPU avrebbe trovato impiego non
solo nelle 'calcolatrici rna anche in luogo .dei minicomputer
6
. Nel Novembre del 1971
Intel decise di pubblicare il primo articol0 sull'MCS-4. L'interesse fu subito notevole
e Intel realizzQ un modesto rna promettente guadagno di 8500 Dollari.
Mentre stava lavoranda al 4004, l'Intel aveva avviato un progetto paraUelo che
avrebbe portato al primo microprocessore a 8 bit, 1'8008: U80G8 fu introdotto
neWAprile del 1972} nella forma di un integrato a 18 piedini
7
ed era realizzato in
tecnologia PMOS. Esse aveva. un tempo media di esecuzione delle istruzioni di 301JS.
Fu pero solo con I'introduziooe dell'8080 [Noy81] nell'Aprile del 1974, che 11 mi-
croprocessore venne accreditato dalla comunita scientifica e tecnologica come un dis
positivQ non solo capace di sostituire la logica convenzionale, rna anche in grade di
essere impiegato come un elaboratore di U.80 generale. V8080 venne prodotto in tec-
nologia n-MOS da 6 micron, per un totale d.i 6.000 transistori in un integrato a 40
piedini (DIP). La frequenza del clock poteva raggiungere i 2 MHz consentendo I'esecu-
zione di alcune isttuzioni in 2 jJ.s. Si trattava di un dispositivo con prestazioni tali da
eaaere in breve tempo riconosciuto come 1a macchina a 8 bit per ecceUenza. La rapida
approvazione da parte del mercato e Ie forti richieste' dell'8080, generarono due nuovi
microprocessori concorrenti, il Motorola MC6800 e 10 Zilog Z80
8
. n 6800, introdotto a
meta del 1974, fu it primo microprocessore ad avere un'alimentazione singola di +5V
(La risposta dell'Intel fu 1'8085, evoluzione tecnologica - e minimamente archi.tettu-
tale - dell'8080). Veliminazione di tensioni di alimentazione multiple abbasso il costa
del prodotto e rese il 6800 malta diffuso sul mercato. Lo Z80, realizzato nel 1975,
riHetteva i progressi nell'architettura fatti nei due anni success.ivi aWuscita dell'8080 e
del 6800. La Z80 estate considerato come il punta pili alto raggiunto dall'evoluzione'
delle architetture di questa categoria di maccrune. Esse incorporava il repertorio di ...
istruzioni dell'8080 e quindi aveva piena compatibilita. con i programmi che erano stati
scritti fino a quel tempo per 1'8080.
n primo microprocessore su singolo integrato con bus dati esterno a 16 bit fu
il PACE, introdotto nel 1974 dalla National. Si trattava di un dispositivo MOS a
canale p, con un cido di istruzione di 10 J.Ls, contenuto in un package DIP da 40
piedini. Altri .costruttori produssero i loro microprocessori a 16 bit, corne il 9900 della
Texas Instruments. Purtroppo quesH dispositivi continuavano a indirizzare "sold'
64 kbyte, perche, alPepeca, questa rnisuta era generalmente giudicata al di sopra di
qualunque necessita. pratica.
Fu 1'8086 della Intel, introdotto nel Giugno 1978, con il suo Mbyte di memoria
indirizzabile a far passare alia seconda generazione ill micraprocessori. L'8086 venne
prodotto in tecnologia HMOS da 3 jJ.m, per un totale di 29.000 transistori, in un in-
tegrato a 40 pieelini (DIP). La frequenza del clock era eli 5 MHz, per una capacit1>
elaborativa media di 0,33 MIPS (Milioni di Istruzioni Per Secondo). Seguirono pres-
eUn .grOsso contributo aHa cruzione dell'MeS-4. fu dato anche da Federico Faggin, in seguito
fondatore e presidente della Zilog, it quaJe, approdato aHa Intel nel 1970, rapidamente it
concetto del nuovo dispotlitivo che ili stava sviluppando e ne comincio l'ottlmlzzazione in tecnologia
MOS: in soli 9 mesi produsse campioni dei 4. integrati che sarebbero poi diventati I'MCS-4.
11 piedini erano su due file, costltueodo iI cosiddetto packoge DIP, da Duol Inline Package.
8Naturalmente a Silicon Valley e dintomi non c'era. aolo 1'lntel a studiare queate nuove tecnologie,
praticamentl}! tutti i grandi produttori di diapositivi elettrooici erano impiegati nello aviluppo dei
loro microprocessori, cercando di acrivare sul mercato con il massimo anticipo poosibile rispetto alia
concorrenza.
,.:" ,
,', ." ,".. ...
.
l '
." .

:. [j;
'f
e,
..
j
"
.. ; .
<, '
:
,..,
,
'" i'j

.
.'
,
,.
,.,
l
,I
I

:.:'f
i.' 'I'

.,.
"'1
-I
. .,
:j
':J:'
'

,
''iI
,:'
..,


.""
'a
'r
h
n
l
.. "1
f
"

J'
l
1
..
.'. '
'j
'JI
.,
"I ;1
",'
"
\1
.j',
..

.,
,
,
"1
I
"
,

,11
"II

Intro.duzione
5
I
]
'110
..-

,
7
Introduzione
Caratteristiche alcuni microprocessori
Nome

4004
lntel Prim.' U (1971)
. -B008
Intel Prima CPU. 8 bit (1972)
8080
lotel Prima CPU a 8 bit. canale n (1974)
6800
Motorola Prim. CPU con alimentazione ,ingol. (5V) (1974)
TMS 1000
Texas Instr. II piu venduto microcontrollore a 4 bit (1974)
PACE
National Prima CPU a 16 bit single chip (1974)
1802
RCA Prima CPU in tecnologia CMOS (1974)
8048
Intel Primo microcalcolatore a 8 bit single chip (1976)
8086
Intel Prima CPU a indirizzare oltre 64 kbyte (1978)
8088
Intel Prima CPU a 8 bit con architett. interna a 16 bit (1979)
68020
Motorola Prima CPU integrata con una cache istruzioni (1984)
Z80000
Zilog

CPU integrata con cache dati e istruzioni (1985)
., .80386
Intel CPU integrata can la MMU (1986)
.. 68030 Motorola CPU integrata con cache separate e MMU (1987)
.. 80486 Intel CPU integrata con cache, MMU e FPU (1989)
68040
Motorola CPU con cache, MMU ed FPU (1989) .
'Pentium Intel CPU con architettura superscalare (1993)
,
10Si esclude iI CDC 6600 ehe pure aveva tutte Ie caratteristiche delle maccbine RISe, in quanta,
oltre a essere stato progettato in epoea anteeedente, era una macchina $ui coneepita per
essere un supercomputer.
Tabella 1.1 Vengono riportate Ie caratteristiche eli atcune CPU titolari eli un qualche
primato.
1:lceveranno it davuto apprafondimentoj per il momento vengono forniti alcuni cenni
storid su come si sono sViluppate Ie architetture Rlse. .
.";:" La prima macchina RISCIO venne realizzata in IBM, essenzialmente come proto
. tipo di studio, e venne denominata IBM 801. Era costruita. in logica discreta (logica
EeL, molto veloce) e presentava 32 registri di 32 bit, aveva una cache istruzioni e una
cache dati separate. n prototipo, sviluppato presso il centro di ricerca di Yorktown
Heights (NY), apparve nel 1979. Da questo prototipo IBM traIT" il modello 6150,
immesso suI mercato nel 1986, che tuttavia avra poco successo.
... Gli studi che portarono al modello 801 Cecere da catalizzatore a unJampia atti-
-vita di ricerca: vennero sviluppati due prototipi da due Universita della California,
il rosc I a Berkeley nel 1982 e il MIPS a Stanford nel 1983. Alia fine i risultati di
questi studi vennero convog1iati nella sviluppo delle CPU SPARe (Scalable Processor
Architecture), una famiglia di epu impiegate dalla Sun Microsystem nei propri calco-
latori. Con I'uso delle CPU SPARC, la Sun abbandoni> la linea MC6800. Ancbe dagli
studi che avevano portato at 'prototipo MIPS, nacque una societa, che, per l'appunto,
si chiamo MIPS. Le CPU MIPS vengono oggi impiegate in molte stazioni di lavoro
professionali, tra cui queUe della societa Computer Graphics..
Agli inizi degli anni novanta
J
si formo un consorzio tra IBM, Apple e Motorola
per la progettazione e la produzione di una nuova CPU di tipo RISC. Si trattava di
un accordo che aveva un solo obiettivo: battere sul canipo dell'informatica di basso
costa 10 strapotere dell'architettura Intel. La nuova architettura RISC si chiamo
.'
,. '.
";j
,1
'.

,'"
11
;
"
AI
,
'''l-
I
"I'
,
I
,
il
'I ., :
.,
1
1
.
,

:l!j'
."
'I
.-ott. "
":ir" -.
.
,
+.,.
""t,
.::! ..
II-

"
,.t-
;11
'1
.
" ".
I, ,.
',i,""
,
,'0.
,'"
':11.
)1,
,
,;'i
n

"
il
i,
.
" .
.,' '. . .
., .
111
.11
."
'." .','
.., ,',"
" \1
.:l1
" }Jj
...
.
." .
-."
I I
J 1.1.2 Le architetture RlSC
lori di accesso alia memoria (DMA, Direct Memory Access). n maggior problema the
1
i costruttori si trovarono a fronteggiare non era piu, a questo punta, la liniitazione del
numero di transistori, rna la potenza dissipabile da.! chip. Per limitare tale dissipa-
zione (che superava il watt), molte compagnie progettarono dispositivi in tecnologia
CMOS. .
\
Nel 1984 Motorola introdusse la prima riuscita estensione di I,lD microprocessore
da 16 a 32 bit, l'MC68020, realizzato in tecnologia CMOS da 1.5 p.m e reso disponi\lile
I con frequenze massime di funzionamento di 25 MHz. ndispositivo ayeva sia il bus dati
sia il bus indirizzi a 32 bit e conteneva all'interno una piccola cache istruziom: Era
\
inoltre stato previsto un dispositivo esterno per la gestione della memoria virtuale.
Questa volta Intel arrivQ con un certo ritardo (1985) a introdurre sui mercato la sua
CPU a 32 bit: 1'80386. Successivamente (1987) Motorola presenti> iI 68030, simile al
precedente rna con l'aggiunta di una memoria cache per dati e della MMU. Per qualche
)
tempo serobro che il 68030 riuscisse a contrastare l'espansione dell'a.ntagonista. Ma it
mondo del PC era onnai saldamente in mano a Intel in virtu dell'immenso patrimonio
software ormai esistente. Pure la National mise su1 mercato 1a sua CPU a 32 bit della
famiglia 32000
,
una architettura concepita per il mercato Unix e con l'obiettivo del
mercato dei 32 bit (anche se in prima versione era apparsa can una CPU a 16 bit). Con
I
questa serie la societa. di Santa Clara nusel a collocarsi al terzo posta nelle vendite di
microprocessori a 32 bit, raggiungendo un volume di vendite di 300,000 unita/anno.
Nel 1989 Motorola introdusse il 68040 cbe integrava 1.200.000transistori in un
singolo chip e aveva prestazioni 10 volte superiori al suo predecessore a parila, di clock.
)
L'anno successivo anche Intel presento il suo nuovo processore, 1'80486. Nonostante
l'uscita successiva al 68040
J
il 486 non trovo concorrenti in campo PC. Del resto il
486 aveva prestazioni di riguardo, avendo a bordo, oltre a una non trascurabile cache,
l'unita in virgola mobile. <.
\ All'architettura 68000 restavano in parte Ie applicazioni e il campo delle work-
I station. Ma. ormai, in questo segmento di mercato, stavano entrando Ie architetture.
roSC: la National avrebbe smesso di n a qualcbe anno di produrre la serie 32000.
La Motorola, avrebbe cessato eli sviluppare 1a linea 68000, dedicandosi alio sviluppo
\ dell'arcbitettura PowerPC, in compagnia di Apple e IBM.
I Nel seguito PIntel sviluppa il Pentium e i suoi successori
J
sempre compatibili.
Molti altri produttori di dispositivi elettronici (tra cui AMD) seguirono l'Intel nel
produrre CPU proprietarie, rna compatibili COD 1'architettura x 86.
\
La Tabella 1.1 riporta un elenco di microprocessori titolari di un qualche "prima.
to". Non c'e alcuna pretesa di completezza, come, del resto, non ha questa 1a
storia the abbiamo raccontato.
6 Capitolo 1
\ I microprocessori di cui si eparlato in precedenza sono 0 erano maccbine ClSe (Com-
J plex Instruction Set Computer), ovvero macchine dotate di un repertorio eli istruzioni
molto ampio. Infatti esse sonG state concepite negli anni settanta, quando era in
auge ricorrere aIla microprogrammazione nella realizzazione delPunita di controllo.
1
C'era pero chi, gia negli anni settanta
J
cornincio a studiare soluzioni architetturali che
portaroDo aile cosiddette macchine RISe (Reduced Instruction Set Computer). Pill
avanti nel libro, la discussione e il confronto tra Ie due differenti filosofie di progetto
1
l
il
'110
..-

,
7
Introduzione
Caratteristiche alcuni microprocessori
Nome

4004
lntel Prim.' U (1971)
. -B008
Intel Prima CPU. 8 bit (1972)
8080
lotel Prima CPU a 8 bit. canale n (1974)
6800
Motorola Prim. CPU con alimentazione ,ingol. (5V) (1974)
TMS 1000
Texas Instr. II piu venduto microcontrollore a 4 bit (1974)
PACE
National Prima CPU a 16 bit single chip (1974)
1802
RCA Prima CPU in tecnologia CMOS (1974)
8048
Intel Primo microcalcolatore a 8 bit single chip (1976)
8086
Intel Prima CPU a indirizzare oltre 64 kbyte (1978)
8088
Intel Prima CPU a 8 bit con architett. interna a 16 bit (1979)
68020
Motorola Prima CPU integrata con una cache istruzioni (1984)
Z80000
Zilog

CPU integrata con cache dati e istruzioni (1985)
., .80386
Intel CPU integrata can la MMU (1986)
.. 68030 Motorola CPU integrata con cache separate e MMU (1987)
.. 80486 Intel CPU integrata con cache, MMU e FPU (1989)
68040
Motorola CPU con cache, MMU ed FPU (1989) .
'Pentium Intel CPU con architettura superscalare (1993)
,
10Si esclude iI CDC 6600 ehe pure aveva tutte Ie caratteristiche delle maccbine RISe, in quanta,
oltre a essere stato progettato in epoea anteeedente, era una macchina $ui coneepita per
essere un supercomputer.
Tabella 1.1 Vengono riportate Ie caratteristiche eli atcune CPU titolari eli un qualche
primato.
1:lceveranno it davuto apprafondimentoj per il momento vengono forniti alcuni cenni
storid su come si sono sViluppate Ie architetture Rlse. .
.";:" La prima macchina RISCIO venne realizzata in IBM, essenzialmente come proto
. tipo di studio, e venne denominata IBM 801. Era costruita. in logica discreta (logica
EeL, molto veloce) e presentava 32 registri di 32 bit, aveva una cache istruzioni e una
cache dati separate. n prototipo, sviluppato presso il centro di ricerca di Yorktown
Heights (NY), apparve nel 1979. Da questo prototipo IBM traIT" il modello 6150,
immesso suI mercato nel 1986, che tuttavia avra poco successo.
... Gli studi che portarono al modello 801 Cecere da catalizzatore a unJampia atti-
-vita di ricerca: vennero sviluppati due prototipi da due Universita della California,
il rosc I a Berkeley nel 1982 e il MIPS a Stanford nel 1983. Alia fine i risultati di
questi studi vennero convog1iati nella sviluppo delle CPU SPARe (Scalable Processor
Architecture), una famiglia di epu impiegate dalla Sun Microsystem nei propri calco-
latori. Con I'uso delle CPU SPARC, la Sun abbandoni> la linea MC6800. Ancbe dagli
studi che avevano portato at 'prototipo MIPS, nacque una societa, che, per l'appunto,
si chiamo MIPS. Le CPU MIPS vengono oggi impiegate in molte stazioni di lavoro
professionali, tra cui queUe della societa Computer Graphics..
Agli inizi degli anni novanta
J
si formo un consorzio tra IBM, Apple e Motorola
per la progettazione e la produzione di una nuova CPU di tipo RISC. Si trattava di
un accordo che aveva un solo obiettivo: battere sul canipo dell'informatica di basso
costa 10 strapotere dell'architettura Intel. La nuova architettura RISC si chiamo
.'
,. '.
";j
,1
'.

,'"
11
;
"
AI
,
'''l-
I
"I'
,
I
,
il
'I ., :
.,
1
1
.
,

:l!j'
."
'I
.-ott. "
":ir" -.
.
,
+.,.
""t,
.::! ..
II-

"
,.t-
;11
'1
.
" ".
I, ,.
',i,""
,
,'0.
,'"
':11.
)1,
,
,;'i
n

"
il
i,
.
" .
.,' '. . .
., .
111
.11
."
'." .','
.., ,',"
" \1
.:l1
" }Jj
...
.
." .
-."
I I
J 1.1.2 Le architetture RlSC
lori di accesso alia memoria (DMA, Direct Memory Access). n maggior problema the
1
i costruttori si trovarono a fronteggiare non era piu, a questo punta, la liniitazione del
numero di transistori, rna la potenza dissipabile da.! chip. Per limitare tale dissipa-
zione (che superava il watt), molte compagnie progettarono dispositivi in tecnologia
CMOS. .
\
Nel 1984 Motorola introdusse la prima riuscita estensione di I,lD microprocessore
da 16 a 32 bit, l'MC68020, realizzato in tecnologia CMOS da 1.5 p.m e reso disponi\lile
I con frequenze massime di funzionamento di 25 MHz. ndispositivo ayeva sia il bus dati
sia il bus indirizzi a 32 bit e conteneva all'interno una piccola cache istruziom: Era
\
inoltre stato previsto un dispositivo esterno per la gestione della memoria virtuale.
Questa volta Intel arrivQ con un certo ritardo (1985) a introdurre sui mercato la sua
CPU a 32 bit: 1'80386. Successivamente (1987) Motorola presenti> iI 68030, simile al
precedente rna con l'aggiunta di una memoria cache per dati e della MMU. Per qualche
)
tempo serobro che il 68030 riuscisse a contrastare l'espansione dell'a.ntagonista. Ma it
mondo del PC era onnai saldamente in mano a Intel in virtu dell'immenso patrimonio
software ormai esistente. Pure la National mise su1 mercato 1a sua CPU a 32 bit della
famiglia 32000
,
una architettura concepita per il mercato Unix e con l'obiettivo del
mercato dei 32 bit (anche se in prima versione era apparsa can una CPU a 16 bit). Con
I
questa serie la societa. di Santa Clara nusel a collocarsi al terzo posta nelle vendite di
microprocessori a 32 bit, raggiungendo un volume di vendite di 300,000 unita/anno.
Nel 1989 Motorola introdusse il 68040 cbe integrava 1.200.000transistori in un
singolo chip e aveva prestazioni 10 volte superiori al suo predecessore a parila, di clock.
)
L'anno successivo anche Intel presento il suo nuovo processore, 1'80486. Nonostante
l'uscita successiva al 68040
J
il 486 non trovo concorrenti in campo PC. Del resto il
486 aveva prestazioni di riguardo, avendo a bordo, oltre a una non trascurabile cache,
l'unita in virgola mobile. <.
\ All'architettura 68000 restavano in parte Ie applicazioni e il campo delle work-
I station. Ma. ormai, in questo segmento di mercato, stavano entrando Ie architetture.
roSC: la National avrebbe smesso di n a qualcbe anno di produrre la serie 32000.
La Motorola, avrebbe cessato eli sviluppare 1a linea 68000, dedicandosi alio sviluppo
\ dell'arcbitettura PowerPC, in compagnia di Apple e IBM.
I Nel seguito PIntel sviluppa il Pentium e i suoi successori
J
sempre compatibili.
Molti altri produttori di dispositivi elettronici (tra cui AMD) seguirono l'Intel nel
produrre CPU proprietarie, rna compatibili COD 1'architettura x 86.
\
La Tabella 1.1 riporta un elenco di microprocessori titolari di un qualche "prima.
to". Non c'e alcuna pretesa di completezza, come, del resto, non ha questa 1a
storia the abbiamo raccontato.
6 Capitolo 1
\ I microprocessori di cui si eparlato in precedenza sono 0 erano maccbine ClSe (Com-
J plex Instruction Set Computer), ovvero macchine dotate di un repertorio eli istruzioni
molto ampio. Infatti esse sonG state concepite negli anni settanta, quando era in
auge ricorrere aIla microprogrammazione nella realizzazione delPunita di controllo.
1
C'era pero chi, gia negli anni settanta
J
cornincio a studiare soluzioni architetturali che
portaroDo aile cosiddette macchine RISe (Reduced Instruction Set Computer). Pill
avanti nel libro, la discussione e il confronto tra Ie due differenti filosofie di progetto
1
l
il
]
12Nel seguito la numerazione in base 8 Don viene piu considerata, anche perche ormai si fa )
praticamente usa solo della numerazione in base 16.
8 Capitola 1
PowerPG. Sulla carta dimostrava di possedere quanta di meglio si potesse mettere
. assieme come idee e come realizzazione all'epoca in cui venne progettata. Nonostante
ciD il PowerPC non eriuscito a contrastare la presenza Intel nel campo delle macchine
della categoria PC. Questa architettura viene correntemente impiegata da Apple nei
McIntosh e viene irnpiegata dall'IBM nelle stazioni di lavoro tecnico scientiche e
come sostitutiva di una precedente CPU in una linea di calco1atori di fascia intermedia
denominata AS/ 400.
1.2 Rappresentazione dell'informazione
La parte che segue contiene alcuni richiami Bulla rappresentazione dell'informazione.
Vengono esposti solo poehi concetti di base, ritenuti funzionali agli obiettivi di questo
libra. SuUa rappresentazione dell'informazione, l'aritmetica intera e in virgola mobile
esiste un'ampia letteratura, sia di carattere generale [CPS93], [HP93], [HVZ84! sia
specialistico [Orno94), pertanto la discussione che segue procede in modo intuitivo e
alquanto sbrigativo.
1.2.1 Sistemi di numerazione
Numero e un concetto matematico astratto per 1a descrizione quantitativa degli og-
getti cantenuti in un dato insieme. Un sistema di nurnerazione eun insieme di
e regale atti a rappresentare i numeri. Le due principali categorie di sistemi di nu-
merazione sono la posizionale e l'additiva (quella llsata dagli antichi Romani). Alta
prima categoria appartiene il consueto sistema di numerazione decimale
ll
:
Prendiamo il numero 1475. Esso viene interpretato come:
1475 = 1 x 10' +4 X 10' +7 X 10
1
+ 5 x 10
Come si vede, ogoi cifra che compare in 1475 ..,sume un valore che dipende daila
posizione (peso) nella stringa "1475". 11 sistema di numerazione decimale si basa su
10 simbali (cifre) diversi {0),2,.. ,9}. I Dumeri si rappresentano scrivendo sequenze
di cifre diverse.
In generale, sia dato un numero B > 2, detto base, e I'insieme fj composto da B
simboli diversi: 13 = {O,1,2, ... ,E - I}; la stringa di n crne:
b
n
-
1
b
n
_
2
. , . b1bo
can b
i
E fJ si interpreta come:
b
n
_
1
x B
n
-
I
+ b
n
_
2
x B
n
-
2
+ ... +b
I
X B
I
+ b
o
x EO
Consideriamo ora i casi di B uguale, rispettivamente, a 8, 16 e 2,
llLa ragione per cui l'uomo ccnta in base died deriva sicuramente dal riurnero di dita delle nostre
manL Si sa di popolazioni che Cantavano in base 5, I Maya avevano un sistema di numerazi.one
vigesimale. .
....
.':OW' ', .
...

:,4 :
.
.ii.
jl'
.: ; .
.}
.,


.
1
tr
i
1
"\1
':.'
...;
... :1
... ')
.,.,
.'
, "
.
,
" ..
,
:'\1' '
"4 ..
.';,
,

..""' .
it


.

..
'r" 0.']

"
.....
,X;::I
,-,'
'1' ',,:'j ,
"
,,,
;ij \

,.
Ji
,

,.J

, .'




,
.:,p.,
;-.,;
;,;1
,,11
:.it
:,,j
,

.\0;
JI
.. ":1'
:"
,.;,1'

"",,
"
-Ill'
.:,!

:11'
..
,
.
',.,.
"

.' "d '.
...."
..,-,
lntroduzione 9
Can B = 8 (sistema ottale) l'insieme dei simboli diversi e{3 = {0,1,2, .. ,7}. Se, a
esempio consideriarno la stringa 417, essa corrisponde al numero:
417 = 4 X8' + 1 X 8
1
+7 x 8 = 4 x 64 + 1 x 8 +7 x 1 = 271
Llapparente incongruenza cial fatto che normalmente, quando si vede un nume-
roo scritto, se ne da. decimale. Per evitare equivoci
l
l'uguaglianza
andrebbe scritta come:
417
s
= 271
10
nconcetto'di numero epuramente astratto, 417 e 271 sono 1a rappresentazione
dello stesso numero" in due diverse basi di numerazione. Per questo motivo, stringhe
di cifre come 417 e 271, di base imprecisarta, si dicono "numerali".
Can B = 16 (sistema esadecimale), per costruire un insieme di 16 simboli si pren-
dono a prestito Ie prime 61ettere dell'alfabeto, per cui {3 = {0,1,2, .. ,9,A,B,C,D,E,F} .
La stringa 22, interpretata in base 16, corrisponde a numero
2 x 16
1
+ 2 x16 = 34
Can B = 2 (sistema binarin) si hanna solo due simboli diversi: 0 eLLa stringa
10011, corrisponde al numero
."
1 x 2' +0 X 2' +0 X 2' +1 X 2
1
+1 x 2 = 1 x 16 +0 x 8 +Ox 4 +1 x 2 +1 x 1 = 19
10
In Tabella 1.2 vengono riportati i prirni 17 numeri interi nelle 4 rappresentazioni
. appena viste. La numerazione in base 2 eimportante perche nei calco1atori elettronici
l'informazione erappresentata solo attraverso due simboli {O, I}. Le numerazioni in
base 16 e in base 8 perche 1a trasformazione tra queste basi e 1a base.2 (e
viceversa) eimmediata
12
.
lfase 2
8, Base 16
-"ase 10
1 .i;ase 10
Base 2 B.... B
Base 16
0 O.
0 0 9 1001
11
9
1
1 1
1
. 10
1010 12
A
2
10 2 2
II 1011 13
B
3 11
3 3 12 1100
14
C
4 100 4
4 13 1101
15
D
5 101
5 5 14 1110
16
E
6 110
6 6 15 1111
17
F
7
111 7
7 16 10000 20
10
B 1000 10
B 17 10001 21
11
,
Tabella 1.2 I primi ]8 numeri nelle basi 10
1
2, 8 e 16,
I
I
J
I
,
"
I
\
(
\
I
I
J
J
]
12Nel seguito la numerazione in base 8 Don viene piu considerata, anche perche ormai si fa )
praticamente usa solo della numerazione in base 16.
8 Capitola 1
PowerPG. Sulla carta dimostrava di possedere quanta di meglio si potesse mettere
. assieme come idee e come realizzazione all'epoca in cui venne progettata. Nonostante
ciD il PowerPC non eriuscito a contrastare la presenza Intel nel campo delle macchine
della categoria PC. Questa architettura viene correntemente impiegata da Apple nei
McIntosh e viene irnpiegata dall'IBM nelle stazioni di lavoro tecnico scientiche e
come sostitutiva di una precedente CPU in una linea di calco1atori di fascia intermedia
denominata AS/ 400.
1.2 Rappresentazione dell'informazione
La parte che segue contiene alcuni richiami Bulla rappresentazione dell'informazione.
Vengono esposti solo poehi concetti di base, ritenuti funzionali agli obiettivi di questo
libra. SuUa rappresentazione dell'informazione, l'aritmetica intera e in virgola mobile
esiste un'ampia letteratura, sia di carattere generale [CPS93], [HP93], [HVZ84! sia
specialistico [Orno94), pertanto la discussione che segue procede in modo intuitivo e
alquanto sbrigativo.
1.2.1 Sistemi di numerazione
Numero e un concetto matematico astratto per 1a descrizione quantitativa degli og-
getti cantenuti in un dato insieme. Un sistema di nurnerazione eun insieme di
e regale atti a rappresentare i numeri. Le due principali categorie di sistemi di nu-
merazione sono la posizionale e l'additiva (quella llsata dagli antichi Romani). Alta
prima categoria appartiene il consueto sistema di numerazione decimale
ll
:
Prendiamo il numero 1475. Esso viene interpretato come:
1475 = 1 x 10' +4 X 10' +7 X 10
1
+ 5 x 10
Come si vede, ogoi cifra che compare in 1475 ..,sume un valore che dipende daila
posizione (peso) nella stringa "1475". 11 sistema di numerazione decimale si basa su
10 simbali (cifre) diversi {0),2,.. ,9}. I Dumeri si rappresentano scrivendo sequenze
di cifre diverse.
In generale, sia dato un numero B > 2, detto base, e I'insieme fj composto da B
simboli diversi: 13 = {O,1,2, ... ,E - I}; la stringa di n crne:
b
n
-
1
b
n
_
2
. , . b1bo
can b
i
E fJ si interpreta come:
b
n
_
1
x B
n
-
I
+ b
n
_
2
x B
n
-
2
+ ... +b
I
X B
I
+ b
o
x EO
Consideriamo ora i casi di B uguale, rispettivamente, a 8, 16 e 2,
llLa ragione per cui l'uomo ccnta in base died deriva sicuramente dal riurnero di dita delle nostre
manL Si sa di popolazioni che Cantavano in base 5, I Maya avevano un sistema di numerazi.one
vigesimale. .
....
.':OW' ', .
...

:,4 :
.
.ii.
jl'
.: ; .
.}
.,


.
1
tr
i
1
"\1
':.'
...;
... :1
... ')
.,.,
.'
, "
.
,
" ..
,
:'\1' '

"4 ..
.';,
,

..""' .
it


.

..
'r"
0.']

"
.....
,X;::I
,-,'
'1'
',,:'j ,
"
,,,
;ij \

,.
Ji
,

,.J

, .'




,
.:,p.,
;-.,;
;,;1
,,11
:.it
:,,j
,

.\0;
JI
.. ":1'
:"
,.;,1'

"",,
"
-Ill'
.:,!

:11'
..
,
.
',.,.
"

.'
"d '.
...."
..,-,
lntroduzione 9
Can B = 8 (sistema ottale) l'insieme dei simboli diversi e{3 = {0,1,2, .. ,7}. Se, a
esempio consideriarno la stringa 417, essa corrisponde al numero:
417 = 4 X8' + 1 X 8
1
+7 x 8 = 4 x 64 + 1 x 8 +7 x 1 = 271
Llapparente incongruenza cial fatto che normalmente, quando si vede un nume-
roo scritto, se ne da. decimale. Per evitare equivoci
l
l'uguaglianza
andrebbe scritta come:
417
s
= 271
10
nconcetto'di numero epuramente astratto, 417 e 271 sono 1a rappresentazione
dello stesso numero" in due diverse basi di numerazione. Per questo motivo, stringhe
di cifre come 417 e 271, di base imprecisarta, si dicono "numerali".
Can B = 16 (sistema esadecimale), per costruire un insieme di 16 simboli si pren-
dono a prestito Ie prime 61ettere dell'alfabeto, per cui {3 = {0,1,2, .. ,9,A,B,C,D,E,F} .
La stringa 22
,
interpretata in base 16, corrisponde a numero
2 x 16
1
+ 2 x16 = 34
Can B = 2 (sistema binarin) si hanna solo due simboli diversi: 0 eLLa stringa
10011, corrisponde al numero
."
1 x 2' +0 X 2' +0 X 2' +1 X 2
1
+1 x 2 = 1 x 16 +0 x 8 +Ox 4 +1 x 2 +1 x 1 = 19
10
In Tabella 1.2 vengono riportati i prirni 17 numeri interi nelle 4 rappresentazioni
. appena viste. La numerazione in base 2 eimportante perche nei calco1atori elettronici
l'informazione erappresentata solo attraverso due simboli {O, I}. Le numerazioni in
base 16 e in base 8 perche 1a trasformazione tra queste basi e 1a base.2 (e
viceversa) eimmediata
12
.
lfase 2
8, Base 16
-"ase 10
1 .i;ase 10
Base 2
B.... B
Base 16
0 O.
0
0
9
1001
11
9
1
1 1
1
. 10
1010
12
A
2
10 2
2
II
1011
13
B
3
11
3
3 12
1100
14
C
4
100
4
4
13
1101
15
D
5 101
5
5
14
1110
16
E
6
110
6
6
15
1111
17
F
7
111
7
7
16
10000
20
10
B
1000
10
B
17
10001
21
11
,
Tabella 1.2 I primi ]8 numeri nelle basi 10
1
2, 8 e 16,
I
I
J
I
,
"
I
\
(
\
I
I
J
J
"
',,!
11
lntroduzione
1100,1011 +
110 1110
1 0011 1001
0 1
10110 x
nHE
101
10110
00000
,
10110
-
1101110
o 1
o iI[Tl

1.2,3 Aritmetica binaria
,
,'
B = b
n
_
1
b
n
_
2
..... b1b
o
Tabella 1.4 Tabellina del pcodotto. It prodotto tra due uUIneri in base 2 viene calcolato
col medesimo procedimento seguito in aritmetica decima.le.
con b
i
E {OIl}. Tale vettore rappresenta 2
n
numeri diversi, per esempio i 2n interi
positivi compresi tra 0 e 2
n
- 1. Occarre stabilire una qualche convenzione per rap-
presentare i numeri negativi. Di norma se il bit pili a sinistra e 1, aHora il numero
viene interpretato come negativo. Sono possibiti tee convenzioni:
1.2.4 Numeri negativi
Consideriamo un vettore di n eifre binarie
Tabella 1.3 Tabellina. della somma. aritmetica ed esempio di somma tra. due numeri in ari-
tmetica binaria. Nella tabellina Ie due cifre 10 nell'angolo in basso a destra indicano che la
somma di 1 can 1 da riporto.
Costruire un'aritmetica binaria ricbiede che vengano scalati sulFinsieme {OIl} i fami-
liari concetti dell'aritmetica decimale. In particolare si possono costruire Ie tabelline
delle varie operaziani aritmetiche per rappresentazione binaria. In Tabella 1.3 viene
riportata la tabellina della somma e un esempio di di due numerj. La som-
ma viene eseguita esattamente come nel sistema decimale, partendo cia destra verso
sinistral tenendo canto dei riporti.
Ovviamente ailo stesso modo si potrebbero riportare Ie tabelline delle altre ope-
razloni. In Tabella 1.4 viene riportata 1a tabellina del prodotto. In questa caso il
. prodotto tra pili numeri e un proceaso che richiede il calcolo dei prodotti parziali e
l'esecuzione della loro somma. Per approfondimenti sull'argomento si rimanda alia
letteratura meozionata.
,

"" >..
"
, '

,
.
'.' ".
-
"?
,
"
;'.f

'.

" ..
",

"
,
,
:,
..
,
.;,
;'i::1. ,,"
;1
,
':- iI.
';;
<;
II'
I

,,'.
,u
'::l '. ,.

):1
,
,
"
1
"'t '
'"
'J!
-:?I .
! J
.'\: ",
, c' ': .
" 'j "
.i " ....
. '
" ',' ",
, ,
J.j
..J
<,

,-
..
,
(
.. "
';:i:
, ,
. ;.
=
10 Capitolo 1
Esaminiamo per prima cosa la conversione cia base Bk a base B e viceversa. In
particolare interessa 1a conversione tra esadecimale e binario.
Si consideri il numero binario 010111000011. Si raggruppino a partire da destra
Ie cifre binarie a quattro a quattro (0101 1100 0011) e sl sostituisea eiaseun gruppo

con la corrispondente cifra esadecimale (Tabella 1.2), 51 ottiene la stringa 5C3, E


facile convincersi che questa ela rappresentazione esadecimale del numero binario di
panenz3. Ovviamente it processo puo essere applicato anche in modo opposto, per 1a
conversione da binario a esadecimalej per esempio:
1.2.2 Conversione di base
IJLB07
"
=00011100110100000111
2
Formalmente quest.a proprieta si dimostra Del modo seguente. Sia data.la stringa:
bn - 1bn _2 ... b1bo in base Bot I cui corrisponrle il numero ,
bn_1(B')"-1 + b
n
_,(B')n-21 +'" + b,(B')' + bo(B')O (1.1)
dove ogni bi epresQ da {O,l,... lEI:. - I} ed erappresentato in base B come
b' k-1b k-2 '" b 0= b' '_lB'-l + b' ,_,B'-2 +" ,+ b oB
o
\, \, ',', " 1,
dove ogni bi,; e presQ da {DIl"" ,B - I}. Sostituendo in 1.1 a cia.scun b
i
la sua
rappresentazione in base B, si ha
[bn_1,'_lB'-1 + bn_1,k_2B'-2 + ' " + bn_1,oBO](B')n-1 +
(bn_2,k_1B'-1 + bn_2,'_2B'-2 + ' , "+ b
n
_
2
,oB
O
)(B')n-' +
[bo,'_lB'-l + bo,'_2B'-2 +'" ,+ bo,oBO](B')O =
,
b B
kn-I b B
kn
- 2
n-I,k-I + n-l,k-2 . + ... +
bO,k_1B'-1 + bO,'_2Bk-2 +, , , + bo,oBo)(B')O
che corrisponde alia stringa bn-t,k-lbn-l,k_2 ... b
n
-
I
,ob
n
-
2
,k-2 ... bo,o
La conversione da binario a decimale si effettua come calcolo del polinomio di
potenze del 2, Esempio:
1001101 = I, 2' +0, 2' +0, 2' + I, 2' + I, 2
2
+0, 2
'
+I, 2 =64 +8 + 4 + 1 =77
10
La conversione a binario del numero decimale N richiede che si trovi la stringa
di n cme binarie b
n
-
t
b
n
_
2
... btb
o
con b
i
= 0,1, tale per cui
N ::;;: b
n
-
1
x 2
n
-
1
+ b
n
_
2
x 2
n
-
2
+ ... + b
l
X 2
1
+b
o
x 20
Se si divide it polinomio per 2 si ottiene bo come resta e b
n
_
1
x 2
n
-
2
+b
n
_
2
x 2n-3 +
+ ... +b1 come Quoziente. Dividendo il Quoziente per 2 si ottiene b
l
come resta e
bn _ 1 x 2
n
-
3
+ bn - 2 x 2
n
-
4
+ ... + b
2
. Si itera il procedirnento fino a cite l'ultimo
quoziente attenuto non epiu divisibile. A Quel punta 1a rappresentazione binaria si
ottiene scrivendo da sinistra verso destra i resti in oedine inverso a come sono stati
peodotti. Consideriamo per esempio il numero 35. La serie successiva di quozienti
e resti ottenuti dividendo per 2 e: (17,1), (8,1), (4,0), (2,0), (1,0) (0,1); dunque la
rappresentazione binaria del nurnero 35 (decimate) e: 100011.
\
)
I
)
\
I
I
I
\
)
I
\
I
I
1
, 1
, I
,
1
",
"'""
'M ' '

"
',,!
11
lntroduzione
1100,1011 +
110 1110
1 0011 1001
0 1
10110 x
nHE
101
10110
00000
,
10110
-
1101110
o 1
o iI[Tl

1.2,3 Aritmetica binaria
,
,'
B = b
n
_
1
b
n
_
2
..... b1b
o
Tabella 1.4 Tabellina del pcodotto. It prodotto tra due uUIneri in base 2 viene calcolato
col medesimo procedimento seguito in aritmetica decima.le.
con b
i
E {OIl}. Tale vettore rappresenta 2
n
numeri diversi, per esempio i 2n interi
positivi compresi tra 0 e 2
n
- 1. Occarre stabilire una qualche convenzione per rap-
presentare i numeri negativi. Di norma se il bit pili a sinistra e 1, aHora il numero
viene interpretato come negativo. Sono possibiti tee convenzioni:
1.2.4 Numeri negativi
Consideriamo un vettore di n eifre binarie
Tabella 1.3 Tabellina. della somma. aritmetica ed esempio di somma tra. due numeri in ari-
tmetica binaria. Nella tabellina Ie due cifre 10 nell'angolo in basso a destra indicano che la
somma di 1 can 1 da riporto.
Costruire un'aritmetica binaria ricbiede che vengano scalati sulFinsieme {OIl} i fami-
liari concetti dell'aritmetica decimale. In particolare si possono costruire Ie tabelline
delle varie operaziani aritmetiche per rappresentazione binaria. In Tabella 1.3 viene
riportata la tabellina della somma e un esempio di di due numerj. La som-
ma viene eseguita esattamente come nel sistema decimale, partendo cia destra verso
sinistral tenendo canto dei riporti.
Ovviamente ailo stesso modo si potrebbero riportare Ie tabelline delle altre ope-
razloni. In Tabella 1.4 viene riportata 1a tabellina del prodotto. In questa caso il
. prodotto tra pili numeri e un proceaso che richiede il calcolo dei prodotti parziali e
l'esecuzione della loro somma. Per approfondimenti sull'argomento si rimanda alia
letteratura meozionata.
,

"" >..
"
, '

,
.
'.' ".
-
"?
,
"
;'.f

'.

" ..
",

"
,
,
:,
..
,
.;,
;'i::1. ,,"
;1
,
':- iI.
';;
<;
II'
I

,,'.
,u
'::l '. ,.

):1
,
,
"
1
"'t '
'"
'J!
-:?I .
! J
.'\: ",
, c' ': .
" 'j "
.i " ....
. '
" ',' ",
, ,
J.j
..J
<,

,-
..
,
(
.. "
';:i:
, ,
. ;.
=
10 Capitolo 1
Esaminiamo per prima cosa la conversione cia base Bk a base B e viceversa. In
particolare interessa 1a conversione tra esadecimale e binario.
Si consideri il numero binario 010111000011. Si raggruppino a partire da destra
Ie cifre binarie a quattro a quattro (0101 1100 0011) e sl sostituisea eiaseun gruppo

con la corrispondente cifra esadecimale (Tabella 1.2), 51 ottiene la stringa 5C3, E


facile convincersi che questa ela rappresentazione esadecimale del numero binario di
panenz3. Ovviamente it processo puo essere applicato anche in modo opposto, per 1a
conversione da binario a esadecimalej per esempio:
1.2.2 Conversione di base
IJLB07
"
=00011100110100000111
2
Formalmente quest.a proprieta si dimostra Del modo seguente. Sia data.la stringa:
bn - 1bn _2 ... b1bo in base Bot I cui corrisponrle il numero ,
bn_1(B')"-1 + b
n
_,(B')n-21 +'" + b,(B')' + bo(B')O (1.1)
dove ogni bi epresQ da {O,l,... lEI:. - I} ed erappresentato in base B come
b' k-1b k-2 '" b 0= b' '_lB'-l + b' ,_,B'-2 +" ,+ b oB
o
\, \, ',', " 1,
dove ogni bi,; e presQ da {DIl"" ,B - I}. Sostituendo in 1.1 a cia.scun b
i
la sua
rappresentazione in base B, si ha
[bn_1,'_lB'-1 + bn_1,k_2B'-2 + ' " + bn_1,oBO](B')n-1 +
(bn_2,k_1B'-1 + bn_2,'_2B'-2 + ' , "+ b
n
_
2
,oB
O
)(B')n-' +
[bo,'_lB'-l + bo,'_2B'-2 +'" ,+ bo,oBO](B')O =
,
b B
kn-I b B
kn
- 2
n-I,k-I + n-l,k-2 . + ... +
bO,k_1B'-1 + bO,'_2Bk-2 +, , , + bo,oBo)(B')O
che corrisponde alia stringa bn-t,k-lbn-l,k_2 ... b
n
-
I
,ob
n
-
2
,k-2 ... bo,o
La conversione da binario a decimale si effettua come calcolo del polinomio di
potenze del 2, Esempio:
1001101 = I, 2' +0, 2' +0, 2' + I, 2' + I, 2
2
+0, 2
'
+I, 2 =64 +8 + 4 + 1 =77
10
La conversione a binario del numero decimale N richiede che si trovi la stringa
di n cme binarie b
n
-
t
b
n
_
2
... btb
o
con b
i
= 0,1, tale per cui
N ::;;: b
n
-
1
x 2
n
-
1
+ b
n
_
2
x 2
n
-
2
+ ... + b
l
X 2
1
+b
o
x 20
Se si divide it polinomio per 2 si ottiene bo come resta e b
n
_
1
x 2
n
-
2
+b
n
_
2
x 2n-3 +
+ ... +b1 come Quoziente. Dividendo il Quoziente per 2 si ottiene b
l
come resta e
bn _ 1 x 2
n
-
3
+ bn - 2 x 2
n
-
4
+ ... + b
2
. Si itera il procedirnento fino a cite l'ultimo
quoziente attenuto non epiu divisibile. A Quel punta 1a rappresentazione binaria si
ottiene scrivendo da sinistra verso destra i resti in oedine inverso a come sono stati
peodotti. Consideriamo per esempio il numero 35. La serie successiva di quozienti
e resti ottenuti dividendo per 2 e: (17,1), (8,1), (4,0), (2,0), (1,0) (0,1); dunque la
rappresentazione binaria del nurnero 35 (decimate) e: 100011.
\
)
I
)
\
I
I
I
\
)
I
\
I
I
1
, 1
, I
,
1
",
"'""
'M ' '

12 Capitolo 1
)
]
,
I
)

I
\
l
J
,
I
I

I
I
I
I
I
13
Introduzione
Si ba dunque (0,78125ho = (0,11001),
.
... , Esempio 2 Si voglia convertire in forma binaria it numero decimale 0,78125.
.. 0,78125 x 2 = 1,5625 -> 1
0,5625 x 2 = 1,125 -> 1
0,125 x2 = 0,250 .... 0
0,25 x 2 = 0,5 -> 0
0,5x2=1,0 ->1
Osservando che b_1 ela parte intera del prodotto
Per i,numeri interi si assume che la virgola sia posizionata all'estrema destra. In modo
del tutto analogo per i numeri frazionari iI punto binario viene considerate all'estrema
sinistra. Per cui un generico numero N sara formate da una parte iDtera e da una
parte frazionaria separate tra loro cia! punto e interpretate illustrato. Quando il punto
separa la parte intera dalla parte frazionaria si parla di notazione in virgoJa ji3sa.
. .
F'requentemente, e, in modo particolare nei problemi di calcolo tecnico e scientifico,
si ricorre a rappresentazioni normalizzate di cbe hanno 10 scopo di sollevare
l'utilizzatore dai pr6blemi conriessi con i1 contrallo della posizione della virgola e con
,
Paumento del numero di dire a seguito delle operazioni aritmetiche che via vengono
eseguite.
Nel calcoto numerico i dati vengono di solito espressi Come prodQtto di due fattori,
il primo dei quali comprende Ie cifre significative del numero da rappresentare mentre
i1 secondo, e una potenza del 10, il cui esponente definisce la posizione della virgola
nel numero.
1.2.6 Numeri in virgola mobile

.;,. Xb41oi ... a"


. ...1 2 3 /\ ,YIY2Y3 . .. Yk
dove bela base del sistema di numerazione, X1X2X3. _. Xh, Y1Yz1!3 . -11k e G1
a
2 . .. an,
sono cifre della stesso sistema.
II numero X1X2X3 Xh,Y1Y2Y3 ... 11k vieoe chiamato mantissa, mentre il numero
a1
a
2. an viene chiamato esponente 0 caratteristica.
EsemDio 1
nnumero 127000000 puo essere scritto nella forma 127x 10
6) mentre il nume-
- 1'00,0000015 puo essere scritto come 15xlO-
7
. Tale convenzione non elegata
. notazione decimaIe, e puo essere estesa agli altri sistemi di numerazione.
In generale si puo dire che un dato numerico qualsiasi ammette una rappreseotazione
approssimata corne la seguente:
2X F = L, +L, X 2+.. L
m
X T(m-l)
si deduce che la: ricerca dei coefficienti b
i
richiede un processo di successive
- cazioni della parte frazionaria con estrazione 'della parte intera. n processo termina
quando la parte frazionaria risulta 0 (oppure non termina se il OUIDero eperiodical.
'-
..
",
.,;"
IJ!
";,
...
'.
."l
.,
."
,
.' ,11,
7"

,

,;.!

::'
,,,..
.",.;. ,.
'oJ..'."'{"'.' -
.. ..
c' J ; '.'
'.V '... ,..y-.,
i )' ,
,
n',
'.'.'.
-tt
:::1"
I" t .

;\'",
"':1
, '11,
.. '

','11

.,
.

,',,,
..
'.... '
'
...
'J.!'
,
" i'''I.

1_\
,'-:; I
,,< 'I
"J "

.'..,
j'I' .
. ',.
'"'..
-
1_

"

'lll,..
.. .'
, I , '

. 11 _
..

l
...
"

;.'a.
(30)
(-22)
(8)
numero dato (16, = 22.)
complemento a. 1
complemento a 2
+
00011110
11101010
00001000
00010110
11101001
11101010
La differenza a - b si ottieoe sommando:
Complemento a 1. .n camhiamento di aegno viene ottenuto complementando
ciascun bit del corrispondente valore positivo.
Complemento a 2. n cambiamento di segno viene ottenuto complementando ale
aggiungendo 1. Con n bit a disposizione si hanno numeri positivi (compreso 10 zero)
cia 0 a 2
11
-
1
- 1 e numeri negativi da -1 a _2
n
-
1
. Per esempio, con 8 bit i numeri
positivi vanna da 0 a. 127, i negativi da -1 a -128.
La soluzione in complemento a 2 equella normalmente adottata e la sottrazione
del nUIDero b da a viene eseguita come somma di a col complemento a 2 di b. Ad
esempio, 'i prenda a = 00011110(= IE" = 30
10
) e b = 00010110(= 16
16
= 22
10
), n
complemento a 2 di b si ottiene
-
F = L1L, L
m
Modulo e Segno. In questo si passa da valore positivo a negativD
mente cambiando da 0 a 1 it bit piu significativo.
L,B-
1
+ +LmB-
m
Esempio 1
n numero binario .101 corrisponde a1 numero decimale:
1 .2-
1
+ 0 . r' + 1 . 2-
3
= + = 0,5 + 0,125 = 0,625
Fino a questa punto abbiamo considerato solo numeri interi. La stringa:
,b_
1
b_
2
... b_
m
1.2.5 Numeri frazionari
si interpreta come:

La conversione da decimale a binario si ottiene con questo ragionamento: dato


il numero frazionario F in base 10, si tratta di trovare la stringa b-
1
b-
2
... b_
m
tale
per CUll
12 Capitolo 1
)
]
,
I
)

I
\
l
J
,
I
I

I
I
I
I
I
13
Introduzione
Si ba dunque (0,78125ho = (0,11001),
.
... , Esempio 2 Si voglia convertire in forma binaria it numero decimale 0,78125.
.. 0,78125 x 2 = 1,5625 -> 1
0,5625 x 2 = 1,125 -> 1
0,125 x2 = 0,250 .... 0
0,25 x 2 = 0,5 -> 0
0,5x2=1,0 ->1
Osservando che b_1 ela parte intera del prodotto
Per i,numeri interi si assume che la virgola sia posizionata all'estrema destra. In modo
del tutto analogo per i numeri frazionari iI punto binario viene considerate all'estrema
sinistra. Per cui un generico numero N sara formate da una parte iDtera e da una
parte frazionaria separate tra loro cia! punto e interpretate illustrato. Quando il punto
separa la parte intera dalla parte frazionaria si parla di notazione in virgoJa ji3sa.
. .
F'requentemente, e, in modo particolare nei problemi di calcolo tecnico e scientifico,
si ricorre a rappresentazioni normalizzate di cbe hanno 10 scopo di sollevare
l'utilizzatore dai pr6blemi conriessi con i1 contrallo della posizione della virgola e con
,
Paumento del numero di dire a seguito delle operazioni aritmetiche che via vengono
eseguite.
Nel calcoto numerico i dati vengono di solito espressi Come prodQtto di due fattori,
il primo dei quali comprende Ie cifre significative del numero da rappresentare mentre
i1 secondo, e una potenza del 10, il cui esponente definisce la posizione della virgola
nel numero.
1.2.6 Numeri in virgola mobile

.;,. Xb41oi ... a"


. ...1 2 3 /\ ,YIY2Y3 . .. Yk
dove bela base del sistema di numerazione, X1X2X3. _. Xh, Y1Yz1!3 . -11k e G1
a
2 . .. an,
sono cifre della stesso sistema.
II numero X1X2X3 Xh,Y1Y2Y3 ... 11k vieoe chiamato mantissa, mentre il numero
a1
a
2. an viene chiamato esponente 0 caratteristica.
EsemDio 1
nnumero 127000000 puo essere scritto nella forma 127x 10
6
) mentre il nume-
- 1'00,0000015 puo essere scritto come 15xlO-
7
. Tale convenzione non elegata
. notazione decimaIe, e puo essere estesa agli altri sistemi di numerazione.
In generale si puo dire che un dato numerico qualsiasi ammette una rappreseotazione
approssimata corne la seguente:
2X F = L, +L, X 2+.. L
m
X T(m-l)
si deduce che la: ricerca dei coefficienti b
i
richiede un processo di successive
- cazioni della parte frazionaria con estrazione 'della parte intera. n processo termina
quando la parte frazionaria risulta 0 (oppure non termina se il OUIDero eperiodical.
'-
..
",
.,;"
IJ!
";,
...
'.
."l
.,
."
,
.' ,11,
7"

,

,;.!

::'
,,,..
.",.;. ,.
'oJ..'."'{"'.' -
.. ..
c' J ; '.'
'.V '... ,..y-.,
i )' ,
,
n',
'.'.'.
-tt
:::1"
I" t .

;\'",
"':1
, '11,
.. '

','11

.,
.

,',,,
..
'.... '
'
...
'J.!'
,
" i'''I.

1_\
,'-:; I
,,< 'I
"J "

.'..,
j'I' .
. ',.
'"'..
-
1_

"

'lll,..
.. .'
, I , '

. 11 _
..

l
...
"

;.'a.
(30)
(-22)
(8)
numero dato (16, = 22.)
complemento a. 1
complemento a 2
+
00011110
11101010
00001000
00010110
11101001
11101010
La differenza a - b si ottieoe sommando:
Complemento a 1. .n camhiamento di aegno viene ottenuto complementando
ciascun bit del corrispondente valore positivo.
Complemento a 2. n cambiamento di segno viene ottenuto complementando ale
aggiungendo 1. Con n bit a disposizione si hanno numeri positivi (compreso 10 zero)
cia 0 a 2
11
-
1
- 1 e numeri negativi da -1 a _2
n
-
1
. Per esempio, con 8 bit i numeri
positivi vanna da 0 a. 127, i negativi da -1 a -128.
La soluzione in complemento a 2 equella normalmente adottata e la sottrazione
del nUIDero b da a viene eseguita come somma di a col complemento a 2 di b. Ad
esempio, 'i prenda a = 00011110(= IE" = 30
10
) e b = 00010110(= 16
16
= 22
10
), n
complemento a 2 di b si ottiene
-
F = L1L, L
m
Modulo e Segno. In questo si passa da valore positivo a negativD
mente cambiando da 0 a 1 it bit piu significativo.
L,B-
1
+ +LmB-
m
Esempio 1
n numero binario .101 corrisponde a1 numero decimale:
1 .2-
1
+ 0 . r' + 1 . 2-
3
= + = 0,5 + 0,125 = 0,625
Fino a questa punto abbiamo considerato solo numeri interi. La stringa:
,b_
1
b_
2
... b_
m
1.2.5 Numeri frazionari
si interpreta come:

La conversione da decimale a binario si ottiene con questo ragionamento: dato


il numero frazionario F in base 10, si tratta di trovare la stringa b-
1
b-
2
... b_
m
tale
per CUll
.
1 14 Ca.pitola 1

segno
esponente
mantissa
0,127x10'
+
59 .
12700000

+
45
15000000
13Corrispondono a queUe convenzione IBM descritta poco piu a.V3nti.
Introduzioue 15
- lunghezza mantisse : 8 cifre;
- valore esponente: da, -50 a +49j
- valQre della CQstante (bias), 50;
i numeri dei precedenti esempi si scrivono come segue:
Come gia detto
,
la rappresentazione in virgola mobile non e alia Dotazione
di numerazione, Una rappresentazione usuale ,e su 32 bit, Per essa si facciano Ie
seguenti convenzioni13;
II primo bit rappresenta il segno della mantissa (9 per il seguo +, 1 per il segno-);
" I sette bit successivi rappresentano l'esponente da usare per la base 2
,
aumeJ!tato_
di 64. L'esponente convenzionale puo variare tra 0 e 127 (che eil massimo intero
positivo rappresentabile con 7 bit), queUo effettivo deve essere compreso tra -64
e +63 (64 cQrrispQnde a 0);.'
Gli ultimi 24 bit rappresentano il valore assoluto della mantissa in forma norma-
lizzata (it primo bit a destra della virgola cleve essere 1).
Esemp.iQ..2
Si consideri il cumero 204,17437
RappresentaziQne binaria: 11001100,00101100101111
RappresentaziQne nQrmalizzata:' (0,1100110000101100101111), x (101000),
Con Ie precedenti convenzioni si ha:
bit di segno: 0;
espQnente, 0001000; manti..a: 110011000010110010111100
m0001000 I 1100 1100 0010 1100 1011 1100 I
La rappresentazione in virgola mobile puo dar luogo al fenomeno del trabocca-
mento. Questo non deriva dall'aumento del numero delle citre della mantissa, in quan-
to le cifre eccedenti vengono troncate (variera la precisione) rna deriva dall'aumento 0
dalla diminuzione del valore dell'esponente (non puo essere troncato altrimenti vaTiano
gli ordini di grandezza). '
, Quando it valore dell'esponente supera il rnassimo previsto dalIa rappresentazione
il fenomeno prende il nome di overilow,.mentre quando tale va10re diventa piu piccolo
del minimo previsto si ha iJ fenomeno chiamato underflow,
Non esiste una convenzione per 1a notazione floating-point che sia universalmente
adottata da tutte Ie case costruttrici di elaboratori. Descriviamo di seguito tre di-
verse convenzioni
,
una at;iottata ciaII' IBM, una dalla Digital
,
1a terza proposta come
standard IEEE.
';1
:;
.,
.;:;
"
.,
,.
.,


i
iii
'f
,

.,
, 'I.'
"
,1\1

'.

..
..

,
'
'g'
,
, ,
,1
"


._-;
"n
i:U\
';,
,f1,
.n,
.Ji'
':'1> -
..,


l
,a

, .
,
,'n,
'<I
l:i t
..
1.'

,'. I
". .
'.'
',"

:'1J

.
,;'1' I,
,.
, .
". '
"

;ll:
"
i c,
I

_,0

:, 'f'
',. >,

.,
'll
,
"I'
.
a, =-7
al = 6 b= 10
b = 10
XIX2Xa,YIY2Ya = 127,000
XIX2X3,VIV2Va = 15
EseIlllliQ 3
1 numeri dell'esempio precedente diventano:
127x10
6
=0,127x10'
15x10-
7
=0,15x10-'
I segnQ I espQnente I mantissa I
4
Utilizzando Ie seguenti convenzioni:
,
'.
- 10 zero che indica la parte intera della mantissa;
- il punta decimale;
II punlQ che indica II prQdQttQ;
- II valQre della base della pQtenza;
fissando la lunghezza della mantissa a un valore costante;
limitando l'esponente ai valori compresi in un opportuno intervalloj
utilizzando un esponente convenzionale ottenuto sommando all'esponente effetti-
vo una costante (bias) che 10 renda sempre positivo ed eliminando quindi il segno
delPesponente;
disponendo i tre elementi rimasti in uo ordine stabilito.
eliminando i caratteri non necessari ovvero:
Alcuni cara:tteri della rappresentazione esponenziale normalizzata sana ancora
danti ed epossibile, mediante ulteriori convenzioni, arrivare a una, rappresentazione
piu compatta.
Una di tali rappresentazioni, nell'ipotesi di notazione decimale, si ottiene adot-
tando Ie seguenti convenzioni:
t
r
\
)
\
)
Su una rappresentazione come 1a precedente si puo [are la convenzione che la prima
cifra significativa si trevi immediatamente a destra del punta decimale. Per ottenere
db sara. sufficiente aumentare 0 diminuire il valore dell'esponente di tante unita Quante
sono Ie posizioni di cui estato spostato il punta. La forma ottenuta con questa
convenzione edetta rappresentazione esponenziale normalizzata.
\ . ,
I
1
" Esempio 2
I Riprendendo i numeri dell'Esempio 1, si ha:
)
1
I
I
! l
I
.
1 14 Ca.pitola 1

segno
esponente
mantissa
0,127x10'
+
59 .
12700000

+
45
15000000
13Corrispondono a queUe convenzione IBM descritta poco piu a.V3nti.
Introduzioue 15
- lunghezza mantisse : 8 cifre;
- valore esponente: da, -50 a +49j
- valQre della CQstante (bias), 50;
i numeri dei precedenti esempi si scrivono come segue:
Come gia detto
,
la rappresentazione in virgola mobile non e alia Dotazione
di numerazione, Una rappresentazione usuale ,e su 32 bit, Per essa si facciano Ie
seguenti convenzioni13;
II primo bit rappresenta il segno della mantissa (9 per il seguo +, 1 per il segno-);
" I sette bit successivi rappresentano l'esponente da usare per la base 2
,
aumeJ!tato_
di 64. L'esponente convenzionale puo variare tra 0 e 127 (che eil massimo intero
positivo rappresentabile con 7 bit), queUo effettivo deve essere compreso tra -64
e +63 (64 cQrrispQnde a 0);.'
Gli ultimi 24 bit rappresentano il valore assoluto della mantissa in forma norma-
lizzata (it primo bit a destra della virgola cleve essere 1).
Esemp.iQ..2
Si consideri il cumero 204,17437
RappresentaziQne binaria: 11001100,00101100101111
RappresentaziQne nQrmalizzata:' (0,1100110000101100101111), x (101000),
Con Ie precedenti convenzioni si ha:
bit di segno: 0;
espQnente, 0001000; manti..a: 110011000010110010111100
m0001000 I 1100 1100 0010 1100 1011 1100 I
La rappresentazione in virgola mobile puo dar luogo al fenomeno del trabocca-
mento. Questo non deriva dall'aumento del numero delle citre della mantissa, in quan-
to le cifre eccedenti vengono troncate (variera la precisione) rna deriva dall'aumento 0
dalla diminuzione del valore dell'esponente (non puo essere troncato altrimenti vaTiano
gli ordini di grandezza). '
, Quando it valore dell'esponente supera il rnassimo previsto dalIa rappresentazione
il fenomeno prende il nome di overilow,.mentre quando tale va10re diventa piu piccolo
del minimo previsto si ha iJ fenomeno chiamato underflow,
Non esiste una convenzione per 1a notazione floating-point che sia universalmente
adottata da tutte Ie case costruttrici di elaboratori. Descriviamo di seguito tre di-
verse convenzioni
,
una at;iottata ciaII' IBM, una dalla Digital
,
1a terza proposta come
standard IEEE.
';1
:;
.,
.;:;
"
.,
,.
.,


i
iii
'f
,

.,
, 'I.'
"
,1\1

'.

..
..

,
'
'g'
,
, ,
,1
"


._-;
"n
i:U\
';,
,f1,
.n,
.Ji'
':'1> -
..,


l
,a

, .
,
,'n,
'<I
l:i t
..
1.'

,'. I
". .
'.'
',"

:'1J

.
,;'1' I,
,.
, .
". '
"

;ll:
"
i c,
I

_,0

:, 'f'
',. >,

.,
'll
,
"I'
.
a, =-7
al = 6 b= 10
b = 10
XIX2Xa,YIY2Ya = 127,000
XIX2X3,VIV2Va = 15
EseIlllliQ 3
1 numeri dell'esempio precedente diventano:
127x10
6
=0,127x10'
15x10-
7
=0,15x10-'
I segnQ I espQnente I mantissa I
4
Utilizzando Ie seguenti convenzioni:
,
'.
- 10 zero che indica la parte intera della mantissa;
- il punta decimale;
II punlQ che indica II prQdQttQ;
- II valQre della base della pQtenza;
fissando la lunghezza della mantissa a un valore costante;
limitando l'esponente ai valori compresi in un opportuno intervalloj
utilizzando un esponente convenzionale ottenuto sommando all'esponente effetti-
vo una costante (bias) che 10 renda sempre positivo ed eliminando quindi il segno
delPesponente;
disponendo i tre elementi rimasti in uo ordine stabilito.
eliminando i caratteri non necessari ovvero:
Alcuni cara:tteri della rappresentazione esponenziale normalizzata sana ancora
danti ed epossibile, mediante ulteriori convenzioni, arrivare a una, rappresentazione
piu compatta.
Una di tali rappresentazioni, nell'ipotesi di notazione decimale, si ottiene adot-
tando Ie seguenti convenzioni:
t
r
\
)
\
)
Su una rappresentazione come 1a precedente si puo [are la convenzione che la prima
cifra significativa si trevi immediatamente a destra del punta decimale. Per ottenere
db sara. sufficiente aumentare 0 diminuire il valore dell'esponente di tante unita Quante
sono Ie posizioni di cui estato spostato il punta. La forma ottenuta con questa
convenzione edetta rappresentazione esponenziale normalizzata.
\ . ,
I
1
" Esempio 2
I Riprendendo i numeri dell'Esempio 1, si ha:
)
1
I
I
! l
I
lntroduzione 17
1
j
)
\
J
j
)
I
I
I
I
C!TIOOOIOOO [ 100 11000010 1100 10111100 1
'EsempiQ 7
Rappresentiamo it numero decimale 204,17437 in notazione Boating-point
secondo la convenzione Digital
.Si ha :
(204,1743
7
ho =(11001100,00101100101111),
La normalizzazione della mantissa si ottiene spostando il punto decimale di
8 bit a sinistra; corrispondentemente !'esponente va posto pari a +8:
(11001100,00101100101111), =(0,1100110000101100101111), x(101000),
L'esponente convenzionale si ottiene sommando all'esponente effettivo (+8)
la cost.nte 128, ottenendo: (136ho =(10001000),. n risultato e:
lsI bit I esp 8lillJlV! 23JD
La mantissa erappresentata in virgola issa con il punta di radice implicita.mente I
assunto alia del bit pill significativo e si as:mme che la sua prima citra binaria
sia uguale a 1. Poiche questa bit esempre uguale ad 1; non necessita di essere rap-
presentato: la e, dunque, espressa solo i 23 meno ]
sana rappresentatl (bIt 22-:-0), mentre quello PlU slgnificatlvo, assunto uguaIe a 1, non
erappresentato (hidden bit - bit nascosto). ncaso del numero zero, la cui rappresen-
tazione sarebbe incornpatibile con l'assunzione fatta (dovrebbe essere nullo anche il
bit nascosto) e indistinguibile da quell a del numero 0,5x2-
128
(tutti i bit nulli eccet-
to quello nascosto), econsiderato a parte. Vambiguita e stata risolta considerando 1
ugliale a zero il numero quando gli 8 bit dell'esponente sono tutti nulli (esp =-128),
a prescindere dai valori dei bit della mantissa.
lunghezza singola;
lunghezza doppiaj
formato esteso:
lunghezza' singola;
lunghezza doppia.
Standard IEEE 754-1985 per l'aritmetica binaria in virgola mobile Per
eliminare la confusione dovuta aHa nOn definizione delle istruzioni in virgola mobile,
che riguarda il numero di bit usati per rappresentare l'esponente e la 'mantissa, l'in-
tervallo di esistenza degli esponenti, i metodi di arrotondamento e la trattazione delle
eccezioni (come l'overflow), estate introdotto 10 standard IEEE 754-1985 [lEE]. Esse
specifica il formato, Ie operazioni, Ie conversioni tra i differenti formati Boating-point
e-quelle tra i diversi sistemi'di numerazione e il trattamento delle eccezioni, compreso
il NaNs (not-a-m..mber).
La standard definisce 4 formati floating-point:.
formato base:
,
'.
,," .
-0-
"-,


--"
.1'"'
..,
';., .'
'I
J
,
,n
"". .
:1I'.
.J '
;11 .
.'i:
"u
ii c
.,) ,.
-'.,. .
R
j.,
'."1.'
-

-':"
' -. .
,. - -
:""1" ,
-'. n . ,
.

'"
..

.,
'J-j.'
,
--
,
.


',. ' ,
:;<!
.,:'}
.:,
.,-t
.', i,
.

" ..\C
':'1
.. ,.
r "
"
,;til
"'1'1'
.-:{ ,
,1'
"
';,

:".
,,.-'.
_.,1
,.,
....
--.
.Ill


.,'
j
'i'
,Ii
"'1"
.' .1
:
r"
'I'

..
,


,1
YI
..,
rn 1000010 [TIoo 1100 0010 1100 1011 bOO I
Esempio 6
Rappresentiamo il numero decimale 204,17437 in notazione Hoating-point
secondo la convenzione IBM.
Si hac
(204,17437) 10 = (11001100,00101100101111),=( CC,2CBC) I'
La normalizzazione della mantissa si 'ottiene spostando il punto decirnale di
due eme (16 bit) a sinistra; corrispondentemente l'esponente va posta pari
a +2:
(CC,2CBCh, =(0,CC2CBCh, x16'.
L'esponente convenzionale si ottiene sommando all'esponente effettivo (+2)
la costante 64, ottenendo: (66ho =(1000010),. 11 risultato e:
Convenzione Digital Anche nelle macchine Digital e adottata una rappresenta-
zione su 32 bit:
il bit pili significativo (bit 31) fornisce il valore del segno s della mantissa (0= +,
1= -);
i successivi 8 bit (bit 30+23) contengono l'esponente convenzionale esp ottenuto'
sommando 1a costante 128 all'esponente effettivo. Puo assumere i valori compresi
tra -128 e + 127 ed e riferito alia base 2;
i rimanenti 23 bit (bit 22..;.0) contengono la mantissa;
ISlOIT]
L' esporiente puo assumere valori interi cornpresi tra -64 e +63 ed eriferito alia
base 16. La mantissa enormalizzata, tioe la sua prima cifra esadecimale ediversa da
zero: cio compona che &lmeno uno dei primi quattro bit della mantissa (bit
sia diverse da zero; fa eccezione 130 rappresentazione del numero zero che e data da 32
bit tutti nuIli.
Convenzione IBM Nei mainframe IBM, eusata la rappresentazione a 32 bit, con:
il bit pili significativo (bit 31) fornisce il valore del segno s della mantissa: (0=+,
1= -);
i successivi 7 bit (bit 30+24) contengono l'esponente convenzionale esp (intero)
ottenuto Bornmando all' esponente effettivo 1a costante 64. Cosl facendo si rende
l'esponente sempre positivo e non epin riportare il segno; I
i rimanenti 24 bit (bit 23+0) contengono 1a mantissa M
1
rappresentata in vir-
gola issa con il punto di radice implicitamente assunto alla sinistra del bit pili
significativo.
16 Capitolo 1
lntroduzione 17
1
j
)
\
J
j
)
I
I
I
I
C!TIOOOIOOO [ 100 11000010 1100 10111100 1
'EsempiQ 7
Rappresentiamo it numero decimale 204,17437 in notazione Boating-point
secondo la convenzione Digital
.Si ha :
(204,1743
7
ho =(11001100,00101100101111),
La normalizzazione della mantissa si ottiene spostando il punto decimale di
8 bit a sinistra; corrispondentemente !'esponente va posto pari a +8:
(11001100,00101100101111), =(0,1100110000101100101111), x(101000),
L'esponente convenzionale si ottiene sommando all'esponente effettivo (+8)
la cost.nte 128, ottenendo: (136ho =(10001000),. n risultato e:
lsI bit I esp 8lillJlV! 23JD
La mantissa erappresentata in virgola issa con il punta di radice implicita.mente I
assunto alia del bit pill significativo e si as:mme che la sua prima citra binaria
sia uguale a 1. Poiche questa bit esempre uguale ad 1; non necessita di essere rap-
presentato: la e, dunque, espressa solo i 23 meno ]
sana rappresentatl (bIt 22-:-0), mentre quello PlU slgnificatlvo, assunto uguaIe a 1, non
erappresentato (hidden bit - bit nascosto). ncaso del numero zero, la cui rappresen-
tazione sarebbe incornpatibile con l'assunzione fatta (dovrebbe essere nullo anche il
bit nascosto) e indistinguibile da quell a del numero 0,5x2-
128
(tutti i bit nulli eccet-
to quello nascosto), econsiderato a parte. Vambiguita e stata risolta considerando 1
ugliale a zero il numero quando gli 8 bit dell'esponente sono tutti nulli (esp =-128),
a prescindere dai valori dei bit della mantissa.
lunghezza singola;
lunghezza doppiaj
formato esteso:
lunghezza' singola;
lunghezza doppia.
Standard IEEE 754-1985 per l'aritmetica binaria in virgola mobile Per
eliminare la confusione dovuta aHa nOn definizione delle istruzioni in virgola mobile,
che riguarda il numero di bit usati per rappresentare l'esponente e la 'mantissa, l'in-
tervallo di esistenza degli esponenti, i metodi di arrotondamento e la trattazione delle
eccezioni (come l'overflow), estate introdotto 10 standard IEEE 754-1985 [lEE]. Esse
specifica il formato, Ie operazioni, Ie conversioni tra i differenti formati Boating-point
e-quelle tra i diversi sistemi'di numerazione e il trattamento delle eccezioni, compreso
il NaNs (not-a-m..mber).
La standard definisce 4 formati floating-point:.
formato base:
,
'.
,," .
-0-
"-,


--"
.1'"'
..,
';., .'
'I
J
,
,n
"". .
:1I'.
.J '
;11 .
.'i:
"u
ii c
.,) ,.
-'.,. .
R
j.,
'."1.'
-

-':"
' -. .
,. - -
:""1" ,
-'. n . ,
.

'"
..

.,
'J-j.'
,
--
,
.


',. ' ,
:;<!
.,:'}
.:,
.,-t
.', i,
.

" ..\C
':'1
.. ,.
r "
"
,;til
"'1'1'
.-:{ ,
,1'
"
';,

:".
,,.-'.
_.,1
,.,
....
--.
.Ill


.,'
j
'i'
,Ii
"'1"
.' .1
:
r"
'I'

..
,


,1
YI
..,
rn 1000010 [TIoo 1100 0010 1100 1011 bOO I
Esempio 6
Rappresentiamo il numero decimale 204,17437 in notazione Hoating-point
secondo la convenzione IBM.
Si hac
(204,17437) 10 = (11001100,00101100101111),=( CC,2CBC) I'
La normalizzazione della mantissa si 'ottiene spostando il punto decirnale di
due eme (16 bit) a sinistra; corrispondentemente l'esponente va posta pari
a +2:
(CC,2CBCh, =(0,CC2CBCh, x16'.
L'esponente convenzionale si ottiene sommando all'esponente effettivo (+2)
la costante 64, ottenendo: (66ho =(1000010),. 11 risultato e:
Convenzione Digital Anche nelle macchine Digital e adottata una rappresenta-
zione su 32 bit:
il bit pili significativo (bit 31) fornisce il valore del segno s della mantissa (0= +,
1= -);
i successivi 8 bit (bit 30+23) contengono l'esponente convenzionale esp ottenuto'
sommando 1a costante 128 all'esponente effettivo. Puo assumere i valori compresi
tra -128 e + 127 ed e riferito alia base 2;
i rimanenti 23 bit (bit 22..;.0) contengono la mantissa;
ISlOIT]
L' esporiente puo assumere valori interi cornpresi tra -64 e +63 ed eriferito alia
base 16. La mantissa enormalizzata, tioe la sua prima cifra esadecimale ediversa da
zero: cio compona che &lmeno uno dei primi quattro bit della mantissa (bit
sia diverse da zero; fa eccezione 130 rappresentazione del numero zero che e data da 32
bit tutti nuIli.
Convenzione IBM Nei mainframe IBM, eusata la rappresentazione a 32 bit, con:
il bit pili significativo (bit 31) fornisce il valore del segno s della mantissa: (0=+,
1= -);
i successivi 7 bit (bit 30+24) contengono l'esponente convenzionale esp (intero)
ottenuto Bornmando all' esponente effettivo 1a costante 64. Cosl facendo si rende
l'esponente sempre positivo e non epin riportare il segno; I
i rimanenti 24 bit (bit 23+0) contengono 1a mantissa M
1
rappresentata in vir-
gola issa con il punto di radice implicitamente assunto alla sinistra del bit pili
significativo.
16 Capitolo 1
)
18 Ca.pitolo 1

-
..
..
" .'

.'(-,'"
.>

i
Introduzione 19
\
I
1
I
\
\
I
t
1
l
1
\
1
\
1
I
I
Ogni formate edefinito specmcando tre interi:
P=numero di bit signi.6.cativi (precisione, ovvero numero di bit che compongono
la mantissa); ,
Emtl:l=esponente massimo;
Emin=esponente minima.
Dalla definizione di questi parametri si pUG risalire al numero di bit deWesponente,
all'esponente convenzionale e alla lunghezza del formato. I formati sana riportati
TabeUil.1.5.
Singola Sin.e.:ola estesa Doppia
DoEPJ,a estesa
t' (bit di precisione J 23
>32
52
>64

27
>1023 1023 >16383
lt
min
-1.6 < -1022 -1022 < -1638.
Bias

1023
Esponente >11 11 >15
Larghezza formate 32
>43
64
>79
Tabella 1.5 Formati standard IEEE 754-1985.
Lo standard impiega esponenti polarizzati , cioe at valore reale dell'esponente
E viene aemmata una. base eli polarizzaziene (bias, pa.ri a 127 nel caso <;li singola
e a 1023 nel case di doppia precisione). Analizziamone i formati base.
I numeri in singolo e doppio fannato souo composti dai seguenti tre campi:
- lID bit di segno s;
- espanente polarizzato e::E+bias;
- mantissa M=,ffilm2ms ... rnp_l;
n valore di E varia tra Ef1\in ed EfnoJ.x, includendo anche altri due valori riservati
E
min
- 1 per codificare O. e numeri denormalizzati , ed E
max
+ 1 per codificare oo
e il NaNs.
La mantissa eun numero decimale (binario) la cui parte intera esempre .1. Per
questa motivo tale 1 non compare nel campo mantissa della rappresentazione. Tale
campo, quindi, si compone della sola parte frazionaria.
Esempio 8 '
Rappresentiamo con 10 standard IEEE il numero decima:le 5, nel formato in
singola precisione.
(5),0 =(101),;
(101), =(1,01), x(10
10
),;
Segno=O;
Mantissa=01000000000000000000000 (la parte lntera eimplicita);
Esponente=00000010
';n
:"
.

"'.
,
I,>;,
-,

" .
'::"1
"j'
'.' '

d

. ,
T


-'
,
'. ,
'
'''I' -
"M"'
:'1
;'\1
:ii'
''':' .,
'='1"'
".;,'1

'II'
" .
? ;.
;',
.,

(It
''11"

.. ,
, '
) "
"'f
AI
"
"...
,
,u,
,
...'
"
;u';
,


"
'.
'-\1,
..'

I campi sono interpretati come segue:
.
Singola: un numero X in formata singola precisione a 32 bit ediviso come segue:
lsI bit I esj:> 8 bit I M 23lillJ
nvalore v di X ededotto dagli elementi componenti i campi nel seguente modo:
L Se esp=255 e M;60, a1lora v eun NaNs nonostante s;
2, Se esp=255 e M=O, aHora v= (-1)'00;
'3, Se 0 <esp <255, aHora v=(-1)'2'-127(LM);
4, Se esp=O e M;60, aHora v=(-1)'2-
126
(0,M:) (numeri denormalizzati);
5, Se e=O e M=O, aHora v=(-l)'O,
Doppia: un numero X in formato doppia precisione"a 64 bit ediviso come segue:
lsI bit I esp 11lillJ M 52 bit I
1 II valore v di X ededotto dagli elementi componenti i campi nel seguente modo:
1. Se esp::2047 e M#O, allora v e un NaNs nonostante s;
2, Se esp=2047 e M=O, aHara v=(-l)'oo;

3. Se 0 < esp < 2047, allora v=(-1)'2'-1023(LM)


4, Se esp=O e M;60, a110ra v=( -1)'2-
10
"(0.M) (numeri denormalizzati)
5. Se esp=O e M=O, a1lora v=(-l)'O,
Altra caratteristica della standard ecostituita dalle regole di arrotondamento. Quan-
do si esegue un'operazione su due numeri in virgola mobile, di solita il risultato eun
valore reale che non si puo rappresentare in modo esatto in virgola mobile.
Lo standard IEEE 754-1985 prevede quattro modalita di arrotondamentoc
. arrotondamento al valore piu vicino (e 10 standard);
- arrotondamento a zero;
- arrotondamento a +00;
. arrotondamento a -00.
EselllPio 9
Usando una rappresentazione in virgola mobile in base 10 a due dfre, si ha
2,1 x 0,5 = 1,05

)
18 Ca.pitolo 1

-
..
..
" .'

.'(-,'"
.>

i
Introduzione 19
\
I
1
I
\
\
I
t
1
l
1
\
1
\
1
I
I
Ogni formate edefinito specmcando tre interi:
P=numero di bit signi.6.cativi (precisione, ovvero numero di bit che compongono
la mantissa); ,
Emtl:l=esponente massimo;
Emin=esponente minima.
Dalla definizione di questi parametri si pUG risalire al numero di bit deWesponente,
all'esponente convenzionale e alla lunghezza del formato. I formati sana riportati
TabeUil.1.5.
Singola Sin.e.:ola estesa Doppia
DoEPJ,a estesa
t' (bit di precisione J 23
>32
52
>64

27
>1023 1023 >16383
lt
min
-1.6 < -1022 -1022 < -1638.
Bias

1023
Esponente >11 11 >15
Larghezza formate 32
>43
64
>79
Tabella 1.5 Formati standard IEEE 754-1985.
Lo standard impiega esponenti polarizzati , cioe at valore reale dell'esponente
E viene aemmata una. base eli polarizzaziene (bias, pa.ri a 127 nel caso <;li singola
e a 1023 nel case di doppia precisione). Analizziamone i formati base.
I numeri in singolo e doppio fannato souo composti dai seguenti tre campi:
- lID bit di segno s;
- espanente polarizzato e::E+bias;
- mantissa M=,ffilm2ms ... rnp_l;
n valore di E varia tra Ef1\in ed EfnoJ.x, includendo anche altri due valori riservati
E
min
- 1 per codificare O. e numeri denormalizzati , ed E
max
+ 1 per codificare oo
e il NaNs.
La mantissa eun numero decimale (binario) la cui parte intera esempre .1. Per
questa motivo tale 1 non compare nel campo mantissa della rappresentazione. Tale
campo, quindi, si compone della sola parte frazionaria.
Esempio 8 '
Rappresentiamo con 10 standard IEEE il numero decima:le 5, nel formato in
singola precisione.
(5),0 =(101),;
(101), =(1,01), x(10
10
),;
Segno=O;
Mantissa=01000000000000000000000 (la parte lntera eimplicita);
Esponente=00000010
';n
:"
.

"'.
,
I,>;,
-,

" .
'::"1
"j'
'.' '

d

. ,
T


-'
,
'. ,
'
'''I' -
"M"'
:'1
;'\1
:ii'
''':' .,
'='1"'
".;,'1

'II'
" .
? ;.
;',
.,

(It
''11"

.. ,
, '
) "
"'f
AI
"
"...
,
,u,
,
...'
"
;u';
,


"
'.
'-\1,
..'

I campi sono interpretati come segue:
.
Singola: un numero X in formata singola precisione a 32 bit ediviso come segue:
lsI bit I esj:> 8 bit I M 23lillJ
nvalore v di X ededotto dagli elementi componenti i campi nel seguente modo:
L Se esp=255 e M;60, a1lora v eun NaNs nonostante s;
2, Se esp=255 e M=O, aHora v= (-1)'00;
'3, Se 0 <esp <255, aHora v=(-1)'2'-127(LM);
4, Se esp=O e M;60, aHora v=(-1)'2-
126
(0,M:) (numeri denormalizzati);
5, Se e=O e M=O, aHora v=(-l)'O,
Doppia: un numero X in formato doppia precisione"a 64 bit ediviso come segue:
lsI bit I esp 11lillJ M 52 bit I
1 II valore v di X ededotto dagli elementi componenti i campi nel seguente modo:
1. Se esp::2047 e M#O, allora v e un NaNs nonostante s;
2, Se esp=2047 e M=O, aHara v=(-l)'oo;

3. Se 0 < esp < 2047, allora v=(-1)'2'-1023(LM)


4, Se esp=O e M;60, a110ra v=( -1)'2-
10
"(0.M) (numeri denormalizzati)
5. Se esp=O e M=O, a1lora v=(-l)'O,
Altra caratteristica della standard ecostituita dalle regole di arrotondamento. Quan-
do si esegue un'operazione su due numeri in virgola mobile, di solita il risultato eun
valore reale che non si puo rappresentare in modo esatto in virgola mobile.
Lo standard IEEE 754-1985 prevede quattro modalita di arrotondamentoc
. arrotondamento al valore piu vicino (e 10 standard);
- arrotondamento a zero;
- arrotondamento a +00;
. arrotondamento a -00.
EselllPio 9
Usando una rappresentazione in virgola mobile in base 10 a due dfre, si ha
2,1 x 0,5 = 1,05

20 Capitola 1
che non e pili rappresentabile in modo esatto 'con due cifre poiche ne richiede
tre. Si arrotonda a 1) oppure a 1,0? In una situazione ambigua come questa
10 standard prevede Parrotondamento al valore la cui cifra meno significativa
epari. Quindi 1.05 viene arrotondato a 1.0.
La standard prevede che il risultato effettivo di un'operazione in virgola mobile sia
queUo che 5i ottiene calcolando il ri5ultato esatto, 0 ideale, e poi arrotondandolo
mediante una delle suddette modalita. Tale approccio risulta. molto costoso, dato che
occorre eseguire una somma con un nurnero elevato di bit (tramite un sommatore di
notevoli dimensioni), una parte dei quali verranno pero scartati alIa fine del processo
di arrotondamento.
Nella somma algebrica si possono usare due modalita. di arrotondamento distinte.
Una prima modalita eprevista nel caso in cuI gli addendi abbiano uguale espo-
nente. In questa caso la somma delle parti frazionarie degli addendi produce un riporto
a sinistra, che va considerato spostando la virgola mobile a sinistra e incrementando
l'espnnente; si perde coslla cifra meno significativa della parte frazionaria.
Esempio 10
Consideriamo due numeri in virgola mobile (scelti decimali per semplicita)
e calcoliamone la somma:
(0,836 x 10-'),0+(0,375x 10-'),0=(1,211 x 10-')10=(0,121 x 10-')10
Affinche il formato del risultato sia uguale a quello degli addendi (man-
tissa normalizzata di tre cifre) e necessario spostare la virgola a sinistra e
modificare il valore dell'esponente, perdendo cosll'ultima cifra decimale.
Ualtra modalita. ellarrotondamento conseguente alIa disuguaglianza degli esponenti
degli addendi: I due esponenti vanno eguagliati e percio la parte frazionaria di uno
dei due addendi va fatta scorrere (quelIa del numero cun esponente minore) perdendo
cosl almena una cifra.
EsemI?io 11
0,836x 10-'+0,375x 10-' -,0,083 x 10-'+0,375x 10-
4
=0,458 X 10-
4
I casi esarrunati (trascurando il problema dei casi ambigui, che come prima accennato
si ri501vono tramite al valore pari pili vicino), si passono realizzare
mediante un circuito sommatore, con una precisione di' due cifre in pili rispetto a
Quante ne siano nominalmente richieste dalla precisione degli addendi. Queste due
citre aggiuntive sono chiamate cifra di guardia (guard digit) e cifra di arrotondamento
(round digit)
Lo standard IEEE prevede anche cinque cause di eccezione aritmetica:
underflow
overflow
divi,sione per zero
eccezione di inesattezza
-
" ';


il
",1 '
"-
..
,
, ..
/if:"
-
,



.. r
, -,

,.
, ';'U
,"""
?,W
.
,
;;ri,
.,". '
.
""I'

'

;,6
-,,11;
.,.'!,
';i
-.
'/
,"'5
"11
;;, .

''(j :
'-j

. ",

tl
<"
'!;;-
,.1

... .,'
..

--
- . -
.::
f
'!;
S.
','.,-,,1

Introduzione 21
eccezione di invaliditd.
Le eccezioni di underflow, overflow, divisione per zero, sono presenti anche in altri
standard. L'eccezione di inesattezza e1a caratteristica delFaritmetica IEEE e si ve-
rifica sia quando il risultato di una operazione deve essere arrotondato, sia quando
l'operazione meorre in un overflow.
Quando si verifica una di queste eccezioni, eprevisto l'aggiornamento di un bit
di segnalazione, rna il calcolo puo proseguire. Questi segnalatori, una volta attivati,
rimangono tali 'fino a che non vengono disattivati 10 standard raceo-
manda di introdurre anche un bit di abilitazione di interruzione (uno per ciascuna delle
eccezioni). II\ questa modo se si verifica una delle eceezioni
,
e il eorrispondente bit
di abilitazione dell'interruzione eattivo
1
entra il gestore delle interruzioni predisposto
dalPutente (ovviamente
1
in questa caso, il bit di segnalazione non enecessario).
Lo standard prevede che qualora si verifichi una interruzione dOV'uta a un1ecce-
zione aritmetica
,
si possa risalire all1operazione che l'ha generata e anche al valore dei
suoi operandi.
Operazioni in virgola mobile La descrizione degli algoritmi con cui
verigono effettuate Ie operazioni algebriche in virgola mobile, non rientra nei fini di
questa trattazione. Per ulteriori approfondimenti 8i rimanda alia letteratura [Omo94],
[HP93); di seguito per dare un'idea di come vengono svolte tali operazioni
,
sono
-riportati in forma molto semplificata i principali passi dell'algoritmo di somma e
,moltiplicazione.
Somma Le operazioni di somma e sottrazione di numeri in virgola mobile
'.: richiedono che gli esponenti dei due addendi siano uguali. A tal fine Occorre
, " traslare Ie mantisse dei due numeri una rispetto all'aJtra. Una regola generale
per l'addizione e la sottrazione mobile pub essere riassunta nei seguenti passi.
1. Si prende il numero con l'esponente minore e 5i trasla a destra la sua mantissa
di un numero di bit uguali alIa ditIerenza degli esponenti.
2. Si pone l'esponente del risultato uguale al pili grande degli esponenti dei due
addendi.
3. Si effettua l'addizione 0 la sottrazione delle mantisse e si determina il segno
del risultato.
4. Si normalizza il risultato se necessaria.
Moltiplicazione Per la moltiplicazione non e necessario l'allineamento delle man-
tisse. L'algoritmo pili semplice puo essere cosl riassunto.
1. 8i sommano gli esponenti
2. S.i moltiplicano 1e mantisse e si determina il segno del risultato
3.. Si normalizza il risultato se necessario.
l
]
I
1
\
1
f
!
\
)
\
)
J
J
20 Capitola 1
che non e pili rappresentabile in modo esatto 'con due cifre poiche ne richiede
tre. Si arrotonda a 1) oppure a 1,0? In una situazione ambigua come questa
10 standard prevede Parrotondamento al valore la cui cifra meno significativa
epari. Quindi 1.05 viene arrotondato a 1.0.
La standard prevede che il risultato effettivo di un'operazione in virgola mobile sia
queUo che 5i ottiene calcolando il ri5ultato esatto, 0 ideale, e poi arrotondandolo
mediante una delle suddette modalita. Tale approccio risulta. molto costoso, dato che
occorre eseguire una somma con un nurnero elevato di bit (tramite un sommatore di
notevoli dimensioni), una parte dei quali verranno pero scartati alIa fine del processo
di arrotondamento.
Nella somma algebrica si possono usare due modalita. di arrotondamento distinte.
Una prima modalita eprevista nel caso in cuI gli addendi abbiano uguale espo-
nente. In questa caso la somma delle parti frazionarie degli addendi produce un riporto
a sinistra, che va considerato spostando la virgola mobile a sinistra e incrementando
l'espnnente; si perde coslla cifra meno significativa della parte frazionaria.
Esempio 10
Consideriamo due numeri in virgola mobile (scelti decimali per semplicita)
e calcoliamone la somma:
(0,836 x 10-'),0+(0,375x 10-'),0=(1,211 x 10-')10=(0,121 x 10-')10
Affinche il formato del risultato sia uguale a quello degli addendi (man-
tissa normalizzata di tre cifre) e necessario spostare la virgola a sinistra e
modificare il valore dell'esponente, perdendo cosll'ultima cifra decimale.
Ualtra modalita. ellarrotondamento conseguente alIa disuguaglianza degli esponenti
degli addendi: I due esponenti vanno eguagliati e percio la parte frazionaria di uno
dei due addendi va fatta scorrere (quelIa del numero cun esponente minore) perdendo
cosl almena una cifra.
EsemI?io 11
0,836x 10-'+0,375x 10-' -,0,083 x 10-'+0,375x 10-
4
=0,458 X 10-
4
I casi esarrunati (trascurando il problema dei casi ambigui, che come prima accennato
si ri501vono tramite al valore pari pili vicino), si passono realizzare
mediante un circuito sommatore, con una precisione di' due cifre in pili rispetto a
Quante ne siano nominalmente richieste dalla precisione degli addendi. Queste due
citre aggiuntive sono chiamate cifra di guardia (guard digit) e cifra di arrotondamento
(round digit)
Lo standard IEEE prevede anche cinque cause di eccezione aritmetica:
underflow
overflow
divi,sione per zero
eccezione di inesattezza
-
" ';


il
",1 '
"-
..
,
, ..
/if:"
-
,



.. r
, -,

,.
, ';'U
,"""
?,W
.
,
;;ri,
.,". '
.
""I'

'

;,6
-,,11;
.,.'!,
';i
-.
'/
,"'5
"11
;;, .

''(j :
'-j

. ",

tl
<"
'!;;-
,.1

... .,'
..

--
- . -
.::
f
'!;
S.
','.,-,,1

Introduzione 21
eccezione di invaliditd.
Le eccezioni di underflow, overflow, divisione per zero, sono presenti anche in altri
standard. L'eccezione di inesattezza e1a caratteristica delFaritmetica IEEE e si ve-
rifica sia quando il risultato di una operazione deve essere arrotondato, sia quando
l'operazione meorre in un overflow.
Quando si verifica una di queste eccezioni, eprevisto l'aggiornamento di un bit
di segnalazione, rna il calcolo puo proseguire. Questi segnalatori, una volta attivati,
rimangono tali 'fino a che non vengono disattivati 10 standard raceo-
manda di introdurre anche un bit di abilitazione di interruzione (uno per ciascuna delle
eccezioni). II\ questa modo se si verifica una delle eceezioni
,
e il eorrispondente bit
di abilitazione dell'interruzione eattivo
1
entra il gestore delle interruzioni predisposto
dalPutente (ovviamente
1
in questa caso, il bit di segnalazione non enecessario).
Lo standard prevede che qualora si verifichi una interruzione dOV'uta a un1ecce-
zione aritmetica
,
si possa risalire all1operazione che l'ha generata e anche al valore dei
suoi operandi.
Operazioni in virgola mobile La descrizione degli algoritmi con cui
verigono effettuate Ie operazioni algebriche in virgola mobile, non rientra nei fini di
questa trattazione. Per ulteriori approfondimenti 8i rimanda alia letteratura [Omo94],
[HP93); di seguito per dare un'idea di come vengono svolte tali operazioni
,
sono
-riportati in forma molto semplificata i principali passi dell'algoritmo di somma e
,moltiplicazione.
Somma Le operazioni di somma e sottrazione di numeri in virgola mobile
'.: richiedono che gli esponenti dei due addendi siano uguali. A tal fine Occorre
, " traslare Ie mantisse dei due numeri una rispetto all'aJtra. Una regola generale
per l'addizione e la sottrazione mobile pub essere riassunta nei seguenti passi.
1. Si prende il numero con l'esponente minore e 5i trasla a destra la sua mantissa
di un numero di bit uguali alIa ditIerenza degli esponenti.
2. Si pone l'esponente del risultato uguale al pili grande degli esponenti dei due
addendi.
3. Si effettua l'addizione 0 la sottrazione delle mantisse e si determina il segno
del risultato.
4. Si normalizza il risultato se necessaria.
Moltiplicazione Per la moltiplicazione non e necessario l'allineamento delle man-
tisse. L'algoritmo pili semplice puo essere cosl riassunto.
1. 8i sommano gli esponenti
2. S.i moltiplicano 1e mantisse e si determina il segno del risultato
3.. Si normalizza il risultato se necessario.
l
]
I
1
\
1
f
!
\
)
\
)
J
J
\. Tabella 1.6 Codifica "ASCII dei caratteri alfanumerici.
23
NOT
Introduzione
x t>o X
mpo

D x+y
.
te
xy
1.3.1 L'algebra delle reti
AND OR
Figura 1.2 Simboli standard per le porte AND. OR e NOT.
. .
,X-fJ.-_
y-L--
1
a
, Figura 1.1 Forma d'onda idealizzata di un segnale logico.
HUn segnale analogico porta piil informa7.ione di un seguale digitate, sia. percbe a 6680 corrisponde
, una. infinita di valori nel1'intervallo di definizione, sia perche e possibile una infinita. di andamenti
della forma. d10nda del segnale. In pratica, disturbi e Iimiti fisici alIa vclocita di variazione rendono
inaccurato sia il procesao di generazione sia queUo di riconosdmento e misura de.i segnali analogici. Al
contrario, un segnale digitale emolto meno sensibile al ruinore e ai fenomeni transitori. Per quanta
riguarda i disturbi, basta the questi non portico il segnale al di fuoTi della fascia di discretizzazione
in cui si trova i1 valore del segnale al momento del verificarsi del disturbo; per quanto riguarda i
fenomenj traJlsitori, basta dar tempo sufficiente al loro esaurirsi in modo che il riconoscimento del
segnale dia un risultato non a.mbiguo.
15Vale la pella di rimareare che i due simboli nulla hanna a cbe fare can i corrispondenti simboli
aritmetici. Cib che serve per definire I'algebra sono due simholi distinti. In attn contest.i
L'algebra edefinita su un insieme, composto da due soli elementi,
denotati
lS
con 0 e 1.
. Le reti costruite a partire dalIe porte logiche possono essere descritte attraver-
so un'algeora, detta algebra delle reti 0 algebra booleana, in ragione del fatto che
essa deriva dalla "logica" del ealcolo delle proposizioni, introdotta nel secolo seorso
dal maternatieo e filosofo Inglese George Boole. Proprio in virtu dell'origine di que-
.: .s'ta algebra, Ie reti in questione vengono usualmente dette "reti logiche". Per una
, loro trattazione si rimanda all' Appendice A. Qui di seguito vengono rapidamente
,: richi"arnati aleuJ.1i concetti essenziali.
I componenti elementari dei sistemi digitali vengono detti "circuiti logici" 0, pili
comunemente Hporte". In Figura 1.2, vengono dati i simboli delle tre porte logiche
, fondamentali. Ovviamente gli ingressi e Ie uscite sonG segnali binari.
di discriminarli. Si tratta, per esempio, di se un da.to segnale ea
un Hvello di tensione alto 0 basso, oyvero se ha un valore superiore b inferiore a Wla
.. data soglia
14
. In Figura 1.1 viene riportato l'andamento (idealizzato) di un segnale
binario.
.,

..
)
'.
,
-
-'
.,
,
' A'
.'
.
" ., .
" "
....
. ,'. .
.,-.. ,

"
,_.
....
.;ll;;
,'.


,
..

"" .-
.
.,
. .,
'.

.,
"
"1
.' .'
J
....,
"
"1;1
I.,.",
....,
,",
":''j1
."

....;
',:'1'
hi!
. "
" .,,,
. \\
'",
'-

.,..
.,'".
" ..
;, 'oJ
,..:)j
,.
'- r; ,
,'I. '
." .,'
".'
Capitolo 1

ecunaJe UeCUDaJe I...iara.ttere "'ESa.decimale uecimale
pazlO 20
.
32 A 41
.
65
I 21 33 B 42 66
.. .. . . .. .. ..
+
2B 43 Z 5A 90
0 30 48 a 61 97
1 31 49 b 62 98
.. .. .. .. ..
9 39 57'" z 8A 122
L'informazione elaborata all'interno di un calcalatore elettronico non esolamente di
carattere numerico, in quanta enecessaria rappresentare l'informazioni di tipo testuale
o cornUDque inIormazione di qualunque genere codificata attraverso simboli binari.
E costume universale chiamare byte un raggruppamento di 8 bit. Col termine
parala si intende un gruppo d.i 2, 4 0 piil byte, a seconda del contesto. Per esempio,
nelle ma.cchine a 16 bit si considera la parala corne farmata da 2 byte, mentre nelle
macchine a 32 bit la parola si considera farmata da 4 byte.
Per rappresentare l'informazione alfanumerica si rende necessario stabilire una
biunivoca tra cara.tteri e segni dell'alfabeto e configurazioni di cifre
binarie. La conispondenza in ql.!-estione si dice codifica. Un forma molte naturale
ecodificare un carattere a byte. diverse codifiche, tra cui la pili nota ela
codifica ASCII (America Standard Code}or the Interchange of Information). Origi-
nariamente il codiee non definiva una corrispondenza per tutti Ie possibili 256
configurazioni eli 8 bit. Nella versione correntemente usata (ASCII esteso) 1a codifica
riguarda tutte Ie configurazioni. Di reeente 1a codifica ASCII ha cominciato ad appa-
rire insufficiente, per questo motivo stanno entrando in uso codici BU 2 byte come la
codifica. Unicode, 1a Quale con5ente di rappresentare 65.536 2
16
differenti caratteri.
1.2.7 Informazioni di carattere alfanumerico
22
I
, I ca.lcolatori r"appresentano il settore applicativo in cui l'elettronica e Ie tecnologie
\ digitali hanno trovato piu vasta applicazione.
Un semplice ragionaD')ento spiega bene Ie ragioni del successo
digitale. Se un sistema 5i campane di n elementi e p e1a probabilita che ha ciascuno
\
di ea5i <Ii operare correttamente, allora la prohahilita che l'insieme degli n componenti
operi correttamente epn. Se 5i considera quant'e grande il numero di componenti
elementari the formano un moderno calcolatore elettronico, si deduce epe p dE;ve
essere tendenzialmente 1. Da un punta di vista tecno10gico cib richiede componenU
\ tali per cui sia facile diagno5ticare Ie situazioni di onamento. D massimo della
I semplicita e della affidabilita 8i ha con "sistemi digitali nari" , cioe con sistemi in cui
i segnall pOB50no assumere solo due valori e i cui compon: nti devono possedere solo la '.
I .
l
1 1.3 Logica dei sistemi digitali
)
\
1
l
\
I
1
)
1
\. Tabella 1.6 Codifica "ASCII dei caratteri alfanumerici.
23
NOT
Introduzione
x t>o X
mpo

D x+y
.
te
xy
1.3.1 L'algebra delle reti
AND OR
Figura 1.2 Simboli standard per le porte AND. OR e NOT.
. .
,X-fJ.-_
y-L--
1
a
, Figura 1.1 Forma d'onda idealizzata di un segnale logico.
HUn segnale analogico porta piil informa7.ione di un seguale digitate, sia. percbe a 6680 corrisponde
, una. infinita di valori nel1'intervallo di definizione, sia perche e possibile una infinita. di andamenti
della forma. d10nda del segnale. In pratica, disturbi e Iimiti fisici alIa vclocita di variazione rendono
inaccurato sia il procesao di generazione sia queUo di riconosdmento e misura de.i segnali analogici. Al
contrario, un segnale digitale emolto meno sensibile al ruinore e ai fenomeni transitori. Per quanta
riguarda i disturbi, basta the questi non portico il segnale al di fuoTi della fascia di discretizzazione
in cui si trova i1 valore del segnale al momento del verificarsi del disturbo; per quanto riguarda i
fenomenj traJlsitori, basta dar tempo sufficiente al loro esaurirsi in modo che il riconoscimento del
segnale dia un risultato non a.mbiguo.
15Vale la pella di rimareare che i due simboli nulla hanna a cbe fare can i corrispondenti simboli
aritmetici. Cib che serve per definire I'algebra sono due simholi distinti. In attn contest.i
L'algebra edefinita su un insieme, composto da due soli elementi,
denotati
lS
con 0 e 1.
. Le reti costruite a partire dalIe porte logiche possono essere descritte attraver-
so un'algeora, detta algebra delle reti 0 algebra booleana, in ragione del fatto che
essa deriva dalla "logica" del ealcolo delle proposizioni, introdotta nel secolo seorso
dal maternatieo e filosofo Inglese George Boole. Proprio in virtu dell'origine di que-
.: .s'ta algebra, Ie reti in questione vengono usualmente dette "reti logiche". Per una
, loro trattazione si rimanda all' Appendice A. Qui di seguito vengono rapidamente
,: richi"arnati aleuJ.1i concetti essenziali.
I componenti elementari dei sistemi digitali vengono detti "circuiti logici" 0, pili
comunemente Hporte". In Figura 1.2, vengono dati i simboli delle tre porte logiche
, fondamentali. Ovviamente gli ingressi e Ie uscite sonG segnali binari.
di discriminarli. Si tratta, per esempio, di se un da.to segnale ea
un Hvello di tensione alto 0 basso, oyvero se ha un valore superiore b inferiore a Wla
.. data soglia
14
. In Figura 1.1 viene riportato l'andamento (idealizzato) di un segnale
binario.
.,

..
)
'.
,
-
-'
.,
,
' A'
.'
.
" ., .
" "
....
. ,'. .
.,-.. ,

"
,_.
....
.;ll;;
,'.


,
..

"" .-
.
.,
. .,
'.

.,
"
"1
.' .'
J
....,
"
"1;1
I.,.",
....,
,",
":''j1
."

....;
',:'1'
hi!
. "
" .,,,
. \\
'",
'-

.,..
.,'".
" ..
;, 'oJ
,..:)j
,.
'- r; ,
,'I. '
." .,'
".'
Capitolo 1

ecunaJe UeCUDaJe I...iara.ttere "'ESa.decimale uecimale
pazlO 20
.
32 A 41
.
65
I 21 33 B 42 66
.. .. . . .. .. ..
+
2B 43 Z 5A 90
0 30 48 a 61 97
1 31 49 b 62 98
.. .. .. .. ..
9 39 57'" z 8A 122
L'informazione elaborata all'interno di un calcalatore elettronico non esolamente di
carattere numerico, in quanta enecessaria rappresentare l'informazioni di tipo testuale
o cornUDque inIormazione di qualunque genere codificata attraverso simboli binari.
E costume universale chiamare byte un raggruppamento di 8 bit. Col termine
parala si intende un gruppo d.i 2, 4 0 piil byte, a seconda del contesto. Per esempio,
nelle ma.cchine a 16 bit si considera la parala corne farmata da 2 byte, mentre nelle
macchine a 32 bit la parola si considera farmata da 4 byte.
Per rappresentare l'informazione alfanumerica si rende necessario stabilire una
biunivoca tra cara.tteri e segni dell'alfabeto e configurazioni di cifre
binarie. La conispondenza in ql.!-estione si dice codifica. Un forma molte naturale
ecodificare un carattere a byte. diverse codifiche, tra cui la pili nota ela
codifica ASCII (America Standard Code}or the Interchange of Information). Origi-
nariamente il codiee non definiva una corrispondenza per tutti Ie possibili 256
configurazioni eli 8 bit. Nella versione correntemente usata (ASCII esteso) 1a codifica
riguarda tutte Ie configurazioni. Di reeente 1a codifica ASCII ha cominciato ad appa-
rire insufficiente, per questo motivo stanno entrando in uso codici BU 2 byte come la
codifica. Unicode, 1a Quale con5ente di rappresentare 65.536 2
16
differenti caratteri.
1.2.7 Informazioni di carattere alfanumerico
22
I
, I ca.lcolatori r"appresentano il settore applicativo in cui l'elettronica e Ie tecnologie
\ digitali hanno trovato piu vasta applicazione.
Un semplice ragionaD')ento spiega bene Ie ragioni del successo
digitale. Se un sistema 5i campane di n elementi e p e1a probabilita che ha ciascuno
\
di ea5i <Ii operare correttamente, allora la prohahilita che l'insieme degli n componenti
operi correttamente epn. Se 5i considera quant'e grande il numero di componenti
elementari the formano un moderno calcolatore elettronico, si deduce epe p dE;ve
essere tendenzialmente 1. Da un punta di vista tecno10gico cib richiede componenU
\ tali per cui sia facile diagno5ticare Ie situazioni di onamento. D massimo della
I semplicita e della affidabilita 8i ha con "sistemi digitali nari" , cioe con sistemi in cui
i segnall pOB50no assumere solo due valori e i cui compon: nti devono possedere solo la '.
I .
l
1 1.3 Logica dei sistemi digitali
)
\
1
l
\
I
1
)
1
1
)
25
Introduzione

smcrone
,
..
,
Reti sequenziali Si ha una rete sequenziaJe quando l'uscita efunzione
l
oltre ch I
dell'ingresso, anche della stato. Indicando con S = {Yl,Y2, .. ' ,Yd 10 stato correntE. '
della rete, l'uscita viene espressa come. 0 = 1(1,8). AHa funzione di uscita e
necessario aggiungere 1a funzione di stato, espressa eome 81 = g(1,S), che lega Ie I
_stato futuro alIa stato presente e all'ingresso. Una rete sequenziale ha memonG
(limitata) della sequenza di ingresso. Gli elenienti di memoria binari vengonc. j
detti flip-flop.
17Ncl seguito useremo normalmente la pa.roia clock per denotare it segnale impulsivo, di frequenz, ,
fissa." impiegato per comandare reti sincrone. 1
,..
Iri 1.3 viene data una schematizzazione del modo di operare di una rete sequen-
ziale 8incrona, 'L'intervallo di clock T viene diviao in due parti, Ll
1
e Ll
2
, Durante Ll
1
1
1a parte, di logica cotnbina.toria (LC) presente nella rete elabora i segnali ai suoi in,
determina gli ingressi per gli elementi di memoria. Durante Ll
2
gli elementi d: J
-rIlemona si portano oegli stati previsti dai lora ingressi. Questo modello di funziona-
corrisponde essenzialmente alFipotesi di flip-flop master-slave che campionanC" l
i .loro .ingressi suI fronte di salita del clock e presentano il nuovo stato suI fronte d
.' discesa del clock; sui fronte di salita del clock, i segnali in ingresso agli elementi d
, devono essere stabili. Naturalmente non enecessario che i flip-flop siano
qi tipo maSter-slave e il funzionamento della rete pub prendere forme leggermente
funzione del modo di operare degli elementi di memoria. Si p0580no, pel )
usare elementi di memoria, che operano sempHcemente BU un fronte; cio chI
eche al sopraggiungere del clock i flip-flop abbiano ingressi stabili. Inoltre,
-dopo.che i Rip-flop hanno presentato Ie loro uscite e
,
prima che sopraggiunga i1 nuovo >
. cl?ck
l
deve esserci tempo per tutti i segnali, compresi quelli derivanti dalPingresso, d J
prppagarsi e stabilizzarsi.
. . . 1
.' -... .
rete sequenziale di. tipo sinerono a Un.a. rete vi.ene detta j
asiricFq.na .quando eS8a reaglsce Immediatamente alla vanazlOne degli lDgresSl
l
portan-
dosi daUo stato presente al nuovo stato nel solo tempo richiesto dalla eommutazione
Una .rete dice ,speciale.. segnale, dettc I
_ 91 forn.lsce l'LSt.ante ?Ul gli. di memona che la com f
pongono esammano (eamplOoano) 1 propn mgressl determmaodo quale sara 10 state.
._.- futuro. Una rete sequenziale ainerona si costruisee a partire da ftip-Bop sineroni.
-:-.-,. n diagramma di stato emodo naturale per descrivere il comportamento di un;; i
Per gli approfondimenti necessari si rinvia all'Appendice A.
..
"
,
. , ,':r:.' .,'" .,'
, . '. 1.4.1' Reti sequenziali

..
_::.-"'- ,.
.
"
-,
.
- ! ...
,
..
-
'.-.-
'- " ,.,. '.-.
,
,
..
-"... ,
;:. :}:,
" ,- ..' - - -
-
. - ".... "'Reti combinatorie Si ha una rete combinatoria quando l'uscita eesclusivamente )
fuitzi6ne dell1ingresso, ovvero quando per una data configurazione dei segnali
di ingresso risultano definiti i segnali di uscita. Indicando con I l'insieme dei I
,egnali di' ingresso e con 0 I'insieme dei segnali <Ii owero, posta I = l
{Xl ,X2, ... ,X
n
} eO = {Zl ,z21 ... ,Zm}, per una rete combrnatona, vale la relazlone.
0= f(l)
''l.'''l'''t!'->0' .;.... -- "
:_
.
, :';'+ -" -
.-
-- ,
_... . ,
, :/
I:
\:.:0,
,'" " .
.
'" ,.,
...,(iII'
" .

,,,
, ,

..
., ,.,
, .rl.
, .....
. c.
.
":.;'.'
.

.,
..
.'/'
ii"
, .'

.'
,,,il
",l:
'Ji-,..

-,)1{
dl
,'"
,;t')'I'
';j '"
_']1 .
.'-:,
x;iD
vomple-
mentazione
A B

1
D
se' e solo se x=l
xiI
se e solo se
Pradotto logico
A B A-B
D D D
D I D D I I
I D D I D I
1 1 1 I 1 1
1.4 Reti combinatorie e reti sequenziali
Sull'insieme {O,l} vengono definite tre operazioni
16
:
il prodott.o logico, indicato con il segno 1I.1I;
la somma logica, indicata con il segno "+";
la complementazione 0 negazione, indicata il segno " - II
Le tre operazioni corrispondono, rispettivamente, alle tre porte di Figura 1.2 e i simboli
U+", ".'1 e 11-" sono intercambiabili con AND, OR e NOT.
In Tabella 1.7 vengono riportate Ie tabelle di verita delle tre operazioni. La
tabella di ventd di una operazione riporta it risultato dell'operazione stessa per tutte
Ie possibili combinazioni dei valori degli operandi.
Si definisce costante logica (0 booleana) un simbolo cui epermanefltemente asse-
gnato uno dei due possibili valori presi dall'insieme {O, I}. Si definisce voriabile logica
un simbolo che puo assumere indifferentemente uno dei due valori presi daB'insieme
{D, I}. Se x euna logica si ha:
Una funzione puo essere espressa in forma algebrica 0 in forma tabellare.
,
usate differenti coppie di simboli come: vero/falso, V/F, T/F e altri. A ogni buon conto, l'uso dei
simboli 0 e 1 risulta convcniente quando si tratta di impiegare Ie reti per realizzazione dcgli operatod
dell'aritmetica binaria.
16Anche per gli operatori . e + valgono Ie stesse avvertenze date per i due simboli 0 c 1: niente
hanna ache vedere can i corrispondenti operatori aritmetici.
,
Si definisce espressione logica una qualunque combinazione di variabili a costanti
booleane legate fra lora dagli operatori logici fondarnentali. Si definisce junzione
logica delle n variabili booleane x" ... ,X
n
, la relazione {D,l}n -; {D;l} che associa un
valore booleano a ciascuna delle 2
R
configurazioni possibili delle n variablli:
y = f(x, ,... ,x
n
)
Si distinguono due categorie fondamentali di reti: Ie reti combinatorie e Ie reti
sequenziali (CIr. Appendice A).
Tabella 1.7 Ta.belle di verita delle tre operazioni fondamentali deWalgebra
24 Ca.pitolo 1
1
)
25
Introduzione

smcrone
,
..
,
Reti sequenziali Si ha una rete sequenziaJe quando l'uscita efunzione
l
oltre ch I
dell'ingresso, anche della stato. Indicando con S = {Yl,Y2, .. ' ,Yd 10 stato correntE. '
della rete, l'uscita viene espressa come. 0 = 1(1,8). AHa funzione di uscita e
necessario aggiungere 1a funzione di stato, espressa eome 81 = g(1,S), che lega Ie I
_stato futuro alIa stato presente e all'ingresso. Una rete sequenziale ha memonG
(limitata) della sequenza di ingresso. Gli elenienti di memoria binari vengonc. j
detti flip-flop.
17Ncl seguito useremo normalmente la pa.roia clock per denotare it segnale impulsivo, di frequenz, ,
fissa." impiegato per comandare reti sincrone. 1
,..
Iri 1.3 viene data una schematizzazione del modo di operare di una rete sequen-
ziale 8incrona, 'L'intervallo di clock T viene diviao in due parti, Ll
1
e Ll
2
, Durante Ll
1
1
1a parte, di logica cotnbina.toria (LC) presente nella rete elabora i segnali ai suoi in,
determina gli ingressi per gli elementi di memoria. Durante Ll
2
gli elementi d: J
-rIlemona si portano oegli stati previsti dai lora ingressi. Questo modello di funziona-
corrisponde essenzialmente alFipotesi di flip-flop master-slave che campionanC" l
i .loro .ingressi suI fronte di salita del clock e presentano il nuovo stato suI fronte d
.' discesa del clock; sui fronte di salita del clock, i segnali in ingresso agli elementi d
, devono essere stabili. Naturalmente non enecessario che i flip-flop siano
qi tipo maSter-slave e il funzionamento della rete pub prendere forme leggermente
funzione del modo di operare degli elementi di memoria. Si p0580no, pel )
usare elementi di memoria, che operano sempHcemente BU un fronte; cio chI
eche al sopraggiungere del clock i flip-flop abbiano ingressi stabili. Inoltre,
-dopo.che i Rip-flop hanno presentato Ie loro uscite e
,
prima che sopraggiunga i1 nuovo >
. cl?ck
l
deve esserci tempo per tutti i segnali, compresi quelli derivanti dalPingresso, d J
prppagarsi e stabilizzarsi.
. . . 1
.' -... .
rete sequenziale di. tipo sinerono a Un.a. rete vi.ene detta j
asiricFq.na .quando eS8a reaglsce Immediatamente alla vanazlOne degli lDgresSl
l
portan-
dosi daUo stato presente al nuovo stato nel solo tempo richiesto dalla eommutazione
Una .rete dice ,speciale.. segnale, dettc I
_ 91 forn.lsce l'LSt.ante ?Ul gli. di memona che la com f
pongono esammano (eamplOoano) 1 propn mgressl determmaodo quale sara 10 state.
._.- futuro. Una rete sequenziale ainerona si costruisee a partire da ftip-Bop sineroni.
-:-.-,. n diagramma di stato emodo naturale per descrivere il comportamento di un;; i
Per gli approfondimenti necessari si rinvia all'Appendice A.
..
"
,
. , ,':r:.' .,'" .,'
, . '. 1.4.1' Reti sequenziali

..
_::.-"'- ,.
.
"
-,
.
- ! ...
,
..
-
'.-.-
'- " ,.,. '.-.
,
,
..
-"... ,
;:. :}:,
" ,- ..' - - -
-
. - ".... "'Reti combinatorie Si ha una rete combinatoria quando l'uscita eesclusivamente )
fuitzi6ne dell1ingresso, ovvero quando per una data configurazione dei segnali
di ingresso risultano definiti i segnali di uscita. Indicando con I l'insieme dei I
,egnali di' ingresso e con 0 I'insieme dei segnali <Ii owero, posta I = l
{Xl ,X2, ... ,X
n
} eO = {Zl ,z21 ... ,Zm}, per una rete combrnatona, vale la relazlone.
0= f(l)
''l.'''l'''t!'->0' .;.... -- "
:_
.
, :';'+ -" -
.-
-- ,
_... . ,
, :/
I:
\:.:0,
,'" " .
.
'" ,.,
...,(iII'
" .

,,,
, ,

..
., ,.,
, .rl.
, .....
. c.
.
":.;'.'
.

.,
..
.'/'
ii"
, .'

.'
,,,il
",l:
'Ji-,..

-,)1{
dl
,'"
,;t')'I'
';j '"
_']1 .
.'-:,
x;iD
vomple-
mentazione
A B

1
D
se' e solo se x=l
xiI
se e solo se
Pradotto logico
A B A-B
D D D
D I D D I I
I D D I D I
1 1 1 I 1 1
1.4 Reti combinatorie e reti sequenziali
Sull'insieme {O,l} vengono definite tre operazioni
16
:
il prodott.o logico, indicato con il segno 1I.1I;
la somma logica, indicata con il segno "+";
la complementazione 0 negazione, indicata il segno " - II
Le tre operazioni corrispondono, rispettivamente, alle tre porte di Figura 1.2 e i simboli
U+", ".'1 e 11-" sono intercambiabili con AND, OR e NOT.
In Tabella 1.7 vengono riportate Ie tabelle di verita delle tre operazioni. La
tabella di ventd di una operazione riporta it risultato dell'operazione stessa per tutte
Ie possibili combinazioni dei valori degli operandi.
Si definisce costante logica (0 booleana) un simbolo cui epermanefltemente asse-
gnato uno dei due possibili valori presi dall'insieme {O, I}. Si definisce voriabile logica
un simbolo che puo assumere indifferentemente uno dei due valori presi daB'insieme
{D, I}. Se x euna logica si ha:
Una funzione puo essere espressa in forma algebrica 0 in forma tabellare.
,
usate differenti coppie di simboli come: vero/falso, V/F, T/F e altri. A ogni buon conto, l'uso dei
simboli 0 e 1 risulta convcniente quando si tratta di impiegare Ie reti per realizzazione dcgli operatod
dell'aritmetica binaria.
16Anche per gli operatori . e + valgono Ie stesse avvertenze date per i due simboli 0 c 1: niente
hanna ache vedere can i corrispondenti operatori aritmetici.
,
Si definisce espressione logica una qualunque combinazione di variabili a costanti
booleane legate fra lora dagli operatori logici fondarnentali. Si definisce junzione
logica delle n variabili booleane x" ... ,X
n
, la relazione {D,l}n -; {D;l} che associa un
valore booleano a ciascuna delle 2
R
configurazioni possibili delle n variablli:
y = f(x, ,... ,x
n
)
Si distinguono due categorie fondamentali di reti: Ie reti combinatorie e Ie reti
sequenziali (CIr. Appendice A).
Tabella 1.7 Ta.belle di verita delle tre operazioni fondamentali deWalgebra
24 Ca.pitolo 1
Figura 1.3 Schematizzazione delle operazioni delle reti sincrone.
In Figura lA, a sinistral vengono mostrate due reti in cascata operanti con 10
stesso clock. In questc case, sul generico impulso, 130 rete a valle elabora il risultato
delle elaborazioni effettuate dalla rete a monte nel periodo precedente. La scomposi-
zione d.i una rete in due'o pili reti in cascata si dimostra utile quando 130 rete singola
sarebbe trappe complessa. Cia compacta che l'esecuzione cii una data fUDzione (0
elabora.zione) richiede piu eli un cicIo di clock. E-facile convincersi, perc, che se si
realizzassero Ie sottoreti seguendo il madello sulla destra in Figura 1.3, ogni variazione
dell'ingresso primario si propagherebbe fino all'uscita, invalidando paffermazione pre-
cedente. E percio necessaria "disaccoppiare" il funzionamenta delle sottoreti , nel
senso ebe I'ingresso di una sottorete a valle sia determinato solo dalia sottorete a
monte e non dall'ingresso primario. Cia si ottiene rendenda Ie uscite delle sottoreti
funzioni del solo stato, come illustrato a destra in Figura 1.4. Si noti ebe can questa
struttura, al generico periodo di clock la rete a valle vede come ingressi Ie uscite della
rete a mante, calcolate nel clock precedente, mentre Ie variazioni degli ingressi primari
vengoDo osservate solo dalla rete a monte.
Di norma, il periodo minima del clock della rete scomposta in Bottoreti risulta
pin breve di queUo ebe si avrebbe con un'unica rete, in quanto l'intervallo di tempo
.:1
1
richiesto dalla logica combinatoria delle sottoreti risulta minore eli quanto richie-
derebbe una sola rete. Ma il tempo complessivo per eseguire una data funzione e
superiore scomponendo la rete in pili reti in cascata. lnfatti, sia T il periodo di -
clock richiesto da una rete non e T
'
queUo richiesto dalle sottoreti (che
,
supporremo uguale
,
per semplicita). E ragionevole aspettarsi che la componente LJ
1
di T' sia inferiore alia componente L1
1
di T, mentre non c'e ragione per cui sia
diversi da .:1
2
. Ne consegue ebe T' < T, rna la rete scomposta opera in un tempo
IT' ebe eli norma eminore di T. Questa ragionamento non deve far pensare che la
scomposizione di una rete in piu reU operanti in cascata sia ,da escIudere. Anzitutto
la scomposizione semplifica il progetto, in quanta cODsente di raggruppare e iso1are
funzionalita. D'altra parte, la natura stessa dei processi elaborativi impone talvolta
una ben definita successione di passi , per cui la soluzione schematizzata in Figura 1.4
risulta. comunque la piu conveniente.
Possiamo elaboTare ulteriormente il modello di Figura 1.4 COIl il seguente Tagio-
namento: il blocco LC
,
a valle degli elementi di memoria, puo essere accorpato al
blocco LC in ingresso alFeventuale rete a vaile. Si ottiene, cosl, il modelIo I"iportato
in Figura 1.5, dove ora Ie uscite cOTrispoodono esattamente allo stato della (sotto)rete.
I I 1,--_
-
27 lntroduzione

LC
100__11
S
LC
"
,


t
LC
f-.
llo...,_" S
"
. ",

Figura 1.5 Madella di blocco componente di una rete sequenziale sinerona. L'uscita.
eorrisponde allo stato della rete.
I
UH UH
0
...
tlllCllO<.
f f
1.5 Registri
Nella discussione precedente si e parlato di elementi di memoria in riferimento al
solo stato della rete. Conviene generalizzare il concetto di memoria, In particolare,
conviene introdurre il concetto di registro.
Per registro si intende un insieme di n identici elementi di memoria (flip-flop),
tutti comandati claUo stesso clock.
I registri Bono componenti essenziali dei sistemi di elaborazione, non solo perche
costituiscono i supporti che materializzano l'informazione nella macchilla., rna anehe
perche essi permettono di partizionare 1a logica complessiva e di scomporla in blocchi
serniindipendenti, accoppiati tramite registri.
I registri possono differenziarsi per il tipo di flip-flop impiegatl
,
per il modo in
cui essi vengono comandati, per Ie funzioni aggiuntive a queUe di contenitore
formazione (per esempio, 10 scorrimento) ecc. Per i nostri usi facemo riferimento ailo
schema di Figura 1.6. nfunzionamento del registro eil seguente.
Figura 1.4 Collegamento in cascata di clue reti sincrone eoma.nclate dalIo stesso clock e
modella aggiornato della rete sequenziale, can uscita funzione solo della stato.
I vincoli riguardanti la propagazione dei segnali, si semplificano ulteriormente. lnfatti
se tutta la rete efatta di blocchi come quello di Figura 1.5, la rete combinatoria vede
sicuramente ingressi stabili, Se ora si ipotizza che gli clementi di memoria operino sul
fronte di discesa del clock, basta che if periodo sia lungo abbastanza. da consentire la
propagazione attraverso 1a parte combinatoria e da lasciare il margine richiesto dai
flip-flop per commutare. Piu sotto, una volta introdotti i registri, costruiremo un
modello ulteriormente semplificato.
,
,
,!i
,
"
.,
,.'

11
jl
\1'
, '
" ,
"
'I:
,
,
,,',
'I
;
j
,1!'

.<
"
" \(


/,'
JI
,
".,:,
,.
'!I
",
\"
I'
"I'
,
"
',.,
<,
.,
'l '. ." ,
'."
.,.
.,


Ji
,.,
,
..
,

" ."
"'1. , ,
"

"

:'-'
,.

'F-
I
,
.,.
'I'
"
'1<

:;/'
""
; [;
'1
I,
",;:
l'
."
" I
"
"
.",
it
' .
I. :
"
i
""
"
"'1

\',! ,
',.
u'
,
,
11

,
,I'
."
I

Q
LC

Z1_.....
-"-

"T ,I" :1
o
T

I
Capitola 1 26
I
\
]
\
I
)
)
1
1
I
]
I
I'
1
Figura 1.3 Schematizzazione delle operazioni delle reti sincrone.
In Figura lA, a sinistral vengono mostrate due reti in cascata operanti con 10
stesso clock. In questc case, sul generico impulso, 130 rete a valle elabora il risultato
delle elaborazioni effettuate dalla rete a monte nel periodo precedente. La scomposi-
zione d.i una rete in due'o pili reti in cascata si dimostra utile quando 130 rete singola
sarebbe trappe complessa. Cia compacta che l'esecuzione cii una data fUDzione (0
elabora.zione) richiede piu eli un cicIo di clock. E-facile convincersi, perc, che se si
realizzassero Ie sottoreti seguendo il madello sulla destra in Figura 1.3, ogni variazione
dell'ingresso primario si propagherebbe fino all'uscita, invalidando paffermazione pre-
cedente. E percio necessaria "disaccoppiare" il funzionamenta delle sottoreti , nel
senso ebe I'ingresso di una sottorete a valle sia determinato solo dalia sottorete a
monte e non dall'ingresso primario. Cia si ottiene rendenda Ie uscite delle sottoreti
funzioni del solo stato, come illustrato a destra in Figura 1.4. Si noti ebe can questa
struttura, al generico periodo di clock la rete a valle vede come ingressi Ie uscite della
rete a mante, calcolate nel clock precedente, mentre Ie variazioni degli ingressi primari
vengoDo osservate solo dalla rete a monte.
Di norma, il periodo minima del clock della rete scomposta in Bottoreti risulta
pin breve di queUo ebe si avrebbe con un'unica rete, in quanto l'intervallo di tempo
.:1
1
richiesto dalla logica combinatoria delle sottoreti risulta minore eli quanto richie-
derebbe una sola rete. Ma il tempo complessivo per eseguire una data funzione e
superiore scomponendo la rete in pili reti in cascata. lnfatti, sia T il periodo di -
clock richiesto da una rete non e T
'
queUo richiesto dalle sottoreti (che
,
supporremo uguale
,
per semplicita). E ragionevole aspettarsi che la componente LJ
1
di T' sia inferiore alia componente L1
1
di T, mentre non c'e ragione per cui sia
diversi da .:1
2
. Ne consegue ebe T' < T, rna la rete scomposta opera in un tempo
IT' ebe eli norma eminore di T. Questa ragionamento non deve far pensare che la
scomposizione di una rete in piu reU operanti in cascata sia ,da escIudere. Anzitutto
la scomposizione semplifica il progetto, in quanta cODsente di raggruppare e iso1are
funzionalita. D'altra parte, la natura stessa dei processi elaborativi impone talvolta
una ben definita successione di passi , per cui la soluzione schematizzata in Figura 1.4
risulta. comunque la piu conveniente.
Possiamo elaboTare ulteriormente il modello di Figura 1.4 COIl il seguente Tagio-
namento: il blocco LC
,
a valle degli elementi di memoria, puo essere accorpato al
blocco LC in ingresso alFeventuale rete a vaile. Si ottiene, cosl, il modelIo I"iportato
in Figura 1.5, dove ora Ie uscite cOTrispoodono esattamente allo stato della (sotto)rete.
I I 1,--_
-
27 lntroduzione

LC
100__11
S
LC
"
,


t
LC
f-.
llo...,_" S
"
. ",

Figura 1.5 Madella di blocco componente di una rete sequenziale sinerona. L'uscita.
eorrisponde allo stato della rete.
I
UH UH
0
...
tlllCllO<.
f f
1.5 Registri
Nella discussione precedente si e parlato di elementi di memoria in riferimento al
solo stato della rete. Conviene generalizzare il concetto di memoria, In particolare,
conviene introdurre il concetto di registro.
Per registro si intende un insieme di n identici elementi di memoria (flip-flop),
tutti comandati claUo stesso clock.
I registri Bono componenti essenziali dei sistemi di elaborazione, non solo perche
costituiscono i supporti che materializzano l'informazione nella macchilla., rna anehe
perche essi permettono di partizionare 1a logica complessiva e di scomporla in blocchi
serniindipendenti, accoppiati tramite registri.
I registri possono differenziarsi per il tipo di flip-flop impiegatl
,
per il modo in
cui essi vengono comandati, per Ie funzioni aggiuntive a queUe di contenitore
formazione (per esempio, 10 scorrimento) ecc. Per i nostri usi facemo riferimento ailo
schema di Figura 1.6. nfunzionamento del registro eil seguente.
Figura 1.4 Collegamento in cascata di clue reti sincrone eoma.nclate dalIo stesso clock e
modella aggiornato della rete sequenziale, can uscita funzione solo della stato.
I vincoli riguardanti la propagazione dei segnali, si semplificano ulteriormente. lnfatti
se tutta la rete efatta di blocchi come quello di Figura 1.5, la rete combinatoria vede
sicuramente ingressi stabili, Se ora si ipotizza che gli clementi di memoria operino sul
fronte di discesa del clock, basta che if periodo sia lungo abbastanza. da consentire la
propagazione attraverso 1a parte combinatoria e da lasciare il margine richiesto dai
flip-flop per commutare. Piu sotto, una volta introdotti i registri, costruiremo un
modello ulteriormente semplificato.
,
,
,!i
,
"
.,
,.'

11
jl
\1'
, '
" ,
"
'I:
,
,
,,',
'I
;
j
,1!'

.<
"
" \(


/,'
JI
,
".,:,
,.
'!I
",
\"
I'
"I'
,
"
',.,
<,
.,
'l '. ." ,
'."
.,.
.,


Ji
,.,
,
..
,

" ."
"'1. , ,
"

"

:'-'
,.

'F-
I
,
.,.
'I'
"
'1<

:;/'
""
; [;
'1
I,
",;:
l'
."
" I
"
"
.",
it
' .
I. :
"
i
""
"
"'1

\',! ,
',.
u'
,
,
11

,
,I'
."
I

Q
LC

Z1_.....
-"-

"T ,I" :1
o
T

I
Capitola 1 26
I
\
]
\
I
)
)
1
1
I
]
I
I'
1
,
"
1.6 Trasferimento dell'informazione
Figura 1. 7 Madella di registro. Nel seguito si omette spesso eli indicare i segna.li Rin e
Rout, in tal caso si deve assumere che essi sono sempre asseriti
Figura 1.6 Struttura di un registro. Viene mostrato i1 dettaglio per il generico bit. 8i
assume che i1 registro commuti suI honte di discesa del clock. Nello schema si esupposto
che it segnale Rout abiliti l'uscita. in terzo stato.
J
J
1
I
\
I
\
I
1
1
\
I
I
)
I
29
. IntrQduzione
RTlout

,
RT, ,
RT,
BUS
7
.
RRlln ... RRain
RR,
,
RR,
Praticamente la struttura a bus e10 standard nel mondo dei calcolatori. Thttavia
ha un inconveniente: consente un solo trasferimento aUa volta. In certe situazioni
questo e fattore limitativo e
1
in presenza di alto traffico, il bus puo facilmente
diventare il "collo di bottiglia" del sistema. InoLtre
1
un bus richiede la logica di
arbitraggio che consenta .di risolvere Ie contl;!se per il suo uSa.
1. 7 Unita aritmetiche e logiche
In precedenza si eaccennato all'aritmetica b10aria (Cfr,1.2,3), Si puo fare un'osser.
vazione, apparentemente ovvia
1
rna di fondamentali conseguenze: Ie tabell.i.Jie delle
operazioni aritmetiche contengono i due soli simboli '0 e I, esattamente come due
sono i simboli nell'algebra delle reti. Ne deriva che Ie tabelline aritmetiche possono
interprete come Ie tabelle di veritA delle funzioni logiche corrispondenti aile
operazioni aritmetiche.
0>
.scegliere i percorsi che interessano in un dato istante. Una simile rete ecomponibile
attraverso porte AND/OR; la logica di selezione detennina quali registri verranno
caricati al prossimo clock. Una rete di m x n percorsi reode possibile trasferimenti \
multipli su ciascun clock) compreso il trasferimento da uno a pili redistri e il trasferi-
mento dell'OR del contenuto di pili sorgenti in una 0 pili destinaziohi. Thttavia una
simile rete ha lo svantaggio della complessita e dell'occupazione d.i spazio suI chip per
cui si preferisce ricorrere aHa struttura il ous.,
n bus euna semplice linea di collegamEmto'a cui 50no conneBse tutte Ie uBcite
dei dispositivi trasmittenti e tutti gli ingressi dei diapositivi riceventi. Sebbene sia
possibile costruire bus con logica convenzionale) la Btruttura a bus ha senso se si
utilizza logica con uscita a tre stati, 0
1
quantomeno
1
a coUettore aperto. Lo schema
di collegamento at bus eriportato in Figura 1.8. Se Ie uscite.sul bus sono in Iogica a
tre stati solo un trasmittente alIa volta puo avere l'uscita abilitata. Se le uscite sono
a collettore aperto epossibile abilitarne pili di una e 10 tal caso si ba il wired AND
(Iogica positiva) delle uscite stesse,
. Figura 1.8 Schema di collegamento tramite bus. Si suppone Ie uscite dei registri collegati
suI bus siano a tre stati. In un dato momenta deve essere asserito un solo segnale di abi-
litazione delle uscite, in modo che il bus venga porlato allo stato logico del corrispondente
registro. I segnali di abilitazione degli ingressi detenninano quali registri di destinazione
vengono car"icati sui prossimo (fronte del) clock.'
,
-. __
..
jl
ill,
"
""I
..
.,

J
i
..
'>j;
..
"
.!,I

,';";
'"
':1
"'1
"
.;,
,..
'Ii..
'1' '2 '
..

.;::-1



",'1.



"
'"
.;:. :
"I' 0>
;'
},
,


,
:i
t

;', :


... '
'"
, ,

"
,';:,.,
"
,:1'
..
..
(.
'.,
..
...'
'. "'
..
,
',11'
..
,"I'
.' "
";1"

.
,
.,
ii' --
,
Clock 61 T +62
---.J I I L
'r T
Cloak 61 I A2
OUT
IN
Rout
CIOO'---1: REG;TRO I
Rin
INi
Rin
'-.- '-.
>ck
,
x

Rout
OUTi
c,
Una larga parte delle attivita che si svolgono alPinterno di un calcolatore consiste nel
trasferimento dell1informazione tra registri.
Per trasferire informazione da un registro all'altro occorre che l'uscita del regi
stro sorgente venga portata all'ingresso del registro di destinazione, Se si hanno m
possibili registri sorgente e n possibili registri di destinazione
1
DecorTe una rete di
interconnessione che selettivamente coUeghi le sorgenti con Ie destinazioni. In linea di
principio si dovrebbero aver.e m x n percorsi e una logica di selezione che permetta di
Si assume che il regist!o commuti suI fronte di discesa del clockI doe alIa fine
del periodo, Prima del fronte del clock gli ingressi SR/JK devono essere stabili
almeno per il cosiddetto set-up time e devono restare stabili dopa i1 ronte per il
cosiddetto hold time (si veda la discussione in proposito in Appendice A),
Se Rin e disasserito, l'ingresso ai singoli flip-flop e 00 e, dunque
1
it registro si
mantiene nello stato precedente; se Rin easserito 10 stato di ogni flip-flop (it
contenuto del registro) diventa quello corrispondente alPingresso INi.
n segnale Rout ha funzione di Output Enable de1l1uscita a tre stati
Nel seguito useremo 10 schema di Figura 1.7. Quando i segnali Rin e Rout non
vengono indicati si assume che essi siano sempre asseriti.
28 Capitola 1
,

,
"
1.6 Trasferimento dell'informazione
Figura 1. 7 Madella di registro. Nel seguito si omette spesso eli indicare i segna.li Rin e
Rout, in tal caso si deve assumere che essi sono sempre asseriti
Figura 1.6 Struttura di un registro. Viene mostrato i1 dettaglio per il generico bit. 8i
assume che i1 registro commuti suI honte di discesa del clock. Nello schema si esupposto
che it segnale Rout abiliti l'uscita. in terzo stato.
J
J
1
I
\
I
\
I
1
1
\
I
I
)
I
29
. IntrQduzione
RTlout

,
RT, ,
RT,
BUS
7
.
RRlln ... RRain
RR,
,
RR,
Praticamente la struttura a bus e10 standard nel mondo dei calcolatori. Thttavia
ha un inconveniente: consente un solo trasferimento aUa volta. In certe situazioni
questo e fattore limitativo e
1
in presenza di alto traffico, il bus puo facilmente
diventare il "collo di bottiglia" del sistema. InoLtre
1
un bus richiede la logica di
arbitraggio che consenta .di risolvere Ie contl;!se per il suo uSa.
1. 7 Unita aritmetiche e logiche
In precedenza si eaccennato all'aritmetica b10aria (Cfr,1.2,3), Si puo fare un'osser.
vazione, apparentemente ovvia
1
rna di fondamentali conseguenze: Ie tabell.i.Jie delle
operazioni aritmetiche contengono i due soli simboli '0 e I, esattamente come due
sono i simboli nell'algebra delle reti. Ne deriva che Ie tabelline aritmetiche possono
interprete come Ie tabelle di veritA delle funzioni logiche corrispondenti aile
operazioni aritmetiche.
0>
.scegliere i percorsi che interessano in un dato istante. Una simile rete ecomponibile
attraverso porte AND/OR; la logica di selezione detennina quali registri verranno
caricati al prossimo clock. Una rete di m x n percorsi reode possibile trasferimenti \
multipli su ciascun clock) compreso il trasferimento da uno a pili redistri e il trasferi-
mento dell'OR del contenuto di pili sorgenti in una 0 pili destinaziohi. Thttavia una
simile rete ha lo svantaggio della complessita e dell'occupazione d.i spazio suI chip per
cui si preferisce ricorrere aHa struttura il ous.,
n bus euna semplice linea di collegamEmto'a cui 50no conneBse tutte Ie uBcite
dei dispositivi trasmittenti e tutti gli ingressi dei diapositivi riceventi. Sebbene sia
possibile costruire bus con logica convenzionale) la Btruttura a bus ha senso se si
utilizza logica con uscita a tre stati, 0
1
quantomeno
1
a coUettore aperto. Lo schema
di collegamento at bus eriportato in Figura 1.8. Se Ie uscite.sul bus sono in Iogica a
tre stati solo un trasmittente alIa volta puo avere l'uscita abilitata. Se le uscite sono
a collettore aperto epossibile abilitarne pili di una e 10 tal caso si ba il wired AND
(Iogica positiva) delle uscite stesse,
. Figura 1.8 Schema di collegamento tramite bus. Si suppone Ie uscite dei registri collegati
suI bus siano a tre stati. In un dato momenta deve essere asserito un solo segnale di abi-
litazione delle uscite, in modo che il bus venga porlato allo stato logico del corrispondente
registro. I segnali di abilitazione degli ingressi detenninano quali registri di destinazione
vengono car"icati sui prossimo (fronte del) clock.'
,
-. __
..
jl
ill,
"
""I
..
.,

J
i
..
'>j;
..
"
.!,I

,';";
'"
':1
"'1
"
.;,
,..
'Ii..
'1' '2 '
..

.;::-1



",'1.



"
'"
.;:. :
"I' 0>
;'
},
,


,
:i
t

;', :


... '
'"
, ,

"
,';:,.,
"
,:1'
..
..
(.
'.,
..
...'
'. "'
..
,
',11'
..
,"I'
.' "
";1"

.
,
.,
ii' --
,
Clock 61 T +62
---.J I I L
'r T
Cloak 61 I A2
OUT
IN
Rout
CIOO'---1: REG;TRO I
Rin
INi
Rin
'-.- '-.
>ck
,
x

Rout
OUTi
c,
Una larga parte delle attivita che si svolgono alPinterno di un calcolatore consiste nel
trasferimento dell1informazione tra registri.
Per trasferire informazione da un registro all'altro occorre che l'uscita del regi
stro sorgente venga portata all'ingresso del registro di destinazione, Se si hanno m
possibili registri sorgente e n possibili registri di destinazione
1
DecorTe una rete di
interconnessione che selettivamente coUeghi le sorgenti con Ie destinazioni. In linea di
principio si dovrebbero aver.e m x n percorsi e una logica di selezione che permetta di
Si assume che il regist!o commuti suI fronte di discesa del clockI doe alIa fine
del periodo, Prima del fronte del clock gli ingressi SR/JK devono essere stabili
almeno per il cosiddetto set-up time e devono restare stabili dopa i1 ronte per il
cosiddetto hold time (si veda la discussione in proposito in Appendice A),
Se Rin e disasserito, l'ingresso ai singoli flip-flop e 00 e, dunque
1
it registro si
mantiene nello stato precedente; se Rin easserito 10 stato di ogni flip-flop (it
contenuto del registro) diventa quello corrispondente alPingresso INi.
n segnale Rout ha funzione di Output Enable de1l1uscita a tre stati
Nel seguito useremo 10 schema di Figura 1.7. Quando i segnali Rin e Rout non
vengono indicati si assume che essi siano sempre asseriti.
28 Capitola 1
,

30 Capitola 1
R-l
B A
HA
HA
..
)
FA
R-l 5
FA
R S
A
Ai Bi R.
1
Si Ri
0 0 0 0 0
0 0 1 1
0,
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1
0 0 1
1 1 1 1 1
S, =A, GJ B, GJ Ri - 1 =(A, GJ B,) GJ R;-I
La somma di.tre bit da. risultato 1 solo se edispari il numero di bit
a I, doe se e"1 POR esclusivo dei tre bit. In a.ltri termini:
R, = A,B, + (A, GJ B,)R;_I
180vviamente, la rete cbe reaiizza il semisommatore puo essere anche ottenuta. pa.rtendo dalla
tabella di veriU, di Sj e di Fjgural.ll.
11 tempo Impiegato dalla rete di Figura 1.10 per calcolare S = A + B dipeode
dalla lunghezza della parola e dalla particolare coppia di numeri sommati. Infatti 1a
generica cella FA produce un'uscita stabile solo dopo che ediventato stabile il riporto
in ingresso. Nel peggiore dei casi il riporto puo propagarsi dal bit meno significativo a
quello pin significativo. In Appendice A vengono svolte ulteriori considerazioni sulla
rete di somma. La parte che segue serve a dare it sensa d.i come si possa progettare
una unita. aritmetica e logica (ALU). Per rendere la cosa trattabile ci si riferisce alla
realizzazione di una rete in grado di effettuare somma e sottrazione di numeri interi
l
a partire dal sommatore gia. realizzato.
mento
18
.
R S
Figura };11 A sinistra la tabella di verita. per il sommatore completo. Al centro la scbe-
matizza.zione come blocco funzionale. A destra il somma-tore compJeto costruito con due
semisommatori.
Introduzione 31
II riporto vale 1 quando: (a) 1a somma di Ai e B
i
da. direttamente riporto; oppure
(b) quando vale 1 la somma di Ai e B
i
, con ripor.to in ingresso pu(e a I, Questa
descrizione a parole viene riformulata come:
Dalle precedenti relazioni
,
tenuto conto che Ie due uscite del semisomrnatore rap-
presentano l'AND e 10 XOR dei due ingressi, si ricava facilmente che il sommatore
completo puo essere costruito impiegando due semisommatori come in Figura 1.11.
..,

'J,:
..
0
..
"


.\
;';1
..
:{, '
..
l

..
,
... ,
,
.,



'1
..
,
,
..\ '.
.. "
,'J ..
'" i-
;
'".'

l
.
.0.(
"". -


, ""
....h
.

"ii,
, '.1'
','"
.-I'
',,':.,
'1
,
..
:r
,
,
,;<,
;CI
, " ,
::t,:
wi
"I
.,

.
,
;t -
ii
,
.,
:.r
:;; -
',,'

,
.Il '
>Ei
....
i_\_

11'"
;Ii
..
.:;1,,1'
.

..
:iJ -
'I ..
,
..j ,
. .. ,
;,l
,"
'-ij:
"
I':

..,
,
..
..
:
.

',..'
,-.
"
'0 BO
"
AI Sl
S3
A2 B?
S3
" B3
I I II
II
I I
FA FA FA FA
I

'>I "I
R3
Ai BI Ai Bi
, ,
Ai Bi Si Ri
0 0 0 0
0 1 1 0
9
9
I HA
1 0 1 0
1 1 1 1
FA
Rl
Figura 1.10 Schema di un sommatore di parole di n bit - detto sommatore eli ripple -
castruito impiegando la. cella. detta Sommatore completo (FA).
RI_AiBi Si_IlBI+Ail!l"i Ri Sl
Figuro 1.9 A sinistra viene riportata 130 tabellina aritmetica della somma e del riporto di
due bit. La tabella in questione pub essere interpretata. come 180 tabella di verita delle due
funzioni logiche S. e Ro. Ai centro data. la rete corrispondente, A destra viene data
una scbematizzazione della rete come blocco funzionale, Il blocco estato indicato come HA,
per Semi.tommatore,
Per la real.izzazione del completo si puo seguire il seguente ragiona-
Per esempio, si consideri la somma di due bit. In Figura 1.9, la tabella riportata
a. sinistra rappresenta, a un tempo, sia 130 tahellina aritmetica della sorruna S; e del
relativQ riporto R;, sia 130 tabella di verita delle due funzioni logiche Si(Ai,B
i
) e
R;(Ai,Bi) . Conseguentemente, se si costruisce la rete che ha come uscite Si e si
costruisce la rete che efl'ettua 130 somma aritmetica di due bit e ne calcola il riporto.
La rete in questione prende il nome d.i Semisommatore e viene indicata con HA (da
Half Adder).
Vogliamo ora costruire la rete che eff'ettua la somma di due numeri interi, rap-
presentati in, forma binaria attraverso Ie due parole di n bit A = [All_I .. , Aol e
B = [B
n
_
1
.. B
o
]. Si indichi con S = [Sn_1 ... So] il risultato della somma.
10 Figural.lO viene riportato un so'rnmatore d.i due numeri d.i n bit castruita
modellando il procedimento di somma con "carta e matita" , ovvero nel costruire una
rete che sommi a partire dai bit meno significativi procedendo verso sinistra e tenen-
do conte del riporto. La cella elementare del sommatore di Figura 1.10 viene detta
Sommatore completo e indicata con FA (da FUll Adder). A differenza del semisom-
matore, questa cella somma due bit e un eventuale riporto. La parola [Sn_l .. , S
1
8
0
]
costituisce la somma di [An-I." Al Aol can [B
n
_
1
... B1BoJ. Si noti me e necessario
porre R_
1
= O.
,
\
l
\
I
)
I
\
\
I
I
I
I
I
I
)

30 Capitola 1
R-l
B A
HA
HA
..
)
FA
R-l 5
FA
R S
A
Ai Bi R.
1
Si Ri
0 0 0 0 0
0 0 1 1
0,
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1
0 0 1
1 1 1 1 1
S, =A, GJ B, GJ Ri - 1 =(A, GJ B,) GJ R;-I
La somma di.tre bit da. risultato 1 solo se edispari il numero di bit
a I, doe se e"1 POR esclusivo dei tre bit. In a.ltri termini:
R, = A,B, + (A, GJ B,)R;_I
180vviamente, la rete cbe reaiizza il semisommatore puo essere anche ottenuta. pa.rtendo dalla
tabella di veriU, di Sj e di Fjgural.ll.
11 tempo Impiegato dalla rete di Figura 1.10 per calcolare S = A + B dipeode
dalla lunghezza della parola e dalla particolare coppia di numeri sommati. Infatti 1a
generica cella FA produce un'uscita stabile solo dopo che ediventato stabile il riporto
in ingresso. Nel peggiore dei casi il riporto puo propagarsi dal bit meno significativo a
quello pin significativo. In Appendice A vengono svolte ulteriori considerazioni sulla
rete di somma. La parte che segue serve a dare it sensa d.i come si possa progettare
una unita. aritmetica e logica (ALU). Per rendere la cosa trattabile ci si riferisce alla
realizzazione di una rete in grado di effettuare somma e sottrazione di numeri interi
l
a partire dal sommatore gia. realizzato.
mento
18
.
R S
Figura };11 A sinistra la tabella di verita. per il sommatore completo. Al centro la scbe-
matizza.zione come blocco funzionale. A destra il somma-tore compJeto costruito con due
semisommatori.
Introduzione 31
II riporto vale 1 quando: (a) 1a somma di Ai e B
i
da. direttamente riporto; oppure
(b) quando vale 1 la somma di Ai e B
i
, con ripor.to in ingresso pu(e a I, Questa
descrizione a parole viene riformulata come:
Dalle precedenti relazioni
,
tenuto conto che Ie due uscite del semisomrnatore rap-
presentano l'AND e 10 XOR dei due ingressi, si ricava facilmente che il sommatore
completo puo essere costruito impiegando due semisommatori come in Figura 1.11.
..,

'J,:
..
0
..
"


.\
;';1
..
:{, '
..
l

..
,
... ,
,
.,



'1
..
,
,
..\ '.
.. "
,'J ..
'" i-
;
'".'

l
.
.0.(
"". -


, ""
....h
.

"ii,
, '.1'
','"
.-I'
',,':.,
'1
,
..
:r
,
,
,;<,
;CI
, " ,
::t,:
wi
"I
.,

.
,
;t -
ii
,
.,
:.r
:;; -
',,'

,
.Il '
>Ei
....
i_\_

11'"
;Ii
..
.:;1,,1'
.

..
:iJ -
'I ..
,
..j ,
. .. ,
;,l
,"
'-ij:
"
I':

..,
,
..
..
:
.

',..'
,-.
"
'0 BO
"
AI Sl
S3
A2 B?
S3
" B3
I I II
II
I I
FA FA FA FA
I

'>I "I
R3
Ai BI Ai Bi
, ,
Ai Bi Si Ri
0 0 0 0
0 1 1 0
9
9
I HA
1 0 1 0
1 1 1 1
FA
Rl
Figura 1.10 Schema di un sommatore di parole di n bit - detto sommatore eli ripple -
castruito impiegando la. cella. detta Sommatore completo (FA).
RI_AiBi Si_IlBI+Ail!l"i Ri Sl
Figuro 1.9 A sinistra viene riportata 130 tabellina aritmetica della somma e del riporto di
due bit. La tabella in questione pub essere interpretata. come 180 tabella di verita delle due
funzioni logiche S. e Ro. Ai centro data. la rete corrispondente, A destra viene data
una scbematizzazione della rete come blocco funzionale, Il blocco estato indicato come HA,
per Semi.tommatore,
Per la real.izzazione del completo si puo seguire il seguente ragiona-
Per esempio, si consideri la somma di due bit. In Figura 1.9, la tabella riportata
a. sinistra rappresenta, a un tempo, sia 130 tahellina aritmetica della sorruna S; e del
relativQ riporto R;, sia 130 tabella di verita delle due funzioni logiche Si(Ai,B
i
) e
R;(Ai,Bi) . Conseguentemente, se si costruisce la rete che ha come uscite Si e si
costruisce la rete che efl'ettua 130 somma aritmetica di due bit e ne calcola il riporto.
La rete in questione prende il nome d.i Semisommatore e viene indicata con HA (da
Half Adder).
Vogliamo ora costruire la rete che eff'ettua la somma di due numeri interi, rap-
presentati in, forma binaria attraverso Ie due parole di n bit A = [All_I .. , Aol e
B = [B
n
_
1
.. B
o
]. Si indichi con S = [Sn_1 ... So] il risultato della somma.
10 Figural.lO viene riportato un so'rnmatore d.i due numeri d.i n bit castruita
modellando il procedimento di somma con "carta e matita" , ovvero nel costruire una
rete che sommi a partire dai bit meno significativi procedendo verso sinistra e tenen-
do conte del riporto. La cella elementare del sommatore di Figura 1.10 viene detta
Sommatore completo e indicata con FA (da FUll Adder). A differenza del semisom-
matore, questa cella somma due bit e un eventuale riporto. La parola [Sn_l .. , S
1
8
0
]
costituisce la somma di [An-I." Al Aol can [B
n
_
1
... B1BoJ. Si noti me e necessario
porre R_
1
= O.
,
\
l
\
I
)
I
\
\
I
I
I
I
I
I
)
I
\
\
1
,
\
)
1
)
Differenza
'""ommento ----,
,elezlOne
Incremento
,
Complementazione
Cambio segno
Somma
c, CO
ii_,
ttisultato
0 -0+ =B
0 0 1 S = 0.+ B + 1 = B + 1
0 1 0 S=O+B=B
, 0
1 1 S =O+B+l =-B
.. . ..
, 1
0 0 S=A+B
1 0 1 S=A+B+l
1 1 0 S=A+B=A-B-l
1 1 1 S=A+B+l=A-B
Tabella 1.8 Operazioni effettuate dalla rete.
Introduzione 33
,
dimensione di parola. Nel caso di parole di.8 bit 5i ba trabocco (overflow) se: (1) la
somma di due numeri positivi risulta maggiore di 127 (massimo numero rappresenta-
bile su 7 bit); (2) 1a somma di due nwneri negativi risulta ioferiore a -128. L'avvenuto
C trabocco si controlla verificando l"identita dei segni degli addendi e confrontandola con
il segno risultante della somma. A tale scopo bastano due porte AND a tre ingressi,
collegate come in Figura 1.12 a destra. In Tabella 1.8 vengono riportati i risu1tati
in corrispondenza di ogni combinazione di cICeR_I . In Figural.13, a sinistra viene
'data la schematizzazione della rete risultante. In questa schematizza-
zione vengono riportati i segnali di comando cosl come sono stati ottenutii Ia lora
cornbinazione determina i1 comportamento di ALU.
.e'I' " '
".,
,',."
':LI
;.
.
tit:
: :i"J
'l
. '"
, ''';i .-

11 '
..
:''',
,.
"
'.>."! ,.
'1'

,..
,
.';:'J,;
-,
..':;
. ,I'

, ',.'
.'

"'1
",'"
,,,'.
:;;t
.J"'
.. ,
", ..
32 Capitolo 1
A+B+l
sottrazione di B da A. Ma se si effettua la somma di due numeri relativi rappresentati
con parole di n bit possono capitare questi due risuitati straordinari:
si sommano due numeri positivi e it risultato e negativoj
si soromano due nwneri negativi e il risultato epositivo.
Partiarno cial sornmatore appena vista e mostriarno come sia possibile aggiungere della
logica in modo da fargli effettuare altre operazioni.
Si egia: visto (Cfr.l.2.4) come per la sottrazione basta rappresentare in forma
negativa il secondo termine e sommarlo al primo, Ovvero A - B = A + (-B), E
poiche nella rappresentazione binaria i numeri interi negativi vengono espressi in com-
plemento a 2, basta quel poco di logica che se,rve per complement are B e sommare 1.
8i ottiene cosl, per la sola sottrazione, 10 schema di principia a sinistra in Figura 1.12,
Ovviamente 10 schema esolo indicativo, in quanta esse effettua solo la differenza:
conviene prevedere, per Pingresso B, 1a possibilita di presentarlo al sommatore in
forma cornplementata 0 no. eic richiede un selettore e la relativa linea di comando,
Tale linea eindicata come Co nella schema a destra in Figura 1.12. La stesso schema
mostra che, attraverso Wl'ulteriore linea di comando, indicata con el, c'e Ia possibiIita.
di selezionare, come secondo ingresso, A oppure O.
Selezionando B (CO = 1) e posta R_
I
= 1, 1a rete etI'ettua I'operazione:
1.7.1 Esempio di costruzione di un'unitll aritmetica e logica
. .
E facile convincersi che questo accade quando iIrisultato dell'operazione supera
la capacita della paroIa, ovvero supera il massimo nurnero rappresentabile con queUa
Figura 1.12 La rete di sinistra. schematizza it modo in cui si effettua la sottrazione di B da
A usando un sommatore. Nella. rete di destra l'ingresso B pub essere in ingresso a.l sommatorc
in forma complementata 0 no a seconda di Co. L'altro ingresso, controllato tramite 180 linea
Cl, eA oppure O. Si DOti la logica per il controllo del trabocco.
R Sa-I" 50
I
1
)
)
I
J
I
,In riferimento alia Tabella vale 1a pena di che:
Per 1a combinazione clcoR-
I
' = 010 la rete esegue un.'operazione logica (la
complementazione di B).
Per tutte Ie aitre combinazioni la rete effettua operazioni aritmetiche.
Le combinazioni clcoR_
1
= 101 e clcoR-
1
= 110 producono risultati non
colarmente interessanti.
All' Appendice A si mestra come aggiungendo altre linee di controllo siano facilmente
aggi"ungibili Ie operazioni logiche AND e OR.
Per ragioni di convenienza, nel seguito useremo 1a schematizzazione di destra,
nella quale: 8i riporta una linea di comando per ogoi specmca operazione eseguita
dalla ALU: In riferimento aHa nostra ALU, nella schematizzaziooe di destra ci sareb-
bero sei Iinee di comaodo, corrispondenti alle sei operazioni significative di Tabella.
1.8. Questa convenzione edi pura convenienza e viene adottata perche consente una
miglior Iettura degli schemi, rna da un punta eli vista pratico, produce inutile compli-
cazioni. Infatti, tra l'ipotetica logica di comando (probabUmente un decodificatore)
e la ALU ci dovrebbero essere almenq tante !inee quanti sono i comandi
l
che poi an-
drebbero codificati nelle configurazionJ richieste dalla ALU (come quelle in colonna
sinistra della Tabella 1.8), E evidente che pili conveniente far generare dalla 10-
gica di comando i comandi codificati per la ALU, evitando inutili sprechi di logica e
riducendo il numere delle linee cbe collegano Ie due parti.
-


ii,

...

"

',.
jl.

'1'

. ;
.d
'I'
.,.
'd.
,
",,1
'i'
c,
00
Il Sn-l so
Bn-l
T
c.
{
y
tJ ..... (
rI An-I

't.y
- SOMMATORE
R-'
Y
" ..

..-,
'a-l
,-1 SOMMATORE

I
\
\
1
,
\
)
1
)
Differenza
'""ommento ----,
,elezlOne
Incremento
,
Complementazione
Cambio segno
Somma
c,
CO
ii_,
ttisultato
0
-0+ =B
0
0 1
S = 0.+ B + 1 = B + 1
0
1 0
S=O+B=B
, 0
1 1 S =O+B+l =-B
.. . ..
, 1
0 0 S=A+B
1 0 1 S=A+B+l
1 1 0
S=A+B=A-B-l
1 1 1 S=A+B+l=A-B
Tabella 1.8 Operazioni effettuate dalla rete.
Introduzione 33
,
dimensione di parola. Nel caso di parole di.8 bit 5i ba trabocco (overflow) se: (1) la
somma di due numeri positivi risulta maggiore di 127 (massimo numero rappresenta-
bile su 7 bit); (2) 1a somma di due nwneri negativi risulta ioferiore a -128. L'avvenuto
C trabocco si controlla verificando l"identita dei segni degli addendi e confrontandola con
il segno risultante della somma. A tale scopo bastano due porte AND a tre ingressi,
collegate come in Figura 1.12 a destra. In Tabella 1.8 vengono riportati i risu1tati
in corrispondenza di ogni combinazione di cICeR_I . In Figural.13, a sinistra viene
'data la schematizzazione della rete risultante. In questa schematizza-
zione vengono riportati i segnali di comando cosl come sono stati ottenutii Ia lora
cornbinazione determina i1 comportamento di ALU.
.e'I' " '
".,
,',."
':LI
;.
.
tit:
: :i"J
'l
. '"
, ''';i .-

11 '
..
:''',
,.
"
'.>."! ,.
'1'

,..
,
.';:'J,;
-,
..':;
. ,I'

, ',.'
.'

"'1
",'"
,,,'.
:;;t
.J"'
.. ,
", ..
32 Capitolo 1
A+B+l
sottrazione di B da A. Ma se si effettua la somma di due numeri relativi rappresentati
con parole di n bit possono capitare questi due risuitati straordinari:
si sommano due numeri positivi e it risultato e negativoj
si soromano due nwneri negativi e il risultato epositivo.
Partiarno cial sornmatore appena vista e mostriarno come sia possibile aggiungere della
logica in modo da fargli effettuare altre operazioni.
Si egia: visto (Cfr.l.2.4) come per la sottrazione basta rappresentare in forma
negativa il secondo termine e sommarlo al primo, Ovvero A - B = A + (-B), E
poiche nella rappresentazione binaria i numeri interi negativi vengono espressi in com-
plemento a 2, basta quel poco di logica che se,rve per complement are B e sommare 1.
8i ottiene cosl, per la sola sottrazione, 10 schema di principia a sinistra in Figura 1.12,
Ovviamente 10 schema esolo indicativo, in quanta esse effettua solo la differenza:
conviene prevedere, per Pingresso B, 1a possibilita di presentarlo al sommatore in
forma cornplementata 0 no. eic richiede un selettore e la relativa linea di comando,
Tale linea eindicata come Co nella schema a destra in Figura 1.12. La stesso schema
mostra che, attraverso Wl'ulteriore linea di comando, indicata con el, c'e Ia possibiIita.
di selezionare, come secondo ingresso, A oppure O.
Selezionando B (CO = 1) e posta R_
I
= 1, 1a rete etI'ettua I'operazione:
1.7.1 Esempio di costruzione di un'unitll aritmetica e logica
. .
E facile convincersi che questo accade quando iIrisultato dell'operazione supera
la capacita della paroIa, ovvero supera il massimo nurnero rappresentabile con queUa
Figura 1.12 La rete di sinistra. schematizza it modo in cui si effettua la sottrazione di B da
A usando un sommatore. Nella. rete di destra l'ingresso B pub essere in ingresso a.l sommatorc
in forma complementata 0 no a seconda di Co. L'altro ingresso, controllato tramite 180 linea
Cl, eA oppure O. Si DOti la logica per il controllo del trabocco.
R Sa-I" 50
I
1
)
)
I
J
I
,In riferimento alia Tabella vale 1a pena di che:
Per 1a combinazione clcoR-
I
' = 010 la rete esegue un.'operazione logica (la
complementazione di B).
Per tutte Ie aitre combinazioni la rete effettua operazioni aritmetiche.
Le combinazioni clcoR_
1
= 101 e clcoR-
1
= 110 producono risultati non
colarmente interessanti.
All' Appendice A si mestra come aggiungendo altre linee di controllo siano facilmente
aggi"ungibili Ie operazioni logiche AND e OR.
Per ragioni di convenienza, nel seguito useremo 1a schematizzazione di destra,
nella quale: 8i riporta una linea di comando per ogoi specmca operazione eseguita
dalla ALU: In riferimento aHa nostra ALU, nella schematizzaziooe di destra ci sareb-
bero sei Iinee di comaodo, corrispondenti alle sei operazioni significative di Tabella.
1.8. Questa convenzione edi pura convenienza e viene adottata perche consente una
miglior Iettura degli schemi, rna da un punta eli vista pratico, produce inutile compli-
cazioni. Infatti, tra l'ipotetica logica di comando (probabUmente un decodificatore)
e la ALU ci dovrebbero essere almenq tante !inee quanti sono i comandi
l
che poi an-
drebbero codificati nelle configurazionJ richieste dalla ALU (come quelle in colonna
sinistra della Tabella 1.8), E evidente che pili conveniente far generare dalla 10-
gica di comando i comandi codificati per la ALU, evitando inutili sprechi di logica e
riducendo il numere delle linee cbe collegano Ie due parti.
-


ii,

...

"

',.
jl.

'1'

. ;
.d
'I'
.,.
'd.
,
",,1
'i'
c,
00
Il Sn-l so
Bn-l
T
c.
{
y
tJ ..... (
rI An-I

't.y
- SOMMATORE
R-'
Y
" ..

..-,
'a-l
,-1 SOMMATORE

,.. ".<"
:>;l
tzl
(} d" , ..<;.
- 1.,,;-:,"1
f>
o .: .
; '. .. ...
Clock Clock
I..',,", ' ,.
"" "'" C"'t---
RETE
. \ COMBINATOR1A
. 1. ::0
" :.,'. '..
, . . 0
'. . ,.
,
E stato gia. osservato che nella progettazione di un sistema digitate complesso e
spesso necessaria dividere la logica complessiva in un certo nUIDero di stadi operanti in
cascata, facendo in modo che una data funzionalita - trasformazione dell'informazione
- venga eseguita in piu deli di clock.
Tenuto conto di quanto e stato detto suI funzionamento delle reti sincrone e
sull'impiego dei registri all'interno di un sistema digitate, si puo immaginare che cias-
cun stadio sia strutturato come in Figura 1.15. Q.uesta schematizzazione indica che
la logica di uno stadia elabora l'uscita dello stato precedente e produce l'ingresso per
il successivo. Dall'inizio di un periodo di clock la logica di uno stadio elabora i nuovi
segnali di ingresso e produce un'uscita che viene congelata suI registro di uscita, che
formera l'ingresso per 10 stadio in cascata suI prossimo periodo di clock.
L'informazione della prima categoria (designa.ta semplicemente come "inferma-
zione") ha la forma di un vettore di bit (usualmente organizzati in byte e/o parole),
Le linee di cantrolla hanno la funzione di camandare il sistema alla svolgimento delle
operazioni aUe quali esso edeputato. La precedente suddivisione ealquanto arbitra-
ria, in quanto, a seconda del contesto, uno stesso segnale puo essere riguardato come
segnale di centrollo 0 come segnale di informazione. Per esempio, queUe che per un
dato sistema corrispondono a informazioni elaborate prodotte in uscita, potrebbero
costituire linee di contrallo in ingresso a un altro sistema. In certi casi i segnali di
controllo sono solo ricevuti dal sistema, in altri sana prodotti al fine di comandare
altri apparati.
I calcolatori numerici formana certamente 1a piu importante classe di sistemi di
gitali [Bar91}, [Won85]. Un calcolatore si compone di una unita di elaborazione, in
cui, come sara illustrato in seguito, si individua una parte di controllo e una parte
operativa. La parte di controllo decodifica i comandi che provengono in forma codi-
flcata daBa memoria e comanda l'esecuzione delle operaziani della parte operativa.
Figura 1.14 pub essere preso come schema di principio dell'unita di elaborazione: le
linee di controllo in ingresso rappresentano Ie istruzioni, quelle in uscita i comandi a
parti esterne come 1a memoria.
1.8.1 Un modello di rete a stadi
Figura 1.15 Modello di rete di elil;borazione. Si suppone che i registri abbiano.gli ingressi
e Ie uscite sempre abilitate. La rete combinatoria cleve elaborare i segnali in ingresso e
presentarli a1 registro in uscita in modo che vengano memorizzati prossimo Eronte (di
commutazione) del clock.

Introduzione 35
..
..

.,
1
J
"I
','"..

.,
J
.."
"
,
:'"
,

"I'
",
..
,
'!'
.,:: '
..
;
!
t
j,
"

,

]
"I'
,
,
"
..,
"
i
I
I
,j
"
",\
....
l
"
A B
I
I
Coml
'I
ALU
f
Com2
I

CoroN
Linee di
I .. conlrollo
/
DATIN I' ,
SISTEMA" :>
DIGITALE
Linee di
controllo .. I
l'informazione di controllo.
Figura 1.14 Sistema digitale e tipi di informazione.
A conclusione di questa sezione conviene riassumere alcuni risultati che abbiamo
ottenuto. Siamo partiti da una rete combinatoria per la somma di due numeri in
forma binaria. Con l'aggiunta d.i poca logica abbiamo ottenuto una rete che svolge
anche l'operazione di sottrazione, fornisce indicazione sulla correttezza del risultato e
infine, esegue un'operazione logica. Ovviamente, se si intende costruire una effettiva
ALD, bisognera tener canto che si incontreranno difficolta. non facili da superare.
Anzitutto non e detto che si riesca a fare un' ALU combinatoria. Se l'operazione e
complessa, si possono richiedere sequenze di operazioni realizzabili solo attraverso
reti sequenzia.li. E il caso tipico delle operazioni in virgala mobile e della relativa
unita deputata alia loro esecuzione, denominata FPU (Floating Point Unit). Le unita
aritmetiche costituiscono da sole un ampio campo di studio e su di esse esiste una
vasta letteratura, 9i veda ad per esempio [Omo94]. L'interesse di questa libro erivolto
alla realizzazione della logica di controllo dei calcolato.rL"
l'informazione che viene elaborata e trasmessa (DATIN e DATOUT in figural;
, ,,
In Figura 1.14 viene presentato un modelIo del tutto generale di sistema. digitale. Nello
schema, l'informazione che entra e esce dal sistema estata divisa in due categorie:
1.8 Sistemi digitali
o
Figura 1.13 A sinistra. viene riportatala schematizzazione della rete risultante: sebbene 1a
rete svolga poche semplici operazioni aritmetiche e solo l'operazione logica di
tazione, almena concettualmente essa rappresenta unlUnita. Aritmetica e Logiea. A destra
viene data. la schematizzazione di una generica ALU: earnl, Com2, .. ,ComN sono Ie generiche
!inee clie selezionano l'operazione svolta.
1
\
I
\
)
\
I
\
\
';
I
1
I
)
34 Capitola 1
B A
)
h
, , , ,
R-.
R..-A
ALU
I:
Co
I
c,
T Y.
T
S
,.. ".<"
:>;l
tzl
(} d" , ..<;.
- 1.,,;-:,"1
f>
o .: .
; '. .. ...
Clock Clock
I..',,", ' ,.
"" "'" C"'t---
RETE
. \ COMBINATOR1A
. 1. ::0
" :.,'. '..
, . . 0
'. . ,.
,
E stato gia. osservato che nella progettazione di un sistema digitate complesso e
spesso necessaria dividere la logica complessiva in un certo nUIDero di stadi operanti in
cascata, facendo in modo che una data funzionalita - trasformazione dell'informazione
- venga eseguita in piu deli di clock.
Tenuto conto di quanto e stato detto suI funzionamento delle reti sincrone e
sull'impiego dei registri all'interno di un sistema digitate, si puo immaginare che cias-
cun stadio sia strutturato come in Figura 1.15. Q.uesta schematizzazione indica che
la logica di uno stadia elabora l'uscita dello stato precedente e produce l'ingresso per
il successivo. Dall'inizio di un periodo di clock la logica di uno stadio elabora i nuovi
segnali di ingresso e produce un'uscita che viene congelata suI registro di uscita, che
formera l'ingresso per 10 stadio in cascata suI prossimo periodo di clock.
L'informazione della prima categoria (designa.ta semplicemente come "inferma-
zione") ha la forma di un vettore di bit (usualmente organizzati in byte e/o parole),
Le linee di cantrolla hanno la funzione di camandare il sistema alla svolgimento delle
operazioni aUe quali esso edeputato. La precedente suddivisione ealquanto arbitra-
ria, in quanto, a seconda del contesto, uno stesso segnale puo essere riguardato come
segnale di centrollo 0 come segnale di informazione. Per esempio, queUe che per un
dato sistema corrispondono a informazioni elaborate prodotte in uscita, potrebbero
costituire linee di contrallo in ingresso a un altro sistema. In certi casi i segnali di
controllo sono solo ricevuti dal sistema, in altri sana prodotti al fine di comandare
altri apparati.
I calcolatori numerici formana certamente 1a piu importante classe di sistemi di
gitali [Bar91}, [Won85]. Un calcolatore si compone di una unita di elaborazione, in
cui, come sara illustrato in seguito, si individua una parte di controllo e una parte
operativa. La parte di controllo decodifica i comandi che provengono in forma codi-
flcata daBa memoria e comanda l'esecuzione delle operaziani della parte operativa.
Figura 1.14 pub essere preso come schema di principio dell'unita di elaborazione: le
linee di controllo in ingresso rappresentano Ie istruzioni, quelle in uscita i comandi a
parti esterne come 1a memoria.
1.8.1 Un modello di rete a stadi
Figura 1.15 Modello di rete di elil;borazione. Si suppone che i registri abbiano.gli ingressi
e Ie uscite sempre abilitate. La rete combinatoria cleve elaborare i segnali in ingresso e
presentarli a1 registro in uscita in modo che vengano memorizzati prossimo Eronte (di
commutazione) del clock.

Introduzione 35
..
..

.,
1
J
"I
','"..

.,
J
.."
"
,
:'"
,

"I'
",
..
,
'!'
.,:: '
..
;
!
t
j,
"

,

]
"I'
,
,
"
..,
"
i
I
I
,j
"
",\
....
l
"
A B
I
I
Coml
'I
ALU
f
Com2
I

CoroN
Linee di
I .. conlrollo
/
DATIN I' ,
SISTEMA" :>
DIGITALE
Linee di
controllo .. I
l'informazione di controllo.
Figura 1.14 Sistema digitale e tipi di informazione.
A conclusione di questa sezione conviene riassumere alcuni risultati che abbiamo
ottenuto. Siamo partiti da una rete combinatoria per la somma di due numeri in
forma binaria. Con l'aggiunta d.i poca logica abbiamo ottenuto una rete che svolge
anche l'operazione di sottrazione, fornisce indicazione sulla correttezza del risultato e
infine, esegue un'operazione logica. Ovviamente, se si intende costruire una effettiva
ALD, bisognera tener canto che si incontreranno difficolta. non facili da superare.
Anzitutto non e detto che si riesca a fare un' ALU combinatoria. Se l'operazione e
complessa, si possono richiedere sequenze di operazioni realizzabili solo attraverso
reti sequenzia.li. E il caso tipico delle operazioni in virgala mobile e della relativa
unita deputata alia loro esecuzione, denominata FPU (Floating Point Unit). Le unita
aritmetiche costituiscono da sole un ampio campo di studio e su di esse esiste una
vasta letteratura, 9i veda ad per esempio [Omo94]. L'interesse di questa libro erivolto
alla realizzazione della logica di controllo dei calcolato.rL"
l'informazione che viene elaborata e trasmessa (DATIN e DATOUT in figural;
, ,,
In Figura 1.14 viene presentato un modelIo del tutto generale di sistema. digitale. Nello
schema, l'informazione che entra e esce dal sistema estata divisa in due categorie:
1.8 Sistemi digitali
o
Figura 1.13 A sinistra. viene riportatala schematizzazione della rete risultante: sebbene 1a
rete svolga poche semplici operazioni aritmetiche e solo l'operazione logica di
tazione, almena concettualmente essa rappresenta unlUnita. Aritmetica e Logiea. A destra
viene data. la schematizzazione di una generica ALU: earnl, Com2, .. ,ComN sono Ie generiche
!inee clie selezionano l'operazione svolta.
1
\
I
\
)
\
I
\
\
';
I
1
I
)
34 Capitola 1
B A
)
h
, , , ,
R-.
R..-A
ALU
I:
Co
I
c,
T Y.
T
S
1
,
36 Capitolo 1
1.8.2 Alcuni blocchi componenti i sistemi digitali
)
\
J
I
I
\
I
J
\
I
\
>
j
\
1
J
\
l
I
37

Introduzione
D.lI -
Indlrl:n:\ =>-< \M.lna.o X/---
READ \ /
Dati
WEllORIA
lndirizzi
-+-
:: I
La precedente discussione ci fornisee l'occasione per parlare di un'altra convenzione
molto diffusa nel disegno dei sistemi digitali, con particolare riferimento ai segnali di
controllo.
I circuiti logici usano due livelli di tensione. Si parla eli Iivelio Alto e Basso (AlB),
ovvero High e Low (H/L). Facendo, per esempio, riferimento alla logica TIL i livelli
di tensione sono tipicamente 3,4 V (Alto) e 0,3 V (Basso).
Poiche epossibile associare a1 simbolo 1 sia 10 stato H sia 10 stato L, ne deriva
che sono possibili due convenzioni, dette rispettivarnente logicQ positivQ (quando si
associa 1 a H) e logica negativQ (quando si associa 0 a H). La Tabella 1.9) dove viene
presentata una relazione di ingressofuscita, mostra che 10 stesso circuito pub essere
considerate come porta AND 0 come porta OR a seconda dell'associazione. Sebbene
sia possibile ragionare contemporaneamente in termini di logica positiva e negativa (si
parla di logica mista) I conviene fare ricorso a un'unica convenzione. Nel seguito, salvo
esplicita indicazione contraria, assumeremo di ragionare sempre in logica positiva. Si
tratta della convenzione normalmente utiliz-zata nei eataloghi dei eomponenti .
1.9 Questioni di notazione
1.9.1 Notazione per i segnali
FigUra 1.17 Schema funzionale della memoria ed esetp.ptifica.zione dell'operazione di lettu-
ra. La parte tratteggiata del diagramma temporale dei.Dati delinea una caratteristica usuale
della memoria: la latenza tra il momento in cui gli indirizzi si stabilizzano e la d.i.sponibiliU.
dei dati all'esterno. II cicio di scrittura edel tutto analogo. Esso richiede che venga asserita
la linea di comando WRITE e venga presentato il dato a.lla memoria.
Memoria di lettura e scrittura La memoria di lettura e scrittura euna parte es-
senziale d,i qualunque sistema di elaborazione. La memoria di letturafscrittura
viene normalmente denotata con il termine improprio di RAM, da Random Ac-
cess Memory - memoria ad accesso casuale. La.- memoria viene esaminata pili
in dettaglio nei prossimi capitoli, per it momenta ci bastano i rudimenti del suo
funzionamento
l
iUustrati in Figura 1.17. ,
Quando nel seguito si parla della memoria si assume che gli indirizzi siano ri-
feriti ai byte, essendo questa la prassi ormai comunemente adottata da tutti i
costruttori.
\
-,
-,
..
,{'
..
,
t
J.:
,.

:1'
,

,:

j
J
!
!
!
,
E
t
,
f
r
f
,
'f'
,: ;
!
,

l
'l
.t
;
j
,
"
"
,.
,
,
,

o-J'
o!
i
]
:'1


!
,I
,
'. ': :i
.,
'r
!
" "

!
,
[

f
r
'f
.;'
"

r
i
..

f
,l
.,

,
'--

;el
Q
Figura 1.16 La figura illustra i simboli usati per il Buffer/Driver, il selettore e il
decodificatore.
I b10cchi funzionali descritti qui di seguito sono, assieme a registri, bus e ALU gia.
visti in precedenza, i componenti dei sistemi digitali complessi come i calcolatori.
Buffer Con questo nome (0 can queUo di driver) intenderemo, anche se impropria-
mente, un dispositivo che non ha alcuna funzione logica, se non quella present are
l'uscita in terzo stato (Fig 1.16).
Selettori Un se1ettore 0 Multiplexer eun dispositivo che permette di selezionare uno
degli n ingressi e presentarlo in uscita. La selezione si effettua attraverso linee
di comando. Con n linee di ingresso il selettore richiede un numero di linee di
comando pari all'intero uguale 0 superiore a In(n). Talvolta i selettori hanno
l'uscita in terzo state (e il relativo ingresso di abilitazione). "'
Decodificatori Un decodificatore (1 su m) a.ceetta in ingresso un eodiee di n bit e
presenta in uscita m = 2
n
linee, sulle quali asserisce solo queUa che eorrisponde
alla eodifiea in ingresso. Numerando Ie linee di uscita da 0 a 2n
n
- 1, viene
asserita quella che corrisponde al numero presente in ingresso.
Codificatori Un codificatore fornisce in uscita una rappresentazione codificata dei
suoi ingressi. n funzionamento di un codificatore richiederebbe che 5010 uno
dei 2fl. ingressi fosse asserito. Poiche non sempre egarantito che ci sia un solo
ingresso asserito
1
si usano codificatori di priorita, nel senso che in presenza di
pili di una linea di ingresso asserita, il codificatore presenta in uscita la codifica
eorrispondente all>ingresso di maggior priorita. t'ra quelli asseriti.
Memorie ROM Una memoria ROM (Read Only Memory), 0 di sola lettura, eun
dispositivo che ha n ingressi e m uscite, e ehe eontiene 2
n
celle di m bit eiaseuna.
n numero binario corrispondente ana combinazione degli n ingressi el'indirizzo
della cella ehe viene letta e il cui contenuto viene presentato sulle uscite. Una
ROM ein grado eli realizzare qualunque rete combinatoria di n ingressi e m
uscite. Di solito, le ROM vengono impiegate in sostituzione delle porte quando
130 rete emolto complessa.
n modelio di Figura 1.15 emolto conveniente per strutturare in modo ordinato
la logica della CPU e di esso si fara largo uso nel seguito anche se in modo non
esplicitamente dichiarato.
1
,
36 Capitolo 1
1.8.2 Alcuni blocchi componenti i sistemi digitali
)
\
J
I
I
\
I
J
\
I
\
>
j
\
1
J
\
l
I
37

Introduzione
D.lI -
Indlrl:n:\ =>-< \M.lna.o X/---
READ \ /
Dati
WEllORIA
lndirizzi
-+-
:: I
La precedente discussione ci fornisee l'occasione per parlare di un'altra convenzione
molto diffusa nel disegno dei sistemi digitali, con particolare riferimento ai segnali di
controllo.
I circuiti logici usano due livelli di tensione. Si parla eli Iivelio Alto e Basso (AlB),
ovvero High e Low (H/L). Facendo, per esempio, riferimento alla logica TIL i livelli
di tensione sono tipicamente 3,4 V (Alto) e 0,3 V (Basso).
Poiche epossibile associare a1 simbolo 1 sia 10 stato H sia 10 stato L, ne deriva
che sono possibili due convenzioni, dette rispettivarnente logicQ positivQ (quando si
associa 1 a H) e logica negativQ (quando si associa 0 a H). La Tabella 1.9) dove viene
presentata una relazione di ingressofuscita, mostra che 10 stesso circuito pub essere
considerate come porta AND 0 come porta OR a seconda dell'associazione. Sebbene
sia possibile ragionare contemporaneamente in termini di logica positiva e negativa (si
parla di logica mista) I conviene fare ricorso a un'unica convenzione. Nel seguito, salvo
esplicita indicazione contraria, assumeremo di ragionare sempre in logica positiva. Si
tratta della convenzione normalmente utiliz-zata nei eataloghi dei eomponenti .
1.9 Questioni di notazione
1.9.1 Notazione per i segnali
FigUra 1.17 Schema funzionale della memoria ed esetp.ptifica.zione dell'operazione di lettu-
ra. La parte tratteggiata del diagramma temporale dei.Dati delinea una caratteristica usuale
della memoria: la latenza tra il momento in cui gli indirizzi si stabilizzano e la d.i.sponibiliU.
dei dati all'esterno. II cicio di scrittura edel tutto analogo. Esso richiede che venga asserita
la linea di comando WRITE e venga presentato il dato a.lla memoria.
Memoria di lettura e scrittura La memoria di lettura e scrittura euna parte es-
senziale d,i qualunque sistema di elaborazione. La memoria di letturafscrittura
viene normalmente denotata con il termine improprio di RAM, da Random Ac-
cess Memory - memoria ad accesso casuale. La.- memoria viene esaminata pili
in dettaglio nei prossimi capitoli, per it momenta ci bastano i rudimenti del suo
funzionamento
l
iUustrati in Figura 1.17. ,
Quando nel seguito si parla della memoria si assume che gli indirizzi siano ri-
feriti ai byte, essendo questa la prassi ormai comunemente adottata da tutti i
costruttori.
\
-,
-,
..
,{'
..
,
t
J.:
,.

:1'
,

,:

j
J
!
!
!
,
E
t
,
f
r
f
,
'f'
,: ;
!
,

l
'l
.t
;
j
,
"
"
,.
,
,
,

o-J'
o!
i
]
:'1


!
,I
,
'. ': :i
.,
'r
!
" "

!
,
[

f
r
'f
.;'
"

r
i
..

f
,l
.,

,
'--

;el
Q
Figura 1.16 La figura illustra i simboli usati per il Buffer/Driver, il selettore e il
decodificatore.
I b10cchi funzionali descritti qui di seguito sono, assieme a registri, bus e ALU gia.
visti in precedenza, i componenti dei sistemi digitali complessi come i calcolatori.
Buffer Con questo nome (0 can queUo di driver) intenderemo, anche se impropria-
mente, un dispositivo che non ha alcuna funzione logica, se non quella present are
l'uscita in terzo stato (Fig 1.16).
Selettori Un se1ettore 0 Multiplexer eun dispositivo che permette di selezionare uno
degli n ingressi e presentarlo in uscita. La selezione si effettua attraverso linee
di comando. Con n linee di ingresso il selettore richiede un numero di linee di
comando pari all'intero uguale 0 superiore a In(n). Talvolta i selettori hanno
l'uscita in terzo state (e il relativo ingresso di abilitazione). "'
Decodificatori Un decodificatore (1 su m) a.ceetta in ingresso un eodiee di n bit e
presenta in uscita m = 2
n
linee, sulle quali asserisce solo queUa che eorrisponde
alla eodifiea in ingresso. Numerando Ie linee di uscita da 0 a 2n
n
- 1, viene
asserita quella che corrisponde al numero presente in ingresso.
Codificatori Un codificatore fornisce in uscita una rappresentazione codificata dei
suoi ingressi. n funzionamento di un codificatore richiederebbe che 5010 uno
dei 2fl. ingressi fosse asserito. Poiche non sempre egarantito che ci sia un solo
ingresso asserito
1
si usano codificatori di priorita, nel senso che in presenza di
pili di una linea di ingresso asserita, il codificatore presenta in uscita la codifica
eorrispondente all>ingresso di maggior priorita. t'ra quelli asseriti.
Memorie ROM Una memoria ROM (Read Only Memory), 0 di sola lettura, eun
dispositivo che ha n ingressi e m uscite, e ehe eontiene 2
n
celle di m bit eiaseuna.
n numero binario corrispondente ana combinazione degli n ingressi el'indirizzo
della cella ehe viene letta e il cui contenuto viene presentato sulle uscite. Una
ROM ein grado eli realizzare qualunque rete combinatoria di n ingressi e m
uscite. Di solito, le ROM vengono impiegate in sostituzione delle porte quando
130 rete emolto complessa.
n modelio di Figura 1.15 emolto conveniente per strutturare in modo ordinato
la logica della CPU e di esso si fara largo uso nel seguito anche se in modo non
esplicitamente dichiarato.
)
38 Capitola 1
Introduzione 39
-)
I
1
\
\
\
\
Ingr. A Ingr. B Uscita U
L L L
L H L
H L L
H H H
Tabella 1.9 Rela.zioni di ingresso/uscita. tra i livelli di tensione dei segnali di un generico
circuito digita.le. 8i Dati me sostituendo H con 1 e L con 0 (convenzione di logica positiva)
S1 ottiene 13 tabella. d.i verita della. porta AND, mentre con la sostituzione complementare 5i,
ottiene 13 tabella di verita. deUa porta OR.
8i consideri un segnale come, per esempio, queUo che abilita f'uscita di una porta'
,
in logica tre sta.ti 0 il segnale di caricamento asincrono di un flip-flop. E possibile
cbe il segnale svolga 13 sua funzione nello stato H, come pure nello stato L. Nel primo
caso 5i dice cbe Usegnale eattivo alto, nel secondo si dice cbe eattivo -basso. Una
dizione di questa genere evita ogni possibile equivQco legato al tipo di 10gie3. Nel
tracciaxe gli schemi delle reti si usa 180 canvenzione di marcare come negati i segnali
che SODa attivi bassi. Ovvero di marcarli con il pallino di negazione. A volte, alcuni
segnali di controlla panno differente significato nel caso che siano in state H e L. In
questa caso si la cODvenzione di marcare il segnale con un sizp.bolo composto
dalla combinazione di due nomignoli che richiamino la funzione svolta, marcando
come negato il nornignolo corrispondente alia. funzione in stato di basso. A tale scopo
si {accia riferimento alla Figura 1.18.
.'.
....
i
I
,
..
LID Esercizi
. .
Esercizio 1.1 Ci si colleghi al sito Intel (http:/ lwww.intel.com) e si raggiunga 1a
pagina che il produttore ha dedicato alIa storia dei suoi microprocessori, si confrontino
i dati ivi contenuti con quelli riportati alPinizio del capitoloj si esamini l'incremen-
to delle prestazioni e come col passare degLi anni, questi incrementi hanno richiesto
l'adozione di unita. di misura differenti. Si ripeta 10 stesso esercizio per i micropro-
cessori Motorola, partendo dal sito http://w'WVI . motorola. com e si esamini 10 stato
della famiglia 68000.
Esercizio 1.2 Si convertano in notazione decimale it nUffiero esadecimale 1ABO e il
nurnero ottale 76022. Si convertano i seguenti numeri decimali in notazione esadeci-
male e ottale: 35, 1024, 531.
Esercizio 1.3 Si efl"ettui la differenza tra il numero decimale AOE3 e il oumero ottale
6755. La differenza va effettuata 0 in notazione esadecimale 0 in notazione ottale. Si
riporti il risultato a notazione e si verifichi che ecorretto.
Esercizio 1.4 Si converta il numero decimale 0,7155 in binario.
Esercizio 1.5 Si trasforrni il nUffiero 14,3 in formato IEEE, singola precisione.
Esercizio 1.6 Data una stringa eli caratteri ASCII, per esempio 2836, si definisca un
algoritmo per calcolare il corrispondente binario. La stringa erappresentata da byte
dislocati in posizioni successive di memoria.
Esercizio 1.7 n contenuto di due parole di memoria di 16 bit consecutive in forma
esadecimale e2AIB e 15FF, a quale stringa. di caratteri corrispondono?
,
"
Figura 1.18 Convenzioni per 180 marcatura dei segnali. Il segn80le marcato OE ha la fun-
zione di Output Enable quando e in stato L; il segnale 10/M ha significato 10' (presu-
mibilmente Input/Output) in stato H e significato M (presumibilmente Memoria) in stato
L.
Vale 180 pena richiamare l'attenzione suI fatto che Questo genere di notazione viene
spesso usato in modo non congruente nei manuali dei produttori di integrati. nmiglior
modo per evitare errori nell'interpretare lo schema resta queUo di Ieggere 180 descri-
zione a parole del funzionamento del dispositivo ed esaminare i relativi diagrammi
temporaJi.
I
I
I
I
\
,
)
\
'"
lo/R u
-v
"
!
,
-I
"
..
.\
!
J
!
"
\
..

,
I
Esercizio 1.8 Si dimostri che l'operatore XOR (OR esclusivo) - vero se e solo se e
vero uno solo dei due termini - gode della proprieta. associativa.
Esercizio 1.9 Si prenda un manuale di dispositivi integrati e si esaminino i differenti
tipi di flip-flop, approfondendo i differenti modi di operare, i vincoli sui segnali e sul
clock.
,
,
)
38 Capitola 1
Introduzione 39
-)
I
1
\
\
\
\
Ingr. A Ingr. B Uscita U
L L L
L H L
H L L
H H H
Tabella 1.9 Rela.zioni di ingresso/uscita. tra i livelli di tensione dei segnali di un generico
circuito digita.le. 8i Dati me sostituendo H con 1 e L con 0 (convenzione di logica positiva)
S1 ottiene 13 tabella. d.i verita della. porta AND, mentre con la sostituzione complementare 5i,
ottiene 13 tabella di verita. deUa porta OR.
8i consideri un segnale come, per esempio, queUo che abilita f'uscita di una porta'
,
in logica tre sta.ti 0 il segnale di caricamento asincrono di un flip-flop. E possibile
cbe il segnale svolga 13 sua funzione nello stato H, come pure nello stato L. Nel primo
caso 5i dice cbe Usegnale eattivo alto, nel secondo si dice cbe eattivo -basso. Una
dizione di questa genere evita ogni possibile equivQco legato al tipo di 10gie3. Nel
tracciaxe gli schemi delle reti si usa 180 canvenzione di marcare come negati i segnali
che SODa attivi bassi. Ovvero di marcarli con il pallino di negazione. A volte, alcuni
segnali di controlla panno differente significato nel caso che siano in state H e L. In
questa caso si la cODvenzione di marcare il segnale con un sizp.bolo composto
dalla combinazione di due nomignoli che richiamino la funzione svolta, marcando
come negato il nornignolo corrispondente alia. funzione in stato di basso. A tale scopo
si {accia riferimento alla Figura 1.18.
.'.
....
i
I
,
..
LID Esercizi
. .
Esercizio 1.1 Ci si colleghi al sito Intel (http:/ lwww.intel.com) e si raggiunga 1a
pagina che il produttore ha dedicato alIa storia dei suoi microprocessori, si confrontino
i dati ivi contenuti con quelli riportati alPinizio del capitoloj si esamini l'incremen-
to delle prestazioni e come col passare degLi anni, questi incrementi hanno richiesto
l'adozione di unita. di misura differenti. Si ripeta 10 stesso esercizio per i micropro-
cessori Motorola, partendo dal sito http://w'WVI . motorola. com e si esamini 10 stato
della famiglia 68000.
Esercizio 1.2 Si convertano in notazione decimale it nUffiero esadecimale 1ABO e il
nurnero ottale 76022. Si convertano i seguenti numeri decimali in notazione esadeci-
male e ottale: 35, 1024, 531.
Esercizio 1.3 Si efl"ettui la differenza tra il numero decimale AOE3 e il oumero ottale
6755. La differenza va effettuata 0 in notazione esadecimale 0 in notazione ottale. Si
riporti il risultato a notazione e si verifichi che ecorretto.
Esercizio 1.4 Si converta il numero decimale 0,7155 in binario.
Esercizio 1.5 Si trasforrni il nUffiero 14,3 in formato IEEE, singola precisione.
Esercizio 1.6 Data una stringa eli caratteri ASCII, per esempio 2836, si definisca un
algoritmo per calcolare il corrispondente binario. La stringa erappresentata da byte
dislocati in posizioni successive di memoria.
Esercizio 1.7 n contenuto di due parole di memoria di 16 bit consecutive in forma
esadecimale e2AIB e 15FF, a quale stringa. di caratteri corrispondono?
,
"
Figura 1.18 Convenzioni per 180 marcatura dei segnali. Il segn80le marcato OE ha la fun-
zione di Output Enable quando e in stato L; il segnale 10/M ha significato 10' (presu-
mibilmente Input/Output) in stato H e significato M (presumibilmente Memoria) in stato
L.
Vale 180 pena richiamare l'attenzione suI fatto che Questo genere di notazione viene
spesso usato in modo non congruente nei manuali dei produttori di integrati. nmiglior
modo per evitare errori nell'interpretare lo schema resta queUo di Ieggere 180 descri-
zione a parole del funzionamento del dispositivo ed esaminare i relativi diagrammi
temporaJi.
I
I
I
I
\
,
)
\
'"
lo/R u
-v
"
!
,
-I
"
..
.\
!
J
!
"
\
..

,
I
Esercizio 1.8 Si dimostri che l'operatore XOR (OR esclusivo) - vero se e solo se e
vero uno solo dei due termini - gode della proprieta. associativa.
Esercizio 1.9 Si prenda un manuale di dispositivi integrati e si esaminino i differenti
tipi di flip-flop, approfondendo i differenti modi di operare, i vincoli sui segnali e sul
clock.
,
,
)
.' ", , ,
Elementi architetturali di
J
,
)
.h
's:
I
,..
,,' .
\
,
I
\
\
)
I
J
\
,
I
I
I
)
I
2.1 Struttura dei calcolatuci-
.' L'wi'ta-di...elabQrMione e controllo ela parte responsabile dell'interpretazione
ed esecuzione delle istruzioni. Gli anglosassoni chiamano questa unita Central
Processing Unit e 1a designano con la sigla CPU, sigla della quale faremo costan-
temente uso nel seguito, anche se talvolta verranno usati i termini "processore'l
ed Clelaborat'ore".
La caratteristica fondamentale di un calcolatore elettronico, che 10 distingue dalle
tradizionali calcolatrici da tavolo, sta nella sua capacita. di eseguire sequenze di i-
struzioni rnemorizzate. AHo stato attuale della tecnologia i calcolatori sono costruiti
attorno ad una unita di elaborazione e controllo (elaboratore). Le istruzioni, come
ogni altra informazione, sono codificate in gruppi di bit. L'elaboratore preleva Ie
istruzioni dalla memoria, interpreta i codici di istruzione ed effettua Ie azioni che
questi prevedono. Un insieme organizzato di istruzioni costituisce un "programmall.
'In questo capitola l'interesse e rivolto ai concetti architetturali di carattere ge-
nerale, in modo da pater affrontare, nel capitolo successivo, il progetto dell'unita. di
contrallo dell'elaboratore.
Un qualunque sistema di elaborazione puo essere immaginato come composto da tre
sottosistemi: l'unita. di elaborazione e controllo, 1a memoria e il sistema di ingres-
so/uscita.
La e it contenitore delle istruzioni . dati (gli oggetti delPelabo-
razione). Istruzioni e atl sono codificati in forma bmaria. Le istruzioni ven-
gono lette dalla CPU e interpretate. Uinterpretazione da luogo alPesecuzione
dell'azione corrispondente alIa specifieo eodice di istruzione. Le istruzioni non
sono di per se distingtiibili rispetto agli altri tipi di informazioni in memoria.
Tutto dipende dal modo in cui un gruppo di bit viene letto e interpretato. n
fattn che dati e istruzioni siano di per se indistinguibili permette di costruire pro-
... grammi che generano dati che, in un secondo tempo, possono essere interpretati
come istruzioni. Tipico esempio eun Di norma si hanna differenti
,
"''1"

, .
'jo,
,
,.,
,'.-:
'."
:'i

,
,
,,',1'

,"

\"
"
,
"
)'
'I
";'
,n:
':"

,
", .,
'..
'. '"
,..;'.
" ,.
- i,'.'
....
:$;,

';.,
.'
. .,
.' ,(;

"[
;N
'>;
:,:t
,
)
.' ", , ,
Elementi architetturali di
J
,
)
.h
's:
I
,..
,,' .
\
,
I
\
\
)
I
J
\
,
I
I
I
)
I
2.1 Struttura dei calcolatuci-
.' L'wi'ta-di...elabQrMione e controllo ela parte responsabile dell'interpretazione
ed esecuzione delle istruzioni. Gli anglosassoni chiamano questa unita Central
Processing Unit e 1a designano con la sigla CPU, sigla della quale faremo costan-
temente uso nel seguito, anche se talvolta verranno usati i termini "processore'l
ed Clelaborat'ore".
La caratteristica fondamentale di un calcolatore elettronico, che 10 distingue dalle
tradizionali calcolatrici da tavolo, sta nella sua capacita. di eseguire sequenze di i-
struzioni rnemorizzate. AHo stato attuale della tecnologia i calcolatori sono costruiti
attorno ad una unita di elaborazione e controllo (elaboratore). Le istruzioni, come
ogni altra informazione, sono codificate in gruppi di bit. L'elaboratore preleva Ie
istruzioni dalla memoria, interpreta i codici di istruzione ed effettua Ie azioni che
questi prevedono. Un insieme organizzato di istruzioni costituisce un "programmall.
'In questo capitola l'interesse e rivolto ai concetti architetturali di carattere ge-
nerale, in modo da pater affrontare, nel capitolo successivo, il progetto dell'unita. di
contrallo dell'elaboratore.
Un qualunque sistema di elaborazione puo essere immaginato come composto da tre
sottosistemi: l'unita. di elaborazione e controllo, 1a memoria e il sistema di ingres-
so/uscita.
La e it contenitore delle istruzioni . dati (gli oggetti delPelabo-
razione). Istruzioni e atl sono codificati in forma bmaria. Le istruzioni ven-
gono lette dalla CPU e interpretate. Uinterpretazione da luogo alPesecuzione
dell'azione corrispondente alIa specifieo eodice di istruzione. Le istruzioni non
sono di per se distingtiibili rispetto agli altri tipi di informazioni in memoria.
Tutto dipende dal modo in cui un gruppo di bit viene letto e interpretato. n
fattn che dati e istruzioni siano di per se indistinguibili permette di costruire pro-
... grammi che generano dati che, in un secondo tempo, possono essere interpretati
come istruzioni. Tipico esempio eun Di norma si hanna differenti
,
"''1"

, .
'jo,
,
,.,
,'.-:
'."
:'i

,
,
,,',1'

,"

\"
"
,
"
)'
'I
";'
,n:
':"

,
", .,
'..
'. '"
,..;'.
" ,.
- i,'.'
....
:$;,

';.,
.'
. .,
.' ,(;

"[
;N
'>;
:,:t
,
43
tHPIJT/OUTf"\J'T WDoOIUA
Elementi architetturali di base
c,u
=x .011.. X
=:::=x IndlJiuo valido X
=x nnn X---, X
Dati
"/10 \ /
"'''' . "
Indiri,,:oJ =::x: tndiriuo X'---

CI.O<:K
1Aquesto proposito si veda quanto detto in Appendice A nel Paragraro A.Il.l.
-
,
Figura: 2.2 Organizza.zione a bus unico. A sinistra 10 schema di principio, a destra la
separazione del bus unico in tre bus con funzionalita. diversa. II principia eche ogni nuovo
modulo di memoria. 0 di I/O viene aggiunto semplicemente collegaodolo sui bus.
indirizzi ha origine dalla. CPU ed enormalmente unidirezionale. Su di esso viene pre-
sentato l'indirizzo della cella di memoria cia Ieggere 0 scrivere, ovvero del registro di
un dispositivo di ingresso/uscita. U bus dati e bidirezionale. Con l'organizzazione di
Figura2.2 anche il sottosistema cii ingressofuscita pub essere riguardato come un in-
sierne di lfporte" di ingresso e di uscita, ciascuna delle quali viene selezionata tramite
un indirizzQ.
Da un punto di vista del suo collegamento con l'esterno 1a CPU deve compiere
due sole operazioni: leggere 0 scrivere dati. Infatti anche l'acquisizione dei codici di
istruzione e, dal punta di vista del bus esterno, un'operazione di lettura. In Figura 2.3
viene mostrata Ia temporizzazione delle operazioni di lettura e scrittura. La figura
mostra in modo esplicito che la durata di un cielo di 1ettura 0 scrittura puo richiedere
,
pill di un cicIo di clock. questa una situazione del tutto normale in quanto Ie
memorie sono di soli to pill lente della CPU. Se 1a memoria 0 il dispositivo sono troppo
lenti rispetto ana CpU necessano preved"er'e' un meccanismo che faccia aumentare i
numero di deli di clock della CPU per le operazioni di letturafscrittura. Di solito cic
si ottiene inserendo un opportuno numero di deli di attesa
1

In,r...o
.

1oI.",orl.
,
, .
,
i
:.,:,
,.....-
"
;1
.,(
,,-,'-1
"'i,

,...
..,

,
..:,
,
..'
"
,,' .;
'a'
,'I
,
,>
_c_

',"
,
,;.
il
"
...,
"
,
C,

,
,
h
"
-'

" ,.
;1,
.,
...:
,. .-

,
, "
,1<
' ..'
- ...
'I
.,;
,

T
-I
.::}
;
MEMORIA
CPU
conlrol1ore
dfcanale
I bus di I/O
, ,

D sistema eli ingressojuscita e l'insieme dei dispositivi che servono, da un lato,
a comumcare con IT moniic5"'esterno e con Putente (video, tastiere, stampanti),
dall'altro, ad aggiungere funzionalita al sistema di elaborazione stesso (mernorie
ausiliarie, linee di comunicazione ecc.). Del sistema di ingresso/ uscita fanno parte
le.interfacce, ovvero i componenti che fanno da ponte tra i dispositivi periferici e
il calcolatore stesso.
Figura 2.1 Esempio di organizza.zione di un calcolatore elettronico. La schema rappresenta
una tipica. architettura. mainframe di qua.lche anna addieteo (adotta.t.a per esempio dai sistemi
IBM 8/370). Si noti che esiste un p:ercorso t.ra la memoria e i dispositivi di 1/0
1
attraverso
il cosiddetto controllare eli canale.
CPU, memoria e I/O sana collegati tra loro in vari modi, a seconda della categoria
della macchina. Un esempio di organizzazione viene presentato in Figura2.1.
livelli di memoria. Si parla di memoria centrale quando ci si riferisce alia memo-
ria elettronica clirettamente connessa alIa CPUI si parla di memoria ausiliaria 0
eli massa. quando ci si riferisce, per esempio, alia memoria dei dischi magnetici.
42 Ca.pitola 2
In Figura 2.2 viene riportata l'organizzazione a bus unieo. Questa struttura venne
introdotta dalla Digital Equipment, nella prima meta degli anni settanta, per i
nicalcolatori della serie PDP 11 e guadagnb subito ampio consenso. Essa divenne,
poi, 10 standard con l'avvento dei microprocessori. La schema restO in auge per molti
anni per Ie macchine di dimensioni medio-piccole. A partire dagli anni novanta, con
"la incont.enibile. crescita delle prestazioJii delle CPU e l'impiego d.i memqrie cache, 10
schema d.i Figura2.2 si emostrato insufficiente. Le architetture anche per i
calcolatori personali, prevedono la presenza di piu bus. Per esempio: un bus ad altis-
sima velocita. per il trasferimento di dati tra memoria cache, memoria centrale e CPUi
un bus ad alta velocita per il collegameuto di perileriche ad alte prestazioni (dischi);
un bus per i dispositivi periferici di basse prestazioni. Quest'ultimo corrisponde in
pratica al bus di Figura2.2.
La schema di Figura2.2 emolto semplice e rappresenta la forma piu scarna di
organizzazione di un calcolatore. Esso ecomunque adeguato alia comprensione degli
argomenti che vengono trattati nel seguito. Pili avanti verranno rnostrate strutture
organizzative molto piiI complesse.
La parte destra eli Figura 2.2 mostra che il bus si compone delle linee di indi-
rizzo (bus indirizzi), delle linee dati (bus dati) e delle linee di controlh Il bus degli
I
\
\
\
\
1
I
I
\
l
1
(
I
I
1
i
,
I
43
tHPIJT/OUTf"\J'T WDoOIUA
Elementi architetturali di base
c,u
=x .011.. X
=:::=x IndlJiuo valido X
=x nnn X---, X
Dati
"/10 \ /
"'''' . "
Indiri,,:oJ =::x: tndiriuo X'---

CI.O<:K
1Aquesto proposito si veda quanto detto in Appendice A nel Paragraro A.Il.l.
-
,
Figura: 2.2 Organizza.zione a bus unico. A sinistra 10 schema di principio, a destra la
separazione del bus unico in tre bus con funzionalita. diversa. II principia eche ogni nuovo
modulo di memoria. 0 di I/O viene aggiunto semplicemente collegaodolo sui bus.
indirizzi ha origine dalla. CPU ed enormalmente unidirezionale. Su di esso viene pre-
sentato l'indirizzo della cella di memoria cia Ieggere 0 scrivere, ovvero del registro di
un dispositivo di ingresso/uscita. U bus dati e bidirezionale. Con l'organizzazione di
Figura2.2 anche il sottosistema cii ingressofuscita pub essere riguardato come un in-
sierne di lfporte" di ingresso e di uscita, ciascuna delle quali viene selezionata tramite
un indirizzQ.
Da un punto di vista del suo collegamento con l'esterno 1a CPU deve compiere
due sole operazioni: leggere 0 scrivere dati. Infatti anche l'acquisizione dei codici di
istruzione e, dal punta di vista del bus esterno, un'operazione di lettura. In Figura 2.3
viene mostrata Ia temporizzazione delle operazioni di lettura e scrittura. La figura
mostra in modo esplicito che la durata di un cielo di 1ettura 0 scrittura puo richiedere
,
pill di un cicIo di clock. questa una situazione del tutto normale in quanto Ie
memorie sono di soli to pill lente della CPU. Se 1a memoria 0 il dispositivo sono troppo
lenti rispetto ana CpU necessano preved"er'e' un meccanismo che faccia aumentare i
numero di deli di clock della CPU per le operazioni di letturafscrittura. Di solito cic
si ottiene inserendo un opportuno numero di deli di attesa
1

In,r...o
.

1oI.",orl.
,
, .
,
i
:.,:,
,.....-
"
;1
.,(
,,-,'-1
"'i,

,...
..,

,
..:,
,
..'
"
,,' .;
'a'
,'I
,
,>
_c_

',"
,
,;.
il
"
...,
"
,
C,

,
,
h
"
-'

" ,.
;1,
.,
...:
,. .-

,
, "
,1<
' ..'
- ...
'I
.,;
,

T
-I
.::}
;
MEMORIA
CPU
conlrol1ore
dfcanale
I bus di I/O
, ,

D sistema eli ingressojuscita e l'insieme dei dispositivi che servono, da un lato,
a comumcare con IT moniic5"'esterno e con Putente (video, tastiere, stampanti),
dall'altro, ad aggiungere funzionalita al sistema di elaborazione stesso (mernorie
ausiliarie, linee di comunicazione ecc.). Del sistema di ingresso/ uscita fanno parte
le.interfacce, ovvero i componenti che fanno da ponte tra i dispositivi periferici e
il calcolatore stesso.
Figura 2.1 Esempio di organizza.zione di un calcolatore elettronico. La schema rappresenta
una tipica. architettura. mainframe di qua.lche anna addieteo (adotta.t.a per esempio dai sistemi
IBM 8/370). Si noti che esiste un p:ercorso t.ra la memoria e i dispositivi di 1/0
1
attraverso
il cosiddetto controllare eli canale.
CPU, memoria e I/O sana collegati tra loro in vari modi, a seconda della categoria
della macchina. Un esempio di organizzazione viene presentato in Figura2.1.
livelli di memoria. Si parla di memoria centrale quando ci si riferisce alia memo-
ria elettronica clirettamente connessa alIa CPUI si parla di memoria ausiliaria 0
eli massa. quando ci si riferisce, per esempio, alia memoria dei dischi magnetici.
42 Ca.pitola 2
In Figura 2.2 viene riportata l'organizzazione a bus unieo. Questa struttura venne
introdotta dalla Digital Equipment, nella prima meta degli anni settanta, per i
nicalcolatori della serie PDP 11 e guadagnb subito ampio consenso. Essa divenne,
poi, 10 standard con l'avvento dei microprocessori. La schema restO in auge per molti
anni per Ie macchine di dimensioni medio-piccole. A partire dagli anni novanta, con
"la incont.enibile. crescita delle prestazioJii delle CPU e l'impiego d.i memqrie cache, 10
schema d.i Figura2.2 si emostrato insufficiente. Le architetture anche per i
calcolatori personali, prevedono la presenza di piu bus. Per esempio: un bus ad altis-
sima velocita. per il trasferimento di dati tra memoria cache, memoria centrale e CPUi
un bus ad alta velocita per il collegameuto di perileriche ad alte prestazioni (dischi);
un bus per i dispositivi periferici di basse prestazioni. Quest'ultimo corrisponde in
pratica al bus di Figura2.2.
La schema di Figura2.2 emolto semplice e rappresenta la forma piu scarna di
organizzazione di un calcolatore. Esso ecomunque adeguato alia comprensione degli
argomenti che vengono trattati nel seguito. Pili avanti verranno rnostrate strutture
organizzative molto piiI complesse.
La parte destra eli Figura 2.2 mostra che il bus si compone delle linee di indi-
rizzo (bus indirizzi), delle linee dati (bus dati) e delle linee di controlh Il bus degli
I
\
\
\
\
1
I
I
\
l
1
(
I
I
1
i
,
I
2.1.1 II sistema CPU-memoria
-
.
44 Capitola 2
. j'
,;)1
':,
"I
,
.' J
.,,,,,
2.2 La CPU
-
Elementi architetturali di base
45
)
)
Figura 2.6 Struttura generale della CPU. La schema mette in evidenza due parti: l'unita
"operativa (UO) e I'unita. di controllo (UC). Lo schema mostra anche i Russi informativi tra
DC e DO etra.1'intera CPU e I'esterno [LP86J .
In Figura 2.6 viene data una schematizzazione molto aggregata della CPU. La sche-
matizzazione corrisponde al madelIa eli Figura 1.14. Come si vede la CPU estata
scomposta in due parti: I'UnitiJ. di Contro.llil.(UC) e l'UnitiJ. Operativa (UO).
-
\
I
I
\
I
)
]
\
l
J
J
\
I
1
I
I

PU' III uscrrJ. J

UO,
?ERlQ/A.
COlW!lll

COJfllIZlOlfl

DC

CPU
JUL
1SJR1nIPtfl
3La ALU domina il costo del processore, poiche, di solito, richiede meta dei transistori e della
superficie di silicio dell'integrato. Tuttavia, nonostante svolga Ie funzioni di ca.lcolo, condizioni Ie
prestazioni e domini il costa, I'unita di calcolo e almeno concettua.lmente la parte del processore piu
semplice da progettare, in quanto il suo funzionamento eben formalizzato. La ALU per interi e
necessaria in un calcolatore, in quanto interviene in ogni manipolazione dei dati. La FPU, quando e
presente, viene invece considerata come un elemento a se stante, comandata dalla UC.
pJ.n PI PlGJU::I.w x
L'unita. di controllo e res onsabile dell'esecuzione delle istruzioni
,
comandando
l'unita operativa a svolgere e operazioni corrispon ... . codici di istru-
zione. A tal finel DC interpreta il codice operativo contenuto neUe istruzioni e Ie
traduce in comandi per DO. Spesso l'esecuzione di un'istruzione deve tenere canto di
risultati intermedi dell'elaborazione generati nell'unita..operativa. Per questa motivo
a UC vengono comunicate Ie condizioni di stato di VO. Queste hanna influenza suI
comportamento di UC e, quindi , anche sui segnali di comando da UC a UO.
L'unta. operativa svol e la fu i olazian wrmazione de ,. _
formazione, trasformando j datLdi jDwesso X pe; dati di llscita Y. omponente
. essenziaJe dell'unita operativa e l'ALU, 1a rete che effettua Ie operazioni logiche e
aritmetiche sui dati
3
. In VO sono presenti anche un certo numero di registri di varia
usc, necessari per appoggiarvi l'informazione manipolata.
Lo schema di Figura2.6 mastra il fiusso di istruzioni che alimenta DC, oltre a1
flusso'di dati in ingresso a VO e il flusso in uscita da UO,lasciando alquanto indefinite
ii'
",,1:
,:f
"
,
:1<
,""
,',r,
, ,".

,:.1:
'. ,
'I,

, .. '"
.': .'
I'
'.", '-"
; ...
--,-
"',
' .. '.
"
,'.;:r.
..,""
.. '1'
In<llrlzz1
O.U
CPU MEMORIA
RO
WR
lndlrl:nl
lndlrl,ul
MEMORIA

Oali
MEMORIA
CPU
ISTRUZIONI
DATI

RO.o

Figura 2.4 Architettura di Von Neuman. La memoria eindifferenziata per dati 0 istruzioni,
solo l'interpretazione cia parte della CPU stabilisce 5e una data conn.gurazione di bit e da
riguardarsi come un dato 0 come un'istruzione.
Figura 2.5 Collegamento della CPU can due memorie distinte: la memoria istruzioni e
1a memoria dati. Si noti che per quanta si riferisce aHa sola esecuzione di un programma.
nella memoria istruzioni, 1a linea di comando RDMI e del tutto superftua, in quanta si pub
immaginare che questa memoria sia sempre e soltanto letta.
La realizzazione di un sistema come queUo di Figura 2.5 comporta maggiori costi.
Per questo, anche se esistono sistemi progettati e realizzati secondo tale schema, 1a
pratica industriale si rifa. aDo schema di Figura 2.4
2

rente schema or anizzativo del sistema CPU:.


ente Ie istruzioni edistinta nspetto a a
memOria usata per COJltenere j d.ati. r n r me de-
signata come architeJj;lIra Rorvsm, essa trova impiego in CPV destinate a specifici
campi applicativi come l'elaborazione dei segnali. Questa organizzazione si mostrera
conveniente nello studio iniziale del funzionamento della CPU.
Per la parte che segue, l'attenzione eessenzialmente rivolta alIa CPU e all'esecuzione
delle istruzioni. Per questa motivo il sottosistema di ingresso/uscita per un po' non
viene considerato e 10 schema di riferimento diventa quello di Figura 2.4: il classico
modelIa di Von Neuman.
. -
2Vale la pena di notare che 10 schema architetturale di figura viene di fatto utilizzato all'interno
"di gran parte delle moderne CPU can cache integrata (si veda il capitolo dedicato alle memoria
cache). La cache e speaso divisa in una cache dati e una cache proprio secondo il modello
in questione.

2.1.1 II sistema CPU-memoria


-
.
44 Capitola 2
. j'
,;)1
':,
"I
,
.' J
.,,,,,
2.2 La CPU
-
Elementi architetturali di base
45
)
)
Figura 2.6 Struttura generale della CPU. La schema mette in evidenza due parti: l'unita
"operativa (UO) e I'unita. di controllo (UC). Lo schema mostra anche i Russi informativi tra
DC e DO etra.1'intera CPU e I'esterno [LP86J .
In Figura 2.6 viene data una schematizzazione molto aggregata della CPU. La sche-
matizzazione corrisponde al madelIa eli Figura 1.14. Come si vede la CPU estata
scomposta in due parti: I'UnitiJ. di Contro.llil.(UC) e l'UnitiJ. Operativa (UO).
-
\
I
I
\
I
)
]
\
l
J
J
\
I
1
I
I

PU' III uscrrJ. J

UO,
?ERlQ/A.
COlW!lll

COJfllIZlOlfl

DC

CPU
JUL
1SJR1nIPtfl
3La ALU domina il costo del processore, poiche, di solito, richiede meta dei transistori e della
superficie di silicio dell'integrato. Tuttavia, nonostante svolga Ie funzioni di ca.lcolo, condizioni Ie
prestazioni e domini il costa, I'unita di calcolo e almeno concettua.lmente la parte del processore piu
semplice da progettare, in quanto il suo funzionamento eben formalizzato. La ALU per interi e
necessaria in un calcolatore, in quanto interviene in ogni manipolazione dei dati. La FPU, quando e
presente, viene invece considerata come un elemento a se stante, comandata dalla UC.
pJ.n PI PlGJU::I.w x
L'unita. di controllo e res onsabile dell'esecuzione delle istruzioni
,
comandando
l'unita operativa a svolgere e operazioni corrispon ... . codici di istru-
zione. A tal finel DC interpreta il codice operativo contenuto neUe istruzioni e Ie
traduce in comandi per DO. Spesso l'esecuzione di un'istruzione deve tenere canto di
risultati intermedi dell'elaborazione generati nell'unita..operativa. Per questa motivo
a UC vengono comunicate Ie condizioni di stato di VO. Queste hanna influenza suI
comportamento di UC e, quindi , anche sui segnali di comando da UC a UO.
L'unta. operativa svol e la fu i olazian wrmazione de ,. _
formazione, trasformando j datLdi jDwesso X pe; dati di llscita Y. omponente
. essenziaJe dell'unita operativa e l'ALU, 1a rete che effettua Ie operazioni logiche e
aritmetiche sui dati
3
. In VO sono presenti anche un certo numero di registri di varia
usc, necessari per appoggiarvi l'informazione manipolata.
Lo schema di Figura2.6 mastra il fiusso di istruzioni che alimenta DC, oltre a1
flusso'di dati in ingresso a VO e il flusso in uscita da UO,lasciando alquanto indefinite
ii'
",,1:
,:f
"
,
:1<
,""
,',r,
, ,".

,:.1:
'. ,
'I,

, .. '"
.': .'
I'
'.", '-"
; ...
--,-
"',
' .. '.
"
,'.;:r.
..,""
.. '1'
In<llrlzz1
O.U
CPU MEMORIA
RO
WR
lndlrl:nl
lndlrl,ul
MEMORIA

Oali
MEMORIA
CPU
ISTRUZIONI
DATI

RO.o

Figura 2.4 Architettura di Von Neuman. La memoria eindifferenziata per dati 0 istruzioni,
solo l'interpretazione cia parte della CPU stabilisce 5e una data conn.gurazione di bit e da
riguardarsi come un dato 0 come un'istruzione.
Figura 2.5 Collegamento della CPU can due memorie distinte: la memoria istruzioni e
1a memoria dati. Si noti che per quanta si riferisce aHa sola esecuzione di un programma.
nella memoria istruzioni, 1a linea di comando RDMI e del tutto superftua, in quanta si pub
immaginare che questa memoria sia sempre e soltanto letta.
La realizzazione di un sistema come queUo di Figura 2.5 comporta maggiori costi.
Per questo, anche se esistono sistemi progettati e realizzati secondo tale schema, 1a
pratica industriale si rifa. aDo schema di Figura 2.4
2

rente schema or anizzativo del sistema CPU:.


ente Ie istruzioni edistinta nspetto a a
memOria usata per COJltenere j d.ati. r n r me de-
signata come architeJj;lIra Rorvsm, essa trova impiego in CPV destinate a specifici
campi applicativi come l'elaborazione dei segnali. Questa organizzazione si mostrera
conveniente nello studio iniziale del funzionamento della CPU.
Per la parte che segue, l'attenzione eessenzialmente rivolta alIa CPU e all'esecuzione
delle istruzioni. Per questa motivo il sottosistema di ingresso/uscita per un po' non
viene considerato e 10 schema di riferimento diventa quello di Figura 2.4: il classico
modelIa di Von Neuman.
. -
2Vale la pena di notare che 10 schema architetturale di figura viene di fatto utilizzato all'interno
"di gran parte delle moderne CPU can cache integrata (si veda il capitolo dedicato alle memoria
cache). La cache e speaso divisa in una cache dati e una cache proprio secondo il modello
in questione.

47 Elementi architetturali di base


CPU
uc
IUb
I .. I
I: ';-1 I
Lo.'c. d.l

MEMORIA
Con\.>-ollo
I/Cil
I
'0
I
I
I
....
I
Indlrlzzl

I
I
!<fiR I
Dati
I
CQmllndl
Figura 2.8 Elementi fandamentali della CPU. La figura evidenzia il coUega.mento Con la
memoria, attraverso Ie linee dei dati, Ie linee degli indirizzi e Ie linee di controlla. Di queste
ultiine fanno parte Ie linee di camanda che escono da.lla CPU, quali per esempio Ie linee di
Memory Read e Memory Write.
2.3 Primo esame del funzionamento d.el.la...CEll.
I1JcStruction Registe - eil re istro contenere l'istruzione in cor 0 di
esecuzione. viene caricato nella rase di fetch e presentato a logica di control-
to chela aeco'ttttica (interpreta) e genera una sequenza temporizzata. di segnali
di controllo che vengono inviati ai diversi componenti del sistema (ALU, CPU,
memoria, dispositivi I/O). In pratica IR rappresenta l'ingresso che determina Ie
711 il primo minicalcolatore della storia, aveva un solo registro aceumulatare. Esse
veniva in tutte Ie operazioni che avevano l'effetto di modificare qualcbe dato. Le macchine moderne
sono dota.te di un ampio numero di registri di uso generaJe.
8Poiche operativa ei svolgono sostaozialmente trasferime.nti di informazioni (attraverso
la ALU) tra registri e tra registri e l'esterno, gli anglosassoni denotano UO came Data Path.
Ai fini della manipolazione dell'informazione in CPU, conviene the in UO siano
presenti un certo numero di registri su cui appoggiare }'informazione1
In Figura 2.8 si mostrano in maggior dettaglio i componenti dell'unita. operativa e
de1l'unita di controllo deUa CPU. La figura non mostra i collegamenti all'interno di
UC e UQ, ne tra Ie parti stesse. Ai fini della discussione che segue si puo assumere che
siano disponibili tutti i percorsi possibili tra i vari registri. 8i deve anche assurnere
che dalI'unita di controllo escano i segnali eli comando per Ie parti interne (per il
trasferirnento delle inforrnazioni tra i registri e per selezionare Ie operazioni di ALU)8.
Nel seguito si spiega it ruolo degH elementi riportati in Figura2.8, senza menzionare
la ALU di cui si egil< parlato.
'.

.:!
,
,
-I
,
1
I
I
,
1
I
,
l
i

t

"':
..
.: ,.
'.. 1'

'l.i.
I'
'- "
Fine esecuzione_
lnizio esecuzione
Capitolo 2 46
Figura 2.7 Diagramma eli stato aggregato del funzianamento deU'unita. di controlla. II
primo macrostato, detto stato di Fetch com rende it relievo e 1a decadifica. della rossima.
istruzione; il secondo macros a.to, detto sta.ta Execute, e u e e a.zJOnt c e
quell? Bpecifu:.a istruzione.
In modo aggregato il fUDzionamento delPuruta di centrella puC> essere rappresentato
con il diagramma di stato di Figura2.7. In sintesi
1
DC eUD automa che passa attra
verso due macrostati: oel primo viene letta (dalla memoria) e decodificata la prossima
istruzione
6
; nel secondo viene svolta l'operazione prevista cial ccdice operativQ dell'is-
truzione stessa. Le operazioni possono essere di natura Iogico-aritmetica, come pure
operazioni che hanno a che fare con il contrello, come, per esempio, il calcolo dell'in-
dirizzo eli memoria di un'istruzione [uori sequenza. In ogni caso Ie operazioni vengono
efIettuate trarpite va e, piu specmcatarnente, tramite la ALU.

tI..
Un programma e una sequenza di istruzionL Le istruzioni sono in memoria a
indirizzi contigui. L'eseeuzione di sequenze di istruzioni richiede un registro di CPU
con funzione di puntatore alia prossima istruzione da eseguire. Tale registro viene
usuaimente denominato Program Counter (PC). Per quanto attiene alIa fase di fetch,
la logica della CPU legge l'istruzione contenuta nella cella di memoria indirizzata da
PC. AI termine dell'esecuzione dell'istruzione PC deve puntare alia pro5sima istruzio-
net Se 5i ipotizza che Ie istruzioni occupino tutte 10 stesso numero di byte, PC deve
essere incrementato di una quantiU. pari a tale numero; se invece le istruzioni sono di
differente dimensione, a seconda del codice di istruzione, PC deve essere incrementa-
to di volta in volta del numero corrispondente allo spazio oecupato dall'istruzione in
memoria. Le istruzioni di salto hanno l'effetto di aggiornare il PC con l'indirizzo di
destinazione del salto.
Ie relazioni tra CPU ed esterno
4
. In Figura2.6 non compaioDo espressamente gli
generati dalla CPU per istruzioni, leggere e scrivere dati,- anche perche
gli indirizzi vengono generati da Uc e quindi, in termini astratti, sono solo una parte
dei dati (anthe se predominante) in uscita da UO.
Sia UO che UC
S
sono reti sequenziali sincrone, normalmente temporizzate tra-
mite il medesimo clock. n clock dl< il soffio vitale aI modello di Figura 2.6.
4Si osservi the i dati possooo provenirejessere diretti a.nche daijai dispositivi di uscita. Nella
discussione che segue 10 scambio di dati coo Ie periferiche 000 ha alcuna ri1evam:a, per cui si tiene
conto del solo del scam-bio di dati con la memoria.
5In realta, meotre UC e ne<:essariameote una rete sequenziale, UO (almena nello schema di
Figura 2.6) pub convenientemente essere riguardata come una rete combinatoria.
- 6In lingua inglese, per indica.re il complesso di funzioni svolte in questa macrostato, viene usato
il verba to fetch. Per sinteticita di linguaggio, indicberemo questa macrostata come stato di fetch.
\
\

I
)
I
l
I
\
)
I
\
I
\
I

47 Elementi architetturali di base


CPU
uc
IUb
I .. I
I: ';-1 I
Lo.'c. d.l

MEMORIA
Con\.>-ollo
I/Cil
I
'0
I
I
I
....
I
Indlrlzzl

I
I
!<fiR I
Dati
I
CQmllndl
Figura 2.8 Elementi fandamentali della CPU. La figura evidenzia il coUega.mento Con la
memoria, attraverso Ie linee dei dati, Ie linee degli indirizzi e Ie linee di controlla. Di queste
ultiine fanno parte Ie linee di camanda che escono da.lla CPU, quali per esempio Ie linee di
Memory Read e Memory Write.
2.3 Primo esame del funzionamento d.el.la...CEll.
I1JcStruction Registe - eil re istro contenere l'istruzione in cor 0 di
esecuzione. viene caricato nella rase di fetch e presentato a logica di control-
to chela aeco'ttttica (interpreta) e genera una sequenza temporizzata. di segnali
di controllo che vengono inviati ai diversi componenti del sistema (ALU, CPU,
memoria, dispositivi I/O). In pratica IR rappresenta l'ingresso che determina Ie
711 il primo minicalcolatore della storia, aveva un solo registro aceumulatare. Esse
veniva in tutte Ie operazioni che avevano l'effetto di modificare qualcbe dato. Le macchine moderne
sono dota.te di un ampio numero di registri di uso generaJe.
8Poiche operativa ei svolgono sostaozialmente trasferime.nti di informazioni (attraverso
la ALU) tra registri e tra registri e l'esterno, gli anglosassoni denotano UO came Data Path.
Ai fini della manipolazione dell'informazione in CPU, conviene the in UO siano
presenti un certo numero di registri su cui appoggiare }'informazione1
In Figura 2.8 si mostrano in maggior dettaglio i componenti dell'unita. operativa e
de1l'unita di controllo deUa CPU. La figura non mostra i collegamenti all'interno di
UC e UQ, ne tra Ie parti stesse. Ai fini della discussione che segue si puo assumere che
siano disponibili tutti i percorsi possibili tra i vari registri. 8i deve anche assurnere
che dalI'unita di controllo escano i segnali eli comando per Ie parti interne (per il
trasferirnento delle inforrnazioni tra i registri e per selezionare Ie operazioni di ALU)8.
Nel seguito si spiega it ruolo degH elementi riportati in Figura2.8, senza menzionare
la ALU di cui si egil< parlato.
'.

.:!
,
,
-I
,
1
I
I
,
1
I
,
l
i

t

"':
..
.: ,.
'.. 1'

'l.i.
I'
'- "
Fine esecuzione_
lnizio esecuzione
Capitolo 2 46
Figura 2.7 Diagramma eli stato aggregato del funzianamento deU'unita. di controlla. II
primo macrostato, detto stato di Fetch com rende it relievo e 1a decadifica. della rossima.
istruzione; il secondo macros a.to, detto sta.ta Execute, e u e e a.zJOnt c e
quell? Bpecifu:.a istruzione.
In modo aggregato il fUDzionamento delPuruta di centrella puC> essere rappresentato
con il diagramma di stato di Figura2.7. In sintesi
1
DC eUD automa che passa attra
verso due macrostati: oel primo viene letta (dalla memoria) e decodificata la prossima
istruzione
6
; nel secondo viene svolta l'operazione prevista cial ccdice operativQ dell'is-
truzione stessa. Le operazioni possono essere di natura Iogico-aritmetica, come pure
operazioni che hanno a che fare con il contrello, come, per esempio, il calcolo dell'in-
dirizzo eli memoria di un'istruzione [uori sequenza. In ogni caso Ie operazioni vengono
efIettuate trarpite va e, piu specmcatarnente, tramite la ALU.

tI..
Un programma e una sequenza di istruzionL Le istruzioni sono in memoria a
indirizzi contigui. L'eseeuzione di sequenze di istruzioni richiede un registro di CPU
con funzione di puntatore alia prossima istruzione da eseguire. Tale registro viene
usuaimente denominato Program Counter (PC). Per quanto attiene alIa fase di fetch,
la logica della CPU legge l'istruzione contenuta nella cella di memoria indirizzata da
PC. AI termine dell'esecuzione dell'istruzione PC deve puntare alia pro5sima istruzio-
net Se 5i ipotizza che Ie istruzioni occupino tutte 10 stesso numero di byte, PC deve
essere incrementato di una quantiU. pari a tale numero; se invece le istruzioni sono di
differente dimensione, a seconda del codice di istruzione, PC deve essere incrementa-
to di volta in volta del numero corrispondente allo spazio oecupato dall'istruzione in
memoria. Le istruzioni di salto hanno l'effetto di aggiornare il PC con l'indirizzo di
destinazione del salto.
Ie relazioni tra CPU ed esterno
4
. In Figura2.6 non compaioDo espressamente gli
generati dalla CPU per istruzioni, leggere e scrivere dati,- anche perche
gli indirizzi vengono generati da Uc e quindi, in termini astratti, sono solo una parte
dei dati (anthe se predominante) in uscita da UO.
Sia UO che UC
S
sono reti sequenziali sincrone, normalmente temporizzate tra-
mite il medesimo clock. n clock dl< il soffio vitale aI modello di Figura 2.6.
4Si osservi the i dati possooo provenirejessere diretti a.nche daijai dispositivi di uscita. Nella
discussione che segue 10 scambio di dati coo Ie periferiche 000 ha alcuna ri1evam:a, per cui si tiene
conto del solo del scam-bio di dati con la memoria.
5In realta, meotre UC e ne<:essariameote una rete sequenziale, UO (almena nello schema di
Figura 2.6) pub convenientemente essere riguardata come una rete combinatoria.
- 6In lingua inglese, per indica.re il complesso di funzioni svolte in questa macrostato, viene usato
il verba to fetch. Per sinteticita di linguaggio, indicberemo questa macrostata come stato di fetch.
\
\

I
)
I
l
I
\
)
I
\
I
\
I
-,., . . ..
,
]1
,
)
Possiamo ora dare uno sguardo all'esecuzione delle istruzioni.
2.3.1 Esecuzione di un'istruzione
\
i
I
,
,
I
I
(
\
!
1
49

Elementi arChitetturali di base


D' >'"ETC=H
MAA <-
"
.01.",,_
WlHII:<_ W(loU.Il J
t ___a
lan"'""l ....
I"
<- MD'
.
(: _......::>
CHloa apuaU9a
." I""ro..w.....
/' ...1 Pc """
'"
/
\
"oJ
,
D' ona:C=UTC
I
c) il contenuto di MDR viene copiato in IR;
d) viene decodificato il codice operativo dell'istruzione in me incrementato PC in
modo da farlo puntare all'istruzione successiva (per la prossima fase di fetch).
La. successione dei passi descritti eschematizzata in Figura2.9.
a) iI centenuto di PC viene trasferito in MAR;
b) l'uscita di MAR viene presentato suI bus degli indirizzi e viene asserito il comando
di lettura della memoria; il contenuto della cella indirizzata viene caricato in
MDR;
Essendo llunita di cantrollo una macchina sequenziale sinerana, ogni passe pub \
essere riguardato come uno stata dell'automa corrispondente. suI secondo
stato viene letta la memoria e questa enormalmente pili lenta della logica di
CPUI epossibile che OCcorra inserire un congruo numero di deli wait per dar tempo }
aUa memoria di rispondere
lO
. Con il nostro modello, il fetch dell'istruzione richiede !
40 pili deli di clock.
Come piu avanti (Crr.H), U I
( etn che dete nano l 10m d U. re
condizioni, Ie prestazioni SOUQ ]:"" lip modo )
p'er cerca:re. conslste n _. eg,o fattore.""'er
nfer!ce VIe,;,...
10C': t _, _ _ . el Paragrafo A.ILl 1
Figura 2.9 Diagramma a stati relativo aUa fase di fetch. n ramo di uscita dalla fase di \
fetcb eselezionato in base at codice di istr'uzione. Ogni stato ha. 130 durata di un periodo
clock, eccetto iI secondo il quaie pub ricbiedere piu cicli a causa della (relativa) lentezza della I
memoria.
'.
" ,
'"
",
''',,'
.,'
'1'
,; ,
"
"', ,
.c,
,
","
" '",
.....
-'
-.'
...'
,
.,.

.'.,
.,
'1)
,
'.,
'-
"

"'I,

.'
.,1'
.. ,
,1,
'i ,I,
'1
,I.'
,
.-
.. {

....'
."
e viene scambiaj;a e il registro attraverso j
la"PII"
MAR eil registro deputato a contenere l'indirizzo
usus egli
in mzzi. i norma, Puscita eabilitata durante Ie fasi letturajscrittura, mentre
emantenuta. in terzo stato fuori cia queste fasi.
Capitolo 2
Memory nata
l'mformazlOneJti!i pm
azioni svolte durante 1a rase di esecuzione. Per questa esso estato aggregato a
UC, mentre tutti gli altri registri sono stati aggregati a UO.
PrD;;;-am Counter - EC e il registro che biene traccia dell'esecuzione del pro-
gramma. ESso contiene l'indirizzo dell'istruzione in esecuzione. Durante Pesecu-
zione dell'istruzione stessa
J
PC viene aggiornato in modo cia puntare all'istruzione
SUCCesSlva.
48
Reqistri di USQ generale - RO, Rl, ...Rn SQnQ per mantenere dati su cui
1& ALU eseiUlj> operazioni, come registri di appoggio, per l'indirizzamento ecc.
Nelle architetture moderne 1a tendenza ad avere un elevato numero di registri,
intercambiabili tra loro. In passato i registri di CPU erano pili specializzatij
in particolare si distingueva. il "registro accumulatore", come queUo cbe doveva
necessariamente essere impiegato in certe operazioni aritmetiche e logiche. Per
esempio, il registro AX dell'8086 ha funzione di accumulatore, nel sensa che
interviene in tutte Ie operazioni aritmetiche, mentre iI registro BX, che pure pub
essere usato in semplici operazioni aritmetiche, ha di norma 1a funzione di registro
di base nel calcolo deU'indirizzo di un operando.
IVl no essenziali. Infatti, per la trasmissione dell'in-
dirizzo deWistruzione basterebbe PC, per a rasmissione dell'indirizzo di un dato
basterebbe (il campo relativo di) IR, per il trasferimento dei dati basterebbe stabilire
un percorso tra memoria e il registro implicato. Q.i.....M.A.R e MDR permette
di disacco12piare la CPU dalla memoria.
,Fase di fetch .,!.m:Qgrammi il registro PC fornisce l'indirizzo
della prossima istruzione aa eseguire. Ware dI1etch. inizja con il prelievo de1Pistru
ziQne e si conclude con 13 sua decodifica. Pili dettagliatamente possiamo immaginare
me Ia fase di fetch proceda attraverso i seguenti passi:
9Natare che mentre per quanta gi riferisce a. MAR il flU8SO e unidirezianale (dal proceesore verso
memoria), per MDR jJ Busso dei dati e bidirezionale. Tradizionalmen,te 1a dimensiooe di MOR
I a. la m . arallelismo della macchin : i microprocessori della prima generazion'!
avevano un bus dati a 8 bit; a a me eg I anm '90 vengona prodotti microprocessod can bus
da.ti a 64 bit (8 byte). La dimensione di MAR determina Pa.mpiezza della spazio di memoria fisica.
I microprocessori della prima generazione avevano il bug indirizzi a 16 bit; dalla fine degli anni '80
vengano prodotti microprocessori can bus indirizzi a 32 bit.

-,., . . ..
,
]1
,
)
Possiamo ora dare uno sguardo all'esecuzione delle istruzioni.
2.3.1 Esecuzione di un'istruzione
\
i
I
,
,
I
I
(
\
!
1
49

Elementi arChitetturali di base



D' >'"ETC=H
MAA <-
"
.01.",,_
WlHII:<_ W(loU.Il J
t ___a
lan"'""l ....
I"
<-
MD'
.
(: _......::>
CHloa apuaU9a
." I""ro..w.....
/' ...1 Pc """
'"
/
\
"oJ
,

D'
ona:C=UTC
I
c) il contenuto di MDR viene copiato in IR;
d) viene decodificato il codice operativo dell'istruzione in me incrementato PC in
modo da farlo puntare all'istruzione successiva (per la prossima fase di fetch).
La. successione dei passi descritti eschematizzata in Figura2.9.
a) iI centenuto di PC viene trasferito in MAR;
b) l'uscita di MAR viene presentato suI bus degli indirizzi e viene asserito il comando
di lettura della memoria; il contenuto della cella indirizzata viene caricato in
MDR;
Essendo llunita di cantrollo una macchina sequenziale sinerana, ogni passe pub \
essere riguardato come uno stata dell'automa corrispondente. suI secondo
stato viene letta la memoria e questa enormalmente pili lenta della logica di
CPUI epossibile che OCcorra inserire un congruo numero di deli wait per dar tempo }
aUa memoria di rispondere
lO
. Con il nostro modello, il fetch dell'istruzione richiede !
40 pili deli di clock.
Come piu avanti (Crr.H), U I
( etn che dete nano l 10m d U. re
condizioni, Ie prestazioni SOUQ ]:"" lip modo )
p'er cerca:re. conslste n _. eg,o fattore.""'er
nfer!ce VIe,;,...
10C': t _, _ _ . el Paragrafo A.ILl 1
Figura 2.9 Diagramma a stati relativo aUa fase di fetch. n ramo di uscita dalla fase di \
fetcb eselezionato in base at codice di istr'uzione. Ogni stato ha. 130 durata di un periodo
clock, eccetto iI secondo il quaie pub ricbiedere piu cicli a causa della (relativa) lentezza della I
memoria.
'.
"
,
'"
",
''',,'
.,'
'1'
,; ,
"
"', ,
.c,
,
","
" '",
.....
-'
-.'
...'
,
.,.

.'.,
.,
'1)
,
'.,
'-
"

"'I,

.'
.,1'
.. ,
,1,
'i ,I,
'1
,I.'
,
.-
.. {

....'
."
e viene scambiaj;a e il registro attraverso j
la"PII"
MAR eil registro deputato a contenere l'indirizzo
usus egli
in mzzi. i norma, Puscita eabilitata durante Ie fasi letturajscrittura, mentre
emantenuta. in terzo stato fuori cia queste fasi.
Capitolo 2
Memory nata
l'mformazlOneJti!i pm
azioni svolte durante 1a rase di esecuzione. Per questa esso estato aggregato a
UC, mentre tutti gli altri registri sono stati aggregati a UO.
PrD;;;-am Counter - EC e il registro che biene traccia dell'esecuzione del pro-
gramma. ESso contiene l'indirizzo dell'istruzione in esecuzione. Durante Pesecu-
zione dell'istruzione stessa
J
PC viene aggiornato in modo cia puntare all'istruzione
SUCCesSlva.
48
Reqistri di USQ generale - RO, Rl, ...Rn SQnQ per mantenere dati su cui
1& ALU eseiUlj> operazioni, come registri di appoggio, per l'indirizzamento ecc.
Nelle architetture moderne 1a tendenza ad avere un elevato numero di registri,
intercambiabili tra loro. In passato i registri di CPU erano pili specializzatij
in particolare si distingueva. il "registro accumulatore", come queUo cbe doveva
necessariamente essere impiegato in certe operazioni aritmetiche e logiche. Per
esempio, il registro AX dell'8086 ha funzione di accumulatore, nel sensa che
interviene in tutte Ie operazioni aritmetiche, mentre iI registro BX, che pure pub
essere usato in semplici operazioni aritmetiche, ha di norma 1a funzione di registro
di base nel calcolo deU'indirizzo di un operando.
IVl no essenziali. Infatti, per la trasmissione dell'in-
dirizzo deWistruzione basterebbe PC, per a rasmissione dell'indirizzo di un dato
basterebbe (il campo relativo di) IR, per il trasferimento dei dati basterebbe stabilire
un percorso tra memoria e il registro implicato. Q.i.....M.A.R e MDR permette
di disacco12piare la CPU dalla memoria.
,Fase di fetch .,!.m:Qgrammi il registro PC fornisce l'indirizzo
della prossima istruzione aa eseguire. Ware dI1etch. inizja con il prelievo de1Pistru
ziQne e si conclude con 13 sua decodifica. Pili dettagliatamente possiamo immaginare
me Ia fase di fetch proceda attraverso i seguenti passi:
9Natare che mentre per quanta gi riferisce a. MAR il flU8SO e unidirezianale (dal proceesore verso
memoria), per MDR jJ Busso dei dati e bidirezionale. Tradizionalmen,te 1a dimensiooe di MOR
I a. la m . arallelismo della macchin : i microprocessori della prima generazion'!
avevano un bus dati a 8 bit; a a me eg I anm '90 vengona prodotti microprocessod can bus
da.ti a 64 bit (8 byte). La dimensione di MAR determina Pa.mpiezza della spazio di memoria fisica.
I microprocessori della prima generazione avevano il bug indirizzi a 16 bit; dalla fine degli anni '80
vengano prodotti microprocessori can bus indirizzi a 32 bit.

50 Capitolo 2
51

Elementi architetturali di base


Rl
R2'
R3
.
TEMPI
A
L
U
TEMPO
. al terzo passe devono essere asserite Ie linee TEMPO..out e R3_in per caricare il
risultato della somma in R3.
Figura 2.10 Percorsi impiegati per l'esecuzione dell'istruzione ADD R3 ,Rl, R2 nel caso di W1
solo bus interno.
>
. L'unita. di controllo puo essere a logica cablata, oppure microprogrammata.
rUnita di cantralla a1: cablata La realizzaziane dell'Ua in lagica
nchledeJa:Pr.ogettazion sincrona il CU_l
dal diagramma di stato in forma aggregata di Figura. 2. 7 e
--
2,3,2 Due approcci per la progettazione dell'unita di controllo
E evidente che una maggior disponibilita di percorsi interrn alPunitA operativa
.consente di veloclzzare Ie Se, per esempio, IpotlZzlamo che
lJO Cl SlanO treous, 1a prece ente operazione pub essere svolta in un solo colpo di
clock. In Figura 2.11" viene present80ta una realizzazione di UO con tre bus interni.
Due di questi fungono da bus sorgenti e uno da bus di destinazione. In queste case
non servono (almene in riferimento all'esecuzione dell'istruzione di cui si sta parlando)
i registri di appoggio per Ia. AtU, in quanto il contenuto dei registri sorgente viene
. presentato alIa ALU tramite 51 e 52, mentre il risultato viene diretto 801 registro di
qestinazione tramite D. Le Hnee di comando dell'abilitazione delle uscite di R1 e R2,
di comando della AtU e di caricamento di R3 possono essere asserite tutte nelle stesso
periodo di clock.
Abbiamo considerate il caso di un'istruzione aritmetica. Identici ragionamenti
si applicano anche al case di istruzioni di altra natura. Per Ie istruzioni che fanno
riferimento alia memoria e possibile che anche in fase di esecuzione si richieda I
-:- troduzione di cicli di attesa (teoricamente 10 stesso puo accadere anche nel caso di
istruzioni di ingressojuscita). Ovviamente, se vengono inseriti stati di wait aumenta
il conto di clock per istruzione.

"
."
.ll,
,.

,
I!
'I'
"k
:
.'
'. ,,',
.' ,,,
, "i'
ii
'it
,I
,;,'1;
"

,I
J
..
.\;t
l
>.,
"
, \1
?,
'I
II
.'. ':-'
.,,1'
"
,1.,
,
, .'

'."J
'.I
i,
,[,

'1
'.




,I
,

:il
;J
,1:1

,
..

>1
,
,"t
.. '11
"til
,"I
::':1' .,
".' ,
,
0-
".
"
f '
'.,,:
,,;<
"
.,
"'/
,
..
'111
':'11,
','II
",
,
','1

'"',"'
,
11 Alia sta.to della. tecnologia. do porta all'adozione di memorie ca.che.
@riducendo il Dumero di stati attraversati, cercando di accorpare pili operazioni in
un medesimo state;
Gevitando gli stati di attesa dovuti alia lentezza della memoria rispetto alla CPU
ll
,
'&Se di esecuzione . In uesta I 'ca di controlla genera i segnali the fanno
svolgere Ie wow richieste in base a1 contenuto di IR eleven U 1C lZloni di stato.
Consu1:e"namo per esempio l'istruzione aritmetica. ADD R3 ,Rl, R2, it CUI efl'eflOe
R3+- Rl+R2: La sua esecuzione richiede che venga generata una sequEmza di se@lali
aventi l'effetto di:
@)presentare a.l.la ALU il contenuto dei due registri sorgente e selezionare
tuna camanda per la ALU;
il risultato in uscita dalla ALU a1 registro di destinazione.
Come piu volte osservato, Ie attivita che si svolgono entro l'unita. operativa caosis-
tono essenzialmente in trasferimenti. I trasferimenti di informazione tra registri e
registri di ua e tr80 registri e l'esterno (memoria 0 sistema di ingresso uscita) avven-
gono in passi successivi, i1 cui numero ein parte determinato da! numero. di percorsi
e1ispanibili.
the la struttura di
callegati gli inNessi e Ie uscite di
SOIOla comunicazione da lID reg
__'i"(J"ue ill essi mentre un' esso uo essere il bus, l'a.ltro
un registro di appoggio, registro TEMPI come a ema
ai' Figura 2.10. Per losresscrmotiVO iI relPstro ill in
Jtrn', mdiCato come :rEraPO ill
.----"lir'tali innto<:i 1'0<:o... II'7.i ..... m. deIPistruzione richiede almeno i seguenti passi:
a) 8obilitazione dell'uscita di R1 suI bus interne e caricamento di TEMPI;
b) 8obilitazione dell'uscita di R2 suI bus interno, asserzione del comando ADD all' ALU
e mernorizzazione dell'uscita di ALU in TEMPOj
c) abilitazione dell'uscita d.i TEMPO sul bus interno e caricamento in R3.
Ciascun passe corrisponclere a un periodo di clock. A ogni periodo di clock l'unita
di contrallo asserisce i comancU che fanno svolgere Ie azioni richieste. In particolare:
al primo dei passi precedenti cleve essere a,sserita la linea RLout, con 1a Quale si
abilita l'uscita di R1 suI bus, e 180 linea TEMPLin, can 180 quale si comanda il
caricamenta eli TEMPI dal bus;
. al secondo passo deve essere asserita 180 linea R2--out e 180 linea TEMPLout, in
modo da presentare aJIa ALU i due operandi; deve essere asserita 1a linea di
camanda ADD alia ALU e deve essere asserita la linea TEMPO-in, can la quale
si camanda il caricamenta in TEMPO dell'uscita di ALU;
)
\
\
I
I
f
\
i
I
I
I
l

l
!
: 1
I
50 Capitolo 2
51

Elementi architetturali di base


Rl
R2'
R3
.
TEMPI
A
L
U
TEMPO
. al terzo passe devono essere asserite Ie linee TEMPO..out e R3_in per caricare il
risultato della somma in R3.
Figura 2.10 Percorsi impiegati per l'esecuzione dell'istruzione ADD R3 ,Rl, R2 nel caso di W1
solo bus interno.
>
. L'unita. di controllo puo essere a logica cablata, oppure microprogrammata.
rUnita di cantralla a1: cablata La realizzaziane dell'Ua in lagica
nchledeJa:Pr.ogettazion sincrona il CU_l
dal diagramma di stato in forma aggregata di Figura. 2. 7 e
--
2,3,2 Due approcci per la progettazione dell'unita di controllo
E evidente che una maggior disponibilita di percorsi interrn alPunitA operativa
.consente di veloclzzare Ie Se, per esempio, IpotlZzlamo che
lJO Cl SlanO treous, 1a prece ente operazione pub essere svolta in un solo colpo di
clock. In Figura 2.11" viene present80ta una realizzazione di UO con tre bus interni.
Due di questi fungono da bus sorgenti e uno da bus di destinazione. In queste case
non servono (almene in riferimento all'esecuzione dell'istruzione di cui si sta parlando)
i registri di appoggio per Ia. AtU, in quanto il contenuto dei registri sorgente viene
. presentato alIa ALU tramite 51 e 52, mentre il risultato viene diretto 801 registro di
qestinazione tramite D. Le Hnee di comando dell'abilitazione delle uscite di R1 e R2,
di comando della AtU e di caricamento di R3 possono essere asserite tutte nelle stesso
periodo di clock.
Abbiamo considerate il caso di un'istruzione aritmetica. Identici ragionamenti
si applicano anche al case di istruzioni di altra natura. Per Ie istruzioni che fanno
riferimento alia memoria e possibile che anche in fase di esecuzione si richieda I
-:- troduzione di cicli di attesa (teoricamente 10 stesso puo accadere anche nel caso di
istruzioni di ingressojuscita). Ovviamente, se vengono inseriti stati di wait aumenta
il conto di clock per istruzione.

"
."
.ll,
,.

,
I!
'I'
"k
:
.'
'. ,,',
.' ,,,
, "i'
ii
'it
,I
,;,'1;
"

,I
J
..
.\;t
l
>.,
"
, \1
?,
'I
II
.'. ':-'
.,,1'
"
,1.,
,
, .'

'."J
'.I
i,
,[,

'1
'.




,I
,

:il
;J
,1:1

,
..

>1
,
,"t
.. '11
"til
,"I
::':1' .,
".' ,
,
0-
".
"
f '
'.,,:
,,;<
"
.,
"'/
,
..
'111
':'11,
','II
",
,
','1

'"',"'
,
11 Alia sta.to della. tecnologia. do porta all'adozione di memorie ca.che.
@riducendo il Dumero di stati attraversati, cercando di accorpare pili operazioni in
un medesimo state;
Gevitando gli stati di attesa dovuti alia lentezza della memoria rispetto alla CPU
ll
,
'&Se di esecuzione . In uesta I 'ca di controlla genera i segnali the fanno
svolgere Ie wow richieste in base a1 contenuto di IR eleven U 1C lZloni di stato.
Consu1:e"namo per esempio l'istruzione aritmetica. ADD R3 ,Rl, R2, it CUI efl'eflOe
R3+- Rl+R2: La sua esecuzione richiede che venga generata una sequEmza di se@lali
aventi l'effetto di:
@)presentare a.l.la ALU il contenuto dei due registri sorgente e selezionare
tuna camanda per la ALU;
il risultato in uscita dalla ALU a1 registro di destinazione.
Come piu volte osservato, Ie attivita che si svolgono entro l'unita. operativa caosis-
tono essenzialmente in trasferimenti. I trasferimenti di informazione tra registri e
registri di ua e tr80 registri e l'esterno (memoria 0 sistema di ingresso uscita) avven-
gono in passi successivi, i1 cui numero ein parte determinato da! numero. di percorsi
e1ispanibili.
the la struttura di
callegati gli inNessi e Ie uscite di
SOIOla comunicazione da lID reg
__'i"(J"ue ill essi mentre un' esso uo essere il bus, l'a.ltro
un registro di appoggio, registro TEMPI come a ema
ai' Figura 2.10. Per losresscrmotiVO iI relPstro ill in
Jtrn', mdiCato come :rEraPO ill
.----"lir'tali innto<:i 1'0<:o... II'7.i ..... m. deIPistruzione richiede almeno i seguenti passi:
a) 8obilitazione dell'uscita di R1 suI bus interne e caricamento di TEMPI;
b) 8obilitazione dell'uscita di R2 suI bus interno, asserzione del comando ADD all' ALU
e mernorizzazione dell'uscita di ALU in TEMPOj
c) abilitazione dell'uscita d.i TEMPO sul bus interno e caricamento in R3.
Ciascun passe corrisponclere a un periodo di clock. A ogni periodo di clock l'unita
di contrallo asserisce i comancU che fanno svolgere Ie azioni richieste. In particolare:
al primo dei passi precedenti cleve essere a,sserita la linea RLout, con 1a Quale si
abilita l'uscita di R1 suI bus, e 180 linea TEMPLin, can 180 quale si comanda il
caricamenta eli TEMPI dal bus;
. al secondo passo deve essere asserita 180 linea R2--out e 180 linea TEMPLout, in
modo da presentare aJIa ALU i due operandi; deve essere asserita 1a linea di
camanda ADD alia ALU e deve essere asserita la linea TEMPO-in, can la quale
si camanda il caricamenta in TEMPO dell'uscita di ALU;
)
\
\
I
I
f
\
i
I
I
I
l

l
!
: 1
I
'. 'I
,
,
I
1
I
I
\
I
)
1
\
53
\
La soluzione altemativa alia logica ca \
UtmJ. III cocmw>U-O

,
, .


-4:

-"-
-

,
_.-
->

: -> ,

,

->
i->

->
,
i

I

..,
.. -
"
Elementi architetturall di base
dall'automa. Esempi di questa problematica verranno trattati nel seguito.
Figura 2.12 Unita. di controllo a logica cablata.
tpnita di controllo micrQprogrammata
blata 'e la microprogrammazione.
La microprogrammazione si affermb negli sessanta come un .approccio ordi )
nato alia progettazione di unita. di controlto, in grade eli superare Ie difficolta insit,
nella logica cablata (complessita della logica, rigidita, alti costi per apportare modi
fiche alia logica stessa) [Pat83]. Con la microprogrammazione I'UC viene vista come
una sorta di elementare calcolatore nel calcolatore, in grado di eseguire passi di (mi \.
cro)programrna. Nella forma piu semplice l'De microprogrammata efatta da un; I
memoria (detta memoria di controllo
13
) contente Ie parole controllo (control wora, I
o microistruzioni) e da una unita. capace di indirizzare, come si trattasse dell'esecu
zione di un programma, 1a memoria di controllo. L'effetto risult.ante ela presentazion
p
... a'UO di sequenze di microistruzioni. I ragionamenti precedenti si concretizzano nelh \
schema di Figura 2. 13. I
La schema presenta un I'Contatore di micrQprogramma" (J!PC) che
viene incrementato a ogni impulso di clock, in modo che a. ogni impulso appaian
c
1
successive parole di controlla verso ua. In aggiunta a JiPC epresente una logica che h:
it potere di modificare il contenuto di JJPC stesso. Schematicamente il funzionamentl...
eit seguente:
\
13Nei microproccllsori la memoria di controlla e, ovvia.mcnte, una ROM ricavata sullo ste880 in J
della CPU. In passato, prima dell'avvento delle CPU integrate llU singolo chip, la memoria.
dl contrallo era. scrivibile (Writable Control Store - WCS). Era percib possibile caricare il micro-
programma. Questo consentiva al costruttore di apportare modi6che 0 miglioramenti al funziona \
mento dell'elaboratore semplicemente provvedendo un nuovo, opportuno microprogramma. Quest, )
soluzione era adottata IBM per la aerie 8/360 e 5/310.
'il
1
,
,
"
'.' '!
- '"
-. '1
..',
'I
, ,
,
)
"
'I
,
ii'
" '...;
"
,
" \
,,1
"

.
, '
W
"
l
' '
i '.
"
,
I
' '1
'"''

,

'("1'
'/';l
"" .
"
,
,,'I
;. I'
,;[.,
,Ail'
,
,
"
:
D
RO

Rn-l

A
L
U
V
PC
MAR
MDR
81 82
Capitolo 2
. i"
-"I'
si riferisce alIa fase di fetch. Facenda riferimento a questa diagramma,
l'unitai contrello eresponsabile, per esempio, di asserire Ie linee di comando che, 11
nel primo stato, determinano il caricamento del MAR can il contenuto di PC.
,
Almeno concettualmente si pub ricorrere all'armamentario discusso nell' Appen- .
dice A. In particolare, la rete sequenziale sincrona che realizza DC pub essere costruita
secondo 10 schema classico che prevede una rete combinatoria e un vettore di variabili ...
(binarie) di stato, secondo il classico modelia di rete sequenziale sincrona. Cib conduce ,)\
allo schema di Figura 2.12, dove la rete combinatoria ha come ingresso complessivo ....r-
J'insieme furFR:Me d.aJ contenutQ (del campo operazione) . .. to ,1,
di DO oltre che van'li di st i DC stessa. Le uscite di UC, a arte I linee
s no per 0 a a memoria e .. ;R.
a.lres
to
lkl .,,:
La sintesi della rete d.i Figura 2.12 risulta alquanto complessa a causa dell'elevato
numero di stati e ingressi; tale numero dipende essenzialmente dalla complessita. della .' J
'macchina (varieta. dei codici d.i istruzione, quantita. di oggetti manipolati ecc.). La
rete combinatoria dello schema puo essere banalmente realizzata con una ROM (Read
Only Memory) avente un numero di parole pari a tutte Ie possibili combinazioni :)
degli ingressi, essendo Ie parole di larghezza pari a1 numero di linee in uscita dalla . :lIe
rete Naturalmente questa solwzione e13 menD efficiente e richiede un grande
a.greco di memoria. Una . ne mi Hore e [icorr r a 10 iea to ammabile )1
(PLA), o.QQJlre dCQupndo a tecnjche C per ite . . ro ettazione _
caSo enecessaria un'analisi approfondita e comp1eta delle traiet on 15 ato _ '!i,;l
I( "'I s/',,,,,,
.' ,.E,
di convenienza suggeriscono di codificare 10 stato di ve, anziche tenere tante linee Quante "
sono Ie variabili di stato. ':<
',.,
Figura 2.11 Architettura con tre bus interni. Vistruzione ADD R3 ,Rl ,R2 richiede un solo
clock per la fase d.i esecuzione.
52
'. 'I
,
,
I
1
I
I
\
I
)
1
\
53
\
La soluzione altemativa alia logica ca \
UtmJ. III cocmw>U-O

,
, .


-4:

-"-
-

,
_.-
->

: -> ,

,

->
i->

->
,
i

I

..,
.. -
"

Elementi architetturall di base
dall'automa. Esempi di questa problematica verranno trattati nel seguito.
Figura 2.12 Unita. di controllo a logica cablata.
tpnita di controllo micrQprogrammata
blata 'e la microprogrammazione.
La microprogrammazione si affermb negli sessanta come un .approccio ordi )
nato alia progettazione di unita. di controlto, in grade eli superare Ie difficolta insit,
nella logica cablata (complessita della logica, rigidita, alti costi per apportare modi
fiche alia logica stessa) [Pat83]. Con la microprogrammazione I'UC viene vista come
una sorta di elementare calcolatore nel calcolatore, in grado di eseguire passi di (mi \.
cro)programrna. Nella forma piu semplice l'De microprogrammata efatta da un; I
memoria (detta memoria di controllo
13
) contente Ie parole controllo (control wora, I
o microistruzioni) e da una unita. capace di indirizzare, come si trattasse dell'esecu
zione di un programma, 1a memoria di controllo. L'effetto risult.ante ela presentazion
p
... a'UO di sequenze di microistruzioni. I ragionamenti precedenti si concretizzano nelh \
schema di Figura 2. 13. I
La schema presenta un I'Contatore di micrQprogramma" (J!PC) che
viene incrementato a ogni impulso di clock, in modo che a. ogni impulso appaian
c
1
successive parole di controlla verso ua. In aggiunta a JiPC epresente una logica che h:
it potere di modificare il contenuto di JJPC stesso. Schematicamente il funzionamentl...
eit seguente:
\
13Nei microproccllsori la memoria di controlla e, ovvia.mcnte, una ROM ricavata sullo ste880 in J
della CPU. In passato, prima dell'avvento delle CPU integrate llU singolo chip, la memoria.
dl contrallo era. scrivibile (Writable Control Store - WCS). Era percib possibile caricare il micro-
programma. Questo consentiva al costruttore di apportare modi6che 0 miglioramenti al funziona \
mento dell'elaboratore semplicemente provvedendo un nuovo, opportuno microprogramma. Quest, )
soluzione era adottata IBM per la aerie 8/360 e 5/310.
'il
1
,
,
"
'.' '!
- '"
-. '1
..',
'I
, ,
,
)
"
'I
,
ii'
" '...;
"
,
" \
,,1
"

.
, '
W
"
l
' '
i '.
"
,
I
' '1
'"''

,

'("1'
'/';l
"" .
"
,
,,'I
;. I'
,;[.,
,Ail'
,
,
"
:
D
RO

Rn-l

A
L
U
V
PC
MAR
MDR
81 82
Capitolo 2
. i"
-"I'
si riferisce alIa fase di fetch. Facenda riferimento a questa diagramma,
l'unitai contrello eresponsabile, per esempio, di asserire Ie linee di comando che, 11
nel primo stato, determinano il caricamento del MAR can il contenuto di PC.
,
Almeno concettualmente si pub ricorrere all'armamentario discusso nell' Appen- .
dice A. In particolare, la rete sequenziale sincrona che realizza DC pub essere costruita
secondo 10 schema classico che prevede una rete combinatoria e un vettore di variabili ...
(binarie) di stato, secondo il classico modelia di rete sequenziale sincrona. Cib conduce ,)\
allo schema di Figura 2.12, dove la rete combinatoria ha come ingresso complessivo ....r-
J'insieme furFR:Me d.aJ contenutQ (del campo operazione) . .. to ,1,
di DO oltre che van'li di st i DC stessa. Le uscite di UC, a arte I linee
s no per 0 a a memoria e .. ;R.
a.lres
to
lkl .,,:
La sintesi della rete d.i Figura 2.12 risulta alquanto complessa a causa dell'elevato
numero di stati e ingressi; tale numero dipende essenzialmente dalla complessita. della .' J
'macchina (varieta. dei codici d.i istruzione, quantita. di oggetti manipolati ecc.). La
rete combinatoria dello schema puo essere banalmente realizzata con una ROM (Read
Only Memory) avente un numero di parole pari a tutte Ie possibili combinazioni :)
degli ingressi, essendo Ie parole di larghezza pari a1 numero di linee in uscita dalla . :lIe
rete Naturalmente questa solwzione e13 menD efficiente e richiede un grande
a.greco di memoria. Una . ne mi Hore e [icorr r a 10 iea to ammabile )1
(PLA), o.QQJlre dCQupndo a tecnjche C per ite . . ro ettazione _
caSo enecessaria un'analisi approfondita e comp1eta delle traiet on 15 ato _ '!i,;l
I( "'I s/',,,,,,
.' ,.E,
di convenienza suggeriscono di codificare 10 stato di ve, anziche tenere tante linee Quante "
sono Ie variabili di stato. ':<
',.,
Figura 2.11 Architettura con tre bus interni. Vistruzione ADD R3 ,Rl ,R2 richiede un solo
clock per la fase d.i esecuzione.
52
\
54 Capitola 2
',LI
"I:
,.,
. ,.
",
>
Elementi architettura.li di base
55
'Iv
1,,2.3.3 Cablata 0 microprogrammata?
"i
,
I
\
,
,
f
!
I
(
\
I
l
I
I
\
I
I
\
UlQ!A' DI COhiiWlUJ)

,
M.
"-.,,
t;
-4
......,.. _ft,
-4
_......


-4, : -4
-4' '-4

i
-4
. ,
-4
---71
............
I
--
1.-..

c.._ <II .,.....
,
I
..
Figura 2.13 Dnita eli controllo microprogra.mmata
1. All'inizio della fase di fetch, JjPC punta alia locazione della ROM cia cui iniziano
13 sequenza di parole di controlle che determinano l'esecuzione dei passi del fetch
(la prima <Ii queste fara svolgere I'azione lIAR.... PC),
2. Ana fine della [ase di fetch, il codice di operazione in IR viene impiegato per de-
terminare l'indirizzQ della posizione cia cui parte la sequenza di parole di centrolle
(microroutine) corrispondenti alIa specifica operazione.
3. Duraotel'esecuzione della microroutine epossibile che J.LPC possa essere modifica.-
to in modo lion incrementale a causa di condizioni rilevate in UO 0 in dipendenza
della specifica microistruzione.
4. Al termine deU'esecuzione /LPC viene riportato a puntare alla posizione di ROM
da cui inizia la sequenza corrispondente aUa fase di fetch.
ABo schema precedente possono essere apportate molte variazioni. Invece di un
semplice sequenzializzatpre come queUo ipotizzato
l
PUC potrebbe impiegare unita. pili
intelligenti, pill simili alla logica complessiva di funzionamento di una CPU. In passa-
to sono stati prodotti integrati commerciali the consentivano la realizzazione di CPU
microprogrammate. In particolare
l
acquistarono notevole diffusione i dispasitivi della
serie 2900 della societa AMD [Adv76], detti anche bit-sliced microprocessors perche
consentivano d.i costruire CPU di qua!unque parallelismo utilizzando piu "fette
n
di
componenti
14
. Unlaltra soluzione cansiste nel codificare in ogni microistruzione l'in-
dirizzo della successiva
l
eliminando la parte relativa at JLPC, rna con grande spreco di
memoria di controllo. Vale la pena di ricordare che sene state anche castruite CPU
HNelia serle di dispositivi si t.rovavano blocchi corrispondenti a ALU e registri (AM2901 e AM2903)
e blocchi corrispondenti al control1ore del microprogramma (AM2009 e AM2910). Un di
CPU microprogrammata the fa impiego dei componenti della famiglia edeacritto in [BNB81J.
',\'
, '
'.
,.
..
,
.
"

>
'Ii
.,
,
"I'
": ! I,
,.
,
.(,
:-;1
}"
'1
...'
,
' ..
>
-t
',.'
,

,
','
"
"
,
".
,.'
; ..
.,

,
"
1' ,; .
,
.,
lli
(il microprocessore Motorola 68000) che avevano un ulteriore livello di rnicroprogram-
mazione, nel senso che il microprograrnma veniva interpretato da una ulteriore unita.
interna, can una ulteriore memoria di contrallo contenente il "nanoprogramrna".
Nel progettare una CPU microprogrammata enecessario muoversi tra due alter-
native estrerne in riferimento al Hvella d.i codifica dei micropragrammi. Si parla di
microprogrammazione orizzontale e verticale.
'. Nella microprograrnmazione orizzantale, ogni linea di cantrolla versO DO (e Ie
altre parti del sistema) corrispqnde a. un ben definito bit in modo che uno ain una
. certa posizione corrisponde alIa disattivazione del corrispondente segnale ed un 1
alIa sua attivazione. Ovviamente ques.ta soluziene camparta parole di centralla di
larghezza pari at numero delle Hnee di contrello e a un cattivo impiego della ROM,
infatti le parole di centrollo risultano praticarnente piene di zeri e qualche uno sparso.
Con 1a microprogrammaziane verticale le hnee di controllo sono raggruppate in
modo tale che linee appartenenti a uno stesso gruppo non possono essere asserite
conternporaneamente. In tal modo ogni gruppo e rappresentato da! numero di bit cbe
servono a codificare Ie Hoee di appartenenza
15
, riducendo in modo drastico la larghezza
delle parole di cantrollo. Naturalmente, la logica complessiva richiede l'aggiunta dei
corrispondenti decadificatori.
I primi sistemi di calcolo vennero costruiti in logica cablata. Anche i primi mini-
calcolatori (anni sessanta) vennero prodotti in logica cablata. Esempi notevoli di
minicalcolatori di questa tipo furana il PDP8 e PHP2116. Queste macch-ine avevano
un repertorio di qU,alche decina d.i istruzioni. Nel seguito (anni settanta' la micro-
programmazione divenne 1a regola. Microprocessori, minicalcolatori e macchine di
dirnensione media e alta vennero tutte progettate seguendo i cauoni della rnicropro-
grammazione. Era microprogranunato il Vax
l
1a macchina della Digital di dimensioni
medio-alte, che per anni ha occupato una posizione di grande rilievo nel mando dell'in-
formatica. Erano microprogrammati i microprocessori della prima e della seconda
generazione (8080, Z80, 8086, 68000). Caratteristica di queste macchine era quella di
avere un repertorio di istruzioni molto ampio e molto variato, da farle designare come
elSe (Complex Instruction Set Computers), Per esempio, il 68000, considerando i
diversi modi di indirizzamento
,
aveva oltre 300 istruzioni. Sono della meta. degli anni
settanta i1370/168 (IBM) e il Vax 11/789 (Digital), arnbedue con oltre 400.000 bit di
memoria di cantrallo.
A partire dagli anni ottanta c'e stata un'inversione di tendeo'La che ha riportato
;0 auge 1a logica cablata, anche in conseguenza dell'affermarsi delle cosiddette archi-
tetture RISe (Reduced Instruction Set Computers) [HP92j, [Hop87], Emblematico e
il caso dell'architettura Intel. Il primo membro della famiglia, 1'8086 era una macchi-
na microprogrammata
l
una tipica macchina CISCo Le ultime CPU, che
l
camle noto,
mantengano 1a compatibilita. architetturale can 1'8086 e quindi un ampio repertorio
ISSi tratta del numero intero superiore allogaritmo in base 2 del numero di linee nel gruppo.
\
54 Capitola 2
',LI
"I:
,.,
. ,.
",
>
Elementi architettura.li di base
55
'Iv
1,,2.3.3 Cablata 0 microprogrammata?
"i
,
I
\
,
,
f
!
I
(
\
I
l
I
I
\
I
I
\
UlQ!A' DI COhiiWlUJ)

,
M.
"-.,,
t;
-4
......,.. _ft,
-4
_......


-4, : -4
-4' '-4

i
-4
. ,
-4
---71
............
I
--
1.-..

c.._ <II .,.....
,
I
..
Figura 2.13 Dnita eli controllo microprogra.mmata
1. All'inizio della fase di fetch, JjPC punta alia locazione della ROM cia cui iniziano
13 sequenza di parole di controlle che determinano l'esecuzione dei passi del fetch
(la prima <Ii queste fara svolgere I'azione lIAR.... PC),
2. Ana fine della [ase di fetch, il codice di operazione in IR viene impiegato per de-
terminare l'indirizzQ della posizione cia cui parte la sequenza di parole di centrolle
(microroutine) corrispondenti alIa specifica operazione.
3. Duraotel'esecuzione della microroutine epossibile che J.LPC possa essere modifica.-
to in modo lion incrementale a causa di condizioni rilevate in UO 0 in dipendenza
della specifica microistruzione.
4. Al termine deU'esecuzione /LPC viene riportato a puntare alla posizione di ROM
da cui inizia la sequenza corrispondente aUa fase di fetch.
ABo schema precedente possono essere apportate molte variazioni. Invece di un
semplice sequenzializzatpre come queUo ipotizzato
l
PUC potrebbe impiegare unita. pili
intelligenti, pill simili alla logica complessiva di funzionamento di una CPU. In passa-
to sono stati prodotti integrati commerciali the consentivano la realizzazione di CPU
microprogrammate. In particolare
l
acquistarono notevole diffusione i dispasitivi della
serie 2900 della societa AMD [Adv76], detti anche bit-sliced microprocessors perche
consentivano d.i costruire CPU di qua!unque parallelismo utilizzando piu "fette
n
di
componenti
14
. Unlaltra soluzione cansiste nel codificare in ogni microistruzione l'in-
dirizzo della successiva
l
eliminando la parte relativa at JLPC, rna con grande spreco di
memoria di controllo. Vale la pena di ricordare che sene state anche castruite CPU
HNelia serle di dispositivi si t.rovavano blocchi corrispondenti a ALU e registri (AM2901 e AM2903)
e blocchi corrispondenti al control1ore del microprogramma (AM2009 e AM2910). Un di
CPU microprogrammata the fa impiego dei componenti della famiglia edeacritto in [BNB81J.
',\'
, '
'.
,.
..
,
.
"

>
'Ii
.,
,
"I'
": ! I,
,.
,
.(,
:-;1
}"
'1
...'
,
' ..
>
-t
',.'
,

,
','
"
"
,
".
,.'
; ..
.,

,
"
1' ,; .
,
.,
lli
(il microprocessore Motorola 68000) che avevano un ulteriore livello di rnicroprogram-
mazione, nel senso che il microprograrnma veniva interpretato da una ulteriore unita.
interna, can una ulteriore memoria di contrallo contenente il "nanoprogramrna".
Nel progettare una CPU microprogrammata enecessario muoversi tra due alter-
native estrerne in riferimento al Hvella d.i codifica dei micropragrammi. Si parla di
microprogrammazione orizzontale e verticale.
'. Nella microprograrnmazione orizzantale, ogni linea di cantrolla versO DO (e Ie
altre parti del sistema) corrispqnde a. un ben definito bit in modo che uno ain una
. certa posizione corrisponde alIa disattivazione del corrispondente segnale ed un 1
alIa sua attivazione. Ovviamente ques.ta soluziene camparta parole di centralla di
larghezza pari at numero delle Hnee di contrello e a un cattivo impiego della ROM,
infatti le parole di centrollo risultano praticarnente piene di zeri e qualche uno sparso.
Con 1a microprogrammaziane verticale le hnee di controllo sono raggruppate in
modo tale che linee appartenenti a uno stesso gruppo non possono essere asserite
conternporaneamente. In tal modo ogni gruppo e rappresentato da! numero di bit cbe
servono a codificare Ie Hoee di appartenenza
15
, riducendo in modo drastico la larghezza
delle parole di cantrollo. Naturalmente, la logica complessiva richiede l'aggiunta dei
corrispondenti decadificatori.
I primi sistemi di calcolo vennero costruiti in logica cablata. Anche i primi mini-
calcolatori (anni sessanta) vennero prodotti in logica cablata. Esempi notevoli di
minicalcolatori di questa tipo furana il PDP8 e PHP2116. Queste macch-ine avevano
un repertorio di qU,alche decina d.i istruzioni. Nel seguito (anni settanta' la micro-
programmazione divenne 1a regola. Microprocessori, minicalcolatori e macchine di
dirnensione media e alta vennero tutte progettate seguendo i cauoni della rnicropro-
grammazione. Era microprogranunato il Vax
l
1a macchina della Digital di dimensioni
medio-alte, che per anni ha occupato una posizione di grande rilievo nel mando dell'in-
formatica. Erano microprogrammati i microprocessori della prima e della seconda
generazione (8080, Z80, 8086, 68000). Caratteristica di queste macchine era quella di
avere un repertorio di istruzioni molto ampio e molto variato, da farle designare come
elSe (Complex Instruction Set Computers), Per esempio, il 68000, considerando i
diversi modi di indirizzamento
,
aveva oltre 300 istruzioni. Sono della meta. degli anni
settanta i1370/168 (IBM) e il Vax 11/789 (Digital), arnbedue con oltre 400.000 bit di
memoria di cantrallo.
A partire dagli anni ottanta c'e stata un'inversione di tendeo'La che ha riportato
;0 auge 1a logica cablata, anche in conseguenza dell'affermarsi delle cosiddette archi-
tetture RISe (Reduced Instruction Set Computers) [HP92j, [Hop87], Emblematico e
il caso dell'architettura Intel. Il primo membro della famiglia, 1'8086 era una macchi-
na microprogrammata
l
una tipica macchina CISCo Le ultime CPU, che
l
camle noto,
mantengano 1a compatibilita. architetturale can 1'8086 e quindi un ampio repertorio
ISSi tratta del numero intero superiore allogaritmo in base 2 del numero di linee nel gruppo.
16In realta l'insieme di istruzioni del Pentium e piu ampio di queUo dell'8086 a. ca.usa delle
accresciute funziona.lita..
17 Si riteneva. che i compila.tori per architetture can modello eli esecllzione a stack (si veda. piu
avanti) fossero piu semplici e piu affidabili di quelli per architetture can modella dl esecuzione a
registri.
di istruzioni
16
, hanne delle soluzioni interne caratteristiche delle macchine RlSe, Con
ampio impiego di logica cabiata.
Un'analisi approfondita delle ragioni che hanno portato ali'abbandono della mi-
croprogrammazione e alPaffermazione delle architetture RISe 8i trova in [Pat85]. QUi
di seguito se ne da un sinteticQ resoconto.
All'epoca in cui la microprogrammazione era dominante si riteneva ehe repertori
di istruzioni estesi fossero preferibili, in quanta avrebbero facilitate la costruzione dei
compilatori
17
, avrebbero alleviato la cosiddetta software crisis, in quanta la macchina
avrebbe eseguito istruzioni molto simili a queUe dei linguaggi di alto Uvello, riducendo
1a differenza tra linguaggio di programmazione e linguaggio macchina. Vuso efficiente
della memoria centrale, aHara molto COStos3, era il primo obiettivo di qualunque solu-
zione architettonica. Si riteneva che con un repertorio di istruzioni esteso i programmi
avrebbero occupato menD memoria. Inoltre essendo la memoria di controlla motto pili
veloce della memoria centrale, portare funzionalita nella prima avrebbe migliorato Ie
prestazioni della macchina.
Tuttavia nella stesso periodo di tempo in cui la microprogrammazione
geva i suoi massimi fasti (anni settant3o), Ie memorie a semiconduttore rimpiazzarono
completamente Ie memorie a nuclei magnetici, riducendo di molte il in
termini di velocita, della memoria di controllo. In aggiunta, si comincio a impiegare
memorie cache, riducendo ulteriormente i tempi di esecuzione dei programmi. Infine,
'alcuni studi sui comportamento dei programmi compilati dimostrarono che 1'80% cir-
ca delle istruzioni eseguite corrispondeva al solo 20% del repertorio, ovvero che buona
parte del repertorio eli istruzioni era semplicemente superfluo e non utilizzato. Per-
cie S1 trasse l'ovvia conclusione che conveniva investire nella riduzione dei tempi d.i
esecuz10ne d.i quel 20%, anziche aggiungere raffinate istruzioni, quasi rna! usate, rna
responsabili dell'allungamento del tempo di cicIo di rnaechina.
Le precedenti considerazioni motivarono 130 sperimentazione di un nuovo criterio
progettuale: costruire processori molto veloci (conseguentemente con un repertorio
di istruzionl ristretto) e ricorrere sempre di pili all'ottimizzazione nei compilatori. In
particolare 13i svilupparono i seguenti concetti.
Le istruzioni devono e13sere sernplici, almeno che non ci siano buoni motivi op-
posti. Se l'introduziane di una operazione d.i ma.cchina fa crescere del 10% it
periodo d.i clock, allora essa deve produrre una riduzione di almeno Wl 10% del
numero totale di cicli eseguiti. Senza considerare che l'introduzione di una nuova
operazione camporta comunque complicazioni e uso di risorse sull'integrato.
Can 1'uso di memorie veloci e delle memorie cache, Ie istruzioni di macchina
pos13ono essere eseguite alIa stessa. velocita delle microistruzioni, non c'e dunque
vantaggio a apostare Ie funzionalita. a livello di microcodice. Spostare Ie funzio-
nalita a livello di ha solo l'effetto di rendere pili difficoItose modifiche
e cambiamenti: molto meglio modificare una libreria di sistema che modificare
una memoria di controllo.
,
I
I
)
\
I
\
l
I
I
I
I
)
l
,
I
I
I
, Tutte Ie istruzioni dovrebbero occupare 10 stesso spazio d.i memoria (una parola)
e dovrebbe essere previsto un ristretto numerO"di formati, in modo che I'interpre-
tazione del codice posss. avvenire attraverso un semplice decodificatore (una rete
AND-OR). Se Ie istruzioni vengono codificate in modo "ordinato" possono essere
usati accorgimenti per velocizzare l'esecuzione (ci si riferisce qui all'esecuzione in
pipeline), con istruzioni complesse
1
.
8
. La.semplificazi?ne
del repertorio delle LstrUZlOnI tende a far aumentare 130 dlIDenslOoe del codlce.
Cio non costituisce problema per quanto si riferisce all'occupazioDe di memoria,
vista Is. tendenza alIa riduzione dei relativi costi e all'aumento della densita. Dal
punto di vista i guada!SJl:i che si Del is-
'truzioni sono supenon all'effetto negatIvo del maggIor numero dl lstruz10m per
programma.
'1 compilatori sene in grade di produrre sequenze ottimizzate di semplici opera-
zioni. di macchina, indipendentemente dalla .compIessita. del linguaggio. In altri
termini, ecambiato l'atteggiamento nei confronti della compilazione: un compi-
Iatore deve sbrogliare in modo automatico ed efficiente tutte le complicazioni che
possono sorgere nel tradurre da linguaggio di alto HveHo a linguaggio di basso
livello, in modo da essere motivo di semplificazione del repertorio di istruzioni
anziche essere motivo di complicazione.
Le conclusioni che si traggono dai precedenti ragionamenti fOrnlano it nueleo
concettuale aila base delle macchine RlSC.
L'architettura dovrebbe prevedere solo operazioni tra registri (e non tra registri
e memoria 0 tra memoria e memoria) e semplici operazioni di lettura/scrittura
in memorial con ridotte modalita. di indirizzamento.
11' compilatore deve essere costruito in modo da fare il miglior uso possibile dei
registri e tenere, per quanta possibile, Ie variabili nei registri stessi, riducendo al
minimo it traffico con 130 memoria. Per questa motivo la CPU dovrebbe presentare
un consistente numero di registri .
1St doveroso aggiungere che Ie pipeline vengono ormai usate anche in a.rchitetture compleese. La
stessa architettura IBM 8/390 (anni novanta), discendente da.1l'a.rchitettura 8/360 (anni sessanta), e
stata portata au singolo chip con una. soluzione che prevede una pipeline di ben 10 stati con la quale
si riesce a trattare uno repertorio di istruzioni malta complesso[SAC+99J.
,
'E interessante osservare che i progettisti Intel sono riusciti attraverso un numero
di mgegnosi accorgimenti a introdurre i meccanismi tipici delle tecnologie RISe, per
esempio 130 pipeline, nei processori della famiglia x86. Nel corso qell'evoluzione, 1'ar-
chitettura x86 ha subito tanti e tali miglioramenti che ne rendono il funzionamento
. sempre piu simile a quello delle maccbine RlSC. Un aspetto interessate equello che 8i
riferisce ai. registri ai uso generale. L'architettura x86 prevede un numero d.i registri
di CPU alquanto ridotto, mal nello sviluppo d.i nuovi modelli, ai progettisti Intel,
non era data 'la possibilita. d.i aggiungerne di ulteriori per ovvi motivi di compatibilita
. all'indietro. La soluzione adottata a partire dal Pentium-Pro consiste nel prevedere
un insfeme interno di registri, piu ampio d.i quello visibile da! programmatore, e di
mappare i registri visibili dal programmatore sui registri intemL nrisultato eche seb-
bene l'architettura continui a mostrare il solito insieme di registri, di fatto ci sono 40
,
.'.
,
,
.,
.>;
,
, ,:.
";
11
.::
.,.
,.
," ,I
::",
.
'."".', .
.,
,
',1

.-\,
'- ;..
'i
l
:
.,
-
.,'"
,
]I
'.1.;1:
<'I ,;}
;i
,
,
"i;'
:--;:. -
,.;.'
".'
'il'!:"'- ' ..
. _ .
. .y', .. -
.<' ..

:"'. , Elementi architetturali di base 57
,.
, '."
',l'
4
, .: i,,1
.1
1
:', '-)
.':
-:'
Capitolo 2 56

16In realta l'insieme di istruzioni del Pentium e piu ampio di queUo dell'8086 a. ca.usa delle
accresciute funziona.lita..
17 Si riteneva. che i compila.tori per architetture can modello eli esecllzione a stack (si veda. piu
avanti) fossero piu semplici e piu affidabili di quelli per architetture can modella dl esecuzione a
registri.
di istruzioni
16
, hanne delle soluzioni interne caratteristiche delle macchine RlSe, Con
ampio impiego di logica cabiata.
Un'analisi approfondita delle ragioni che hanno portato ali'abbandono della mi-
croprogrammazione e alPaffermazione delle architetture RISe 8i trova in [Pat85]. QUi
di seguito se ne da un sinteticQ resoconto.
All'epoca in cui la microprogrammazione era dominante si riteneva ehe repertori
di istruzioni estesi fossero preferibili, in quanta avrebbero facilitate la costruzione dei
compilatori
17
, avrebbero alleviato la cosiddetta software crisis, in quanta la macchina
avrebbe eseguito istruzioni molto simili a queUe dei linguaggi di alto Uvello, riducendo
1a differenza tra linguaggio di programmazione e linguaggio macchina. Vuso efficiente
della memoria centrale, aHara molto COStos3, era il primo obiettivo di qualunque solu-
zione architettonica. Si riteneva che con un repertorio di istruzioni esteso i programmi
avrebbero occupato menD memoria. Inoltre essendo la memoria di controlla motto pili
veloce della memoria centrale, portare funzionalita nella prima avrebbe migliorato Ie
prestazioni della macchina.
Tuttavia nella stesso periodo di tempo in cui la microprogrammazione
geva i suoi massimi fasti (anni settant3o), Ie memorie a semiconduttore rimpiazzarono
completamente Ie memorie a nuclei magnetici, riducendo di molte il in
termini di velocita, della memoria di controllo. In aggiunta
,
si comincio a impiegare
memorie cache, riducendo ulteriormente i tempi di esecuzione dei programmi. Infine,
'alcuni studi sui comportamento dei programmi compilati dimostrarono che 1'80% cir-
ca delle istruzioni eseguite corrispondeva al solo 20% del repertorio, ovvero che buona
parte del repertorio eli istruzioni era semplicemente superfluo e non utilizzato. Per-
cie S1 trasse l'ovvia conclusione che conveniva investire nella riduzione dei tempi d.i
esecuz10ne d.i quel 20%, anziche aggiungere raffinate istruzioni, quasi rna! usate, rna
responsabili dell'allungamento del tempo di cicIo di rnaechina.
Le precedenti considerazioni motivarono 130 sperimentazione di un nuovo criterio
progettuale: costruire processori molto veloci (conseguentemente con un repertorio
di istruzionl ristretto) e ricorrere sempre di pili all'ottimizzazione nei compilatori. In
particolare 13i svilupparono i seguenti concetti.
Le istruzioni devono e13sere sernplici, almeno che non ci siano buoni motivi op-
posti. Se l'introduziane di una operazione d.i ma.cchina fa crescere del 10% it
periodo d.i clock, allora essa deve produrre una riduzione di almeno Wl 10% del
numero totale di cicli eseguiti. Senza considerare che l'introduzione di una nuova
operazione camporta comunque complicazioni e uso di risorse sull'integrato.
Can 1'uso di memorie veloci e delle memorie cache, Ie istruzioni di macchina
pos13ono essere eseguite alIa stessa. velocita delle microistruzioni, non c'e dunque
vantaggio a apostare Ie funzionalita. a livello di microcodice. Spostare Ie funzio-
nalita a livello di ha solo l'effetto di rendere pili difficoItose modifiche
e cambiamenti: molto meglio modificare una libreria di sistema che modificare
una memoria di controllo.
,
I
I
)
\
I
\
l
I
I
I
I
)
l
,
I
I
I
, Tutte Ie istruzioni dovrebbero occupare 10 stesso spazio d.i memoria (una parola)
e dovrebbe essere previsto un ristretto numerO"di formati, in modo che I'interpre-
tazione del codice posss. avvenire attraverso un semplice decodificatore (una rete
AND-OR). Se Ie istruzioni vengono codificate in modo "ordinato" possono essere
usati accorgimenti per velocizzare l'esecuzione (ci si riferisce qui all'esecuzione in
pipeline), con istruzioni complesse
1
.
8
. La.semplificazi?ne
del repertorio delle LstrUZlOnI tende a far aumentare 130 dlIDenslOoe del codlce.
Cio non costituisce problema per quanto si riferisce all'occupazioDe di memoria,
vista Is. tendenza alIa riduzione dei relativi costi e all'aumento della densita. Dal
punto di vista i guada!SJl:i che si Del is-
'truzioni sono supenon all'effetto negatIvo del maggIor numero dl lstruz10m per
programma.
'1 compilatori sene in grade di produrre sequenze ottimizzate di semplici opera-
zioni. di macchina, indipendentemente dalla .compIessita. del linguaggio. In altri
termini, ecambiato l'atteggiamento nei confronti della compilazione: un compi-
Iatore deve sbrogliare in modo automatico ed efficiente tutte le complicazioni che
possono sorgere nel tradurre da linguaggio di alto HveHo a linguaggio di basso
livello, in modo da essere motivo di semplificazione del repertorio di istruzioni
anziche essere motivo di complicazione.
Le conclusioni che si traggono dai precedenti ragionamenti fOrnlano it nueleo
concettuale aila base delle macchine RlSC.
L'architettura dovrebbe prevedere solo operazioni tra registri (e non tra registri
e memoria 0 tra memoria e memoria) e semplici operazioni di lettura/scrittura
in memorial con ridotte modalita. di indirizzamento.
11' compilatore deve essere costruito in modo da fare il miglior uso possibile dei
registri e tenere, per quanta possibile, Ie variabili nei registri stessi, riducendo al
minimo it traffico con 130 memoria. Per questa motivo la CPU dovrebbe presentare
un consistente numero di registri .
1St doveroso aggiungere che Ie pipeline vengono ormai usate anche in a.rchitetture compleese. La
stessa architettura IBM 8/390 (anni novanta), discendente da.1l'a.rchitettura 8/360 (anni sessanta), e
stata portata au singolo chip con una. soluzione che prevede una pipeline di ben 10 stati con la quale
si riesce a trattare uno repertorio di istruzioni malta complesso[SAC+99J.
,
'E interessante osservare che i progettisti Intel sono riusciti attraverso un numero
di mgegnosi accorgimenti a introdurre i meccanismi tipici delle tecnologie RISe, per
esempio 130 pipeline, nei processori della famiglia x86. Nel corso qell'evoluzione, 1'ar-
chitettura x86 ha subito tanti e tali miglioramenti che ne rendono il funzionamento
. sempre piu simile a quello delle maccbine RlSC. Un aspetto interessate equello che 8i
riferisce ai. registri ai uso generale. L'architettura x86 prevede un numero d.i registri
di CPU alquanto ridotto, mal nello sviluppo d.i nuovi modelli, ai progettisti Intel,
non era data 'la possibilita. d.i aggiungerne di ulteriori per ovvi motivi di compatibilita
. all'indietro. La soluzione adottata a partire dal Pentium-Pro consiste nel prevedere
un insfeme interno di registri, piu ampio d.i quello visibile da! programmatore, e di
mappare i registri visibili dal programmatore sui registri intemL nrisultato eche seb-
bene l'architettura continui a mostrare il solito insieme di registri, di fatto ci sono 40
,
.'.
,
,
.,
.>;
,
, ,:.
";
11
.::
.,.
,.
," ,I
::",
.
'."".', .
.,
,
',1

.-\,
'- ;..
'i
l
:
.,
-
.,'"
,
]I
'.1.;1:
<'I
,;}
;i
,
,
"i;'
:--;:. -
,.;.'
".'
'il'!:"'- ' ..
. _ .
. .y', .. -
.<' ..

:"'. , Elementi architetturali di base 57
,.
, '."
',l'
4
, .: i,,1
.1
1
:', '-)
.':
-:'
Capitolo 2 56

,
I
I
\
58 Capitolo 2
registri interni che prendono effettivamente parte all'elaborazione. La tecnica, peral-
trc non esclusiva di questa architettura, edetta register renaming e viene largamente
impiegata a part4'e dagli anni novanta.
"
'i'
'.I
,:
,0.
-
i
, iI .
,'.,
,:.,
,
Elementi architetturali di base 59
richiedono, di norma, frequenze di clock piu basse. Da qui 1a spinta verso re-
pertod di istruzioni semplici (RISe), che permettano di diminuire i ritardi di
propagazione nella logica di controllo e, quindi, di ridurre l'ampiezza del periodo
di clock.
,,.
La discussione precedente ci offre l'opportunita di fare alcune considerazioni sulle "
prestazioni delle CPU e eli introdurre una formula cbe reude bene conto di quali )1.
, ,
sonG i fatton cbe Ie determinano. La valutazione delle prestazioni di un sistema di ':,' )
elaborazione ecosa alquanto compiessa e coinvolge tutti gli aspetti del funzionamento .;'':1:,
,
della macchina. Quanto segue si riferisce alla quantificazione delle prestazioni della
CpuD tempo ela misura pili ovvia delle prestazioni [HP93]. Si consideri un generico 't1
problema 0 un generico programma, 8i indichi con N it numcro eli cich di 1% J:
esso comporta e sia ..t...Jst. freguenza del clock. Indkando can Tcpu 1a quantita di .,'; i
tempo di CPU richiesta per l'esecuzione del stesso, silla: :. "!
- . ,:.
.";. '
t 1J-<;CeD..;.iI
co:':
,
mentre:
(2.2)
N = LX,Cp,
dove Cpi eil numero di clock richiesto dall'istruzione Ii. Si ha. dunque:
Cp/ = (LX,Cp,)/N, = LX'Cpi
It numero media di cieli di clock per istruzione (CPf), dipende dall'architettura
e cia! repertorio delle istruzioni. Ovviamente, istruzioni sernplici ricbiedono un
minor numero di cieli. Attraverso Pimpiego di tecniche come la pipeline epossibile
portare Cpr a un valore molto vicino a 1. L'aggiunta di pill unita di esecuzione
operanti in parallelo (macchine superscalari) e di una 0 piu unita di pre/etch
permette di rendere C
PJ
minore d.i 1.
LXi = Ni,t
.. .,
',' '"'j ,
2.4.J La valutazione delle prestazioni
essendo Xi Ia frequenza con cui l'istruzione Ii compare nel mix di istruzioni del
programma.. Uinsieme degli Xi costituisce il profilo di esecuzione del programma.
Per quanta estate detto ai paragrafi precedenti (Cfr. 2.3.1), Cpi eit numero di
cieli di clock che vanno daWinizio della Case di fetch alia conclusione della fase di
esecuzione. Se per it momento ipotizziarno che Ia CPU esegua senza cicll di wait, cpl e
direttamente ricavabile dai manuali del produttore
20
. Nell'ipotesi in cui si canosca il
profila di esecuzione equnque possibile una valutazione sulla carta. Infatti, ricorrendo
ai manuali per i Cpi, si pub calcolare CPf e quindi Tcpu. Al ParagrafoC.6 viene fatto
un confronto tra Ie prestazioni dei modelli 601 e 604 delParchitettura PowerPC.
In riferimento alIa 2.1 vogliamo ora svolgere atcune considerazioni che consentano di
comprendere meglio la portata della 2.1 stessa e di orientarsi nella valutaziane pratica
delle prestazioni di un sistema.
Per prima cosa consideriamo il numero "medio di clock per istruzione CPl. Si
indichi con h la generica istruzione e con Xi il numero di volte in cui essa viene
eseguita nel problema in esame. Ovviamente
20Se si considera una ma.cchina. reale, e possibile che il medesi,mo codice di istruzione (a. UveUo
di lingua.ggio assembler) preveda differenti modalita di esecuzione, con differente Rumero di periodi
. di clock per ciascuna di esse. E' il caso per esempio dell'istruzione MOV nell'architettura. Intel. Per
essa il Rumero di deli di clock varia considerevolmente a seconda della natura della !oryente e della.
ae!tinazione. Cio non costituisce ostacolo a.l nostro ragionamento, basta ritenere Ie differenti moda-
lita di esecuzione della stessa istruzione come istruzioni difi'erenti. Del resto Ie differenti modalita si
riducono necessariamente in esplicite differenze nel corrispondente codice di maccbina..
,0;
':,
"
"
': ,.,
'I'
<
.,
. ;,
,
'J,
,,:
"I'
.:' .
, .

1
:; .

,..,
: ,
.,[
.:
,."'1.
.c'l

,..
,
,"
c1

"I
.
',':.'
"I
.'-,- -
.
.,? "
wen
,:'1
Tcpu = N/j
La frequenza di clock della CPU, j, elegata alla tecnologia e all'organizzazione
architetturale della CPU. D progresso delle tecnologie elettronicbe estato ver-
tiginoso. Basti pensare che se nella. prima meta. anni settanta, (con primi mi-
croprocessori) Ie frequenze erano inferiori a 1MHz, a fine anni ottanta gia si
avvicinavano ai lOOMHz, per raggiungere 1GHz (annunciato) a fine anni no-
vanta
19
. Per qiJanto si riferisce all'aspetto Ie istruzioni complesse
n cumero di istruzioni di macchina del programma, Ni,t, e una quantita ehe
elipeode dal repertorio di istruzioni e da! grado di ottimizzazione del compilatare.
Compilatori diversi possoeo dare luogo a N
ilt
diversi. Ovviamente uno stesso
compilatore, che generi codice per due macchine diverse, dara N
ilt
diversi. In
questa sense, un repertorio ampio d.i istruzioni (CISC) favorisce il miglioramento
qelle prestazioni.
19All'alba del 2000 i PC di fascia media sui mercato erano a 500 MHz.
2.4 Prestazioni della CPU
Tcpu = (N,., x CPJ)/ j = N,., X CPJ X T. (2.1)
dove T = 1/j rappresenta il periodo di clock.
La 2.1 foroisee la cbiave per capire come Ie prestazioni della CPU dipendono da
fattori tecnologici e architetturali.
Si indichi ora con il numero di istruzioni di macchina corrispondente al
programma e si indichi coo C
PJ
iTnumero medio di clock per istruzione di rnacchina.
Ovviamente CPT edefinito come: 1\. \". ,..0 ,. 0
rC ./' ow.. <:_tX..
\ Cp/ = N/N,,, =C
p
', '!:<;t
sostituendo nella precedente relazione si ottiene:
\
r
\
1
\
1
\
I
I
r
\
\
I
,
I
,)
'"
,
I
I
\
58 Capitolo 2
registri interni che prendono effettivamente parte all'elaborazione. La tecnica, peral-
trc non esclusiva di questa architettura, edetta register renaming e viene largamente
impiegata a part4'e dagli anni novanta.
"
'i'
'.I
,:
,0.
-
i
, iI .
,'.,
,:.,
,
Elementi architetturali di base 59
richiedono, di norma, frequenze di clock piu basse. Da qui 1a spinta verso re-
pertod di istruzioni semplici (RISe), che permettano di diminuire i ritardi di
propagazione nella logica di controllo e, quindi, di ridurre l'ampiezza del periodo
di clock.
,,.
La discussione precedente ci offre l'opportunita di fare alcune considerazioni sulle "
prestazioni delle CPU e eli introdurre una formula cbe reude bene conto di quali )1.
, ,
sonG i fatton cbe Ie determinano. La valutazione delle prestazioni di un sistema di ':,' )
elaborazione ecosa alquanto compiessa e coinvolge tutti gli aspetti del funzionamento .;'':1:,
,
della macchina. Quanto segue si riferisce alla quantificazione delle prestazioni della
CpuD tempo ela misura pili ovvia delle prestazioni [HP93]. Si consideri un generico 't1
problema 0 un generico programma, 8i indichi con N it numcro eli cich di 1% J:
esso comporta e sia ..t...Jst. freguenza del clock. Indkando can Tcpu 1a quantita di .,'; i
tempo di CPU richiesta per l'esecuzione del stesso, silla: :. "!
- . ,:.
.";. '
t 1J-<;CeD..;.iI
co:':
,
mentre:
(2.2)
N = LX,Cp,
dove Cpi eil numero di clock richiesto dall'istruzione Ii. Si ha. dunque:
Cp/ = (LX,Cp,)/N, = LX'Cpi
It numero media di cieli di clock per istruzione (CPf), dipende dall'architettura
e cia! repertorio delle istruzioni. Ovviamente, istruzioni sernplici ricbiedono un
minor numero di cieli. Attraverso Pimpiego di tecniche come la pipeline epossibile
portare Cpr a un valore molto vicino a 1. L'aggiunta di pill unita di esecuzione
operanti in parallelo (macchine superscalari) e di una 0 piu unita di pre/etch
permette di rendere C
PJ
minore d.i 1.
LXi = Ni,t
.. .,
',' '"'j ,
2.4.J La valutazione delle prestazioni
essendo Xi Ia frequenza con cui l'istruzione Ii compare nel mix di istruzioni del
programma.. Uinsieme degli Xi costituisce il profilo di esecuzione del programma.
Per quanta estate detto ai paragrafi precedenti (Cfr. 2.3.1), Cpi eit numero di
cieli di clock che vanno daWinizio della Case di fetch alia conclusione della fase di
esecuzione. Se per it momento ipotizziarno che Ia CPU esegua senza cicll di wait, cpl e
direttamente ricavabile dai manuali del produttore
20
. Nell'ipotesi in cui si canosca il
profila di esecuzione equnque possibile una valutazione sulla carta. Infatti, ricorrendo
ai manuali per i Cpi, si pub calcolare CPf e quindi Tcpu. Al ParagrafoC.6 viene fatto
un confronto tra Ie prestazioni dei modelli 601 e 604 delParchitettura PowerPC.
In riferimento alIa 2.1 vogliamo ora svolgere atcune considerazioni che consentano di
comprendere meglio la portata della 2.1 stessa e di orientarsi nella valutaziane pratica
delle prestazioni di un sistema.
Per prima cosa consideriamo il numero "medio di clock per istruzione CPl. Si
indichi con h la generica istruzione e con Xi il numero di volte in cui essa viene
eseguita nel problema in esame. Ovviamente
20Se si considera una ma.cchina. reale, e possibile che il medesi,mo codice di istruzione (a. UveUo
di lingua.ggio assembler) preveda differenti modalita di esecuzione, con differente Rumero di periodi
. di clock per ciascuna di esse. E' il caso per esempio dell'istruzione MOV nell'architettura. Intel. Per
essa il Rumero di deli di clock varia considerevolmente a seconda della natura della !oryente e della.
ae!tinazione. Cio non costituisce ostacolo a.l nostro ragionamento, basta ritenere Ie differenti moda-
lita di esecuzione della stessa istruzione come istruzioni difi'erenti. Del resto Ie differenti modalita si
riducono necessariamente in esplicite differenze nel corrispondente codice di maccbina..
,0;
':,
"
"
': ,.,
'I'
<
.,
. ;,
,
'J,
,,:
"I'
.:' .
, .

1
:; .

,..,
: ,
.,[
.:
,."'1.
.c'l

,..
,
,"
c1

"I
.
',':.'
"I
.'-,- -
.
.,? "
wen
,:'1
Tcpu = N/j
La frequenza di clock della CPU, j, elegata alla tecnologia e all'organizzazione
architetturale della CPU. D progresso delle tecnologie elettronicbe estato ver-
tiginoso. Basti pensare che se nella. prima meta. anni settanta, (con primi mi-
croprocessori) Ie frequenze erano inferiori a 1MHz, a fine anni ottanta gia si
avvicinavano ai lOOMHz, per raggiungere 1GHz (annunciato) a fine anni no-
vanta
19
. Per qiJanto si riferisce all'aspetto Ie istruzioni complesse
n cumero di istruzioni di macchina del programma, Ni,t, e una quantita ehe
elipeode dal repertorio di istruzioni e da! grado di ottimizzazione del compilatare.
Compilatori diversi possoeo dare luogo a N
ilt
diversi. Ovviamente uno stesso
compilatore, che generi codice per due macchine diverse, dara N
ilt
diversi. In
questa sense, un repertorio ampio d.i istruzioni (CISC) favorisce il miglioramento
qelle prestazioni.
19All'alba del 2000 i PC di fascia media sui mercato erano a 500 MHz.
2.4 Prestazioni della CPU
Tcpu = (N,., x CPJ)/ j = N,., X CPJ X T. (2.1)
dove T = 1/j rappresenta il periodo di clock.
La 2.1 foroisee la cbiave per capire come Ie prestazioni della CPU dipendono da
fattori tecnologici e architetturali.
Si indichi ora con il numero di istruzioni di macchina corrispondente al
programma e si indichi coo C
PJ
iTnumero medio di clock per istruzione di rnacchina.
Ovviamente CPT edefinito come: 1\. \". ,..0 ,. 0
rC ./' ow.. <:_tX..
\ Cp/ = N/N,,, =C
p
', '!:<;t
sostituendo nella precedente relazione si ottiene:
\
r
\
1
\
1
\
I
I
r
\
\
I
,
I
,)
'"
21 Normalmente Ie istruzioni di ingresso/uscita non introducono cieli di wait, anche se in linea. di
principio e possibile che Ie porte di I/O siano talmente lente da imporre cieli di attes3 per la loro
lettura. 0 scrittura. Pertanto I'unica sorgente di cieli di wait eit sistema di memoria. Nelle macchine
dotate di memoria C4che - 1a quasi tota.lita. dei sistemi correnti - Ie attese si rendono necessarie a.
causa. dei miss nelPaccesso a.lla. cache medesima. (si faccia riferimento a quanto esposto al Capitolo 7
e, in particolare, al Par.a.grafo7.3).
2210 case contrario occorrerebbe avere una sta.tistica degli accessi ai differenti banchi e pesare i
relativi wait in base alie frequenze di accesso.
I
I
I
I
I
1
\.
I
I
\
I
\
61 Elementi architetturaJi di base

nominato e l'indice MIPS. (milioni di istruzioni


2'..4.2 Popolari indici di prestazioni
, L'indi'ce
iR'
-
MFLOPS = Nvm/(T, x 10')
con N
lJm
numero di operazioni in virgola mobile del proiramma.
Anche il MFLOPS, come il MIPS, dipende si. dall. macchina si. dal programm.
Sebbene questa indice sia piu significativo del MIPS, in quanta considera il numero
di operazioni e non di istruzioni, si basa sui presupposto che 10 stesso programma,
l
'AI fine di farmre misure immediate delle piestazioni, vengoDo impiegati alcuni indici I
che, anche se molto popolari, hanno gravi difetti.
,
.MIPS = Ni,tf(T, x 10')
-
, con T
t
tempo di esecuzione del programma in secondi.
,
Eintuitivo che indici MIPS pili alti dovrebbero riferirsi a macchine pili veIocL E
facil"e mostrare che i MIPS inducono facilmente in errore.
Anzitutto, il MIPS dipende dal repertorio di istruzioni della CPU, per il
comronto di indici MIPS di calcolatori aventi repertori differenti eprivo di significa-
to. Inoltre il MIPS puo variare, anche sulla stessa macchina, a seconda del programma
considerato e cioe a seconda di Quale sottoinsieme di istruzioni usa pili frequentemente.
:Come' se non bastasse, puo capitare anche che l'indice MIPS van in maniera inver-
, samente proporzionale al tempo di esecuzione del programma. II classico esempio di
cio possa avvenire eil confronto di due cakolatori, uno dei quali sprovvisto di
unit. per i calcoli in virgol. mobile (FPU), ncalcol.tore senz. FPU potrebbe .vere un
MIPS pili elevato dell'altro, rna questa non vuot dire che Ie sue prestazioni siano mi-
gUori; infatti, il tempo richiesto per eseguire un caJcolo iIi virgola mobile sara di gran
lunga superiore, a causa dell 'elevato nurnero di istruzioni da eseguire per sopperire
.11. m.nconz. di FPU.
. . I ]
nel confronto tra slstemJ a ternativi, questi indici non sono di nessun valore e Cccorre
rifarsi a misurazio.ni effettuate tramite l'impiego 4i programmi campione.
Da ultimo si cleve notare che Ie prestazioni complessive di un sistema di ela- I
borazione non dipendoDo solo da CPU e memoria, rna anche cia! sottosistema di
ingresso/uscita. Pili specificatamente, il tempo complessivo richiesto per l'esecuzione
di un progr.mm. ed.to d.lI. somma del tempo eli CPU e del tempo richiesto per Ie
operazioni di I/O. La valutazione delle prestazioni complessi viene.di solitoaffrontata t
con modelli di reti di code 0 tramite simulazione. L'altro modo e ancora queUo di
ricorrere a programmi di benchmark, appositamente studiati al fine di esercitare tutti
'Ie parti del sistema.. Le problematiche relative s0I!0 fuori da! campo di interesse di
questa libro.
,
"-dice MFLOPS . Un .Itro in,,,,,,
, 'fsttuziom ill viriOIi mobile al secondo,;
-
\

'it:,
i
0-
, .
..
"I .,u ,
'1
,.
',: "
r
,I:
,
..

'iI'
...
,
,
"
" ..
,.
.'
,,{,
,'<
"I
.
.; .
,
i
,,;-
-
,
..

,
"
..
;.:;;
'i
..
.,
!
'.
"
.,
!
,
II-'

-,
I
'i'!f""'"_' , ..
" .','
'1 " " .'
,
,
,
,
..oJ
.' .,
il
: " .
,,!). !
'I ....
,
. '.';

..;
.,
'I
:i ..
,.

ttl
,
:;,1,
" (,
.' ,:'
..
':'1 ' ,I
1 .
ii'
"I '
.y
Capitolo 2
GPlw = hGPl + m(GpI +w)
dove hem sono rispettivamente it tasso di hit di miss della cache) C
P1
ecalcolato
secondo la 2.2 e CPlw e il numero medio effettivo di clock per istruzionej esso tiene
conto del rallentamento indotto dalla memoria. Si ha dunque:
GPlw =(h +m)CPl +mw =GpI +inw
I ragionamenti che hanna portato alIa 2.1 evidenziano che il confronto di mac4
chine di differente architettura ha sensa solo se e fatto rispetto a un ben definito
problema. lnfatti, sia N
iJt
sia gli Xi (e quindi CPI) dipendono in modo determinante
dal problema in esame. Se, per esempio, si considera una applicazione di carattere
numerico e una eli gestione dati, enaturale che nella prima vengano prevalentemente
impiegate operazioni aritmetiche e nella seconda operazioni di generica manipolazione
e movimento dati. Conseguentemente non c'e da stupirsi se, confrontando due dif-
ferenti architetture rispetto a tali applicazioni, l'una possa prevalere nella prima e
l'altra nella seconda.
Nel corso degli anni la comunita. tecnica e scientin.ca ha sviluppato un certo nume-
ro di programmi campione, conosciuti con il nome di benchmark, per 1a quantificazione
delle prestazioni in differenti campi applicativi e per differenti tipologie di carico. In
particolare si sono affermati come standard industriali i benchmark SPEC proposti
dalla System Performance Evaluation Cooperative. Questa organizzazione provvede
ad aggiornare i progranuni campione nel corso degli anni, in modo da tener conto sia
dell'evo1uzione tecnologica che dello sviluppo delle applicazioni. Ai paragrafi 2.4.2 e
2.4.2 si parla di alcuni popolari indici di prestazioni evidenziando come essi abbiano
appen3 un valore indicativa. Nella valutazione pratica delle prestazioni, soprattutto
Naturalmente) il calcole di CPf effettuato come appena detto non tiene conto
della penalizzazione davuta a eventuali deli di wait introdotti dalla memoria 0 da
eventuali sincronizzazioni con il maudo esterno
21
.
Per tener conto dei deli di wait occorrerebbe stabilire come essi modificano i
Cpi, ovvero determinare per ogni istruzione i wait richiesti in fase di fetch e in fase di
esecuzione. E' questa un calcolo che ha seDSO solo se il sistema non dispone di memoria
cache e nelPipotesi che tutti i banchi eli memoria richiedano 10 stesso numero"di wait
22
.
In tali"ipotesi sarebbe infatti possibile calcolare
l
istruzione per istruzione, l'eventuale
incremento dei Cpi davuta alIa hitenza della memoria.
In presenza di cache occane seguire un'altra strada, aggiustanclo il e
PI
in base
aHa statistica di funzionamento della cache, ovvero in base al tasso di miss (Cfr. 3.7.1).
A tal fine, se si assume che la cache sia progettata in modo tale che in caso di hit non
si abbia aleun wait, e che in caso di miss la CPU debba soggiacere a W stati di wait;
il Dumero medio di cicli di clock per istruzione diventa:
60

21 Normalmente Ie istruzioni di ingresso/uscita non introducono cieli di wait, anche se in linea. di


principio e possibile che Ie porte di I/O siano talmente lente da imporre cieli di attes3 per la loro
lettura. 0 scrittura. Pertanto I'unica sorgente di cieli di wait eit sistema di memoria. Nelle macchine
dotate di memoria C4che - 1a quasi tota.lita. dei sistemi correnti - Ie attese si rendono necessarie a.
causa. dei miss nelPaccesso a.lla. cache medesima. (si faccia riferimento a quanto esposto al Capitolo 7
e, in particolare, al Par.a.grafo7.3).
2210 case contrario occorrerebbe avere una sta.tistica degli accessi ai differenti banchi e pesare i
relativi wait in base alie frequenze di accesso.
I
I
I
I
I
1
\.
I
I
\
I
\
61
Elementi architetturaJi di base

nominato e l'indice MIPS. (milioni di istruzioni


2'..4.2 Popolari indici di prestazioni
, L'indi'ce
iR'
-
MFLOPS = Nvm/(T, x 10')
con N
lJm
numero di operazioni in virgola mobile del proiramma.
Anche il MFLOPS, come il MIPS, dipende si. dall. macchina si. dal programm.
Sebbene questa indice sia piu significativo del MIPS, in quanta considera il numero
di operazioni e non di istruzioni, si basa sui presupposto che 10 stesso programma,
l
'AI fine di farmre misure immediate delle piestazioni, vengoDo impiegati alcuni indici I
che, anche se molto popolari, hanno gravi difetti.
,
.MIPS = Ni,tf(T, x 10')
-
, con T
t
tempo di esecuzione del programma in secondi.
,
Eintuitivo che indici MIPS pili alti dovrebbero riferirsi a macchine pili veIocL E
facil"e mostrare che i MIPS inducono facilmente in errore.
Anzitutto, il MIPS dipende dal repertorio di istruzioni della CPU, per il
comronto di indici MIPS di calcolatori aventi repertori differenti eprivo di significa-
to. Inoltre il MIPS puo variare, anche sulla stessa macchina, a seconda del programma
considerato e cioe a seconda di Quale sottoinsieme di istruzioni usa pili frequentemente.
:Come' se non bastasse, puo capitare anche che l'indice MIPS van in maniera inver-
, samente proporzionale al tempo di esecuzione del programma. II classico esempio di
cio possa avvenire eil confronto di due cakolatori, uno dei quali sprovvisto di
unit. per i calcoli in virgol. mobile (FPU), ncalcol.tore senz. FPU potrebbe .vere un
MIPS pili elevato dell'altro, rna questa non vuot dire che Ie sue prestazioni siano mi-
gUori; infatti, il tempo richiesto per eseguire un caJcolo iIi virgola mobile sara di gran
lunga superiore, a causa dell 'elevato nurnero di istruzioni da eseguire per sopperire
.11. m.nconz. di FPU.
. . I ]
nel confronto tra slstemJ a ternativi, questi indici non sono di nessun valore e Cccorre
rifarsi a misurazio.ni effettuate tramite l'impiego 4i programmi campione.
Da ultimo si cleve notare che Ie prestazioni complessive di un sistema di ela- I
borazione non dipendoDo solo da CPU e memoria, rna anche cia! sottosistema di
ingresso/uscita. Pili specificatamente, il tempo complessivo richiesto per l'esecuzione
di un progr.mm. ed.to d.lI. somma del tempo eli CPU e del tempo richiesto per Ie
operazioni di I/O. La valutazione delle prestazioni complessi viene.di solitoaffrontata t
con modelli di reti di code 0 tramite simulazione. L'altro modo e ancora queUo di
ricorrere a programmi di benchmark, appositamente studiati al fine di esercitare tutti
'Ie parti del sistema.. Le problematiche relative s0I!0 fuori da! campo di interesse di
questa libro.
,
"-dice MFLOPS . Un .Itro in,,,,,,
, 'fsttuziom ill viriOIi mobile al secondo,;
-
\

'it:,
i
0-
, .
..
"I .,u ,
'1
,.
',: "
r
,I:
,
..

'iI'
...
,
,
"
" ..
,.
.'
,,{,
,'<
"I
.
.; .
,
i
,,;-
-
,
..

,
"
..
;.:;;
'i
..
.,
!
'.
"
.,
!
,
II-'

-,
I
'i'!f""'"_' , ..
" .','
'1 "
" .'
,
,
,
,
..oJ
.' .,
il
: " .
,,!). !
'I
....
,
. '.';

..;
.,
'I
:i ..
,.

ttl
,
:;,1,
" (,
.' ,:'
..
':'1 ' ,I
1 .
ii'
"I '
.y
Capitolo 2
GPlw = hGPl + m(GpI +w)
dove hem sono rispettivamente it tasso di hit di miss della cache) C
P1
ecalcolato
secondo la 2.2 e CPlw e il numero medio effettivo di clock per istruzionej esso tiene
conto del rallentamento indotto dalla memoria. Si ha dunque:
GPlw =(h +m)C
Pl
+mw =GpI +inw
I ragionamenti che hanna portato alIa 2.1 evidenziano che il confronto di mac4
chine di differente architettura ha sensa solo se e fatto rispetto a un ben definito
problema. lnfatti, sia N
iJt
sia gli Xi (e quindi CPI) dipendono in modo determinante
dal problema in esame. Se, per esempio, si considera una applicazione di carattere
numerico e una eli gestione dati, enaturale che nella prima vengano prevalentemente
impiegate operazioni aritmetiche e nella seconda operazioni di generica manipolazione
e movimento dati. Conseguentemente non c'e da stupirsi se, confrontando due dif-
ferenti architetture rispetto a tali applicazioni, l'una possa prevalere nella prima e
l'altra nella seconda.
Nel corso degli anni la comunita. tecnica e scientin.ca ha sviluppato un certo nume-
ro di programmi campione, conosciuti con il nome di benchmark, per 1a quantificazione
delle prestazioni in differenti campi applicativi e per differenti tipologie di carico. In
particolare si sono affermati come standard industriali i benchmark SPEC proposti
dalla System Performance Evaluation Cooperative. Questa organizzazione provvede
ad aggiornare i progranuni campione nel corso degli anni, in modo da tener conto sia
dell'evo1uzione tecnologica che dello sviluppo delle applicazioni. Ai paragrafi 2.4.2 e
2.4.2 si parla di alcuni popolari indici di prestazioni evidenziando come essi abbiano
appen3 un valore indicativa. Nella valutazione pratica delle prestazioni, soprattutto
Naturalmente) il calcole di CPf effettuato come appena detto non tiene conto
della penalizzazione davuta a eventuali deli di wait introdotti dalla memoria 0 da
eventuali sincronizzazioni con il maudo esterno
21
.
Per tener conto dei deli di wait occorrerebbe stabilire come essi modificano i
Cpi, ovvero determinare per ogni istruzione i wait richiesti in fase di fetch e in fase di
esecuzione. E' questa un calcolo che ha seDSO solo se il sistema non dispone di memoria
cache e nelPipotesi che tutti i banchi eli memoria richiedano 10 stesso numero"di wait
22
.
In tali"ipotesi sarebbe infatti possibile calcolare
l
istruzione per istruzione, l'eventuale
incremento dei Cpi davuta alIa hitenza della memoria.
In presenza di cache occane seguire un'altra strada, aggiustanclo il e
PI
in base
aHa statistica di funzionamento della cache, ovvero in base al tasso di miss (Cfr. 3.7.1).
A tal fine, se si assume che la cache sia progettata in modo tale che in caso di hit non
si abbia aleun wait, e che in caso di miss la CPU debba soggiacere a W stati di wait;
il Dumero medio di cicli di clock per istruzione diventa:
60

::'i.'
'ill
': ;r:) ,
.1'.1
'-1;, .
';,l

: ;",
"
,;}
','; .
':. ,
.'r,.; "
I ,11\ .'
ji :.
,
...
.. ;1
N,.
- .
t
.
'K
, '-')

,Ii :

;
'tl :

.,1

,.'
Rc-O)
Rc-l)
Rc-O)
Rc-I)
(OE-a,
(OE-O,
(OE-l,
(OE-I,
RO,RA,RB
RO,RA,RB
RD,RA,RB
RD,RA,RB
FormalO i-Ilnujone dl nIt" Incondhlonalo
Formal-o ialnizioni con opllr"ndo
immfldl..to " i:rlru;:lon.l dl <:ariclUUeoto "
memorinnione d_i reslstri
E,..,mpio di i8lrU%ion. adlmdic..:
IstrudoDC dl 'omm_
r",rwillo iatruzioni mtmetiche
ADD
ADO.
ADDO
ADOO.
Elementi architetturah di base 63
di alcuni registri di stato possono essere modificati dalFesecuzione deU'istruzione
25
.
A tale fine sono previsti dei codici mnemonici differenti, come illustrato in figura.
Anche per I'istruzione di salto incondizionato 80no previsti due bit che ne determine
it comportamento. n bit AA fa interpretare il campo LI come un indirizzo assoluto
oppure relativo al PC, il bit LK stabilisce se l'esecuzione del salto debba a no 5al-
yare 1'indirizzo dell'istruzione successiva nel registro di macchina denominato LINK.
Anche in questa caso sono previsti differenti mnemonici per identificare le variazioni
dell'istruzione di sa1t0
26
, ".In Figura2.14 viene anche presentato il formato delle istruzioni aritmetiche con
un operando immediat0
27
. L'istruzione:
addi ri, r2, 35 ha l'effetto: rif- r2+35
In essa it numero 35 viene codificato nel campo SIMM. Lo stesso formato vale anche
per Ie istruzioni di caricamento/memorizzazione dei registri. Per esempio, l'istruzione:
lwz RD,d(RA)
codifica d nel campo SIMM e ha Questo efetto:
25Per esempio, se Rc=l, aHora l'addizione pub avere effetto sui bit LT (Les! Than), GT Greater
Than) del registro CR (Condition Register)di macehina.
26Questa soluzione produce un elevato numero di istruzioni, tanto da far apparire il PowerPC come
una macchina non RISC. In realta, il forma-to delle istruzioni permette immediatamente una facile
in quanta 1a decodifica di tutti i poasibili campi subordinati a.l codice di operazione pub
procedere in parallela alia. decodifica eli quest'ultimo. Quando il codice di aperazione edecodificato
non resta che scegliere quali degli altri decodificatori entrana in gioco.
:nL'operando immediato eun opera.ndo il cui valore ecodificato nel campo stesso dell'istruzione.
(' ';,' I I" ,I
U
' '",,' I [" I , , I , I , , , I '''[
(' , , I" ,I
U
' , [" , B' ,,'",' ,I 8
"I" """ "" ttl
Figura 2.14 Esempio di formati di istruzioni del PowerPC. Tutte Ie istruzioni aritmetiche
tra interi a. tre registri prevedono OP=31. Uistruzione di somma eidentificata attraverso la
codifica ALU=266. La figura riporta quattro distinti mnemonici per l'istruzione di somma,
i differenti mnemonici corrispondono alle possibili codifiche dei campi OE e Re. Anche
I'istruzione di salto incondizionato prevede, per il medesimo codice OP=18, quattro distinti
mnemonici, corrispondenti aile quattro differenti codifiche per la. coppia di bit AA eLK.
I" ';,"1" ',; 'I
u
, ""':"'" 8
,

..,'

"
"
.,
,'.- .
"

''';:'1'
'.,. ,
,',. .
,
., .
".
J'; .
, ..
..
.. n

"
, .",
,.,


,
".".
':
"II
t;j -
t "( ,
"';"

'ii:i '.

"
-I
t
.' ..";..


).?


'..
.".
"t
..',
.

:'1.
'I'
'I" :
,
"., ,
;"1
",i
":1\..
,. ,
,I." .
" '
. "
,. '

:';.Al _..
'I
'f '
, " .

'I
.,
j

1.
.
Nelle architetture RISC il repertorio di istruzioni e progettato secondo i seguenti
criteri:
In Figura2.14 vengono riportati i formati di alcune istruzioni delParchitettura
PowerPC
2
3. Le istruzioni occupano sempre 32 bit. ncampo del codice di operazione
occupa sempre i primi sei bit a sinistra (bit 0-5). Gli altri campi hanno un significato
che dipende dal codice di operazione, rna i confini tra i campi sono sempre gli stessi e
la loro interpretazione esempre univoca in base al campo OP. Ci sono ancbe istruzioni '
che richiederebbero meno di 32 bit
24
, rna pur sempre codificate in una parola di 32
bit, parzialmente inutilizzata.
Per Ie operazioni aritmetiche tra registri i campi RD, RA e RB identificano
rispettivamente il registro di destinazione del risultato, iI primo e il secondo registro
sorgente (contenenti gli addendi deUa somma). ncodice operativo 31 ecomune a tutte
Ie istruzioni aritmetiche tra interi a tre registri. II campo ALU determina l'effetti-
va operazione aritmetica. Nel caso dell'addizione il campo ALU contiene il numero
266. I due campi d.i un bit, OE e Rc, vengono impiegati per specificare quali bit
2.5.1 Repertorio stile RlSC
2.5 11 repertorio delle istruzioni
Le istruzioni hanno tutte la stessa dimensione, per esernpio 32 bit.
n campo del codice di operazione occupa uno spazio predefinito.
Esiste un numero estrernamente limitato di formati. ncodice di operazione
fica in modo univoco il formate dell'istruzione. Nel passare da formato a formato,
i campi che identificano uguali entita occupano sempre 1a stessa posizione.
1, 23Del powerPC si parlanell'Appendice C, mentre dell'architettura x86 SI parla nell'Appendice B.
2"L'istruzione sc (Supervisor richiede 8010 6 bit. per il codice, piu il bit 30.
n repertorio delle istruzioni eli macGhina costituisce t,lllO degli aspetti caratteristici di
qualunque architetture ed einestricabilmente legato all'arcbitettura stessa. Un'istru-
zione nel suo complesso efarmata cia pili campi, di cui uno, il codice di operazione
determina la natura dell'istruzione e il significato degli altri eventuali campi.
n numero di istruzioni nel repertorio, la potenzialita delle singole istruzioni, il
10ro formato e la 10ro codifica hanna grande influenza sulle prestazioni della macchina
stessa. Schematicamente SI possono individuare due opposti approcci alIa definizione
del repertorio di istruzioni: queUo delle architetture RISe e queUo delle architetture
CISC.
pur eseguendo un diverso numero di istruzioni au calcolatori diversi, effettui 10 stesso ,
,
numero di operazioni in virgola mobile. Cia e ovviamente falso, in quanta i 'insieme :
eli istruzioni in virgola mobile au "macchine diverse non euniforme. .
62 Ca.pitola 2

.
I
I,
f
I(
I
\
\
I
\
I
I
\
l
I
::'i.'
'ill
': ;r:) ,
.1'.1
'-1;, .
';,l

: ;",
"
,;}
','; .
':. ,
.'r,.; "
I ,11\ .'
ji :.
,
...
.. ;1
N,.
- .
t
.
'K
, '-')

,Ii :

;
'tl :

.,1

,.'
Rc-O)
Rc-l)
Rc-O)
Rc-I)
(OE-a,
(OE-O,
(OE-l,
(OE-I,
RO,RA,RB
RO,RA,RB
RD,RA,RB
RD,RA,RB
FormalO i-Ilnujone dl nIt" Incondhlonalo
Formal-o ialnizioni con opllr"ndo
immfldl..to " i:rlru;:lon.l dl <:ariclUUeoto "
memorinnione d_i reslstri
E,..,mpio di i8lrU%ion. adlmdic..:
IstrudoDC dl 'omm_
r",rwillo iatruzioni mtmetiche
ADD
ADO.
ADDO
ADOO.
Elementi architetturah di base 63
di alcuni registri di stato possono essere modificati dalFesecuzione deU'istruzione
25
.
A tale fine sono previsti dei codici mnemonici differenti, come illustrato in figura.
Anche per I'istruzione di salto incondizionato 80no previsti due bit che ne determine
it comportamento. n bit AA fa interpretare il campo LI come un indirizzo assoluto
oppure relativo al PC, il bit LK stabilisce se l'esecuzione del salto debba a no 5al-
yare 1'indirizzo dell'istruzione successiva nel registro di macchina denominato LINK.
Anche in questa caso sono previsti differenti mnemonici per identificare le variazioni
dell'istruzione di sa1t0
26
, ".In Figura2.14 viene anche presentato il formato delle istruzioni aritmetiche con
un operando immediat0
27
. L'istruzione:
addi ri, r2, 35 ha l'effetto: rif- r2+35
In essa it numero 35 viene codificato nel campo SIMM. Lo stesso formato vale anche
per Ie istruzioni di caricamento/memorizzazione dei registri. Per esempio, l'istruzione:
lwz RD,d(RA)
codifica d nel campo SIMM e ha Questo efetto:
25Per esempio, se Rc=l, aHora l'addizione pub avere effetto sui bit LT (Les! Than), GT Greater
Than) del registro CR (Condition Register)di macehina.
26Questa soluzione produce un elevato numero di istruzioni, tanto da far apparire il PowerPC come
una macchina non RISC. In realta, il forma-to delle istruzioni permette immediatamente una facile
in quanta 1a decodifica di tutti i poasibili campi subordinati a.l codice di operazione pub
procedere in parallela alia. decodifica eli quest'ultimo. Quando il codice di aperazione edecodificato
non resta che scegliere quali degli altri decodificatori entrana in gioco.
:nL'operando immediato eun opera.ndo il cui valore ecodificato nel campo stesso dell'istruzione.
(' ';,' I I" ,I
U
' '",,' I [" I , , I , I , , , I '''[
(' , , I" ,I
U
' , [" , B' ,,'",' ,I 8
"I" """ "" ttl
Figura 2.14 Esempio di formati di istruzioni del PowerPC. Tutte Ie istruzioni aritmetiche
tra interi a. tre registri prevedono OP=31. Uistruzione di somma eidentificata attraverso la
codifica ALU=266. La figura riporta quattro distinti mnemonici per l'istruzione di somma,
i differenti mnemonici corrispondono alle possibili codifiche dei campi OE e Re. Anche
I'istruzione di salto incondizionato prevede, per il medesimo codice OP=18, quattro distinti
mnemonici, corrispondenti aile quattro differenti codifiche per la. coppia di bit AA eLK.
I" ';,"1" ',; 'I
u
, ""':"'" 8
,

..,'

"
"
.,
,'.- .
"

''';:'1'
'.,. ,
,',. .
,
., .
".
J'; .
, ..
..
.. n

"
, .",
,.,


,
".".
':
"II
t;j -
t "( ,
"';"

'ii:i '.

"
-I
t
.' ..";..


).?


'..
.".
"t
..',
.

:'1.
'I'
'I" :
,
"., ,
;"1
",i
":1\..
,. ,
,I." .
" '
. "
,. '

:';.Al _..
'I
'f '
, " .

'I
.,
j

1.
.
Nelle architetture RISC il repertorio di istruzioni e progettato secondo i seguenti
criteri:
In Figura2.14 vengono riportati i formati di alcune istruzioni delParchitettura
PowerPC
2
3. Le istruzioni occupano sempre 32 bit. ncampo del codice di operazione
occupa sempre i primi sei bit a sinistra (bit 0-5). Gli altri campi hanno un significato
che dipende dal codice di operazione, rna i confini tra i campi sono sempre gli stessi e
la loro interpretazione esempre univoca in base al campo OP. Ci sono ancbe istruzioni '
che richiederebbero meno di 32 bit
24
, rna pur sempre codificate in una parola di 32
bit, parzialmente inutilizzata.
Per Ie operazioni aritmetiche tra registri i campi RD, RA e RB identificano
rispettivamente il registro di destinazione del risultato, iI primo e il secondo registro
sorgente (contenenti gli addendi deUa somma). ncodice operativo 31 ecomune a tutte
Ie istruzioni aritmetiche tra interi a tre registri. II campo ALU determina l'effetti-
va operazione aritmetica. Nel caso dell'addizione il campo ALU contiene il numero
266. I due campi d.i un bit, OE e Rc, vengono impiegati per specificare quali bit
2.5.1 Repertorio stile RlSC
2.5 11 repertorio delle istruzioni
Le istruzioni hanno tutte la stessa dimensione, per esernpio 32 bit.
n campo del codice di operazione occupa uno spazio predefinito.
Esiste un numero estrernamente limitato di formati. ncodice di operazione
fica in modo univoco il formate dell'istruzione. Nel passare da formato a formato,
i campi che identificano uguali entita occupano sempre 1a stessa posizione.
1, 23Del powerPC si parlanell'Appendice C, mentre dell'architettura x86 SI parla nell'Appendice B.
2"L'istruzione sc (Supervisor richiede 8010 6 bit. per il codice, piu il bit 30.
n repertorio delle istruzioni eli macGhina costituisce t,lllO degli aspetti caratteristici di
qualunque architetture ed einestricabilmente legato all'arcbitettura stessa. Un'istru-
zione nel suo complesso efarmata cia pili campi, di cui uno, il codice di operazione
determina la natura dell'istruzione e il significato degli altri eventuali campi.
n numero di istruzioni nel repertorio, la potenzialita delle singole istruzioni, il
10ro formato e la 10ro codifica hanna grande influenza sulle prestazioni della macchina
stessa. Schematicamente SI possono individuare due opposti approcci alIa definizione
del repertorio di istruzioni: queUo delle architetture RISe e queUo delle architetture
CISC.
pur eseguendo un diverso numero di istruzioni au calcolatori diversi, effettui 10 stesso ,
,
numero di operazioni in virgola mobile. Cia e ovviamente falso, in quanta i 'insieme :
eli istruzioni in virgola mobile au "macchine diverse non euniforme. .
62 Ca.pitola 2

.
I
I,
f
I(
I
\
\
I
\
I
I
\
l
I
2.5.2 Repertorio stile elSe
a) come somma del contenuto del campo SIMM con il contenuto del registro speci-
ficato tramite RAJ se per RA viene specificato un registro diverso da rD. Si ha
dunque un indirizzamento relativD a RA28;
b) come indirizzo data da! contenuto del campo SIMM se per RA viene specificato
o(zero) 0 r0
29
. Si ha doe un indirizzamento assoluto.
28La. notuione EXTS(SIMH) sta a Indica.re l'e:stenaione con segno a. 32 bit del campo SIMM.
29In questi due casl nel campo RA dell'istruzione di ma.cchina viene codificato O.
30Si tratta del retaggio degli anni in cui Ie. logica di CPU era: microprogramrnata. Nel passare
datl'8086 alle macchine piu recent! i progettlsti Intel hanno dovuto superare non poche difficolta e
inventare ingegnosi accorgimenti per fronteggjare til. .c:omplicazione del repertorio di istruzioni. A
partire daJ 486 Ie CPU Intel presen'tano una pipeline interna. La fase di decodifica, solitamente una
delle menD onerose, richiede ben due deli di clock.
NeUe architetture elSe it repertorio d.i istruzioni ha Ie seguenti caratteristiche.
Ci sono istruzioni di differente dimensione.
II campo del codice di oper.azione non necessariamente occupa uno spazio pre-
definito. -A seconda della modalita. in cui una ceria categoria di istruzioni viene
interpretata, il campo codice puo accupare pili a meno bit.
Esiste un numero alquanto ampio di formati. n codice di operazione, nelle sue
possibili variazioni, identifica 10 specifico formato delle istruzioni. Nel passare
da formato a formato, i campi che identificana uguali entita possono occupare
differenti posizioni.
In Figura 2.15 vengono riportati i formati di alcune istruzioni de1l'architettura
x86 a 32 bit (dal 386 in poi).
La dimensione minima di un'istruzione eun byte. Per esempio, Ie due istruzioni
STI e eLI (rispettivamente Set InteTTUpt Flag e Clear Interrupt Flag non hanno ope-
randi e occupano un solo byte, mentre istruzioni come MOV (Move) di un dato dalla
memoria in un registro pub avere differenti dimensioni in dipendenza da quanta e
grande 10 scostamento. Essenziale eil campo MOD RIM. L'interpretaziane purtrop-
po non e univoca. Nello stesso codice di istruzione ci sana bit che a seconda della
particolare istruzione possono essere interpretati in modo diverse. Si tratta di una
struttura alquanto irregolare, che comporta notevole complessita, soprattutto nella
lase di decodifica dell'istruziooe. Inlatti la logica di CPU (a parte i prefissi) deve e.a-
minare il codice primario di operaziane, stabilendo anzitutto se it codice occupa uno
o due byte, quindi, se l'istruzione prevede altre parti a seguire il cadice, decodificare
i byte che seguono e se del caso ind.irizzare la memoria
30
. Un esempio di istruzione
\
I
\
I
I
)
l-
I
1
1
t
\
I
I
1
65
ISTRUZlONE
Elementi architetturali 4i. base
-
PREFlSSl
3tEsempi rilevanti di macchine di questa categoria. sono sta.te iI Burroughs B/S50 (1963) e I'RP
3000 (1972). .
3'2per esempio la ricorsivlta.
.
I,lnll!ene
Dimon_ieno Di.moo_iono S"gmonlo Cedlee },lOD R/'" SIB 3co,te.mento lmmedlato
rndlrlne Op_nado
0/1
0/1 0/1 0/1
1/'
0/1 0/1 0/1/2/4 0/1/2/4
,
2.6 Criteri di classificazione delle architetture
Un modo'per classificare Ie architetture dei calcolatori consiste nel riferirsi al modello
, di es'e'cuzione, ovvero al modo in cui la CPU accede e manipola gil oggetti dell'elabara-
zione: At modello di esecuzione corrisponde Ia struttura e il formate delle istruzioni,
c;on' riferimento a1 numero di operandi esplicitamente 0 implicitamente
< rappresentati nell'istruzione. La c1assificazione che si traccia qui di seguito deve es-
, sere intesa come uno schema genera1e. Nella pratica 5i trovano macchine che adattato
,. soluzioni architetturali miste. -
. La parte che segue verra svolta facendo riferimento allo statement di alta Uvello
A: = B+C dove A, Bee cono variabili intere.
F"lodello a Negli anni sessanta e settanta sonG state costruite macchine che
modellavano iI madella astratto di calcolo basato sullo stack
31
. Operaziani come
per esempio un'addizione (ADD) non richiedono che venga esplicitato alcun ope-
rando, in quanta i due operandi vengono prelevati dalle due pasizioni di testa
dello stack, mentre it risultato viene depositato sempre sullo stack stesso. Si
tratta di architetture che, in termini astratti, rnodellana al meglio certi forma-
lismi presenti in alcuni linguaggi di programmazione di alto
Numero d.i byte possibili per ciascuno dei campi dell'i.slru?;ione
',; Figura 2.15 Formato delle istruzioni neU'architettura x86, per macchine a 32 bit. 5i noti
che vera e propria pub essere preceduta da. ben quattro tipi di prefisso, che ne
. l'interpretazione usuale. 11 campo del codice di operazione pub essere di uno 0
.' due byte. Tre bit del campo MOD RIM sono da. considerare come estensione del codice
di operazione. MOD RIM determina quali registri sono implicati, oltre a indicare se c'e
riferimento alia memoria e a condizionare Ill. presenza del campo SIB (Scale-Index-Base). n
, campo SIB determina. it fattore di scala nell'accesso ai dati. Infine il campo scosta.mento e il
'campo immediato rappresentano rispettivamente 10 scostamento dell'operando in memoria
o una quantita. codificata nell'istruzione.
-::-.- ..I
,
'.
codificata in modo diverse a seconda della modalita el'istruzione PUSH. Uistruzione
PUSH AX (mette sullo stack il registro AX) occupa un solo bytej Pistruzione PUSH mem
, ., sullo stack i1 centenuto della 10cazione mem) ha un differente codice e occupa
.. i byte che servono a sistemare il codice eli operazione e l'indirizzo (10 5costamento)
JIlem.
....,
.",.,
., I
:;; ,;

'.' '
,,'
t.,
'" ,
\
',;, ',.
"4,.", '
, I,
,
,'._.

.,:11.
;iil
1
;

.', .
.
. If! .
,;;.' ,
""1' "
.
,j,:
..' 't

'..
'-'J!
t
,J,
" ',)
:.
,
..,.
'.j
", i
'::",1,
' ..,: 1
;., ,
i/! "
.j'
, '1,
,
,:-.:
.::{i


,
, ).;
.,t' ..
"
.i
:il
,
;
,

-c-::'"
'<:'

,

.' "
3i '
.. ,
" '1
:'1"
"'
.
'.'
w ,
..'J,
. '. . .
. .,
.1;'1'
.,
.'tr ..
1
". : ,
;.;" .
,..r, .

'f"l
' ;; ,

'r:.: '
14
., ., .','
.' " .... ',,,' .
.. .:-j';t:.. ';."
to;: ."..
,. "
.c,
,
,:.; '.
- t
"'.. ' .
!t'
,
,. t
_.
,"J_'
indirizzo e
i
if "RA"=O then bt- a else bi- RA;
EAt- b + EXTS(SIHH);
ROt- H[EA];
oVYero)' in RD viene caricato il contenuto della cella di memoria il CUi
calcolato:
64 Capitola 2
c
2.5.2 Repertorio stile elSe
a) come somma del contenuto del campo SIMM con il contenuto del registro speci-
ficato tramite RAJ se per RA viene specificato un registro diverso da rD. Si ha
dunque un indirizzamento relativD a RA28;
b) come indirizzo data da! contenuto del campo SIMM se per RA viene specificato
o(zero) 0 r0
29
. Si ha doe un indirizzamento assoluto.
28La. notuione EXTS(SIMH) sta a Indica.re l'e:stenaione con segno a. 32 bit del campo SIMM.
29In questi due casl nel campo RA dell'istruzione di ma.cchina viene codificato O.
30Si tratta del retaggio degli anni in cui Ie. logica di CPU era: microprogramrnata. Nel passare
datl'8086 alle macchine piu recent! i progettlsti Intel hanno dovuto superare non poche difficolta e
inventare ingegnosi accorgimenti per fronteggjare til. .c:omplicazione del repertorio di istruzioni. A
partire daJ 486 Ie CPU Intel presen'tano una pipeline interna. La fase di decodifica, solitamente una
delle menD onerose, richiede ben due deli di clock.
NeUe architetture elSe it repertorio d.i istruzioni ha Ie seguenti caratteristiche.
Ci sono istruzioni di differente dimensione.
II campo del codice di oper.azione non necessariamente occupa uno spazio pre-
definito. -A seconda della modalita. in cui una ceria categoria di istruzioni viene
interpretata, il campo codice puo accupare pili a meno bit.
Esiste un numero alquanto ampio di formati. n codice di operazione, nelle sue
possibili variazioni, identifica 10 specifico formato delle istruzioni. Nel passare
da formato a formato, i campi che identificana uguali entita possono occupare
differenti posizioni.
In Figura 2.15 vengono riportati i formati di alcune istruzioni de1l'architettura
x86 a 32 bit (dal 386 in poi).
La dimensione minima di un'istruzione eun byte. Per esempio, Ie due istruzioni
STI e eLI (rispettivamente Set InteTTUpt Flag e Clear Interrupt Flag non hanno ope-
randi e occupano un solo byte, mentre istruzioni come MOV (Move) di un dato dalla
memoria in un registro pub avere differenti dimensioni in dipendenza da quanta e
grande 10 scostamento. Essenziale eil campo MOD RIM. L'interpretaziane purtrop-
po non e univoca. Nello stesso codice di istruzione ci sana bit che a seconda della
particolare istruzione possono essere interpretati in modo diverse. Si tratta di una
struttura alquanto irregolare, che comporta notevole complessita, soprattutto nella
lase di decodifica dell'istruziooe. Inlatti la logica di CPU (a parte i prefissi) deve e.a-
minare il codice primario di operaziane, stabilendo anzitutto se it codice occupa uno
o due byte, quindi, se l'istruzione prevede altre parti a seguire il cadice, decodificare
i byte che seguono e se del caso ind.irizzare la memoria
30
. Un esempio di istruzione
\
I
\
I
I
)
l-
I
1
1
t
\
I
I
1
65
ISTRUZlONE
Elementi architetturali 4i. base
-
PREFlSSl
3tEsempi rilevanti di macchine di questa categoria. sono sta.te iI Burroughs B/S50 (1963) e I'RP
3000 (1972). .
3'2per esempio la ricorsivlta.
.
I,lnll!ene
Dimon_ieno Di.moo_iono S"gmonlo Cedlee },lOD R/'" SIB 3co,te.mento
lmmedlato
rndlrlne
Op_nado
0/1
0/1 0/1 0/1
1/'
0/1 0/1 0/1/2/4 0/1/2/4
,
2.6 Criteri di classificazione delle architetture
Un modo'per classificare Ie architetture dei calcolatori consiste nel riferirsi al modello
, di es'e'cuzione, ovvero al modo in cui la CPU accede e manipola gil oggetti dell'elabara-
zione: At modello di esecuzione corrisponde Ia struttura e il formate delle istruzioni,
c;on' riferimento a1 numero di operandi esplicitamente 0 implicitamente
< rappresentati nell'istruzione. La c1assificazione che si traccia qui di seguito deve es-
, sere intesa come uno schema genera1e. Nella pratica 5i trovano macchine che adattato
,. soluzioni architetturali miste. -
. La parte che segue verra svolta facendo riferimento allo statement di alta Uvello
A: = B+C dove A, Bee cono variabili intere.
F"lodello a Negli anni sessanta e settanta sonG state costruite macchine che
modellavano iI madella astratto di calcolo basato sullo stack
31
. Operaziani come
per esempio un'addizione (ADD) non richiedono che venga esplicitato alcun ope-
rando, in quanta i due operandi vengono prelevati dalle due pasizioni di testa
dello stack, mentre it risultato viene depositato sempre sullo stack stesso. Si
tratta di architetture che, in termini astratti, rnodellana al meglio certi forma-
lismi presenti in alcuni linguaggi di programmazione di alto
Numero d.i byte possibili per ciascuno dei campi dell'i.slru?;ione
',; Figura 2.15 Formato delle istruzioni neU'architettura x86, per macchine a 32 bit. 5i noti
che vera e propria pub essere preceduta da. ben quattro tipi di prefisso, che ne
. l'interpretazione usuale. 11 campo del codice di operazione pub essere di uno 0
.' due byte. Tre bit del campo MOD RIM sono da. considerare come estensione del codice
di operazione. MOD RIM determina quali registri sono implicati, oltre a indicare se c'e
riferimento alia memoria e a condizionare Ill. presenza del campo SIB (Scale-Index-Base). n
, campo SIB determina. it fattore di scala nell'accesso ai dati. Infine il campo scosta.mento e il
'campo immediato rappresentano rispettivamente 10 scostamento dell'operando in memoria
o una quantita. codificata nell'istruzione.
-::-.- ..I
,
'.
codificata in modo diverse a seconda della modalita el'istruzione PUSH. Uistruzione
PUSH AX (mette sullo stack il registro AX) occupa un solo bytej Pistruzione PUSH mem
, ., sullo stack i1 centenuto della 10cazione mem) ha un differente codice e occupa
.. i byte che servono a sistemare il codice eli operazione e l'indirizzo (10 5costamento)
JIlem.
....,
.",.,
., I
:;; ,;

'.' '
,,'
t.,
'" ,
\
',;, ',.
"4,.", '
, I,
,
,'._.

.,:11.
;iil
1
;

.', .
.
. If! .
,;;.' ,
""1' "
.
,j,:
..' 't

'..
'-'J!
t
,J,
" ',)
:.
,
..,.
'.j
", i
'::",1,
' ..,: 1
;., ,
i/! "
.j'
, '1,
,
,:-.:
.::{i


,
, ).;
.,t' ..
"
.i
:il
,
;
,

-c-::'"
'<:'

,

.' "
3i '
.. ,
" '1
:'1"
"'
.
'.'
w ,
..'J,
. '. . .
. .,
.1;'1'
.,
.'tr ..
1
". : ,
;.;" .
,..r, .

'f"l
' ;; ,

'r:.: '
14
., ., .','
.' " .... ',,,' .
.. .:-j';t:.. ';."
to;: ."..
,. "
.c,
,
,:.; '.
- t
"'.. ' .
!t'
,
,. t
_.
,"J_'
indirizzo e
i
if "RA"=O then bt- a else bi- RA;
EAt- b + EXTS(SIHH);
ROt- H[EA];
oVYero)' in RD viene caricato il contenuto della cella di memoria il CUi
calcolato:
64 Capitola 2
c
1
66 Capitola 2
livello
33
.
'"
":,,:1'
..)", '.
I. .-
-j
,
i .'
,
,

"
".. ",' ,
'.
"!
Elementi architetturah di base
67
,
Ftack
Registro-Registro I Memoria-Registro ' Memoria-Memoria I
PUSH B
LOAD Rl,B LOAD B ADD A,B,C
PUSH C
LOAD R2,C ADD C
ADD
ADD R3,Rl,R2 STORE A
POP A
STORE A,R3
35Negli anni settanta venne proposta una CPU, il Texas TMS9900, cbe aveva questa caratteristica:
per it programmatore la macchin& aveva un blocco di 16 registri, rna d.i fatto i registri erano in
memoria. In CPU c'era soltanto il alia posizione di partenza del blocco in memoria. Le
istru.zioni che nominavano i registri Ii rauiungevano attraverso tale puntatore. II va.otaggio di questa
a.rclutettura risiedeva nel fatto che era possibile "cambiare it contesto del progr<Unma." , doe i registri,
cambiando solo iI puntatore in CPU. Tale fatto risultava utile Del tratta.mento delle interruzioni e
nella realizzazione di aistemi a processi concorrenti. rna induceva sempre il carico dei riferimenti alIa
memoria.
Uno deg.li aspetti piu importanti di un'architettura e dato delle modalita. di indi-
rizzamento in memoria, ovvero come vengono raggiunti gli oggetti dell'elaborazione
(costanti, variabili) e come viene passato il controllo tra parti diverse di programma.
2.7 Indirjzzamento
. , .
scrittura). Rispetto a un'architettura a registri si triplicano gli accessi alia memoria.
Con' l'abbassarsi dei costi della memoria e con il divaricamento tra Ie prestazioni delle
CPU rispetto al queUe delle memorie, questa soluzione ha perso totalmente campo.
In Figura2.16 il modello memoria-memoria sembra essere quello pili efficiente
da! punta di vista dell'esecuzione e per quanto riguarda la compattezza del codice.
Anche questa modello, sebbene largamente caldeggiato negli anni settanta, non ha
avuto success0
35
. All'apparente efficienza carrisponde un gran traffico con 1a memoria,
sebbene inferiore a queUo del modello precedente, da cui derivano prestazioni scadenti,
oltre a complicazioni architetturali per 1a gestione dei tre indirizzamenti.
. .
" In conclusione i modelli registro-memoria e il modelio registro-registro sono quelli
prevalenti. La disponibilita di un ampio Dumero di registri consente al compilatore di
ottlmizzare i riferimenti alia memoria, tenendo Ie variabili nei registri stessi, riducendo
drasticamente il traffico con la memoria e semplificando la struttura delPindirizzamen-
to." Per esempio: una volta che una variabile estata caricata in un registro non c'e
necessita. di ricopiarla in memoria fino a che quel registro non si renda assolutamente
necessaria per altri scapi. Cia non e possibile ne col modelio a stack ne col modello
. .
memona-memona.
Figura 2.16 in aI. di esecuzione, per 10 st,atement di alto
livello' A:=B+C. 81 suppone che Ie Var18blh A e B non debbano essere modificate.
!'.
( :
"
.. ,
j
II

,
, ",'
'i'
,;;1.
;"'1
"
j:
...1
;.'"
,

'.
'r.::
t.,
-
>,"
'..
"
, .
,1'
"I
'd' '
,<
'4
:4 .
...,
"
.....
;;I' '
,

:> -',

Mode moria-mem9ria Sono state realizzate macchine in cui il modella di


elaborazione prevedeva e con una sola istruzione 180 CPU otesse' e
sis. Ie due POSlZIO 1 ntenenti Ii 0 er j... ",,::
nazione, sempre in mewopa. del risul...ta:U>. Ovviamente, il formata dell'istruzione ;':
creve precedere, oltre al codice di operazione
,
tIe campi per indiri?-zare Ie tre
posizioni in memoria.
- "'1
Modelle registri-memoria Le 0 erazioni yen ODO ese uite tra un Ie 'stre e il conte- "::::,, t'
u 0 una cella eli n caso estremo di questc mo e 10 e a mac lOa i I,.
con un solo registro accumulatore
3
\ W1a soluzione adottata negli anni sessanta. , ,A .:
Le istruzioni nominano esplicitamente un solo operando in memoria, mentre l'al-
tIC operando eimplicitamente preso dar registro accumulatore, dove pure viene .,
depositato il risultato. II vantaggio ela compattezza del codice, contra una nan :ti
trascurabile rigidita. dovuta al fatto che tutto cleve passare per Paccumulatore. tit.
Naturalmente questa soluzione era giustificata dall'obiettivo di limitare i costi; di
" fatto i. a.nn
i
piu spesso
con differentl speclalizzazlOnl, e Ie Jstruzl0Dl dovevano Dommare esphcltamente
gli attri registri. NelParchitettura 8086 si parla di 8 registri di uso generale, anche
se poi tutti quanti hanna una lora specializzazione (err. Appendice B). Tra di '01'
essi c'e un registro, AX, che viene denominato accumulatore, sebbene non gada
dell'esclusivita di intervenire nelle operazioni aritmetiche. n termine di accumu- _' ..
latore deriva dal. che per . :.. ,
forza AX, mentre altn reglstn sono speclallzzatl III altre funzIOnI. OVVlamente,
le istruzioni 8086 devono nominare i registri implicati, compreso AX. }il
Madella registro-registro Questa modello preyede un blocco di regi- ',;ti.,
stri di usa generale s stanzialrnent . ollenti tra di loro e sern lid 0 erazioni .'.4..,
cancamen 0 e memorizzazione. Le operaziQni di manjpolazione deLdgli
sernpre e solo revstp come contenjtOFi degit-&perandi e deLti- ;':)J,'
esempio, A?D RA, .Re Ia
del contenuto. regJstn e RC e deposl.ta nsultato in RA.. L dl
una somma nchiede che pnma vengano cancatl RB e RC con gil addendl. .-
,f ,
..
In Figura2.16 si confrontano Ie Quattro prececlenti categorie in riferimento alIa
statement A: = B+C.
Nel modello a stack, non essendoci operandi espliciti, Ie istruzioni di manipola-
zione risultano molto compatte, can evidenti vantaggi in termini di occupazione di
memoria, aoche se ci sono Ie istruzioni di caricamento degli operandi sullo stack e
di memorizzazione del risultato in memoria. Complessivamente questa architettura e
quella che da luogo al pill alto traffico can la memoria. Bisogna infatti: (i) caricare gli
operandi sullo stack (lettura e scrittura per CiasCWl operando); (ii) eseguire l'opera-
zione sullo stack. (letture e scrittura)j (iii) depositare il risultato in memoria (Iettura e
33I1linguaggio ALGOL (Algorithmic Language), ormai in disuso, ebbe vasta influenza nel corso
degli anni sessanta.
34n prototipo di questa architettura eatato il minicalcolatore PDP-8.
\
I
\

[
I
I
I
t
\
I(
\

1
66 Capitola 2
livello
33
.
'"
":,,:1'
..)", '.
I. .-
-j
,
i .'
,
,

"
".. ",' ,
'.
"!
Elementi architetturah di base
67
,
Ftack
Registro-Registro I Memoria-Registro ' Memoria-Memoria I
PUSH B
LOAD Rl,B LOAD B ADD A,B,C
PUSH C
LOAD R2,C ADD C
ADD
ADD R3,Rl,R2 STORE A
POP A
STORE A,R3
35Negli anni settanta venne proposta una CPU, il Texas TMS9900, cbe aveva questa caratteristica:
per it programmatore la macchin& aveva un blocco di 16 registri, rna d.i fatto i registri erano in
memoria. In CPU c'era soltanto il alia posizione di partenza del blocco in memoria. Le
istru.zioni che nominavano i registri Ii rauiungevano attraverso tale puntatore. II va.otaggio di questa
a.rclutettura risiedeva nel fatto che era possibile "cambiare it contesto del progr<Unma." , doe i registri,
cambiando solo iI puntatore in CPU. Tale fatto risultava utile Del tratta.mento delle interruzioni e
nella realizzazione di aistemi a processi concorrenti. rna induceva sempre il carico dei riferimenti alIa
memoria.
Uno deg.li aspetti piu importanti di un'architettura e dato delle modalita. di indi-
rizzamento in memoria, ovvero come vengono raggiunti gli oggetti dell'elaborazione
(costanti, variabili) e come viene passato il controllo tra parti diverse di programma.
2.7 Indirjzzamento
. , .
scrittura). Rispetto a un'architettura a registri si triplicano gli accessi alia memoria.
Con' l'abbassarsi dei costi della memoria e con il divaricamento tra Ie prestazioni delle
CPU rispetto al queUe delle memorie, questa soluzione ha perso totalmente campo.
In Figura2.16 il modello memoria-memoria sembra essere quello pili efficiente
da! punta di vista dell'esecuzione e per quanto riguarda la compattezza del codice.
Anche questa modello, sebbene largamente caldeggiato negli anni settanta, non ha
avuto success0
35
. All'apparente efficienza carrisponde un gran traffico con 1a memoria,
sebbene inferiore a queUo del modello precedente, da cui derivano prestazioni scadenti,
oltre a complicazioni architetturali per 1a gestione dei tre indirizzamenti.
. .
" In conclusione i modelli registro-memoria e il modelio registro-registro sono quelli
prevalenti. La disponibilita di un ampio Dumero di registri consente al compilatore di
ottlmizzare i riferimenti alia memoria, tenendo Ie variabili nei registri stessi, riducendo
drasticamente il traffico con la memoria e semplificando la struttura delPindirizzamen-
to." Per esempio: una volta che una variabile estata caricata in un registro non c'e
necessita. di ricopiarla in memoria fino a che quel registro non si renda assolutamente
necessaria per altri scapi. Cia non e possibile ne col modelio a stack ne col modello
. .
memona-memona.
Figura 2.16 in aI. di esecuzione, per 10 st,atement di alto
livello' A:=B+C. 81 suppone che Ie Var18blh A e B non debbano essere modificate.
!'.
( :
"
.. ,
j
II

,
, ",'
'i'
,;;1.
;"'1
"
j:
...1
;.'"
,

'.
'r.::
t.,
-
>,"
'..
"
, .
,1'
"I
'd' '
,<
'4
:4 .
...,
"
.....
;;I' '
,

:> -',

Mode moria-mem9ria Sono state realizzate macchine in cui il modella di


elaborazione prevedeva e con una sola istruzione 180 CPU otesse' e
sis. Ie due POSlZIO 1 ntenenti Ii 0 er j... ",,::
nazione, sempre in mewopa. del risul...ta:U>. Ovviamente, il formata dell'istruzione ;':
creve precedere, oltre al codice di operazione
,
tIe campi per indiri?-zare Ie tre
posizioni in memoria.
- "'1
Modelle registri-memoria Le 0 erazioni yen ODO ese uite tra un Ie 'stre e il conte- "::::,, t'
u 0 una cella eli n caso estremo di questc mo e 10 e a mac lOa i I,.
con un solo registro accumulatore
3
\ W1a soluzione adottata negli anni sessanta. , ,A .:
Le istruzioni nominano esplicitamente un solo operando in memoria, mentre l'al-
tIC operando eimplicitamente preso dar registro accumulatore, dove pure viene .,
depositato il risultato. II vantaggio ela compattezza del codice, contra una nan :ti
trascurabile rigidita. dovuta al fatto che tutto cleve passare per Paccumulatore. tit.
Naturalmente questa soluzione era giustificata dall'obiettivo di limitare i costi; di
" fatto i. a.nn
i
piu spesso
con differentl speclalizzazlOnl, e Ie Jstruzl0Dl dovevano Dommare esphcltamente
gli attri registri. NelParchitettura 8086 si parla di 8 registri di uso generale, anche
se poi tutti quanti hanna una lora specializzazione (err. Appendice B). Tra di '01'
essi c'e un registro, AX, che viene denominato accumulatore, sebbene non gada
dell'esclusivita di intervenire nelle operazioni aritmetiche. n termine di accumu- _' ..
latore deriva dal. che per . :.. ,
forza AX, mentre altn reglstn sono speclallzzatl III altre funzIOnI. OVVlamente,
le istruzioni 8086 devono nominare i registri implicati, compreso AX. }il
Madella registro-registro Questa modello preyede un blocco di regi- ',;ti.,
stri di usa generale s stanzialrnent . ollenti tra di loro e sern lid 0 erazioni .'.4..,
cancamen 0 e memorizzazione. Le operaziQni di manjpolazione deLdgli
sernpre e solo revstp come contenjtOFi degit-&perandi e deLti- ;':)J,'
esempio, A?D RA, .Re Ia
del contenuto. regJstn e RC e deposl.ta nsultato in RA.. L dl
una somma nchiede che pnma vengano cancatl RB e RC con gil addendl. .-
,f ,
..
In Figura2.16 si confrontano Ie Quattro prececlenti categorie in riferimento alIa
statement A: = B+C.
Nel modello a stack, non essendoci operandi espliciti, Ie istruzioni di manipola-
zione risultano molto compatte, can evidenti vantaggi in termini di occupazione di
memoria, aoche se ci sono Ie istruzioni di caricamento degli operandi sullo stack e
di memorizzazione del risultato in memoria. Complessivamente questa architettura e
quella che da luogo al pill alto traffico can la memoria. Bisogna infatti: (i) caricare gli
operandi sullo stack (lettura e scrittura per CiasCWl operando); (ii) eseguire l'opera-
zione sullo stack. (letture e scrittura)j (iii) depositare il risultato in memoria (Iettura e
33I1linguaggio ALGOL (Algorithmic Language), ormai in disuso, ebbe vasta influenza nel corso
degli anni sessanta.
34n prototipo di questa architettura eatato il minicalcolatore PDP-8.
\
I
\

[
I
I
I
t
\
I(
\

,
'EI ....:
" . \
'.
\

j
1
\
I
I
I
\
\
\
t
1
69
i+8
i+4
1
Elementi architetturaJi di base
,
3 2
<ilJ' ?:: (:',

.. a ._--
,.__ ,t.,. "
"":":.;..., . ,.'
v .-.,
. -. ..
""'@f
J
:
,;:.....:
':F'"

2 ,'i'\"<
1
o .
, .
.
3 2 1 a
:
D'H' t
0"-,, t
t
In-,
Bus dati
37n significato del termine spiegato 301 Capitola 3.
..

...
2.7.2 Allineamento
'. Figura 2.18 Schema del collegamento della memoria al bus dei dati. Una parola allineata
: a.l generico indiiiz20 i richiede un solo accesso alIa memoria. La parola non allineata, tratteg.
giata in figura, ha la parte meno'significativa nei due byte piu significativi aHa posizione i+4
" e la parte pili significativa nei due byte meno significativi della posuione i+8. La sua lettura
. richiede due acce8si: uno per ciascuna meta.. Inoltre, siccome sui bus Ie posizioni risultano
scambiate, 130 CPU deve essere dotata delia logics. per riportare nella. giusta. p08izionele due
.
-
Nel trasferimento di una parola tra CPU e memoria 8i pone la questione se la parola
debba essere allineata, ovverO se debba trovarsi a un indirizzo divisibile per 4 0 se e
: coosentito che essa sia a qualunque indirizzo. Possiamo immaginare che una memoria
a 32 bit sia fatta di quattro banchi ciascuno dei quali contiene i byte corrispondenti
alla stessa posizione nella parola. In Figura2.18 viene mostrata una parola non alli-
neata, La sua letturajscrittura richiede almeno due cieli: prima per leggerejscrivere

atl'indirizzo i+4 e successivamente all'indirizzo i+8. E evidente che la doppia lettura


rappresenta un rallentamento e che si richiede la presenza della logica per rimettere
.. . in ordine i byte. Per questa ragione, l'allineamento erichiesto in molte architetture,
'in special modo nelle macchine RISC. Se viene tentata una lettura 0 una scrittura a
una parola non allineata viene generata uo'eccezione
37
. La dimensione del dato let-
tojscritto determina l'allineamento, Per Ie parole l'alLineamento ea indirizzi multipli
di 4, per Ie semiparole a indirizzi multipli di 2, per Ie doppie parole a indirizzi multipli
di 8.
altra situazione in cui l'ordine dei byte erilevante enell'uso di strumenti software per
it debug dei programrni , 0 nell'interpretazione dellistato corrispondente al codice di un
. .testa assembler, Consideriamo per esempio il numero esadecimale FFOO nel teste di
. un. programma assembler. Nel testa si incontra prima FF dI 00, dunque !'ordInamento
Big Endian preserva Porrline testuale, mentre Pordinamento Little Endian 10 rovescia
e una rappresentazione del contenuto della memoria (in orrline crescente di iodirizzo)
farebbe vedere prima 00 e quindi FF.
..

" I

.,
,
Ell EDdieD
0 I 2 3
4 5 6 7
o

di parole.
Liltle Enman
3 2 I 0
7

,
36
1 lennini Little Endian e Big Endian derivano da. un &rticolo apparso suI numero di Otlobre del
1981 di Computer[Coh81J. L'articalo aveva ispirato un'indimenticabile copertina del fascicolo stesso:
con esplicito richiamo ai viaggi di Gulliver, si fnostrava. una scena a fumetti
l
nelta quale un gruppo di
indiai:Li d'America (si noti l'equivoco suUa parola Indian), con facce molto perplesse, si domandavano
da quale parte si dovessera rampere Ie \lova - se dalla parte grossa (Big End) 0 dalla parte piccola
(Little End).
Figura 2.11 I due possibili ordinamenti entro una parola. Quando il byte che I'indirizzo
alia parola si trova. nella. posizione meno significativa si parla di Little Endian) quando si
trova nella posizione piu significativa si parla di Big Endian. Schematicamente ecome'se gli
indirizzj crescessero in versi opposti.
2.7.1 Ordinamento
,..
Praticamente tutte Ie macchine oggi prodotte assegnano gil indirizzi ai byte. In pas- ..
sate sono state castruite macchine in cui gli indirizzi si intendevano assegnati alle '!J
parole. Vesempio piu notevole resta probabilmente il CDC 6600, i1 primo supercom- "'.
puter della storia. Esso che prevedeva parole di 60 bit, ciascuna delle quali conteneva " :
10 "byte
Jl
di 6 bit. Ovviamente, non essendo previsto l'indirizzamento dei byte, Ie .. :
operazioni che Ii coinvolgevano, per esempio per il trattamento di informazioni alfa- :'J::
numeriche, richiedevano un arnpio uso di AND, OR ecc'
l
in modo cia pater isolare, " .
raggruppare, secondo convenienza i singoli gruppi di sei bit, In altre parole, trattare
stringhe di caratteri era aiquanto laborioso, rna, del restol la macchina non era stata ' "
castruita per tali finalita. Alcum minicalcolatori; per esempio quelli della serie 21xx
della Hewlett-Packard, leggevano e scrivevano in memoria sempre e solo parole di 16 . ,
bit; Ie istruzioni occupavano sempre e solo una parola. ;\':', "
Nelle macchine oggi in usc, pur essendo l'indirizzo riferito ai byte, eovviamente
possibile trasferire, oltre al singolo byte, dati di 16 bit (semiparola), di 32 bit (parola) . i}jl
e 64 bit (doppia parola), sempre che ii bus 10 consenta. :,;{it.
" .'
Se un'istruzione fa riferimento a un oggetto che non eun byte, si pone il problema I':::;!:;'
di come vengono presi gil altri byte che compongono l'oggetto stesso, oltre a queUo '.
che ne da l'indirizzo. Considerando per esempio i riferimenti a una parola, it byte che . '.
cia l'indirizzo alla parola econsiderato nella posizione meno significativa 0 in quella;:'1 i
pili significativa? La questione viene' illustrata in Figura 2.17. L'architettura Intel
adotta l'ordinamento Little Endian
36
; i Motorola 680xO quella Big Endian. Alcune '
architetture, tra cUi la PowerPC consentono d.i lisare Puno 0 Paltro, in base at valore dL
un bit del registro di stato che imposta il modo di funzionare della macchina [Jarn901
,j-!".
, " ," '"',
Indiri:zzo _:...-
.J

, (:, '.
d.
,,,,,ll. , .
-'I'
'-<J!,

:1;<-
'j';; ,

'-" '
. ,
,:!( ,
, ',.:,'
'
" 'I
.bt. '
"j"
"
'.

]1 .
II normale programmatore non ai accorge dell'ordinamento dei byte, ,a meno che )]:
non debba scambiare dati tra due macchine che adottano convenzioni diverse. Un '-
"

:. ,.: '
:.:' ..,
..
"""1

...
'" .
'j' .
,- .
'0..
,\t

"rtl
68 Capitolo 2
,
'EI ....:
"
. \
'.
\

j
1
\
I
I
I
\
\
\
t
1
69
i+8
i+4
1
Elementi architetturaJi di base
,
3 2
<ilJ' ?:: (:',

.. a ._--
,.__ ,t.,. "
"":":.;..., . ,.'
v .-.,
. -. ..
""'@f
J
:
,;:.....:
':F'"


2 ,'i'\"<
1
o .
, .
.
3 2 1 a
:
D'H' t
0"-,, t
t
In-,
Bus dati
37n significato del termine spiegato 301 Capitola 3.
..

...
2.7.2 Allineamento
'. Figura 2.18 Schema del collegamento della memoria al bus dei dati. Una parola allineata
: a.l generico indiiiz20 i richiede un solo accesso alIa memoria. La parola non allineata, tratteg.
giata in figura, ha la parte meno'significativa nei due byte piu significativi aHa posizione i+4
" e la parte pili significativa nei due byte meno significativi della posuione i+8. La sua lettura
. richiede due acce8si: uno per ciascuna meta.. Inoltre, siccome sui bus Ie posizioni risultano
scambiate, 130 CPU deve essere dotata delia logics. per riportare nella. giusta. p08izionele due
.
-
Nel trasferimento di una parola tra CPU e memoria 8i pone la questione se la parola
debba essere allineata, ovverO se debba trovarsi a un indirizzo divisibile per 4 0 se e
: coosentito che essa sia a qualunque indirizzo. Possiamo immaginare che una memoria
a 32 bit sia fatta di quattro banchi ciascuno dei quali contiene i byte corrispondenti
alla stessa posizione nella parola. In Figura2.18 viene mostrata una parola non alli-
neata, La sua letturajscrittura richiede almeno due cieli: prima per leggerejscrivere

atl'indirizzo i+4 e successivamente all'indirizzo i+8. E evidente che la doppia lettura


rappresenta un rallentamento e che si richiede la presenza della logica per rimettere
.. . in ordine i byte. Per questa ragione, l'allineamento erichiesto in molte architetture,
'in special modo nelle macchine RISC. Se viene tentata una lettura 0 una scrittura a
una parola non allineata viene generata uo'eccezione
37
. La dimensione del dato let-
tojscritto determina l'allineamento, Per Ie parole l'alLineamento ea indirizzi multipli
di 4, per Ie semiparole a indirizzi multipli di 2, per Ie doppie parole a indirizzi multipli
di 8.
altra situazione in cui l'ordine dei byte erilevante enell'uso di strumenti software per
it debug dei programrni , 0 nell'interpretazione dellistato corrispondente al codice di un
. .testa assembler, Consideriamo per esempio il numero esadecimale FFOO nel teste di
. un. programma assembler. Nel testa si incontra prima FF dI 00, dunque !'ordInamento
Big Endian preserva Porrline testuale, mentre Pordinamento Little Endian 10 rovescia
e una rappresentazione del contenuto della memoria (in orrline crescente di iodirizzo)
farebbe vedere prima 00 e quindi FF.
..

" I

.,
,
Ell EDdieD
0 I 2 3
4 5 6 7
o

di parole.
Liltle Enman
3 2 I 0
7

,
36
1 lennini Little Endian e Big Endian derivano da. un &rticolo apparso suI numero di Otlobre del
1981 di Computer[Coh81J. L'articalo aveva ispirato un'indimenticabile copertina del fascicolo stesso:
con esplicito richiamo ai viaggi di Gulliver, si fnostrava. una scena a fumetti
l
nelta quale un gruppo di
indiai:Li d'America (si noti l'equivoco suUa parola Indian), con facce molto perplesse, si domandavano
da quale parte si dovessera rampere Ie \lova - se dalla parte grossa (Big End) 0 dalla parte piccola
(Little End).
Figura 2.11 I due possibili ordinamenti entro una parola. Quando il byte che I'indirizzo
alia parola si trova. nella. posizione meno significativa si parla di Little Endian) quando si
trova nella posizione piu significativa si parla di Big Endian. Schematicamente ecome'se gli
indirizzj crescessero in versi opposti.
2.7.1 Ordinamento
,..
Praticamente tutte Ie macchine oggi prodotte assegnano gil indirizzi ai byte. In pas- ..
sate sono state castruite macchine in cui gli indirizzi si intendevano assegnati alle '!J
parole. Vesempio piu notevole resta probabilmente il CDC 6600, i1 primo supercom- "'.
puter della storia. Esso che prevedeva parole di 60 bit, ciascuna delle quali conteneva " :
10 "byte
Jl
di 6 bit. Ovviamente, non essendo previsto l'indirizzamento dei byte, Ie .. :
operazioni che Ii coinvolgevano, per esempio per il trattamento di informazioni alfa- :'J::
numeriche, richiedevano un arnpio uso di AND, OR ecc'
l
in modo cia pater isolare, " .
raggruppare, secondo convenienza i singoli gruppi di sei bit, In altre parole, trattare
stringhe di caratteri era aiquanto laborioso, rna, del restol la macchina non era stata ' "
castruita per tali finalita. Alcum minicalcolatori; per esempio quelli della serie 21xx
della Hewlett-Packard, leggevano e scrivevano in memoria sempre e solo parole di 16 . ,
bit; Ie istruzioni occupavano sempre e solo una parola. ;\':', "
Nelle macchine oggi in usc, pur essendo l'indirizzo riferito ai byte, eovviamente
possibile trasferire, oltre al singolo byte, dati di 16 bit (semiparola), di 32 bit (parola) . i}jl
e 64 bit (doppia parola), sempre che ii bus 10 consenta. :,;{it.
" .'
Se un'istruzione fa riferimento a un oggetto che non eun byte, si pone il problema I':::;!:;'
di come vengono presi gil altri byte che compongono l'oggetto stesso, oltre a queUo '.
che ne da l'indirizzo. Considerando per esempio i riferimenti a una parola, it byte che . '.
cia l'indirizzo alla parola econsiderato nella posizione meno significativa 0 in quella;:'1 i
pili significativa? La questione viene' illustrata in Figura 2.17. L'architettura Intel
adotta l'ordinamento Little Endian
36
; i Motorola 680xO quella Big Endian. Alcune '
architetture, tra cUi la PowerPC consentono d.i lisare Puno 0 Paltro, in base at valore dL
un bit del registro di stato che imposta il modo di funzionare della macchina [Jarn901
,j-!".
, " ," '"',
Indiri:zzo _:...-
.J

, (:, '.
d.
,,,,,ll. , .
-'I'
'-<J!,

:1;<-
'j';; ,

'-" '
. ,
,:!( ,
, ',.:,'
'
" 'I
.bt. '
"j"
"
'.

]1 .
II normale programmatore non ai accorge dell'ordinamento dei byte, ,a meno che )]:
non debba scambiare dati tra due macchine che adottano convenzioni diverse. Un '-
"

:. ,.: '
:.:'
..,
..
"""1

...
'" .
'j' .
,- .
'0..
,\t

"rtl
68 Capitolo 2
71
Elementi architetturali di base
10p[pl'ND I
I op IPb IP,d I IND I
Figura 2.19 Possibili formati di istruzioni che indirizzano la memoria. U campo IND
contiene l'indirizzo, Questo campo e di norma insufficiente a rappresentare la dimensione
roassiroa della memoria e per consentire un indirizzamento piu ampio di quanto esso permet-
tao Se per esempio la macchina ha. un bus di indirizzi a 32 bit e Ie istruzioni sono su 32 bit
eindubbio che la dimensione del campo INn delPistruzione in alto sara. comunque inferiore
a 32. Occorre prevedere uno schema in cui IND esolo una componente dell'indiriz.zo ca1co-
lato dalla CPU. Nel caso dell'istruzione in basso l'indirizzo viene calcolato come somma del
contenuto del campo IND e del contenuto del registro; Rb. L'interpretazione di INn dipende
dallo schema di indirizzamento, nel senso che esso pub rappresentare uno scosta.mento 0 un
indirizzo assoluto,
"1""
-/l.....
.,- ,

....',"
Capitolo 2
2.7.3 Indirizzamento dei dati
.."
,
, ij
"1
+,.
,. ...,! :
.,
'.,.
".13
.i, ,-
"', .
,..:, ,
.. \'
':.
li;\ .' -', . ,
"', ..
"I;. ' ,':
.,.
-':9 ;
....
." ..
;'
":..; .
'''ji
....
"
-, "
,
" ., .
.- ".... ,
; \
','
,I'
(iJ ;' .
,""1 .
',::r1"" ,
" .. .,.
,.:;,; ..
-'('" j',',
,..
,.
" ,\
,::' la finestra segue l'esecuzione del programma stesso. nPDP 8 adottava questa tecnica,
:,', ".,. anChe se la finestra indirizzabile era di soli 256 byte
38
.' Nelle architetture correnti si preferisce interpretare IND come uno scostamento
",;\ rispetto ad altri registri, mentre il PC funge cia riferimento solo ed esclusivamente
f,.:., per Ie istruzioni di saito. L'ulteriore registro cleve essefe rappresentato nel codice di
; -'.' lstruzione e quindi, a parita di dimensione dell'istruzione il campo IND si riduce
1
come
:.. .. ,":.' 'indicato nella parte inferiore eli Figura2.19. L'istruzione diventa, per
, esempio
1
LD Rl,var(R2)1 cOll'Rl come Rsd (parte bassa dl Flgura2.19), e con R2
.. .... : come Rb.. .
Esiste Wla varieta di modi per Pindirizzamento dei dati in memoria. Per prima co- ,', ';,,' Sqrge qui un problema: in base a Quale riferirnento puo il compilatore (l'assem-
sa analizziamo i1 problema della codifica dell'indirizzo di memoria nel codice delle .. olatore) calcolare IND per var?
istruzioni e nella sua interpretazione, ,2':,,:; , ",., Supponiamo che la memoria sia lineare
1
ovvem che 1a memoria sia un blocco
Facciamo riferimento a una macchina del tipo registri-memoria e consideriaroo indifferenziato di celIe, dall'indirizzo 0 a.lPindirizzo M-l. La COS3 pili
un'istruzione come LD RA, var, dove var eil nome simbolico di una generica posizione' 'naturale eipotizzare che l'assemblatore determini l'indirizzo d.i var rispetto all'indiriz-
in il, foqnato tre caI:?Pi, di 'zb 0,. assunto convenzionalmente come base eli dell'intero e che
uno dedicato al codlce di operazlOne LD, uno de<hcato alia codifica del regtstro RA,lI ",' \P;;';""" aU'atto del caricamento del programma in memona 11 campo IND venga aggmstato
terzo dedicato a .conte?er.e l'indirizzo di var, con un formato come quello mostrato in mod? da tener in memoria. Questo viene
nella parte supenore dl Flgura2.19. ,:,:-0..: -::, etto r;locamento 0 (Flgura2.20) ed e svolto da un programma dl SIstema
Conviene introdurre il concetto eli indirizzo effettivo (effective address) (EA). ' '.. <:: ..,.,
, ., ,- .,' ...
Con questa termine si indica il valore che risulta da! calcolo dell'indirizzo attraverso 38' . .. .. . ., .
i componenti espliciti rappresentati nel codice di istruzione. Per esernpio: nel caso ;':'1 :;;"; ',,' _, . A.tltolo dl 91 .Sol,uzlOne adottata. dal HP della sene 21xx"
,_ .. .. ,. .,. t j;' '.' macchma era a 16 bit; IstruzlOm e mdinzzl sempre su 16 bit, La memon3o era concettualmente divisa
m 1 edato da! campo IND, men re in pagine di 4kbyte in posizioni fisse. Si distingueva Ia. pogina corrente (quella. in cui si trovava il
nel caso delllStrUZlone infenore, IlDdmzzo effettlvo e dato dalla somma del contento "controllo) dalla pagina bale 0 pagina zero (Ia prima. neUo spazio di memoria). 11 campo IND era
del campo IND con il contenuto eli Rb. Come vedremo, l'indirizzo effettivo puo a no '--, '" ' bit, a 4kbyte, e veniv,a come assoluto. Un ulteriore
coincidere COD l'indirizzo fisko . l'lndlrlzZO era da continderare In pagma. corrente 0 ID paSlua base. Con questo artificlO,
. . .. , ..,' .' .. ". un dovunque si t.rovasse, poteva indirizzare dirett.amente 8 kbyte, di cui 4kbyte nella
Una maruera per superare la lllmtazlOne da.ta dalla dlmenslOne dl lND conslste ,'.','1: to ," paglna corrente e 4kbyte nella pagina base. Era inoltre prevista la modalita. di indirizzamento
nelllinterpretare questa campo non come un indir.izzo effettivo, rna come uno scosta- :. :.' '.'. rispetto 301 contenuto di memoria; per esempio, l'iatruzione LDA mem,! caricava nel registro
mento rispetto a un registro eli riferimento. Immediatamente viene da pensare a PC '>. A It della di memoria. ii. cui era contenut.o in .mem.. Struttando la
com revl!=:tro eli riferimento e assumere che IND rappresenti 10 scostamento dell'og- ';:$ ;,":,:,:-t. ,':' e lln?l.nzza.:m
ento
. mdlretto ,?osslblle qualunque Bastava:
e . 0-:. . . ,.'. . In una pOSIZlone In paglOa base l'mdlrlzzo da raggluogere e programmare un IDdmzzamenw lOdlretto
getto lOdinzzato nspetto a PC stesso. Naturalmente IND deve essere mterpretato .'f-:.f. :.,.... ,', ,.,,:',.. attraverso tale posizione, Era cib che faceva it Linker nel cancare i programmi in memoria: quando
come un numero intero con segno, in modo da consentire di indirizzare in avanti 0 i' :.:: \-','. - $Contin3ova i limitidella pagina corrente, veniva modifica.ta l'istruzione rendendola.
dietro. Si determina doe una finestra entro cui il programma indirizza direttamente e IOdlretta. attraverso la pagina base dove veniva generate l'indirizzo desiderato.
,,','- ,
. ".'
.,
Anc;:he se 130 macchina impone il vincolo deWallineamento, resta comunque la pOIr
sibilita. the possano essere effettuati trasferimenti tra CPU e memoria di singoli byte
o mezze parole. Cio impone una rete per posizionare queste quantita. Per esempio,
l'istruzione di memorizzazione di un byte (STB) prevede normalmente che il byte
no signiticativo di un registro possa essere memorizzato a qualsivoglia indirizzo
1
senza
modificare il contenuto degli altri byte della parola che corrisponde a tale indirizzo.
Si tratta dunque eli allineare il byte dalla posizione 0 (quella clie ha nel registro) a
una qualunque delle quattro posizioni in una parola. Supponendo per esempio che
debba finire nella posizione 2, 180 rete di allineamento deve provvedere a presentare il
data sulle linee D
23
_
16
e non su D
7
_
0
. .
Nella discussione precedente ci siamo riferiti alia lettura/scrittura dei dati, La
questione dell'allineamento si pone anche in riferimento al prelievo delle istruzioni. Le
macchine RISe hanno istruzioni tutte lunghe una parola (in certi casi anche due) e
quindi sono di per se allineate. Un salto a una posizione non allineata iene conside
rata come un malfunzionamento e determina un'eccezione. Le rnacchine elSe hanno
istruzioni di diversa lunghezza, tuttavia la lettura avviene quanto possibile per
parole allineate. Conviene ricordare che nel caso dell'8086
1
se un saito porta a un
indirizzo dispari (la macchina ha parole di 2 byteL 1a logica di pre1evamento leggeva
prima un solo byte, in modo da riportarsi nella situazione di pater leggere a parole
(Cfr. Appenelice B).
70
(
(
\
I
,\
I

I,
I,
i
j
\
, I
71
Elementi architetturali di base
10p[pl'ND I
I op IPb IP,d I IND I
Figura 2.19 Possibili formati di istruzioni che indirizzano la memoria. U campo IND
contiene l'indirizzo, Questo campo e di norma insufficiente a rappresentare la dimensione
roassiroa della memoria e per consentire un indirizzamento piu ampio di quanto esso permet-
tao Se per esempio la macchina ha. un bus di indirizzi a 32 bit e Ie istruzioni sono su 32 bit
eindubbio che la dimensione del campo INn delPistruzione in alto sara. comunque inferiore
a 32. Occorre prevedere uno schema in cui IND esolo una componente dell'indiriz.zo ca1co-
lato dalla CPU. Nel caso dell'istruzione in basso l'indirizzo viene calcolato come somma del
contenuto del campo IND e del contenuto del registro; Rb. L'interpretazione di INn dipende
dallo schema di indirizzamento, nel senso che esso pub rappresentare uno scosta.mento 0 un
indirizzo assoluto,
"1""
-/l.....
.,- ,

....',"
Capitolo 2
2.7.3 Indirizzamento dei dati
.."
,
, ij
"1
+,.
,. ...,! :
.,
'.,.
".13
.i, ,-
"', .
,..:, ,
.. \'
':.
li;\ .' -', . ,
"', ..
"I;. ' ,':
.,.
-':9 ;
....
." ..
;'
":..; .
'''ji
....
"
-, "
,
" ., .
.- ".... ,
; \
','
,I'
(iJ ;' .
,""1 .
',::r1"" ,
" .. .,.
,.:;,; ..
-'('" j',',
,..
,.
" ,\
,::' la finestra segue l'esecuzione del programma stesso. nPDP 8 adottava questa tecnica,
:,', ".,. anChe se la finestra indirizzabile era di soli 256 byte
38
.' Nelle architetture correnti si preferisce interpretare IND come uno scostamento
",;\ rispetto ad altri registri, mentre il PC funge cia riferimento solo ed esclusivamente
f,.:., per Ie istruzioni di saito. L'ulteriore registro cleve essefe rappresentato nel codice di
; -'.' lstruzione e quindi, a parita di dimensione dell'istruzione il campo IND si riduce
1
come
:.. .. ,":.' 'indicato nella parte inferiore eli Figura2.19. L'istruzione diventa, per
, esempio
1
LD Rl,var(R2)1 cOll'Rl come Rsd (parte bassa dl Flgura2.19), e con R2
.. .... : come Rb.. .
Esiste Wla varieta di modi per Pindirizzamento dei dati in memoria. Per prima co- ,', ';,,' Sqrge qui un problema: in base a Quale riferirnento puo il compilatore (l'assem-
sa analizziamo i1 problema della codifica dell'indirizzo di memoria nel codice delle .. olatore) calcolare IND per var?
istruzioni e nella sua interpretazione, ,2':,,:; , ",., Supponiamo che la memoria sia lineare
1
ovvem che 1a memoria sia un blocco
Facciamo riferimento a una macchina del tipo registri-memoria e consideriaroo indifferenziato di celIe, dall'indirizzo 0 a.lPindirizzo M-l. La COS3 pili
un'istruzione come LD RA, var, dove var eil nome simbolico di una generica posizione' 'naturale eipotizzare che l'assemblatore determini l'indirizzo d.i var rispetto all'indiriz-
in il, foqnato tre caI:?Pi, di 'zb 0,. assunto convenzionalmente come base eli dell'intero e che
uno dedicato al codlce di operazlOne LD, uno de<hcato alia codifica del regtstro RA,lI ",' \P;;';""" aU'atto del caricamento del programma in memona 11 campo IND venga aggmstato
terzo dedicato a .conte?er.e l'indirizzo di var, con un formato come quello mostrato in mod? da tener in memoria. Questo viene
nella parte supenore dl Flgura2.19. ,:,:-0..: -::, etto r;locamento 0 (Flgura2.20) ed e svolto da un programma dl SIstema
Conviene introdurre il concetto eli indirizzo effettivo (effective address) (EA). ' '.. <:: ..,.,
, ., ,- .,' ...
Con questa termine si indica il valore che risulta da! calcolo dell'indirizzo attraverso 38' . .. .. . ., .
i componenti espliciti rappresentati nel codice di istruzione. Per esernpio: nel caso ;':'1 :;;"; ',,' _, . A.tltolo dl 91 .Sol,uzlOne adottata. dal HP della sene 21xx"
,_ .. .. ,. .,. t j;' '.' macchma era a 16 bit; IstruzlOm e mdinzzl sempre su 16 bit, La memon3o era concettualmente divisa
m 1 edato da! campo IND, men re in pagine di 4kbyte in posizioni fisse. Si distingueva Ia. pogina corrente (quella. in cui si trovava il
nel caso delllStrUZlone infenore, IlDdmzzo effettlvo e dato dalla somma del contento "controllo) dalla pagina bale 0 pagina zero (Ia prima. neUo spazio di memoria). 11 campo IND era
del campo IND con il contenuto eli Rb. Come vedremo, l'indirizzo effettivo puo a no '--, '" ' bit, a 4kbyte, e veniv,a come assoluto. Un ulteriore
coincidere COD l'indirizzo fisko . l'lndlrlzZO era da continderare In pagma. corrente 0 ID paSlua base. Con questo artificlO,
. . .. , ..,' .' .. ". un dovunque si t.rovasse, poteva indirizzare dirett.amente 8 kbyte, di cui 4kbyte nella
Una maruera per superare la lllmtazlOne da.ta dalla dlmenslOne dl lND conslste ,'.','1: to ," paglna corrente e 4kbyte nella pagina base. Era inoltre prevista la modalita. di indirizzamento
nelllinterpretare questa campo non come un indir.izzo effettivo, rna come uno scosta- :. :.' '.'. rispetto 301 contenuto di memoria; per esempio, l'iatruzione LDA mem,! caricava nel registro
mento rispetto a un registro eli riferimento. Immediatamente viene da pensare a PC '>. A It della di memoria. ii. cui era contenut.o in .mem.. Struttando la
com revl!=:tro eli riferimento e assumere che IND rappresenti 10 scostamento dell'og- ';:$ ;,":,:,:-t. ,':' e lln?l.nzza.:m
ento
. mdlretto ,?osslblle qualunque Bastava:
e . 0-:. . . ,.'. . In una pOSIZlone In paglOa base l'mdlrlzzo da raggluogere e programmare un IDdmzzamenw lOdlretto
getto lOdinzzato nspetto a PC stesso. Naturalmente IND deve essere mterpretato .'f-:.f. :.,.... ,', ,.,,:',.. attraverso tale posizione, Era cib che faceva it Linker nel cancare i programmi in memoria: quando
come un numero intero con segno, in modo da consentire di indirizzare in avanti 0 i' :.:: \-','. - $Contin3ova i limitidella pagina corrente, veniva modifica.ta l'istruzione rendendola.
dietro. Si determina doe una finestra entro cui il programma indirizza direttamente e IOdlretta. attraverso la pagina base dove veniva generate l'indirizzo desiderato.
,,','- ,
. ".'
.,
Anc;:he se 130 macchina impone il vincolo deWallineamento, resta comunque la pOIr
sibilita. the possano essere effettuati trasferimenti tra CPU e memoria di singoli byte
o mezze parole. Cio impone una rete per posizionare queste quantita. Per esempio,
l'istruzione di memorizzazione di un byte (STB) prevede normalmente che il byte
no signiticativo di un registro possa essere memorizzato a qualsivoglia indirizzo
1
senza
modificare il contenuto degli altri byte della parola che corrisponde a tale indirizzo.
Si tratta dunque eli allineare il byte dalla posizione 0 (quella clie ha nel registro) a
una qualunque delle quattro posizioni in una parola. Supponendo per esempio che
debba finire nella posizione 2, 180 rete di allineamento deve provvedere a presentare il
data sulle linee D
23
_
16
e non su D
7
_
0
. .
Nella discussione precedente ci siamo riferiti alia lettura/scrittura dei dati, La
questione dell'allineamento si pone anche in riferimento al prelievo delle istruzioni. Le
macchine RISe hanno istruzioni tutte lunghe una parola (in certi casi anche due) e
quindi sono di per se allineate. Un salto a una posizione non allineata iene conside
rata come un malfunzionamento e determina un'eccezione. Le rnacchine elSe hanno
istruzioni di diversa lunghezza, tuttavia la lettura avviene quanto possibile per
parole allineate. Conviene ricordare che nel caso dell'8086
1
se un saito porta a un
indirizzo dispari (la macchina ha parole di 2 byteL 1a logica di pre1evamento leggeva
prima un solo byte, in modo da riportarsi nella situazione di pater leggere a parole
(Cfr. Appenelice B).
70
(
(
\
I
,\
I

I,
I,
i
j
\
, I

\
\
I
\
\

\
\
t
I
f
1
f


,
,
I v",
,
to R1,160 R2
,
Rei. Selmenl
)
.+4
x+160
-
40Nel caso di mac:chine che prevedono un regislro nella formazione deU'indiriz'l:O (Cfr .2,14) questa.
istruzione prevede Puso del registro RO, il cui contenuto epermanentemente 0, oppure la soluzione
indicata a pagina 63,
160 I v", \
'"'
Rl.x+180 R2
o

Programma rilooato in mlmorl..


x+44
x+160
Spllzio desl! indirizzl
f LD Rl'160CR29
180 I var I
Ca.pitolo 2
!liE it modello della CPU 8086, mantenuto in tutte CPU che Ie hanna falto seguito,
l'Appendice B.
lcun odalita d" .. amen i Vediamo ora alcune delle p05sibili
rna alita. di in ' izzamento che e dato di trovare nella pratica industriale, Alcune di
queste, non sono propriamente delle modalita di indirizzamento in memoria.
':i, E I
44 1.0 Rl.160(R2)
,.:, ...., 0
, Spa:z.io dllaU Indlrlni Proaramm.. riloc.. lo 10 memona
'''-;1 :'. :,", Figura 2,21. di in uno spazio di. I
,.,;3 ',. ,"'., relativi agli mdmZZ1, calcola.tl asselIl;blatore 0 da:I m nfenmento alla.
.r9f. "'-' '., ,,:' " z'one convenzionale 0, non necesslta.nO di essere modificat1. Per tener conto della poslzlone
-;":,& ".,'. "\'>.' . d\ caricamento del programma viene usa.to un regi3tro di "egmento. Naturalmente I'esecu
,:. '. ',," <,Y>" zione dell'istruzione richiede venga prima calcola.to l'indirizzo effettivo come
'F' 220 lli1 ' di ' 'd' .. ,." ;]1 , ' . ' 'contenuti del campo IND e dl Rb e che questa vengs. sommato a1 contenuto del reglstro dl
19w-a. ocazlone un programma tn uno SpazlO 1 memoria hneare. I ca.mpi .' - ' ;." d' J" di . tis" .
I
" Ii' ..1:_' , d I .. .. -) gmento per etermmare m nzzo ICO in memona..
re ag sanD calcolatl , aJ a daJ m riferimento alla :'-" ... ' se ..
pOSLZlOne conveuzlonale 0 nello SpazlO degh mdinZZl, AlFatto del cancamenta in memoria .. '.
questi campi vengona modificati in modo da tener conto della posizione eli caricamento dei ;:, .. (" .." " .. ' d' tt E" I' " li di' diriz' t ' . '1
programma in memoria (indicata con x). .' ,:,'." .. IndU'lzzamento Ire 0 a lorma ce zamen ill memona, 1
:'i1' :, .. ' '. campo rnu Vlene mterpretato come tndirizzo effettlvo
40
. EsemplO:
..>'. ,,' LO R1 var 'EA = INo ovviamente R1 +- M[EA]
'-._. ' ,"
'tm' '
L'altro modelio di memoria e queUe segmentato
39
, In esso si assume che 1a ;" ,w.dirizzamento rcla.tivo ai registri Come discusso in precedenza l'indirizzo ef-
sia divisa in posizioni e e che ci siano alcuni i1 ,:. " fettivo. viene calcolato come somma di IND e del contenuto del registro r!
regtstn al dl contengano 1mdinzzo dl partenza (la base) dei .. ,\'. ,''Esemplo:
segmentl, mdicate 10 n segt;nentato cerrisponde meglio ,:( '... " "81 var(R2) ,R5 i EA = IND + R2.
del modeno lineare alla semantlca del programnu, in quante permette la naturale '., " .:'" .', '
suddivisione in parte di controllo, parte dati, stack e altro. Naturalmente introduce .:F", , .','" ... in ,'. mento indiretto ris et . re 'stri Simile aJ caso precedente, masen-
un certo grade di complessita.: bisogna tener presente che i registri di segmento sono }O '-",",' :., "".. ' ,za un campo III nzzo nell'istruzione, Esempio:
sempre dietro la scena e ogni generato un, <,:":'.'.: '. 'Lo 'R1, (R2) i EA = R2_
A parte questa compbcazlOne, tutte Ie tecmche dl mdlnzzarnento usablh nel mo- ,'/. '.' .. .... .. . .
della lineare sana trasportabili al modelio segmentato. Per questa motivo si usa il '-: I elatlVo e mdicla e c agglUnge un
termine di indirizzo effettive (EA) per indicare Pindirizzo calcolato della CPU at. " ' '.do registro con la funzione di indice. E molto conveniente quando si ha' ache
traverso 1a sua espressione esplicita nell'istruzione
,
indipendentemente dalla I, I fare con strutture dati (vettori, matrici ecc.): nell'indirizzc;u-e it generico elemen-
dei registri di segmento. Se 1a memoria e lineare, l'indirizzo effettivo corrisponde a . to, si fa fare al secondo registro la funziene di indice nella struttura, scaJando in
quello fisico, se 1a memoria esegmentata Pindirizzo effettivo cleve essere sommato al :f.i ' base alia dimensione delPelemento stesso. Esempio:
contenuto del registro di segmento per ottenere l'indirizzo fisico. .' ",.' LD Rt, var(R2) (RX) ;'EA = IND+R2+RX*d, d ela dimensione dell'elemento.
, ., ....
" ,
;: -, " I..!.ldirizzamwo iudirettp rjspwo aj resist.; cop Consente eli
:, incrementare automaticamente il contenuto del registro. Anche questa eutile per
,. it modo gli elem,enti di una tabella, Esiate una versione
.. ; ,. che decrementa, EsemplO:
LD Rl, (R2) + ; EA = R2, R2 l- R2+d, deJa dimensione dell'elemento,
'@I '
,i. '.
.. ,
'. ,
"f" ,
'v"
Si veda. 11 "'
"-
,
72
',';;:;;''' I"': ..
.,
.. 0",","
",- "
':.... , .'-
'l-' .
,. ..... t,;'
Elementi architett'urali di base 73
:;;1 , ',<:'", ,':..-:.--_-------====-=-=-'-"------
::d
,.;..1 ,,:";i':('..."" ;
"., ..
di solito indicato come Linker. Naturalmente spetta al programmatore assembler, "'. ::',
ovvero al compilatore, 1a responsabilita circa il significato de1l'indirizzamento relativo' ", :,n' ',.
a un registro (ovvero} che cosa. viene effettivamente inci.irizzato). ': ..\-:: '.. ",
."'\ ' '
.. . , .. ' .
.'" . .",
, ' ,
,
, ... '.'
.,
, ,
.'.'

\
\
I
\
\

\
\
t
I
f
1
f


,
,
I
v",
,
to
R1,160 R2
,
Rei. Selmenl
)

.+4
x+160
-
40Nel caso di mac:chine che prevedono un regislro nella formazione deU'indiriz'l:O (Cfr .2,14) questa.
istruzione prevede Puso del registro RO, il cui contenuto epermanentemente 0, oppure la soluzione
indicata a pagina 63,
160 I v", \
'"'
Rl.x+180 R2
o

Programma rilooato in mlmorl..


x+44
x+160
Spllzio desl! indirizzl
f LD Rl'160CR29
180 I var I
Ca.pitolo 2
!liE it modello della CPU 8086, mantenuto in tutte CPU che Ie hanna falto seguito,
l'Appendice B.
lcun odalita d" .. amen i Vediamo ora alcune delle p05sibili
rna alita. di in ' izzamento che e dato di trovare nella pratica industriale, Alcune di
queste, non sono propriamente delle modalita di indirizzamento in memoria.
':i, E I
44 1.0 Rl.160(R2)
,.:, ...., 0
, Spa:z.io dllaU Indlrlni Proaramm.. riloc.. lo 10 memona
'''-;1 :'. :,", Figura 2,21. di in uno spazio di. I
,.,;3 ',. ,"'., relativi agli mdmZZ1, calcola.tl asselIl;blatore 0 da:I m nfenmento alla.
.r9f. "'-' '., ,,:' " z'one convenzionale 0
,
non necesslta.nO di essere modificat1. Per tener conto della poslzlone
-;":,& ".,'. "\'>.' . d\ caricamento del programma viene usa.to un regi3tro di "egmento. Naturalmente I'esecu
,:. '. ',," <,Y>" zione dell'istruzione richiede venga prima calcola.to l'indirizzo effettivo come
'F' 220 lli1 ' di ' 'd' .. ,." ;]1 , ' . ' 'contenuti del campo IND e dl Rb e che questa vengs. sommato a1 contenuto del reglstro dl
19w-a. ocazlone un programma tn uno SpazlO 1 memoria hneare. I ca.mpi .' - ' ;." d' J" di . tis" .
I
" Ii' ..1:_' , d I .. .. -) gmento per etermmare m nzzo ICO in memona..
re ag sanD calcolatl , aJ a daJ m riferimento alla :'-" ... ' se ..
pOSLZlOne conveuzlonale 0 nello SpazlO degh mdinZZl, AlFatto del cancamenta in memoria .. '.
questi campi vengona modificati in modo da tener conto della posizione eli caricamento dei ;:, .. (" .." " .. ' d' tt E" I' " li di' diriz' t ' . '1
programma in memoria (indicata con x). .' ,:,'." .. IndU'lzzamento Ire 0 a lorma ce zamen ill memona, 1
:'i1' :, .. ' '. campo rnu Vlene mterpretato come tndirizzo effettlvo
40
. EsemplO:
..>'. ,,' LO R1 var 'EA = INo ovviamente R1 +- M[EA]
'-._. ' ,"
'tm' '
L'altro modelio di memoria e queUe segmentato
39
, In esso si assume che 1a ;" ,w.dirizzamento rcla.tivo ai registri Come discusso in precedenza l'indirizzo ef-
sia divisa in posizioni e e che ci siano alcuni i1 ,:. " fettivo. viene calcolato come somma di IND e del contenuto del registro r!
regtstn al dl contengano 1mdinzzo dl partenza (la base) dei .. ,\'. ,''Esemplo:
segmentl, mdicate 10 n segt;nentato cerrisponde meglio ,:( '... " "81 var(R2) ,R5 i EA = IND + R2.
del modeno lineare alla semantlca del programnu, in quante permette la naturale '., " .:'" .', '
suddivisione in parte di controllo, parte dati, stack e altro. Naturalmente introduce .:F", , .','" ... in ,'. mento indiretto ris et . re 'stri Simile aJ caso precedente, masen-
un certo grade di complessita.: bisogna tener presente che i registri di segmento sono }O '-",",' :., "".. ' ,za un campo III nzzo nell'istruzione, Esempio:
sempre dietro la scena e ogni generato un, <,:":'.'.: '. 'Lo 'R1, (R2) i EA = R2_
A parte questa compbcazlOne, tutte Ie tecmche dl mdlnzzarnento usablh nel mo- ,'/. '.' .. .... .. . .
della lineare sana trasportabili al modelio segmentato. Per questa motivo si usa il '-: I elatlVo e mdicla e c agglUnge un
termine di indirizzo effettive (EA) per indicare Pindirizzo calcolato della CPU at. " ' '.do registro con la funzione di indice. E molto conveniente quando si ha' ache
traverso 1a sua espressione esplicita nell'istruzione
,
indipendentemente dalla I, I fare con strutture dati (vettori, matrici ecc.): nell'indirizzc;u-e it generico elemen-
dei registri di segmento. Se 1a memoria e lineare, l'indirizzo effettivo corrisponde a . to, si fa fare al secondo registro la funziene di indice nella struttura, scaJando in
quello fisico, se 1a memoria esegmentata Pindirizzo effettivo cleve essere sommato al :f.i ' base alia dimensione delPelemento stesso. Esempio:
contenuto del registro di segmento per ottenere l'indirizzo fisico. .' ",.' LD Rt, var(R2) (RX) ;'EA = IND+R2+RX*d, d ela dimensione dell'elemento.
, ., ....
" ,
;: -, " I..!.ldirizzamwo iudirettp rjspwo aj resist.; cop Consente eli
:, incrementare automaticamente il contenuto del registro. Anche questa eutile per
,. it modo gli elem,enti di una tabella, Esiate una versione
.. ; ,. che decrementa, EsemplO:
LD Rl, (R2) + ; EA = R2, R2 l- R2+d, deJa dimensione dell'elemento,
'@I '
,i. '.
.. ,
'. ,
"f" ,
'v"
Si veda. 11 "'
"-
,
72
',';;:;;''' I"': ..
.,
.. 0",","
",- "
':.... , .'-
'l-' .
,. ..... t,;'
Elementi architett'urali di base 73
:;;1 , ',<:'", ,':..-:.--_-------====-=-=-'-"------
::d
,.;..1 ,,:";i':('..."" ;
"., ..
di solito indicato come Linker. Naturalmente spetta al programmatore assembler, "'. ::',
ovvero al compilatore, 1a responsabilita circa il significato de1l'indirizzamento relativo' ", :,n' ',.
a un registro (ovvero} che cosa. viene effettivamente inci.irizzato). ': ..\-:: '.. ",
."'\ ' '
.. . , .. ' .
.'" . .",
, ' ,
,
, ... '.'
.,
, ,
.'.'
75
Elementi architetturali di base
per l'istruzione ADD Ri, R2, R3 per
Esercizio 2.10 8i deve dare una valutazione delle prestazioni relative di 8086 e 8088.
Si facciano queste ipotesi: (a) il numero di clock per la lettura (CRD) 0 scrittura
(CWR) in memoria epari a 4; (b) la fasedi fetch e la fase execute sane sequenzjali
(non sovrapposte neanche parzialmente); (c) 10 spazio occupato mediamente da un'i-
struzione in memoria edi 3 byte. Inoltre si assuma che la fuse di execute richieda: (i)
Esercizio 2.8 8i ripeta I'esercizio precedente in riferimento a una macchina Registro-
Registro priva di stack, supponendo.che il numero di registri sia sufficiente a contenere
tutti i parametri. Nell',ipotesi in cui si abbiano chiarnate in ca.scata (da un sottopro-
gramma a un ulteriore'sottoprogramma e eosi in sequenza) e i registri non bastino a
tenere tutti i parametri, si escogiti una soIuzione che permetta il corretta passaggio
dei parametri e il ritorno dalle procedure.
Esercizio 2.9 8i consulti un manuale della famiglia 68000 (sono disponibili sui siti
Motorola) e si confronti la struttura del1'indirizzamento con quella dell'architettura
InteL
'Esercizio 2.7 Sempre in riferimento al passaggio di parametri nelle cbiamate a sotto--
prograrnmi, si consideri una rnaccbina Memoria-Registro, dotata di pochi registri (tali
cia non poter contenere tutti i parametri consentiti dallinguaggio di programmazione)
e priva di stack. 8i definisca una modalita. per il passaggio dei parametri.
2.3 Ripetere il precedente eserclzlO
l'architettura di Figura2,l0 e di Figura2,lL
Esercizio 2.4 Illettore si procuri il manuale di un paio di macchine rose (PowerPC,
MIPS, SPARC ece.) e conrronti i relativi repertori di istruzioni, evidenziando gli
aspetti comuni e quelli non comuni aile difIerenti architetture.
Esercizio 2.5 Illettore esamini in dettaglio il repertorio di istruzioni della CPU 8086
._ in Appendice A - (Possibilmente ci si procuri un manuale Intel; in mancanza del
manuale 8086 si faccia ricorso a queUo di macebine suI mercato come il Pentium 0
il Pentium-Pro e seguenti). In particolare si esaminino Ie istruzioni JEI JZ, CALL,
MOVS e XLAT. Per ciascuna di esse si verifichi se esiste pili ill un possibile formato e
,si verifichino i corrispondenti cicli eli macchina richiesti.
Esercizio 2.6 Si consideri una macchioa con arcbitettura Registro-Registro priva di
stack e una maccbina Memoria-Registro dotata di stacie In riferiroento a una cmama-
ta di procedura in un linguaggio di alto livello, per esempio 10 statement in Iinguaggio
C x= fun(A,B,C), si analizzino possibili modalita. di passaggio dei parametri nei due
casi e si confrontino Ie due architetture sotto questa punto di vista.
nlettore immagini di possedere i registri cbe gli sono utili (PC, MAR, MDR ecc,) e
che per essi siano possibili i comandi di abilitazione dell'ingresso e dell'uscita, come
nel modello fondamentale di funzionamento dei regiBtri (Figura 1.7).
j Esercizio 2.2 Sempre in riferimento aUo schema di Figura2.10 e alIa schema di Figu-
,. ra 2.9, si consideri l'istruzione LD R1, MEM, dove MEM ecodificato nel codice di istruzione
come l'indirizzo di una cella di memoria. Si costruisca la sequenza di comandi che
Ie azioni corrispondenti al caricamento in R1 della cella indirizzata.
..
,
"-,
2-.,
;;-:--
d'
.<;
"'t '
" ,
"
:..
,
-,
..
.:fl

-, '
A-'"
.
."
.:,j
l
:;A '

.'1;
"
.'.;
Capitolo 2
2.8 Esercizi
Esercizio 2.1 Facendo riferimento alIo schema di Figura2.10 e alio schema di Figu-
ra 2.9, stabilito che ciascun state richieda un periodo di clock, si costruisca la sequenza
di comandi che effettua Ie azioni riportate nel diagramma di stato della fase di fetch.
'';:,'. -
" ,."
"..
'if "
,
-' "
,...
:"
,
*-
. ."",

. ,.""1
- ...'.
)'1'
,- ,." .
"'" -'.
,"';'c :-

,-.,
,
":); ;
".! .
'1,- .,
.,
::"4; r
: . ;': :
, ';$ .
.::"" .
.' ,
., ' ",
... ,"
"
:. '
J.or.
Valgono anche per questa caso molte delle considerazioni fatte in precedenza. L'ana- ':
, -,',-.' , .-
lisi dei dati relativi alla struttura e alresecuzione dei prograrnmi, mostra che i salti '::..
condizionati (spesso cmamati diramazioni) tendono a modificare PC in una misura
contenuta [HP931, Si tratta di uoa forma di localita che deriva dalla natura stessa
'''"
degli a.lgoritmi. n salto incondizionato corrisponde spease alPabbandono di un tratto
di codice ed epiu probabile che la misura della distanza del salto sia meno contenuta, ','J!,
. Per Ie diramazioni la norma ecodificare lo scostamento della posizione di desti- - " .
nazione rispetto al PC. Per il salto e per Ie chiamate di procedura, molte architetture "'? '.
prevedono che il relativo campo dell'istruzione vada interpretato come un indirizzQ ",
eHettivo. Nell'architettura PowerPC viene lisato un bit per (il bit AA di Figura2.14)
per iodicare se l'indirizzo di salta eassoluto 0 relativo. :.i
l
,
': . "
.'.",
",,, ... . .
,
.
.'
-;:4 : ....
(i: '._
: ,
"'.'
'

;f
.
,,,,ii'
..fiO .:.

2.7.4 Indirizzamento nei trasferimenti del controllo
Indirizzamento dj 110 Bisogna infine considerare cbe alcune macehine
prevedono spe che istruzioDl per Ie operazioni di ingresso/uscita. Di norma
l'indirizzo di una porta viene codificato in un campo delI'istruzione, anche se
sono possibili soluzioni alternative come quella di prevedere che l'indirizzo sia
conten,uto entro un registro di CPU. Facendo riferimento alI'architettura 8086 si
hanno Ie istruzioni In e OUT. Esempio:
IN AL,PORTA j AL PORTA di Ingresso
l
dove PORTA ecodificato in un
campo eli 8 bit dell'istruzione.
Indirizzamento dei 'registri questa epropriamente un indirizzamento. Di
norma i registri devono essere indicati cial programmatore
l
anche se in certi casi
Ia macchina pub assumere che un registro epredefinito. Esempio:
HOV Rt, R2 ; Rt +- R2,
Indirizzamento jmmediato Non epropriamente un indirizzamento in memoria. Al
programmatore econsentito di scrivere istruzioni in cui si esprime direttamente
un numero 0 un'espressione rieonducibile a un numera, ehe viene direttamente
eodificato nell'istruzione. All'atto deU'esecuzione non C'e quindi indirizzamento,
in quanta il da:to egia in CPU, Esempio
LD Rt,2461 ; Rt +- 2467
14
\
t
I
\
I
,
\
I
I
I
I
JI
(
I
I I
75
Elementi architetturali di base
per l'istruzione ADD Ri, R2, R3 per
Esercizio 2.10 8i deve dare una valutazione delle prestazioni relative di 8086 e 8088.
Si facciano queste ipotesi: (a) il numero di clock per la lettura (CRD) 0 scrittura
(CWR) in memoria epari a 4; (b) la fasedi fetch e la fase execute sane sequenzjali
(non sovrapposte neanche parzialmente); (c) 10 spazio occupato mediamente da un'i-
struzione in memoria edi 3 byte. Inoltre si assuma che la fuse di execute richieda: (i)
Esercizio 2.8 8i ripeta I'esercizio precedente in riferimento a una macchina Registro-
Registro priva di stack, supponendo.che il numero di registri sia sufficiente a contenere
tutti i parametri. Nell',ipotesi in cui si abbiano chiarnate in ca.scata (da un sottopro-
gramma a un ulteriore'sottoprogramma e eosi in sequenza) e i registri non bastino a
tenere tutti i parametri, si escogiti una soIuzione che permetta il corretta passaggio
dei parametri e il ritorno dalle procedure.
Esercizio 2.9 8i consulti un manuale della famiglia 68000 (sono disponibili sui siti
Motorola) e si confronti la struttura del1'indirizzamento con quella dell'architettura
InteL
'Esercizio 2.7 Sempre in riferimento al passaggio di parametri nelle cbiamate a sotto--
prograrnmi, si consideri una rnaccbina Memoria-Registro, dotata di pochi registri (tali
cia non poter contenere tutti i parametri consentiti dallinguaggio di programmazione)
e priva di stack. 8i definisca una modalita. per il passaggio dei parametri.
2.3 Ripetere il precedente eserclzlO
l'architettura di Figura2,l0 e di Figura2,lL
Esercizio 2.4 Illettore si procuri il manuale di un paio di macchine rose (PowerPC,
MIPS, SPARC ece.) e conrronti i relativi repertori di istruzioni, evidenziando gli
aspetti comuni e quelli non comuni aile difIerenti architetture.
Esercizio 2.5 Illettore esamini in dettaglio il repertorio di istruzioni della CPU 8086
._ in Appendice A - (Possibilmente ci si procuri un manuale Intel; in mancanza del
manuale 8086 si faccia ricorso a queUo di macebine suI mercato come il Pentium 0
il Pentium-Pro e seguenti). In particolare si esaminino Ie istruzioni JEI JZ, CALL,
MOVS e XLAT. Per ciascuna di esse si verifichi se esiste pili ill un possibile formato e
,si verifichino i corrispondenti cicli eli macchina richiesti.
Esercizio 2.6 Si consideri una macchioa con arcbitettura Registro-Registro priva di
stack e una maccbina Memoria-Registro dotata di stacie In riferiroento a una cmama-
ta di procedura in un linguaggio di alto livello, per esempio 10 statement in Iinguaggio
C x= fun(A,B,C), si analizzino possibili modalita. di passaggio dei parametri nei due
casi e si confrontino Ie due architetture sotto questa punto di vista.
nlettore immagini di possedere i registri cbe gli sono utili (PC, MAR, MDR ecc,) e
che per essi siano possibili i comandi di abilitazione dell'ingresso e dell'uscita, come
nel modello fondamentale di funzionamento dei regiBtri (Figura 1.7).
j Esercizio 2.2 Sempre in riferimento aUo schema di Figura2.10 e alIa schema di Figu-
,. ra 2.9, si consideri l'istruzione LD R1, MEM, dove MEM ecodificato nel codice di istruzione
come l'indirizzo di una cella di memoria. Si costruisca la sequenza di comandi che
Ie azioni corrispondenti al caricamento in R1 della cella indirizzata.
..
,
"-,
2-.,
;;-:--
d'
.<;
"'t '
" ,
"
:..
,
-,
..
.:fl

-, '
A-'"
.
."
.:,j
l
:;A '

.'1;
"
.'.;
Capitolo 2
2.8 Esercizi
Esercizio 2.1 Facendo riferimento alIo schema di Figura2.10 e alio schema di Figu-
ra 2.9, stabilito che ciascun state richieda un periodo di clock, si costruisca la sequenza
di comandi che effettua Ie azioni riportate nel diagramma di stato della fase di fetch.
'';:,'. -
" ,."
"..
'if "
,
-' "
,...
:"
,
*-
. ."",

. ,.""1
- ...'.
)'1'
,- ,." .
"'" -'.
,"';'c :-

,-.,
,
":); ;
".! .
'1,- .,
.,
::"4; r
: . ;': :
, ';$ .
.::"" .
.' ,
., ' ",
... ,"
"
:. '
J.or.
Valgono anche per questa caso molte delle considerazioni fatte in precedenza. L'ana- ':
, -,',-.' , .-
lisi dei dati relativi alla struttura e alresecuzione dei prograrnmi, mostra che i salti '::..
condizionati (spesso cmamati diramazioni) tendono a modificare PC in una misura
contenuta [HP931, Si tratta di uoa forma di localita che deriva dalla natura stessa
'''"
degli a.lgoritmi. n salto incondizionato corrisponde spease alPabbandono di un tratto
di codice ed epiu probabile che la misura della distanza del salto sia meno contenuta, ','J!,
. Per Ie diramazioni la norma ecodificare lo scostamento della posizione di desti- - " .
nazione rispetto al PC. Per il salto e per Ie chiamate di procedura, molte architetture "'? '.
prevedono che il relativo campo dell'istruzione vada interpretato come un indirizzQ ",
eHettivo. Nell'architettura PowerPC viene lisato un bit per (il bit AA di Figura2.14)
per iodicare se l'indirizzo di salta eassoluto 0 relativo. :.i
l
,
': . "
.'.",
",,, ... . .
,
.
.'
-;:4 : ....
(i: '._
: ,
"'.'
'

;f
.
,,,,ii'
..fiO .:.

2.7.4 Indirizzamento nei trasferimenti del controllo
Indirizzamento dj 110 Bisogna infine considerare cbe alcune macehine
prevedono spe che istruzioDl per Ie operazioni di ingresso/uscita. Di norma
l'indirizzo di una porta viene codificato in un campo delI'istruzione, anche se
sono possibili soluzioni alternative come quella di prevedere che l'indirizzo sia
conten,uto entro un registro di CPU. Facendo riferimento alI'architettura 8086 si
hanno Ie istruzioni In e OUT. Esempio:
IN AL,PORTA j AL PORTA di Ingresso
l
dove PORTA ecodificato in un
campo eli 8 bit dell'istruzione.
Indirizzamento dei 'registri questa epropriamente un indirizzamento. Di
norma i registri devono essere indicati cial programmatore
l
anche se in certi casi
Ia macchina pub assumere che un registro epredefinito. Esempio:
HOV Rt, R2 ; Rt +- R2,
Indirizzamento jmmediato Non epropriamente un indirizzamento in memoria. Al
programmatore econsentito di scrivere istruzioni in cui si esprime direttamente
un numero 0 un'espressione rieonducibile a un numera, ehe viene direttamente
eodificato nell'istruzione. All'atto deU'esecuzione non C'e quindi indirizzamento,
in quanta il da:to egia in CPU, Esempio
LD Rt,2461 ; Rt +- 2467
14
\
t
I
\
I
,
\
I
I
I
I
JI
(
I
I I
n termine !tAM el'abbreviazione di Random Access Memory (memoria ad. accesso
casuale) e dovrebbe' . . 0 di memoria per la quale i tempi di ac-
cesso 0 indi endenti dalia posizione letta, in con rasto con Ie memOrte accesso
sequenziale (nastri m4gnetlci 0 semieasuale (dischi). Nella pratica corrente con it
',:termine RAM si intende la memoria di lettura./scrittura. Come gia. detto, questa puo
essere statica 0 dinamica.
I
I
I
I
I'
I
\
I
\
I
\
-...
'Capitola 2 16
.-
/ ..

'Si\
'-_.;; ,-
. '.
-r ;.: .. .
per il 60% delle iBtruzioni 3 cicli di clock; (ii) per il restante 40% 3 cicli di clock, ' ,
la lettura la eli un data III 11 30% eli questo.40% legge/scrIve un . ,'1 ";:) ..
data a 8 bIt, mentre II restante 70% leggejscnve un data a 16 bIt. ,,)J ''; ".' ','
Si richiede: (1) il rapporto tra Ie prestazioni delle due CPU nell'ipotesi che 1'8086 ' ,'.,' ::,:,'
esegua il fetch leggendo sernpre parole allineate a indirizzi pari e che anche la let- ":_'. ".. La memorIa prmClp
tura/scrittura dei dati a 16 bit avvenga sempre a indirizzi pari; (2) it rapporto tra ::.. !" :..:.... _
Ie prestazioni tenendo conto del non allineamento dei dati e che dope un salto Fis- "Iil'.
,truzione potrebbe essere a un indirizzo dispan. A tal fine 5i assurna it 30% delle (,:.. '
dati a 16 bit trovi dato nO,n a un indirizzo pari. Si assu- ":'01 >: ':,'
rna altresl un mcremento del 10% dl letture tn fase dl fetch (per 1'8086) a causa del "
possibile disallineamento dovute ai salti. ",' r!l '. .
! '. .
,{..... I . ,'.
.,I ., ,..'
".
", , ." '
r: ',".",'
;.:: . c
:""'i'4 ;.:,.... '.
'M ," '
':' " .
modo molto schema-tieo, mez.n0:ia di un puo essere in memoria
I"""",:" '.. interna, detta anche memona pnnclpale (mam memory), e memona esterna, detta
,.. :: . anche memoria ausiliariao di massa. Sia la memoria interna siaquella esterna possono
",'t); ':,'" ,.',:"c. essere di varia tipo. La memoria interna e in piccola 'parte da me.moria di
';_' ',' .'_. sola tettura (ROM, PROM eee.) e da memona d.i lettura-scnttura genencamente
''':''': ''';,__ indicata con RAM; questa a sua volta puo essere di tipo statico (SRAM) a dinamico
,,'.i' " " ,,'(DRAM). La memoria esterna e, di norma, composta da diBchi rigidi (magnetici,
',.i? ':>."",'ottici
,
magneto-ottici), dischetti, nastri magnetici, cassette.
., ; :.''- ". Nella memoria dei sistemi di elaborazione si riflette in modo evidente l'obiettivo
\.. '..... :, primario dell'ingegneria: I'ottenimento del miglior rapporto costo/prestazioni. La so-
.:;'Jllt ,':<'" '; ";" " luzione ideale s.arebbe quella di dotare i sistemi di e1aborazione della maggior quantita
. ::/-': possibile di memoria ad alta velocita, basso ingombro, basso consumo e minimo costo.
ovvio che mott.i dei elen(;ati sono .in tra di loro. Da
.. A<:" ',:,:, CIa dlscende la necesslta dl dlmenslOoare Ie partl di memona lD modo da ottenere
'. " .."...... '
a costi In aiuto aI. progettista 1a
, ,t:,\>1 ';' dl Jocahta ,spanale e temporale eSlhlta daJ. programml. Tale propneta suggensce d.i
.Ia .in modo gerar.chicol con e (e dunque
y altl gerarchia e con memone ample, rna Pili lente (e menD
,'r'i" pIU basSI.
". ' Questo capitolo eessenzialmente dedicato alia memoria centrale (main memory),
'-,;>.,'::,,:.':A conclusione del capitolo, viene presentata una sorta d.i rassegila dei tipi di memoria
,:'3 :", ' ,',' correntemente (anna 2000) piu diffusi, anche at fine di orientare illettore nella selva
.tt. ::,: :;:. dl sigle In contmua crescita.
'
.. .,
,f}:';, Le memorie RAM

n termine !tAM el'abbreviazione di Random Access Memory (memoria ad. accesso


casuale) e dovrebbe' . . 0 di memoria per la quale i tempi di ac-
cesso 0 indi endenti dalia posizione letta, in con rasto con Ie memOrte accesso
sequenziale (nastri m4gnetlci 0 semieasuale (dischi). Nella pratica corrente con it
',:termine RAM si intende la memoria di lettura./scrittura. Come gia. detto, questa puo
essere statica 0 dinamica.
I
I
I
I
I'
I
\
I
\
I
\
-...
'Capitola 2 16
.-
/ ..

'Si\
'-_.;; ,-
. '.
-r ;.: .. .
per il 60% delle iBtruzioni 3 cicli di clock; (ii) per il restante 40% 3 cicli di clock, ' ,
la lettura la eli un data III 11 30% eli questo.40% legge/scrIve un . ,'1 ";:) ..
data a 8 bIt, mentre II restante 70% leggejscnve un data a 16 bIt. ,,)J ''; ".' ','
Si richiede: (1) il rapporto tra Ie prestazioni delle due CPU nell'ipotesi che 1'8086 ' ,'.,' ::,:,'
esegua il fetch leggendo sernpre parole allineate a indirizzi pari e che anche la let- ":_'. ".. La memorIa prmClp
tura/scrittura dei dati a 16 bit avvenga sempre a indirizzi pari; (2) it rapporto tra ::.. !" :..:.... _
Ie prestazioni tenendo conto del non allineamento dei dati e che dope un salto Fis- "Iil'.
,truzione potrebbe essere a un indirizzo dispan. A tal fine 5i assurna it 30% delle (,:.. '
dati a 16 bit trovi dato nO,n a un indirizzo pari. Si assu- ":'01 >: ':,'
rna altresl un mcremento del 10% dl letture tn fase dl fetch (per 1'8086) a causa del "
possibile disallineamento dovute ai salti. ",' r!l '. .
! '. .
,{..... I . ,'.
.,I ., ,..'
".
", , ." '
r: ',".",'
;.:: . c
:""'i'4 ;.:,.... '.
'M ," '
':' " .
modo molto schema-tieo, mez.n0:ia di un puo essere in memoria
I"""",:" '.. interna, detta anche memona pnnclpale (mam memory), e memona esterna, detta
,.. :: . anche memoria ausiliariao di massa. Sia la memoria interna siaquella esterna possono
",'t); ':,'" ,.',:"c. essere di varia tipo. La memoria interna e in piccola 'parte da me.moria di
';_' ',' .'_. sola tettura (ROM, PROM eee.) e da memona d.i lettura-scnttura genencamente
''':''': ''';,__ indicata con RAM; questa a sua volta puo essere di tipo statico (SRAM) a dinamico
,,'.i' " " ,,'(DRAM). La memoria esterna e, di norma, composta da diBchi rigidi (magnetici,
',.i? ':>."",'ottici
,
magneto-ottici), dischetti, nastri magnetici, cassette.
., ; :.''- ". Nella memoria dei sistemi di elaborazione si riflette in modo evidente l'obiettivo
\.. '..... :, primario dell'ingegneria: I'ottenimento del miglior rapporto costo/prestazioni. La so-
.:;'Jllt ,':<'" '; ";" " luzione ideale s.arebbe quella di dotare i sistemi di e1aborazione della maggior quantita
. ::/-': possibile di memoria ad alta velocita, basso ingombro, basso consumo e minimo costo.
ovvio che mott.i dei elen(;ati sono .in tra di loro. Da
.. A<:" ',:,:, CIa dlscende la necesslta dl dlmenslOoare Ie partl di memona lD modo da ottenere
'. " .."...... '
a costi In aiuto aI. progettista 1a
, ,t:,\>1 ';' dl Jocahta ,spanale e temporale eSlhlta daJ. programml. Tale propneta suggensce d.i
.Ia .in modo gerar.chicol con e (e dunque
y altl gerarchia e con memone ample, rna Pili lente (e menD
,'r'i" pIU basSI.
". ' Questo capitolo eessenzialmente dedicato alia memoria centrale (main memory),
'-,;>.,'::,,:.':A conclusione del capitolo, viene presentata una sorta d.i rassegila dei tipi di memoria
,:'3 :", ' ,',' correntemente (anna 2000) piu diffusi, anche at fine di orientare illettore nella selva
.tt. ::,: :;:. dl sigle In contmua crescita.
'
.. .,
,f}:';, Le memorie RAM

79
liD,
I/0
g
E
IE
E

,
c
"

ID
l'
Buffer di ingress
i \
C' ,
0
.<!'
,
,

0

0 "
524,288 x 8

"
rv

'8.
,
'0
4.1:14.304 0 r

..
u

Q
('>
f--
-

,
Oecodlf. cl
i colonno.
Circui'tl di
-
C
controllo
C
-
G
A,
VC
'"
Schema a blocchi di una SRAM da. 512Kx8.
.
.
CE. Permette di abilitare/disabilitare il chip.
"
1/0
0
_ I/Or. Dato in ingresso 0 in uscita.
WE. Specifica se si tratta di un'operazionne di lettura/scrittura. Quando ebasso
i dati presenti su 1/0
0
- l/Or sono scritti nella cella indirizzata da AQ - A
1
8
Abilita i buffer d'usdta nelle operazioni di lettura, permettendo di rispar-
miare corrente.
" '-1 piedini di interesse sono i seguenti.
A
o
_ Als. Linee di indirizzamento. Servono a selezionare una parola di 8 bit.
I Essa corriaponde, per e5empia, al madello AS7C34096, un disposit.ivo fabbricato da Alliance
Semiconductor in cinque diverse versioni caratterizzate da. differenti velocita..
In Figura 3.2 viene data la schematizzazione funzionale. Come si pub vedere
l
Ie
SRAM sono di facile utilizzo: esufficiente fomire l'indirizzo. e specificare se si tratta
di un'operazione di lettura 0 di scrittura.
"
"..
"
..
'f:I'
,
'\i,l
'f"
:"n.
\11
.,
'.'
,"
",:!
.,
' .. ,
,
;')1.' '
"\1
,:'j'

,. ii'
':1."
..
>'1
.',' , , ,. ,-

e
Capitolo 3
lntegrazio!; un Uvello d'integrazione porta con se tutta una serie di
vantaggi etti e indiretti; in quaiche modo si tratta di un parametro riassun
tivo rispetto a.i precedenti. Tra i v ta i diretti c'e senz'altro l'abbattimento
dell'occu' rica e la riduzione dei conswni. Tea i vantaggl in otti
n uzione dei costi di assemblagglO e e partl
l
e Sistema di alimentazione e
dello al' e. Si deve inoltre sottolineare il fatto che I'integra-
zione induce una a.ffiQabilita, riducendo i1 numero dell . essioni
esterne. n livello . integrazione viene ffilsura 0 norm ente attraverso Ia
menslOne; minjma che si riesce a ottenere attraverso i1 processo tecnologico (es. 1
micron), oppure attraverso 130 densita di memoria per chip.
Potenza; il costruttorelornisce una potenza media, anche se l'assorbimento non e
in generale costante. In alcuni casi, per esempio per Ie memorie che mantengono
i dati con un batteria ausiliaria, viene dato anche l'assorbimento a riposo (stand.
by).
3,,2
:v.")-L'';,',' ..

",V" .-..
,::;.\
, T _ -, .....1",
_
.. ...... .'
:,-'
.'.' "
-..- .
e,:\: "::--, ','"

..
i' ',I{'.i')'::.T: .'.'
.!'-c,;'" ,. '
u sempio di memoria statica

,".' ,,".'.' ,,:"" .'
.. ' .' 4 . . ata in 524.288
Nel valutare la memoria d.i qualunque genere
l
i parametri rilevanti sono i seguenti. '.. .. F' 3 1 viene riportato 10 schema a blocchl dl una SRAM orga.mzz
.", ';.o.:'''.':.,:In 19ura . . 1
arole di 8 bit (512Kx8) .
Dimensione; fornita in bit 0 byte. A volte la dimensione viene data in modo r:'.'p
da descrivere l'organizzazione interna; per esempio, una dimensione data come ' .'
64 K x 4 bit, indica una memoria di 65.536 celie di 4 bit ciascuna;
;,"j,A ''"',..
Velocitti; generalmente viene iudicata me tern 0 di accesso, ovvero l'intervaUo '..;
di'ieim; the intercorr a 1a . . . m ento i . . :/t'..'.,.
-.. ,'!;"., .... , '
viene reso disponibile. La velocita, pur essendo un fattore c iave
,
non deve .. ':} I:
essere SOvIa!mmat"a: 51 deve impiegare una memoria veloce laddove estrettamente /\1 .. .:',:"
. ., .,-,.
necessana. ,\".' :t.:...
, .. ','
'/:",:.' ,,"
,. n' .'. . ., ..
:.,(r; :,
,-,.... , ...', .
.... .. ".' .. ' ... , .
.,":ir, ' ... :.- ,", :: . " '.
........ '.... ,
'. -' . , ,.

'.. ''''''.''
-.,., ,,'
..' ..
'.. lJ ,," ,"
.' , . :
. ;;':;4; '" ' "
. I
Costo; ei1 parametro piu aleatorio, in quanto dipendente Q1t.re me dalle normaJL
fluttuazioni di mercato. anche dar volume deTI'acquisto. In generale possiamo A'V'
dire che maggiore e1a densita di memoria minore eifSuo costo unitario.
, ,'),
.-.... "
'._', "
' ...'Ii ," ",'
> .. , " '
,', ;",' Figura 3.1
-.. , .
"
;'):1', '.
,
;'.':1'.,
'" .
I
';.'1',' ,-
. .
->..:
. -;J
,
..
, ".'
.".
"" ",
78
JW..l-Parametri di valutazione
\
)
,
La cella fondamentale di una RAM statica memorizza 1 bit e ecostituita da 6 0
\
Ai,?"4 transi.tori, che possono essere di tipo bipolare (tecnologie TTL e ECL) oppure
1)- a effetto di campo (tecnologle NMOS e CMOS). Questo' tlPO dl topologla consente
/Un'integraziooe' su piccola 0 media scala con tempi di accesso piuttosto bassi (da
qualche nanosecondo a un centinaio).
Questi fatton, combinati con ill) assorbimento di potenza non trascurabile,
cialmente per i tipi piu veloci, relegano questa tecno1ogia alIa realizzazione dei registri
processore 0
1
al EiU, eli memorie dl
\
J.
J,

!
\
\
\
I
I
I
I
I

79
liD,
I/0
g
E
IE
E

,
c
"

ID
l'
Buffer di ingress
i \
C' ,
0
.<!'
,
,

0

0 "
524,288 x 8

"
rv

'8.
,
'0
4.1:14.304 0 r

..
u

Q
('>
f--
-

,
Oecodlf. cl
i colonno.
Circui'tl di
-
C
controllo
C
-
G
A,
VC
'"
Schema a blocchi di una SRAM da. 512Kx8.
.
.
CE. Permette di abilitare/disabilitare il chip.
"
1/0
0
_ I/Or. Dato in ingresso 0 in uscita.
WE. Specifica se si tratta di un'operazionne di lettura/scrittura. Quando ebasso
i dati presenti su 1/0
0
- l/Or sono scritti nella cella indirizzata da AQ - A
1
8
Abilita i buffer d'usdta nelle operazioni di lettura, permettendo di rispar-
miare corrente.
" '-1 piedini di interesse sono i seguenti.
A
o
_ Als. Linee di indirizzamento. Servono a selezionare una parola di 8 bit.
I Essa corriaponde, per e5empia, al madello AS7C34096, un disposit.ivo fabbricato da Alliance
Semiconductor in cinque diverse versioni caratterizzate da. differenti velocita..
In Figura 3.2 viene data la schematizzazione funzionale. Come si pub vedere
l
Ie
SRAM sono di facile utilizzo: esufficiente fomire l'indirizzo. e specificare se si tratta
di un'operazione di lettura 0 di scrittura.
"
"..
"
..
'f:I'
,
'\i,l
'f"
:"n.
\11
.,
'.'
,"
",:!
.,
' .. ,
,
;')1.' '
"\1
,:'j'

,. ii'
':1."
..
>'1
.',' , , ,. ,-

e
Capitolo 3
lntegrazio!; un Uvello d'integrazione porta con se tutta una serie di
vantaggi etti e indiretti; in quaiche modo si tratta di un parametro riassun
tivo rispetto a.i precedenti. Tra i v ta i diretti c'e senz'altro l'abbattimento
dell'occu' rica e la riduzione dei conswni. Tea i vantaggl in otti
n uzione dei costi di assemblagglO e e partl
l
e Sistema di alimentazione e
dello al' e. Si deve inoltre sottolineare il fatto che I'integra-
zione induce una a.ffiQabilita, riducendo i1 numero dell . essioni
esterne. n livello . integrazione viene ffilsura 0 norm ente attraverso Ia
menslOne; minjma che si riesce a ottenere attraverso i1 processo tecnologico (es. 1
micron), oppure attraverso 130 densita di memoria per chip.
Potenza; il costruttorelornisce una potenza media, anche se l'assorbimento non e
in generale costante. In alcuni casi, per esempio per Ie memorie che mantengono
i dati con un batteria ausiliaria, viene dato anche l'assorbimento a riposo (stand.
by).
3,,2
:v.")-L'';,',' ..

",V" .-..
,::;.\
, T _ -, .....1",
_
.. ...... .'
:,-'
.'.' "
-..- .
e,:\: "::--, ','"

..
i' ',I{'.i')'::.T: .'.'
.!'-c,;'" ,. '
u sempio di memoria statica

,".' ,,".'.' ,,:"" .'
.. ' .' 4 . . ata in 524.288
Nel valutare la memoria d.i qualunque genere
l
i parametri rilevanti sono i seguenti. '.. .. F' 3 1 viene riportato 10 schema a blocchl dl una SRAM orga.mzz
.", ';.o.:'''.':.,:In 19ura . . 1
arole di 8 bit (512Kx8) .
Dimensione; fornita in bit 0 byte. A volte la dimensione viene data in modo r:'.'p
da descrivere l'organizzazione interna; per esempio, una dimensione data come ' .'
64 K x 4 bit, indica una memoria di 65.536 celie di 4 bit ciascuna;
;,"j,A ''"',..
Velocitti; generalmente viene iudicata me tern 0 di accesso, ovvero l'intervaUo '..;
di'ieim; the intercorr a 1a . . . m ento i . . :/t'..'.,.
-.. ,'!;"., .... , '
viene reso disponibile. La velocita, pur essendo un fattore c iave
,
non deve .. ':} I:
essere SOvIa!mmat"a: 51 deve impiegare una memoria veloce laddove estrettamente /\1 .. .:',:"
. ., .,-,.
necessana. ,\".' :t.:...
, .. ','
'/:",:.' ,,"
,. n' .'. . ., ..
:.,(r; :,
,-,.... , ...', .
.... .. ".' .. ' ... , .
.,":ir, ' ... :.- ,", :: . " '.
........ '.... ,
'. -' . , ,.

'.. ''''''.''
-.,., ,,'
..' ..
'.. lJ ,," ,"
.' , . :
. ;;':;4; '" ' "
. I
Costo; ei1 parametro piu aleatorio, in quanto dipendente Q1t.re me dalle normaJL
fluttuazioni di mercato. anche dar volume deTI'acquisto. In generale possiamo A'V'
dire che maggiore e1a densita di memoria minore eifSuo costo unitario.
, ,'),
.-.... "
'._', "
' ...'Ii ," ",'
> .. , " '
,', ;",' Figura 3.1
-.. , .
"
;'):1', '.
,
;'.':1'.,
'" .
I
';.'1',' ,-
. .
->..:
. -;J
,
..
, ".'
.".
"" ",
78
JW..l-Parametri di valutazione
\
)
,
La cella fondamentale di una RAM statica memorizza 1 bit e ecostituita da 6 0
\
Ai,?"4 transi.tori, che possono essere di tipo bipolare (tecnologie TTL e ECL) oppure
1)- a effetto di campo (tecnologle NMOS e CMOS). Questo' tlPO dl topologla consente
/Un'integraziooe' su piccola 0 media scala con tempi di accesso piuttosto bassi (da
qualche nanosecondo a un centinaio).
Questi fatton, combinati con ill) assorbimento di potenza non trascurabile,
cialmente per i tipi piu veloci, relegano questa tecno1ogia alIa realizzazione dei registri
processore 0
1
al EiU, eli memorie dl
\
J.
J,

!
\
\
\
I
I
I
I
I

\
\
I
I
\
I
I
I
I
1
I
. I
(3.1)
dove si voglia un elevato grado di
Pd = V" . I" = 0,660 W
p=
P
- 0,66 = 1,29 mW/Kbyte
- 512
dinamiche

memone
nconsume specifico p, ovvero il consumo per kbyte, puo essere espresso come:
Potenza dissipata .
Dimensione in kbyte
..
, ]Queste ultime vengooo tuttora utilizzate in applicazioni
per esempio, sui computer dello Space Shuttle.
Nel caso specifico, si ha:
3.3 Le
-: Pritna deH'avvento delle memorie dinamiche, 130 memoria principale veniva realizzata
-con nuclei magnetici in miniatura, da cui il sinonimo core memory (memoria a nuclei)
-. per indicare la memoria centrale.
RAM B' In esse I'informazione e rap-
: pr.e1lentat,lltlraversoje carica imwagazzjnata in un con ..Lo
-- , --'-<,
schema equivalente a..!!R di memoria eriportato in FiWa3.4. E richiesto
- per bit: .la 'capaCit Viene ncavata sulla stntura -del transistore
stesso, realizzando in questo modo uno sfruttamento ottimale della spazio disponi-
La struttura eripetuta regolarmente seguendo una griglia quadrata: 130 linea PL
(plate line) ecoliegata a massa, mentre WL (word line) e BL (bit line) sonG eoliegate,
r.ispettivamente, alle righe e aile colonne della griglia. La carica immagazzinata nel
condensatore edell'ordine di 50 pC. Essendo presenti delle resistenze di perdita, la
carica si esaurisce in pochi millisecondi, rendendo necessaria un'operazione periodica
di rinfresco.
AlI'epoco deli'introduzione delle DRAM, nacquero molti dubbi sull'aflidahilita
della rilevazione del Hvello logico. L'idea impiego un certo tempo per farsi strada,
rna, gia nella seconda meta degli anni '70 Ie memorie a. nuclei erano ormai oggetto da
museo
2
.Le mernorie dinamiche sona patlicolannent9 sensibiJl..a.lle tadiazioni. Infatti it
-
"
';
'Cons
umo
Uaspetto che deve essere considerato, anche in confronto alIa memoria
, DRAM, eiI consumo. Per it componente AS7C34096, nella versione con teIQ-po di
.. accesso di 12.ns, viene indicato un assorbimento di corrente Icc = 0,200 A. La potenza
assorbita'da1un singolo componente, tenuto conto della tensiene di alimentazione di
3
3 V edunque:
, ,
. (asserito CE) e che vengano presentati i dati ehe da scrivere su 1/01 - 1/07 ; WE
deve"essere tenuto basso un tempo sllfficiente (twp). D cido termina dopa un tempo
t G(write cycle time). Anche per la ,erittura si distinguono terminologicamente due
- . t:ropi: twP (write pulse time) duraota minima. dell'impuiso di scrittura. e two (write
cycle time) durata minima del cido di scrittura, essi pure identici .

,--"
":;1'
,

....-"'.-
,
, ".JI
',.,:;;:;,
';'",
:
,
"-.
--'- '
..1.. ,
:"c': :
"'j;-
.';-
...


"'.' '
'
._" ,
, '" '
.. ri!

-....,-...
.' ',,:, .
" ."'" ,
,
..




:-d,
..
". ,',,,
";'J', !
.... J I
.of: i
, ':
, .
.,;t

'-':>

. ,
;;
"
-;:
, ."
.... '
,
.
. .


" " .
,. .
". .
'!;<,
,_n',
.";'
....,
!
." -'<,
.
:',.
I
.. ..
J:
.
.,,a

, ...."
.'-'\' -
- ",'"
,e"( '
. " .-
.'<'''' .
.->". ,
.'-.
',,,
'" , c., .
.
.:!l,
:..,'
.. -....
[;",..... ..' T:'
,-!);;",i, t.l,;- _' '
',- .'. ""
';,: .:.
",,' ,,', -.
, '." ,
" .. . La. memoria. principa.1e 81
>'
",', 'j
. , ,
";'1 -
,kl;

" \l-
"
,:;: .... '
'. ::;r
." ,,<0

..]"(.:,
.. , ' ..,.
: .=:-rl
'''fi,''

, ,
. .,'- '
"
.', ,'"
"':C .
o CE
'"
b) Scrilturll
DATI VALlDI
tot I
X
lAce
o CE
DOUT
'"
eo) Ll!ltura
Canitolo 3
.
-In
) ,
..
8 512K,. 8
\
'0
1100 CO
:\
"
"
"
,
"
< <
N
Q

1/07
"'
- a

Q

Z W, 1 Z 0
0'
0
!!!<
1
'"
Uoperazione eli scrittura (Cfr. Figura 3.2 b)J puo essere svolta in due modi.
1. Controllata da WE. Quando il comando di scrittura eun impulso su WE.
2. Cootrollata da CE. Quando il comando di scrittura diventa un impulso applicato
su CEo
CE
OE
'"c
Traiasciamo la descrizione dettagliata di queste operazioni. nlettore interessato
e invitato. a procurarsi il manuale di una qualche memoria diffusa suI mercato. In
termini generali
J
130 scrittura richiede che venga fomito Pindirizzo, abilitato il chip
Figura 3.3 Temporizzazione dell'operazione d.i lettura di una RAM statica.
..,
Tern. 0 di accesso 0 di accesso It'0 erazion di.
lettura come 'interv eaB '0 ad avere i dati . a, a artire
d lstan e ill CUI Ii indirizzi e i se ali d centrella sona stabili a Ii in ressL
ra . viene riportata 130 temporizzazione el cielo di lettura. Dopa aver
famito gli indirizzi, vengoDo asseriti CE e OE; dopa un certo tempo tACO abbiamo
i dati stabili sulle useite (Output data valid). n di,positivo ehe legge (la CPU) dopo
un eerto tempo rialzera CE e OE.
Si osservi che il tempo minima richiesto dall'intera operazione di lettura etRG
(read cycle time). Anehe se db non appare in Figura3.3, per Ie RAM statiehe tACC =
tRC'
Figura 3.2 Coma.ndi per Ie operazioni di lettura e scrittura in una. RAM statica da 512 kbyte

\
\
I
I
\
I
I
I
I
1
I
. I
(3.1)
dove si voglia un elevato grado di
P
d
= V" . I" = 0,660 W
p=
P
- 0,66 = 1,29 mW/Kbyte
- 512
dinamiche

memone
nconsume specifico p, ovvero il consumo per kbyte, puo essere espresso come:
Potenza dissipata .
Dimensione in kbyte
..
, ]Queste ultime vengooo tuttora utilizzate in applicazioni
per esempio, sui computer dello Space Shuttle.
Nel caso specifico, si ha:
3.3 Le
-: Pritna deH'avvento delle memorie dinamiche, 130 memoria principale veniva realizzata
-con nuclei magnetici in miniatura, da cui il sinonimo core memory (memoria a nuclei)
-. per indicare la memoria centrale.
RAM B' In esse I'informazione e rap-
: pr.e1lentat,lltlraversoje carica imwagazzjnata in un con ..Lo
-- , --'-<,
schema equivalente a..!!R di memoria eriportato in FiWa3.4. E richiesto
- per bit: .la 'capaCit Viene ncavata sulla stntura -del transistore
stesso, realizzando in questo modo uno sfruttamento ottimale della spazio disponi-
La struttura eripetuta regolarmente seguendo una griglia quadrata: 130 linea PL
(plate line) ecoliegata a massa, mentre WL (word line) e BL (bit line) sonG eoliegate,
r.ispettivamente, alle righe e aile colonne della griglia. La carica immagazzinata nel
condensatore edell'ordine di 50 pC. Essendo presenti delle resistenze di perdita, la
carica si esaurisce in pochi millisecondi, rendendo necessaria un'operazione periodica
di rinfresco.
AlI'epoco deli'introduzione delle DRAM, nacquero molti dubbi sull'aflidahilita
della rilevazione del Hvello logico. L'idea impiego un certo tempo per farsi strada,
rna, gia nella seconda meta degli anni '70 Ie memorie a. nuclei erano ormai oggetto da
museo
2
.Le mernorie dinamiche sona patlicolannent9 sensibiJl..a.lle tadiazioni. Infatti it
-
"
';
'Cons
umo
Uaspetto che deve essere considerato, anche in confronto alIa memoria
, DRAM, eiI consumo. Per it componente AS7C34096, nella versione con teIQ-po di
.. accesso di 12.ns, viene indicato un assorbimento di corrente Icc = 0,200 A. La potenza
assorbita'da1un singolo componente, tenuto conto della tensiene di alimentazione di
3
3 V edunque:
, ,
. (asserito CE) e che vengano presentati i dati ehe da scrivere su 1/01 - 1/07 ; WE
deve"essere tenuto basso un tempo sllfficiente (twp). D cido termina dopa un tempo
t G(write cycle time). Anche per la ,erittura si distinguono terminologicamente due
- . t:ropi: twP (write pulse time) duraota minima. dell'impuiso di scrittura. e two (write
cycle time) durata minima del cido di scrittura, essi pure identici .

,--"
":;1'
,

....-"'.-
,
, ".JI
',.,:;;:;,
';'",
:
,
"-.
--'- '
..1.. ,
:"c': :
"'j;-
.';-
...


"'.' '
'
._" ,
, '" '
.. ri!

-....,-...
.' ',,:, .
" ."'" ,
,
..




:-d,
..
". ,',,,
";'J', !
.... J I
.of: i
, ':
, .
.,;t

'-':>

. ,
;;
"
-;:
, ."
.... '
,
.
. .


" " .
,. .
". .
'!;<,
,_n',
.";'
....,
!
." -'<,
.
:',.
I
.. ..
J:
.
.,,a

, ...."
.'-'\' -
- ",'"
,e"( '
. " .-
.'<'''' .
.->". ,
.'-.
',,,
'" , c., .
.
.:!l,
:..,'
.. -....
[;",..... ..' T:'
,-!);;",i, t.l,;- _' '
',- .'. ""
';,: .:.
",,' ,,', -.
, '." ,
" .. . La. memoria. principa.1e 81
>'
",', 'j
. , ,
";'1 -
,kl;

" \l-
"
,:;: .... '
'. ::;r
." ,,<0

..]"(.:,
.. , ' ..,.
: .=:-rl
'''fi,''

, ,
. .,'- '
"
.', ,'"
"':C .
o CE
'"
b) Scrilturll
DATI VALlDI
tot I
X
lAce
o CE
DOUT
'"
eo) Ll!ltura
Canitolo 3
.
-In
) ,
..
8 512K,. 8
\
'0
1100 CO
:\
"
"
"
,
"
< <
N
Q

1/07
"'
- a

Q

Z W,
1
Z 0
0'
0
!!!<
1
'"
Uoperazione eli scrittura (Cfr. Figura 3.2 b)J puo essere svolta in due modi.
1. Controllata da WE. Quando il comando di scrittura eun impulso su WE.
2. Cootrollata da CE. Quando il comando di scrittura diventa un impulso applicato
su CEo
CE
OE
'"c
Traiasciamo la descrizione dettagliata di queste operazioni. nlettore interessato
e invitato. a procurarsi il manuale di una qualche memoria diffusa suI mercato. In
termini generali
J
130 scrittura richiede che venga fomito Pindirizzo, abilitato il chip
Figura 3.3 Temporizzazione dell'operazione d.i lettura di una RAM statica.
..,
Tern. 0 di accesso 0 di accesso It'0 erazion di.
lettura come 'interv eaB '0 ad avere i dati . a, a artire
d lstan e ill CUI Ii indirizzi e i se ali d centrella sona stabili a Ii in ressL
ra . viene riportata 130 temporizzazione el cielo di lettura. Dopa aver
famito gli indirizzi, vengoDo asseriti CE e OE; dopa un certo tempo tACO abbiamo
i dati stabili sulle useite (Output data valid). n di,positivo ehe legge (la CPU) dopo
un eerto tempo rialzera CE e OE.
Si osservi che il tempo minima richiesto dall'intera operazione di lettura etRG
(read cycle time). Anehe se db non appare in Figura3.3, per Ie RAM statiehe tACC =
tRC'
Figura 3.2 Coma.ndi per Ie operazioni di lettura e scrittura in una. RAM statica da 512 kbyte

Figura 3.4 A sinistIa viene preseutata. la. struttura della. cella elementare. A destra.
Porganizzazione della matrice di una DRAM di IMbit, con l'indicazione dei piedini.
condensatore realizzato con la metallizzazione suI source del transistor ha uno spessore
del dielettrico (biossido di silicio) cosl sottile da costituire una barriera di potenziale
molta facile da abbattere: esufficiente una radiazione a bassa energia. per distruggere
13 barriera di potenziale e quindi la carica immagazzinata
3
.
La. memoria principale 83
DE abilitazione delle uscite.
6Si fara. riferimento al componente AS4CIM16E5 prodotto da Alliance Semiconductor.
6Per essere precisi, nel componente AS4CIM16E5, e presente un contatore interno di rinfrcsco
a 10 bit e quindi non sarebbe necessario caricare ogni volta. l'indirizzo di riga. Questo contatore e
presente Bulle RAM dinamiche delle ultime genera:zioni che prevedeno, all'ioterno, circuiti in grade
di svolgere tale fUDzione in varie modalita. operative.
c. '. WE Bcrittura in memoria.
Le caratteristiche delle DRAM verranno esposte in riIerimento a un ipotetico integrato
da 1M x 16 bits. I segnali di interesse sono:
Ao - Ag segnali per l'indirizzamento della memoria.
RAS segnale di carica.mento della riga.
'. CAS segnale di' caricamento della colonna.
DQl - DQ16 ingresso/uscita dati.
3.3.1 Un esempio di memoria DRAM
,
Per individuare una cella devono essere specificati riga e colonna. Per motivi
.di comodita. costruttiva la griglia e sempre quadrata, in questa caso 2
10
x 2
10
=
1024 x 1024 celIe di memoria. una cella si presentano, sui piedini A
o
- Ag,
gli indirizzi di riga e si asserisce RAS. Si aspetta che aia trascorao il tCE.O tRAH, si
pongono BU A
o
....: Ag,gli indirizzi di colonna e si asserisce il segnale di AS. Ri$petto
all'istante iniziale, i dati sono disponibili su DOUT dopo tRAC (Read Access Time).
In Figura 3.5 viene riportata la temporizzazione di un'operazione di lettura.
Per I'operazione di scrittura si segue una analoga procedura p"er il caricamenta
degli indirizzi
l
salvo poi, con i dati presenti su DIN, asserire WRITE contemporanea-
mente a CAS: in--.9.uesto modo si attiene la massima velocita di scrittura, rna niente
vieta di asserire WRlTE dopo il CAS.
L'attenta osservazione delle temporizzazioni di una DRAM, mostra come it tempo
di delo di lettura tRC sia diverso dal tempo di accesso tRAC. Nel caso del dispositivo
AS4CIM16E5 si ha tRC= 75ns e tRAC= 45os. Quindi I'operazione di lettura 0 di
scrittura necessita di un tempo almeno pari a tRc=75 ns..
Occorre poi tener conto del rinfresco. I costruttori indicano quanti cieli di rinfres-
co devono essere fatti in un predefinito intervallo. Nel easo delPesempia, oecorrono
1024 cieli in 16 rns. In pratica si deve presentare} con Un impulso di RAS, una
successione progressiva (da 0 a 1023) di indirizzi su A
o
- A
9
6 .
,
deli di rinfresco della memoria centrale (cosI. era su tutti i personal computer IBM
compatibili). . .'
Con l'avanzamento tecnologico, oitre alIa tecnica classica sopra accennata, detta
RAS-only, sana stati introdotte tecniche pili eflicienti, per esempio la cosiddetta CAS
, before RAS, can la Quale si sfrutta un generatore d'indirizzi di rinfresco interno
,., ficando gestione del multiplexer degli indirizzi esterno. Alcune memorie permettono
di optare fra pio soIuzioni predefinite nella gestione dei deli di rinfresco.
"... '
.,
-.
;
i.
'


.
.' .,.
:-. -
:<,:1'
'."" .
,"
'.
;;;;.1'

'j""
.' "
",'
.'
,t
.;
\".
,
"
".-'
",I
....,.'.
,:'
, .. .
..,
.,
"'

.,..
..
.
:;;

'''l " .. ,
', ..
....
-"r
,:'f-:
"", I',
, .,..'1
", :.


' .. ,
";,
.,
.t.,
..
.' '.'
."."
,' ...
,.
_
, ',l
'-':11
':-.
, n,
..
.-
'0
" .

"; "
" ';11
.;-..'"
.,:" ;
',' .,..
,
.ifl

,.J.; .

..
"
...
.
..
"
"If
',;Jo'.,
,: .:.!i
, ,.
.-"
'""ii
....
, '"'

'.
: ..
.-',
".''-i
{:; I;
,'" 'i
.. -. "
.;.':','
.." )"'
., o ,
" ',,:! , "
' .
. ' .. :
,Ill ._.
.'.), . , ,
''''-''. .
.... ' . ,
.. :; .
. .
.'
. .
-.\, ..
.. ' ,.),
'."

I'lolllJl.l
:) aUmento:&lone
10 lndlrinl
I RAS
I CAS
I DIO
1 R/V
"
WI,,: ric_
Bl,.: Colo"....
1000.1000
\
'H I
I A.m.plif I
IncUriz%o (
COlOlUll' )
t
d
..
lO
lndid:no (I
r
1
8" )

"'-
BL
PL
Rinfresco L'operazione di rinfresco consiste sem licemente nell'indirizzare pro res-
sivamente Ie ri e. uesta 0 erazione arta una Heve riduzlOne elle restaziani (tipi-
camente el 5% e viene atta, normalmente, da un apposito dispositivo, il controllore
delle DRAM, the, nella pratica corrente, fa parte dei componenti di corredo della
CPU, per la gestione dei bus di sistema
4
In passato, prima dell'avvento dei com-
ponenti tipo bridge veniva usualmente impiegato un canale di DMA per generare i
!Questa. avaria prende il nome di errore soft: una 0 piii celle di memoria non restituiscono sempre
I'infonnazione scritta in precedenza, rna non presentano un comportamento deterministico tale da
individuare esattamente Ie celie guaste. n fenomeno era particolarmente fastidioso per Ie .prime
genera.zioni di diSP09itivi, al punto tale da indurre i progettisti a usare siatemi di rivelazione e
correzione degli erron (introducendo bit aggiuntivi e controllando ogni singola lettura.). L'evohizione
della tecnologia ha migliorato l'affidabilita. delle memorie dinamiche a tal punta da rendere inutili
quest.e precauzioni. Oggigiorno, si usa un solo bit per la rilevazione dell'errore, oppure non si prende
ne8suna precauzione. Residuo stanco della cattiva reputazione deBe memorie dinamiche eil controllo
della memoria al momento dell'a.ccenSione presente su ogni PC IBM compatibHe.
"Tali componenti vengono spes80 denotati col no.me di bridge.
In questa modo e possibile dimezzare il numero di piedini necessari per
rizzamento, a spese perc del tempa di delo - il tempo necessaria per completare
un'operazione di lettura/scrittura. I castruttori fanno riferimento sempre al tempo
d.i accesso, queUo stampigliato suI contenitore per intendersi, doe il tempo necessario
per acquisire gli indirizzi (riga e colonna) e accedere al dato. Nel caso delle DRAM,
come verra illustrato pili avanti, tempo di cielo e.maggiore der-""t-=em=='=pCoo"'di accesso.
delle DRAM Abbiamo gia. detto come Ie celle siano organiz..
zae m una griglia con righe e colonne come schematizzato in Figura 3.4.
gereJscrivere un bit enecessaria formre alia memoria prima ,. dirizzo di riga (RAS
1
Row Address Strobe) di colonna (CAS, Column Address tro e .

82, Ca.pitolo 3
(
\
I
Figura 3.4 A sinistIa viene preseutata. la. struttura della. cella elementare. A destra.
Porganizzazione della matrice di una DRAM di IMbit, con l'indicazione dei piedini.
condensatore realizzato con la metallizzazione suI source del transistor ha uno spessore
del dielettrico (biossido di silicio) cosl sottile da costituire una barriera di potenziale
molta facile da abbattere: esufficiente una radiazione a bassa energia. per distruggere
13 barriera di potenziale e quindi la carica immagazzinata
3
.
La. memoria principale 83
DE abilitazione delle uscite.
6Si fara. riferimento al componente AS4CIM16E5 prodotto da Alliance Semiconductor.
6Per essere precisi, nel componente AS4CIM16E5, e presente un contatore interno di rinfrcsco
a 10 bit e quindi non sarebbe necessario caricare ogni volta. l'indirizzo di riga. Questo contatore e
presente Bulle RAM dinamiche delle ultime genera:zioni che prevedeno, all'ioterno, circuiti in grade
di svolgere tale fUDzione in varie modalita. operative.
c. '. WE Bcrittura in memoria.
Le caratteristiche delle DRAM verranno esposte in riIerimento a un ipotetico integrato
da 1M x 16 bits. I segnali di interesse sono:
Ao - Ag segnali per l'indirizzamento della memoria.
RAS segnale di carica.mento della riga.
'. CAS segnale di' caricamento della colonna.
DQl - DQ16 ingresso/uscita dati.
3.3.1 Un esempio di memoria DRAM
,
Per individuare una cella devono essere specificati riga e colonna. Per motivi
.di comodita. costruttiva la griglia e sempre quadrata, in questa caso 2
10
x 2
10
=
1024 x 1024 celIe di memoria. una cella si presentano, sui piedini A
o
- Ag,
gli indirizzi di riga e si asserisce RAS. Si aspetta che aia trascorao il tCE.O tRAH, si
pongono BU A
o
....: Ag,gli indirizzi di colonna e si asserisce il segnale di AS. Ri$petto
all'istante iniziale, i dati sono disponibili su DOUT dopo tRAC (Read Access Time).
In Figura 3.5 viene riportata la temporizzazione di un'operazione di lettura.
Per I'operazione di scrittura si segue una analoga procedura p"er il caricamenta
degli indirizzi
l
salvo poi, con i dati presenti su DIN, asserire WRITE contemporanea-
mente a CAS: in--.9.uesto modo si attiene la massima velocita di scrittura, rna niente
vieta di asserire WRlTE dopo il CAS.
L'attenta osservazione delle temporizzazioni di una DRAM, mostra come it tempo
di delo di lettura tRC sia diverso dal tempo di accesso tRAC. Nel caso del dispositivo
AS4CIM16E5 si ha tRC= 75ns e tRAC= 45os. Quindi I'operazione di lettura 0 di
scrittura necessita di un tempo almeno pari a tRc=75 ns..
Occorre poi tener conto del rinfresco. I costruttori indicano quanti cieli di rinfres-
co devono essere fatti in un predefinito intervallo. Nel easo delPesempia, oecorrono
1024 cieli in 16 rns. In pratica si deve presentare} con Un impulso di RAS, una
successione progressiva (da 0 a 1023) di indirizzi su A
o
- A
9
6 .
,
deli di rinfresco della memoria centrale (cosI. era su tutti i personal computer IBM
compatibili). . .'
Con l'avanzamento tecnologico, oitre alIa tecnica classica sopra accennata, detta
RAS-only, sana stati introdotte tecniche pili eflicienti, per esempio la cosiddetta CAS
, before RAS, can la Quale si sfrutta un generatore d'indirizzi di rinfresco interno
,., ficando gestione del multiplexer degli indirizzi esterno. Alcune memorie permettono
di optare fra pio soIuzioni predefinite nella gestione dei deli di rinfresco.
"... '
.,
-.
;
i.
'


.
.' .,.
:-. -
:<,:1'
'."" .
,"
'.
;;;;.1'

'j""
.' "
",'
.'
,t
.;
\".
,
"
".-'
",I
....,.'.
,:'
, .. .
..,
.,
"'

.,..
..
.
:;;

'''l " .. ,
', ..
....
-"r
,:'f-:
"", I',
, .,..'1
", :.


' .. ,
";,
.,
.t.,
..
.' '.'
."."
,' ...
,.
_
, ',l
'-':11
':-.
, n,
..
.-
'0
" .

"; "
" ';11
.;-..'"
.,:" ;
',' .,..
,
.ifl

,.J.; .

..
"
...
.
..
"
"If
',;Jo'.,
,: .:.!i
, ,.
.-"
'""ii
....
, '"'

'.
: ..
.-',
".''-i
{:; I;
,'" 'i
.. -. "
.;.':','
.." )"'
., o ,
" ',,:! , "
' .
. ' .. :
,Ill ._.
.'.), . , ,
''''-''. .
.... ' . ,
.. :; .
. .
.'
. .
-.\, ..
.. ' ,.),
'."

I'lolllJl.l
:) aUmento:&lone
10 lndlrinl
I RAS
I CAS
I DIO
1 R/V
"
WI,,: ric_
Bl,.: Colo"....
1000.1000
\
'H I
I A.m.plif I
IncUriz%o (
COlOlUll' )
t
d
..
lO
lndid:no (I
r
1
8" )

"'-
BL
PL
Rinfresco L'operazione di rinfresco consiste sem licemente nell'indirizzare pro res-
sivamente Ie ri e. uesta 0 erazione arta una Heve riduzlOne elle restaziani (tipi-
camente el 5% e viene atta, normalmente, da un apposito dispositivo, il controllore
delle DRAM, the, nella pratica corrente, fa parte dei componenti di corredo della
CPU, per la gestione dei bus di sistema
4
In passato, prima dell'avvento dei com-
ponenti tipo bridge veniva usualmente impiegato un canale di DMA per generare i
!Questa. avaria prende il nome di errore soft: una 0 piii celle di memoria non restituiscono sempre
I'infonnazione scritta in precedenza, rna non presentano un comportamento deterministico tale da
individuare esattamente Ie celie guaste. n fenomeno era particolarmente fastidioso per Ie .prime
genera.zioni di diSP09itivi, al punto tale da indurre i progettisti a usare siatemi di rivelazione e
correzione degli erron (introducendo bit aggiuntivi e controllando ogni singola lettura.). L'evohizione
della tecnologia ha migliorato l'affidabilita. delle memorie dinamiche a tal punta da rendere inutili
quest.e precauzioni. Oggigiorno, si usa un solo bit per la rilevazione dell'errore, oppure non si prende
ne8suna precauzione. Residuo stanco della cattiva reputazione deBe memorie dinamiche eil controllo
della memoria al momento dell'a.ccenSione presente su ogni PC IBM compatibHe.
"Tali componenti vengono spes80 denotati col no.me di bridge.
In questa modo e possibile dimezzare il numero di piedini necessari per
rizzamento, a spese perc del tempa di delo - il tempo necessaria per completare
un'operazione di lettura/scrittura. I castruttori fanno riferimento sempre al tempo
d.i accesso, queUo stampigliato suI contenitore per intendersi, doe il tempo necessario
per acquisire gli indirizzi (riga e colonna) e accedere al dato. Nel caso delle DRAM,
come verra illustrato pili avanti, tempo di cielo e.maggiore der-""t-=em=='=pCoo"'di accesso.
delle DRAM Abbiamo gia. detto come Ie celle siano organiz..
zae m una griglia con righe e colonne come schematizzato in Figura 3.4.
gereJscrivere un bit enecessaria formre alia memoria prima ,. dirizzo di riga (RAS
1
Row Address Strobe) di colonna (CAS, Column Address tro e .

82, Ca.pitolo 3
(
\
I
I
\
I
f
I
\
\
1
il consumo della eventuale logica
IT , n I" =20,200 =0,400A.
,
Dimensianare l'alimentazione per una memoria di 1 Mbyte (parole di
,
II dimensionamento delle alimentazioni.,
di un sistema di memoria
,-
..
P = n . f" . V" = 2 . O. 2003,3 = 1,32W.
La corrente totale di alimenta:;zione IT vale:
P =1,29 1024 =1,32W.
. Del restOI si poteva cakalare in questo modo:
L Collegamento diretto tra CPU e DRAM, Soluzione in disuso, praticata soCOra
negli soni settanta, La CPU deve fomire i segnali <Ii controllo compatibili can Ie
.. DRAM, Solo un numero limitato di CPU integrate ha seguito questa approccio
(10 Z80 fu uno di questi).
Nel calcolo precedente abbiamo trascurato
aecessoria per la decodifica degli indirizzi.
3.4
La soluzione autarchica, consistente nella progettazione della lagica eli contrallo
con' componenti standard, etendenzialmente da evitare per Ie complicazioni che essa
eomporta.
2. Impiego di uno specifieo controUore di DRAM. Per esempio, nel caso dei sistemi
SPARC monoprocessore, edisponibile il controllore ME 86980 che interfaccia
Ie memorie DRAM con I'MBUS (un bus de&nito dalla Sun Microsystem, su cui
ecollegata Ia CPU stessa, la memoria centrale e la cache). I PC moderni can
architettura Intel impiegano uno 0 due componenti bridgej questi hanno il com-
pito di gestire 10 seambio di informazioni tra i diversi (livelli eli) b.us, oltre che
di eantroUare i trasferimenti con la memoria centrale e can la cache esterna alIa
CPU.

1
. 64 bit).
Ttattandosi di una dimensione ormai piuttosto diffusa per una cache, l'esempio
verr" sviluppato solo in riferimento a una soluzlone can SRAM. L'integrato AS7C34096
ha un parallelismo di 8 bit, dunque per realizzare 1Mbyte occorrono (1024/512) = 2
i"ntegrati. .
.,Poich. il consumo ,pecifico della SRAM utilizzata eL29mW/kbyte, il con,umo
. dato da:
. -'
-'
r
I -
!
1_.. -
DATO YAUDO
'"c
COLONNA
""
JUH
--;1
DOUT
nfi'E
,,:..-;11'0', I
i -'\ \ \ -'
\. RAS \ \ 'to

'(CAS '\_
, ,
,
Tempadzzazione di una. operaziane eli lettura. di una memoria. DRAM.
L'interfacciamento con il processore
Si confronti questa dato con quello relativo alle SRAM.
Capitola 3
Per l'interfacciamento delle memorie dinamiche can il processore non esiste una solu-
zione standard. Le soluzioni pili comuni sono Ie seguenti.
3.3,2
t.l'. ".
..t':-:-", -;"
..
'11. '".,,"-
...." "
":1 ,"C'-' ", ,
;,.:':.j ". , La. memoria principale 85
""' "... \ ..

, , -:,
;'l( .': . ,.'

)" ,-' .
'1' ,
..
: ";' :.,"; :
\ .;.
. ..:, ,:'.
\ .

, "'jj
""I
.-j"
):. ,
',", '
,,'jl'
".
,""',, "
l,
""'!" '.' . .'
_"'o,J .
',r:j.
"".
, to
'....,'",..
..
:.'n.l
.',jJ;'
.,..
"c'
...1
::.' (
"
'"'l'!'
i'
,
.,
,.-:\j., ':
., .., .
:'
";i
t
" .
.. ..
Per rendere piu veloci Ie DRAM sono stati escogitati alcuni modi cli. funziona-
mente esoterici (sempre derivanti dal fatto che i1 principia di localita - spaziale - vale
anche in merirnento ai bit interni di un integrato), nati come static column
,
nibble
mode e page mode. Essi consistono sostanziaJmente nel mantenere costante un in- .\W::
dirizw (tipicamente QueUo di riga) e aggioroare solo l'indirizzo di colonna. Cia e '.
particolarmente utile nel caso in cui il processore generi indirizzi progressivi (came :
accade narmalmente, almeno nel fetch delle istruzioni).
N Ii ultimi anill sono de tecniche er migliorare Ie prestazioni ( .
delle DRAM e quaIi ha fatto se i 'JDa variet,J . . Ie identl ca lye e e carat
t e e piu significativa, e . ortato
un vero e proprio salta teH-e-B'R::A:M='st1 yecificato ,'{$.
u l'introdu' De sui mercato delle DRAM sincrone. In questa caso, come vedremo
pin avanti, 13. memoria ,. cia e aggancia il clock esteino per ..
sincronizzare Ie operazlOni i e fasi '!:J
di lettura sCIlttura m un ben determinata numera di deli di clock. ,i"
:
'.'jl '.
"-""1 '
.'IJ .
"," ,
Consumo L'aspetto che vale la pena di rimareare eit consumo specifieo. 11 eom-
ponente AS4C1M16E5 consurna 0,740 W. Tenuta conto che la capacit" edi 2Mbyte,
, ..
_ Potenza d1881pata _ 0,740 _ 0 3 W/kb (3) '1. .
P _. ., _ -, 61m yte .2 :'-J: ..
DunenslOne In kbyte 2048
.'"'1" .
if'
, .. .
<'t .,
:." ,
I'

':':"1'
,
, ;.
.
", ,
',t, ,
'. fl; .
. ".
c" .
,G '
'!

Figura 3.5
84
I
\
I
f
I
\
\
1
il consumo della eventuale logica
IT , n I" =20,200 =0,400A.
,
Dimensianare l'alimentazione per una memoria di 1 Mbyte (parole di
,
II dimensionamento delle alimentazioni.,
di un sistema di memoria
,-
..
P = n . f" . V" = 2 . O. 2003,3 = 1,32W.
La corrente totale di alimenta:;zione IT vale:
P =1,29 1024 =1,32W.
. Del restOI si poteva cakalare in questo modo:
L Collegamento diretto tra CPU e DRAM, Soluzione in disuso, praticata soCOra
negli soni settanta, La CPU deve fomire i segnali <Ii controllo compatibili can Ie
.. DRAM, Solo un numero limitato di CPU integrate ha seguito questa approccio
(10 Z80 fu uno di questi).
Nel calcolo precedente abbiamo trascurato
aecessoria per la decodifica degli indirizzi.
3.4
La soluzione autarchica, consistente nella progettazione della lagica eli contrallo
con' componenti standard, etendenzialmente da evitare per Ie complicazioni che essa
eomporta.
2. Impiego di uno specifieo controUore di DRAM. Per esempio, nel caso dei sistemi
SPARC monoprocessore, edisponibile il controllore ME 86980 che interfaccia
Ie memorie DRAM con I'MBUS (un bus de&nito dalla Sun Microsystem, su cui
ecollegata Ia CPU stessa, la memoria centrale e la cache). I PC moderni can
architettura Intel impiegano uno 0 due componenti bridgej questi hanno il com-
pito di gestire 10 seambio di informazioni tra i diversi (livelli eli) b.us, oltre che
di eantroUare i trasferimenti con la memoria centrale e can la cache esterna alIa
CPU.

1
. 64 bit).
Ttattandosi di una dimensione ormai piuttosto diffusa per una cache, l'esempio
verr" sviluppato solo in riferimento a una soluzlone can SRAM. L'integrato AS7C34096
ha un parallelismo di 8 bit, dunque per realizzare 1Mbyte occorrono (1024/512) = 2
i"ntegrati. .
.,Poich. il consumo ,pecifico della SRAM utilizzata eL29mW/kbyte, il con,umo
. dato da:
. -'
-'
r
I -
!
1_.. -
DATO YAUDO
'"c
COLONNA
""
JUH
--;1
DOUT
nfi'E
,,:..-;11'0', I
i -'\ \ \ -'
\. RAS \ \ 'to

'(CAS '\_
, ,
,
Tempadzzazione di una. operaziane eli lettura. di una memoria. DRAM.
L'interfacciamento con il processore
Si confronti questa dato con quello relativo alle SRAM.
Capitola 3
Per l'interfacciamento delle memorie dinamiche can il processore non esiste una solu-
zione standard. Le soluzioni pili comuni sono Ie seguenti.
3.3,2
t.l'. ".
..t':-:-", -;"
..
'11. '".,,"-
...." "
":1 ,"C'-' ", ,
;,.:':.j ". , La. memoria principale 85
""' "... \ ..

, , -:,
;'l( .': . ,.'

)" ,-' .
'1' ,
..
: ";' :.,"; :
\ .;.
. ..:, ,:'.
\ .

, "'jj
""I
.-j"
):. ,
',", '
,,'jl'
".
,""',, "
l,
""'!" '.' . .'
_"'o,J .
',r:j.
"".
, to
'....,'",..
..
:.'n.l
.',jJ;'
.,..
"c'
...1
::.' (
"
'"'l'!'
i'
,
.,
,.-:\j., ':
., .., .
:'
";i
t
" .
.. ..
Per rendere piu veloci Ie DRAM sono stati escogitati alcuni modi cli. funziona-
mente esoterici (sempre derivanti dal fatto che i1 principia di localita - spaziale - vale
anche in merirnento ai bit interni di un integrato), nati come static column
,
nibble
mode e page mode. Essi consistono sostanziaJmente nel mantenere costante un in- .\W::
dirizw (tipicamente QueUo di riga) e aggioroare solo l'indirizzo di colonna. Cia e '.
particolarmente utile nel caso in cui il processore generi indirizzi progressivi (came :
accade narmalmente, almeno nel fetch delle istruzioni).
N Ii ultimi anill sono de tecniche er migliorare Ie prestazioni ( .
delle DRAM e quaIi ha fatto se i 'JDa variet,J . . Ie identl ca lye e e carat
t e e piu significativa, e . ortato
un vero e proprio salta teH-e-B'R::A:M='st1 yecificato ,'{$.
u l'introdu' De sui mercato delle DRAM sincrone. In questa caso, come vedremo
pin avanti, 13. memoria ,. cia e aggancia il clock esteino per ..
sincronizzare Ie operazlOni i e fasi '!:J
di lettura sCIlttura m un ben determinata numera di deli di clock. ,i"
:
'.'jl '.
"-""1 '
.'IJ .
"," ,
Consumo L'aspetto che vale la pena di rimareare eit consumo specifieo. 11 eom-
ponente AS4C1M16E5 consurna 0,740 W. Tenuta conto che la capacit" edi 2Mbyte,
, ..
_ Potenza d1881pata _ 0,740 _ 0 3 W/kb (3) '1. .
P _. ., _ -, 61m yte .2 :'-J: ..
DunenslOne In kbyte 2048
.'"'1" .
if'
, .. .
<'t .,
:." ,
I'

':':"1'
,
, ;.
.
", ,
',t, ,
'. fl; .
. ".
c" .
,G '
'!

Figura 3.5
84
' . I>
"1'
\1'
,
Bus Do tl
Indl..-l
-
I
-
I
.
-. ...... _..
."
'"
ifi ill
.
v
[

"

"
, , ,

" " " "


.
M
, , ,

Bus no:tl
"">
< ,
.-g
I
.
6
6
I
In....'''.o ..... "'-"'_ I
I
In<C>
I
<> <> <> <>
3 2 1 0
BO
Bl
3
o
1

Figura 3.7 Organizzazione di una memoria a 32 bit (integrati COD parallelismo di byte). La
memoria si compone di due banchi, Bl e B2, ottenuti affiancando 4 integrati. Ogni colonna
eselezionata attraverso la decodifica dei due bit meno significativi dell'indirizzo.. I bit. piu
significativi (in questa caso 1, avendosi due soli banchi) selezionano il banco. In figura viene
mosttata la selezione dei soli due integrati piu a destra.
3 2 1 0
3 2 I 0
del1'indirizzo vengano impiegati per selezionare il byte all'interno della parola. Per
esempio, con un bus dati a 32 bit, Ie linee di indirizzo A
l
- Ao identilicano il singolo
byte all'interno di una parola (qualor. veng. indirizzato il singolo byte). Dall. de-
codific. di A, - A
o
si generano qu.ttro 'egnali (BE3;BE2,BE1,BEO) che 'e,vono a
selezionare la colonna di integrati relativa, come schematizzato in Figura 3.7.
Figura 3.6 Organizzazione di una memoria a 8 bit (integrati con parallelismo di byte). C
ela capacita. del singolo integrato, L la capacita della memoria. A sinistra. viene illustrata
la scbematizzazione della spazio di memoria diviso in blocchi contigui di dimensiooe pari a
C. A destra viene mostra-to 10 schema realizzativo: i 'due bit piu significativi dell'indirizzo
vengo
no
per selezionare .resta-uti. In(G) linee del
bus degli -indirizzi vengono callegate aJ. pJcdini comspondentl. sugh mtegratl.

:1'
,'Ili,
,.,
,I:

. -'
';1'

'l
"
, ',1
....1..
"'1'
'Jo,' ,
'il '
"'I .
".
:1 I'
'.
'. .,
con SRAM. Dal

P =0,361 . 65536 =23,7 W


Capitolo 3
Quindi, la corrente assorbita e:
Esempio 2 Dimensionare l'alimentazione per una memoria 64 Mbyte (parole di 64
bit), tipica dimensione di una memoria centrale.
Se tentassimo di realizzare questa memoria con la SRAM AS7C34096, si avrebbe:'
P = 1,2965.536 = 84,5 W.
86
con una corrente tota.le
Ir = P/V" = 84,5/3,3 = 25,6A (3.3)
Si vede subito the, anche a prescindere da considerazioni di costo, nOD eproprio
il caso di usare RAM statiche per la memoria principale. Va inoltre considerato che
gli integr.ti sarebbero ben 128 (64 Mbyte/512 kbyte) , occupando un. superficie circa
4 volte quella occupata dai. 32 integrati necessari per la stessa memoria in RAM
dinamica (vedi sotto).
Ir =PD/V" =23,7/5 = 4,74 A
circa 5 volte piu piccola della corrente assorbita daJla soluzione
confronto, risultano evidenti Ie motivazioni per Ie DRAM.
3,5 Organizzazione
.," "
.. r:;'
__-------------------- ,'1';;'1.'"I\\'!, ,\,"
-
.. , "< .

.i
: .. "" '
J;l"':: n' ..
)/.".-,"'.}-'-,!
",";'- . ",>
,pf:'':':" ...:"
',""-.: - \t,'! .':; ,
.,(: ;,".. ", .,.. ,',
'", ':
,. ,: /," ;.c....."
;',:':
':':{" \
,t. -''-'' _ ,
- ",-S',;'-, '-.- ' ....L
""r;";- ,
," ,,',' .'
". .' .'

-.... ,' . f' -c".-
., ',. -, .' "
,:- ,
. -f. '.: ;,':1::.
''':I' ,.. -,.; '.
,;>f -
' ." I'" . -. ,
,...\-:. '
'i: -: .',
,-'j"e. '_
-;".j.;} ... '.- .. \.
::< ',; .
", , ,", ' ,
Vediamo ora cosasucced.e memoria Can il
per fare orgawzzatl come 1M da 64 bit, occorrono OVVlamente 32 mtegratl.
L. patenz. dissIp.ta totale e . .:': ",
."h ...
;:
:ij :'....: '"':.
:";,: \ ',,: .
.,
_,>, I",
",
. "
." .
,
.tj\ .
,
,it " .
1",. ...
',".' .. .
I' .
,
"1" ,
':-,1 .

,.
,,,,
";" '
," I '
'.,r ,
.
". .'
....
1-'''
'I .. ..
: ..,

"
, '
! .e
,;. .
, .
, ,
.. ;,
.,
Nell'organizzazione della memoria centrale sono determinanti i seguenti aspetti:
a) tipo di integrati impiegati, parallelismo e loro dimensione;
b) grado di parallelismo del bus del sistema e dimensione complessiva della memoria.
Per semplificare, nella parte che segue si fa l'ipotesi di impiegare sempre integrati
con parallelismo di 8 bit (un byte). L'ipotesi non ein alcun modo limitativa, in quanta
un diverso parallelismo camporta. solo un diverse numero di integrati da sistemare in
parallelo. Per esempio se l'integrato ha parallelismo eli un solo bit, 1a costruzione di
un byte richiede l'impiego d.i 8 dispositivi in parallelo, cornandati identicamente.
E costume misurare in numero di byte la capacitA 0 dimensione della memoria.
Nel seguito si indica con T 1a dimensione tota.le della memoria e con C la la dimensione
del generico integrato. Un integrato di capacita C richiede In(C) linee di indirizzo.
Per una memoria di dimensione T ci vogliono, ovviamente, T 7 C integrati.
All'epoca della prima generazione dei microprocessori, il bus dati era a 8 bit.
La costruzione di una memoria prevedeva la dislocazione degli integrati a indirizzi
contigui, come schematizzato in Figura 3.6. .
Un maggior parallelismo aumenta le prestazioni: con 10 sviluppo tecnologico si
ecool passati a. bus dati di 16 bit, a bus di 32 bit, fino ai bus a 64 bit della gene-
razione corrente. L'aumento del parallelismo presuppone cbe i bit mena significativi
I
j
I
I
I
\
' . I>
"1'
\1'
,
Bus Do tl
Indl..-l
-
I
-
I
.
-. ...... _..
."
'"
ifi ill
.
v
[

"

"
, , ,

" " " "


.
M
, , ,

Bus no:tl
"">
< ,
.-g
I
.
6
6
I
In....'''.o ..... "'-"'_ I
I
In<C>
I
<> <> <> <>
3 2 1 0
BO
Bl
3
o
1

Figura 3.7 Organizzazione di una memoria a 32 bit (integrati COD parallelismo di byte). La
memoria si compone di due banchi, Bl e B2, ottenuti affiancando 4 integrati. Ogni colonna
eselezionata attraverso la decodifica dei due bit meno significativi dell'indirizzo.. I bit. piu
significativi (in questa caso 1, avendosi due soli banchi) selezionano il banco. In figura viene
mosttata la selezione dei soli due integrati piu a destra.
3 2 1 0
3 2 I 0
del1'indirizzo vengano impiegati per selezionare il byte all'interno della parola. Per
esempio, con un bus dati a 32 bit, Ie linee di indirizzo A
l
- Ao identilicano il singolo
byte all'interno di una parola (qualor. veng. indirizzato il singolo byte). Dall. de-
codific. di A, - A
o
si generano qu.ttro 'egnali (BE3;BE2,BE1,BEO) che 'e,vono a
selezionare la colonna di integrati relativa, come schematizzato in Figura 3.7.
Figura 3.6 Organizzazione di una memoria a 8 bit (integrati con parallelismo di byte). C
ela capacita. del singolo integrato, L la capacita della memoria. A sinistra. viene illustrata
la scbematizzazione della spazio di memoria diviso in blocchi contigui di dimensiooe pari a
C. A destra viene mostra-to 10 schema realizzativo: i 'due bit piu significativi dell'indirizzo
vengo
no
per selezionare .resta-uti. In(G) linee del
bus degli -indirizzi vengono callegate aJ. pJcdini comspondentl. sugh mtegratl.

:1'
,'Ili,
,.,
,I:

. -'
';1'

'l
"
, ',1
....1..
"'1'
'Jo,' ,
'il '
"'I .
".
:1 I'
'.
'. .,
con SRAM. Dal

P =0,361 . 65536 =23,7 W


Capitolo 3
Quindi, la corrente assorbita e:
Esempio 2 Dimensionare l'alimentazione per una memoria 64 Mbyte (parole di 64
bit), tipica dimensione di una memoria centrale.
Se tentassimo di realizzare questa memoria con la SRAM AS7C34096, si avrebbe:'
P = 1,2965.536 = 84,5 W.
86
con una corrente tota.le
Ir = P/V" = 84,5/3,3 = 25,6A (3.3)
Si vede subito the, anche a prescindere da considerazioni di costo, nOD eproprio
il caso di usare RAM statiche per la memoria principale. Va inoltre considerato che
gli integr.ti sarebbero ben 128 (64 Mbyte/512 kbyte) , occupando un. superficie circa
4 volte quella occupata dai. 32 integrati necessari per la stessa memoria in RAM
dinamica (vedi sotto).
Ir =PD/V" =23,7/5 = 4,74 A
circa 5 volte piu piccola della corrente assorbita daJla soluzione
confronto, risultano evidenti Ie motivazioni per Ie DRAM.
3,5 Organizzazione
.," "
.. r:;'
__-------------------- ,'1';;'1.'"I\\'!, ,\,"
-
.. , "< .

.i
: .. "" '
J;l"':: n' ..
)/.".-,"'.}-'-,!
",";'- . ",>
,pf:'':':" ...:"
',""-.: - \t,'! .':; ,
.,(: ;,".. ", .,.. ,',
'", ':
,. ,: /," ;.c....."
;',:':
':':{" \
,t. -''-'' _ ,
- ",-S',;'-, '-.- ' ....L
""r;";- ,
," ,,',' .'
". .' .'

-.... ,' . f' -c".-
., ',. -, .' "
,:- ,
. -f. '.: ;,':1::.
''':I' ,.. -,.; '.
,;>f -
' ." I'" . -. ,
,...\-:. '
'i: -: .',
,-'j"e. '_
-;".j.;} ... '.- .. \.
::< ',; .
", , ,", ' ,
Vediamo ora cosasucced.e memoria Can il
per fare orgawzzatl come 1M da 64 bit, occorrono OVVlamente 32 mtegratl.
L. patenz. dissIp.ta totale e . .:': ",
."h ...
;:
:ij :'....: '"':.
:";,: \ ',,: .
.,
_,>, I",
",
. "
." .
,
.tj\ .
,
,it " .
1",. ...
',".' .. .
I' .
,
"1" ,
':-,1 .

,.
,,,,
";" '
," I '
'.,r ,
.
". .'
....
1-'''
'I .. ..
: ..,

"
, '
! .e
,;. .
, .
, ,
.. ;,
.,
Nell'organizzazione della memoria centrale sono determinanti i seguenti aspetti:
a) tipo di integrati impiegati, parallelismo e loro dimensione;
b) grado di parallelismo del bus del sistema e dimensione complessiva della memoria.
Per semplificare, nella parte che segue si fa l'ipotesi di impiegare sempre integrati
con parallelismo di 8 bit (un byte). L'ipotesi non ein alcun modo limitativa, in quanta
un diverso parallelismo camporta. solo un diverse numero di integrati da sistemare in
parallelo. Per esempio se l'integrato ha parallelismo eli un solo bit, 1a costruzione di
un byte richiede l'impiego d.i 8 dispositivi in parallelo, cornandati identicamente.
E costume misurare in numero di byte la capacitA 0 dimensione della memoria.
Nel seguito si indica con T 1a dimensione tota.le della memoria e con C la la dimensione
del generico integrato. Un integrato di capacita C richiede In(C) linee di indirizzo.
Per una memoria di dimensione T ci vogliono, ovviamente, T 7 C integrati.
All'epoca della prima generazione dei microprocessori, il bus dati era a 8 bit.
La costruzione di una memoria prevedeva la dislocazione degli integrati a indirizzi
contigui, come schematizzato in Figura 3.6. .
Un maggior parallelismo aumenta le prestazioni: con 10 sviluppo tecnologico si
ecool passati a. bus dati di 16 bit, a bus di 32 bit, fino ai bus a 64 bit della gene-
razione corrente. L'aumento del parallelismo presuppone cbe i bit mena significativi
I
j
I
I
I
\
j
\ .
I .
r
I
I
I
1
(3.6)
(3.5)
Per una memoria dinamica
N
t= f
8L'Appendice B ededicata a un esame dell'architettura Intel.
3.6.1 Caso di studio: evoluzione della velocita della famiglia
8086 in rapporto a quella delle DRAM
dove tRe eil tempo di cicio della memoria.
Ovviamente, se Ie due precedenti non sono verificate, ovvero se la me-
moria elenta in paragone alIa CPU, oceorre inserire un numero d.i cieli di attesa (stati
di wait), N
w
, in modo tale che si abbia:
N+N
w
t = > tAGC,tRC
dove tACC eil tempo di accesso alla memoria.
tRC < t
-
Supponendo d.i trascurare in prima approssimazione i ritardi introdotti dall'even-
tuale logiea di decodifica, per una memoria statica esufficiente che
tACC < t (3.4)
La memoria principale 89
3.6 Relazione tra la velocita della CPU e la velocita
della memoria
, In Tabella 3.1 viene riportato it valore di t per differenti modelli (fino al 486) di
CPU della famiglia Intel 8086
8
. Lo stesso processore compare pill volte, in relazione
'a differenti versioni operanti a differenti frequenze. righe riportana anche i
tempi di ciclo delle DRAM di mercato all'epoea dell'introduzione .dei relativi modelli
di CPU. La tabella, per quanta approssimata, perche per le DRAM vengono dati
Un metodo per stimare la velocita (tempo di accesso) di una memoria da accoppiare
,-',. a una CPU equello sotto esposto.
- Si indichi con f la frequenza di clock della CPU e si supponga'che ogni accesso
'in memoria richieda, da parte della CPU, N dcli di clock, pari a un tempo:
Si noti tuttavia che l'introduzione ill uno 0 pin dcli di attesa ha l'effetto di
allungare il tempo di aecesso di una quantita pari a N
w
/ f. La penalizzazione etanto
maggiore quanto minore eN. Se N = I, un delo di wait equivale a dimezzare - per
quanta si riferisce all'accesso aHa memoria - la velodta. della CPU.
Per tale motivo, non sempre l'aggiunta di deli d.i wait ela migliore soluzione. In
certe situazioni, piuttosto che introdurre cieli d.i attesa, puo risultare pili eonveniente
ridurre f, in modo da avete un tM migliore di .queUo che si avrebbe con l'introduzione
".:, del wait.
. Di questo' e di altri aspetti si parla nel paragrafo seguente, dove si esamina, in
.dferimento la famiglia 8086, come si eevoluto nel tempo il rapporto tra la velocita.
della CPU e velocita delle memorie dinamiehe. .
,..
'; ..


,., ,
\1
' " ;
"',J!
.".-'
,..
.
,?:;;I'
:,
'< ,.,
t
',:;' '
- .,' '
,:."i:,I'
',.
"l
/<'1. :
". ,

-
f
""'j .
"'.'. ,
:.
,""1 ,
.! ,
,",
"r
-:":1',' '
!.,
":<;
:':",
.";

-,,,I.
" .-'

.;;"

,
Y."
, ',' ,"
.:,",'
''':,"
,:,::.-

, ;,p
_c,';ji
"it:


"," "
.("11"'.:
.." ;",.",.;);"
\::::
'.:t. ,,:........ ;.
:)1 '
:",
, \,.,
In(Cl
I lndlrlzzo .ntro Il boneo I Ii hnco I
B,
B rd
e"
=
-""
-'------.--_._-
1La CPU 8086 non vincolava all'allineamento, rna cia era. fonte di inefficienza. Si veda \' Appendice
B.
Con Finterlacciamento, rnentre per esempio avviene l'accesso al banco 0, al suc-
cessivo (0 ai successivi) puo gia. essere tiasmesso Pindirizzo cii riga (precaricamento
del RAS), in modo da evitare la parte pili onerosa dell'accesso.
L'interlacciamento ha comunque una controindicazione pratica; rende alquanto
laboriosa }'estensione della memoria con l'aggiunta cii ulteriori banchi. Per esempio,
facenda riferimento alIa Figura 3.8, se si vuole raddoppiare 1a memoria, portandola da
n a 2n banchi, il campo dell'indirizzo contenente il numero di banco deve estendersi di
un bit. Cia richiede, oltre a una nuova decodifica di questo campo, nuovi collegamenti
BU tutti Ie altre linee del bus degli indirizzi. AI problema si puo ovviare can della logica
aggiuntiva. In ogni caso, l'interlacciamento non e indicato au macchine che hanno il
loro punta di forza nel basso costa, nella modularita e nella espandibilita..
I i IBo

Figura 3.8 Indirizzamento interlacciato. Indirizzi consecutivi individuano posizioni in ban-


chi divers!: i bit meno significativi selezionano il banco, mentre i restanti bit identificano la
posizione entro la parola. entro i1 banco.
'"l
- ;.';, -
:..:'l '
/';:. >,
:
Abbiamo vista che la memoria, in particolare la dei vincoli temporali ':,jJ,: "
alIa velocita con cui possono cambiare i segnali (RAS e CAS). "'::',.
,"". .
':"'-' - . --
n problema si pone la CPU genera normalmente indirizzi consecutivi 0 , . '
comunque indirizzi che individuano posizioni nella stesso banco. II vincolo eevitato se .
- -' r
indirizzi consecutivi parole in banchi diversi, come illustrato in Figura 3.8.
Questa tecnica viene detta interlacciamento (interleaving) della memoria. '- ., -'.,
":,;;:; :.
-, ,'I. '
, ,
, " .
i',
"'-,i
-' "-

3.5.1 Interlacciamento
Nelle macchine moderne si richiede che istruzioni e dati siano allineati ai confini
della parola: in tal modo si puo sfruttare tutta la larghezza del bus
7
.
88 Capitola 3
,(
1
j
\ .
I .
r
I
I
I
1
(3.6)
(3.5)
Per una memoria dinamica
N
t= f
8L'Appendice B ededicata a un esame dell'architettura Intel.
3.6.1 Caso di studio: evoluzione della velocita della famiglia
8086 in rapporto a quella delle DRAM
dove tRe eil tempo di cicio della memoria.
Ovviamente, se Ie due precedenti non sono verificate, ovvero se la me-
moria elenta in paragone alIa CPU, oceorre inserire un numero d.i cieli di attesa (stati
di wait), N
w
, in modo tale che si abbia:
N+N
w
t = > tAGC,tRC
dove tACC eil tempo di accesso alla memoria.
tRC < t
-
Supponendo d.i trascurare in prima approssimazione i ritardi introdotti dall'even-
tuale logiea di decodifica, per una memoria statica esufficiente che
tACC < t (3.4)
La memoria principale 89
3.6 Relazione tra la velocita della CPU e la velocita
della memoria
, In Tabella 3.1 viene riportato it valore di t per differenti modelli (fino al 486) di
CPU della famiglia Intel 8086
8
. Lo stesso processore compare pill volte, in relazione
'a differenti versioni operanti a differenti frequenze. righe riportana anche i
tempi di ciclo delle DRAM di mercato all'epoea dell'introduzione .dei relativi modelli
di CPU. La tabella, per quanta approssimata, perche per le DRAM vengono dati
Un metodo per stimare la velocita (tempo di accesso) di una memoria da accoppiare
,-',. a una CPU equello sotto esposto.
- Si indichi con f la frequenza di clock della CPU e si supponga'che ogni accesso
'in memoria richieda, da parte della CPU, N dcli di clock, pari a un tempo:
Si noti tuttavia che l'introduzione ill uno 0 pin dcli di attesa ha l'effetto di
allungare il tempo di aecesso di una quantita pari a N
w
/ f. La penalizzazione etanto
maggiore quanto minore eN. Se N = I, un delo di wait equivale a dimezzare - per
quanta si riferisce all'accesso aHa memoria - la velodta. della CPU.
Per tale motivo, non sempre l'aggiunta di deli d.i wait ela migliore soluzione. In
certe situazioni, piuttosto che introdurre cieli d.i attesa, puo risultare pili eonveniente
ridurre f, in modo da avete un tM migliore di .queUo che si avrebbe con l'introduzione
".:, del wait.
. Di questo' e di altri aspetti si parla nel paragrafo seguente, dove si esamina, in
.dferimento la famiglia 8086, come si eevoluto nel tempo il rapporto tra la velocita.
della CPU e velocita delle memorie dinamiehe. .
,..
'; ..


,., ,
\1
' " ;
"',J!
.".-'
,..
.
,?:;;I'
:,
'< ,.,
t
',:;' '
- .,' '
,:."i:,I'
',.
"l
/<'1. :
". ,

-
f
""'j .
"'.'. ,
:.
,""1 ,
.! ,
,",
"r
-:":1',' '
!.,
":<;
:':",
.";

-,,,I.
" .-'

.;;"

,
Y."
, ',' ,"
.:,",'
''':,"
,:,::.-

, ;,p
_c,';ji
"it:


"," "
.("11"'.:
.." ;",.",.;);"
\::::
'.:t. ,,:........ ;.
:)1 '
:",
, \,.,
In(Cl
I lndlrlzzo .ntro Il boneo I Ii hnco I
B,
B rd
e"
=
-""
-'------.--_._-
1La CPU 8086 non vincolava all'allineamento, rna cia era. fonte di inefficienza. Si veda \' Appendice
B.
Con Finterlacciamento, rnentre per esempio avviene l'accesso al banco 0, al suc-
cessivo (0 ai successivi) puo gia. essere tiasmesso Pindirizzo cii riga (precaricamento
del RAS), in modo da evitare la parte pili onerosa dell'accesso.
L'interlacciamento ha comunque una controindicazione pratica; rende alquanto
laboriosa }'estensione della memoria con l'aggiunta cii ulteriori banchi. Per esempio,
facenda riferimento alIa Figura 3.8, se si vuole raddoppiare 1a memoria, portandola da
n a 2n banchi, il campo dell'indirizzo contenente il numero di banco deve estendersi di
un bit. Cia richiede, oltre a una nuova decodifica di questo campo, nuovi collegamenti
BU tutti Ie altre linee del bus degli indirizzi. AI problema si puo ovviare can della logica
aggiuntiva. In ogni caso, l'interlacciamento non e indicato au macchine che hanno il
loro punta di forza nel basso costa, nella modularita e nella espandibilita..
I i IBo

Figura 3.8 Indirizzamento interlacciato. Indirizzi consecutivi individuano posizioni in ban-


chi divers!: i bit meno significativi selezionano il banco, mentre i restanti bit identificano la
posizione entro la parola. entro i1 banco.
'"l
- ;.';, -
:..:'l '
/';:. >,
:
Abbiamo vista che la memoria, in particolare la dei vincoli temporali ':,jJ,: "
alIa velocita con cui possono cambiare i segnali (RAS e CAS). "'::',.
,"". .
':"'-' - . --
n problema si pone la CPU genera normalmente indirizzi consecutivi 0 , . '
comunque indirizzi che individuano posizioni nella stesso banco. II vincolo eevitato se .
- -' r
indirizzi consecutivi parole in banchi diversi, come illustrato in Figura 3.8.
Questa tecnica viene detta interlacciamento (interleaving) della memoria. '- ., -'.,
":,;;:; :.
-, ,'I. '
, ,
, " .
i',
"'-,i
-' "-

3.5.1 Interlacciamento
Nelle macchine moderne si richiede che istruzioni e dati siano allineati ai confini
della parola: in tal modo si puo sfruttare tutta la larghezza del bus
7
.
88 Capitola 3
,(
1
I
1
, J (MIIi.) , 1.u. (MHz) , t (ns) , t,u. (ns) , tRO (as)
cPU
Pentium
66 66 15 15 1uu
Pentium
133 66 7,5
. 15
100
Pentium Pro
266 66 3,8 15 80
Pentium II
400 100 2,5 10 60
Pentium III
733 133 1,4 7,5 60
10n 486 legge Ia. memoria in un cicio di dock solo durante Ie operazioni di riempimento e svuo-
tamento della cache intemaj se il processore a.ccede alla memoria in maniera "normale", senza doe
interessare la caehe - pereM, per esempio la cache edisa.bilitata 0 perehe si tratta. di una. zona non
(Int91] -, aHora vengono impiegati due deli di clock,. OYViamente, il modo di a.ccesso
"normale" ha ben poca importanza: esseodo presente la cache interna la memoria principale viene
interessata prevalentemente da richieste di lettura/scrittura di linee e eioe di blocchi di byte.
Vale la pena indagare anche neUa direzione schematizzabile con questa domanda:
Ufissata 1a tecnologia delle RAM dinamiche
l
ovvero per un dato tRO 1 qual ela massima
frequenza di clock aHa Quale puo essere portata la CPU senza che si rendano necessari
uno 0 pill statio di attesa?ll.
Supponendo ancora di avere una DRAM cia 80ns come tempo di accesso (corri-
spondenti tRc=150ns) e supponendo che il processore richieda due cieli di elock per
3.2 Frequenze di,clock della CPU (f) e.del bus esterno per i microprocessori
di c1asse Pentium e La separazl?Oe tra frequenza mterna (della CPU) ?
frequ
enza
del bus esterno e stata. lntrodotta con tl 486 DX2 (la frequenza del bus era meta
di quella della CPU) cd e poi diventata pratica corrente; can una crescente divaricazjone
tra Ie due. Le motivazioni sono soprattutto di carattere tecnologico: (1) non ha senso avere
all'esterno una frequenza rispetto aHa quale non esistono componenti adeguatij (2) frequenze
elevate comportano estreme difficolta realizzative per i costruttori di computer - si pensi ai
elettromagnetici indotti delle armoniche di ordine superiore.
. .
16 MHz, modeHi successivi hanna portato J fino a 40MBz. La Tabella3.1 mostra
che'il 386 a 12 MHz poteva essere ancora impiegato con DRAM con tnc = 150ns
(equivalente a tACO di 80ns). Con frequenza eli 40MHz, per portare t a 150ns, ci
vogliono ben 4 deli di attesa.
i numeri precedenti dicono cbe a partire cia un certo punto
l
Pimpiego diretto delle
'CPU con Ie memorie DRAM diventa insostenibile. In pratic3
l
si tratta di rallentare di
4 volte e oltre la velocita. di esecuzione. Di conseguenza, Ie memorie cache diventano
obbligatorie ancbe su macchine tipo personal computer. I costruttori stessi iniziano
,a produrre microprocessori con cache integrata.
Il micro 80486 ei1 primo esempio di CPU can cache integrata. II 486 non eun
l vero processore RlSe
l
rqa ha molte caratteristiche che 10 rendono paragonabile ai
roSC. In particolare, ci sonG alcune fasi in cui l'accesso alia memoria si compie in un
solo ciclo di clock
10
.
Con il 486le cose diventano insopportabili: per usare una DRAM con tRC ;;:: 150
,
ns, col modello a 50 MHz d vogliono ben 7 stati di wait. E questa il motivo per il
Quale; sebbene il 486 abbia una sua cache interna, efortemente consigliata una cache
esterna, in modo da evitare tanto spreco cii capacita. elaborativa.
'. ' .

..
',' ,..


,'I.
j(

""
..

'i .
, -,

';1
'r
,-,-
'!,.,I'p ,:
\.'.. 'I .... ' ,,,,
,.",
.1. 1 _ '.-
.. ')
":> La memoria principale 91
. '.
..
... '....
-'i .
.
.,
. ,
...
,
,"

t

,J;
"..,
"
,
--i'
..
I
"<'i "
:
}I'
',4- '
.
-.'.
....
...'1
..,I

-,1
,\;
-'''<
.,
--,.,

,.
.,.

,'", .

"
...,.,

,'. -
-.
-.
'c'
", I'
."
\:,' ,

.' -j-:
:',.''1,
, ),' ,.,.",
..
f '
"':1
"0..:-.
, .

, I'

...
,.'.
'. \1 .;, :
. ,'. J
"

,2".
...
';
301 ...
"
...., .-
':;J

"1
',\. '1

(3.7)
MIrZ)

N Nw t (ns)
IRO lns)
5 3 U 600 350
8086/88 10 3 0 300
80286 6 2
0 330 300
80286 6 2 1 500

12 2 0 167 1 0
80286/386 16 2
0 125
80286/386 16 2 1 188
8U386 40 2 0 5 100
80386 40 2 4 150
80486 25 1 0 40 100
80486 25 1 3 160
Con l'introduzione del processore 80286) ci si avvio a entrare nelPera in cui ie
DRAM risultarono piu lente delle CPU. n 286 richiede due cicli <Ii elock per accedere
alla memoria. Can J = 6 MHz si ha:
N 2
I = f = 6. 10' = 330 ns
valori plausibili, corrispondenti a integrati venduti in grandi volumi suI mercato, eun
buona specchio deU'evoluzione della tecnologia degli anni recenti.
Su alcWle righe della tabella, quando 13 DRAM risulta trappo leota in rapporto
al modella di CPU sana stati introdotti i cieli di wait necessari a renderle impiegabili.
nprimo PC IBM (1991) impiegava il micro 8088 can J pari a 4,77 MHz e montava
DRAM 64kx1 bit, can tempi <Ii cielo <Ii 350ns. La CPU in questione impiega 3 cieli
di clock per ogni accessa alla memoria. Come illustra la prima riga di Tabella 3.1 non
c'era nessun bisogno di deli di attesa.
La stessa tabella riporta i valori di t per la CPU 8086 con J = 10 MHz, frequenza
massima per cui estato prodotto questa micro.
90 Capit<>lo 3
't =(N + N
w
)/f =(H 1)/(6 .10') = 500 ...
Nell'anno dell'introduziooe del PC/AT (1983), Ie memorie dinarniche di hasso
costa avevano un tempo di delo attorno ai 300 nSj di poco inferiore a quello richiesto
dalla CPU._ Anche in previsione del madelia successivo, che avrebbe lavorato a 8 MHz,
venne introdotto uno stato di attesa, portando t a 500 ns
9
. In Tabella 3.1 viene dato
anche il t per ]'ultimaversione del 286 prodotta (a 16 MHz).
n micro 80386 introdotto nel 1987, non diversamente dal 286, impiega due cieli
d.i clock per leggerefscrivere in memoria. Originariamente, la frequenza era pari a
Tabella 3.1 Tempi per l'esecuzione di una operazione di lettura/scrittwa per differenti
modelli di CPU della famiglia 8086, fino al 486, per differenti frequenze del clock. Su alcune
righe sono stati inseriti alcuni cicli di wait. Ovviamente, 1a ta.bella rappresenta un piccolo
sottoinsieme delle versioni, operanti a frequenze crescenti, rilasciate via via dal costruttore.
I
\
I
I
I
\
\
\
\
\
I
1
, J (MIIi.) , 1.u. (MHz) , t (ns) , t,u. (ns) , tRO (as)
cPU
Pentium
66 66 15 15 1uu
Pentium
133 66 7,5
. 15
100
Pentium Pro
266 66 3,8 15 80
Pentium II
400 100 2,5 10 60
Pentium III
733 133 1,4 7,5 60
10n 486 legge Ia. memoria in un cicio di dock solo durante Ie operazioni di riempimento e svuo-
tamento della cache intemaj se il processore a.ccede alla memoria in maniera "normale", senza doe
interessare la caehe - pereM, per esempio la cache edisa.bilitata 0 perehe si tratta. di una. zona non
(Int91] -, aHora vengono impiegati due deli di clock,. OYViamente, il modo di a.ccesso
"normale" ha ben poca importanza: esseodo presente la cache interna la memoria principale viene
interessata prevalentemente da richieste di lettura/scrittura di linee e eioe di blocchi di byte.
Vale la pena indagare anche neUa direzione schematizzabile con questa domanda:
Ufissata 1a tecnologia delle RAM dinamiche
l
ovvero per un dato tRO 1 qual ela massima
frequenza di clock aHa Quale puo essere portata la CPU senza che si rendano necessari
uno 0 pill statio di attesa?ll.
Supponendo ancora di avere una DRAM cia 80ns come tempo di accesso (corri-
spondenti tRc=150ns) e supponendo che il processore richieda due cieli di elock per
3.2 Frequenze di,clock della CPU (f) e.del bus esterno per i microprocessori
di c1asse Pentium e La separazl?Oe tra frequenza mterna (della CPU) ?
frequ
enza
del bus esterno e stata. lntrodotta con tl 486 DX2 (la frequenza del bus era meta
di quella della CPU) cd e poi diventata pratica corrente; can una crescente divaricazjone
tra Ie due. Le motivazioni sono soprattutto di carattere tecnologico: (1) non ha senso avere
all'esterno una frequenza rispetto aHa quale non esistono componenti adeguatij (2) frequenze
elevate comportano estreme difficolta realizzative per i costruttori di computer - si pensi ai
elettromagnetici indotti delle armoniche di ordine superiore.
. .
16 MHz, modeHi successivi hanna portato J fino a 40MBz. La Tabella3.1 mostra
che'il 386 a 12 MHz poteva essere ancora impiegato con DRAM con tnc = 150ns
(equivalente a tACO di 80ns). Con frequenza eli 40MHz, per portare t a 150ns, ci
vogliono ben 4 deli di attesa.
i numeri precedenti dicono cbe a partire cia un certo punto
l
Pimpiego diretto delle
'CPU con Ie memorie DRAM diventa insostenibile. In pratic3
l
si tratta di rallentare di
4 volte e oltre la velocita. di esecuzione. Di conseguenza, Ie memorie cache diventano
obbligatorie ancbe su macchine tipo personal computer. I costruttori stessi iniziano
,a produrre microprocessori con cache integrata.
Il micro 80486 ei1 primo esempio di CPU can cache integrata. II 486 non eun
l vero processore RlSe
l
rqa ha molte caratteristiche che 10 rendono paragonabile ai
roSC. In particolare, ci sonG alcune fasi in cui l'accesso alia memoria si compie in un
solo ciclo di clock
10
.
Con il 486le cose diventano insopportabili: per usare una DRAM con tRC ;;:: 150
,
ns, col modello a 50 MHz d vogliono ben 7 stati di wait. E questa il motivo per il
Quale; sebbene il 486 abbia una sua cache interna, efortemente consigliata una cache
esterna, in modo da evitare tanto spreco cii capacita. elaborativa.
'. ' .

..
',' ,..


,'I.
j(

""
..

'i .
, -,

';1
'r
,-,-
'!,.,I'p ,:
\.'.. 'I .... ' ,,,,
,.",
.1. 1 _ '.-
.. ')
":> La memoria principale 91
. '.
..
... '....
-'i .
.
.,
. ,
...
,
,"

t

,J;
"..,
"
,
--i'
..
I
"<'i "
:
}I'
',4- '
.
-.'.
....
...'1
..,I

-,1
,\;
-'''<
.,
--,.,

,.
.,.

,'", .

"
...,.,

,'. -
-.
-.
'c'
", I'
."
\:,' ,

.' -j-:
:',.''1,
, ),' ,.,.",
..
f '
"':1
"0..:-.
, .

, I'

...
,.'.
'. \1 .;, :
. ,'. J
"

,2".
...
';
301 ...
"
...., .-
':;J

"1
',\. '1

(3.7)
MIrZ)

N Nw t (ns)
IRO lns)
5 3 U 600 350
8086/88 10 3 0 300
80286 6 2
0 330 300
80286 6 2 1 500

12 2 0 167 1 0
80286/386 16 2
0 125
80286/386 16 2 1 188
8U386 40 2 0 5 100
80386 40 2 4 150
80486 25 1 0 40 100
80486 25 1 3 160
Con l'introduzione del processore 80286) ci si avvio a entrare nelPera in cui ie
DRAM risultarono piu lente delle CPU. n 286 richiede due cicli <Ii elock per accedere
alla memoria. Can J = 6 MHz si ha:
N 2
I = f = 6. 10' = 330 ns
valori plausibili, corrispondenti a integrati venduti in grandi volumi suI mercato, eun
buona specchio deU'evoluzione della tecnologia degli anni recenti.
Su alcWle righe della tabella, quando 13 DRAM risulta trappo leota in rapporto
al modella di CPU sana stati introdotti i cieli di wait necessari a renderle impiegabili.
nprimo PC IBM (1991) impiegava il micro 8088 can J pari a 4,77 MHz e montava
DRAM 64kx1 bit, can tempi <Ii cielo <Ii 350ns. La CPU in questione impiega 3 cieli
di clock per ogni accessa alla memoria. Come illustra la prima riga di Tabella 3.1 non
c'era nessun bisogno di deli di attesa.
La stessa tabella riporta i valori di t per la CPU 8086 con J = 10 MHz, frequenza
massima per cui estato prodotto questa micro.
90 Capit<>lo 3
't =(N + N
w
)/f =(H 1)/(6 .10') = 500 ...
Nell'anno dell'introduziooe del PC/AT (1983), Ie memorie dinarniche di hasso
costa avevano un tempo di delo attorno ai 300 nSj di poco inferiore a quello richiesto
dalla CPU._ Anche in previsione del madelia successivo, che avrebbe lavorato a 8 MHz,
venne introdotto uno stato di attesa, portando t a 500 ns
9
. In Tabella 3.1 viene dato
anche il t per ]'ultimaversione del 286 prodotta (a 16 MHz).
n micro 80386 introdotto nel 1987, non diversamente dal 286, impiega due cieli
d.i clock per leggerefscrivere in memoria. Originariamente, la frequenza era pari a
Tabella 3.1 Tempi per l'esecuzione di una operazione di lettura/scrittwa per differenti
modelli di CPU della famiglia 8086, fino al 486, per differenti frequenze del clock. Su alcune
righe sono stati inseriti alcuni cicli di wait. Ovviamente, 1a ta.bella rappresenta un piccolo
sottoinsieme delle versioni, operanti a frequenze crescenti, rilasciate via via dal costruttore.
I
\
I
I
I
\
\
\
\
\
accesso, si ottiene:
.
CPU. Le prestazioni aumentano da un minima del 50% a un massimo del 100%
.all'anno.
92 Capitola 3
N 2

tRe 15 10-'
= 13,3 MHz
._,"
'; ;;:.. ,-,-
" ',-'\:---
... ,'."l'
"',' .' ....
(3.8)
.. , -
,
La memoria prindpale
o La velocita cresce di circa il 7% ogni 7 mesi, ovvero del 22% all'anno.
93
1
1
I
_Ovviamente, il differenziale tra i tassi di crescita ha reso sempre piu divaricata
la forbiee Ira Ie preslazloni delle CPU e delle memorie DRAM.
]
-. Localitd spaziale. NelPesecuzione di programma. e altamente probabile che la
o _ prossima istruzione sia contigua a quella in corso di esecuzione. Risultati speri-
_mentali eonfermane ehe i1 flusse delle istruzieni non mai treppe frammentato
e che i programmi tendono a generare riferimenti a zone d.i memoria consecutive
o eamunque vicine fra 10ro.
, Dati sperimentali sullJesecuzione dei programmi evidenziano che
memoria gadano della proprieta eli localita spaziale e temporate.
I riferimenti aHa
I
I
3.7 Localita, organi2;2i8:zione get at chica-
-
loLa capacita., ovvero 1a densita. di integrazione, quadruplica ogni 3 anni
13
.
>
.". Localitd temporale. Tutti gli algoritmi eontengono cieli, dunque Ie zone d.i me-
moria contenenti i cieli vengono esplorate piu valte da! Busse di istruzioni conse-
guente all'esecuzione di un data programma. In altre parole, momento in
. cui viene eseguita una generica istruzione a viene {atto riferimenta a un data, e
- _altamente prebabile che nel prossimo futuro venga d.i nuovo eseguita la medesima
, istruzione 0 fatto riferimento at medesimo dato.
Tenuto conto dei differenti costi della memoria intema rispetto alIa memoria
estema, il principia di localita. suggerisce di tenere nella memoria interna Bolo Ie
parti di programma che hanne alta prababilita di esaere indirizzate nel preaaime
futuro. Questa conaiderazione porta alla realizzazione eli sistemi a memoria virtuale.
renuto canto della maggiore velocita, rna anche del maggior costo, delle memorie
.statiche rispetto aUe memarie dinamiche, conviene ripartire la memoria interna in una
-,.(relativamente) estesa memoria principale, attraverso componenti DRAM,
e in una piccola memoria SRAM, can funzione d.i cache
14
interppsta tra il processore
e 130 memoria centrale.
Gerarchia
n principia di localita suggerisce d.i organizzare Ia memoria in mode La
gerarchia puo essere vista come una piramide che presenta al livello piu' alto i regiatri
di CPU e allivello pili basso Ie eventuali memorie di massa. Ovviamente, tanto pili
e alto illivello nella gerarchia (piu vicino al processore), tanto piu e veloce, piccola e
. 1.4n termine cache 5ta per luogo, ripostiglio sieura. lstituendo una analogia con l'economia quo--
tldlana, 1a cache sta al portafogli, come la memoria centrale sta alla cassaforte (0 al cassettone) di
casa.
I
\
I
I
I
I
,
accesso, si ottiene:
.
CPU. Le prestazioni aumentano da un minima del 50% a un massimo del 100%
.all'anno.
92 Capitola 3
N 2

tRe 15 10-'
= 13,3 MHz
._,"
'; ;;:.. ,-,-
" ',-'\:---
... ,'."l'
"',' .' ....
(3.8)
.. , -
,
La memoria prindpale
o La velocita cresce di circa il 7% ogni 7 mesi, ovvero del 22% all'anno.
93
1
1
I
_Ovviamente, il differenziale tra i tassi di crescita ha reso sempre piu divaricata
la forbiee Ira Ie preslazloni delle CPU e delle memorie DRAM.
]
-. Localitd spaziale. NelPesecuzione di programma. e altamente probabile che la
o _ prossima istruzione sia contigua a quella in corso di esecuzione. Risultati speri-
_mentali eonfermane ehe i1 flusse delle istruzieni non mai treppe frammentato
e che i programmi tendono a generare riferimenti a zone d.i memoria consecutive
o eamunque vicine fra 10ro.
, Dati sperimentali sullJesecuzione dei programmi evidenziano che
memoria gadano della proprieta eli localita spaziale e temporate.
I riferimenti aHa
I
I
3.7 Localita, organi2;2i8:zione get at chica-
-
loLa capacita., ovvero 1a densita. di integrazione, quadruplica ogni 3 anni
13
.
>
.". Localitd temporale. Tutti gli algoritmi eontengono cieli, dunque Ie zone d.i me-
moria contenenti i cieli vengono esplorate piu valte da! Busse di istruzioni conse-
guente all'esecuzione di un data programma. In altre parole, momento in
. cui viene eseguita una generica istruzione a viene {atto riferimenta a un data, e
- _altamente prebabile che nel prossimo futuro venga d.i nuovo eseguita la medesima
, istruzione 0 fatto riferimento at medesimo dato.
Tenuto conto dei differenti costi della memoria intema rispetto alIa memoria
estema, il principia di localita. suggerisce di tenere nella memoria interna Bolo Ie
parti di programma che hanne alta prababilita di esaere indirizzate nel preaaime
futuro. Questa conaiderazione porta alla realizzazione eli sistemi a memoria virtuale.
renuto canto della maggiore velocita, rna anche del maggior costo, delle memorie
.statiche rispetto aUe memarie dinamiche, conviene ripartire la memoria interna in una
-,.(relativamente) estesa memoria principale, attraverso componenti DRAM,
e in una piccola memoria SRAM, can funzione d.i cache
14
interppsta tra il processore
e 130 memoria centrale.
Gerarchia
n principia di localita suggerisce d.i organizzare Ia memoria in mode La
gerarchia puo essere vista come una piramide che presenta al livello piu' alto i regiatri
di CPU e allivello pili basso Ie eventuali memorie di massa. Ovviamente, tanto pili
e alto illivello nella gerarchia (piu vicino al processore), tanto piu e veloce, piccola e
. 1.4n termine cache 5ta per luogo, ripostiglio sieura. lstituendo una analogia con l'economia quo--
tldlana, 1a cache sta al portafogli, come la memoria centrale sta alla cassaforte (0 al cassettone) di
casa.
I
\
I
I
I
I
,

95 La memoria principale
c
-
_____
/(,...., ')
- .. .-
I
.,.... -
Un esempio di gerarchia
tempo di penalizzazione, combinazione del tempo di accesso a1 livello inferiore e
del tempo necessaria a trasferire il blocco dallivello inferiore a queUo superiore.
3.7.3
t
p
,
A conclusione di questa sezione, viene ora presentato un esempio di gerarchia di
memoria (Figura3.1O), L'esempio si riferisce aU1organizzazione della memoria di un
calcolatore personale basato suI microprocessore futel Pentium II (333 MHz). I dati
qua:nti_tativi riportati in Figura 3.10 derivano dalle seguenti considerazioni.
...' nbus dati e iI bus indirizzi del microprocessore sana entrambi a 64 bit.' La
versione scelta del Pentium, lavora con un clock interno alia frequenza di 333 MHz
(3 DS) e' con una frequenza di clock per il bus esterno di 66 MHz. Combinando questa
data con 1a dimensione della paro1a (8 byte) si ottiepe una banda passante verso la
memoria di 528Mbyte/s
16
, Una tale banda passante edel tutto insostenibile per una
DRAM. Per questo motivo estata integrata sullo stesso chip una cache interna da 16
+ 16kbyte (dati e istruzioni),
.' All'esterno un periodo di clock dura 15 DS. Per lavorare can la memoria dinamica
(supponendo di non lisare trueehi particolari) devono essere introdotti alcuni stati"
d'attesa. Nella schema di Figura 3.10 estata prevista una memoria cache di secondo
livello. - '
La dimensione del blocco trasferito dipende dalla posizione relativa nella
chia; per esempio tra memorie di massa e meIno:(ia centrale si scambiano blocchi di
qualche kbyt'e, mentre tra memoria centrale e cache si scambiano blocchi di qualche
decina di byte.
16Si,tra.tta. ovviamente di una. stima. ottimistica, da. interpretare come il limite superiore, corris-
pondente a. una. situazione in cui a ogni cicIo di clock si ha. un a.ccesso in memoria - per esempio,
se Ia. m.acchina. eseguisse una istruzione per delo.
Risulta evidente che per ottenere i benefiei dell'organizzazione gerarchiea, ovvero
,..' deWuso di memoria pili veloee ai livelli superiori, enecessaria che h sia il pill possibile
prossimo a I,
Nel caso di miss, la ricerca nellivello inferiore puo ancora dare luogo a un ulteriore
can la conseguenza che 1a ricerca deve procedere a un livello aneora pill basso.
Dal liveHo i cui il data viene trovato, viene prelevato un blocco e al livello
superiore. Ovviamente, se si e in presenza di miss multipli, da questa bloeeo viene
estratto il sottoblocco da trasferire al Hvello ancora pill alto. Poiche i trasferimenti
avvengono tra livelli adiacenti, .l'analisi puo essere eondotta considerando gli eftetti
'di hit e miss tra due livelli contiguij nel prosieguo questi verranno chiamati hvello
superiore e Ii vella inferiore, ovvero livell0 alto e livello basso.
, "
,
'-'
, 1
'"'I
'. l

, "
At

'JI

"'j
',,'It
-',
'C,,i[' "
A',
c.... i,"
,\', "
")1,,,
"

'1
.;, .
.,:.;,

'" 1 .
::8


, .
"1'1.,
,-,-;;,
"
:_\1,
, '!

,,il
' .',',
"'1
e," ,
"
,
;<:11
,.., ,
'",
-
(3,10)
(3,9)
,
numero di miss nel HveHo
livello
interlore
m=l-h
t = h ' t,. +m ' t
p
B
))1
'- .
blocch
tempo di accesso al livella superiore (comprensivo del tempo che si richiede per
determinare se il data si trova a questa livella);
-Capitolo 3
tasso di miss, e si denota con ffi, il rapporto tra il
superiore e il DUIDerO tatale di riferimenti.
Ovviamente, vale la relazione:
tasso di hit, e si denota can h, il rapporta tra il numero eli hit nelliveUo superiore
e il numero totale di riferimenti j
til:
15Si ipoti:z.za- una. operazione di lettura..
dove:
8i parla di tempo di hit e di penalizzazione di miss per indicare rispettivamente il
tempo necessario per un accesso nel livello piu alto e il tempo pagato per trasferire il
blocco dallivello piti basso e per trasmettere il dato indirizzato al proeessore. Facendo
riferimento alla Figura 3.9, assumendo che i1 Uvello alto sia una cache e che illiveUo
basso sia 1a memoria principale, il tempo medio di accesso alIa memoria, f, puo essere
espresso come:
Figura 3.9 Organizzazione gerarchica. della. memoria...

-;1\. ,_
"

:1',
"'I'
'.
. "t,
.
"'1
,;,-: '
_,0\ ,

. ',':
, ':1
. " .. ,.

"I
,,;-:.;'1 '
," '
, ",l
",1
--:i:
n trasferimento di informazioni all'interno della gerarchia avviene tralivelli adia- .
centi, can tra.sferimenti in bloceo. La Figura3.9 schematizza questa meccanismo,
Quando il date viene trovata nel livello inferiore si rende necessaria "-';]n,
to del livello superiore, trasferendovi il blocco di informazione comprendente il da-' 'cwl :-' ':
to cereate. E orna the da questa trasferimento deriva una degradazione delle '. \il ,':'.
prestazioni. .
.'J'
.:. ,1(';, '
,;.."
-q
- '"'.
,j11'

'
:\:
:J
1
"
"';1 ..:: ..
"f:;! , '"
,.
, ., . 'I
:-,"
costosa la corrispondente memoriaj tanto pill ebasso il hvella nella gerarchia) tanto .... "1'1
meno e piccola e la mem?ria... , . ," -PI"
Quando il processore genera un mdinzzo
1
Vlene pnma esammata la memOria dl .
livello pili alto. Se questa contiene il relativQ data si parla di hit e il data viene : ::,:iil, ,
direttamente trasmesso al processore
15
. In caso contrario si ha un miss e Decorre ...
"
ricercare nella memoria di livello inferiore. Si definisce ..
94
\
t
\
I
I
I
I
I
\
\
I
I

95 La memoria principale
c
-
_____
/(,...., ')
- .. .-
I
.,.... -
Un esempio di gerarchia
tempo di penalizzazione, combinazione del tempo di accesso a1 livello inferiore e
del tempo necessaria a trasferire il blocco dallivello inferiore a queUo superiore.
3.7.3
t
p
,
A conclusione di questa sezione, viene ora presentato un esempio di gerarchia di
memoria (Figura3.1O), L'esempio si riferisce aU1organizzazione della memoria di un
calcolatore personale basato suI microprocessore futel Pentium II (333 MHz). I dati
qua:nti_tativi riportati in Figura 3.10 derivano dalle seguenti considerazioni.
...' nbus dati e iI bus indirizzi del microprocessore sana entrambi a 64 bit.' La
versione scelta del Pentium, lavora con un clock interno alia frequenza di 333 MHz
(3 DS) e' con una frequenza di clock per il bus esterno di 66 MHz. Combinando questa
data con 1a dimensione della paro1a (8 byte) si ottiepe una banda passante verso la
memoria di 528Mbyte/s
16
, Una tale banda passante edel tutto insostenibile per una
DRAM. Per questo motivo estata integrata sullo stesso chip una cache interna da 16
+ 16kbyte (dati e istruzioni),
.' All'esterno un periodo di clock dura 15 DS. Per lavorare can la memoria dinamica
(supponendo di non lisare trueehi particolari) devono essere introdotti alcuni stati"
d'attesa. Nella schema di Figura 3.10 estata prevista una memoria cache di secondo
livello. - '
La dimensione del blocco trasferito dipende dalla posizione relativa nella
chia; per esempio tra memorie di massa e meIno:(ia centrale si scambiano blocchi di
qualche kbyt'e, mentre tra memoria centrale e cache si scambiano blocchi di qualche
decina di byte.
16Si,tra.tta. ovviamente di una. stima. ottimistica, da. interpretare come il limite superiore, corris-
pondente a. una. situazione in cui a ogni cicIo di clock si ha. un a.ccesso in memoria - per esempio,
se Ia. m.acchina. eseguisse una istruzione per delo.
Risulta evidente che per ottenere i benefiei dell'organizzazione gerarchiea, ovvero
,..' deWuso di memoria pili veloee ai livelli superiori, enecessaria che h sia il pill possibile
prossimo a I,
Nel caso di miss, la ricerca nellivello inferiore puo ancora dare luogo a un ulteriore
can la conseguenza che 1a ricerca deve procedere a un livello aneora pill basso.
Dal liveHo i cui il data viene trovato, viene prelevato un blocco e al livello
superiore. Ovviamente, se si e in presenza di miss multipli, da questa bloeeo viene
estratto il sottoblocco da trasferire al Hvello ancora pill alto. Poiche i trasferimenti
avvengono tra livelli adiacenti, .l'analisi puo essere eondotta considerando gli eftetti
'di hit e miss tra due livelli contiguij nel prosieguo questi verranno chiamati hvello
superiore e Ii vella inferiore, ovvero livell0 alto e livello basso.
, "
,
'-'
, 1
'"'I
'. l

, "
At

'JI

"'j
',,'It
-',
'C,,i[' "
A',
c.... i,"
,\', "
")1,,,
"

'1
.;, .
.,:.;,

'" 1 .
::8


, .
"1'1.,
,-,-;;,
"
:_\1,
, '!

,,il
' .',',
"'1
e," ,
"
,
;<:11
,.., ,
'",
-
(3,10)
(3,9)
,
numero di miss nel HveHo
livello
interlore
m=l-h
t = h ' t,. +m ' t
p
B
))1
'- .
blocch
tempo di accesso al livella superiore (comprensivo del tempo che si richiede per
determinare se il data si trova a questa livella);
-Capitolo 3
tasso di miss, e si denota con ffi, il rapporto tra il
superiore e il DUIDerO tatale di riferimenti.
Ovviamente, vale la relazione:
tasso di hit, e si denota can h, il rapporta tra il numero eli hit nelliveUo superiore
e il numero totale di riferimenti j
til:
15Si ipoti:z.za- una. operazione di lettura..
dove:
8i parla di tempo di hit e di penalizzazione di miss per indicare rispettivamente il
tempo necessario per un accesso nel livello piu alto e il tempo pagato per trasferire il
blocco dallivello piti basso e per trasmettere il dato indirizzato al proeessore. Facendo
riferimento alla Figura 3.9, assumendo che i1 Uvello alto sia una cache e che illiveUo
basso sia 1a memoria principale, il tempo medio di accesso alIa memoria, f, puo essere
espresso come:
Figura 3.9 Organizzazione gerarchica. della. memoria...

-;1\. ,_
"

:1',
"'I'
'.
. "t,
.
"'1
,;,-: '
_,0\ ,

. ',':
, ':1
. " .. ,.

"I
,,;-:.;'1 '
," '
, ",l
",1
--:i:
n trasferimento di informazioni all'interno della gerarchia avviene tralivelli adia- .
centi, can tra.sferimenti in bloceo. La Figura3.9 schematizza questa meccanismo,
Quando il date viene trovata nel livello inferiore si rende necessaria "-';]n,
to del livello superiore, trasferendovi il blocco di informazione comprendente il da-' 'cwl :-' ':
to cereate. E orna the da questa trasferimento deriva una degradazione delle '. \il ,':'.
prestazioni. .
.'J'
.:. ,1(';, '
,;.."
-q
- '"'.
,j11'

'
:\:
:J
1
"
"';1 ..:: ..
"f:;! , '"
,.
, ., . 'I
:-,"
costosa la corrispondente memoriaj tanto pill ebasso il hvella nella gerarchia) tanto .... "1'1
meno e piccola e la mem?ria... , . ," -PI"
Quando il processore genera un mdinzzo
1
Vlene pnma esammata la memOria dl .
livello pili alto. Se questa contiene il relativQ data si parla di hit e il data viene : ::,:iil, ,
direttamente trasmesso al processore
15
. In caso contrario si ha un miss e Decorre ...
"
ricercare nella memoria di livello inferiore. Si definisce ..
94
\
t
\
I
I
I
I
I
\
\
I
I
\
I
,
I
\
I
I
\
I
1
I
1
I
1
SDRAM (Synchronous Dinanllc Random Access
Memory) - DRAM sincrone
3.. 8.. 2 Cached DRAM
Quando ci si eaccorti che si sarebbero superati i 66 MHz di frequenza di bus, si e
.capito che per superare i problemi relativi alla latenza delle memorie DRAM occorreva
una diver3a tecnologia. Si epassati a una interfacda sinerana, secondo la quale, una
volta inviati gli indirizzi e atteso un preciso numero eli cieli, durante i quali la memoria
esegue al suo interno Ie varie funzioni sincronizzate dal clock esterno
,
il procesaore
esegue la lettura dei dati richiesti.
, 3,8.. 3
..
Un'altra tecnica per accelerare l'accesso ai dati in memoria equella delle CDRAM
, (Cached-Dram), Si tratla di RAM dinamiche che presentano sull'integrato una RAM
statica in funzione di cache. nmiglioramento di velodta edovuto anche al fatto che
la porzione di cache e in grade di gestire intensi Bussi di dati dalla Dram interna
,;'. attraverso un ampio bus interno, per esempio a 128 bit, contro un bus esterno a 16.
"La cache esincronizzata da un clock esterno (che puo raggiungere i 100 MHz).
,
principali tipi di DRAM Rassegna sui
commerciali
Capitola 3
3.8
CPU T :I: 3ns <333 MHz)
.
64 OIt
40 regls1:rl do. 64 bit
..
Cache interno. do. 16 -l- Kbyte 64 bi Controllore cache interne
(dati e Istruzlonl) - 333 MHz 333 MHZ - 528
Co.che esterna do 512 Kbyte
,. OIt Con troll ore cache esterno
SRAH 6 ns
333/2 MHz - 264 Mbyte/s
Mel'1orlo. centrale do. 128 Mbyte
64 Control\ore Mer-'lorla. centro.le
EDo DRAM 60 n5 bursi 5-2-2-2 66 MHz 180 Hbyte/5
,
DIsco rlgldo do. 8,2 Gbyte 8 bIt r-'ler-'loria dl Mo.SSo.
ve\oc1tO 10 Mbyte/s SCSI
Lettol"e dl CD-ROM do 650 Mbyte
w,
veloc1to. (24x) 3,6 Hbytels
96
M"'>"':'
,-- ..
--
..;;:, ,
La. memoria principale 91
. ,,,,. ----------------------------'-----'----'---'-
'. ,....
-- . ',;,-,:.;' .
. '::)j
Ih -'.
:>1 'rr <,' ',," 'n Fast Page Mode estato un metoda di accesso utilizzato molto diffusamente per
"', ..-:.: Ie' DRAM ed eancora su slsteIIll, an<:he !e !PM sono
-'1,1. , '. vate solo a Quei sisteml che non nescono a gestrre tlPl d.i memone pm avanzate
\j:j r
s
;; esempio su basa:i 486). A causa
of! I,:,. '::,>.....,. l'FPM e ora In effettl pIll cara della magglor parte delle memOne ptu veloel
:::'.'.-::< disponibili.
. '
:;,_. "1 - .. -._
,;f:: <",':EDO _ DRAM (Extended Data Out, chiamata mche Hyper Page Mode)
sr tratta. d.i una variante della Fast Page Memory. Mentre con le FPM la negazione
,(/." . di CAS disabilita i e. i disp0nibilil C?D Ie .E?O 1a
'il. ': .'.. negazione del CAS non dlsabilita 1 regtstn dl Usclta, e 1dati restano dis"pornbih fino
" _a. quando non viene nuovamente asserito CAS, cioe quando sono stati generati sia
,.. -. iLnuovO indirizzo di riga sia it nuovo indirizzo di colonna. Oio permette di arlottare
:';",'::: '.":'; ' .. temporizzazioni stringenti per il . , .
::it" ", ': - '-. Le EDO arnvano a una. temponzzazlone 5-2-2-2, cornspondente a un mlgliora-
)j ;;<"c"> meoto del 20% rispetto alia DRAM FPM, Le EDO hanno praticamente rimpiazzato
,.:.ij:..,',':::: ',": ,; ie FPM" (delle quaii mantenevano praticamente invariati i costi di produzione), di-
Figu.ra 3.10 gera.z:ch1ca della in un calcolatoT.e personale con CPU ;',.:, ".. .::". vEmtando ,10 standard. pe.r PC bus a n?n. superiori 66 MHz. Oltre tale
PentiUm II. Per 11 slgnificato della sigia 81 veda 11 paragrafo relatlvo aile EDO DRAM. .' :":' , 'velociU. dl bus, esse ncmedono l'mtroduzlone di statl di attesa.
;,)111 ,L'evoluzione delle EDO sono state Ie BEDO (Bu"t Extended Data Out), Esse
: "'.t' .. sono equipaggiate can una logica di cantrollo e tempop,zzazione interna supplemen-
,':", tare,. in grado di generare autonomamente tre indirizzi consecutivi al prima, fornito
'/,,9y,: ",' ',tramite Ie !inee di indirizzo, il RAS e il CAS. Si earrivati a una temporizzazione
'<,;' 4-1-1-1,.<on frequenza di clock di Thttavia Ie BEDO non hanno avuto un ap-
D
" '11 I" ali .. 'ch di at 't" d' r ' d' DRAM" '::{!l " ,,'," "rezzablle succeaso, a causa dl pohllche mdustnali che hanno pnvileg>ato 10 sviluppo
1 segwt? I u.strate e pnnClp . e. cum .lpl ! Ipl I, ,,;.',. :"" delle memorie sincrone.
commerclah apparSl suI mercato negh ultlml anm, nell'mtento dl coghere Ie dlff'erenze' f;:O:l ' .,,'
fra gli approcci tecnologici e progettuali seguiti al fine di migliorarne le prestazioni. :.:",;, ',", ,
:_XI}1 :' "
''''\1'' ., '. "
,
3.8.1 DRAM con accesso a pagina
I:.,','
'
PMA - DRAM (Page Mode Access) La modalita di accesso di pagina e ':
, .
mantenendo attivo ilsegnale RAS in modo che un'intera pagina di dati sia tenuta sugH ,
amplificatori. Nuovi indirizzi di colonna possono essere sincronizzati ripetutamente
iterando solo il CAS.
, " '
(. -; :" ",
..... ' ,,,-
. "'"'" " ,-
,'.t'!l ,.-
'".,
'".", .
FPM - DRAM (Fast Page Mode) La modalita di pagina veloce, costituisce '" -
evoluzione della precedente. n miglioramento estato ottenuto attivando i buffer di ".
indirizzo di colonna suI fronte di discesa del RAS (piuttosto che del CAS), Poich. il )1;" "
RAS rimane basso per l'intero dclo di pagina, Questi agiscono come latch trasparenti '
quando il CAS ealto; non c'e bisogno di attendere che CAS vada basso per
l'indirizzo di colonna.
Le sincronizzazioni tipiche sono 6-3-3-3. Con questa notazione si vuole indicare ':)W
il numero di deli di clock necessari per ottenere rispettivamente il 1, il 2 I il 3 e
4 dato della pagina selezionata. ,::'d "
ii'it'
''''j ,
',.
\
I
,
I
\
I
I
\
I
1
I
1
I
1
SDRAM (Synchronous Dinanllc Random Access
Memory) - DRAM sincrone
3.. 8.. 2 Cached DRAM
Quando ci si eaccorti che si sarebbero superati i 66 MHz di frequenza di bus, si e
.capito che per superare i problemi relativi alla latenza delle memorie DRAM occorreva
una diver3a tecnologia. Si epassati a una interfacda sinerana, secondo la quale, una
volta inviati gli indirizzi e atteso un preciso numero eli cieli, durante i quali la memoria
esegue al suo interno Ie varie funzioni sincronizzate dal clock esterno
,
il procesaore
esegue la lettura dei dati richiesti.
, 3,8.. 3
..
Un'altra tecnica per accelerare l'accesso ai dati in memoria equella delle CDRAM
, (Cached-Dram), Si tratla di RAM dinamiche che presentano sull'integrato una RAM
statica in funzione di cache. nmiglioramento di velodta edovuto anche al fatto che
la porzione di cache e in grade di gestire intensi Bussi di dati dalla Dram interna
,;'. attraverso un ampio bus interno, per esempio a 128 bit, contro un bus esterno a 16.
"La cache esincronizzata da un clock esterno (che puo raggiungere i 100 MHz).
,
principali tipi di DRAM Rassegna sui
commerciali
Capitola 3
3.8
CPU T :I: 3ns <333 MHz)
.
64 OIt
40 regls1:rl do. 64 bit
..
Cache interno. do. 16 -l- Kbyte 64 bi
Controllore cache interne
(dati e Istruzlonl) - 333 MHz
333 MHZ - 528
Co.che esterna do 512 Kbyte
,. OIt
Con troll ore cache esterno
SRAH 6 ns
333/2 MHz - 264 Mbyte/s
Mel'1orlo. centrale do. 128 Mbyte
64
Control\ore Mer-'lorla. centro.le
EDo DRAM 60 n5 bursi 5-2-2-2 66 MHz 180 Hbyte/5
,
DIsco rlgldo do. 8,2 Gbyte 8 bIt
r-'ler-'loria dl Mo.SSo.
ve\oc1tO 10 Mbyte/s SCSI
Lettol"e dl CD-ROM do 650 Mbyte
w,
veloc1to. (24x) 3,6 Hbytels
96
M"'>"':'
,-- ..
--
..;;:, ,
La. memoria principale 91
. ,,,,. ----------------------------'-----'----'---'-
'. ,....
-- . ',;,-,:.;' .
. '::)j
Ih -'.
:>1 'rr <,' ',," 'n Fast Page Mode estato un metoda di accesso utilizzato molto diffusamente per
"', ..-:.: Ie' DRAM ed eancora su slsteIIll, an<:he !e !PM sono
-'1,1. , '. vate solo a Quei sisteml che non nescono a gestrre tlPl d.i memone pm avanzate
\j:j r
s
;; esempio su basa:i 486). A causa
of! I,:,. '::,>.....,. l'FPM e ora In effettl pIll cara della magglor parte delle memOne ptu veloel
:::'.'.-::< disponibili.
. '
:;,_. "1 - .. -._
,;f:: <",':EDO _ DRAM (Extended Data Out, chiamata mche Hyper Page Mode)
sr tratta. d.i una variante della Fast Page Memory. Mentre con le FPM la negazione
,(/." . di CAS disabilita i e. i disp0nibilil C?D Ie .E?O 1a
'il. ': .'.. negazione del CAS non dlsabilita 1 regtstn dl Usclta, e 1dati restano dis"pornbih fino
" _a. quando non viene nuovamente asserito CAS, cioe quando sono stati generati sia
,.. -. iLnuovO indirizzo di riga sia it nuovo indirizzo di colonna. Oio permette di arlottare
:';",'::: '.":'; ' .. temporizzazioni stringenti per il . , .
::it" ", ': - '-. Le EDO arnvano a una. temponzzazlone 5-2-2-2, cornspondente a un mlgliora-
)j ;;<"c"> meoto del 20% rispetto alia DRAM FPM, Le EDO hanno praticamente rimpiazzato
,.:.ij:..,',':::: ',": ,; ie FPM" (delle quaii mantenevano praticamente invariati i costi di produzione), di-
Figu.ra 3.10 gera.z:ch1ca della in un calcolatoT.e personale con CPU ;',.:, ".. .::". vEmtando ,10 standard. pe.r PC bus a n?n. superiori 66 MHz. Oltre tale
PentiUm II. Per 11 slgnificato della sigia 81 veda 11 paragrafo relatlvo aile EDO DRAM. .' :":' , 'velociU. dl bus, esse ncmedono l'mtroduzlone di statl di attesa.
;,)111 ,L'evoluzione delle EDO sono state Ie BEDO (Bu"t Extended Data Out), Esse
: "'.t' .. sono equipaggiate can una logica di cantrollo e tempop,zzazione interna supplemen-
,':", tare
,
. in grado di generare autonomamente tre indirizzi consecutivi al prima, fornito
'/,,9y,: ",' ',tramite Ie !inee di indirizzo, il RAS e il CAS. Si earrivati a una temporizzazione
'<,;' 4-1-1-1,.<on frequenza di clock di Thttavia Ie BEDO non hanno avuto un ap-
D
" '11 I" ali .. 'ch di at 't" d' r ' d' DRAM" '::{!l " ,,'," "rezzablle succeaso, a causa dl pohllche mdustnali che hanno pnvileg>ato 10 sviluppo
1 segwt? I u.strate e pnnClp . e. cum .lpl ! Ipl I, ,,;.',. :"" delle memorie sincrone.
commerclah apparSl suI mercato negh ultlml anm, nell'mtento dl coghere Ie dlff'erenze' f;:O:l ' .,,'
fra gli approcci tecnologici e progettuali seguiti al fine di migliorarne le prestazioni. :.:",;, ',", ,
:_XI}1 :' "
''''\1'' ., '. "
,
3.8.1 DRAM con accesso a pagina
I:.,','
'
PMA - DRAM (Page Mode Access) La modalita di accesso di pagina e ':
, .
mantenendo attivo ilsegnale RAS in modo che un'intera pagina di dati sia tenuta sugH ,
amplificatori. Nuovi indirizzi di colonna possono essere sincronizzati ripetutamente
iterando solo il CAS.
, " '
(. -; :" ",
..... ' ,,,-
. "'"'" " ,-
,'.t'!l ,.-
'".,
'".", .
FPM - DRAM (Fast Page Mode) La modalita di pagina veloce, costituisce '" -
evoluzione della precedente. n miglioramento estato ottenuto attivando i buffer di ".
indirizzo di colonna suI fronte di discesa del RAS (piuttosto che del CAS), Poich. il )1;" "
RAS rimane basso per l'intero dclo di pagina, Questi agiscono come latch trasparenti '
quando il CAS ealto; non c'e bisogno di attendere che CAS vada basso per
l'indirizzo di colonna.
Le sincronizzazioni tipiche sono 6-3-3-3. Con questa notazione si vuole indicare ':)W
il numero di deli di clock necessari per ottenere rispettivamente il 1, il 2 I il 3 e
4 dato della pagina selezionata. ,::'d "
ii'it'
''''j ,
',.
3_8.4 Moduli commerciali
Capitolo 3
.
'<'

;(/!11I..., '.
.' , . ..
_._---------------------.:L.:a.:m=em=o.:rI.:a-"p.:r.:m::c:c
IP
::
al
::
e
=----=:9.:9
....." ..
.. ,.
.i
,_ ., "! .'"t,' .. ' .' ' ,
.:.., __'. - ,
. Le che hanno smerana so.no conosciute genericamente COn ... .. SIMM SIMM sta per Memory n SIM:M ?riginale
il nome dl SDRAM. Questa lllclude Ie vlste sopra, Ie RDRAM :?'3. .. a,veva un formate a 30 pledlDl, rna e stato succesSlvamente sostltUlto dal tlPO a 72
DRAM), (Enhanced SDRAM). E comunque stato definito uno standard. 'piedini'. Puo essere a singola 0 d?ppia fac.ci,a, con capacita di ,4, 8, 16, 32 0 anche
JEDEC di DRAM smcrona. .. ,':.. 64 Mbyte, parallelismo a 16 0 32 bit. Una tlplca scheda madre dl PC prevede quattro
, Una SDRAM ha sincrona controllata dal clock ,di sistema '::, connettori per SIMM. 5e.il bus PC ea 64 bi.t (da!. Pentium in poi) sono
e mclude anche un architettura dl tipO du.al-bank'e un bu.rst-mode (31 bit, 32 bit, .:..?J :;:;;'v . '-,', 'chiesti come ffiImmo due moduh a 32 bit della stessa dlmenslOne.
a 4 bit, a 8 bit e a pagina completa). Un registro puo inoltre essere impostato n
all'accensione del sistema e modificato durante il funzionamento per programmare Ie 0:' ..i') > . d I' DIMM (D 1I /. M M d 1 ) h . . . SIMM
dalit
di b t ( .al . t I . t ) I I h d 1b lid "jl '.' .,.... D1MM I mo u 1 ua n- me emory 0 u e anno sostltmto 1 ,
mo a urs SeqUenzl eo III er aCCla 0 , a ung ezza e urst e a atenza el '" (0'..>:,:'. d d I" d t' d' PC E . h 168' dini' d' . d til
CAS. ... ,.: divenendo.lo stan per 1ll us. . SSl anno su ue e
. . . . , . . .. , .'. di contattl. 11 magglOr numero di pIedllll permette un parallehsmo a 64 bIt. Dunque
SDRAM ha presentato molh ,probleITll compatlblhta. I pnml ".. I' essi possono essere utilizzati singolarmente ed etipico che un PC moderno fornisca solo
avevano due fu:1ee di cl?ck, rna. e stato venficato c,he .erana 'i...? una 0 due allpggiamenti di tipo DllvIM. Attualmente 10 standard erappresentato dai
conducendo alI0 sviluppo: moduh a 4 clock. Alire dlfficolta SI sono ;\)J, moduli DIMM da 3,3 volt (compatibili con memorie di tipo SDRAM, BEDO, EDO e
avute aJ chIpset contenentl 1 contro.lIon '. . .. ,,oS! j": 'FPM DRAM); una ch,ave suI connettore (una sagomatura) consente il poslZlonamento
Le SDRAM sono valutate ufficlalmente In MHz PlUttosto che In nSf m modo che "'::.. ' . ocabile.
ci sia un comune tra la velocita dell'integrato e la velodta. del
I moduli originali SDRAM impieganti integrati da 83 MHz (12ns), sono stati usati ',,: :.. ' . . . .
che operano affidabilmente fino a 83 MHz. QUestl moduli SDRAM sono ora chiamati .... RlMM (il nome eun marchlO del consorZlO Rambus). I moduli RIMM utihzzano la
PC66, per differenziarli da quelli che si conformano alla specmca Fe100 di InteL . ,.'1' stessa del DIMM da MJ:Iz standard. L'idea ecbe il BIOS
,_, ..,,debpa essere III grado dl determmare quale tipO di RAM emontato (attraverso gli
': ';) degli integrati di gestione dei bus), in modo da rendere utilizzabili i moduli
SDRAM PCIOO, PC133 Quando il maggior costruttore di microprocessori ha "\1 ,:j\":";';-:"SIMM con SDRAM da 100 MHz in un sistema RlMM-compatible.
portato iI bus di sistema a 100 MHz, la maggior parte dei moduli SDRAM disponibili :'i\il .. ,
in quel momento non poteva funzionare correttamente a quella frequenza. Intel ha ", " ; . .
allora definito la speci.fica PC100, come una direttiv.. ai produttori per la costruzione :C.. .. Controllo dl errore
di modulI progettatI per lavorare correttamente can II propno chIpset 1440BX. ... ,.",
Nel .risposta molti di di. n contrallo di parita ela forma tradizionale del controllo di
hanno deoso di rilasclare disPOSltIVl m grada dl gestIre uno standard PlU veloce, 11 .. panta viene valutata suI singolo byte e do richiede un bit ulteriore a byte
PCl33, evoluzione del precedente. . veda l' Appendice A). In caso di errore viene normalmente generata un'interruzione
il eli interrompere l'attivita
-;:;!,' Y';"/';""::'-:':"m corso, eVltando qUalSlasi potenziale alterazlOne del datI.
"Ji ',':. i',t,.- '.
:; .
't:;I. ::,:< .-: C - Error Checking Code n contrallo di parita non consente di identificare i
n primo Personal Computer prodotto dall'IBM (1981) era costruito su una piastra .. errati e non e10 gra 0 1 n evare un numero pari di errori sullo stesso byte. Per
madre che portava, 9 integrati di memoria (per un totale di 64 kbytc, pili bit di parita). ;::'.1' ragioni sono apparse memorie con controllo ECC. Con questa tecnica occorrono
Per espandere la memoria occorreva aggiungere schede di espansione, IDontate sur ''''.' " PH] bit di controllo: 5 per proteggere un byte, sei per parole a 16 bit, sette per parole
bus eli sistema. Sulle piastre, gli integrati ,(nella tradizionale forma DIP, Dual In- 32 bit e otto per parole a 64 bit.
line Package) erano montati su zoccoli e occupavano ampie 5uperfici. A meno di .Nei mo?erni il controllo ECC viene effettuato dagli integrati di gestione
vent'anni, non c'e PC, fisso 0 portatile, che porti meno di 64 Mbyte, con possibilita. ...d.ella memona.. Ess) correggono automaticamente errori di un bit
18
senza fermare il
di espansione a blocchi di (almeno) 32 Mbyte. Sono spariti gli integrati in forma .. Alcum possono correggere anche errod multi-bit al volo 0, quando db non
DIP, sostituiti da moduli di espansione, piccoli circuiti stampati' con componenti a -:: ,e possono forzare il riavvio del sistema automaticamente, con 1a memoria
montaggio superficiale, I moduli di espansione seguono due formati: SIMM, DIMM ;n ':.:"';. <non vahda non mappata.
e.RIMM:. :;i -,: " a m.aggior ?ei moduli, illato negativo eche ECC comporta
:i ';(i, una perdIta dl prestazlODllUtorno al 3%. Generalmente, l'utllizzo dl memoria ECC e
. FI chipset correnti (per esempio, il i430TX e successivi) leggono la temporizzazione ottimale- >:::: <.' 18 ' . . .. .... .
direttamente dal modulo. -1t ,1,{ , . La quasI totahta. degh erron dl memona. 51 rnarufesta su di un bIt
.'?

1:S ..
98
,
\
I
I
I
I
I
\
I
I
I
I
I
3_8.4 Moduli commerciali
Capitolo 3
.
'<'

;(/!11I..., '.
.' , . ..
_._---------------------.:L.:a.:m=em=o.:rI.:a-"p.:r.:m::c:c
IP
::
al
::
e
=----=:9.:9
....." ..
.. ,.
.i
,_ ., "! .'"t,' .. ' .' ' ,
.:.., __'. - ,
. Le che hanno smerana so.no conosciute genericamente COn ... .. SIMM SIMM sta per Memory n SIM:M ?riginale
il nome dl SDRAM. Questa lllclude Ie vlste sopra, Ie RDRAM :?'3. .. a,veva un formate a 30 pledlDl, rna e stato succesSlvamente sostltUlto dal tlPO a 72
DRAM), (Enhanced SDRAM). E comunque stato definito uno standard. 'piedini'. Puo essere a singola 0 d?ppia fac.ci,a, con capacita di ,4, 8, 16, 32 0 anche
JEDEC di DRAM smcrona. .. ,':.. 64 Mbyte, parallelismo a 16 0 32 bit. Una tlplca scheda madre dl PC prevede quattro
, Una SDRAM ha sincrona controllata dal clock ,di sistema '::, connettori per SIMM. 5e.il bus PC ea 64 bi.t (da!. Pentium in poi) sono
e mclude anche un architettura dl tipO du.al-bank'e un bu.rst-mode (31 bit, 32 bit, .:..?J :;:;;'v . '-,', 'chiesti come ffiImmo due moduh a 32 bit della stessa dlmenslOne.
a 4 bit, a 8 bit e a pagina completa). Un registro puo inoltre essere impostato n
all'accensione del sistema e modificato durante il funzionamento per programmare Ie 0:' ..i') > . d I' DIMM (D 1I /. M M d 1 ) h . . . SIMM
dalit
di b t ( .al . t I . t ) I I h d 1b lid "jl '.' .,.... D1MM I mo u 1 ua n- me emory 0 u e anno sostltmto 1 ,
mo a urs SeqUenzl eo III er aCCla 0 , a ung ezza e urst e a atenza el '" (0'..>:,:'. d d I" d t' d' PC E . h 168' dini' d' . d til
CAS. ... ,.: divenendo.lo stan per 1ll us. . SSl anno su ue e
. . . . , . . .. , .'. di contattl. 11 magglOr numero di pIedllll permette un parallehsmo a 64 bIt. Dunque
SDRAM ha presentato molh ,probleITll compatlblhta. I pnml ".. I' essi possono essere utilizzati singolarmente ed etipico che un PC moderno fornisca solo
avevano due fu:1ee di cl?ck, rna. e stato venficato c,he .erana 'i...? una 0 due allpggiamenti di tipo DllvIM. Attualmente 10 standard erappresentato dai
conducendo alI0 sviluppo: moduh a 4 clock. Alire dlfficolta SI sono ;\)J, moduli DIMM da 3,3 volt (compatibili con memorie di tipo SDRAM, BEDO, EDO e
avute aJ chIpset contenentl 1 contro.lIon '. . .. ,,oS! j": 'FPM DRAM); una ch,ave suI connettore (una sagomatura) consente il poslZlonamento
Le SDRAM sono valutate ufficlalmente In MHz PlUttosto che In nSf m modo che "'::.. ' . ocabile.
ci sia un comune tra la velocita dell'integrato e la velodta. del
I moduli originali SDRAM impieganti integrati da 83 MHz (12ns), sono stati usati ',,: :.. ' . . . .
che operano affidabilmente fino a 83 MHz. QUestl moduli SDRAM sono ora chiamati .... RlMM (il nome eun marchlO del consorZlO Rambus). I moduli RIMM utihzzano la
PC66, per differenziarli da quelli che si conformano alla specmca Fe100 di InteL . ,.'1' stessa del DIMM da MJ:Iz standard. L'idea ecbe il BIOS
,_, ..,,debpa essere III grado dl determmare quale tipO di RAM emontato (attraverso gli
': ';) degli integrati di gestione dei bus), in modo da rendere utilizzabili i moduli
SDRAM PCIOO, PC133 Quando il maggior costruttore di microprocessori ha "\1 ,:j\":";';-:"SIMM con SDRAM da 100 MHz in un sistema RlMM-compatible.
portato iI bus di sistema a 100 MHz, la maggior parte dei moduli SDRAM disponibili :'i\il .. ,
in quel momento non poteva funzionare correttamente a quella frequenza. Intel ha ", " ; . .
allora definito la speci.fica PC100, come una direttiv.. ai produttori per la costruzione :C.. .. Controllo dl errore
di modulI progettatI per lavorare correttamente can II propno chIpset 1440BX. ... ,.",
Nel .risposta molti di di. n contrallo di parita ela forma tradizionale del controllo di
hanno deoso di rilasclare disPOSltIVl m grada dl gestIre uno standard PlU veloce, 11 .. panta viene valutata suI singolo byte e do richiede un bit ulteriore a byte
PCl33, evoluzione del precedente. . veda l' Appendice A). In caso di errore viene normalmente generata un'interruzione
il eli interrompere l'attivita
-;:;!,' Y';"/';""::'-:':"m corso, eVltando qUalSlasi potenziale alterazlOne del datI.
"Ji ',':. i',t,.- '.
:; .
't:;I. ::,:< .-: C - Error Checking Code n contrallo di parita non consente di identificare i
n primo Personal Computer prodotto dall'IBM (1981) era costruito su una piastra .. errati e non e10 gra 0 1 n evare un numero pari di errori sullo stesso byte. Per
madre che portava, 9 integrati di memoria (per un totale di 64 kbytc, pili bit di parita). ;::'.1' ragioni sono apparse memorie con controllo ECC. Con questa tecnica occorrono
Per espandere la memoria occorreva aggiungere schede di espansione, IDontate sur ''''.' " PH] bit di controllo: 5 per proteggere un byte, sei per parole a 16 bit, sette per parole
bus eli sistema. Sulle piastre, gli integrati ,(nella tradizionale forma DIP, Dual In- 32 bit e otto per parole a 64 bit.
line Package) erano montati su zoccoli e occupavano ampie 5uperfici. A meno di .Nei mo?erni il controllo ECC viene effettuato dagli integrati di gestione
vent'anni, non c'e PC, fisso 0 portatile, che porti meno di 64 Mbyte, con possibilita. ...d.ella memona.. Ess) correggono automaticamente errori di un bit
18
senza fermare il
di espansione a blocchi di (almeno) 32 Mbyte. Sono spariti gli integrati in forma .. Alcum possono correggere anche errod multi-bit al volo 0, quando db non
DIP, sostituiti da moduli di espansione, piccoli circuiti stampati' con componenti a -:: ,e possono forzare il riavvio del sistema automaticamente, con 1a memoria
montaggio superficiale, I moduli di espansione seguono due formati: SIMM, DIMM ;n ':.:"';. <non vahda non mappata.
e.RIMM:. :;i -,: " a m.aggior ?ei moduli, illato negativo eche ECC comporta
:i ';(i, una perdIta dl prestazlODllUtorno al 3%. Generalmente, l'utllizzo dl memoria ECC e
. FI chipset correnti (per esempio, il i430TX e successivi) leggono la temporizzazione ottimale- >:::: <.' 18 ' . . .. .... .
direttamente dal modulo. -1t ,1,{ , . La quasI totahta. degh erron dl memona. 51 rnarufesta su di un bIt
.'?

1:S ..
98
,
\
I
I
I
I
I
\
I
I
I
I
I
]
\
]
)
I
I
I
I
)
I
I
I
1

4
-
3,9 Esercizi
limitato aile cosiddette applicazioni critiche ed equindi pili facile trovarlo su macchine ':::4 ./..'.> ".
seruer piuttosto che sui normali sistemi da tavolo 0 portatili. ....
. ..' .
:!l ':\::. II sottosistema di ingresso/uscita
. ',,""
,';:','
..,', ....... ,,'
' ,<"", ..,'" .' ":. ,
Esercizio 3.1 Si dispone dei seguenti integrati byte-wide (8 bit in uscita): 1 '.:-
128 kbyte, 3 da 64 kbyte, un numero illimitato da 32 kbyte, Progettare una memoria :,'1
da 512 kbyte per usa can 8086, sistemata a partire dall'indirizzo O. Si disegni 10':),. <,X,',.,,' ..
schema dei collegamenti compresala rete di decodifica degli indJrizzi. ,,;j .'. -:,,' .. .
.,;. .
Esercizio 3.2 Si dispone dei seguenti integrati DRAM (uscita 1 bit), 2 da 64 kbyte,''( .,:.:...,:';;>...... . . " ,
3 da 32 kbyte, 6 da 16 kbyte un numero illimitato da 8 kbyte. Progettare una memoria \'''?."f,!JI: sbttoslStema dl mgresso/uSClta (I/O, da Input/Output) e la parte attraverso la
da 64kbyte per uso con 8088, sistemata a partire dall'indirizzo esadecimale 10000. Si '::.':.;:,;':;:))fqilale,Sl. tra il e il esterno. Fauna parte
disegni 10 schema dei collegamenti compresa la rete di decodifica degli indirizzi. " 1 attraverso I uomo comUIDca can (video
" ',.::.;;,' .:!i' .. ecc')l c?rne quelli che servono alia memOnzzazlOne a breve e
Esercizio 3.3 Si disp?ne dei seguenti integrati byte-wide: 1 d,a 128 kbyte, 5 da .. temp? dell'mforma:zlOne a disco, nastri magnetici La complessita
64kbyte, un numera ilhmitato da 32 kbyte. Progettare una memOria da 640kbyte dl mgresso/usClta vana molta a seconda delle carattenstiche architetturali
usc can 8086, sistemata a partire dall'indirizzo O. Si discuta l'aumenta di .. Nei grossi e calcolatori, it sottosistema di I/O puo
che deriverebbe dali'avere un indirizzo di parteoza alIa posizione 1000 esadecimale. ;.. :;i speclabzzate nella gestlOne dei periferici, parzialmente integrate con
Esercizio 3.4 Si deve costruire un banco eli memoria da 512 kbyte per una 'questo capitolo I'interesse erivolto ai problemi di scambio delle informazioni
a 32 bit, che genera indirizzi sulle linee A31-A2. Per indirizzare i singoli byte di '.::,) dei periferici. Vengono discussi i componenti essenziali delle interfacce e
una veng?llo. 4 linee e n di di, g,estione ?elle di ingresso/uacita: a controllo di programma,
deve esadeclffiale AOGOOO. SI dIspone dl mtegrati byte-wIde '!::;':, dt mte!rUZIOne e. In In ci ai sofferma nell'illustrare it
seguentl e quantIta: .. . .. , ' ..'{;' I attenzlOne sulle sole interruzioni esterne (queUe
128kbyte, 1 mtegrato; 64kbyte: 3 IOtegrall; 32kbyte, quantlt" ilhmltata. .' ..,;" .,:,,::[}dpnteresse nello studlO del sottoslstema di I/O),
8i Bono e di quale (e la soluzione",:.\ U' c?ncretezza si fa ricorso'al repertorio di istruzioni 8086/8088 e a1
cbe 31 d1segm 10 schema del collegamentl compresa la hn?Uagg10 anche quando si discutono soluzioni diverse rispetto a
rete di decodlfica degli lOdmzzL previste da tale archltettura.
::-.:,.:"." --,'
.t." '", '. ..,.....
Esercizio 3.5 Si dispone di questi integrati, tutti in formato byte-wide: un integrato..;! .''-
da 1 Mbyte; due da 512 kbyte; un numero a piacere di integrati ,","::;,:A;,'t. Elementi di ba d 1 tt 0 t d'
Dlsegnare 10 schema dl una memoria dl 4Mbyte per una CPU 486. L mdmzzo dl ;;'.. , '''':'',;. O' , ' 0 se e SO OSlS ema 1
partenza deve corrispondere a quello del secondo blocco di 4 Mbyte nella spazio degli.,::e '.';(;:::"';:;'''::,.' mgresso/ Usc1ta
indirizzi fisici.
.. eriportato 10 schema architetturale di riferimento per la discussione
. nel. capitolo. Esso mostra che ogni dispositivo di I/O ecolle-
.. : .. al bus d1. un'interfaccia. L'interfaccia Bvolge la funzione di
:,:; ..... sla; .elettnco. ala l?f?lCO tra Ie unita periferiche e il calcolatore. .
rma, diSPOSItIvO procede alia propria velocita e in modo asincrono
;.:j.::;,p,spetto CPU. Vmterfaccia cleve quindi: '
,'" "', "" ',",_... .
.:' ,. ,:-,--,.. '. '... . '
eventuali possa.no essere appoggiati i dati nel trasferimento
, a. a umta penfenca e Vlceversa'
',r" "',"",,,'-,.' ,
.. ;,-:.. ',;-,:,-,;".;-".; .
presentare eventuali registri di appoggio dei c0Yr!anru alla periferica.
. ,
" .. ... , .
100 Capitolo 3
]
\
]
)
I
I
I
I
)
I
I
I
1

4
-
3,9 Esercizi
limitato aile cosiddette applicazioni critiche ed equindi pili facile trovarlo su macchine ':::4 ./..'.> ".
seruer piuttosto che sui normali sistemi da tavolo 0 portatili. ....
. ..' .
:!l ':\::. II sottosistema di ingresso/uscita
. ',,""
,';:','
..,', ....... ,,'
' ,<"", ..,'" .' ":. ,
Esercizio 3.1 Si dispone dei seguenti integrati byte-wide (8 bit in uscita): 1 '.:-
128 kbyte, 3 da 64 kbyte, un numero illimitato da 32 kbyte, Progettare una memoria :,'1
da 512 kbyte per usa can 8086, sistemata a partire dall'indirizzo O. Si disegni 10':),. <,X,',.,,' ..
schema dei collegamenti compresala rete di decodifica degli indJrizzi. ,,;j .'. -:,,' .. .
.,;. .
Esercizio 3.2 Si dispone dei seguenti integrati DRAM (uscita 1 bit), 2 da 64 kbyte,''( .,:.:...,:';;>...... . . " ,
3 da 32 kbyte, 6 da 16 kbyte un numero illimitato da 8 kbyte. Progettare una memoria \'''?."f,!JI: sbttoslStema dl mgresso/uSClta (I/O, da Input/Output) e la parte attraverso la
da 64kbyte per uso con 8088, sistemata a partire dall'indirizzo esadecimale 10000. Si '::.':.;:,;':;:))fqilale,Sl. tra il e il esterno. Fauna parte
disegni 10 schema dei collegamenti compresa la rete di decodifica degli indirizzi. " 1 attraverso I uomo comUIDca can (video
" ',.::.;;,' .:!i' .. ecc')l c?rne quelli che servono alia memOnzzazlOne a breve e
Esercizio 3.3 Si disp?ne dei seguenti integrati byte-wide: 1 d,a 128 kbyte, 5 da .. temp? dell'mforma:zlOne a disco, nastri magnetici La complessita
64kbyte, un numera ilhmitato da 32 kbyte. Progettare una memOria da 640kbyte dl mgresso/usClta vana molta a seconda delle carattenstiche architetturali
usc can 8086, sistemata a partire dall'indirizzo O. Si discuta l'aumenta di .. Nei grossi e calcolatori, it sottosistema di I/O puo
che deriverebbe dali'avere un indirizzo di parteoza alIa posizione 1000 esadecimale. ;.. :;i speclabzzate nella gestlOne dei periferici, parzialmente integrate con
Esercizio 3.4 Si deve costruire un banco eli memoria da 512 kbyte per una 'questo capitolo I'interesse erivolto ai problemi di scambio delle informazioni
a 32 bit, che genera indirizzi sulle linee A31-A2. Per indirizzare i singoli byte di '.::,) dei periferici. Vengono discussi i componenti essenziali delle interfacce e
una veng?llo. 4 linee e n di di, g,estione ?elle di ingresso/uacita: a controllo di programma,
deve esadeclffiale AOGOOO. SI dIspone dl mtegrati byte-wIde '!::;':, dt mte!rUZIOne e. In In ci ai sofferma nell'illustrare it
seguentl e quantIta: .. . .. , ' ..'{;' I attenzlOne sulle sole interruzioni esterne (queUe
128kbyte, 1 mtegrato; 64kbyte: 3 IOtegrall; 32kbyte, quantlt" ilhmltata. .' ..,;" .,:,,::[}dpnteresse nello studlO del sottoslstema di I/O),
8i Bono e di quale (e la soluzione",:.\ U' c?ncretezza si fa ricorso'al repertorio di istruzioni 8086/8088 e a1
cbe 31 d1segm 10 schema del collegamentl compresa la hn?Uagg10 anche quando si discutono soluzioni diverse rispetto a
rete di decodlfica degli lOdmzzL previste da tale archltettura.
::-.:,.:"." --,'
.t." '", '. ..,.....
Esercizio 3.5 Si dispone di questi integrati, tutti in formato byte-wide: un integrato..;! .''-
da 1 Mbyte; due da 512 kbyte; un numero a piacere di integrati ,","::;,:A;,'t. Elementi di ba d 1 tt 0 t d'
Dlsegnare 10 schema dl una memoria dl 4Mbyte per una CPU 486. L mdmzzo dl ;;'.. , '''':'',;. O' , ' 0 se e SO OSlS ema 1
partenza deve corrispondere a quello del secondo blocco di 4 Mbyte nella spazio degli.,::e '.';(;:::"';:;'''::,.' mgresso/ Usc1ta
indirizzi fisici.
.. eriportato 10 schema architetturale di riferimento per la discussione
. nel. capitolo. Esso mostra che ogni dispositivo di I/O ecolle-
.. : .. al bus d1. un'interfaccia. L'interfaccia Bvolge la funzione di
:,:; ..... sla; .elettnco. ala l?f?lCO tra Ie unita periferiche e il calcolatore. .
rma, diSPOSItIvO procede alia propria velocita e in modo asincrono
;.:j.::;,p,spetto CPU. Vmterfaccia cleve quindi: '
,'" "', "" ',",_... .
.:' ,. ,:-,--,.. '. '... . '
eventuali possa.no essere appoggiati i dati nel trasferimento
, a. a umta penfenca e Vlceversa'
',r" "',"",,,'-,.' ,
.. ;,-:.. ',;-,:,-,;".;-".; .
presentare eventuali registri di appoggio dei c0Yr!anru alla periferica.
. ,
" .. ... , .
100 Capitolo 3
..
M.%Tl.Crl ....

Int.ertacce
r
DEC,
M
-
c.

,.
A'"
L
c'
DEC,
f-
L.::1
</0
-
c.
-
A
AO-A1S
'OK
'OK

o
</0
\
nm:RFACCIA
L
"'"
I I I I I I I:
.
""
I I I I.
"" I
;


!
,


BUS
CPU
UNITA'
lHttJI'ACC1A
"' </.
UlIIT....
"""",=
m
V.
'ti!'t.,.. .
'-"1 ' .. ".r:.':' .
." 'J, ' ,', ...".
"
102 Capitolo 4 > n sottosistema di ingressofuscita. 103
- },;!;;t.. ,.
'/";' .::
" iI<,",.f.'."
" -'ii' , ,
\ ...."'"
".,t, '.ro-v,'",,,-, .
. traccia stato della peruerica e delle eventuali condizioni di linea A
1
5 per tra spazio, di e spazio di I/O. Ovviamente in
Zlonamento 0 dl errore, cODsentendone 10. lettura. " 81 percle r:neta delle SpazlO dl memoria. In viene presentata
", ,una che sacnfica solo 64 K. A patto di complicare 10. decodifica e
posSlbIle portare a una dimenslOne accettabile 10 spazio di I/O.
-.'flf., . .;, .
..,"'
. "'1' '\',,:,.,
-.
,. 'i4 ..,. :,.-,:.
,'<'Y.- ',".
.. ..
'.
CISPosrnvo .: 1" ',,;;':'.;-i""
" '/0 '\1 '.I,'Io,J;. ,.,." .. I L 4.0
" ",'" 1 r
'-"'; ...hl'"
oOil 1".\-, .." , ,
, , ' '. I, ., '.
',.V. l"";i"l';) ",
.. ' ,
';'," I Memoria
.";
.,,( n ..
1i" ' 1,;,,,,'.' .
'./ii;Jr
,'II)) ",..., ._
,,\";.. .. ,.
.
,;.{.:! /"" .,,'.,
";;'.,."' ...
a) SChema ell l'ifmmUllo b) ElemenU IODdt.malllt.U dl Ilfla l"t..I.I. ".' .. :: "
. .......' .:'
Figura 4.1 Schema convenzionale dell'architettura a singolo bus e della. struttura di una-.: ,::: ) M pe.turc.
. terlacci -'Jij '<'1{"J .,'''. ,1_8', .. p b) Oecodific8 indiri:>::>::>:1
genenca. 10 a. " , ,
':J' 4.2 d: lD memona. degli indirizzi Iii I/O, Lo schema di destra
, ',ti! ' Le ,llsclte del decodificatore DEC M vanno intese come i Chi
., . , ' .. . . Select degh mtegratl dl memOria' conseguentemente il di r "P
ra 0Wdtl sonG stati concettualizzatl nello schema dl Flgura4.1b,;"fY- ,L' a questa decodificatore dipende dalla dim . d li 1 lD.ee tn tngresso
d G G d
'. ,.. ch j 1 f "':U' ',ri,;.r:'i':'" enslOne eg lDtegratl' e nmanentl linee del bus
, ' . e . enotano 1 e svo gono e, portate direttamente agli integrati eli memoria:
Zlom del tre puntl precedentl. Come sara. chlanto pm avant1, non edetto che aJ ,
blocchi dello schema corrispondano degli effettivi registri fisici suU'interfaccia.
quanto riguarda SREG e CREG, spesso pochi bit sono sufficienti a tener traccia dello/
stato e del comando; per questa talvolta si parla di pseudo-registri. Nella I.
Icorrente .S?esso il Porta di I/O. . .. "', . . _
. I eli, lettl 0 SCIIttl. A tale scopo basta .. isolato, I.n caso la.macchina presenta. un uumero di istru-
Clare a ClasC:m reglSt.ro un mdlIlzzo, .lD del tuttO- anal?go a . d'\I, aile dl , La 10:0 eSeCUZ1?ne da luogo a cieli
con Ie celle di .queste nchiedono la ': .tutto a quelh. eli e. scnttura ill con la differenza
per 130 dl I/O nchiedon.o decodifica: assente due spec1fiche lInee di comando che mdlcheremo come lOWe
te 10 SpazlOdegli mdinzz, <Ii I/O deve essere disglUnto da queUo degli mdmZZl di
i
,.;; 0 teCommand) e lORe (I/O Read Command).
memona. CI sono due fondamentall orgawzzauorn: v""" Per del DUcro 8086 funzionante in modo minimo, rowe e TA.........
. .' . creatI,daJ pledml MjR>. RD e WR secondo 10 schema di Figura4.3a. Quando
a) mgressojusc1ta mappato ill memona (memory mapped I/O), 1>',,1 ...l1 micro 8086 e configurato in modo cia funzionare . d " '.
, tt / . ill mo 0 mas5lDlo 1 comandl di
' I e ura scnttura esceno dal componente di a 0 . 8288 (F' b'
b) mgresso/usclta lSolato (I/O mapped 1/0). ,:'fI, 0 pp ggw Igura4.3 .

,... .'
'''It _,,,<I,""
'-.'J'T;',,'
Ingressojuscita mappato in memoria Le architetture che prevedono degli indirizzi Le porte che compo t f .
/
. . . d' <Ii . o. d d' t P I I tt '. "", es . d' 0 ngono m er ""cIa devono pater
sd
o
, memorjla non ch IStfrUZlODl:
r
e, lca teO a e u,ra::t desCOerdeifiln .. tale scopo. sull'interfaccia deve essere prevista una sezione di
el fegIStn Sl usano e stesse IS rUZ10nl e anno ruenmen 0 cw3 memona',I,l '.:;\.;";., :" ca eg 1 mdlflzzi. In Figura4 4 eriportato . d' d d'fi d' .
I
J' ch li . t""-":' .: . d" . . un esemplo I eco 1 ca 1 comandl
Questa tecnica venne usata nel PDP 11 DIg78 , il calcolatore e neg aIlm settan In lflZZI per una interfaccia avente due porte di I tt dill'
impose l'architettura a bus di Figura 4.1a. La tecnica, abbandonata successivamente '...:' 130 decodifica dell'indirizzo di base efissa Acc e
d
ue, I' scntdt.ural Questo
. . . 8 16 b' ., diffu' , . tall hi RlSC i "0'" I comand
O
d' I . opplan 0 e mee I se eZlOne con
nel a e .pIU 51, t: ntorn.ata.at u . e COD e ne - I 1 ettura e scrittura. si generano i cemanill per Ie singole porte
l
.
E comunque sempre posslblle mappare 10 SpazlO dl I/O ill memona, 51 SUPPQngal !1i, ,:;E,\; :': .,:
per esempio, eli avere una CPU COD 16 !inee eli indirizzo A15 Ao, alIe quali corrisponde,:,7 ::;;::-;::-==-:77-::::--,---
uno spazio di memoria di 64 k locazioni. Potremmo 5tabilire la convenzione di riservare.'};; not! che spazio di I/O risulta come composto da due spa.z:i sovrapposti queUo d 11
i 32k pili alti della spazio degli indirizzi ai registri di I/O, in modo da usare la ,ura e que 0 delle pOrte di scrittura, . . e e porte
,
'ii:' :;
,:, ",?
j
I
,
I
I
I
I
I
l
,
..
M.%Tl.Crl ....

Int.ertacce
r
DEC,
M
-
c.

,.
A'"
L
c'
DEC,
f-
L.::1
</0
-
c.
-
A
AO-A1S
'OK
'OK

o
</0
\
nm:RFACCIA
L
"'"
I I I I I I I:
.
""
I I I I.
"" I
;


!
,


BUS
CPU
UNITA'
lHttJI'ACC1A
"' </.
UlIIT....
"""",=
m
V.
'ti!'t.,.. .
'-"1 ' .. ".r:.':' .
." 'J, ' ,', ...".
"
102 Capitolo 4 > n sottosistema di ingressofuscita. 103
- },;!;;t.. ,.
'/";' .::
" iI<,",.f.'."
" -'ii' , ,
\ ...."'"
".,t, '.ro-v,'",,,-, .
. traccia stato della peruerica e delle eventuali condizioni di linea A
1
5 per tra spazio, di e spazio di I/O. Ovviamente in
Zlonamento 0 dl errore, cODsentendone 10. lettura. " 81 percle r:neta delle SpazlO dl memoria. In viene presentata
", ,una che sacnfica solo 64 K. A patto di complicare 10. decodifica e
posSlbIle portare a una dimenslOne accettabile 10 spazio di I/O.
-.'flf., . .;, .
..,"'
. "'1' '\',,:,.,
-.
,. 'i4 ..,. :,.-,:.
,'<'Y.- ',".
.. ..
'.
CISPosrnvo .: 1" ',,;;':'.;-i""
" '/0 '\1 '.I,'Io,J;. ,.,." .. I L 4.0
" ",'" 1 r
'-"'; ...hl'"
oOil 1".\-, .." , ,
, , ' '. I, ., '.
',.V. l"";i"l';) ",
.. ' ,
';'," I Memoria
.";
.,,( n ..
1i" ' 1,;,,,,'.' .
'./ii;Jr
,'II)) ",..., ._
,,\";.. .. ,.
.
,;.{.:! /"" .,,'.,
";;'.,."' ...
a) SChema ell l'ifmmUllo b) ElemenU IODdt.malllt.U dl Ilfla l"t..I.I. ".' .. :: "
. .......' .:'
Figura 4.1 Schema convenzionale dell'architettura a singolo bus e della. struttura di una-.: ,::: ) M pe.turc.
. terlacci -'Jij '<'1{"J .,'''. ,1_8', .. p b) Oecodific8 indiri:>::>::>:1
genenca. 10 a. " , ,
':J' 4.2 d: lD memona. degli indirizzi Iii I/O, Lo schema di destra
, ',ti! ' Le ,llsclte del decodificatore DEC M vanno intese come i Chi
., . , ' .. . . Select degh mtegratl dl memOria' conseguentemente il di r "P
ra 0Wdtl sonG stati concettualizzatl nello schema dl Flgura4.1b,;"fY- ,L' a questa decodificatore dipende dalla dim . d li 1 lD.ee tn tngresso
d G G d
'. ,.. ch j 1 f "':U' ',ri,;.r:'i':'" enslOne eg lDtegratl' e nmanentl linee del bus
, ' . e . enotano 1 e svo gono e, portate direttamente agli integrati eli memoria:
Zlom del tre puntl precedentl. Come sara. chlanto pm avant1, non edetto che aJ ,
blocchi dello schema corrispondano degli effettivi registri fisici suU'interfaccia.
quanto riguarda SREG e CREG, spesso pochi bit sono sufficienti a tener traccia dello/
stato e del comando; per questa talvolta si parla di pseudo-registri. Nella I.
Icorrente .S?esso il Porta di I/O. . .. "', . . _
. I eli, lettl 0 SCIIttl. A tale scopo basta .. isolato, I.n caso la.macchina presenta. un uumero di istru-
Clare a ClasC:m reglSt.ro un mdlIlzzo, .lD del tuttO- anal?go a . d'\I, aile dl , La 10:0 eSeCUZ1?ne da luogo a cieli
con Ie celle di .queste nchiedono la ': .tutto a quelh. eli e. scnttura ill con la differenza
per 130 dl I/O nchiedon.o decodifica: assente due spec1fiche lInee di comando che mdlcheremo come lOWe
te 10 SpazlOdegli mdinzz, <Ii I/O deve essere disglUnto da queUo degli mdmZZl di
i
,.;; 0 teCommand) e lORe (I/O Read Command).
memona. CI sono due fondamentall orgawzzauorn: v""" Per del DUcro 8086 funzionante in modo minimo, rowe e TA.........
. .' . creatI,daJ pledml MjR>. RD e WR secondo 10 schema di Figura4.3a. Quando
a) mgressojusc1ta mappato ill memona (memory mapped I/O), 1>',,1 ...l1 micro 8086 e configurato in modo cia funzionare . d " '.
, tt / . ill mo 0 mas5lDlo 1 comandl di
' I e ura scnttura esceno dal componente di a 0 . 8288 (F' b'
b) mgresso/usclta lSolato (I/O mapped 1/0). ,:'fI, 0 pp ggw Igura4.3 .

,... .'
'''It _,,,<I,""
'-.'J'T;',,'
Ingressojuscita mappato in memoria Le architetture che prevedono degli indirizzi Le porte che compo t f .
/
. . . d' <Ii . o. d d' t P I I tt '. "", es . d' 0 ngono m er ""cIa devono pater
sd
o
, memorjla non ch IStfrUZlODl:
r
e, lca teO a e u,ra::t desCOerdeifiln .. tale scopo. sull'interfaccia deve essere prevista una sezione di
el fegIStn Sl usano e stesse IS rUZ10nl e anno ruenmen 0 cw3 memona',I,l '.:;\.;";., :" ca eg 1 mdlflzzi. In Figura4 4 eriportato . d' d d'fi d' .
I
J' ch li . t""-":' .: . d" . . un esemplo I eco 1 ca 1 comandl
Questa tecnica venne usata nel PDP 11 DIg78 , il calcolatore e neg aIlm settan In lflZZI per una interfaccia avente due porte di I tt dill'
impose l'architettura a bus di Figura 4.1a. La tecnica, abbandonata successivamente '...:' 130 decodifica dell'indirizzo di base efissa Acc e
d
ue, I' scntdt.ural Questo
. . . 8 16 b' ., diffu' , . tall hi RlSC i "0'" I comand
O
d' I . opplan 0 e mee I se eZlOne con
nel a e .pIU 51, t: ntorn.ata.at u . e COD e ne - I 1 ettura e scrittura. si generano i cemanill per Ie singole porte
l
.
E comunque sempre posslblle mappare 10 SpazlO dl I/O ill memona, 51 SUPPQngal !1i, ,:;E,\; :': .,:
per esempio, eli avere una CPU COD 16 !inee eli indirizzo A15 Ao, alIe quali corrisponde,:,7 ::;;::-;::-==-:77-::::--,---
uno spazio di memoria di 64 k locazioni. Potremmo 5tabilire la convenzione di riservare.'};; not! che spazio di I/O risulta come composto da due spa.z:i sovrapposti queUo d 11
i 32k pili alti della spazio degli indirizzi ai registri di I/O, in modo da usare la ,ura e que 0 delle pOrte di scrittura, . . e e porte
,
'ii:' :;
,:, ",?
j
I
,
I
I
I
I
I
l
,
)
I
I
I
I
I
j
I
I
I
I
I
I
)
v
... "'_IMXI

I .
'0
00
-
..
..
:=
7<,

.11/ _
DO
v.1 I..

v
I-<L
_e
poJ\Tw'A
poR'fAe
"e
,.

'.

'.
'. '.
" :J '.
"1 "
'. '.
" "
'. "
" "
..
,,' ...

",
j:::
. '.
.. ,
'.
"
... ..
P SII:L

ow
... "'"

Vaa.
..... . ,..
',.'
..

!"il'j..
,',
""., .
:::in:::gr,,-=osso::..:.!../_usc::..:i_ta __l_O-,S ,
.'.
"
.
' .
'. ",.'",.,,"': " .
, .. ' -, .
N: .,t..-I" . "
I,'P'_ .-,. , ..' " " ,',
'"
-j.' "
.::
,.
"..: "",.
..
, , """',.-
.
.1 i .. ',. _.
!;,:,'J,,(. .r.'.'.... ' .
.. " ;.;, .. . lli
',"".',\''''''\.l ,. "'. " 0
.....0,,1,.."',.,;",.,.;..". '.
,_
.' I ......,. ,
...... . ::::j
.". ",'" ,.. '-', ',.. . .
. ,'. -'-__
1''''"'1 '., A"
." '. . ,
li"(!"7 , .,.
,.'" .. . _"
..r,"'':'\....' :.:";'" ', ....
, .... ' '.' ,.
__ :.,,:,, , > I
.....
....,. "" ..... ' ,
,.! 1,;, .'.
,.',' .,' . 10
&empi di tecniche di decodifica degli indirizzi. Con la soluzione cU sinistra, a
IgUl'8. . 00 A 1 . II dis' ., e<T-l-T
onticello inserito Vlene decodificato un III con r = ; a 0 0
isultare a.sserito solo Se Ar = O. La rete eli destra COnse.nte di unpostare a plocere 4
' " , ...... puo r '" I ,. d . tt' d . I d difi d II
aa dec.o.dificare. Nel caso speci.nco a POSIZ10ne el conta 1 etermma a eco ca e a
-Ao_a = 1010.
.. ..(;.'.;::\_ "
l.,,;,;.'" .),'\'"'.".'_ '.
"
1.. ',:: ".' . .'"
' '\ .", '".' -r ,." 'j.
","""'"" .. . '
.'. . '.
I
c",J:j' .,,0 " . ' ..
'..
p ..\ :.": .
." '
-...'" .
'ttl; . !.\:.,. .'
;-.
1.,.lI
j
' , 'I.
.", .
'''XJ..'''''';'
,'. ,,:
"jf..;,\.(jlj,.i".. ,".-.. )11 ,
,"" "
'. ",:Jr,.'-;'i'''. 'J-..
o . I ,"".....w......" '
. .
.;:-,. ....
';', '.'
,. ,.,.. 'i _' ,
: una porta di ingresso e di una porta di usci'a attraverso com-
stan'<iard. ncomponente 74xx244 contiene 8 buffer con uscite in terzo stata, abilitate
.a.lla volta) i. due OE. !4xx374 cont.iene.8 flip-Hop D, can uscita in
stato. II dlSpoSltlvO memOrlzza gli mgressl sul ronte d.i salita. del clock.
r.
della velocit" di esecuzione delle istruzioni di una CPU. looltre essi proce-
autonomo e quindi si rende necessaria introdurre qualche meccanismo
smcronizzazione.
,., .
.. 'Le teciiiche fondamentali per 1a gestione dei periferici sana:
::. ,," .", '
di programma;
'. , .. "
"., .... . . .
dl mterrUZlOne;
diretto alla memoria (DMA) 0 Con processori di I/O,
,. <t., ...... ,. .
,. "':. ',. ..;; " ,
'partecbe segue ededicata all'approfondimento delle diverse tecnicbe.
b) Modo M ........ l:rno
p on
7.1..-'530
-..
.0
",E;LO
PO.
J
-
)

p,w
V
J
-
p, R
10l<C
-
iOOW
lowe
.,

'0

..
_) Modo Mtnir=o
>.1/10
r+=D
iOnC


'M/':'
,
B"e
[)-'=
(1:I't'/..,
""",e
lOWe
-
(DEN)
MRC

so r
I
MWe
."t.,.,.
,'q,'
,
Porte Nella sua forma piu semplice una porta di ingresso richiede solo dei
con uscita in terzo stato. Nel momenta in cui viene eseguita l'istruzione di letturt,
della porta, l'uscita viene abilitata e quindi presentata sul bu.s dei dati, rendendal!;'
disponibile alIa CPU. Una porta di uscita richiede dei latch per memorizzare il da4b-'t,
rendendolo dispopibile alia pernerica da! momento in cui viene eseguita la
fino alia prossima. In Figura4.6 viene dato 10 schema di una porta di
una di uscita. "

. '.
,,It,

Modalita di delle operazioni di ingresso/uScita Le semplici
facce di Figura4.6 non esplicitano alcun accorgimento per 1a sincronizzazione tra
gramma in esecuzione e periferiche collegate. I periferici sono normalmente piu len-W"
.' ' .":;l
.,'
. c

Figura 4.4 Esempio di decodifica degli indirizzi per una interfaccia che presenta due

di ingresso e due di uscita. La linea SEL rappresenta lluscita del decodificatore


di base assegnato all'interfaccia (per semplicita. si suppone che l'indirizzo sia dato su soli:S!'
bit). Si noti che la linea SEL risulta asserita in presenza delPindirizzo F2H e
F3H. Ao serve a discriminare 1a porta all'indirizzo relativo 0 da quella aU'indirizzo
1
';'\1!'
.
, '.-.-.
'-"',
Figura 4.3 Costruzione dei comandi di lettura e scrittura in memoria e in I/O per la
8086. Nella configurazione di modo minima, 13 CPU presenta tre piedini denominati M/IO};
RD e WR; nella configurazione di modo massimo 1a CPU presenta sui piedini SOl Sl
. "..
13 codifica del cicio di macchina in corso di esecuzione. E richiesto il componente 8288 .
generare i comandi verso l'esterno, di cui quelli riportati in figura sono un sottoinsieme. :-t
'..

'''.,
104 Capitolo 4
I
)
I
I
I
I
I
j
I
I
I
I
I
I
)
v
... "'_IMXI

I .
'0

00
-
..
..
:=
7<,

.11/ _

DO
v.1 I..

v
I-<L
_e
poJ\Tw'A
poR'fAe
"e
,.

'.

'.
'. '.
" :J '.
"1 "
'. '.
" "
'. "
" "
..
,,' ...

",
j:::
. '.
.. ,
'.
"
... ..
P SII:L

ow
... "'"

Vaa.
..... . ,..
',.'
..

!"il'j..
,',
""., .
:::in:::gr,,-=osso::..:.!../_usc::..:i_ta __l_O-,S ,
.'.
"
.
' .
'. ",.'",.,,"': " .
, .. ' -, .
N: .,t..-I" . "
I,'P'_ .-,. , ..' " " ,',
'"
-j.' "
.::
,.
"..: "",.
..
, , """',.-
.
.1 i .. ',. _.
!;,:,'J,,(. .r.'.'.... ' .
.. " ;.;, .. . lli
',"".',\''''''\.l ,. "'. " 0
.....0,,1,.."',.,;",.,.;..". '.
,_
.' I ......,. ,
...... . ::::j
.". ",'" ,.. '-', ',.. . .
. ,'. -'-__
1''''"'1 '., A"
." '. . ,
li"(!"7 , .,.
,.'" .. . _"
..r,"'':'\....' :.:";'" ', ....
, .... ' '.' ,.
__ :.,,:,, , > I
.....
....,. "" ..... ' ,
,.! 1,;, .'.
,.',' .,' . 10
&empi di tecniche di decodifica degli indirizzi. Con la soluzione cU sinistra, a
IgUl'8. . 00 A 1 . II dis' ., e<T-l-T
onticello inserito Vlene decodificato un III con r = ; a 0 0
isultare a.sserito solo Se Ar = O. La rete eli destra COnse.nte di unpostare a plocere 4
' " , ...... puo r '" I ,. d . tt' d . I d difi d II
aa dec.o.dificare. Nel caso speci.nco a POSIZ10ne el conta 1 etermma a eco ca e a
-Ao_a = 1010.
.. ..(;.'.;::\_ "
l.,,;,;.'" .),'\'"'.".'_ '.
"
1.. ',:: ".' . .'"
' '\ .", '".' -r ,." 'j.
","""'"" .. . '
.'. . '.
I
c",J:j' .,,0 " . ' ..
'..
p ..\ :.": .
." '
-...'" .
'ttl; . !.\:.,. .'
;-.
1.,.lI
j
' , 'I.
.", .
'''XJ..'''''';'
,'. ,,:
"jf..;,\.(jlj,.i".. ,".-.. )11 ,
,"" "
'. ",:Jr,.'-;'i'''. 'J-..
o . I ,"".....w......" '
. .
.;:-,. ....
';', '.'
,. ,.,.. 'i _' ,
: una porta di ingresso e di una porta di usci'a attraverso com-
stan'<iard. ncomponente 74xx244 contiene 8 buffer con uscite in terzo stata, abilitate
.a.lla volta) i. due OE. !4xx374 cont.iene.8 flip-Hop D, can uscita in
stato. II dlSpoSltlvO memOrlzza gli mgressl sul ronte d.i salita. del clock.
r.
della velocit" di esecuzione delle istruzioni di una CPU. looltre essi proce-
autonomo e quindi si rende necessaria introdurre qualche meccanismo
smcronizzazione.
,., .
.. 'Le teciiiche fondamentali per 1a gestione dei periferici sana:
::. ,," .", '
di programma;
'. , .. "
"., .... . . .
dl mterrUZlOne;
diretto alla memoria (DMA) 0 Con processori di I/O,
,. <t., ...... ,. .
,. "':. ',. ..;; " ,
'partecbe segue ededicata all'approfondimento delle diverse tecnicbe.
b) Modo M ........ l:rno
p on
7.1..-'530
-..
.0
",E;LO
PO.
J
-
)

p,w
V
J
-
p, R
10l<C
-
iOOW
lowe
.,

'0

..
_) Modo Mtnir=o
>.1/10
r+=D
iOnC


'M/':'
,
B"e
[)-'=
(1:I't'/..,
""",e
lOWe
-
(DEN)
MRC

so r
I
MWe
."t.,.,.
,'q,'
,
Porte Nella sua forma piu semplice una porta di ingresso richiede solo dei
con uscita in terzo stato. Nel momenta in cui viene eseguita l'istruzione di letturt,
della porta, l'uscita viene abilitata e quindi presentata sul bu.s dei dati, rendendal!;'
disponibile alIa CPU. Una porta di uscita richiede dei latch per memorizzare il da4b-'t,
rendendolo dispopibile alia pernerica da! momento in cui viene eseguita la
fino alia prossima. In Figura4.6 viene dato 10 schema di una porta di
una di uscita. "

. '.
,,It,

Modalita di delle operazioni di ingresso/uScita Le semplici
facce di Figura4.6 non esplicitano alcun accorgimento per 1a sincronizzazione tra
gramma in esecuzione e periferiche collegate. I periferici sono normalmente piu len-W"
.' ' .":;l
.,'
. c

Figura 4.4 Esempio di decodifica degli indirizzi per una interfaccia che presenta due

di ingresso e due di uscita. La linea SEL rappresenta lluscita del decodificatore


di base assegnato all'interfaccia (per semplicita. si suppone che l'indirizzo sia dato su soli:S!'
bit). Si noti che la linea SEL risulta asserita in presenza delPindirizzo F2H e
F3H. Ao serve a discriminare 1a porta all'indirizzo relativo 0 da quella aU'indirizzo
1
';'\1!'
.
, '.-.-.
'-"',
Figura 4.3 Costruzione dei comandi di lettura e scrittura in memoria e in I/O per la
8086. Nella configurazione di modo minima, 13 CPU presenta tre piedini denominati M/IO};
RD e WR; nella configurazione di modo massimo 1a CPU presenta sui piedini SOl Sl
. "..
13 codifica del cicio di macchina in corso di esecuzione. E richiesto il componente 8288 .
generare i comandi verso l'esterno, di cui quelli riportati in figura sono un sottoinsieme. :-t
'..

'''.,
104 Capitolo 4
I

101
assume
indirizzo di BUFFER
; OS:SI
. ex <- n ,
II sottosistema di ingresso/uscita
AL,PORT
AL,l
ATTESA
STAMPA:
MOV AL, lSI]
OUT PORT,AL
ATTESA:
IN AL,PORT
AND AL,l
JNZ ATTESA
. prelevare e trasmettere il prossimo carattere.
,
".' concludere e tornare al chiamante;
Tenuta canto delle precedenti osservazionl, il sottoprograrnma STAMPA
questa forma finale
4
:
Terminata I'attesa, enecessario conteggiare il carattere trasmesso e
J
a seconda
del fatto che Questo sia 0 non sia Pultimo:
2Si assume doe che J'a.rea di memoria contenga una sequenza di caratteri alfanumerici stampabili.
3Si ricordi che si e stabilito di utilizza.re la notazione Assembler 8086. Per questo motivQ gli
indirizzi di memoria. vengano dati come scoatamento entro un segmento.
4Nel iinguaggio Assembler 8086 l'istruzione LOOP ba. l'effetto <Ii decrementare iI registro ex e di
saltare se il risultato ediverse da zero.
LJ
LJ
NTROU.O
BUS INOIRIZZI
20
--

BUS DATI
B
DB'
lOR<: IOWC
UNEE 01 CO

,
.....
, ,
B
SEL
'"'"
DREG
'An
--"
..
t:[J-?RTR '"'
,-
, ,
STATO
"'.
'M
OAe
Ca.pitolo 4
4.2.1 II sottoprogramma di gestione
Si supponga eli dover costruire un sottoprogramma, che chia.meremo STAMPA, che effet-
tui la stampa del contenuto eli una generica area di memoria, trasferendo direttamente
"

.". i singoli byte alia stampante
2
.
:..:.zo .,.", ': '.' Indicando con BUFFER la prima posizione delParea di memoria contenente il mes-
,} '. - -, , ,
Per fissare Ie idee si faccia riferimento aJ caso di un'operazione di uscita, consistente },). saggio da stampare e con n nurnero di caratteri che costituiscono il messaggio, si
nel trasferimento'di un bloceo di dati verso un dispositivo come una stampante. :-0",-,' stabilisce che il sottoprogramma STAMPAvenga cbiamato secondo questa convenzione
3
:
Si supponga che 130 stampante accetti caratteri di 8 bit e che richieda un segnale t.-, MOV 51 <oUset BUFFER>
impulsivo come indicazione della disponibilita di un nuovo carattere al suo ingresso. ';11'i MOV CX' <n>
Si faccia anche 1
J
ipotesi che la stampante risponda
J
a carattere stampato, sempre can .'. CALL STAMPA
un segnale impulsivo. Si indichino con DAVe DAC i due segnali in questione. -,,',," .
Vinterfaccia dovra. prevedere almeno una porta (registro) dati di uscita come 'Si stabilisce inoltre che STAMPA etIettui per intero il trasferimento degli n ca-
quella eli Figura4.6. Davra. anche presentare un indicatore dello state della stam- .",; ratteri e restituisca il controllo all'istruzione successiva a quelia eli chiamata solo a
pante, che dica se questa ein condizione eli accettare un altro carattere a se e ne- :': , ' trasferimen.to cone.luso.. . .
cessario aspettare the si concluda 1a -stampa del carattere precedente. A tale scopo n prehevo e 11 trasfenmento dl un 81.Qgola carattere richiede questa semplice
basta prevedere un flip-flop, il cui stato rifietta quello della periferica. Tale flip-flop ." sequenza di istruzioni:
indicato come SFF in 7. La state di 8FF viene letto nel bit meno significativo .X: '.: :_.' MOV AL. [SI]
(DBo) dello pseudoregLStro dl stato. :0', . OUT PORT AL
Possiamo stabilire la convenzione secondo cui
l
10 stato 0 del flip-flop indica che la, :, .:. " \. ,
periferica epronta a ricevere un altro date, mentre 10 state 1 indica che la periferica e , Do've con PORT si eindicato l'indirizzo a.ssegnato aIJlioterfaccia.. Come gia. osserva.to
occupata. Dunque, 1a t5AC delia stampante dovra. riportare SFF aD, mentre ;". _ :" Pistruzione OUT copia i1 contenuto di AL in DREG dell'interfaccia, fa passare SFF
il. eli stampa V dovra. .a 1.. Ne 10 schema di ": ::.. .1 .il alia. stampante.. .. . .
51 notl che l'esecuzlOne di un'operazlOne dl scnttura copla 10 stato del bus dati In .:?', .,:.:- . La trasIWSslOoe degli D caratten nchiede 1'1terazlODe delle due precedenti istru-
DREG, genera il DAVe porta a 1 SFF. La risposta della stampante porta q. 0 SFF. "zioni:in un del? che mantenga 81 aggiornato in modo da puntare al prossimo carattere
da stampare. E pero necessario sincronizzare l'esecuzione del programma con Patti-
, , vita del periferico, A tal fine basta introdurre un cicIo di attesa del cambiamento di
stato di SFF (conseguente alla risposta della sta.mpante):
_
l ATTESA: IN
.j,. AND
. JNZ
, --.
",<y, "
:y'.
.
,
, M'
J '.'
,,-'" .
, ..
I
",:'
'1[:
,. .
';i '

j,; .
..
O}'
:.1, .
". _ .',r.;
Figura 4.7 Esempio eli interfaccia di uscita. La linea SEL risulta asserita solo in presenza ..
dell'indirizzo assegnato a.ll'mterfaccia. II registro dati dell'interfaccia (DREG) e costituito. ':f:'
da un latch eli 8 bit, 1a cui uscita etenuta sempre abilita.ta.. c
'":'::3 .
I;; _
:'
--" c,::'
"

"
:"',.
r" .

. 4'

4.,:
,
':t" :


"
.'1\ , ...
4.2 Gestione a controllo di programma
106
\
I
I
I
\
I
I
I
,
I
1
I
I

101
assume
indirizzo di BUFFER
; OS:SI
. ex <- n ,
II sottosistema di ingresso/uscita
AL,PORT
AL,l
ATTESA
STAMPA:
MOV AL, lSI]
OUT PORT,AL
ATTESA:
IN AL,PORT
AND AL,l
JNZ ATTESA
. prelevare e trasmettere il prossimo carattere.
,
".' concludere e tornare al chiamante;
Tenuta canto delle precedenti osservazionl, il sottoprograrnma STAMPA
questa forma finale
4
:
Terminata I'attesa, enecessario conteggiare il carattere trasmesso e
J
a seconda
del fatto che Questo sia 0 non sia Pultimo:
2Si assume doe che J'a.rea di memoria contenga una sequenza di caratteri alfanumerici stampabili.
3Si ricordi che si e stabilito di utilizza.re la notazione Assembler 8086. Per questo motivQ gli
indirizzi di memoria. vengano dati come scoatamento entro un segmento.
4Nel iinguaggio Assembler 8086 l'istruzione LOOP ba. l'effetto <Ii decrementare iI registro ex e di
saltare se il risultato ediverse da zero.
LJ
LJ
NTROU.O
BUS INOIRIZZI
20
--

BUS DATI
B
DB'
lOR<: IOWC
UNEE 01 CO

,
.....
, ,
B
SEL
'"'"
DREG
'An
--"
..
t:[J-?RTR '"'
,-
, ,
STATO
"'.
'M
OAe
Ca.pitolo 4
4.2.1 II sottoprogramma di gestione
Si supponga eli dover costruire un sottoprogramma, che chia.meremo STAMPA, che effet-
tui la stampa del contenuto eli una generica area di memoria, trasferendo direttamente
"

.". i singoli byte alia stampante
2
.
:..:.zo .,.", ': '.' Indicando con BUFFER la prima posizione delParea di memoria contenente il mes-
,} '. - -, , ,
Per fissare Ie idee si faccia riferimento aJ caso di un'operazione di uscita, consistente },). saggio da stampare e con n nurnero di caratteri che costituiscono il messaggio, si
nel trasferimento'di un bloceo di dati verso un dispositivo come una stampante. :-0",-,' stabilisce che il sottoprogramma STAMPAvenga cbiamato secondo questa convenzione
3
:
Si supponga che 130 stampante accetti caratteri di 8 bit e che richieda un segnale t.-, MOV 51 <oUset BUFFER>
impulsivo come indicazione della disponibilita di un nuovo carattere al suo ingresso. ';11'i MOV CX' <n>
Si faccia anche 1
J
ipotesi che la stampante risponda
J
a carattere stampato, sempre can .'. CALL STAMPA
un segnale impulsivo. Si indichino con DAVe DAC i due segnali in questione. -,,',," .
Vinterfaccia dovra. prevedere almeno una porta (registro) dati di uscita come 'Si stabilisce inoltre che STAMPA etIettui per intero il trasferimento degli n ca-
quella eli Figura4.6. Davra. anche presentare un indicatore dello state della stam- .",; ratteri e restituisca il controllo all'istruzione successiva a quelia eli chiamata solo a
pante, che dica se questa ein condizione eli accettare un altro carattere a se e ne- :': , ' trasferimen.to cone.luso.. . .
cessario aspettare the si concluda 1a -stampa del carattere precedente. A tale scopo n prehevo e 11 trasfenmento dl un 81.Qgola carattere richiede questa semplice
basta prevedere un flip-flop, il cui stato rifietta quello della periferica. Tale flip-flop ." sequenza di istruzioni:
indicato come SFF in 7. La state di 8FF viene letto nel bit meno significativo .X: '.: :_.' MOV AL. [SI]
(DBo) dello pseudoregLStro dl stato. :0', . OUT PORT AL
Possiamo stabilire la convenzione secondo cui
l
10 stato 0 del flip-flop indica che la, :, .:. " \. ,
periferica epronta a ricevere un altro date, mentre 10 state 1 indica che la periferica e , Do've con PORT si eindicato l'indirizzo a.ssegnato aIJlioterfaccia.. Come gia. osserva.to
occupata. Dunque, 1a t5AC delia stampante dovra. riportare SFF aD, mentre ;". _ :" Pistruzione OUT copia i1 contenuto di AL in DREG dell'interfaccia, fa passare SFF
il. eli stampa V dovra. .a 1.. Ne 10 schema di ": ::.. .1 .il alia. stampante.. .. . .
51 notl che l'esecuzlOne di un'operazlOne dl scnttura copla 10 stato del bus dati In .:?', .,:.:- . La trasIWSslOoe degli D caratten nchiede 1'1terazlODe delle due precedenti istru-
DREG, genera il DAVe porta a 1 SFF. La risposta della stampante porta q. 0 SFF. "zioni:in un del? che mantenga 81 aggiornato in modo da puntare al prossimo carattere
da stampare. E pero necessario sincronizzare l'esecuzione del programma con Patti-
, , vita del periferico, A tal fine basta introdurre un cicIo di attesa del cambiamento di
stato di SFF (conseguente alla risposta della sta.mpante):
_
l ATTESA: IN
.j,. AND
. JNZ
, --.
",<y, "
:y'.
.
,
, M'
J '.'
,,-'" .
, ..
I
",:'
'1[:
,. .
';i '

j,; .
..
O}'
:.1, .
". _ .',r.;
Figura 4.7 Esempio eli interfaccia di uscita. La linea SEL risulta asserita solo in presenza ..
dell'indirizzo assegnato a.ll'mterfaccia. II registro dati dell'interfaccia (DREG) e costituito. ':f:'
da un latch eli 8 bit, 1a cui uscita etenuta sempre abilita.ta.. c
'":'::3 .
I;; _
:'
--" c,::'
"

"
:"',.
r" .

. 4'

4.,:
,
':t" :


"
.'1\ , ...
4.2 Gestione a controllo di programma
106
\
I
I
I
\
I
I
I
,
I
1
I
I
I
I
j
\
I
I
1
I
I
I
1
I
1
Tutto iI resto, e

,Iilll',lfflJl
,

ROUTINE /)1 SERVlZIO


/'
,.,=""
n sottosistema d.i ingresso/uscita 109
,
,
ROUTINE

f---,o'>,---<
STAVPA
ROU11Nl1
" S!RVl'lIO
; At <- comando Set/Reset
; CPORT: Indirizzo della porta di
; controlla dell'interfaccia
f---,o'>,---<

""""'''
"
SERVlZIO
AL,l/O
CPoRT,AL
f--->'>,---<
STAltPA
PROCRAliliA PROCfUJOlA PROCR.u.n.U.
PRINCII'ALE PRIIlCIPALE PRlNCIPAU:
"ULJLJ
MoV
OUT
CPU
,
fetch delI'istruzione alla 10cazione di indirizzo 0 can PC non modificato.
. sCio corrisponde aI minimo supporto possibiJe fornito dalia logica di controllo.
responsabiIita del programmatore.
.Prima di procedere si rende necessaria apportare alcune modifiche all'interfaccia di
'Figura4,7
1
in modo da fade generare 1a richiesta"Cli interruzione. A tale 'scopo puo
essere ancora usato il bit d.i stato SFF1collegando Q a INTR. nnuovo schema ein Fi-
gura4.9. Si noti che il comando PORTW ha lleffetto di disasserire INTR, mentre DAC
,. ha Peffetto opposto. L'interfaccia prevede 1a possibilita di mascherare (disabilltare)
1a :richiesta di interruzione del periferico tramite IENFF. IENFF viene comandato da
programma nel modo seguente:
, :La routine di servizio eassimilabile a una qualunque subroutine. Essa deve essere
.--eseguita in modo del tutto trasparente, rispetto al progr-arn,ma interrotto nel senso che,
al termine, il controllo deve tornare al punta in cuiil programma estato interrotto, con
tutte le variabili e gli indicatori di stato non modificati. A tale scopolIa parte iniziale
....
.
"",.';":,
SI
STAMPA
INC
LOOP
RET
Gestione sotto controllo di interruzione 4.3
':: , ': ", ;" ,," ,
":,s; . ," ..,_
'''-'"..,., ".,
. ',., , ,
":::E;1 : "';"""
'.';;;,;t '.: .: ,
: ::-, "::.
.,)11
1
,: .: ,;t ,.'; '..
.:,' ::,;'':--:: 'C.. ':' ,
Si osservi che il s,ottoprogramma STAMPA trasferisce il primo carattere senza verificare :_.';_:::,:\. ':',',
se la stampante e pronta 0 no. :,;,Bi ':,:;;':.:" .. "
Can questa metodo di trasferimento nessun1altra attivita viene svolta da1 pro:. ':<,;;1t ;,"
cessore, se non quella di osservare 10 stato della periferica; dunque il tempo di CPU "\'i:;' .. '.
etotalmente sprecato nell1attesa. " :, ':" a) Temporiz'la'lione delle altivita' bl E' ".
"::j,.N ': '; ;,.. ," '. "'. SeCU'llOne roullne dl serVl'lio
":-:"'..[ ""'. Figura 4.8 L mtenuZlOne esterna Sl ma.nifesta in mado asmero . tto -'1' .
.':,"if;. " N 1 . ". no nspe <:Ll esecuzlOne
'. ;:<11: 'r: ...: .,,'L : e :aso la !lchiesta V1ene servita al termine dell'istruzione i e
.... ' " pnma dell1struzlOne t + 1. La 10gIca di contrallo deve garant;>e l' t . td d II
'''';<! ". ',' , . . . 1 h . ... a omUt e a sequenza
:::;W) ., .. ".:" di 1OterrUZlOne ne sensa c e essa cleve avvemre per intero ment I chin d .
,':''-.<!'' .' . '. '". . . . I re a mac a eve trovars1
.:<.i]l <.','':'; , 10 uno stato certo, ncancablle alla fine della routine eli servizio
\. ..,:'''..l:..',' .
L'ingressofuscita a contrallo di programma appare ineffidente anche se misurato coL");ft ,: '<:.:' "'. "'" '''-_
metro della vita di tutti i giorni. Sarebbe come stare alIa finestra aspettando 1a visita :';.ii.m<-<'", :<,r .. d: II F 5 26 A . . .
d
. S all 1 II ' bj f al h I .-., ..... a a 19ura. . ssumlamo maItre we sul ramo d I .. d ll'
I un amlCo. e a casa manca I campane 0 e sempre POSSI I e are qu c e a :; :; >fl fl IE t. e servIZIO e rnterruzione il
d I
, .,. d aff II fi .. ", . .. . lp- op venga par ato m stato a (Cfr 5 11 4)
cosa urante attesa, rna ogm tanto t: necessano sospen ere'e aCClarSI a a ;''-', :' .. :."" I I I .' ' ...
d
]
'.' tt Ad d I fi t 1 d' :.... .. n cone USlOne can e precedentl asSunzlonl pe I t CPU il .
per ve ere se amiCO e so 0 casa. n are avantl e III Jetro tra a nes ra e 1 Ivana .:(,J,' c:',/, . .-' .d' ,.. t . l'.val a nos ra 1 nconoscimento
non rende certo piacevole 1a lettura del giornale; molto meglio contare suI ,'<.", .. _' 1',U.
n
m errUZlOne eqUl e a questa sequenza dl azloni:
5
e. sedersi pronti a 1a lettura allo squillo. Fuor di ::,<;:"',:.'.' .0<'.'... azzeramento di IE;
SI tratta di orgarnzzare Ie case rn modo che
1
una volta trasmesso un carattere Sla;:;.{ '.,">:
possibile can l'esecuzione del pr?gramma, mentre la stampante procede :::':, '.
conto propno. Quando la stampante sara pronta per accettare un nuovo carattere) ' '
dovra asserire una richiesta di interruzione, alla quale sara assodata 1a routine dL i:J '
servizio handler) responsabile di procedere a1 trasferimento " :.,
carattere succeSSIvo. . ,::',t;1! c"
La Figura.4.8a schematizza. il fatto che" mentre il dispositivo e.sterno
pante) prende II tempo necessano a trattare 11 carattere trasmessogh daWultlma ese:.::iifii '':::.:::.'
cuzione della routine di servizio
1
epossibile far procedere l'esecuzione di un :::,:-- .::',
rna (indicato come programma principale) che niente ha a che fare con la routine ", .. '
.. L'interruzione della periferica ha l'effetto di richiamare l'esecuzione
routme
. ;'.'
Si noti che con questa tecnica i deli di attesa risultano eliminati. Ovviamente, ';,;
trarre tutto il da fatto, enecessario che ci sia ..,..J.
un programma che Implega It tempo dl CPU per tutta la durata del trasfenmento ,..':',
. '..
blocco di caratteri. " :, , ' :
, .
Esempio di routine di servizio
'ilJ'
4A Esempio semplificato di sistema di ..
", ./
,."
,'r" '..
Per semplicita assumiamo che il sistema piloti un solo periferico (una stampante) e ':
. che vi sia una sola possibile richiesta di interruzione, portata in ingresso alIa CPU :.,:
sulla linea INTR. . ..;,j ..
Per quanto si riferisce al modo in cui la logica di macchina tratta Ie ;'," ,
assumiamo che essa operi secondo il modello descritto a1 prossimo capitola e .
108 Capitolo 4
I
I
j
\
I
I
1
I
I
I
1
I
1
Tutto iI resto, e

,Iilll',lfflJl
,

ROUTINE /)1 SERVlZIO


/'
,.,=""
n sottosistema d.i ingresso/uscita 109
,
,
ROUTINE

f---,o'>,---<
STAVPA
ROU11Nl1
" S!RVl'lIO
; At <- comando Set/Reset
; CPORT: Indirizzo della porta di
; controlla dell'interfaccia
f---,o'>,---<

""""'''
"
SERVlZIO
AL,l/O
CPoRT,AL
f--->'>,---<
STAltPA
PROCRAliliA PROCfUJOlA PROCR.u.n.U.
PRINCII'ALE PRIIlCIPALE PRlNCIPAU:
"ULJLJ
MoV
OUT
CPU
,
fetch delI'istruzione alla 10cazione di indirizzo 0 can PC non modificato.
. sCio corrisponde aI minimo supporto possibiJe fornito dalia logica di controllo.
responsabiIita del programmatore.
.Prima di procedere si rende necessaria apportare alcune modifiche all'interfaccia di
'Figura4,7
1
in modo da fade generare 1a richiesta"Cli interruzione. A tale 'scopo puo
essere ancora usato il bit d.i stato SFF1collegando Q a INTR. nnuovo schema ein Fi-
gura4.9. Si noti che il comando PORTW ha lleffetto di disasserire INTR, mentre DAC
,. ha Peffetto opposto. L'interfaccia prevede 1a possibilita di mascherare (disabilltare)
1a :richiesta di interruzione del periferico tramite IENFF. IENFF viene comandato da
programma nel modo seguente:
, :La routine di servizio eassimilabile a una qualunque subroutine. Essa deve essere
.--eseguita in modo del tutto trasparente, rispetto al progr-arn,ma interrotto nel senso che,
al termine, il controllo deve tornare al punta in cuiil programma estato interrotto, con
tutte le variabili e gli indicatori di stato non modificati. A tale scopolIa parte iniziale
....
.
"",.';":,
SI
STAMPA
INC
LOOP
RET
Gestione sotto controllo di interruzione 4.3
':: , ': ", ;" ,," ,
":,s; . ," ..,_
'''-'"..,., ".,
. ',., , ,
":::E;1 : "';"""
'.';;;,;t '.: .: ,
: ::-, "::.
.,)11
1
,: .: ,;t ,.'; '..
.:,' ::,;'':--:: 'C.. ':' ,
Si osservi che il s,ottoprogramma STAMPA trasferisce il primo carattere senza verificare :_.';_:::,:\. ':',',
se la stampante e pronta 0 no. :,;,Bi ':,:;;':.:" .. "
Can questa metodo di trasferimento nessun1altra attivita viene svolta da1 pro:. ':<,;;1t ;,"
cessore, se non quella di osservare 10 stato della periferica; dunque il tempo di CPU "\'i:;' .. '.
etotalmente sprecato nell1attesa. " :, ':" a) Temporiz'la'lione delle altivita' bl E' ".
"::j,.N ': '; ;,.. ," '. "'. SeCU'llOne roullne dl serVl'lio
":-:"'..[ ""'. Figura 4.8 L mtenuZlOne esterna Sl ma.nifesta in mado asmero . tto -'1' .
.':,"if;. " N 1 . ". no nspe <:Ll esecuzlOne
'. ;:<11: 'r: ...: .,,'L : e :aso la !lchiesta V1ene servita al termine dell'istruzione i e
.... ' " pnma dell1struzlOne t + 1. La 10gIca di contrallo deve garant;>e l' t . td d II
'''';<! ". ',' , . . . 1 h . ... a omUt e a sequenza
:::;W) ., .. ".:" di 1OterrUZlOne ne sensa c e essa cleve avvemre per intero ment I chin d .
,':''-.<!'' .' . '. '". . . . I re a mac a eve trovars1
.:<.i]l <.','':'; , 10 uno stato certo, ncancablle alla fine della routine eli servizio
\. ..,:'''..l:..',' .
L'ingressofuscita a contrallo di programma appare ineffidente anche se misurato coL");ft ,: '<:.:' "'. "'" '''-_
metro della vita di tutti i giorni. Sarebbe come stare alIa finestra aspettando 1a visita :';.ii.m<-<'", :<,r .. d: II F 5 26 A . . .
d
. S all 1 II ' bj f al h I .-., ..... a a 19ura. . ssumlamo maItre we sul ramo d I .. d ll'
I un amlCo. e a casa manca I campane 0 e sempre POSSI I e are qu c e a :; :; >fl fl IE t. e servIZIO e rnterruzione il
d I
, .,. d aff II fi .. ", . .. . lp- op venga par ato m stato a (Cfr 5 11 4)
cosa urante attesa, rna ogm tanto t: necessano sospen ere'e aCClarSI a a ;''-', :' .. :."" I I I .' ' ...
d
]
'.' tt Ad d I fi t 1 d' :.... .. n cone USlOne can e precedentl asSunzlonl pe I t CPU il .
per ve ere se amiCO e so 0 casa. n are avantl e III Jetro tra a nes ra e 1 Ivana .:(,J,' c:',/, . .-' .d' ,.. t . l'.val a nos ra 1 nconoscimento
non rende certo piacevole 1a lettura del giornale; molto meglio contare suI ,'<.", .. _' 1',U.
n
m errUZlOne eqUl e a questa sequenza dl azloni:
5
e. sedersi pronti a 1a lettura allo squillo. Fuor di ::,<;:"',:.'.' .0<'.'... azzeramento di IE;
SI tratta di orgarnzzare Ie case rn modo che
1
una volta trasmesso un carattere Sla;:;.{ '.,">:
possibile can l'esecuzione del pr?gramma, mentre la stampante procede :::':, '.
conto propno. Quando la stampante sara pronta per accettare un nuovo carattere) ' '
dovra asserire una richiesta di interruzione, alla quale sara assodata 1a routine dL i:J '
servizio handler) responsabile di procedere a1 trasferimento " :.,
carattere succeSSIvo. . ,::',t;1! c"
La Figura.4.8a schematizza. il fatto che" mentre il dispositivo e.sterno
pante) prende II tempo necessano a trattare 11 carattere trasmessogh daWultlma ese:.::iifii '':::.:::.'
cuzione della routine di servizio
1
epossibile far procedere l'esecuzione di un :::,:-- .::',
rna (indicato come programma principale) che niente ha a che fare con la routine ", .. '
.. L'interruzione della periferica ha l'effetto di richiamare l'esecuzione
routme
. ;'.'
Si noti che con questa tecnica i deli di attesa risultano eliminati. Ovviamente, ';,;
trarre tutto il da fatto, enecessario che ci sia ..,..J.
un programma che Implega It tempo dl CPU per tutta la durata del trasfenmento ,..':',
. '..
blocco di caratteri. " :, , ' :
, .
Esempio di routine di servizio
'ilJ'
4A Esempio semplificato di sistema di ..
", ./
,."
,'r" '..
Per semplicita assumiamo che il sistema piloti un solo periferico (una stampante) e ':
. che vi sia una sola possibile richiesta di interruzione, portata in ingresso alIa CPU :.,:
sulla linea INTR. . ..;,j ..
Per quanto si riferisce al modo in cui la logica di macchina tratta Ie ;'," ,
assumiamo che essa operi secondo il modello descritto a1 prossimo capitola e .
108 Capitolo 4
; Driver occupato!
; Salvataggio indirizzo
; ",.e contatore
OAC l.....f
0.0.11
DAV l.....f
---
BUS 041'1

"
, ,
, ""
''''''
01'"
..I
IOWC
lORe
PORTIl: ..
,-
, ,
.J.. STATO
'"
0'
e-
,"' , ,
lENrr

CPOR'!'W
,
illTR
Capitola 4
1
__ , '
i
" .-".', '-
'.,
Il sottosistema di ,'ngresso!usc,'to 111

nJ-" """,,_,'!",.:.;'.,;"! -,,'
','! ," ..
,!.,nJ.. I.:'!l'/""-
,.!,<,!'.l'.." 'c''', , ,
"'. ,. ,.,... ,y..... :':\ ..
-
-, " ".'
.. "
'ritornO da sottoprogramma per il fatto di eseguire in modo indivisibile Ie seguenti
:
ripristino del Program Counter originale;
- -
iiabilitazione del flip-flop IE della CPU,
.. , .. ,- .", ... ,', .. ,.,- c- ,"- ;
'.",,',. """,' .
,'", "./". ':'" ,,' "
. .,
del servizio dell'interruzione Vogliamo ora illustrare una
tecnica di gestione del trasferimento satta controllo di interruzione. Chia-
il della rou.tine eli servizio, a cic deputato.
. ;:,::f.- dnver puo essere VIsto come composto d;i due partI:
Figura 4.9 Interfaccia di uscita modificata con l'aggiunta della richiesta di interruzione, :)$f! .
)a:sezione di inizializzazione (del trasferimento eli un blocco di caratteri)j
''' ... '_.' '
della routine cleve provvedere a salvare il contenuto di tutti i registri cli macchina che"k;, di servizio dell'interruzione,
possono essere modificati dalla sua esecuzione, in modo da poterlo ripristinare prima
dell'uscita, ""':': .. La. routine di servizio all'i.nterruzione .viene in modo del tutto traspa-
La prima e fondamentale cosa da salvare eil contenuto del Program Counter. nspetto al lD quanto Vlne attlvata daI meccanismo di risposta
Nelle ipotesi minime descritte al paragrafo precedente, il risultato del descritto, E chiaro che a ogni attivazione la routine dovra caricare
cimento della richiesta di interruzione e l'esecuzione dell'istruzione contenuta del dato e il contatore dei caratteri. A tale scopo
Iocazione di memoria 0, rna con PC non modifieato, Per salvare il PC basta che':X essere prevlste due vanablh, Ie quali devono essere inizializzate all'avvio di
il programmatore abbia posta nella locazione 0 di chiamata (CALL) ',\U;AF,Lh.,pn,
routine di servizio. Uesecuzione dell'istruzione in posizione 0 determina dunque: .. !'qiche ro.utine esegue. in mod? trasparente rispetto al programma,
. , " ,. , e dl se II trasfenmento In e concluso 0 no. Per ovviare a questa
II salvatagglO nello stack del valore del PC (ovvero dell mdlnzzo a CUI tornare at, stablhamo la seguente convenZlOne.
termine della routine di servizio)j ". ittE;W!it:,);-;;:.:--- Si definisce una variabile globale, BUSY, modificata solo all'interno del driver
il alt all t
' ill .. ":,;%:,,' da .altri prograrnmi
6
, Quando vale 0
,
BUSY indica che non ein corso
s 0 a rou me serVlZlO, .',!-, f' t 'I dr" 'j'
ras enmen 0 e lIver puo accettare 1 prosslffio comando' quando ediversa da a
Eotrando nella. routine di servizio mentre il sistema di interruzione risulta indica che in corso un trasferimento e i1 driver non essere chiamato. )
bilitato il PC estate salvato sullo dall'esecuzione dell'istruzione di chiamata/}; I pro?,ramnll vedranno solo 103. routine di inizializzazione, Aquesta daremo aneora
La routine deve compiere Ie seguenti funzioni: "" dl STAMPA e manterrerno 103. precedente convenzione di chiamata7:
",,:.co':':__ A,,,:'" .
I, Salvare i registri e altre eventuali informazioni che potrebbero essere .,' MOV S1, <offset BUFFER> ; DS: S1 = indirizzo BUFFER
,, t:',.". ",:'" MOV ex <n> ex <
dall'esecuzione della routine stessaj prima di tutto conviene salvare la parola di",g: CALL STAMPA ; - n
stato del processore (PSW)...", ...".,:,::
':\,.-.,.", 0'
2. Trasferire il prossirno dato. Sezione di inizializzazione C 1 d t' . . . .
,'.: . on e prece en 1 assunzlOUl e cOnVenZlOGl nsulta
,,' "'-'1'1".;""',,' ;.' agevole eostruire 103. se . d' . , 'Ii '
3. Disasserire 103. richiesta di interruzlone. " ZlOne 1 illlzla zzazlOne:
4, Ripristinare i registri e Ie altre informazioni di stato salvate 03.1 punta I) in ': STAMPA: MOV BUSY, 1
che, ritornando al programma interrotto, tutto avvenga come se niente MOV 1ND, 51
accaduto. f:' .. :(, " MOV CONI, CX

5. Ritornare al programma al punta in cui estate interrotto, '":. -,.____ '.
. . ,. . ::"1 ,;",' :':': al 10 stato vanabJie BUSY, se sviluppati come moduli separati rispetto
Per quanto riguarda iI punto 5, assumeremo che la macchina possleda 1IstruzlOue:.:" TSi n t' ch t chlararla varlabile esterna,
lRET (Return-from-Inte1TUpt), Questa istruzione ai distingue dalla normale prati;a: dl presuppone c?e i1 soia o,":ero che BUSY valga O.
,,"<\.;;,.".';,"':' e e uare a c larData e necessano venficare I1 nspetto dl questa condizione.
"
110
j
I
I
I
I
,
I
I
I
I
I
.
, )
I
; Driver occupato!
; Salvataggio indirizzo
; ",.e contatore
OAC l.....f
0.0.11
DAV l.....f
---
BUS 041'1

"
, ,
, ""
''''''
01'"
..I
IOWC
lORe
PORTIl: ..
,-
, ,
.J.. STATO
'"
0'
e-
,"' , ,
lENrr

CPOR'!'W
,
illTR
Capitola 4
1
__ , '
i
" .-".', '-
'.,
Il sottosistema di ,'ngresso!usc,'to 111

nJ-" """,,_,'!",.:.;'.,;"! -,,'
','! ," ..
,!.,nJ.. I.:'!l'/""-
,.!,<,!'.l'.." 'c''', , ,
"'. ,. ,.,... ,y..... :':\ ..
-
-, " ".'
.. "
'ritornO da sottoprogramma per il fatto di eseguire in modo indivisibile Ie seguenti
:
ripristino del Program Counter originale;
- -
iiabilitazione del flip-flop IE della CPU,
.. , .. ,- .", ... ,', .. ,.,- c- ,"- ;
'.",,',. """,' .
,'", "./". ':'" ,,' "
. .,
del servizio dell'interruzione Vogliamo ora illustrare una
tecnica di gestione del trasferimento satta controllo di interruzione. Chia-
il della rou.tine eli servizio, a cic deputato.
. ;:,::f.- dnver puo essere VIsto come composto d;i due partI:
Figura 4.9 Interfaccia di uscita modificata con l'aggiunta della richiesta di interruzione, :)$f! .
)a:sezione di inizializzazione (del trasferimento eli un blocco di caratteri)j
''' ... '_.' '
della routine cleve provvedere a salvare il contenuto di tutti i registri cli macchina che"k;, di servizio dell'interruzione,
possono essere modificati dalla sua esecuzione, in modo da poterlo ripristinare prima
dell'uscita, ""':': .. La. routine di servizio all'i.nterruzione .viene in modo del tutto traspa-
La prima e fondamentale cosa da salvare eil contenuto del Program Counter. nspetto al lD quanto Vlne attlvata daI meccanismo di risposta
Nelle ipotesi minime descritte al paragrafo precedente, il risultato del descritto, E chiaro che a ogni attivazione la routine dovra caricare
cimento della richiesta di interruzione e l'esecuzione dell'istruzione contenuta del dato e il contatore dei caratteri. A tale scopo
Iocazione di memoria 0, rna con PC non modifieato, Per salvare il PC basta che':X essere prevlste due vanablh, Ie quali devono essere inizializzate all'avvio di
il programmatore abbia posta nella locazione 0 di chiamata (CALL) ',\U;AF,Lh.,pn,
routine di servizio. Uesecuzione dell'istruzione in posizione 0 determina dunque: .. !'qiche ro.utine esegue. in mod? trasparente rispetto al programma,
. , " ,. , e dl se II trasfenmento In e concluso 0 no. Per ovviare a questa
II salvatagglO nello stack del valore del PC (ovvero dell mdlnzzo a CUI tornare at, stablhamo la seguente convenZlOne.
termine della routine di servizio)j ". ittE;W!it:,);-;;:.:--- Si definisce una variabile globale, BUSY, modificata solo all'interno del driver
il alt all t
' ill .. ":,;%:,,' da .altri prograrnmi
6
, Quando vale 0
,
BUSY indica che non ein corso
s 0 a rou me serVlZlO, .',!-, f' t 'I dr" 'j'
ras enmen 0 e lIver puo accettare 1 prosslffio comando' quando ediversa da a
Eotrando nella. routine di servizio mentre il sistema di interruzione risulta indica che in corso un trasferimento e i1 driver non essere chiamato. )
bilitato il PC estate salvato sullo dall'esecuzione dell'istruzione di chiamata/}; I pro?,ramnll vedranno solo 103. routine di inizializzazione, Aquesta daremo aneora
La routine deve compiere Ie seguenti funzioni: "" dl STAMPA e manterrerno 103. precedente convenzione di chiamata7:
",,:.co':':__ A,,,:'" .
I, Salvare i registri e altre eventuali informazioni che potrebbero essere .,' MOV S1, <offset BUFFER> ; DS: S1 = indirizzo BUFFER
,, t:',.". ",:'" MOV ex <n> ex <
dall'esecuzione della routine stessaj prima di tutto conviene salvare la parola di",g: CALL STAMPA ; - n
stato del processore (PSW)...", ...".,:,::
':\,.-.,.", 0'
2. Trasferire il prossirno dato. Sezione di inizializzazione C 1 d t' . . . .
,'.: . on e prece en 1 assunzlOUl e cOnVenZlOGl nsulta
,,' "'-'1'1".;""',,' ;.' agevole eostruire 103. se . d' . , 'Ii '
3. Disasserire 103. richiesta di interruzlone. " ZlOne 1 illlzla zzazlOne:
4, Ripristinare i registri e Ie altre informazioni di stato salvate 03.1 punta I) in ': STAMPA: MOV BUSY, 1
che, ritornando al programma interrotto, tutto avvenga come se niente MOV 1ND, 51
accaduto. f:' .. :(, " MOV CONI, CX

5. Ritornare al programma al punta in cui estate interrotto, '":. -,.____ '.
. . ,. . ::"1 ,;",' :':': al 10 stato vanabJie BUSY, se sviluppati come moduli separati rispetto
Per quanto riguarda iI punto 5, assumeremo che la macchina possleda 1IstruzlOue:.:" TSi n t' ch t chlararla varlabile esterna,
lRET (Return-from-Inte1TUpt), Questa istruzione ai distingue dalla normale prati;a: dl presuppone c?e i1 soia o,":ero che BUSY valga O.
,,"<\.;;,.".';,"':' e e uare a c larData e necessano venficare I1 nspetto dl questa condizione.
"
110
j
I
I
I
I
,
I
I
I
I
I
.
, )
I
.......
)
)
I
)
,
I
I
,
I
I
j
I
I
I
I
I
prOSSl.mo
interfaccia
puntatore e
aggiornati
NMI
[NTR
;. NO! 51 prende i1
; Salvataggio
i .. contatore
; Ri-
; --pr1-
----sti-
, ------no ,
; Al punto di interruzione
; Tutti trasmessi
Driver libero 1
; Disabilita intr
CPU
s Q
IE
R
cu
STI
AL, lSI]
PORT,AL
IND,SI
CONT,CX
SI
CX
AX
PSW
BUSY,O
AL,O
CPORT,AL
ESCI
IlNTR
MOV
OUT
MOV
MOV
POP
POP
POP
POP
IRET
MOV
MOV
OUT
JMP
FINE:
, ESCI:
.. .. ,.
I ..
-. , ..
/' ."........, '
"j
r;:;.
-
,.1... ,'"1' ..
.-.. ".,. \:", ..
112 Ca.pitola 4 ,',
n sottosistema d.i ingresso/uscita 113
\,",: "
..
,.. .. ..
MOV AL, [SI] ; AL <- primo carattere
-" ,',"
OUT PORT l AL j Trasmissione carattere ..Y;.
MOV AL ,1 i Abilitaz. dell' interfaccia"", ?<,J, '::,,'
-' L"
OUT CPORT AL ; .. , a generare :\,<;.::::\" ..
RET . Ritorno al chiamante ..
, . '\;\i ;'. ... '
.. f':1:11o il carlice e ehe partisse dallo
dlsabllitazlone della generazlOne delle mterrUZlOIU (IENFF m stato 0). \:....
".,.. '.
;'0."1 -- " .'.,
'J"l ,''0' "
:':di .}/ .. ',.,.',
, ',," ':,. '". "
Routine di servizio dell'interruzione Come abbiamo gill esposto in precedenza/ :-':
la routine di servizio della interruzione inizia can Ie istruzioni di salvataggio nello" fr' I .... ".
stack dei registri utilizzati dalla routine e della parol a di state del processore
8
; _.J/Ii: ..
- ", .<;" - - "','
1NTSTAMP: PUSH PSW ; Salvataggio PSW
'!:'"' . , "',-- ," ,',
PUSH AX . Salvataggio dei ::"', "...'.;,,"",.;-.;'::,.".:...., .
, ..... ...... ,, '.
PUSH ex ; ". tre registri
PUSH SI ; " ... usati in INTSTAMP 4 2 L . t "
.. e In errUZlonl non mascherabili
.' ."'., -., _,."-'1" .. ' ... '.
A questa punto c'e da conteggiare it carattere trasmesso e prelevare il prossimo. .
tal fine si cleve recuperare il cantenuto di IND e CONT e aggiornarli. IE (Ofr,5.11.4) serve ad abiiitarefdisabiltare il sistem d" t .
. la richiesta INTR. a 1 In erruzlOne,
MOV SI,1ND ; S!<-Offset prOSS1mo . QuasI tutti i calcolatori prevedono, tuttavia un' . . .
INC S1 ; Puntamento al prossimo (NMI in Figura4.10) ja quale' I a hne.a di mten-uZione non ma-
OV A
.'I ,J, ... , . Q ,Vlene sempre nlevata ne] caso . "
M CX.C NT ; CX<-restant1 + 1 :... uesto tipo di interruzione si . t"fi' m Cill Sla
DEC CX j Conteggio ":<? .:; neUe situazioni di emergenza t',pg,lc
US
1 cat cjon fatto. che ,essa puc essere
'" ,.1., "" h' . . . , amen e a ClMJuta dl tensIO e S I
. . . .. .. '" "",'" c; e eqwpaggtata con un semplice dis ositiv h" . n. e a mac-
dl, stabilire se Cl sono .0 da ahmentazione al di satta di un certo c : rlieva 1
Uultlma IstruZlOne efunzlOnale a tale scopo. In SlOtesl, nsulta II seguente codlce
9
:: NMl, in modo da costringere il 't 0
1
SI puo collegare I usclta del dispositivo
'I." ",1.'\'di' .. , SIS ema a prendere atto ch >.
,', -.{1 tensione. A NMI viene a an' . . e 'C In corso una caduta
1NTSTAMP: PUSH PSI,.{ ; Sal- .. . . 'salva ''Ie informazioni 'tggal' dC'jata una routme che chiude Ie operazioni in cor.
Vile programma corre t' d ch
PUSH AX ; --va- 7f';t... possa essere ripristinato 10 stato di . n In mo 0 e al di
PUSH ex ; ----tag- .. ..programma sospeso. macchina, nprendendo l'esecuzlOne del
PUSH SI . ------gio . :..'1' ...... .. ,
, .. ..,.. ' ,
MOV 51, IND ; 5I<-Offset prossimo
-,,- ",,'., ", .
INC 51 ; Puntamento al prossimo "<j
' .. :::::;-. .. ,:,
MOV CX CaNT CX
. 1 " 00"''' ..',
; +. . :.. -.....
DEC CX . Conteggio :L ,;': . . -'
-:I' '4 ,c' " '.'
J2 FINE ' Era l'ultimo? .. ',{j.
. .. " ,
;"t+':.;: '
....:' t:,
.', . __ '.," 'Ii ", '. .
8Nei microprocessori della farniglia 8086, di cui si e preso a prestito la notazione Assembleri'-,l
tale operazione viene eseguita come parte del cielo di interruzione, prima. di portare a 0 IE. ... ,',,'.... -'
salvata. quindi 1 per IE (altrimenti non ci 1 L'ist.n.lzione ......
ha l'effetto dl nmette.re PS!'V salvata sullo stack e qmndl dl. II sistema dl mterruZlone,.-} ::
Nel caso nostra Ipotetlca CPU" ha solo l'effetto dl np.ortare a 1, IE (oltre che at;;,... !_gur
a
4.10 Interruzioni mascher .. , . . .
programma convleoe che IE. non parte dl ... r,81P.B.OP.rE sono stati desi ati a.blli e .non qli mgressi di Set e Reset del
9Il testa seguente iDlZla con PUSH PSW per VIa delle Ipotesl fa-tte suI funzlonamento della CPU
01
puo irnpiegare all gn Can 1 delle lStruZlOW di macchina 8086 che it
A scanso equivoci, siccome Si.8 la notazio,ne Assembler 8?86, vale 1a pena.di .. azioni ipotizzate v. 0 scopo Al riconoscimento de11'int . program-
1'8086, In quanta 1a loglca. salva automatlcamente ho.n (llDgresso eli Reset. La linea NMI 0;:;:
. I"'fl"'l.i..rl",,;, ",>r;' ,
I
I
I
I
,
.......
)
)
I
)
,
I
I
,
I
I
j
I
I
I
I
I
prOSSl.mo
interfaccia
puntatore e
aggiornati
NMI
[NTR
;. NO! 51 prende i1
; Salvataggio
i .. contatore
; Ri-
; --pr1-
----sti-
, ------no ,
; Al punto di interruzione
; Tutti trasmessi
Driver libero 1
; Disabilita intr
CPU
s Q
IE
R
cu
STI
AL, lSI]
PORT,AL
IND,SI
CONT,CX
SI
CX
AX
PSW
BUSY,O
AL,O
CPORT,AL
ESCI
IlNTR
MOV
OUT
MOV
MOV
POP
POP
POP
POP
IRET
MOV
MOV
OUT
JMP
FINE:
, ESCI:
.. .. ,.
I ..
-. , ..
/' ."........, '
"j
r;:;.
-
,.1... ,'"1' ..
.-.. ".,. \:", ..
112 Ca.pitola 4 ,',
n sottosistema d.i ingresso/uscita 113
\,",: "
..
,.. .. ..
MOV AL, [SI] ; AL <- primo carattere
-" ,',"
OUT PORT l AL j Trasmissione carattere ..Y;.
MOV AL ,1 i Abilitaz. dell' interfaccia"", ?<,J, '::,,'
-' L"
OUT CPORT AL ; .. , a generare :\,<;.::::\" ..
RET . Ritorno al chiamante ..
, . '\;\i ;'. ... '
.. f':1:11o il carlice e ehe partisse dallo
dlsabllitazlone della generazlOne delle mterrUZlOIU (IENFF m stato 0). \:....
".,.. '.
;'0."1 -- " .'.,
'J"l ,''0' "
:':di .}/ .. ',.,.',
, ',," ':,. '". "
Routine di servizio dell'interruzione Come abbiamo gill esposto in precedenza/ :-':
la routine di servizio della interruzione inizia can Ie istruzioni di salvataggio nello" fr' I .... ".
stack dei registri utilizzati dalla routine e della parol a di state del processore
8
; _.J/Ii: ..
- ", .<;" - - "','
1NTSTAMP: PUSH PSW ; Salvataggio PSW
'!:'"' . , "',-- ," ,',
PUSH AX . Salvataggio dei ::"', "...'.;,,"",.;-.;'::,.".:...., .
, ..... ...... ,, '.
PUSH ex ; ". tre registri
PUSH SI ; " ... usati in INTSTAMP 4 2 L . t "
.. e In errUZlonl non mascherabili
.' ."'., -., _,."-'1" .. ' ... '.
A questa punto c'e da conteggiare it carattere trasmesso e prelevare il prossimo. .
tal fine si cleve recuperare il cantenuto di IND e CONT e aggiornarli. IE (Ofr,5.11.4) serve ad abiiitarefdisabiltare il sistem d" t .
. la richiesta INTR. a 1 In erruzlOne,
MOV SI,1ND ; S!<-Offset prOSS1mo . QuasI tutti i calcolatori prevedono, tuttavia un' . . .
INC S1 ; Puntamento al prossimo (NMI in Figura4.10) ja quale' I a hne.a di mten-uZione non ma-
OV A
.'I ,J, ... , . Q ,Vlene sempre nlevata ne] caso . "
M CX.C NT ; CX<-restant1 + 1 :... uesto tipo di interruzione si . t"fi' m Cill Sla
DEC CX j Conteggio ":<? .:; neUe situazioni di emergenza t',pg,lc
US
1 cat cjon fatto. che ,essa puc essere
'" ,.1., "" h' . . . , amen e a ClMJuta dl tensIO e S I
. . . .. .. '" "",'" c; e eqwpaggtata con un semplice dis ositiv h" . n. e a mac-
dl, stabilire se Cl sono .0 da ahmentazione al di satta di un certo c : rlieva 1
Uultlma IstruZlOne efunzlOnale a tale scopo. In SlOtesl, nsulta II seguente codlce
9
:: NMl, in modo da costringere il 't 0
1
SI puo collegare I usclta del dispositivo
'I." ",1.'\'di' .. , SIS ema a prendere atto ch >.
,', -.{1 tensione. A NMI viene a an' . . e 'C In corso una caduta
1NTSTAMP: PUSH PSI,.{ ; Sal- .. . . 'salva ''Ie informazioni 'tggal' dC'jata una routme che chiude Ie operazioni in cor.
Vile programma corre t' d ch
PUSH AX ; --va- 7f';t... possa essere ripristinato 10 stato di . n In mo 0 e al di
PUSH ex ; ----tag- .. ..programma sospeso. macchina, nprendendo l'esecuzlOne del
PUSH SI . ------gio . :..'1' ...... .. ,
, .. ..,.. ' ,
MOV 51, IND ; 5I<-Offset prossimo
-,,- ",,'., ", .
INC 51 ; Puntamento al prossimo "<j
' .. :::::;-. .. ,:,
MOV CX CaNT CX
. 1 " 00"''' ..',
; +. . :.. -.....
DEC CX . Conteggio :L ,;': . . -'
-:I' '4 ,c' " '.'
J2 FINE ' Era l'ultimo? .. ',{j.
. .. " ,
;"t+':.;: '
....:' t:,
.',
. __ '.," 'Ii ", '. .
8Nei microprocessori della farniglia 8086, di cui si e preso a prestito la notazione Assembleri'-,l
tale operazione viene eseguita come parte del cielo di interruzione, prima. di portare a 0 IE. ... ,',,'.... -'
salvata. quindi 1 per IE (altrimenti non ci 1 L'ist.n.lzione ......
ha l'effetto dl nmette.re PS!'V salvata sullo stack e qmndl dl. II sistema dl mterruZlone,.-} ::
Nel caso nostra Ipotetlca CPU" ha solo l'effetto dl np.ortare a 1, IE (oltre che at;;,... !_gur
a
4.10 Interruzioni mascher .. , . . .
programma convleoe che IE. non parte dl ... r,81P.B.OP.rE sono stati desi ati a.blli e .non qli mgressi di Set e Reset del
9Il testa seguente iDlZla con PUSH PSW per VIa delle Ipotesl fa-tte suI funzlonamento della CPU
01
puo irnpiegare all gn Can 1 delle lStruZlOW di macchina 8086 che it
A scanso equivoci, siccome Si.8 la notazio,ne Assembler 8?86, vale 1a pena.di .. azioni ipotizzate v. 0 scopo Al riconoscimento de11'int . program-
1'8086, In quanta 1a loglca. salva automatlcamente ho.n (llDgresso eli Reset. La linea NMI 0;:;:
. I"'fl"'l.i..rl",,;, ",>r;' ,
I
I
I
I
,
115
IATl
Fout.ine 0
Bit 0
Isolamento Bit 1
SaIto alIa routine 1
; Isolamento
SaIto alIa
11 sottQsistema ill ingresso/uscita
AL,l
ROUTO
AL.COPIA
AL,2
ROUTl
COPIA,AL
AL,BOH ; Isolamento Bit 7
ROUT7 ; SaIto alIa routine 7

.Sa i1 centrella arriva qui siamo in presenza


.di una situazione anomala:
.dopa essersi manifestata un
J
interruzione,
.nessuna richiesta risulta asserita! ! ! !
<Ripristino registri di mac china>
IRET
MOV
AND
JNZ
AND
JNZ
MOV
AND
JNZ
Se il sistema di interruzione non viene riabilitato, 10 schema precedente porta

a eseguire fino a terrnine una sola routine di servizio. E comunque necessaria


che la riehiesta servita sia disasserita (in modo automatico a a comando esplicito
da parte del programma) prima deIruscita. dalla routine, altrimenti essa. provoca.
una. nuova interruzione appena il contrallo ritorna al programma interrotto.
L'ordine di esarne dei bit determina la priorita. delle interruzio'ni, per questa si
pada di priorita software.
,
IPERlf' I
\ PERIF' 21
I PERU' n
.
r I
r Vee
INTERF 1
INTRF 2
lNTRF n
.
,
f- IRQl
lRQ2
>- IRQn
R
,
"
CPU
INTR
,
.

L
I
ISH I
1 PSEIJDOPORTA DI 11.(
H
"
di macchina>
j Lettura di ISR
; COPIA <- ISR
registri <Salvataggio dei
IN AL.ISPORT
MOV COPIA, AL
ISERV:
1. Riconoscimento della periferica che richiede Pinterruzione.
,
L,iI' :':- ,
;-,
__."-,, .
:;;.$ .';i .I": '
r ,:.r., "

..__ .. , ,
... -
'iI,i>lr[ii ..tt ',..., t . ,
.> .... '. ,,'
"IIW"
I! :;1,0' II.! '!"' -.j ,",
..1:-2- .':.;="
:,;,:';,..: '
1:,.'fL.. ,... - _",
'

" .... I .. j.'.,,' ,


., '" -'-' .' .-, ..... , -.",
,- ,,,,.. '''-'', ..
. ,,'" .
". ,., ,
..
,'.. :..... "."":'
.:-
!i:;", ";.
.."r,rJ\... .! .. ,

I.
,
... ' .. "'.
.....
'."_' -:" ..1,., .... ,
':.: "
, ...... ,",",0;;:.; .. '. ". ..
,,;--''','l- .!:. '.....n ..
.. ,,,"11<' ,." '!-. ,. ..
N','.;;;"",,, ,t::, "'
... ",}........ ,;:..
.:' . '!',',',r, ':'.
"'f: ''';;) .';: :'. . -
C II a-ento in OR delle differenti richieste eli interruzione: la linea INTR
,." .-', F' ,a 4 11 0 eg - ( d ) d' .
.Igu .. a se almena una richiesta e asserita. ISR e una pseu porta. I. mgresso
tit n dei semplici buffer, i cui bit fotniscono 10 stato delle smgole nchleste. La
e co . . aI" h' t 't
di ISR permette eli stabllrre qu 1 nc les e sono assen e.
,.'
... , .. .,
"' ,.. ,,'.' """'"
., .
,."'."'" ", ..."'.. ,,
. .:
c''".. ,... ,,
. ,:" ,
""'I' .. ,vt,.',:
_..":".,1" ..... ' , ...
,.
.. ' :'
.'.t.. ;t"t," ,.... ,

......r 'I'. t ..
_..:
,,'.,"{'; 1, -, .. ,",
""'-"'4'<1,.::.,,.- .
'

".
. "e,.." .
"'O;'K . "
,
. ':
',;,i,;i;"",..
:.'
;!i-.,.'
,,1 ::';" '.
.;,...
-li'\";,,. 10.', , :'. O'
..." ..
'-!':+:!",l;,,-:j . ,, ,"

"..:': ',.,.. '.'
"., ,
.
:i:;;ifi(:),r: ,:; :. .
i ;'."'. ESCI .
,.::. ;0;:.\ (/.'.,,::;.
:', ,
.
.I:I,,: ':.': <'
.
.. ,.. ' Ciascuna routine svo1ge il trasferimento richiesto e si conclude con un salto a.na po-
Si continui ad assumere che la CPU risponda alle interruzioni secondo quanto ipotiz.- sizione ESCI (ana specifica routine il controllo earrivato con un saIto); tornanda a.
zato al Paragrafa 4.4. Si faccia riferimento alia Figura4.11. Si puo stabilire che le'\ ';Fi"'!i!\.",';'ESCI 10 STACK deve essere non rnodificato.
interruzioni vengono discriminate 1eggendo una (pseudo) porta di I/O! che denomi- ':;1 Si possono fare aleune osservazioni rispetto al precedente schema.
neremo ISR (Interrupt Status Register)} i cui bit rappresentano le state delle singole....; :i:t::t,S\:,:
IR (F
' ... '"
.......,.......'
Qi 19ura4.11). '" """.",.. 1.
In questa caso, la routine di servizio, dopo a.ver eventualmente salvato i registri 'E'
eli interesse, dovra. leggere ISR e stabilire qual e1a rif:hiesta da servire. Puo essere ,j
lisato a modella il seguente tratto di codice (si assume di dover esaminare tutti gli 8 1.:}N:Y,,; '. 2.
bit e che ISPORT sia l'indirizzo assegnato a ISR). :. !
- ... ' ., .
.... .,", .
.,""',:!.' '-,'.,
- ., "','.
'; "
,
,':', {.. ' .. '.
'.j .
,::"
'.":"," "; "
,,'" 'c'J j ..
.. ,
..<t:.I.
'';:'' '; .. ' .
. ... '
4,5,1 Discriminazione cia programma
4i;

,." .,
;
.. " ,
,..
,,;',.
."""
, ' "
" .."
..
.. ' ,.... /.
Consideriamo ora il caso piu realistico in cui si abbia piu di una periferica in
di generare Ie interruzioni.
Si pangano i problemi seguenti. ' .
'". ,:-;1.\

.
4,5 Interruzione da parte di piu periferiche
.:.::'.;2i),
. , ", '
, ,f
",' -1"
"':-<.;1
, .
Va da se che l'interr.uzione non maseherabile deve essere prioritaria rispetto
al.tre, in quanta per sua natura non deve. essere interrotta. . -.,
J
I
I
I
I
\
I
)
I
\
I
I
\
I
I
)
1
115
IATl
Fout.ine 0
Bit 0
Isolamento Bit 1
SaIto alIa routine 1
; Isolamento
SaIto alIa
11 sottQsistema ill ingresso/uscita
AL,l
ROUTO
AL.COPIA
AL,2
ROUTl
COPIA,AL
AL,BOH ; Isolamento Bit 7
ROUT7 ; SaIto alIa routine 7

.Sa i1 centrella arriva qui siamo in presenza


.di una situazione anomala:
.dopa essersi manifestata un
J
interruzione,
.nessuna richiesta risulta asserita! ! ! !
<Ripristino registri di mac china>
IRET
MOV
AND
JNZ
AND
JNZ
MOV
AND
JNZ
Se il sistema di interruzione non viene riabilitato, 10 schema precedente porta

a eseguire fino a terrnine una sola routine di servizio. E comunque necessaria


che la riehiesta servita sia disasserita (in modo automatico a a comando esplicito
da parte del programma) prima deIruscita. dalla routine, altrimenti essa. provoca.
una. nuova interruzione appena il contrallo ritorna al programma interrotto.
L'ordine di esarne dei bit determina la priorita. delle interruzio'ni, per questa si
pada di priorita software.
,
IPERlf' I
\ PERIF' 21
I PERU' n
.
r I
r Vee
INTERF 1
INTRF 2
lNTRF n
.
,
f- IRQl
lRQ2
>- IRQn
R
,
"
CPU
INTR
,
.

L
I
ISH I
1 PSEIJDOPORTA DI 11.(
H
"
di macchina>
j Lettura di ISR
; COPIA <- ISR
registri <Salvataggio dei
IN AL.ISPORT
MOV COPIA, AL
ISERV:
1. Riconoscimento della periferica che richiede Pinterruzione.
,
L,iI' :':- ,
;-,
__."-,, .
:;;.$ .';i .I": '
r ,:.r., "

..__ .. , ,
... -
'iI,i>lr[ii ..tt ',..., t . ,
.> .... '. ,,'
"IIW"
I! :;1,0' II.! '!"' -.j ,",
..1:-2- .':.;="
:,;,:';,..: '
1:,.'fL.. ,... - _",
'

" .... I .. j.'.,,' ,


., '" -'-' .' .-, ..... , -.",
,- ,,,,.. '''-'', ..
. ,,'" .
". ,., ,
..
,'.. :..... "."":'
.:-
!i:;", ";.
.."r,rJ\... .! .. ,

I.
,
... ' .. "'.
.....
'."_' -:" ..1,., .... ,
':.: "
, ...... ,",",0;;:.; .. '. ". ..
,,;--''','l- .!:. '.....n ..
.. ,,,"11<' ,." '!-. ,. ..
N','.;;;"",,, ,t::, "'
... ",}........ ,;:..
.:' . '!',',',r, ':'.
"'f: ''';;) .';: :'. . -
C II a-ento in OR delle differenti richieste eli interruzione: la linea INTR
,." .-', F' ,a 4 11 0 eg - ( d ) d' .
.Igu .. a se almena una richiesta e asserita. ISR e una pseu porta. I. mgresso
tit n dei semplici buffer, i cui bit fotniscono 10 stato delle smgole nchleste. La
e co . . aI" h' t 't
di ISR permette eli stabllrre qu 1 nc les e sono assen e.
,.'
... , .. .,
"' ,.. ,,'.' """'"
., .
,."'."'" ", ..."'.. ,,
. .:
c''".. ,... ,,
. ,:" ,
""'I' .. ,vt,.',:
_..":".,1" ..... ' , ...
,.
.. ' :'
.'.t.. ;t"t," ,.... ,

......r 'I'. t ..
_..:
,,'.,"{'; 1, -, .. ,",
""'-"'4'<1,.::.,,.- .
'

".
. "e,.." .
"'O;'K . "
,
. ':
',;,i,;i;"",..
:.'
;!i-.,.'
,,1 ::';" '.
.;,...
-li'\";,,. 10.', , :'. O'
..." ..
'-!':+:!",l;,,-:j . ,, ,"

"..:': ',.,.. '.'
"., ,
.
:i:;;ifi(:),r: ,:; :. .
i ;'."'. ESCI .
,.::. ;0;:.\ (/.'.,,::;.
:', ,
.
.I:I,,: ':.': <'
.
.. ,.. ' Ciascuna routine svo1ge il trasferimento richiesto e si conclude con un salto a.na po-
Si continui ad assumere che la CPU risponda alle interruzioni secondo quanto ipotiz.- sizione ESCI (ana specifica routine il controllo earrivato con un saIto); tornanda a.
zato al Paragrafa 4.4. Si faccia riferimento alia Figura4.11. Si puo stabilire che le'\ ';Fi"'!i!\.",';'ESCI 10 STACK deve essere non rnodificato.
interruzioni vengono discriminate 1eggendo una (pseudo) porta di I/O! che denomi- ':;1 Si possono fare aleune osservazioni rispetto al precedente schema.
neremo ISR (Interrupt Status Register)} i cui bit rappresentano le state delle singole....; :i:t::t,S\:,:
IR (F
' ... '"
.......,.......'
Qi 19ura4.11). '" """.",.. 1.
In questa caso, la routine di servizio, dopo a.ver eventualmente salvato i registri 'E'
eli interesse, dovra. leggere ISR e stabilire qual e1a rif:hiesta da servire. Puo essere ,j
lisato a modella il seguente tratto di codice (si assume di dover esaminare tutti gli 8 1.:}N:Y,,; '. 2.
bit e che ISPORT sia l'indirizzo assegnato a ISR). :. !
- ... ' ., .
.... .,", .
.,""',:!.' '-,'.,
- ., "','.
'; "
,
,':', {.. ' .. '.
'.j .
,::"
'.":"," "; "
,,'" 'c'J j ..
.. ,
..<t:.I.
'';:'' '; .. ' .
. ... '
4,5,1 Discriminazione cia programma
4i;

,." .,
;
.. " ,
,..
,,;',.
."""
, ' "
" .."
..
.. ' ,.... /.
Consideriamo ora il caso piu realistico in cui si abbia piu di una periferica in
di generare Ie interruzioni.
Si pangano i problemi seguenti. ' .
'". ,:-;1.\

.
4,5 Interruzione da parte di piu periferiche
.:.::'.;2i),
. , ", '
, ,f
",' -1"
"':-<.;1
, .
Va da se che l'interr.uzione non maseherabile deve essere prioritaria rispetto
al.tre, in quanta per sua natura non deve. essere interrotta. . -.,
J
I
I
I
I
\
I
)
I
\
I
I
\
I
I
)
1
I
I
I
\
!
I
\
I
\
]
1
1
)
1
I
tNTRn-1
INTRI
INTRO
INTRI
!
INTERr n-I
PERIF 0.-1


INTRO
PERIF 0 PERIF I
,
-
-- INTRI
!

j'
-
CPU '...J!:!1Rn-l
INTER a INTERF I
I
TAB1R
CALL ROUTINE 0
0 CPU
'-.
""'llTto 14+
CALL ROUTINE 1
\
"
CALL ROUT INE 2 2
PllIDUU'

CALL ROuTINE j
I
SEC
.

ReGISTEll

CALL ROUTINE n-l


0-1
rv-
llNTR
STI S af-
IE
eLI R

. II Un esempio di controllore programmabile delle interruzioni (PIC) e il dispositivo 8259A, impie-


, gatiile con la famiglia 8086 rna anche con 1a precedente famiglia a 8 bit 8080/8085. Di esso si parla
aI Paragrafo 4.9.
L'interruzione con piu linee di richiesta indipendenti costituisce il metodo di gestione
delle interruzioni pili veloce e concettualmente pill semplice, rna risulta anche il piu
dispendioso in termini di collegamenti. Nella costruzione dei microprocessod
l
per
ovvi motivi di economia di integrazione, e preferibile riservare un solo piedino per
le, interruzioni e prevedere un integrato esterno di appoggio, detto controllore delle
'intefTUzioni, che svolga Ie funzioni del codificatore di prioritan. Concettualmente,
cr si rila alio schema di Fisura4.13, portando all'esterno la parte racchiW3a entro la
linea di forma tondeggiante. Ma il fatto di portare fuori la logica in questione esige un
passare in modo automatico alIa routine associata.
a) identificare 1a richiesta da servirej
b)
lOSuccessivamente
l
si PUQ pensare che 130 routine stess30 provveda. a. riportare a. I IE, in modo da-
permettere 10 sfogarsi di eventuali richieste di interrUZlone a piu alta priorita. Di questi aspetti si.
parla diffusamente piu avanti (Cft. 4.9)
4.6.1 Linee di dchiesta indipendenti
4.6 Interruzioni vettorizzate


"}>I. ."
: ,
116 C,pI
'tolo 4 . ':."-i";;' .. U sottosistema di ingresso/uscita 117
C-"''---_::..:cc.c:.:c:e-:e- -:!,!, - 'Y''''''{:-
.-.... ....,.,..--,'
..:;."j: ..,e.._(:"'..:"
", _'. ',J;
" ..,., ..""." ..
; .'>;t " ':,'\\l.":;V"';'::;\
3. soddisfa.:;, la m:desima
nchleste (11 pm. OVVl? .consiste nell'usare PlstruzlOne dl CALL
passare alle smgole routme dl servlzlo). ",,-;;i:" ::.::,',:
..'":' ".': \
'j'.\,;;;.!j .. ,
4. Se si adopera la soluzione di cui al punta precedente conviene, anziche copiarne i-r';
contenuto, rileggere ISR prima di ogni test e tornare al programma interrotto
quando tutte Ie richieste risultano disasserite. In questa modo epossibile ;:;,,::'"
anche Ie eventuali richieste che si manifestano durante iI servizio dell'interruzione'..:;'N
. --:- 4.12 Schematizzazione di un sistema. 1a cui CPU prevede linee di richiesta di
,j"" '.'1 , '. Figura
n metodo descritto solo di?attico (anche se es.tato lisato in architetture ... interruzione separate.
passato) a causa delFmefficlenza mSlta nella sequenza dl test.
''''M'' .' ,
.r'.' ". "
"'... .. ":;' .
<;', .. :i0 ',.;
...M . ",,>',': -".". '.,' ,
: l!fi6';'':, '.::-' :.
:..'.
II!'.:). .. r.. '. .. .....
... .... :\, ..
L'inefficienza del metodo precedente viene superata con un meccanismo capace di:
., .. Il'r." '! ',;,,"" ,
.: f.. ' ';.:::.
, ,::,
:,,:',<t...

..
Si distinguono due casi fondamentali.
,.."" !":" ""," .....-'.
1. n sistema presenta pill Clinpee di richlesta di interruzione. indipendenti e vettoriz::..1 :J!;;'Y';'\'"
zate internamente aHa U. '. "
2. C'e una sola linea di interruzione comune a tutte Ie richieste e la .
eesterna attraverso una daisy chain 0 un Controllore di lnterruzioni. ,
'.' Figura 4.13 Sistema di interruzione con pin linee di richiesta indipendenti. Si ipotizza
I due casi non sono totalmente disgiunti. lnfatti un controllore di interruzione ,;,JE\ cbe i vettori di interruzione contengano istruzioni di chiamata.. n codificatore di priorita
esterno pub essere riguardato come una parte di IOglca della CPU, tenuta separata >discrimina I'interruzione a piu alta priorita. in caso d.i richieste contempora.nee. L'uscita. del
per motivi di convenienza. !noltre non poche macchine presentano pili di un ingresso decodificatore viene interpreta-ta come selettore di interruzione ed e per .indivi-
di interruzione e per ciascuno di essi eprevista la possibilita di costruire una daisy' duare la posizione in TABU:- dove it programmatore ha .sistemato.1'istIuzLone dl
chain 0 di avere un controllore esterno. ... ...,_ .., . alia routine (1a parte racchlUsa. entro la form.a tondeggtante eqUlva.le a un controllore di
.; .'/! .. '.' interruzionij si veda il testo),
. .
';" ,.' .- y"
.,,,,t! ., ..
,,:--:-:.'. ''':''
"::i: '..:' '.'", '"
'-;'" ... ', .- '
'/'i!.,,"''-
,.--;> '
" ,.,' " ..
AlIa CPU vengono portate tutte Ie linee di richiesta di interruzione
,
secondo 10 schema .){i.
d
'F' 412 ',,,'
1 19ura. . .;:;::, ::,.',,'
.la l'OR delle 'che viene '.; , ..
so la porta dl ablhtazlone!dlsablhtazlone a valle dt IE, come schematlzzato III FIgU- ;::.:,: :.
ra4.13. :E necessaria che la logica di macchina provveda a portare IE a 0 in risposta' /?
all'interruzione, in modo da garantire che la routine di servizio non sia interrompibile :::, ,..
al suo esordio
lO
. 'j$. . '..
'... . ,
_ 'I' :
f
" .../1 '
i',' ,' ,
", .,
.'JL '
'1"
,;,
,

I
I
I
I
\
!
I
\
I
\
]
1
1
)
1
I
tNTRn-1
INTRI
INTRO
INTRI
!
INTERr n-I
PERIF 0.-1


INTRO
PERIF 0 PERIF I
,
-
-- INTRI
!

j'
-
CPU '...J!:!1Rn-l
INTER a INTERF I
I
TAB1R
CALL ROUTINE 0
0
CPU
'-.
""'llTto 14+
CALL ROUTINE 1
\
"
CALL ROUT INE 2
2
PllIDUU'

CALL ROuTINE j
I
SEC
.

ReGISTEll

CALL ROUTINE n-l


0-1
rv-
llNTR
STI
S af-
IE
eLI
R

. II Un esempio di controllore programmabile delle interruzioni (PIC) e il dispositivo 8259A, impie-


, gatiile con la famiglia 8086 rna anche con 1a precedente famiglia a 8 bit 8080/8085. Di esso si parla
aI Paragrafo 4.9.
L'interruzione con piu linee di richiesta indipendenti costituisce il metodo di gestione
delle interruzioni pili veloce e concettualmente pill semplice, rna risulta anche il piu
dispendioso in termini di collegamenti. Nella costruzione dei microprocessod
l
per
ovvi motivi di economia di integrazione, e preferibile riservare un solo piedino per
le, interruzioni e prevedere un integrato esterno di appoggio, detto controllore delle
'intefTUzioni, che svolga Ie funzioni del codificatore di prioritan. Concettualmente,
cr si rila alio schema di Fisura4.13, portando all'esterno la parte racchiW3a entro la
linea di forma tondeggiante. Ma il fatto di portare fuori la logica in questione esige un
passare in modo automatico alIa routine associata.
a) identificare 1a richiesta da servirej
b)
lOSuccessivamente
l
si PUQ pensare che 130 routine stess30 provveda. a. riportare a. I IE, in modo da-
permettere 10 sfogarsi di eventuali richieste di interrUZlone a piu alta priorita. Di questi aspetti si.
parla diffusamente piu avanti (Cft. 4.9)
4.6.1 Linee di dchiesta indipendenti
4.6 Interruzioni vettorizzate


"}>I. ."
: ,
116 C,pI
'tolo 4 . ':."-i";;' .. U sottosistema di ingresso/uscita 117
C
-"''---_::..:cc.c:.:c:e-:e- -:!,!, - 'Y''''''{:-
.-.... ....,.,..--,'
..:;."j: ..,e.._(:"'..:"
", _'. ',J;
" ..,., ..""." ..
; .'>;t " ':,'\\l.":;V"';'::;\
3. soddisfa.:;, la m:desima
nchleste (11 pm. OVVl? .consiste nell'usare PlstruzlOne dl CALL
passare alle smgole routme dl servlzlo). ",,-;;i:" ::.::,',:
..'":' ".': \
'j'.\,;;;.!j .. ,
4. Se si adopera la soluzione di cui al punta precedente conviene, anziche copiarne i-r';
contenuto, rileggere ISR prima di ogni test e tornare al programma interrotto
quando tutte Ie richieste risultano disasserite. In questa modo epossibile ;:;,,::'"
anche Ie eventuali richieste che si manifestano durante iI servizio dell'interruzione'..:;'N
. --:- 4.12 Schematizzazione di un sistema. 1a cui CPU prevede linee di richiesta di
,j"" '.'1 , '. Figura
n metodo descritto solo di?attico (anche se es.tato lisato in architetture ... interruzione separate.
passato) a causa delFmefficlenza mSlta nella sequenza dl test.
''''M'' .' ,
.r'.' ". "
"'... .. ":;' .
<;', .. :i0 ',.;
...M . ",,>',': -".". '.,' ,
: l!fi6';'':, '.::-' :.
:..'.
II!'.:). .. r.. '. .. .....
... .... :\, ..
L'inefficienza del metodo precedente viene superata con un meccanismo capace di:
., .. Il'r." '! ',;,,"" ,
.: f.. ' ';.:::.
, ,::,
:,,:',<t...

..
Si distinguono due casi fondamentali.
,.."" !":" ""," .....-'.
1. n sistema presenta pill Clinpee di richlesta di interruzione. indipendenti e vettoriz::..1 :J!;;'Y';'\'"
zate internamente aHa U. '. "
2. C'e una sola linea di interruzione comune a tutte Ie richieste e la .
eesterna attraverso una daisy chain 0 un Controllore di lnterruzioni. ,
'.' Figura 4.13 Sistema di interruzione con pin linee di richiesta indipendenti. Si ipotizza
I due casi non sono totalmente disgiunti. lnfatti un controllore di interruzione ,;,JE\ cbe i vettori di interruzione contengano istruzioni di chiamata.. n codificatore di priorita
esterno pub essere riguardato come una parte di IOglca della CPU, tenuta separata >discrimina I'interruzione a piu alta priorita. in caso d.i richieste contempora.nee. L'uscita. del
per motivi di convenienza. !noltre non poche macchine presentano pili di un ingresso decodificatore viene interpreta-ta come selettore di interruzione ed e per .indivi-
di interruzione e per ciascuno di essi eprevista la possibilita di costruire una daisy' duare la posizione in TABU:- dove it programmatore ha .sistemato.1'istIuzLone dl
chain 0 di avere un controllore esterno. ... ...,_ .., . alia routine (1a parte racchlUsa. entro la form.a tondeggtante eqUlva.le a un controllore di
.; .'/! .. '.' interruzionij si veda il testo),
. .
';" ,.' .- y"
.,,,,t! ., ..
,,:--:-:.'. ''':''
"::i: '..:' '.'", '"
'-;'" ... ', .- '
'/'i!.,,"''-
,.--;> '
" ,.,' " ..
AlIa CPU vengono portate tutte Ie linee di richiesta di interruzione
,
secondo 10 schema .){i.
d
'F' 412 ',,,'
1 19ura. . .;:;::, ::,.',,'
.la l'OR delle 'che viene '.; , ..
so la porta dl ablhtazlone!dlsablhtazlone a valle dt IE, come schematlzzato III FIgU- ;::.:,: :.
ra4.13. :E necessaria che la logica di macchina provveda a portare IE a 0 in risposta' /?
all'interruzione, in modo da garantire che la routine di servizio non sia interrompibile :::, ,..
al suo esordio
lO
. 'j$. . '..
'... . ,
_ 'I' :
f
" .../1 '
i',' ,' ,
", .,
.'JL '
'1"
,;,
,

I
R7
RO
Rl
0038HI. :..1_
MEMORIA
OOOOH JUMP R ----,
0008H JUMP Rl
OOIOH JUMP R2 ITABIR
; Salvataggio del PC
; Salta
Vee
-'-
I. n 4
a) Formato islruzione di Reslarl (RST)
1111 - -
-
1 1111

Cielo dl d..ninhrnldC>D.
1 I I
I 1 I I I I
\
.. , "" " .............."." " ....
"
/
..lor. dl I.lllO,,,,.lon.
"""
"'.
"""
BUS 1l,l,T1
Capitola 4
4.6.2 Vettorizzazione esterna
Il sottosistema di ingressofusdta 119
",:, ' ..:,
-". -
I?F:<"':!: .:,-:,
protocollo di tea la CP.U e l'este:DO, che automaticamente parti a leggere il;.':t' ," 'Architettura 80S?/8085 11 8080 e il suo 8085
?el reglStro SEL (0 eqwvalente) 10 modo da permettere it salto aHa <.\Int78]1 trattavano 11 (un byte) di lstruzlone da
d.i mterruzlone. . . " .. eseg
uire
. L'insieme dl prevedeva RST (Restart)1
.:f. >_,' ii, cui formato equeUo cil FIgura 4.153 e 11 CUI I efIetto conslSte nel:
,'I . ',. ,
, .. ", a) salvare il PC corrente;
-
: . b) saltare alIa locazione di 8 x n, essendo n il numero codificato
. . . " .,1Il; 1 campo di 3 bit del codlce dl lstrUZlOne.
S.u11a scorta del eSaml.lllamO ora 11. problema, della vettorizza..-:' ne . .
ZlOne esterna. 81 tratta di stablhre un protocollo secondo 11 Quale e11 mondo esterno ;.;.1\ "',. In altri termini l'istruzl0ne RST n eQUlvale a:
che indica alla CPU Quale routine di servizio debba essere eseguita. .' .
.'2 .' , PUSH PC
A tale scopo: .: ., JMP 8n
a) la CPU segnala aJJ'esterno che sta eseguendo un cielo di interruzione; ..
:".'" ,:'< ,',' Poiche a1 campo n souo dedicati 3 bit, ci sono 81ocazioni predefinite a cui puo
b) la logica esterna, su tale cicIo di macchina, seleziona it periferico da servire e ,r, il controllo. In queste posizioni il programmatore deve sistemare le istruzioni
invia sul bus dati ]'informazione che consente cii passare aHa routine associata. salto incondizionato aUe routine di servizio delle interruzioni {o Ie routine stesse se
{o;..':'. 'queste occupano meno di 8 byte). In Figura4,15b eillustrata la tabella di salto. Con
In Figura4.14 erappresentato un tipico cicIo di interruzione. Vinformazione che '.. '. ',:' .': " la semplice rete di Figura4.15c, sul cielo di TNTA, I'interfaccia selezionata immette
il moudo esterno jrnmette sul bus dei dati viene detta selettore di interruzione. RST 4 suI bus dei dati.
""e.' J ..".... :
.:,,0; ;,. " "i. '
.
<' "
:J:!' , <-
''f. ,- . .,
" ". , ,,';;';l . . :. '.,
I" .
{, '.'" <
',.'9 '.:,.. .,1
"'>I-.t, 'ft- ,: "
'; .
-'\ ,:'. '.:,' I',
.. " ' 'c(' ''' .. '
. ' '::.. :Y,,' ','
",'.'roi ,'.' '.... ,,',
""I'W ":"c:'" I
..",
.' '-'' .:., T.
,..lol'f.' - " , .
c;,l'.:' '.' , . ,. .
:;ill ' ':,' lACK
t ",":'.. BUS
.. );;((.,>;700 OAn
i '. .."" ..
#," .l> ,., ' ".' ,.,'
Figura 4.14 Esempio di ciclo di II segnale INTA (lnterrlJpt Acknowledge- ,>:'.'- c) Uso eli lACK: generazione RST 4 b) Vettori delle interruzioni
ment), in uscita CPU, indica alPesteroo che questa sta servendo la richiesta di in,ter-. .. Figura 4.15 a) L'istruzione di Restart dell'8080j8085; b) il relativo vettore delle interru-
ruzione INTR. E compito della logica esterna (controllore di interruzioni 0 daisy chain)' >' c) rete per la generazione di RST 4. II segnale lACK che abilita le uscite dei driver del
presentare sul bus dei dati il selettore di interruzione, In altre parole, il cicio INTA equiva.ie a bus dati e il risultato dell' AND tea INTA e 1a condizione di interfaccia selezionata.
uno speciale cido di lettura, con la differenza che in questo caso la CPU si aspetta di leggere, :< <,:,:1 ,','"
suI bus dati i1 se1ettore dell'interruzione, La schema. indica che la richiesta di interruzione ..\/: '..
puo 0 no essere disasserita (in modo automatico) nel corso del ciclo di interruzione. ... ': L'istruzione RST etipica del micro 8080
12
. Essa ha il vantaggio di occupare un
.. ." '..... i solo byte e di richiedere quindi un solo impulso di INTA per 10. sua interpretazione,
.. "' .. J1la a 8 il numero delle interruzioni vettorizzabili.
Ovviamente l'interpretazione del selettore di interruzione puo essere differentc'
da architettura architettura. Di norma esso viene interpretato come un indirizzQ . .. , l2Il m,c'O 8080 1' . d d In'O
. . .. ";Ii " ...' processore 'l;: state I primo mIcro I gran e successo. prect:Uenza erano state
che punta lD una tabella eqwvalente a TABIR. Speclalmente ill passato era comune .\':E' ;, prodotte.altre CPU integrate su un solo chip, rna e solo can l'introduzione del micro Intel 8080
come codice di operazione. Qui di seguito si illustrano . "",,,," (e,con quelle .succedutesi a. ?reve dei micro 6800.e Zilog Z80) the Ie tecnologie
SOlUZIOlli reali. :,,:<... '" ,mlcroelettroDlche hanno un lmpatto declslVo suJ mondo dell'm(onnatlca..
;'. ,J -' ,
., - .,'.',' ,.
'.'

118
I
]
!
1
\
I
I
I
\
I
I
I
\
\
I
1
I
R7
RO
Rl
0038HI. :..1_
MEMORIA
OOOOH JUMP R ----,
0008H JUMP Rl
OOIOH JUMP R2 ITABIR
; Salvataggio del PC
; Salta
Vee
-'-
I. n 4
a) Formato islruzione di Reslarl (RST)
1111 - -
-
1 1111

Cielo dl d..ninhrnldC>D.
1 I I
I 1 I I I I
\
.. , "" " .............."." " ....
"
/
..lor. dl I.lllO,,,,.lon.
"""
"'.
"""
BUS 1l,l,T1
Capitola 4
4.6.2 Vettorizzazione esterna
Il sottosistema di ingressofusdta 119
",:, ' ..:,
-". -
I?F:<"':!: .:,-:,
protocollo di tea la CP.U e l'este:DO, che automaticamente parti a leggere il;.':t' ," 'Architettura 80S?/8085 11 8080 e il suo 8085
?el reglStro SEL (0 eqwvalente) 10 modo da permettere it salto aHa <.\Int78]1 trattavano 11 (un byte) di lstruzlone da
d.i mterruzlone. . . " .. eseg
uire
. L'insieme dl prevedeva RST (Restart)1
.:f. >_,' ii, cui formato equeUo cil FIgura 4.153 e 11 CUI I efIetto conslSte nel:
,'I . ',. ,
, .. ", a) salvare il PC corrente;
-
: . b) saltare alIa locazione di 8 x n, essendo n il numero codificato
. . . " .,1Il; 1 campo di 3 bit del codlce dl lstrUZlOne.
S.u11a scorta del eSaml.lllamO ora 11. problema, della vettorizza..-:' ne . .
ZlOne esterna. 81 tratta di stablhre un protocollo secondo 11 Quale e11 mondo esterno ;.;.1\ "',. In altri termini l'istruzl0ne RST n eQUlvale a:
che indica alla CPU Quale routine di servizio debba essere eseguita. .' .
.'2 .' , PUSH PC
A tale scopo: .: ., JMP 8n
a) la CPU segnala aJJ'esterno che sta eseguendo un cielo di interruzione; ..
:".'" ,:'< ,',' Poiche a1 campo n souo dedicati 3 bit, ci sono 81ocazioni predefinite a cui puo
b) la logica esterna, su tale cicIo di macchina, seleziona it periferico da servire e ,r, il controllo. In queste posizioni il programmatore deve sistemare le istruzioni
invia sul bus dati ]'informazione che consente cii passare aHa routine associata. salto incondizionato aUe routine di servizio delle interruzioni {o Ie routine stesse se
{o;..':'. 'queste occupano meno di 8 byte). In Figura4,15b eillustrata la tabella di salto. Con
In Figura4.14 erappresentato un tipico cicIo di interruzione. Vinformazione che '.. '. ',:' .': " la semplice rete di Figura4.15c, sul cielo di TNTA, I'interfaccia selezionata immette
il moudo esterno jrnmette sul bus dei dati viene detta selettore di interruzione. RST 4 suI bus dei dati.
""e.' J ..".... :
.:,,0; ;,. " "i. '
.
<' "
:J:!' , <-
''f. ,- . .,
" ". , ,,';;';l . . :. '.,
I" .
{, '.'" <
',.'9 '.:,.. .,1
"'>I-.t, 'ft- ,: "
'; .
-'\ ,:'. '.:,' I',
.. " ' 'c(' ''' .. '
. ' '::.. :Y,,' ','
",'.'roi ,'.' '.... ,,',
""I'W ":"c:'" I
..",
.' '-'' .:., T.
,..lol'f.' - " , .
c;,l'.:' '.' , . ,. .
:;ill ' ':,' lACK
t ",":'.. BUS
.. );;((.,>;700 OAn
i '. .."" ..
#," .l> ,., ' ".' ,.,'
Figura 4.14 Esempio di ciclo di II segnale INTA (lnterrlJpt Acknowledge- ,>:'.'- c) Uso eli lACK: generazione RST 4 b) Vettori delle interruzioni
ment), in uscita CPU, indica alPesteroo che questa sta servendo la richiesta di in,ter-. .. Figura 4.15 a) L'istruzione di Restart dell'8080j8085; b) il relativo vettore delle interru-
ruzione INTR. E compito della logica esterna (controllore di interruzioni 0 daisy chain)' >' c) rete per la generazione di RST 4. II segnale lACK che abilita le uscite dei driver del
presentare sul bus dei dati il selettore di interruzione, In altre parole, il cicio INTA equiva.ie a bus dati e il risultato dell' AND tea INTA e 1a condizione di interfaccia selezionata.
uno speciale cido di lettura, con la differenza che in questo caso la CPU si aspetta di leggere, :< <,:,:1 ,','"
suI bus dati i1 se1ettore dell'interruzione, La schema. indica che la richiesta di interruzione ..\/: '..
puo 0 no essere disasserita (in modo automatico) nel corso del ciclo di interruzione. ... ': L'istruzione RST etipica del micro 8080
12
. Essa ha il vantaggio di occupare un
.. ." '..... i solo byte e di richiedere quindi un solo impulso di INTA per 10. sua interpretazione,
.. "' .. J1la a 8 il numero delle interruzioni vettorizzabili.
Ovviamente l'interpretazione del selettore di interruzione puo essere differentc'
da architettura architettura. Di norma esso viene interpretato come un indirizzQ . .. , l2Il m,c'O 8080 1' . d d In'O
. . .. ";Ii " ...' processore 'l;: state I primo mIcro I gran e successo. prect:Uenza erano state
che punta lD una tabella eqwvalente a TABIR. Speclalmente ill passato era comune .\':E' ;, prodotte.altre CPU integrate su un solo chip, rna e solo can l'introduzione del micro Intel 8080
come codice di operazione. Qui di seguito si illustrano . "",,,," (e,con quelle .succedutesi a. ?reve dei micro 6800.e Zilog Z80) the Ie tecnologie
SOlUZIOlli reali. :,,:<... '" ,mlcroelettroDlche hanno un lmpatto declslVo suJ mondo dell'm(onnatlca..
;'. ,J -' ,
., - .,'.',' ,.
'.'

118
I
]
!
1
\
I
I
I
\
I
I
I
\
\
I
1
I
)
)
)
)
TABIR
]
INDIRIZZO
ROUTINE Dr
INTERRUZIONE
I I
n sottosistema di ingressofuscita 121
MEMORIA
,
. ,

"'B
.
REG I
sl?lei:i:ore 0
MSB

',,' ....
Capitola 4
1. In risposta a IN"TR asserito la CPU esegue i1 ciela di macchina INTA.
2. SuI cido di INTA, Ia Iogica del controllore programmato in modo 8085 stabilisce
10 stato delle richieste di interruzione e selezwna quella di maggior priorita; in;,!:'!":;: I I1+256 I \
agglUllta pone suI bUB datI II codlce delPIstruzlOne CALL (1 byte). '"d '
1 ' ,.. ,..,.' '}: :,,"':., ,-, 'Fi UTa 4.16 Vettorizzazion: delle Z80 I per
3. L effetto dl. II PC e dl determmare la ::''''., ., micro vengono inseritl in una. cham. (51 veda. Plu formscono 1.7 bit che
generazlOx:e,?1 succeSSlV1 cl.ch sm qual! 11 PIC trasmette due byte ":". " a IREG indivi?uano i1 vettore di Vengono formtl,7 e non 8 bit perche )
contenentl 1mdmzzo della routme dl serV1Z10. l'indirizzo della routme deve essere comunque pan. I
, ,'''''-,,-,' ,'" I
,,itl '" \.. ',.,',., --':"
Per come funziona il PIC (Cfr. 4.9), le posizioni di partenza delle routine di
zio ?istanziate di soli 4, oppure 8, byte Ie une dalle altre. II 8086 Nel microprocessore 8086 il selettore d.i interruzione viene in-
deve Illseme III queste Iocazioni aItr,ttante istruzioni di saito per passare aile terpretato come un numero cheidentifica il tipo di interruzione (Vector Type) e usato I
routme dl servlzI0
13
. "i,':' ;,;:: ..\ come 'puntatore a1 vettore di mterruzIOne. Quest'ultlmo cont1ene Pmdinzzo della I
,', . ':routine di servizio. Ogni vettore occupa 4 byte, in modo da contenere un indirizzo
. . ., '," ",'.. " ; cii 32 bit, corrispondente a CS:IP della routine assodata. La posizione del vettore
n microprocessore Z80, prevede 3 modalita. di risposta aIle' viene CPU pe: 4 il valore Vect?r Type. 1
1
nchleste dI mterruzlOne. , .. :;;A ,e ' Nell'8086, a1 vetton dl mterruzlOne sono nservatl 1prlIlll 1024 byte d1 memona, a par-
. . ,:jJI ,: 'tire dall'indirizzo 0, per un totale di 256 interruzioni
14
. A partire dalla CPU 80286,
Modo 0: 1denbco a quello 8080. , , ," Ilella modalita di funzionarnento virtu-ale protetto, la tabella delle interruzioni eallo-
. '.. .:. cata in memoria.come un qualunque segmento nello spazio virtuale, in posizione fissa,
Modo 1. esegue comunque un restart alIa pOSlZlone 38H. ,"':" --,rna non predefimta.
. . '" In Figura4.17 viene data la temporizzazione dei segnali esterni di interesse nella
Modo 2: questo modo d1 funzlOnamento consente la massima flessibilita.. '.\ ': .:risposta all
'
interruzione. Come si vede
,
la CPU 8086 effettua non uno, bensl due dcli
?PU. ha 'uno di 8 bit, il registro 1 interruzio- ','", ... Si che all'esterno venga impiegato il controllore 8259A (PIC) di l
m) II cm V1ene 1mpIegato come parte alta dell'mdmzzo (16 bit) del. . cm S1 parla. III segulto (Cfr. 4.9)" . . . . .
vettore dl mterruZlOne. Gli otto bit meno significativi vengono forniti, sul :,.. ":::,:" ,':" ':'" La del controllore, quando e programmata 1ll modo 8086, ut1hzza il pnmo
cIo di interruzione dalla periferica che ha interratto. n vettore di interruzione ,,::-M ,:c:': 1mpulso INTA per stabilire 10 stato delle richieste di interruzione e selezionare
c?ntiene l'indirizzo della routine di servizio. Cia implica che la logica di controllo.. '. ", ,quella di e utilizza il cicio per sul b.u
s
dati il I
Sl deve comportare come se stesse eseguendo un'istruzione di CALL. II vettore di' :.;.',!,ii: : ;. d11llterruzlOne (11 Vector Type) cornspondente alia ncmesta selez1onata.
interruzione erappresentato in Figura4.16. '.. ' .... :" " Da parte sua, la l.ogica della CPU in:ame:a il di sul.secondo
. ' : , INTA,. ottenendo COSI CS:IP della routme dl serv1Z10. n salto Vlene fatto m modo
., Poiche p.arte e. data attr.averso il registro I, epossibile ','automatico
,
'salvando il contenuto di PC e di PSW (i flag) sullo stack. IE viene I
pm tabelle d1 vetton dl mterrUZlOne e decldere cia programma Quale utilizzare. La : portato a O.
stessa tabella e comunque modificabile. La cosa e originale rna e di poca utilita '.. 1a risposta all'interruzione equivale all'esecuzione, in modo
pratica, a meno di applicazioni specifiche - per esempio controlli di tempo reale - in', . " mdlV1s1blle (0 atomico), ill questa sequenza di istruzioru:
cui si possono richiedere differenti modalita. di funzionamento a seconda della state , . . . .. 1
del sistema controllato. ',"".. ' VT. valore del Vector Type (selettore d1 1nterruz10ne) !
'\1 .'
13 .. , 1 .' ;:,:' 14L'architettura 8086 prevede eccezioni e interruzioni software (trappole). Di norma la tabella
Per cornpletezza, 81 deve ncordare che 18085 (rna non 18080) possedeva., In agglUnta a INTR, ,.,.fr!.,' delle interruzioni e usat' "apoet, , I ' t "t L' t "ft I
It 4 I
'd" t ' 'd' d t' . 0 III illlOlffi <>-l. pre In errUZlOnl es erne. e In erruzlOlll so ware sono
a re mee I m errUZlOne 1n 1pen en 1. ;'" usualm,nt t ' fu .... .
. ' e usa e per Ie chlamate a. nZlOnl del slstema operatlvo.
<\
c'

La famiglia 8080/8085 prevede la possibilita di usare II controllere di interruzioni",!j
programmabile 82S9A (PIC) di cui si parla nel Paragrafo 4.9. Per operare come
.. .'.c._
descritto qui di seguito
1
il controllore cleve essere programmata per funzionare
," ,l
"modo" 8085j db richiede che al PIC vengano forniti i bit A15 - As che entreranno
!ar parte degli indirizzi delle routine di servizio chiamate. La sequenza cii ,
e congegnata nel modo seguente. "'-").1 "'Y'::,:::::;,-.,::,:_,
>' .,:"
.,- .... j - .. " ; ,
. - '. ".. '
, -, -':-
120
\
)
)
)
)
TABIR
]
INDIRIZZO
ROUTINE Dr
INTERRUZIONE
I I
n sottosistema di ingressofuscita 121
MEMORIA
,
. ,

"'B
.
REG I
sl?lei:i:ore
0
MSB

',,' ....
Capitola 4
1. In risposta a IN"TR asserito la CPU esegue i1 ciela di macchina INTA.
2. SuI cido di INTA, Ia Iogica del controllore programmato in modo 8085 stabilisce
10 stato delle richieste di interruzione e selezwna quella di maggior priorita; in;,!:'!":;: I I1+256 I \
agglUllta pone suI bUB datI II codlce delPIstruzlOne CALL (1 byte). '"d '
1 ' ,.. ,..,.' '}: :,,"':., ,-, 'Fi UTa 4.16 Vettorizzazion: delle Z80 I per
3. L effetto dl. II PC e dl determmare la ::''''., ., micro vengono inseritl in una. cham. (51 veda. Plu formscono 1.7 bit che
generazlOx:e,?1 succeSSlV1 cl.ch sm qual! 11 PIC trasmette due byte ":". " a IREG indivi?uano i1 vettore di Vengono formtl,7 e non 8 bit perche )
contenentl 1mdmzzo della routme dl serV1Z10. l'indirizzo della routme deve essere comunque pan. I
, ,'''''-,,-,' ,'" I
,,itl '" \.. ',.,',., --':"
Per come funziona il PIC (Cfr. 4.9), le posizioni di partenza delle routine di
zio ?istanziate di soli 4, oppure 8, byte Ie une dalle altre. II 8086 Nel microprocessore 8086 il selettore d.i interruzione viene in-
deve Illseme III queste Iocazioni aItr,ttante istruzioni di saito per passare aile terpretato come un numero cheidentifica il tipo di interruzione (Vector Type) e usato I
routme dl servlzI0
13
. "i,':' ;,;:: ..\ come 'puntatore a1 vettore di mterruzIOne. Quest'ultlmo cont1ene Pmdinzzo della I
,', . ':routine di servizio. Ogni vettore occupa 4 byte, in modo da contenere un indirizzo
. . ., '," ",'.. " ; cii 32 bit, corrispondente a CS:IP della routine assodata. La posizione del vettore
n microprocessore Z80
,
prevede 3 modalita. di risposta aIle' viene CPU pe: 4 il valore Vect?r Type. 1
1
nchleste dI mterruzlOne. , .. :;;A ,e ' Nell'8086, a1 vetton dl mterruzlOne sono nservatl 1prlIlll 1024 byte d1 memona, a par-
. . ,:jJI ,: 'tire dall'indirizzo 0, per un totale di 256 interruzioni
14
. A partire dalla CPU 80286,
Modo 0: 1denbco a quello 8080. , , ," Ilella modalita di funzionarnento virtu-ale protetto, la tabella delle interruzioni eallo-
. '.. .:. cata in memoria.come un qualunque segmento nello spazio virtuale, in posizione fissa,
Modo 1. esegue comunque un restart alIa pOSlZlone 38H. ,"':" --,rna non predefimta.
. . '" In Figura4.17 viene data la temporizzazione dei segnali esterni di interesse nella
Modo 2: questo modo d1 funzlOnamento consente la massima flessibilita.. '.\ ': .:risposta all
'
interruzione. Come si vede
,
la CPU 8086 effettua non uno, bensl due dcli
?PU. ha 'uno di 8 bit, il registro 1 interruzio- ','", ... Si che all'esterno venga impiegato il controllore 8259A (PIC) di l
m) II cm V1ene 1mpIegato come parte alta dell'mdmzzo (16 bit) del. . cm S1 parla. III segulto (Cfr. 4.9)" . . . . .
vettore dl mterruZlOne. Gli otto bit meno significativi vengono forniti, sul :,.. ":::,:" ,':" ':'" La del controllore, quando e programmata 1ll modo 8086, ut1hzza il pnmo
cIo di interruzione dalla periferica che ha interratto. n vettore di interruzione ,,::-M ,:c:': 1mpulso INTA per stabilire 10 stato delle richieste di interruzione e selezionare
c?ntiene l'indirizzo della routine di servizio. Cia implica che la logica di controllo.. '. ", ,quella di e utilizza il cicio per sul b.u
s
dati il I
Sl deve comportare come se stesse eseguendo un'istruzione di CALL. II vettore di' :.;.',!,ii: : ;. d11llterruzlOne (11 Vector Type) cornspondente alia ncmesta selez1onata.
interruzione erappresentato in Figura4.16. '.. ' .... :" " Da parte sua, la l.ogica della CPU in:ame:a il di sul.secondo
. ' : , INTA,. ottenendo COSI CS:IP della routme dl serv1Z10. n salto Vlene fatto m modo
., Poiche p.arte e. data attr.averso il registro I, epossibile ','automatico
,
'salvando il contenuto di PC e di PSW (i flag) sullo stack. IE viene I
pm tabelle d1 vetton dl mterrUZlOne e decldere cia programma Quale utilizzare. La : portato a O.
stessa tabella e comunque modificabile. La cosa e originale rna e di poca utilita '.. 1a risposta all'interruzione equivale all'esecuzione, in modo
pratica, a meno di applicazioni specifiche - per esempio controlli di tempo reale - in', . " mdlV1s1blle (0 atomico), ill questa sequenza di istruzioru:
cui si possono richiedere differenti modalita. di funzionamento a seconda della state , . . . .. 1
del sistema controllato. ',"".. ' VT. valore del Vector Type (selettore d1 1nterruz10ne) !
'\1 .'
13 .. , 1 .' ;:,:' 14L'architettura 8086 prevede eccezioni e interruzioni software (trappole). Di norma la tabella
Per cornpletezza, 81 deve ncordare che 18085 (rna non 18080) possedeva., In agglUnta a INTR, ,.,.fr!.,' delle interruzioni e usat' "apoet, , I ' t "t L' t "ft I
It 4 I
'd" t ' 'd' d t' . 0 III illlOlffi <>-l. pre In errUZlOnl es erne. e In erruzlOlll so ware sono
a re mee I m errUZlOne 1n 1pen en 1. ;'" usualm,nt t ' fu .... .
. ' e usa e per Ie chlamate a. nZlOnl del slstema operatlvo.
<\
c'

La famiglia 8080/8085 prevede la possibilita di usare II controllere di interruzioni",!j
programmabile 82S9A (PIC) di cui si parla nel Paragrafo 4.9. Per operare come
.. .'.c._
descritto qui di seguito
1
il controllore cleve essere programmata per funzionare
," ,l
"modo" 8085j db richiede che al PIC vengano forniti i bit A15 - As che entreranno
!ar parte degli indirizzi delle routine di servizio chiamate. La sequenza cii ,
e congegnata nel modo seguente. "'-").1 "'Y'::,:::::;,-.,::,:_,
>' .,:"
.,- .... j - .. " ; ,
. - '. ".. '
, -, -':-
120
\
R
ee
-
PERIF I
PERIF 2
PERIF 3
I
I
INTERF
fNTERF
lNTERF
IRQ!
IACKI
IRQ2
IACK2
IRQn
IACKn
,
INTAI,
INTAI2 IN'fAl
CPU
[NTA
h'NTAOI DeL lNTA02- DeL
INTRI INTR2
INTRn
INTR
,
INTR
"
"
12 Ti
"
"
CS
IP
IP,M[VT.4]
CS ,M [VT'4+2]
12 Ti
contenuto
PUSHF
CLI
PUSH
PUSH
MOV
MOV
-
r r
r r r r r
f-
\
J
.
S(L(TT 7
INTA
'L'

DO-D7
; M[i] :
Capitola 4 122
4.7 Interruzioni annidate
1' .
'.-
__----------- --=-I1:.-=SOtt:.:::OS::i::ste=m::a:....:di_'_in,-g"r_e_"_SO-,I_u_sc_it_a__1_2_3
'il- -':.
",,' ,
'-"I""m; . ,
'J," -
.' j" ..
,t:> ,.,.,',
"""'''''' ',l"1<, . ".
'''=,_.1 -
JitC,'.I.;.. ..."",,, _
Interruzioni vettorizzate con daisy chain
,''''''''''''
.. ' ,.",
".1,/,".l-:,.."t,':' _ .
che,'sta alla ?ase della daisy equeUo di una catena
quaIe la priorita delle collegate e dalla loro ..La
della schema ,10 fa dl basso costo. VIene
..i, a.nche in altn contestl
,
come bus ?l quando c e da dlScnmrnare tra piU
': che si Puso. dl una III comune.. .
. . ,. . . . . La logica della daIsy puo smcrona 0 La S?IUZIOne
4.11 Risposta allllltenuzlOne della CPU 8086. I due eleli dl INTA SODO eOmuDque '_1\ almena per il easo delle liltecruzlOilI, quella prefenta, ill quanta non Clchlede che
eon"gUi. Ie interfaeee operino sulla base della stesso clock. La parte che segue approfon-
Ie problematiche della daisy chain nella versione asincronaj la soluzione sincrona
. ..,.., '"viene trattata nel Paragrafo 4.8.2.
della/e locazlone/l dl IndlrlZZO 1
. Salvataggio di PSW
,
Reset IE . ';jl Daisy chain asincrona
; Sal vatagglo ..
-.' -".1'" -'. '--
; c" . del PC corrente ':':. ' fu Figura4.18 viene schematizzata 1a struttura della daisy chain nella sua forma pill
arlcamento .. . ""1. ' ,.,.....;. ;.-
;'1.,\ .;; elementare.
del PC della
routlDe .{t; ''r... ':"I: .... , '
. . . .. ',' ,
C'. da aggiungere che oltre all'azzeramento di IE, Ia Iogica provvede anche all'az- .
TF (T.rapFlag), non incluso sopra per mancanza di una corrispondente
lstruzlOne di maccbma. :.. ii.'
Vistruzione IRET (Return from InteT't"Upt) esegue Ie operazioni opposte) sempre
in modo indivisibile. ':"j'} ,}','
.. ", ".-'1" ..... ,.
_: : '.. - ','
".,
.,' '. ",'
'\ ,'. . ,
'!. ,',,, "w".,_,,' ,
,''-lil,: .'.';/>"_,.:;', .',' "." :
.,'"., '.'
, . . "',' ",,".', .,'
':'-'111' '''" -.',.".
Figura 4.18 Collegamenta in daisy chain. Per comodita estata messa in evide.nza la logica
dt cantrolla della catena eli ciascuna interfaccia (DeL), anche se Qvviamente essa costituisce
: .j parte integrante delPinterfaccia stessa. 8i Dati che il segnale INTA si propaga attraverso Ie
interfacce da sinistra verso destra. 8i eassunto ,che i segnali <li interesse, come INTA e ffiQi
:1'" '.. siano attivi alti.
''1.: .. '"
....
',1-- -":':':1:,"';, -
:;;:, .:- .
.'.;, .' .' '<
..:' .. " Si noti che INTR risu!ta dal wired OR delle singo!e richieste e che la linea INTA
viene fatta propagare attraverso le interfacce. In ingresso aile interfacce lNTA viene
,;.,;;.:',<: ,indicata come INTAI, in uscita corne INTAO.
<J1 ::': ",>:, """ II criterio di fUDzionamento eil seguente.
: ";"',;" ,',
'1,;, ,
'.:--:'. ," . In nsposta alIa richiesta di interruzione 1a CPU esegue il cicio di INTA16 I asse-
':it ..':' :,' il segnale INTA in ingresso all'interfaccia di sinistra.
-. -
, ,',.' _,_
::.,' --.Y Se l'interfaccia ha asserito la richiesta d'interruzione, DeL DOD lascia propagare
';.\.' ';".' .jl segnale a valle e asserisce it segnale di interruzione riconosciuta (IACK
i
) verso
;'1';,,::'.'
';\"\'." i"
"11 ;-- ,""" che 1a temporizzazione del cicio di INTA sia come di Figura4.14, rna Con INTA
"'i:j ,,' attlvo alto.
..
. .
Y, :r, '.'.
, - .
!va ,.'
Fino a qui si esempre supposto che IE venga mantenuto disattivato durante Pintera
esecuzione della routine di servizio, in modo da escludere la possibilita. che questa
venga interrotta da altre richieste.
Si tratta di una ipotesi restrittiv3, che contrasta con Ie naturali
,
differenti priorita
delle unita. di I/O. Per esempio, I'interruzione dell'orologio, 0 meglio del contatore Ie
cui interruzioni scandiscono i tick dell'orologio, non devono andare perse, andle se e
,
in corso una routine di servizio che dura pili delPintervallo tra due tick. E necessaria
cbe la routine del dispositivo eli minore priorita. possa essere interrotta dal dispositivo
<Ii maggior priorit".
A tal fine
,
basta che il sistema di interruzione venga riabiJitato nel corso della
routine the si vuole rendere interrompibile. Dal momento in cui IE passa a 1, la
presenza di INTR asserito determina Pesecuzione di un ciclo di INTA. La macchina
(e il software) deve essere provvista di una logica tale cia garantire Pordinata chiusura.
delle routine di servizio e il ristabilimento delle condizioni esistenti al momenta della
prima interruzione. Di questi aspetti si parla con un certo dettaglio nel Paragrafo 4.9.
)
\
,
1
I
I
I

I
I
I
I
I
I
I
,I
R
ee
-
PERIF I
PERIF 2
PERIF 3
I
I
INTERF
fNTERF
lNTERF
IRQ!
IACKI
IRQ2
IACK2
IRQn
IACKn
,
INTAI,
INTAI2 IN'fAl
CPU
[NTA
h'NTAOI DeL lNTA02- DeL
INTRI INTR2
INTRn
INTR
,
INTR
"
"
12 Ti
"
"
CS
IP
IP,M[VT.4]
CS ,M [VT'4+2]
12 Ti
contenuto
PUSHF
CLI
PUSH
PUSH
MOV
MOV
-
r r
r r r r r
f-
\
J
.
S(L(TT 7
INTA
'L'

DO-D7
; M[i] :
Capitola 4 122
4.7 Interruzioni annidate
1' .
'.-
__----------- --=-I1:.-=SOtt:.:::OS::i::ste=m::a:....:di_'_in,-g"r_e_"_SO-,I_u_sc_it_a__1_2_3
'il- -':.
",,' ,
'-"I""m; . ,
'J," -
.' j" ..
,t:> ,.,.,',
"""'''''' ',l"1<, . ".
'''=,_.1 -
JitC,'.I.;.. ..."",,, _
Interruzioni vettorizzate con daisy chain
,''''''''''''
.. ' ,.",
".1,/,".l-:,.."t,':' _ .
che,'sta alla ?ase della daisy equeUo di una catena
quaIe la priorita delle collegate e dalla loro ..La
della schema ,10 fa dl basso costo. VIene
..i, a.nche in altn contestl
,
come bus ?l quando c e da dlScnmrnare tra piU
': che si Puso. dl una III comune.. .
. . ,. . . . . La logica della daIsy puo smcrona 0 La S?IUZIOne
4.11 Risposta allllltenuzlOne della CPU 8086. I due eleli dl INTA SODO eOmuDque '_1\ almena per il easo delle liltecruzlOilI, quella prefenta, ill quanta non Clchlede che
eon"gUi. Ie interfaeee operino sulla base della stesso clock. La parte che segue approfon-
Ie problematiche della daisy chain nella versione asincronaj la soluzione sincrona
. ..,.., '"viene trattata nel Paragrafo 4.8.2.
della/e locazlone/l dl IndlrlZZO 1
. Salvataggio di PSW
,
Reset IE . ';jl Daisy chain asincrona
; Sal vatagglo ..
-.' -".1'" -'. '--
; c" . del PC corrente ':':. ' fu Figura4.18 viene schematizzata 1a struttura della daisy chain nella sua forma pill
arlcamento .. . ""1. ' ,.,.....;. ;.-
;'1.,\ .;; elementare.
del PC della
routlDe .{t; ''r... ':"I: .... , '
. . . .. ',' ,
C'. da aggiungere che oltre all'azzeramento di IE, Ia Iogica provvede anche all'az- .
TF (T.rapFlag), non incluso sopra per mancanza di una corrispondente
lstruzlOne di maccbma. :.. ii.'
Vistruzione IRET (Return from InteT't"Upt) esegue Ie operazioni opposte) sempre
in modo indivisibile. ':"j'} ,}','
.. ", ".-'1" ..... ,.
_: : '.. - ','
".,
.,' '. ",'
'\ ,'. . ,
'!. ,',,, "w".,_,,' ,
,''-lil,: .'.';/>"_,.:;', .',' "." :
.,'"., '.'
, . . "',' ",,".', .,'
':'-'111' '''" -.',.".
Figura 4.18 Collegamenta in daisy chain. Per comodita estata messa in evide.nza la logica
dt cantrolla della catena eli ciascuna interfaccia (DeL), anche se Qvviamente essa costituisce
: .j parte integrante delPinterfaccia stessa. 8i Dati che il segnale INTA si propaga attraverso Ie
interfacce da sinistra verso destra. 8i eassunto ,che i segnali <li interesse, come INTA e ffiQi
:1'" '.. siano attivi alti.
''1.: .. '"
....
',1-- -":':':1:,"';, -
:;;:, .:- .
.'.;, .' .' '<
..:' .. " Si noti che INTR risu!ta dal wired OR delle singo!e richieste e che la linea INTA
viene fatta propagare attraverso le interfacce. In ingresso aile interfacce lNTA viene
,;.,;;.:',<: ,indicata come INTAI, in uscita corne INTAO.
<J1 ::': ",>:, """ II criterio di fUDzionamento eil seguente.
: ";"',;" ,',
'1,;, ,
'.:--:'. ," . In nsposta alIa richiesta di interruzione 1a CPU esegue il cicio di INTA16 I asse-
':it ..':' :,' il segnale INTA in ingresso all'interfaccia di sinistra.
-. -
, ,',.' _,_
::.,' --.Y Se l'interfaccia ha asserito la richiesta d'interruzione, DeL DOD lascia propagare
';.\.' ';".' .jl segnale a valle e asserisce it segnale di interruzione riconosciuta (IACK
i
) verso
;'1';,,::'.'
';\"\'." i"
"11 ;-- ,""" che 1a temporizzazione del cicio di INTA sia come di Figura4.14, rna Con INTA
"'i:j ,,' attlvo alto.
..
. .
Y, :r, '.'.
, - .
!va ,.'
Fino a qui si esempre supposto che IE venga mantenuto disattivato durante Pintera
esecuzione della routine di servizio, in modo da escludere la possibilita. che questa
venga interrotta da altre richieste.
Si tratta di una ipotesi restrittiv3, che contrasta con Ie naturali
,
differenti priorita
delle unita. di I/O. Per esempio, I'interruzione dell'orologio, 0 meglio del contatore Ie
cui interruzioni scandiscono i tick dell'orologio, non devono andare perse, andle se e
,
in corso una routine di servizio che dura pili delPintervallo tra due tick. E necessaria
cbe la routine del dispositivo eli minore priorita. possa essere interrotta dal dispositivo
<Ii maggior priorit".
A tal fine
,
basta che il sistema di interruzione venga riabiJitato nel corso della
routine the si vuole rendere interrompibile. Dal momento in cui IE passa a 1, la
presenza di INTR asserito determina Pesecuzione di un ciclo di INTA. La macchina
(e il software) deve essere provvista di una logica tale cia garantire Pordinata chiusura.
delle routine di servizio e il ristabilimento delle condizioni esistenti al momenta della
prima interruzione. Di questi aspetti si parla con un certo dettaglio nel Paragrafo 4.9.
)
\
,
1
I
I
I

I
I
I
I
I
I
I
,I
,
I
\
j
I
I
I
\
I
)
I
)
I
)
1
125
INTAO
II sottosistema di ingressoJuscita
....L
IRQ
"'IACK
CLR
D
QI-
SFF
Ck Q
r--c
T

,
7
INTR
JL INTAI
lACK
r
IRQ
..

,
l'interfaccia. IACKi avra una forma d'onda analoga a INTA in modo da poter
essere utilizzato dalla logica dell'interfaccia per pilotare bus dati con il selettore'}tijfl'
di interruzione, secondo la tecnica di Figura4.15c:
, _.
. :,'... ';;\'
Se Pinterfaccia non ha asserito la richiesta d'interruzione, DeL lascia
mente propagare il segriale a valle. '.
. .'.-AU ' "F'"
.'
nsegnale si propaga fino a incontrare la prima interfaccia in catena che ha asserito
13 richiesta di interruzione. . 't'i"
I'
E chiaro che 130 priorita di ogni periferica dipende dalla posizione nella dais; ..
chain: pili evicina alIa CPU e maggiore ela sua ;,{:-;::': 4:20 Logica per DCL. Se IRQ e asserito, SFF passa a 1 suI ronte di
Per capire de:e DeL faccia riferiment? 30110 schema di :'. SFF ha la di indicatore di selezionata. Per tutto iI tempo
gura.4.18, dove Vlene 11 fatto che 11 segnale INTA Vlene fatto SFF e III 1, la lm;.a INTA<? a destra e comunque in stato O. II
dall'mgresso lNTAI alFusClta INTAO. provemente ha ,10 la catena. Normalmente
viene dato 10 schema di rete. ?he soddisfa :/,,:.','c,SFFvlen,e nporlato a 0 al termme della roulme <Ii sermlO,
reqUIsito dllasclare propagare INTA se IRQ non e assento e dl non lasclarlo propagare}f ,/,-.';,;(,.; "j:::: '.<:: .
se IRQ easserito. In questo secondo caso viene asserito lACK. .:,'/t S f 1 d' 1 . . .
. -<,}.,,: ':" 1. no 1 a presenza 1 un e dl T. Esso Sl rende necessario per
,:j:e, 'lmped1re che INTA possa trasmettersl aIle penfenche a valle prima che SFF abbl'a
. " I t 16 L' 1 I d" d '
. ':: . commu a o. e emen 0 1 rItar 0 puo essere ottenuto in varia modo. Una sol .
t. . l bI' 'd I aI UZIone
_1 e,. ngeneratlva e segn e, ein Figura4.21
17
,"'" ." ..
'/:;' ..,,, . TRl
-"iG!' "' '. " ',,'" [9:> "'''
_
+-__ cD WA 11 Dl SCIlWlIT
JL. INTAI L/ INTAO .. I
INTR",I---- < '
Figura 4.19 Rete combinatoria per DOL. La rete non e utiHzzabile in quanto soggetta 4.21 Esempio di rete per 1 . d 1 '
hi
'<Ii I I bl't , a generazlOne e ntardo T
pro eml me as a t a. '>:;f, .. :.;':."" , .
" p::,':'_;.". '.
La rele di Figura4,19 e soggelta a problemi di metastabilitd per il fatlo Figura4.22 slateapporlate alcune modifiche aIlo schema di Figura4,20,
, 'f" . . .. . d' d [" d [' aI '.' ' .. , ,': ..:';'. questa caso, se 1mterfacCla Vlene seIezlOnata fa richi t di I . ,
1 pen enCI operano m mamera non srncromzzata e In Ipen ente glum ag 1 I d' . 1 es a In erruzlOne V1ene
S
'd 1 d' . 1 d' INTA hi" f 'k , .. AI.", .. men e 1sassenla,
1 1 un C1C 0 .1. e. c e mter, acela .m.a stla
lotando il bus del datI con il suo selettore dl mterruzlOne SI
k
. E poss1bIle che la
periferica i ma , a monte della kma , asserisca la propria richiesta di interruzione. In tal Ctff . ': ;;'interruzioni ann' d t . 't'
caso IACK
i
risulta asserito e l'interfaccia presenta il suo selettore di interruzione sliI'3'W .' -:/'1,.. "di internizioni Sing} 1a e e PrIOTl a LID funziona bene nel caso
bus, disasserito IN!AI II e del. tutto i -,' ' ::': ::,\.... " Si Suppon a c:e e mterruzlO.lli .
dlpendendo: (1) III CUI SI mamfesta 1a . ; "_-' ',,-.'terfaccia i di Rj ,assoclata all'in-
d,:rata e dalla velo.clta cil :.:>--,.<'.,se"il di asse.nsca la .sua :lchiesta di mterrUZlone. E evidente che,
abilItazlOne e dlSabtlItazlOne delle USClte del smgoh component!. ': ,::,;, ..:', riChiesta . nterruzlOne nmane durante l'esecuzione di la nuova
In conclusione, la soluzione combinatoria non eadeguata. Occorre una vH:me dalla CPU. Se lllvece il flip-fiop IE viene riportato a 1
che tenga canto del passaggio del fronte d'onda di INTA. Cia richiede una rete .<.::::>: '., .. ' B" dl Rilla CP.U genera un nuovo ciclo di INTA, interrompendo Ri.
quenziale come quella di Figura4.20, dove un flip-flop a commutazione sul fronte : Isogna Istmguere due Cas1:
BaHta) BYolge la funzione di riconoscimento del passaggio del fronte di INTA, Se, ': ;r",;'.:;;'=;,-:;;-=----,----,-c-
fronte d1 sahta eli INTA, la linea IRQ edlsassenta, 11 fhp-llop SFF non commula ';','" :. "", "n dlardo di p , . , ,
, . . Q ff S 1 'fr t .." 17 ropagazlOne dl un fhp-flop e normalment 'd'
I a 1 d.l IR non ha e etto. 0 0 sul pross1mo on e '. ;, " Era questa la usata nella Daisy Chain del maggIore I quello porte..
di INTA 11 flIp-flop camplOnera il suo mgresso. '- brutalmente 51 pub impiegare una cascata di porte fin PI?P-.l1 EqUIpment).
. , , 0 a re Izzare J1 ntardo deslderato
,', :';.;0 .
" ,
124 Capitola 4
I
,
I
\
j
I
I
I
\
I
)
I
)
I
)
1
125
INTAO
II sottosistema di ingressoJuscita
....L
IRQ
"'IACK
CLR
D
QI-
SFF
Ck Q
r--c
T

,
7
INTR
JL INTAI
lACK
r
IRQ
..

,
l'interfaccia. IACKi avra una forma d'onda analoga a INTA in modo da poter
essere utilizzato dalla logica dell'interfaccia per pilotare bus dati con il selettore'}tijfl'
di interruzione, secondo la tecnica di Figura4.15c:
, _.
. :,'... ';;\'
Se Pinterfaccia non ha asserito la richiesta d'interruzione, DeL lascia
mente propagare il segriale a valle. '.
. .'.-AU ' "F'"
.'
nsegnale si propaga fino a incontrare la prima interfaccia in catena che ha asserito
13 richiesta di interruzione. . 't'i"
I'
E chiaro che 130 priorita di ogni periferica dipende dalla posizione nella dais; ..
chain: pili evicina alIa CPU e maggiore ela sua ;,{:-;::': 4:20 Logica per DCL. Se IRQ e asserito, SFF passa a 1 suI ronte di
Per capire de:e DeL faccia riferiment? 30110 schema di :'. SFF ha la di indicatore di selezionata. Per tutto iI tempo
gura.4.18, dove Vlene 11 fatto che 11 segnale INTA Vlene fatto SFF e III 1, la lm;.a INTA<? a destra e comunque in stato O. II
dall'mgresso lNTAI alFusClta INTAO. provemente ha ,10 la catena. Normalmente
viene dato 10 schema di rete. ?he soddisfa :/,,:.','c,SFFvlen,e nporlato a 0 al termme della roulme <Ii sermlO,
reqUIsito dllasclare propagare INTA se IRQ non e assento e dl non lasclarlo propagare}f ,/,-.';,;(,.; "j:::: '.<:: .
se IRQ easserito. In questo secondo caso viene asserito lACK. .:,'/t S f 1 d' 1 . . .
. -<,}.,,: ':" 1. no 1 a presenza 1 un e dl T. Esso Sl rende necessario per
,:j:e, 'lmped1re che INTA possa trasmettersl aIle penfenche a valle prima che SFF abbl'a
. " I t 16 L' 1 I d" d '
. ':: . commu a o. e emen 0 1 rItar 0 puo essere ottenuto in varia modo. Una sol .
t. . l bI' 'd I aI UZIone
_1 e,. ngeneratlva e segn e, ein Figura4.21
17
,"'" ." ..
'/:;' ..,,, . TRl
-"iG!' "' '. " ',,'" [9:> "'''
_
+-__ cD WA 11 Dl SCIlWlIT
JL. INTAI L/ INTAO .. I
INTR",I---- < '
Figura 4.19 Rete combinatoria per DOL. La rete non e utiHzzabile in quanto soggetta 4.21 Esempio di rete per 1 . d 1 '
hi
'<Ii I I bl't , a generazlOne e ntardo T
pro eml me as a t a. '>:;f, .. :.;':."" , .
" p::,':'_;.". '.
La rele di Figura4,19 e soggelta a problemi di metastabilitd per il fatlo Figura4.22 slateapporlate alcune modifiche aIlo schema di Figura4,20,
, 'f" . . .. . d' d [" d [' aI '.' ' .. , ,': ..:';'. questa caso, se 1mterfacCla Vlene seIezlOnata fa richi t di I . ,
1 pen enCI operano m mamera non srncromzzata e In Ipen ente glum ag 1 I d' . 1 es a In erruzlOne V1ene
S
'd 1 d' . 1 d' INTA hi" f 'k , .. AI.", .. men e 1sassenla,
1 1 un C1C 0 .1. e. c e mter, acela .m.a stla
lotando il bus del datI con il suo selettore dl mterruzlOne SI
k
. E poss1bIle che la
periferica i ma , a monte della kma , asserisca la propria richiesta di interruzione. In tal Ctff . ': ;;'interruzioni ann' d t . 't'
caso IACK
i
risulta asserito e l'interfaccia presenta il suo selettore di interruzione sliI'3'W .' -:/'1,.. "di internizioni Sing} 1a e e PrIOTl a LID funziona bene nel caso
bus, disasserito IN!AI II e del. tutto i -,' ' ::': ::,\.... " Si Suppon a c:e e mterruzlO.lli .
dlpendendo: (1) III CUI SI mamfesta 1a . ; "_-' ',,-.'terfaccia i di Rj ,assoclata all'in-
d,:rata e dalla velo.clta cil :.:>--,.<'.,se"il di asse.nsca la .sua :lchiesta di mterrUZlone. E evidente che,
abilItazlOne e dlSabtlItazlOne delle USClte del smgoh component!. ': ,::,;, ..:', riChiesta . nterruzlOne nmane durante l'esecuzione di la nuova
In conclusione, la soluzione combinatoria non eadeguata. Occorre una vH:me dalla CPU. Se lllvece il flip-fiop IE viene riportato a 1
che tenga canto del passaggio del fronte d'onda di INTA. Cia richiede una rete .<.::::>: '., .. ' B" dl Rilla CP.U genera un nuovo ciclo di INTA, interrompendo Ri.
quenziale come quella di Figura4.20, dove un flip-flop a commutazione sul fronte : Isogna Istmguere due Cas1:
BaHta) BYolge la funzione di riconoscimento del passaggio del fronte di INTA, Se, ': ;r",;'.:;;'=;,-:;;-=----,----,-c-
fronte d1 sahta eli INTA, la linea IRQ edlsassenta, 11 fhp-llop SFF non commula ';','" :. "", "n dlardo di p , . , ,
, . . Q ff S 1 'fr t .." 17 ropagazlOne dl un fhp-flop e normalment 'd'
I a 1 d.l IR non ha e etto. 0 0 sul pross1mo on e '. ;, " Era questa la usata nella Daisy Chain del maggIore I quello porte..
di INTA 11 flIp-flop camplOnera il suo mgresso. '- brutalmente 51 pub impiegare una cascata di porte fin PI?P-.l1 EqUIpment).
. , , 0 a re Izzare J1 ntardo deslderato
,', :';.;0 .
" ,
124 Capitola 4
I
"
,
!,
i
"

127
lEO
IRQ CLR lACK
G
INTAI
: INTAO
lEI
lEO
INTR
lNUD
Ii sottosistema di ingressojuscita
CLR LACK
lNTR
Decodifica Iret
.1.
,-
, ' .
".
" '" 0
,
0
,
-
T

J
IRQ
BUS
IE>
I!<TAl
':,
'. ' .
",
'I" ,
'."'j"
.'!>'"..,,", ..' ,.,
.,'.

'.';,::;, :',;:::".,
-"!'i .' .. __ ,
':.j; ,'w:,,-, ..
'';::.;;
' .. ,,',. ; .. ,
",.
."',,," ";,'
'1 .
"j "
,
'1.
'"
.'. :.4 ',_
,:
:'-'l! "...
,

....
2:1
..,.

'.1:
.,ft
il .
,',
.\
,l

'0! .,.. '
INTAO
CLR lACK
INTR
,
,
1-
D D Q D Cl Q
f---
IFF SFF
'"
Q
"
Q
T
, , ,
IRQ
Capitolo 4
n INTAl
.-,'-;::,0: (1",-, _;
Figura 4;23 Aggiunta deUa linea di abilitazione della 'hi t eli' ,
,.)ii:!:: ' riC es a mterruzJOne.
'. 'C"_'-:'-',. _
. "" :"'.1'.'
"c.", ' ""-
:::i:l: .. ;,':,: > ,
,$';,./ I --,
servita; ::'-'::',' V OP-Fetch b \_
(,:? : " IkEJ :::j D ... CLR
b) la periferica k si trova a valle della periferica i. ,
.' :j: <>',:,' ,:,,; Figura 4.24 Decodifica del codice di ritorno dalla Touti di' . '. --
Nel pruno caso viene seleZlonata l'interfaccia k e viene quindi eseguita la relativa risulta asserito solo se sul bus dei dati passa'1 eli ne mterruzlOne. notl che CLR
, di '" d I 'di "d II" rf . ."",'. d' d"' . 1 co ce IRE! durante un Ciclo di c: 'tch d I
routme serVlZ10
1
mterrompen 0 a routme serVIZlO e mte aCCla 1., meno prio- '):':c:'" ,co Ice 11struzlOne e mentre I'interfaccia ein servizio eli' t '( e e
't ' d U" f ' k Nel did' h' fu' "",.. , ill errUZLOne lEI = 1 IEO - 0)
n ana e mter accla. secon 0 caso a rosy c am non nZlOna correttamente. ';';'41 ' -.
Infatti INTA arriva all'interfaccia i e, nella soluzione di Figura4.22, porta SFF a 0 e ":1{t . .
si propaga a valle, selezionando l'interfaccia k. nrisultato netto eche l'indicazione di :'iJ .., La S?IUZIOne ora delmeata
18
evalida solo per una CPU la c' 't' d'
interfaccia in servizio su i eandata persa, mentre eentrata in esecuzione una routine vf:i\t:>. 10. opera m modo strettamente sequenziale. Basta la semplice a 1
di interruzione meno prioritaria di quella In mIcro a renderla difficilmente applicabile. Infatti 1'oss a .1 prede t f e
Per evitare ambiguita, enecessario che la periferica cui viene dato servizio impe- ';:" del codice IRET suI bus non implica che questo venga e
disca.a a:.:aJle. di asseri-:e Ie di interruzione. Cio si ottiene aggiungendo Occorrerebbe tener traccla dello stato della coda di prefetch19. lamen e esegUlto.
una lmea di che attrave:sa .tutta l,a catena,
10 schema di Figura4.23, SI not! che se il ,egnale lEI e dlSassento, pure INTR e J <': 4.8.2 D' h' .
dlsassento) mdipendentemente daUo stato dl IFF. ' . alsy caIn Slncrona
. L'ingresso della prima periferica della catena de:ve . ,
a livello alto e qumdi sara portato a Vcc. In un data momento, nsulta m servlzlO, /',. ,,-,'. La daISY cham discussa in precedenza f' . . . '
Finterfaccia su cui si ha lEI = I,IEO = O. ' 'costruire una daisy chain funzionante m maUl:ra asmcrona. E possibile
Dobbiamo notare che la rete di Figura4.23 limita la dimensione della catena, in ,,'.', macchina. In tal caso il clock deve esse mOt smcrono al clock comune di
quanto deve essere garantita la propagazione del segnale fino all'ultima interfaccia. ';3;:1" " funzionare secondo un protocollo che r . por a 0 a Ife e queste devono
INTA. SI compone I asI, all'mterno del cicIo di
1,:>1' :'.:.0:;.":"".'
Una piccola variazione Nella discussione precedente si esempre supposto che SFF. '(. 1. Nella prima fase viene indi'ct t I" f' . .
venis.se azzerato esplicita istruzione 1/0.) posta ';;!";;:,:::'" l'interfaccia cia ilea da ser:rlre. Al di qU-
IOu.tme di. !dealmente) questa verure SUblto .:},t(:.:';:_ lmpbca il propagarsi e 10 CUI - l)IEO . O. P?lChe questa
pnma. dell'1struzlOne di ntorno, m quanto essa ha l'effetto ill nabllitare 1a catena a ,,::,' sto scopo almeno un per' d d' I k segnali, e. necessano destmare a que-
valle. consentire l'estinzione deilOfe a I c.odc. e questo. cleve avere una durata tale da
S
' , I' ch " d' d d d I' '.'1, "',.Jt", ,- nomenl 1 propagazLOne lungo tutt I t
1puo pensare a una so UZIone e eVltl lover coman are a programma azze. a a ca ena.
di Tenuto 1a routine si chiude comunque con I.RET,
il cnteno puo essere queUo di nconoscere che 1a CPU sta eseguendo tale lstruzlone, ,..: ' 19La CPU o,luzlOne era. standard dell'architettura 280.
'F' 424 '. ,," ;!,:";'.; ... t 086/88 formsce all'estern d b' ch ' ,
come In 19ura. . :'::;; ",;,". '. enerne traccia. 0 ue It e mdicano 10 stato della coda" '.l: '.
' e qUlDw paSSl bIle
'. 'y. ,:
;,',' ,', ' ,
y. "'.,..
",j :i:""w...'"",.-,:
.. ,,,. f .
Figura 4.22 11 flip-flop IFF memorizzala richiesta eli interruzione da parte dell'interfaccia.
Sut fronte di salita di INTA 10 stato di IFF viene copiato in SFF. Se IFF ein stato 1 1a
logica si seleziona, asserendo lACK e troncando la catena; IFF viene riportato a 0 e quindi
1a linea INTR risulta automaticamente disasserita.
126
f
J
l
I
I
l
I
I
I
I
,
I
I
\
"
,
!,
i
"

127
lEO
IRQ CLR lACK
G
INTAI
: INTAO
lEI
lEO
INTR
lNUD
Ii sottosistema di ingressojuscita
CLR LACK
lNTR
Decodifica Iret
.1.
,-
, ' .
".
" '" 0
,
0
,
-
T

J
IRQ
BUS
IE>
I!<TAl
':,
'. ' .
",
'I" ,
'."'j"
.'!>'"..,,", ..' ,.,
.,'.

'.';,::;, :',;:::".,
-"!'i .' .. __ ,
':.j; ,'w:,,-, ..
'';::.;;
' .. ,,',. ; .. ,
",.
."',,," ";,'
'1 .
"j "
,
'1.
'"
.'. :.4 ',_
,:
:'-'l! "...
,

....
2:1
..,.

'.1:
.,ft
il .
,',
.\
,l

'0! .,.. '
INTAO
CLR lACK
INTR
,
,
1-
D D Q D Cl Q
f---
IFF SFF
'"
Q
"
Q
T
, , ,
IRQ
Capitolo 4
n INTAl
.-,'-;::,0: (1",-, _;
Figura 4;23 Aggiunta deUa linea di abilitazione della 'hi t eli' ,
,.)ii:!:: ' riC es a mterruzJOne.
'. 'C"_'-:'-',. _
. "" :"'.1'.'
"c.", ' ""-
:::i:l: .. ;,':,: > ,
,$';,./ I --,
servita; ::'-'::',' V OP-Fetch b \_
(,:? : " IkEJ :::j D ... CLR
b) la periferica k si trova a valle della periferica i. ,
.' :j: <>',:,' ,:,,; Figura 4.24 Decodifica del codice di ritorno dalla Touti di' . '. --
Nel pruno caso viene seleZlonata l'interfaccia k e viene quindi eseguita la relativa risulta asserito solo se sul bus dei dati passa'1 eli ne mterruzlOne. notl che CLR
, di '" d I 'di "d II" rf . ."",'. d' d"' . 1 co ce IRE! durante un Ciclo di c: 'tch d I
routme serVlZ10
1
mterrompen 0 a routme serVIZlO e mte aCCla 1., meno prio- '):':c:'" ,co Ice 11struzlOne e mentre I'interfaccia ein servizio eli' t '( e e
't ' d U" f ' k Nel did' h' fu' "",.. , ill errUZLOne lEI = 1 IEO - 0)
n ana e mter accla. secon 0 caso a rosy c am non nZlOna correttamente. ';';'41 ' -.
Infatti INTA arriva all'interfaccia i e, nella soluzione di Figura4.22, porta SFF a 0 e ":1{t . .
si propaga a valle, selezionando l'interfaccia k. nrisultato netto eche l'indicazione di :'iJ .., La S?IUZIOne ora delmeata
18
evalida solo per una CPU la c' 't' d'
interfaccia in servizio su i eandata persa, mentre eentrata in esecuzione una routine vf:i\t:>. 10. opera m modo strettamente sequenziale. Basta la semplice a 1
di interruzione meno prioritaria di quella In mIcro a renderla difficilmente applicabile. Infatti 1'oss a .1 prede t f e
Per evitare ambiguita, enecessario che la periferica cui viene dato servizio impe- ';:" del codice IRET suI bus non implica che questo venga e
disca.a a:.:aJle. di asseri-:e Ie di interruzione. Cio si ottiene aggiungendo Occorrerebbe tener traccla dello stato della coda di prefetch19. lamen e esegUlto.
una lmea di che attrave:sa .tutta l,a catena,
10 schema di Figura4.23, SI not! che se il ,egnale lEI e dlSassento, pure INTR e J <': 4.8.2 D' h' .
dlsassento) mdipendentemente daUo stato dl IFF. ' . alsy caIn Slncrona
. L'ingresso della prima periferica della catena de:ve . ,
a livello alto e qumdi sara portato a Vcc. In un data momento, nsulta m servlzlO, /',. ,,-,'. La daISY cham discussa in precedenza f' . . . '
Finterfaccia su cui si ha lEI = I,IEO = O. ' 'costruire una daisy chain funzionante m maUl:ra asmcrona. E possibile
Dobbiamo notare che la rete di Figura4.23 limita la dimensione della catena, in ,,'.', macchina. In tal caso il clock deve esse mOt smcrono al clock comune di
quanto deve essere garantita la propagazione del segnale fino all'ultima interfaccia. ';3;:1" " funzionare secondo un protocollo che r . por a 0 a Ife e queste devono
INTA. SI compone I asI, all'mterno del cicIo di
1,:>1' :'.:.0:;.":"".'
Una piccola variazione Nella discussione precedente si esempre supposto che SFF. '(. 1. Nella prima fase viene indi'ct t I" f' . .
venis.se azzerato esplicita istruzione 1/0.) posta ';;!";;:,:::'" l'interfaccia cia ilea da ser:rlre. Al di qU-
IOu.tme di. !dealmente) questa verure SUblto .:},t(:.:';:_ lmpbca il propagarsi e 10 CUI - l)IEO . O. P?lChe questa
pnma. dell'1struzlOne di ntorno, m quanto essa ha l'effetto ill nabllitare 1a catena a ,,::,' sto scopo almeno un per' d d' I k segnali, e. necessano destmare a que-
valle. consentire l'estinzione deilOfe a I c.odc. e questo. cleve avere una durata tale da
S
' , I' ch " d' d d d I' '.'1, "',.Jt", ,- nomenl 1 propagazLOne lungo tutt I t
1puo pensare a una so UZIone e eVltl lover coman are a programma azze. a a ca ena.
di Tenuto 1a routine si chiude comunque con I.RET,
il cnteno puo essere queUo di nconoscere che 1a CPU sta eseguendo tale lstruzlone, ,..: ' 19La CPU o,luzlOne era. standard dell'architettura 280.
'F' 424 '. ,," ;!,:";'.; ... t 086/88 formsce all'estern d b' ch ' ,
come In 19ura. . :'::;; ",;,". '. enerne traccia. 0 ue It e mdicano 10 stato della coda" '.l: '.
' e qUlDw paSSl bIle
'. 'y. ,:
;,',' ,', ' ,
y. "'.,..
",j :i:""w...'"",.-,:
.. ,,,. f .
Figura 4.22 11 flip-flop IFF memorizzala richiesta eli interruzione da parte dell'interfaccia.
Sut fronte di salita di INTA 10 stato di IFF viene copiato in SFF. Se IFF ein stato 1 1a
logica si seleziona, asserendo lACK e troncando la catena; IFF viene riportato a 0 e quindi
1a linea INTR risulta automaticamente disasserita.
126
f
J
l
I
I
l
I
I
I
I
,
I
I
\
\
,
\
\
]
I
I
I
1
I
1
\
I
I
1
1
)
lEO
lACK
,
CLR
IRQ
'"
,
'n
oCl Q
'''''' Ir
)-D
ct,
Sl'F

, ,
INT
[EI
Quando IORQ viene a.sserita su un cicio M, (si noti I'OR tra M
J
e IORQ), SFF
passa in stato alto, riporta basso FREEZE, mantiene lEO disasserita e determina
I'impulso lACK. Si noti che essendo state portato ba.sse 10 stato di FREEZE, e
necessaria che IRQ venga riportato basso prima del prossimo MI. A tale scopo
basta ricorrere a una soluzione come nelle figure precedenti.
2, Se non fosse un cicIo di INTA, se doe si presentano altri M
1
prima di
lOR ,la situazione viene confermata. Eventualmente puo modificarsi perche
una interfaccia a piu alta priorita. richiede servizio,
Come si vede il funzionamento edi tipo sincrono, anche se si usano due segnali
corne segnali di clock. Per il progetto di una daisy chain sincrona si fa:ccia
riferimento all'esercizio 4,35.
ndistanziamento temporale dei due segnali consente di usarli come 2 cIock se-
arati. nprix:no vien.e. usato per selezionare la periferica da servire, il secondo per far
suI bus dati 11 selettore di interruzione, I dcli di wait vengoDo inseriti dalla
CPU proprio per dare modo aHa daisy chain di stabilizzarsi.

.
\
,.. ' '.

, ... "
'
Ml
GiClo bUS pr-eceo 0<0
llllimll dock
T1 T2 Tw Tw T3
I
,,\
..
- -- --
f---
--- - ---
-em
CongelaO\enlo
dai:5y chain Seletlore
=
INT'
WAIT
IORQ
Capitola 4
BUS DATI
Figura 4.25 II delo di interruzione della Z80, 11 cida eidentificato dal fatto che Ml e
IREQ sono ambedue attivi, I due cieli di wait vengono in5eriti automaticamente dalla CPU
per dar modo alla catena di stabilizzarsi.
-,..
,.... ", ..

; "'ri,', .

, '\". "'1-,',
I .-.'
'
1" .," ,"' "
....-..., "
.. II sottosistema eli ingressofuscita 129
'j"t",
-
,
--;":'\ '. ;" .
",.'\1"', '. ,
2. Nella seconda fase, viene generato il segnale INTACK
j
legandolo ai clock Bueces-
. . "";,,,-
SlY!. ,.,1-,.. '.. _ ;,
'':""i
"':-'\ .'!.!., .. "
,., -
La logica amerana presenta vantaggi ben nati in termini di sicurezza di '<:,;
menta e immunita. da fenorneni di metastabilita. Thttavia, 1a logica sincrona emalta ":',,?L ',:
piu dipendente dalla frequenza del clock e dalla specifica architettura, Per queste ';
motivD essa ha successo quando viene fornita come parte integrante della logica del ),; .,
sistema, Questo e stato il caso della daisy chain Z80 discussa qui di seguito, ',,:;.;.... "
,),.; .,
.,.", , ..' .' , . .
'. -"r
... ...
La daisy chain del microprocessore Z80 Lo Z80
1
rnicroprocessore can bus dati' :::.
a 8 bit e bus indirizzi a 16 bit, ha ,una daisy molto I periferici
da! costruttore hanno tutta 130 lOgIca necessana per operare m tale catena, funzlOnante
can logica (quasi) sincrona, ,;:B
Prima di passare aHa descrizione del suo funzionamento enecessaria illustrare il
cicio di interruzione rappresentato in ,
--,\j1, .\!"
Lo una osplicita INTA" funzione di INTA eottenuta
dalla combmazlOne dI M1 e I RQ. La linea Ml mdIca che 130 CPU sta eseguendo 1lf
un cicIo di fetchi mentre 130 linea IORQ indica che 130 CPU sta eseguendo un cielo IORQ
lettura/scrittura di I/O, E evidente che M1 e IORQ sono mutuamente esclu5ive. ,: ':,
qui 130 convenzione secondo cui le due linee contemporaneamente attive indicano un "''r!l: , 4 26 S h d , , .
'I d" t . ',AB 19ura. c ema 1 pnnclpio per logt'ca di controUo della daisy chain zao
ClC a I 1n errUZlone. ,':IV ','-";''''''' ,',. '
INT 4,25} viene sul,fronte.di salita clock ;;!.G?.{i::::,:,'> '
del ClelO di macchllla In corso, Nel caso In CID nsultl assenta (se IEFF eablhtato e . , .
NMI non easserito), la CPU da. avvio a un cielo di riconoscimento dell'interruzione . .> '. come puo congegnata la 10gIca dl controllo della daisy
d I I
, Ml D d ' d' d' I k I fr d' ai' d I "", "cham, S, faceta rtferlmento alIa FIgura 4 26 '
asseren a a IDea . opo ue penQ 1 e mezzo 1 c oc ,su onte 1 s Ita e "Uil ' '.
primo dei due cicli di wait (iDseriti dalla CPU), viene asserito anche - . '. .. .
',,'ifjf:'( , ':,:, 1. Su M, (fronte dJ dlscesa), II flIp-flop FREEZE a I su tutte Ie interfacee che
",,- nella sltuazlOne .IEI :;:;;: 1,IRQ = 1. Se plU mterfacce si trovano in tale
10 basso 51 propaga sulla linea IE dalPinterfaccia piu a sinistra
,',)}1 :'<,::;:",:-',:'" ,.., :,' con FREEZE 10 stato 1. Al termine della propagazione solo questa interfaccia
". ':",', , ' ha lEI - 1 lEO - 0
':;;'\J., , , -, -.
, , " ",' .. , .' " ,
, "".,,0,.' ,"
'.' , " . - , ,.
;.1' ,"';, 'c,,
"j '"
".:'."';:';':"" .
:',lii -(,:t-.<'-
"''''', .,./.,
,,'- 'f '.,' ,"',
..:;:!- ,'" -"', "."
., " ,
:,:, :;::' .:
'" .....,,,..
,'" ' .. ,.
.. '.
'rt '>:;",. '3,
',:r ::,v):.:.:
i>
.i? ,":;::: '
, ':-' "
" ,; .",
"c .' ,
, I , ",: -' ,
,'c' :, :
.)
. I',,' I ,.

.,.'
128
I
I
I
I
t
\
,
\
\
]
I
I
I
1
I
1
\
I
I
1
1
)
lEO
lACK
,
CLR
IRQ
'"
,
'n
oCl Q
''''''
Ir
)-D
ct,
Sl'F

, ,
INT
[EI
Quando IORQ viene a.sserita su un cicio M
,
(si noti I'OR tra M
J
e IORQ), SFF
passa in stato alto, riporta basso FREEZE, mantiene lEO disasserita e determina
I'impulso lACK. Si noti che essendo state portato ba.sse 10 stato di FREEZE, e
necessaria che IRQ venga riportato basso prima del prossimo MI. A tale scopo
basta ricorrere a una soluzione come nelle figure precedenti.
2, Se non fosse un cicIo di INTA, se doe si presentano altri M
1
prima di
lOR ,la situazione viene confermata. Eventualmente puo modificarsi perche
una interfaccia a piu alta priorita. richiede servizio,
Come si vede il funzionamento edi tipo sincrono, anche se si usano due segnali
corne segnali di clock. Per il progetto di una daisy chain sincrona si fa:ccia
riferimento all'esercizio 4,35.
ndistanziamento temporale dei due segnali consente di usarli come 2 cIock se-
arati. nprix:no vien.e. usato per selezionare la periferica da servire, il secondo per far
suI bus dati 11 selettore di interruzione, I dcli di wait vengoDo inseriti dalla
CPU proprio per dare modo aHa daisy chain di stabilizzarsi.

.
\
,.. ' '.

, ... "
'
Ml
GiClo bUS pr-eceo 0<0
llllimll dock
T1 T2 Tw Tw T3
I
,,\
..
- -- --
f---
--- - ---
-em
CongelaO\enlo
dai:5y chain Seletlore
=
INT'
WAIT
IORQ
Capitola 4
BUS DATI
Figura 4.25 II delo di interruzione della Z80, 11 cida eidentificato dal fatto che Ml e
IREQ sono ambedue attivi, I due cieli di wait vengono in5eriti automaticamente dalla CPU
per dar modo alla catena di stabilizzarsi.
-,..
,.... ", ..

; "'ri,', .

, '\". "'1-,',
I .-.'
'
1" .," ,"' "
....-..., "
.. II sottosistema eli ingressofuscita 129
'j"t",
-
,
--;":'\ '. ;" .
",.'\1"', '. ,
2. Nella seconda fase, viene generato il segnale INTACK
j
legandolo ai clock Bueces-
. . "";,,,-
SlY!. ,.,1-,.. '.. _ ;,
'':""i
"':-'\ .'!.!., .. "
,., -
La logica amerana presenta vantaggi ben nati in termini di sicurezza di '<:,;
menta e immunita. da fenorneni di metastabilita. Thttavia, 1a logica sincrona emalta ":',,?L ',:
piu dipendente dalla frequenza del clock e dalla specifica architettura, Per queste ';
motivD essa ha successo quando viene fornita come parte integrante della logica del ),; .,
sistema, Questo e stato il caso della daisy chain Z80 discussa qui di seguito, ',,:;.;.... "
,),.; .,
.,.", , ..' .' , . .
'. -"r
... ...
La daisy chain del microprocessore Z80 Lo Z80
1
rnicroprocessore can bus dati' :::.
a 8 bit e bus indirizzi a 16 bit, ha ,una daisy molto I periferici
da! costruttore hanno tutta 130 lOgIca necessana per operare m tale catena, funzlOnante
can logica (quasi) sincrona, ,;:B
Prima di passare aHa descrizione del suo funzionamento enecessaria illustrare il
cicio di interruzione rappresentato in ,
--,\j1, .\!"
Lo una osplicita INTA" funzione di INTA eottenuta
dalla combmazlOne dI M1 e I RQ. La linea Ml mdIca che 130 CPU sta eseguendo 1lf
un cicIo di fetchi mentre 130 linea IORQ indica che 130 CPU sta eseguendo un cielo IORQ
lettura/scrittura di I/O, E evidente che M1 e IORQ sono mutuamente esclu5ive. ,: ':,
qui 130 convenzione secondo cui le due linee contemporaneamente attive indicano un "''r!l: , 4 26 S h d , , .
'I d" t . ',AB 19ura. c ema 1 pnnclpio per logt'ca di controUo della daisy chain zao
ClC a I 1n errUZlone. ,':IV ','-";''''''' ,',. '
INT 4,25} viene sul,fronte.di salita clock ;;!.G?.{i::::,:,'> '
del ClelO di macchllla In corso, Nel caso In CID nsultl assenta (se IEFF eablhtato e . , .
NMI non easserito), la CPU da. avvio a un cielo di riconoscimento dell'interruzione . .> '. come puo congegnata la 10gIca dl controllo della daisy
d I I
, Ml D d ' d' d' I k I fr d' ai' d I "", "cham, S, faceta rtferlmento alIa FIgura 4 26 '
asseren a a IDea . opo ue penQ 1 e mezzo 1 c oc ,su onte 1 s Ita e "Uil ' '.
primo dei due cicli di wait (iDseriti dalla CPU), viene asserito anche - . '. .. .
',,'ifjf:'( , ':,:, 1. Su M, (fronte dJ dlscesa), II flIp-flop FREEZE a I su tutte Ie interfacee che
",,- nella sltuazlOne .IEI :;:;;: 1,IRQ = 1. Se plU mterfacce si trovano in tale
10 basso 51 propaga sulla linea IE dalPinterfaccia piu a sinistra
,',)}1 :'<,::;:",:-',:'" ,.., :,' con FREEZE 10 stato 1. Al termine della propagazione solo questa interfaccia
". ':",', , ' ha lEI - 1 lEO - 0
':;;'\J., , , -, -.
, , " ",' .. , .' " ,
, "".,,0,.' ,"
'.' , " . - , ,.
;.1' ,"';, 'c,,
"j '"
".:'."';:';':"" .
:',lii -(,:t-.<'-
"''''', .,./.,
,,'- 'f '.,' ,"',
..:;:!- ,'" -"', "."
., " ,
:,:, :;::' .:
'" .....,,,..
,'" ' .. ,.
.. '.
'rt '>:;",. '3,
',:r ::,v):.:.:
i>
.i? ,":;::: '
, ':-' "
" ,; .",
"c .' ,
, I , ",: -' ,
,'c' :, :
.)
. I',,' I ,.

.,.'
128
I
I
I
I
t
131
!RQ
lEi

lR7

Codlfico
;nte....
LC
b> Archltettl,lr'"n InterM
I MR I

CIl

,R
'-
CQrlpe
Pr-ogra"nn1.o
-
r
10 <:Boes>
0) CoUt'QG/'l"ntl
AO
OS
!RQ
""
...-
8259
INO'
!R?
tl"T'I nO-07
D8
In riferimento aHa Figura4.28b, il significate dei simboli eil seguente:
",'
Registro TR: genera il aelettore di interruzione associato a ogni interruzione (mo-
, , do 8086). I 5 bit pili signifieativi del TR sonG fiBsi (impostati da programma
in fase di inizializzazione del dispositivo). mentre gli ultimi 3 bit sana inseriti
dal PIC e rappresentano un nwnero tra 0 e 7 corrispondente al perife,ico ehe ha
richiesto llinterruzione.
n dispositivQ eprogrammabile. Sono possibili svariate modalita operative. La
programmazione si ottiene trasmettendo al PIC le cosiddette Initialization Control

interruzioni:
Capitola 4
Esempio di controllore di
il dispositivo 8259A
la gestione della priorita tra Ie interruzioni;
D'

CPU
:PI::RI ...
,
Pl:::RIF. 8 M
,.,

Cont-rollare
I
.."
delle

Inlerru-zioni
a) la vettorizzaziooe delle interruzionij
b)
: '
,
.>1..-:,,, '
',;.
I".", p, . ,. . I ",
,. '. ' , ...... ,... , ......... ""<><1... ,,;WI ,-",
,,: ... ". __------------------:;.':...::.::.:; ::.:: ::.::.=-::....::-:. . .c.:;0"'.;.'_".'.;.' _
.
. '_
\;.. " ",."

."
j "" - -
:";.", C) Ja possibilita di rilevare ie interruzioni sui fronti 0 sui livelli;
d) la capacita. di gestire fino a 64 interruzioni.
, . ;.:.!' .
E stato osservato che molte architetture prevedono 1a possibilita. di impiegare control. ,.- " Lo schema di impiego e in Figura4.27; in Figura4.28 vengono dati maggion
di perche qU,esta a1 costruttore di circail suo collegamento e sulla sua architettura interna.
ndurre at IDlDlmo la lOgIca dl controllo delle mterrUZlOnI suI chip della CPU, lasciand6 ,';;;',1;,:>',' , '
spazio per altre funzioni. D'altra parte, se si prevede un integrato aggiuntivo, questo',& '.:: ,;':
pub essere reso ragioDevolmente cornplesso e incorporare sofisticate funzionalita "'":'''.'
controllo. :;r . , ',"',"
ncomponente 82S9A (Intel) eun controllore programmabile (PIC, Programmable
IntefTUpt Controller). Esse emalta nota e ha avuto grande diffusione di mercato
quanto utilizzato come componente di supperto dei microprocessori della famiglia .';t<- .
80x86
20
. ..,
. .' '.
",\ " ,.,',
,ji'!l ..
. '." ,I,: "
"',,' ,
';', ..... ,
't,.l .J

,,/";'.,
':"'.:.,'1''-.' .. , ,
.1.(', "', "". ."
4.28 Collegamenti del contwllo,e 8259A e sua "'chitettura interna.
,",...,'. -,' , '
"".:.' ",',', ..
.." ".'. '".
..",!, '.
.. , .. . '" '
..
,""
;:,' ".',."',::',:"." ,1':'' ". ' IRR: Interrupt Request Register
. , ;\f./::..:. ; .. MR: Mask Register
FJgura 4.27 Esempio di il PIC 8259A. AI ! : I3R: In Se11Jice Register
possono essere collegate 8 linee di nchiesta di mterruZlOne IRo-7. Esso genera la i "TR Ty R . t
alIa CPU la linea INTR e immette, al tempo dovuto
1
il selettore di interruzione. "; ...' pe egls er
suI bus del dati DB. . 'I,' ,:"" ','\ ',','"., .
.. ,." .. "", ,
;:'j',<,;:;.-',.'Tali registri svolgono le seguenti funzioni.
llPIC 8259A eun molto eOlnplesso., Nella p",te che segue ei si limitaJ Registro IRR: raeeoglie Ie IRQ dei periferici e leinvia a LC. E. possibile program,
a conslderarne 80.10 gli aspettl pm tn .nfenrnento lrnplego con II micro "mare il PIC in modo da operare SUI hvelh 0 Sill frontl delle nchleste.
8086. n lettore mteressato a magglOn dettagh puo fare riferunento alIa letteratura '8, i: ...: :"\') , . ., .. ..., .
Intel [Int79b}. .. ., . . '. "& , Reg1stro MR: consente dl mascherare llldlVldualmente Ie rlchleste dllIlterruZlOue;
In smtesl Ie carattenstlche salientl del dlSPOSltIVO sana. , .t., . > Registro ISR: indica quali interruzioni sooo in servizio in quel momenta per it
,. ',. "
:(H ''"' -: ','" - ",:-: PIC. Piu specificatarnente, ISRi = 1 indica che ein servizio l'interruzione ima
1. " '.,1",' .. " '. In questa caso eventuali richieste di piu bassa priorita della i
ma
non vengono
';)i: .' considerate. Nello stesso istante possono essere asseriti piu bit di ISR (si veda
ij' . '
... ' '.piu avanti).
..
zOn dispositivo, come gill. accennato, poteva anche essere impiegato a supporto della famiglia . ,.;.
8080/8085. Nuovi e piu moderni controllod di interruzione sono oggi disponibili sui mercato, tra '
cui il cornponente 82489DX (Advanced Progmmmable InternJpt Controller, APIC) [lnt92J, [lnt93).
Tuttavia il PIC resta uno dei componenti di maggior successo. Poco d.opo I'introduzione dell,: .:JI:
CPU 8086 e 8088, l'lnt.el introdusse i micro 80186 e 80188, evoluzione tecnologica dei precedentl ..*.)
e contenenti it PIC in Conna integrata. Piu recentemente (1994) l'Intel ba immesso sui mercato
il componente 80386E. La. lettera. E serve a. denotare che esso e destinato a.lla applicazi.oni
embedded. Si tra.tta. in pratica di un microcontrollore costruito a partire dal 386, II dlSPOSltlVO
integl"' il cont,oUore di interruzioni 8259A",..jt::o;, .. :'
130
4.9
I
I
\
\
\
I
I
l
I
I
i
I
I
]
I
I
I

131
!RQ
lEi

lR7

Codlfico
;nte....
LC
b> Archltettl,lr'"n InterM
I MR I

CIl

,R
'-
CQrlpe
Pr-ogra"nn1.o
-
r
10 <:Boes>
0) CoUt'QG/'l"ntl
AO
OS
!RQ
""
...-
8259
INO'
!R?
tl"T'I nO-07
D8
In riferimento aHa Figura4.28b, il significate dei simboli eil seguente:
",'
Registro TR: genera il aelettore di interruzione associato a ogni interruzione (mo-
, , do 8086). I 5 bit pili signifieativi del TR sonG fiBsi (impostati da programma
in fase di inizializzazione del dispositivo). mentre gli ultimi 3 bit sana inseriti
dal PIC e rappresentano un nwnero tra 0 e 7 corrispondente al perife,ico ehe ha
richiesto llinterruzione.
n dispositivQ eprogrammabile. Sono possibili svariate modalita operative. La
programmazione si ottiene trasmettendo al PIC le cosiddette Initialization Control

interruzioni:
Capitola 4
Esempio di controllore di
il dispositivo 8259A
la gestione della priorita tra Ie interruzioni;
D'

CPU
:PI::RI ...
,
Pl:::RIF. 8 M
,.,

Cont-rollare
I
.."
delle

Inlerru-zioni
a) la vettorizzaziooe delle interruzionij
b)
: '
,
.>1..-:,,, '
',;.
I".", p, . ,. . I ",
,. '. ' , ...... ,... , ......... ""<><1... ,,;WI ,-",
,,: ... ". __------------------:;.':...::.::.:; ::.:: ::.::.=-::....::-:. . .c.:;0"'.;.'_".'.;.' _
.
. '_
\;.. " ",."

."
j "" - -
:";.", C) Ja possibilita di rilevare ie interruzioni sui fronti 0 sui livelli;
d) la capacita. di gestire fino a 64 interruzioni.
, . ;.:.!' .
E stato osservato che molte architetture prevedono 1a possibilita. di impiegare control. ,.- " Lo schema di impiego e in Figura4.27; in Figura4.28 vengono dati maggion
di perche qU,esta a1 costruttore di circail suo collegamento e sulla sua architettura interna.
ndurre at IDlDlmo la lOgIca dl controllo delle mterrUZlOnI suI chip della CPU, lasciand6 ,';;;',1;,:>',' , '
spazio per altre funzioni. D'altra parte, se si prevede un integrato aggiuntivo, questo',& '.:: ,;':
pub essere reso ragioDevolmente cornplesso e incorporare sofisticate funzionalita "'":'''.'
controllo. :;r . , ',"',"
ncomponente 82S9A (Intel) eun controllore programmabile (PIC, Programmable
IntefTUpt Controller). Esse emalta nota e ha avuto grande diffusione di mercato
quanto utilizzato come componente di supperto dei microprocessori della famiglia .';t<- .
80x86
20
. ..,
. .' '.
",\ " ,.,',
,ji'!l ..
. '." ,I,: "
"',,' ,
';', ..... ,
't,.l .J

,,/";'.,
':"'.:.,'1''-.' .. , ,
.1.(', "', "". ."
4.28 Collegamenti del contwllo,e 8259A e sua "'chitettura interna.
,",...,'. -,' , '
"".:.' ",',', ..
.." ".'. '".
..",!, '.
.. , .. . '" '
..
,""
;:,' ".',."',::',:"." ,1':'' ". ' IRR: Interrupt Request Register
. , ;\f./::..:. ; .. MR: Mask Register
FJgura 4.27 Esempio di il PIC 8259A. AI ! : I3R: In Se11Jice Register
possono essere collegate 8 linee di nchiesta di mterruZlOne IRo-7. Esso genera la i "TR Ty R . t
alIa CPU la linea INTR e immette, al tempo dovuto
1
il selettore di interruzione. "; ...' pe egls er
suI bus del dati DB. . 'I,' ,:"" ','\ ',','"., .
.. ,." .. "", ,
;:'j',<,;:;.-',.'Tali registri svolgono le seguenti funzioni.
llPIC 8259A eun molto eOlnplesso., Nella p",te che segue ei si limitaJ Registro IRR: raeeoglie Ie IRQ dei periferici e leinvia a LC. E. possibile program,
a conslderarne 80.10 gli aspettl pm tn .nfenrnento lrnplego con II micro "mare il PIC in modo da operare SUI hvelh 0 Sill frontl delle nchleste.
8086. n lettore mteressato a magglOn dettagh puo fare riferunento alIa letteratura '8, i: ...: :"\') , . ., .. ..., .
Intel [Int79b}. .. ., . . '. "& , Reg1stro MR: consente dl mascherare llldlVldualmente Ie rlchleste dllIlterruZlOue;
In smtesl Ie carattenstlche salientl del dlSPOSltIVO sana. , .t., . > Registro ISR: indica quali interruzioni sooo in servizio in quel momenta per it
,. ',. "
:(H ''"' -: ','" - ",:-: PIC. Piu specificatarnente, ISRi = 1 indica che ein servizio l'interruzione ima
1. " '.,1",' .. " '. In questa caso eventuali richieste di piu bassa priorita della i
ma
non vengono
';)i: .' considerate. Nello stesso istante possono essere asseriti piu bit di ISR (si veda
ij' . '
... ' '.piu avanti).
..
zOn dispositivo, come gill. accennato, poteva anche essere impiegato a supporto della famiglia . ,.;.
8080/8085. Nuovi e piu moderni controllod di interruzione sono oggi disponibili sui mercato, tra '
cui il cornponente 82489DX (Advanced Progmmmable InternJpt Controller, APIC) [lnt92J, [lnt93).
Tuttavia il PIC resta uno dei componenti di maggior successo. Poco d.opo I'introduzione dell,: .:JI:
CPU 8086 e 8088, l'lnt.el introdusse i micro 80186 e 80188, evoluzione tecnologica dei precedentl ..*.)
e contenenti it PIC in Conna integrata. Piu recentemente (1994) l'Intel ba immesso sui mercato
il componente 80386E. La. lettera. E serve a. denotare che esso e destinato a.lla applicazi.oni
embedded. Si tra.tta. in pratica di un microcontrollore costruito a partire dal 386, II dlSPOSltlVO
integl"' il cont,oUore di interruzioni 8259A",..jt::o;, .. :'
130
4.9
I
I
\
\
\
I
I
l
I
I
i
I
I
]
I
I
I

I
I
)
1
l
I
1
\
!
I
1
i
I
\
1
\
/
,
(4.1)
''''''0
y I"''''''
, . .
Y ...
'."7
y
,

'RO
,.,
"0
lRo ISH" + ill
l
(ISRo + ISR1) +
+ IR,(ISRo + ISR
1
+ lSR,) + ... + ill7 (ISH" + ... + lSR7 )
INTR=
,
noti che a seguito del passaggio a 1 di lSRi, il contrib4to a lNTR di IR
j
e delle richieste a
minor priorita e0 e che INTR viene disasserita. Si veda anche I'Esercizio 4.36,
4.9.4 Riconoscimento di livelli 0 dei fronti
n controllore 8259A puo essere programmato per operare sui livelli a sui fronti dei
.. segnali IR.
:. '- Indipendentemente dal modo in cui lavora (e quindi anche se opera sui fronti),
enecessario che 1a ricbiesta di interruzione resti asserita almeno fino al fronte dj
'discesa di INTA. In caao contrario la 10gica risponde come se fosse, attiva la richiesta
. :IR,... In'pratica se it PIC lavora sui livelli, tutto avviene come se IRR fosse del tutto
trasparente; se lavora sui fronti 1a richiesta di interruzione viene memorizzata in IRR
.,: solo suI ronte di discesa del prossimo INTA. In conclusione, la tra Ie due
.. modalit" consiste semplicemente nel fatto che facendo lavorare iI PIC sui fronti, e
Mascheramento
21 L'impiego con la famiglia 8080/85 estato trattato nel Paragrafo 4.6.2. La scelta del modo 8085
o 8086 si impone attraverso ICWl.
4.9,3 Priorita
4.9.2
4.9,1 Vettorizzazione delle interruzioni
- "

'I"r,.; '.
';';' ;." (1
1',,1 ';,i."

132 Capitele 4 ::P::TC , It sottosistema <Ii ingresso/uscita 133
..'il., .'..
.',
, ,," , ..... :
Words (leW). Durante iI, funzionamento viene 1: Operation ,.. , non ein 0 a.sserita !Roi ..
Control Words (OCW). Sia Ie ICW che Ie OCW sono dJ 8 bit. Il pledino A
o
>.: ._non ein servlzlO II hveUo 0 ne II hvello 1 ed eassenta ill,;
essere assento a 0 0 a 1 a seconda della parola cil cantrella trasmessa. Nel casa di ". "',. ,'.' ce., '
impiego con 8088 il bus ea 8 bit, iI piedino Ao del PIC viene collegato alIa linea 1
0
.:':; 'In termini di logica booleana si ha:
del bus indirizzi e i due indirizzi riconosciuti cia! dispositivQ risultano consecutivi. Nel '.,: '.'
., .' ,
caso di impiego con 8086, poiche il PIC e necessariamente callegata a una delle due ';
meta del bus dati) non epossibile collegare il piedino A
o
alla linea 1
0
del bus indirizzi ....1
perche quando 1'8086 trasmette sulla parte bassa del bus dati la linea 1
0
esempre ;.'," .,' ,
O. Il problema e risolto collegando ad A
o
la linea h e dando al PIC due indirizzi "" . ,:','
pari consecutivi (di cui il primo deve essere divisibile per 4, in modo che quando si .',. ">,' .'D' . si ottiene can facili passaggi:
'di' II' I' 0) .'. a CUi
trasmette a questa III nzzo a mea 1 Sla a . I;':,1 .:", . '.: _ "
Come gia anticipato, la parte che segue illustra il funzionamento in modo 8086'1. i:'J '" c. :.1NTR = ISH,,(!R> + ISR
1
(ill, + ISR,(ill, + ... (lR<. + lSR7 ill7
" ..", . , .
'i:" "
."'::<". '; :AlPespressione 4.1 corrisponde l'arbitro di priorita di 4.29.
. . (" ' 'Sui primo cielo di IN'1'A che segue 1a richiesta di interruzione, 1a logica del PIC
,:)1' , .... seleziona 1a richiesta da servire e asserisce il corrispondente. ISH;22. Sul secondo cicIo
... ... ;, '.. ':' .viene presentato suI bus dati il selettore d.i interruzione che contiene codificato il
Ad ogru mgresso ffii cornsponde un elemento del vettore dllOterruzlOne. II d' d . della richiesta servita.
tamento del dispositivo per quanto si riferisce alla vettorizzazione delle interruzioni 'numerO or me
... "J
gil; stato completamente descritto (Crr. 4.6.2. Si veda anche Figura4.17). '):."
11 selettore (Vector Type) erappresentato dal contenuto di TR di Figura4.28.. : '
. '.
,1;(l ,: " , . '
-.:' -';,
,Hq ;.
. :. '
, . }Ii,
p' . .'
;. '...; " ,
nregistro MR consente di mascherare individualmente Ie interruzioni. In altri termini, '::;; "" .'; I
se il bit i mo di MR edisasserito
l
la richiesta di interruzione non evisibile dalla 10gica ;';:tJ ::'>--:: .
del PIC. Cia permette l'abilitazione/disabilitazione individuale delle interruzioni. . ;'.-,., d' '.' d 11' b' d' '.)' L li 'n_ lR . t I
" ' Figura 4.29 Schema e ar ltro 1 pnorlto... e nee u.\.() - 7 vanno In ese come e
:' richieste di interruzione a va.lle della corrispondente porta di mascheramento.
,...'
,:,.-., -
..... "- ..
r ' .
j--; " ;....
. '
,"1'; .
Le linee ISRo_r sono gestite su base prioritaria. Sooo possibili diverse tecniche di ,:',11; ,':
gestione, tutte programmabili e modificabili in fase di impiego. La priorita puo essere :.-
issa 0 rotante. ';
".
In case di priorita fissa, se non altrimenti programmata, la priorita massima e
assegnata a ISRo e la minima a ISRr . E sempre p08sibile, anche dopo 331'
::ssegnare 1a priorita. massima a In questa caso .la. priorita. ')!!:
mmuua nsulta assegnata a !SRi_i. La pnonta pub essere resa rotante, Sla m modo 'q
automatico sia in modo controllato dalFutente. Per ulteriori dettagli si rimanda aIle
pubblic3zioni lntel [lnt78] [lnt79b). . i'
Nella generazione della richiesta di interruzione e nella scelta della richiesta da
service entra in gioco non solo la priorita, rna anche 10 stato del registro ISR. Pili
specmcatamente, assumendo che la massima priorita sia assegnata a ISRo, INTR .) >
viene asserita se: :-:1
.
" ;.
\
I
I
)
1
l
I
1
\
!
I
1
i
I
\
1
\
/
,
(4.1)
''''''0
y I"''''''
, . .
Y ...
'."7
y
,

'RO
,.,
"0
lRo ISH" + ill
l
(ISRo + ISR
1
) +
+ IR,(ISRo + ISR
1
+ lSR,) + ... + ill
7
(ISH" + ... + lSR
7
)
INTR=
,
noti che a seguito del passaggio a 1 di lSRi, il contrib4to a lNTR di IR
j
e delle richieste a
minor priorita e0 e che INTR viene disasserita. Si veda anche I'Esercizio 4.36,
4.9.4 Riconoscimento di livelli 0 dei fronti
n controllore 8259A puo essere programmato per operare sui livelli a sui fronti dei
.. segnali IR.
:. '- Indipendentemente dal modo in cui lavora (e quindi anche se opera sui fronti),
enecessario che 1a ricbiesta di interruzione resti asserita almeno fino al fronte dj
'discesa di INTA. In caao contrario la 10gica risponde come se fosse, attiva la richiesta
. :IR,... In'pratica se it PIC lavora sui livelli, tutto avviene come se IRR fosse del tutto
trasparente; se lavora sui fronti 1a richiesta di interruzione viene memorizzata in IRR
.,: solo suI ronte di discesa del prossimo INTA. In conclusione, la tra Ie due
.. modalit" consiste semplicemente nel fatto che facendo lavorare iI PIC sui fronti, e
Mascheramento
21 L'impiego con la famiglia 8080/85 estato trattato nel Paragrafo 4.6.2. La scelta del modo 8085
o 8086 si impone attraverso ICWl.
4.9,3 Priorita
4.9.2
4.9,1 Vettorizzazione delle interruzioni
- "

'I"r,.; '.
';';' ;." (1
1',,1 ';,i."

132 Capitele 4 ::P::TC , It sottosistema <Ii ingresso/uscita 133
..'il., .'..
.',
, ,," , ..... :
Words (leW). Durante iI, funzionamento viene 1: Operation ,.. , non ein 0 a.sserita !Roi ..
Control Words (OCW). Sia Ie ICW che Ie OCW sono dJ 8 bit. Il pledino A
o
>.: ._non ein servlzlO II hveUo 0 ne II hvello 1 ed eassenta ill,;
essere assento a 0 0 a 1 a seconda della parola cil cantrella trasmessa. Nel casa di ". "',. ,'.' ce., '
impiego con 8088 il bus ea 8 bit, iI piedino Ao del PIC viene collegato alIa linea 1
0
.:':; 'In termini di logica booleana si ha:
del bus indirizzi e i due indirizzi riconosciuti cia! dispositivQ risultano consecutivi. Nel '.,: '.'
., .' ,
caso di impiego con 8086, poiche il PIC e necessariamente callegata a una delle due ';
meta del bus dati) non epossibile collegare il piedino A
o
alla linea 1
0
del bus indirizzi ....1
perche quando 1'8086 trasmette sulla parte bassa del bus dati la linea 1
0
esempre ;.'," .,' ,
O. Il problema e risolto collegando ad A
o
la linea h e dando al PIC due indirizzi "" . ,:','
pari consecutivi (di cui il primo deve essere divisibile per 4, in modo che quando si .',. ">,' .'D' . si ottiene can facili passaggi:
'di' II' I' 0) .'. a CUi
trasmette a questa III nzzo a mea 1 Sla a . I;':,1 .:", . '.: _ "
Come gia anticipato, la parte che segue illustra il funzionamento in modo 8086'1. i:'J '" c. :.1NTR = ISH,,(!R> + ISR
1
(ill, + ISR,(ill, + ... (lR<. + lSR7 ill7
" ..", . , .
'i:" "
."'::<". '; :AlPespressione 4.1 corrisponde l'arbitro di priorita di 4.29.
. . (" ' 'Sui primo cielo di IN'1'A che segue 1a richiesta di interruzione, 1a logica del PIC
,:)1' , .... seleziona 1a richiesta da servire e asserisce il corrispondente. ISH;22. Sul secondo cicIo
... ... ;, '.. ':' .viene presentato suI bus dati il selettore d.i interruzione che contiene codificato il
Ad ogru mgresso ffii cornsponde un elemento del vettore dllOterruzlOne. II d' d . della richiesta servita.
tamento del dispositivo per quanto si riferisce alla vettorizzazione delle interruzioni 'numerO or me
... "J
gil; stato completamente descritto (Crr. 4.6.2. Si veda anche Figura4.17). '):."
11 selettore (Vector Type) erappresentato dal contenuto di TR di Figura4.28.. : '
. '.
,1;(l ,: " , . '
-.:' -';,
,Hq ;.
. :. '
, . }Ii,
p' . .'
;. '...; " ,
nregistro MR consente di mascherare individualmente Ie interruzioni. In altri termini, '::;; "" .'; I
se il bit i
mo
di MR edisasserito
l
la richiesta di interruzione non evisibile dalla 10gica ;';:tJ ::'>--:: .
del PIC. Cia permette l'abilitazione/disabilitazione individuale delle interruzioni. . ;'.-,., d' '.' d 11' b' d' '.)' L li 'n_ lR . t I
" ' Figura 4.29 Schema e ar ltro 1 pnorlto... e nee u.\.() - 7 vanno In ese come e
:' richieste di interruzione a va.lle della corrispondente porta di mascheramento.
,...'
,:,.-., -
..... "- ..
r ' .
j--; " ;....
. '
,"1'; .
Le linee ISRo_r sono gestite su base prioritaria. Sooo possibili diverse tecniche di ,:',11; ,':
gestione, tutte programmabili e modificabili in fase di impiego. La priorita puo essere :.-
issa 0 rotante. ';
".
In case di priorita fissa, se non altrimenti programmata, la priorita massima e
assegnata a ISRo e la minima a ISR
r
. E sempre p08sibile, anche dopo 331'
::ssegnare 1a priorita. massima a In questa caso .la. priorita. ')!!:
mmuua nsulta assegnata a !SRi_i. La pnonta pub essere resa rotante, Sla m modo 'q
automatico sia in modo controllato dalFutente. Per ulteriori dettagli si rimanda aIle
pubblic3zioni lntel [lnt78] [lnt79b). . i'
Nella generazione della richiesta di interruzione e nella scelta della richiesta da
service entra in gioco non solo la priorita, rna anche 10 stato del registro ISR. Pili
specmcatamente, assumendo che la massima priorita sia assegnata a ISRo, INTR .) >
viene asserita se: :-:1
.
" ;.
\
I '
,
, ,
,
I '
I;
I "
i f
I .
I ;
II
,
I
I
135
interruzioni trattamento di una sequenza di
Esempio di
nidificate
Le interruzioni avvengono secondo Pordine temporale di Figura4,31. In partico-
lare Ie interruzioni IR
2
e IR
4
sana coincidenti
24
,
Si parte da una condizione in cui non easserita alcuna richiesta di interruzione,
con il sistema di interruzione abilitato.
AWistante t2, nel corso di R2, prima che in R2 venga riabilitato il sistema di
interruzione> viene asserita IR
l
. Conseguentemente INTR viene di nuovo asserita.
All'esecuzione delPistruzione STl in R2, all'istante t3, si genera un'altra fase di
INTA, In questo caso i! PIC fa saltare a Rl. Ne! corso diRl ISR
I
viene riportato
basso (istante t
4
), mentre il sistema di interruzione viene riabilitato (istante ts).
La routine arriva a compimento e l'esecuzione di mET riporta al punta in cui si e
verificata l'interruzione in R2. n fatto che Rl abbia azzerato ISR
I
e riabilitato il
sistema di interruzione non ha avuto conseguenze, in quanta il PIC ha rnantenuto
INTR disasserito a causa di ISR2'

'1
.
..
.
IR(l
+

, ..
prima che questa possa generare .,;.j;
Ca.pitola 4
23Per l'esa.ttezza., si deve trasmettere OCW2,
a) .EOl automatico;
b) EOI comandato da programma,
'!:f.... "
-

,:r."':::->J
" ".; 1.
IJj,.t-ilIo'.:.": .
" ,
:t.. ..
.Iii:;
, r','1 ",.,< ," .
.. , .,....'- ',":'-,
"- .. ....,.-
..:... 0 via.mente la prima modalita, ancorche piu efficiente, cleve essere usata con
... /'" : prudenza, perche essa induce facilrnente un comportamento euoneo. Nella
che segue si assume non la ..
La Figura4.30 schematlzza PesecuzlOne dl una routme dt serVlZlO.
:>... . --.;.
"
j
... ,
. ",' " "'-, '
'IJr',,: .. ,
1,:',1>' ... ",'
.,.,!;..'..
,,,">' ..4' 9 6
" "-:" ;'. . .
.. ,
, ..
..,."
. 'raccogliere Ie idee, ora il del sistema CPU-PIC in
di schematizzare il modell? di .della di servizio risulta ne. a una sequ:nz,a dl mterrUZlOlli.
cessano spendere due parole su dl una ultenore carattenst,ca dell'8259A, . 51 fanno Ie seguent, . ,', . ,
';-:il Le mterrUZlOm hanna pnonta fissa. IRa ha pnonta massuna lR7 Illimma.
. ,.,:.f.. l '.-;
., , ...
""'t.....
.uc.. dl -' ",.' ",1';""" -:--' 2,
IItl Sm;lJo ' "
______ '.
, .. ';,!rn ,
" 'rr,\!' "', C'- -,'
.',f!;;j. ,: .... 3
r '
.,. ,'" ,'.
"'"I':'..
I bit ISRi vengono azzerati nel corso delle relative routine di servizio. Da un punta
.,j\i ",' di vista pratico questa equivale ad assumere che il programmatore trasmette al
Figura 4:30 Schema. della. routine di servizio per il caso di non AEOI. La figura. vuole ;;tm :,rrlt};:<.':- 'PIC l'appropriata parola di comando.
evidenziare che nel saltare alIa. routine, nel cicio di riconoscimento dell'interruzione, viene ':;,;M , . .
asserito ISH.; nel PIC e viene disabilita.to il sistema di interruzione della CPU, Si e supposto 5, Le richieste di interruzione I R
j
vengono azzerate appena il centrolla entra nel-
che la routine di servizio riparti ISRj a 0 prima. dell'istruzione IREI-. "180 routi,ne di servizio e, comunque, prima che all'internp di essa venga
"'. azzerato II relatlvo ISRi'
.. ::' " " ,
,. E detto sui viene il bit di ..Si riferime.nto schema di Figura4,31 e di Figura4.32 e si osservino, in
alllDterruzlOne che Vlene servlta. Cl sono essenzlalmente due modahta per 1 seguentl eventl
basso tale bit, ovvero per notiJicare al PIC !a fine dell'interruzione (End Of Interrupt, "*,,,,:;:: All' 'I PIC 'INTR d' IR IR A d II '
EOl): '1stante tl 1 35sensce ,acausa I 2 e 4.. causa e a maggIOre
,:\:! \", .:. . priorita. viene servita IR
2
, Conseguentemente il controllore genera il selettore che
',;m ?\C il salt? alla. routine di servizio (R2). Si noti che, entrati in R2,
.....';.:! ....' INTR e dlsassento a causa dl ISR2'
"L. .-
,
';:Jl '.',.','
...o>! ,,' "
'::" "(.',. .. '.,
, .,,: , '
Ne! caso di EOI automatico (AEOI) il bit dell'interruzione servita (ISR,) viene "'( ";',:::' ,
automaticamente riportato basso sui fronte di salita del secondo INTA. In tal modo. '\;': __
per la logica del PIC, IRj non epiu in servizio e quindi viene asserita l'uscita INTR .:".:"."
per eventuali interruzioni di minor priorita. (ovvero per 1a medesima interruzione se il ,.'
dispositivo eprogrammato a lavorare sui livelli e eancora asserit'a). .' .
Nel caso di EOI comanda.to da programma, spetta at programmatore decldere ,
il momento in cui viene riportato a 0, trasmettendo una parola di comando at .J .
dispositiv0
23
. . J .. '
';.:1 : ','.', .
, 't( .. '"':""","
';;1 : '. '., '411 termine coinddente deve essere inteso in rapporlo alia ca.paciU. di discriminazione del sistema:
.' :'>" ;:'" ,sui primo cido di INTA sono ambedue presenti.
".
" :. ,r":'" -.
'f';; ;;J!:(If.. :.",'
" ,., t,:;.
4.9.5 Schema di esecuzione della routine di servizio
necessaria una transizione di stato sulla linea IRi
un'interruzione,
Ovviamente l'impiego sui fronti emeno soggetto a malIunzionamenti.
sui livelli ecia riservare a queUe situazioni in cui si vuole che 1a medesima linea di i:
.. ',
ricbiesta resti attiva (perche
1
per esempio, costituisce l'OR di pili richieste e si vuole
evitare che, operando sui ronti, parte di esse possa andare perduta). Xli
'"r
134
\
I
I
\
)

I
\
I
1
!
I
I
l
\
I
I '
,
, ,
,
I '
I;
I "
i f
I .
I ;
II
,
I
I
135
interruzioni trattamento di una sequenza di
Esempio di
nidificate
Le interruzioni avvengono secondo Pordine temporale di Figura4,31. In partico-
lare Ie interruzioni IR
2
e IR
4
sana coincidenti
24
,
Si parte da una condizione in cui non easserita alcuna richiesta di interruzione,
con il sistema di interruzione abilitato.
AWistante t2, nel corso di R2, prima che in R2 venga riabilitato il sistema di
interruzione> viene asserita IR
l
. Conseguentemente INTR viene di nuovo asserita.
All'esecuzione delPistruzione STl in R2, all'istante t3, si genera un'altra fase di
INTA, In questo caso i! PIC fa saltare a Rl. Ne! corso diRl ISR
I
viene riportato
basso (istante t
4
), mentre il sistema di interruzione viene riabilitato (istante ts).
La routine arriva a compimento e l'esecuzione di mET riporta al punta in cui si e
verificata l'interruzione in R2. n fatto che Rl abbia azzerato ISR
I
e riabilitato il
sistema di interruzione non ha avuto conseguenze, in quanta il PIC ha rnantenuto
INTR disasserito a causa di ISR2'

'1
.
..
.
IR(l
+

, ..
prima che questa possa generare .,;.j;
Ca.pitola 4
23Per l'esa.ttezza., si deve trasmettere OCW2,
a) .EOl automatico;
b) EOI comandato da programma,
'!:f.... "
-

,:r."':::->J
" ".; 1.
IJj,.t-ilIo'.:.": .
" ,
:t.. ..
.Iii:;
, r','1 ",.,< ," .
.. , .,....'- ',":'-,
"- .. ....,.-
..:... 0 via.mente la prima modalita, ancorche piu efficiente, cleve essere usata con
... /'" : prudenza, perche essa induce facilrnente un comportamento euoneo. Nella
che segue si assume non la ..
La Figura4.30 schematlzza PesecuzlOne dl una routme dt serVlZlO.
:>... . --.;.
"
j
... ,
. ",' " "'-, '
'IJr',,: .. ,
1,:',1>' ... ",'
.,.,!;..'..
,,,">' ..4' 9 6
" "-:" ;'. . .
.. ,
, ..
..,."
. 'raccogliere Ie idee, ora il del sistema CPU-PIC in
di schematizzare il modell? di .della di servizio risulta ne. a una sequ:nz,a dl mterrUZlOlli.
cessano spendere due parole su dl una ultenore carattenst,ca dell'8259A, . 51 fanno Ie seguent, . ,', . ,
';-:il Le mterrUZlOm hanna pnonta fissa. IRa ha pnonta massuna lR7 Illimma.
. ,.,:.f.. l '.-;
., , ...
""'t.....
.uc.. dl -' ",.' ",1';""" -:--' 2,
IItl Sm;lJo ' "
______ '.
, .. ';,!rn ,
" 'rr,\!' "', C'- -,'
.',f!;;j. ,: .... 3
r '
.,. ,'" ,'.
"'"I':'..
I bit ISRi vengono azzerati nel corso delle relative routine di servizio. Da un punta
.,j\i ",' di vista pratico questa equivale ad assumere che il programmatore trasmette al
Figura 4:30 Schema. della. routine di servizio per il caso di non AEOI. La figura. vuole ;;tm :,rrlt};:<.':- 'PIC l'appropriata parola di comando.
evidenziare che nel saltare alIa. routine, nel cicio di riconoscimento dell'interruzione, viene ':;,;M , . .
asserito ISH.; nel PIC e viene disabilita.to il sistema di interruzione della CPU, Si e supposto 5, Le richieste di interruzione I R
j
vengono azzerate appena il centrolla entra nel-
che la routine di servizio riparti ISRj a 0 prima. dell'istruzione IREI-. "180 routi,ne di servizio e, comunque, prima che all'internp di essa venga
"'. azzerato II relatlvo ISRi'
.. ::' " " ,
,. E detto sui viene il bit di ..Si riferime.nto schema di Figura4,31 e di Figura4.32 e si osservino, in
alllDterruzlOne che Vlene servlta. Cl sono essenzlalmente due modahta per 1 seguentl eventl
basso tale bit, ovvero per notiJicare al PIC !a fine dell'interruzione (End Of Interrupt, "*,,,,:;:: All' 'I PIC 'INTR d' IR IR A d II '
EOl): '1stante tl 1 35sensce ,acausa I 2 e 4.. causa e a maggIOre
,:\:! \", .:. . priorita. viene servita IR
2
, Conseguentemente il controllore genera il selettore che
',;m ?\C il salt? alla. routine di servizio (R2). Si noti che, entrati in R2,
.....';.:! ....' INTR e dlsassento a causa dl ISR2'
"L. .-
,
';:Jl '.',.','
...o>! ,,' "
'::" "(.',. .. '.,
, .,,: , '
Ne! caso di EOI automatico (AEOI) il bit dell'interruzione servita (ISR,) viene "'( ";',:::' ,
automaticamente riportato basso sui fronte di salita del secondo INTA. In tal modo. '\;': __
per la logica del PIC, IRj non epiu in servizio e quindi viene asserita l'uscita INTR .:".:"."
per eventuali interruzioni di minor priorita. (ovvero per 1a medesima interruzione se il ,.'
dispositivo eprogrammato a lavorare sui livelli e eancora asserit'a). .' .
Nel caso di EOI comanda.to da programma, spetta at programmatore decldere ,
il momento in cui viene riportato a 0, trasmettendo una parola di comando at .J .
dispositiv0
23
. . J .. '
';.:1 : ','.', .
, 't( .. '"':""","
';;1 : '. '., '411 termine coinddente deve essere inteso in rapporlo alia ca.paciU. di discriminazione del sistema:
.' :'>" ;:'" ,sui primo cido di INTA sono ambedue presenti.
".
" :. ,r":'" -.
'f';; ;;J!:(If.. :.",'
" ,., t,:;.
4.9.5 Schema di esecuzione della routine di servizio
necessaria una transizione di stato sulla linea IRi
un'interruzione,
Ovviamente l'impiego sui fronti emeno soggetto a malIunzionamenti.
sui livelli ecia riservare a queUe situazioni in cui si vuole che 1a medesima linea di i:
.. ',
ricbiesta resti attiva (perche
1
per esempio, costituisce l'OR di pili richieste e si vuole
evitare che, operando sui ronti, parte di esse possa andare perduta). Xli
'"r
134
\
I
I
\
)

I
\
I
1
!
I
I
l
\
I
\
I
l
1
,
I
(
\
\
I
\
I
I
1
1
1
)
01
Illl!-'

,
ISRH-O
"
,n
.l --------- ,,t,
1/1:2(-0 ISR-l R4 R3
f'.-. 1
Sil ISRJ(-O
r- j'"

*1
02
R'
p
Schema di interruzione della routine di servizio dell'esempio,
Esempio di sequenza temporate degli eventi.
Capitolo 4
R2 R2
"2
R3
R4
R4
P
P
,..
,
,.. ,",
,.,
to
'"
't<
"
t.
"
t, t, It, t, t. t"
t.
,,,
t,.
m l$IlJ(-a m
'"
lUlZ(.. n, ISltl(..

IU'HI lllO IIl(I

I I L-J I
I I I I I
I
I
"
]SRI
ISR2

.
ISR3
I I


I
,:;;,..: ,.
,.,.,.,.,
, "" 0.:; /: ..' '
,;;)1\; :i"" ....'.
":'. '

'. I'":'''
.. '. ..J
)""
,......
Dat momento in .ISR4 viene. per la.logica del PIC interru-
zione epiiJ. in mentre illvece e aneora lD corso Da R4 II cantralla
a R2 con PlstruZlone IRET e da R2 al programma. lllterrotto.

' . ,
....:' ",',,'""
..... '-",'" '.
-'iii; ... ,,.,,'
..-:.. ,
\1 .
,c', "..., .
:...., ,,;;, , ,';'';
Ji 0
0
L'accesso diretto alia memoria
,,'1.,1 '1';,' ,,'
tr:'i . controllo di interruzione i dati molta efficiente
a controlla di Thttavla, a e
certo numero dl.1struzlOnl ?er salvar.e e 1 di CPU, cancare e
" . aggiornare contaton, ecc. Gli
':, cbe, per ogni interruZlOne, vengono esegmte dl IstruzlOnl a Eroote deli Ulllca
ditrasferimento del carattere alia penfenca.
Se la periferica emolto velace epossibile che la frequenza delle interruzioni sia cosl
da non lasciare, tra interruzione e interruzione, il tempo necessaria all'esecuzione
,dell'intera routine di Si tenga che Ie perifericbe
in modo sincrono Tlspetto a un propno clock, dlverso da queUo della CPU. E
::." /1; questa il caso deUe uriita. a disco
26
, per Ie quali la velocita. di trasferimento dati puo
il milione di caratteri al secondo (stesso ordine di grandezza della velocita
esecuzione delle istruzieni da parte di una CPU eli prestazioni rnedie).
},,;,o:,,-' :";"A,'''' .
fu questi casi it contrello sotto interruzione risulta praticamente impossibile
26
.
Una tecnica piu efficiente cii queUe' fin qui viste consiste nelPintrodurre un control-
che gestisca direttamente il trasferimento dei dati tra periferiche e me-
centrale, senza interessare 130 CPU. n dispositivo in questione viene denotato
DMAC (Direct Memory Access Controller). La corrispondente tecnica di
::tt:,c',:;;trasferimento dati viene detta Accesso Diretto alla Memoria.
..:...... \.... " '
.. .. ln Figura4.33 viene schematizzato it modo in cui un DMAC si inserisce nel
sistema 9PUperiferici. nsignificato dei segnali eil seguente:
I" ,., . ,.""; .

.. ,... ;:J :,j:; "..J.,
'," '.> .
''';:";:--"------------
,,' . noto che i dischi (rigidi) sono tenuti in perenne rotazione. n trasferimento e sincrono con la
La del determin.ata di rotazione e dalla
::.1. dell mfOl'mazione memonzzata sulla super:ficle magnetlca/ottlca.
.te il contr.ollo ritorna a R2. Uazzeramento di ISR2 in R2 (istante .faCile ch.e, gestire ,il di un veloce,
detenmna Il passaggto di INTR aIlo stato alto a causa di IR ancora asserita e"'f ::,/.lDunclare al!e 180 pe,rdl.ta dl tempo per salvataggJ, npnstml ecc,) e dedlcare la
conse entemente a una uu f 'd' INTA ,4 questa sol.a attlvlta. per II tempo rlcblesto.
gu , ova ase 1 ,can salto ill R4. 'tit la, pena.. dl ricordare me neU'ineieme di illtruzioni del microprocessore UO era previllta una
N 1 d' R4 I" ' . , ,.'n ,;:' ..; lstruzlone dl I/O (l'istruzione INIR) cbe: (a) tr8.\lferiva un byte (tra perlferico e memoria
e c?rso 1 ta, Vlene assenta IR3 e la hnea INTR nsulta dt nuov01' E::f ";' 0 vl.ceveru); (b) increment.a.va. aut.oma.tleamente un regist.ro di CPU predefinito come punta-tore;
assenta. Quando 10 R4 viene eseguita l'istruzione STI (istante tg), la CPU entra.!' . un dl CPU predeftnito come conta-t6re e ripeteva i tre puai fino a che
in una nuova fase di INTA. nPIC genera it vettore relativo a IR:3. R3 arrin a: n. 10 zero" Di it al '
l' p' t . IRET f ' , .' ' .. I:' .1'-':. '. I SI nducev80 alia sola IstruzlOne 10 questlone. 10 pratlca era posslbile seguire a
cone U810ne e 18 rUZlOne a tornare a1 punto dllfiterruZlOne m R4. .:r; (' ,.controllo dl programma i trasferimenti di periferici di altissime prest.azioni, a.oche se, oVviamente,
. " .,. ' . . . . "r, ':''-';-: '.' ' Cp? dedic80ta esc1usivamente all'esecuzione eli questa istruzione per tutto iI tempo che
81 not1 che nentrando 10 R4 11 Sistema dl mterruZl0ne eablhtato. Per 1a loglca del ,; }'" essa .nchledeva. Una tale istruzione e di poco interesse se il cakolatore deve poter lavorare in
PIC, fino a che non viene azzerato ein di servizie questa ... 0 in multitasking.
4 ii"'... " ",
, .$ -l;;.,';'
Figura 4.32
FigW'a 4.31
136
\
I
l
1
,
I
(
\
\
I
\
I
I
1
1
1
)
01
Illl!-'

,
ISRH-O
"
,n
.l --------- ,,t,
1/1:2(-0 ISR-l R4 R3
f'.-. 1
Sil ISRJ(-O
r- j'"

*1
02
R'
p
Schema di interruzione della routine di servizio dell'esempio,
Esempio di sequenza temporate degli eventi.
Capitolo 4
R2 R2
"2
R3
R4
R4
P
P
,..
,
,.. ,",
,.,
to
'"
't<
"
t.
"
t, t, It, t,
t.
t"
t.
,,,
t,.
m
l$IlJ(-a m
'"
lUlZ(.. n,
ISltl(..

IU'HI lllO IIl(I

I
I L-J I
I I I I I
I
I
"
]SRI
ISR2

.
ISR3
I I


I
,:;;,..: ,.
,.,.,.,.,
, "" 0.:; /: ..' '
,;;)1\; :i"" ....'.
":'. '

'. I'":'''
.. '. ..J
)""
,......
Dat momento in .ISR4 viene. per la.logica del PIC interru-
zione epiiJ. in mentre illvece e aneora lD corso Da R4 II cantralla
a R2 con PlstruZlone IRET e da R2 al programma. lllterrotto.

' . ,
....:' ",',,'""
..... '-",'" '.
-'iii; ... ,,.,,'
..-:.. ,
\1 .
,c', "..., .
:...., ,,;;, , ,';'';
Ji 0
0
L'accesso diretto alia memoria
,,'1.,1 '1';,' ,,'
tr:'i . controllo di interruzione i dati molta efficiente
a controlla di Thttavla, a e
certo numero dl.1struzlOnl ?er salvar.e e 1 di CPU, cancare e
" . aggiornare contaton, ecc. Gli
':, cbe, per ogni interruZlOne, vengono esegmte dl IstruzlOnl a Eroote deli Ulllca
ditrasferimento del carattere alia penfenca.
Se la periferica emolto velace epossibile che la frequenza delle interruzioni sia cosl
da non lasciare, tra interruzione e interruzione, il tempo necessaria all'esecuzione
,dell'intera routine di Si tenga che Ie perifericbe
in modo sincrono Tlspetto a un propno clock, dlverso da queUo della CPU. E
::." /1; questa il caso deUe uriita. a disco
26
, per Ie quali la velocita. di trasferimento dati puo
il milione di caratteri al secondo (stesso ordine di grandezza della velocita
esecuzione delle istruzieni da parte di una CPU eli prestazioni rnedie).
},,;,o:,,-' :";"A,'''' .
fu questi casi it contrello sotto interruzione risulta praticamente impossibile
26
.
Una tecnica piu efficiente cii queUe' fin qui viste consiste nelPintrodurre un control-
che gestisca direttamente il trasferimento dei dati tra periferiche e me-
centrale, senza interessare 130 CPU. n dispositivo in questione viene denotato
DMAC (Direct Memory Access Controller). La corrispondente tecnica di
::tt:,c',:;;trasferimento dati viene detta Accesso Diretto alla Memoria.
..:...... \.... " '
.. .. ln Figura4.33 viene schematizzato it modo in cui un DMAC si inserisce nel
sistema 9PUperiferici. nsignificato dei segnali eil seguente:
I" ,., . ,.""; .

.. ,... ;:J :,j:; "..J.,
'," '.> .
''';:";:--"------------
,,' . noto che i dischi (rigidi) sono tenuti in perenne rotazione. n trasferimento e sincrono con la
La del determin.ata di rotazione e dalla
::.1. dell mfOl'mazione memonzzata sulla super:ficle magnetlca/ottlca.
.te il contr.ollo ritorna a R2. Uazzeramento di ISR2 in R2 (istante .faCile ch.e, gestire ,il di un veloce,
detenmna Il passaggto di INTR aIlo stato alto a causa di IR ancora asserita e"'f ::,/.lDunclare al!e 180 pe,rdl.ta dl tempo per salvataggJ, npnstml ecc,) e dedlcare la
conse entemente a una uu f 'd' INTA ,4 questa sol.a attlvlta. per II tempo rlcblesto.
gu , ova ase 1 ,can salto ill R4. 'tit la, pena.. dl ricordare me neU'ineieme di illtruzioni del microprocessore UO era previllta una
N 1 d' R4 I" ' . , ,.'n ,;:' ..; lstruzlone dl I/O (l'istruzione INIR) cbe: (a) tr8.\lferiva un byte (tra perlferico e memoria
e c?rso 1 ta, Vlene assenta IR3 e la hnea INTR nsulta dt nuov01' E::f ";' 0 vl.ceveru); (b) increment.a.va. aut.oma.tleamente un regist.ro di CPU predefinito come punta-tore;
assenta. Quando 10 R4 viene eseguita l'istruzione STI (istante tg), la CPU entra.!' . un dl CPU predeftnito come conta-t6re e ripeteva i tre puai fino a che
in una nuova fase di INTA. nPIC genera it vettore relativo a IR:3. R3 arrin a: n. 10 zero" Di it al '
l' p' t . IRET f ' , .' ' .. I:' .1'-':. '. I SI nducev80 alia sola IstruzlOne 10 questlone. 10 pratlca era posslbile seguire a
cone U810ne e 18 rUZlOne a tornare a1 punto dllfiterruZlOne m R4. .:r; (' ,.controllo dl programma i trasferimenti di periferici di altissime prest.azioni, a.oche se, oVviamente,
. " .,. ' . . . . "r, ':''-';-: '.' ' Cp? dedic80ta esc1usivamente all'esecuzione eli questa istruzione per tutto iI tempo che
81 not1 che nentrando 10 R4 11 Sistema dl mterruZl0ne eablhtato. Per 1a loglca del ,; }'" essa .nchledeva. Una tale istruzione e di poco interesse se il cakolatore deve poter lavorare in
PIC, fino a che non viene azzerato ein di servizie questa ... 0 in multitasking.
4 ii"'... " ",
, .$ -l;;.,';'
Figura 4.32
FigW'a 4.31
136
lj ,
,
,
,
i'
,
"
,
,
I
,
, ,
,

Attiva la cappia di segoali MR (Memory Read) e lOW (I/O Write); oppure


la cappia MW (Memory Write) e lOR (I/O Read),
Presenta il contenuto del puntatore sul bus indirizzi.
La parte che segue ededicata a spiegare in un certo dettagLio le due modalita.
,27Piu precisamente: quando il controllore st.a servendo una ricbiesta.
28Letteralmente " rubando deli (di bus)". .
,
richiesta di trasferimento da parte del perifericoj
richiesta di passessa del sistema di bus da parte del DMAC
alla CPU;
rispasta di richiesta accolta da parte della CPU al DMAC;
risposta d.i richiesta accolta da parte DMAC a1 periferico,
BUS INDIRIZZI
BUS DATI
CONTROu..o
.-
.. .. ..
..
- 0
, -0
- % 0 0
,
.. ,
"
.. ,
aUSREQ
. ,,,-
DMREQ
,
"
, 0
'0
',,-
0
O
2
' 0
. "
'"
BUSACK DMACK
,
MEM CPU DMAC PERlF,
BUSACK:
DMACK:
DMREQ:
- BUSREQ:
L'architettura di un DMAC prevede come minimo:
4.10.1 Struttura e funzionamento del controllore DMA
i,ill;' ,. -
",.-t'
;...,-o{\i..(
."'.,." >
138 Capitola 4 II sottosistema. di ingressojuscita. 139
... ,.
..:

'.
,::
fi1; .. 't
': n contatore del numero di caratteri 0 parole da trasferire;
: U , .'
un aHa posizione d.i memoria in cui verra letto/scritto it prossimo data;
un registro di comando che indicbi il tipo di trasferimento;
,
. registro di stata.
,...' ..
'l!' '. --" ;, . -
, ,." 1 ..., .
r ".,!j. '. '. ., .. . . ,
"" I registri sopra sono per a un controllore con un
unico canale. I dispO.SltlVI commerciah dl plU di un (normalmente
ciascuno dei qual! .contatore e un suo registro puntatore.
:;:.1 Si distinguono due statl pnncipall dl fuuzlonamento: 10 stato 0 fase dl program-
. e 10 stato 0 fase di trasferirnent,o. I due t:a lore
'.,J>;; esclusivi nel sensa che se e m corso un trasfenmento
27
eImbita la possIblhta dl
1 ,!i;:'['>,,' II
:,f,; .. il contro are. .
\< ...,
". ... .
'.
\
"'1
1
.'
. di programmazione La rase di programmazione serve a trasmettere al DMAC
:' Ie Informazioni che definiscono la modalita di trasferimento sul canale, In questa rase
. , ,.' . " . '. if,,\ viene visto co:ne un di d,i insieme di :egist,ri.
Flg.u.ra 4.33 eli: del DMAC, Per semphclta. SI ea.ssunto un bus dati di sostanza la programmazlone conslste nella SCflVere nel registn sopra menZlOnatl,
8 bit e un bus mdirizzl di 16 bIt. ,,.. .
,10;.:1::
1
.' !'; ,
dati Ci sono due modalita fondamentali di trasferimento.
. n dati tra un periferico e la memoria richiede che il DMAC ".' . . 8' .
controllo del bus normalmente pilotati dalla CPU, lntuitivamente un La. modaltta dl trasfenmento .sm 010, l l? 11
51 eH'ettua nel seguente modo: "Cl cont.r0 ore I SIS ema 1 bus solo per 11 clclo 0 1 pochi cicli che 51 flchiedono
, per J! trasfenmento,
1. del periferico a:sseris.ce per indicare ebe edisponibile un': .,.. . ' "
dato ill lDgressO, ovvero che 11 penfenco epronto ad accettare un dato in uscita:\W. La ?I trasfenmento a blocchl. che mve.ce I
. . 1,' del SIstema dl us per tu 01 tempo nchlesto a trasfenre II numero dl caratte.fl
2. La IOglca di controllo del DMAC BUSREQ, richiedendo di entrare scritto nel contatore in fase di programmazione.
controllo del bus. tl
,
.. ;
3. La CPU risponde asserendo BUSACK. Questa segnale indica che la CPU ha ..
in alta i piedini che corrispondono al bus degli indirizzi e
datI. La CPU restera ill tale stata (detta usualmente stata di HOLD) fino a che 4.10,2 Modalita di trasferimento singolo
BUSREQ resta assento. ' ,
4. punto il DMAC pilotare il degli indirizzi, rispondere al per- di un singolo essere schematizzato con la
con DMACK, l.l comando dl lettura scrittura in memoria e il precedenza (CEr, 4.10), In CUI al passe 4 vengono svolte Ie seguentl
cornspondente comando dl scnttura 0 lettura verso l'mterfaccia. ,'..r
.. ... '. .
.. ,: ,,,.. , ,.' .;..,
.. (",y'.,",
5. Finito il trasferimenta, BUSREQ viene disattivata e il bus tarna in cantrollo alla :i,\",\:,>" 1. La logica di contrallo del DMAC:
CPU che disasserisce BUSACK.j",V,"::,:, '
. ':.......
Una descrizione pill dettagliata viene fornita nel seguito, J,ft
,./i!; .; _: ',," '
.
,.!.! . I' '
'.' ":;'." "
" ;':"- .
,..f. .,<:"
. '.!.i '
,..i . ,:"
'. ''','''. ..
... ,-..
,."., .."' .
. .

, .. ,.
;':j: .11 .-

. ,',,", ,. ".. ,"
.'" ,.'
\
\
\
\
, \
\
\
)
\
I
\
\

l
\
lj ,
,
,
,
i'
,
"
,
,
I
,
, ,
,

Attiva la cappia di segoali MR (Memory Read) e lOW (I/O Write); oppure


la cappia MW (Memory Write) e lOR (I/O Read),
Presenta il contenuto del puntatore sul bus indirizzi.
La parte che segue ededicata a spiegare in un certo dettagLio le due modalita.
,27Piu precisamente: quando il controllore st.a servendo una ricbiesta.
28Letteralmente " rubando deli (di bus)". .
,
richiesta di trasferimento da parte del perifericoj
richiesta di passessa del sistema di bus da parte del DMAC
alla CPU;
rispasta di richiesta accolta da parte della CPU al DMAC;
risposta d.i richiesta accolta da parte DMAC a1 periferico,
BUS INDIRIZZI
BUS DATI
CONTROu..o
.-
.. .. ..
..
- 0
, -0
- % 0 0
,
.. ,
"
.. ,
aUSREQ
. ,,,-
DMREQ
,
"
, 0
'0
',,-
0
O
2
' 0
. "
'"
BUSACK DMACK
,
MEM CPU DMAC PERlF,
BUSACK:
DMACK:
DMREQ:
- BUSREQ:
L'architettura di un DMAC prevede come minimo:
4.10.1 Struttura e funzionamento del controllore DMA
i,ill;' ,. -
",.-t'
;...,-o{\i..(
."'.,." >
138 Capitola 4 II sottosistema. di ingressojuscita. 139
... ,.
..:

'.
,::
fi1; .. 't
': n contatore del numero di caratteri 0 parole da trasferire;
: U , .'
un aHa posizione d.i memoria in cui verra letto/scritto it prossimo data;
un registro di comando che indicbi il tipo di trasferimento;
,
. registro di stata.
,...' ..
'l!' '. --" ;, . -
, ,." 1 ..., .
r ".,!j. '. '. ., .. . . ,
"" I registri sopra sono per a un controllore con un
unico canale. I dispO.SltlVI commerciah dl plU di un (normalmente
ciascuno dei qual! .contatore e un suo registro puntatore.
:;:.1 Si distinguono due statl pnncipall dl fuuzlonamento: 10 stato 0 fase dl program-
. e 10 stato 0 fase di trasferirnent,o. I due t:a lore
'.,J>;; esclusivi nel sensa che se e m corso un trasfenmento
27
eImbita la possIblhta dl
1 ,!i;:'['>,,' II
:,f,; .. il contro are. .
\< ...,
". ... .
'.
\
"'1
1
.'
. di programmazione La rase di programmazione serve a trasmettere al DMAC
:' Ie Informazioni che definiscono la modalita di trasferimento sul canale, In questa rase
. , ,.' . " . '. if,,\ viene visto co:ne un di d,i insieme di :egist,ri.
Flg.u.ra 4.33 eli: del DMAC, Per semphclta. SI ea.ssunto un bus dati di sostanza la programmazlone conslste nella SCflVere nel registn sopra menZlOnatl,
8 bit e un bus mdirizzl di 16 bIt. ,,.. .
,10;.:1::
1
.' !'; ,
dati Ci sono due modalita fondamentali di trasferimento.
. n dati tra un periferico e la memoria richiede che il DMAC ".' . . 8' .
controllo del bus normalmente pilotati dalla CPU, lntuitivamente un La. modaltta dl trasfenmento .sm 010, l l? 11
51 eH'ettua nel seguente modo: "Cl cont.r0 ore I SIS ema 1 bus solo per 11 clclo 0 1 pochi cicli che 51 flchiedono
, per J! trasfenmento,
1. del periferico a:sseris.ce per indicare ebe edisponibile un': .,.. . ' "
dato ill lDgressO, ovvero che 11 penfenco epronto ad accettare un dato in uscita:\W. La ?I trasfenmento a blocchl. che mve.ce I
. . 1,' del SIstema dl us per tu 01 tempo nchlesto a trasfenre II numero dl caratte.fl
2. La IOglca di controllo del DMAC BUSREQ, richiedendo di entrare scritto nel contatore in fase di programmazione.
controllo del bus. tl
,
.. ;
3. La CPU risponde asserendo BUSACK. Questa segnale indica che la CPU ha ..
in alta i piedini che corrispondono al bus degli indirizzi e
datI. La CPU restera ill tale stata (detta usualmente stata di HOLD) fino a che 4.10,2 Modalita di trasferimento singolo
BUSREQ resta assento. ' ,
4. punto il DMAC pilotare il degli indirizzi, rispondere al per- di un singolo essere schematizzato con la
con DMACK, l.l comando dl lettura scrittura in memoria e il precedenza (CEr, 4.10), In CUI al passe 4 vengono svolte Ie seguentl
cornspondente comando dl scnttura 0 lettura verso l'mterfaccia. ,'..r
.. ... '. .
.. ,: ,,,.. , ,.' .;..,
.. (",y'.,",
5. Finito il trasferimenta, BUSREQ viene disattivata e il bus tarna in cantrollo alla :i,\",\:,>" 1. La logica di contrallo del DMAC:
CPU che disasserisce BUSACK.j",V,"::,:, '
. ':.......
Una descrizione pill dettagliata viene fornita nel seguito, J,ft
,./i!; .; _: ',," '
.
,.!.! . I' '
'.' ":;'." "
" ;':"- .
,..f. .,<:"
. '.!.i '
,..i . ,:"
'. ''','''. ..
... ,-..
,."., .."' .
. .

, .. ,.
;':j: .11 .-

. ,',,", ,. ".. ,"
.'" ,.'
\
\
\
\
, \
\
\
)
\
I
\
\

l
\
,
I
l
j
\
!
I
I
I
I
\
I
I
]
1
I
)

DACKO-3
OREQO-3

M
fe'
< <
Q
cs
, ,
,
0

0
< <


Q
'I ,
..
8237
'\
"
w
> .4


Q

, ,
u
Q 0

" - -

, "
;
EO,
HLDA'
HRQ
II I II ''>L
__ II 1,---
___I 1 II 1 1,---
___I I II 1 1_
MEMR
D!>lACK
BUSACK -I

BUSREQ \..r1 I II 1'---
DMREQ
J
?I
"'I
\
'4
"'L
"I I
II
Lr-I\

l;--I\
I II
---,---;\ II I 1_
___I 1 II I Il--
MEMR
I/OW
BUSACK
DMACK
BUSREQ
DMREQ
3. La CPU, riconoscendo che il sistema di
possesso e disasserisce BUSACK.
4.10,3 Modalita di trasferimento a blocchi
.;:;":,:''-
,:/:::l, .
tjii"i'"
.it:.'i:,;.'"

.
!D:""<-""'-
n sottosistema <Ii ingressofuscita 141
,
" "
- - -:11." .
c l .
,.,
,
'0,......
, , .;-'
.",
...... '.1/<1'1_ ''',
.. '-..
. ,
l[iln"\I0-"r'" .",. "
"'f-"O., ",,,,!,.. >-, ' ,
2. Viene decrementato il contatore e viene aggiornato it puntatore
o. a seconda della scelta fatta in fase di prograrnrnazione)j viene .. ::
dlsassento 11 segnale BUSREQ. -
'.;.,-:0:'
_,. " -r ... .. v."'
:.' '. r',r"-l"t,:, - .
bus e stato rilasciato, oe rientra in ..;;,
,,, ,.,1\:," .. ':
. ... . , .... -
- , .. "' ..',---
:,'",1 , :"\_-
, ,:.} ,. ,,/. ,
':-i" .,o:._,':',\j ", -
Si Doti che il ottiene il del bus' per il necessario a ..
una lettura 0 una scnttura (pachl cIch dl clock). Thtta avvlene come se, durante il- Ijow
trasferimento, 1a CPU non ricevesse il clock. Per questa motiva si pada di cycle " ... ....
stealing. n bus viene rilasciato dopa il trasferimento del singolo carattere 0 della<>i temporaJe a.I trasfenmento DMA di un pacchetto di byte
parola. Di consegu:enza,. il trasferimento di bloceo di n byte) richiede d.i trasfenmento a blocchl (burst).
1 'pasSl da 2 a 4 vengone n (fino a. che Il del nOn :_.', .'
diventa 0). Nat,uralmente, tra iJ trasfertmento dt due datI, la CPU esegue U' , d' DMAC' '1 d' 't' I t 1 8237
normalmente.. " , n esemplO I . I ISPOSI IVO n e
Le temponzzaZlOlll sono Illustrate m FIgura 4.34. . . . .
tit.. titolo di esemplO brevemente II componente 82.37': ?-o control-
':{" di DMA a 4 canah. Ogm eanale puo effettuare operazlolll dl trasfenmento per
'.J.,;: massimo di 64K caratteri l'una. Ciascun canale pub essere programmata in modo.
autoreinizializzarsi al termine di un trasferimento. Inoltre sono possibiLi i tras-
memoria-memoria. lnfine e possibile aumentare il numere dei canali con
semplice aggiunta di altri 8237 in cascata. In Figura 4.36 viene data 10 schema
"')irl Iu" 1
>.!\, ... ,.:;, nZlona e.
'Ii 1_"""
,), l '.
;d.. ,
' .. :. ,
" ,.. .. .... ,
,,:r:(. .. _,.'r"-'
,". -.- -
c'" -I'"
" .. !,. C1,'tJ'\I.'':'' ;;('.: "._
"
.-'
,. ::';')")' - r
}/"
f'._." ..
,;I.;r,;r--;_-r..,
.,., ""1"lIo,O'T... , ..
'.'/. .'_;t,;,
"'1 ,'" ,".
relativo al trasferimento DMA di un paccbetto di ,-'
m modahta di trasferunento slngolo.t.?' it;,"'" _
... ...
"'j ", -, ..
=1:- '/ :",",'"
",.. ,' "'" , '''.:''.'.
. , .:' , .
. ,.t.:; . .;"., _-- .
',:' ,.,':' -
4h "".'r..
.
'-& 4.36 Schema funzionale dell'integrato 8237. II dispositivo e un integrato a 40 pie-
n trasferimento a blocchi differisce dalla madalita precedente in quanta BUSREQ ... ':i:',' __ diUl: di un latch in cui viene appoggiata la parte alta.
. .. ,. . ,,'f; ",\' ',degh IndmZZl, presentata sulle hnee DBD-DB7 (51 veda il testa).
vlene dlsassento solo se nsulta zero il contenuto del contatore dopo l'agglornamento. /M t: ,.' "
In pratica il DMAC, guadagnato it controllo del bus, 10 rilascia solo quando it bloceo
degli n specificate in di programmazione estate trasferito. ?vviamente' _ " . ""
la CPU nsulta esclusa dall uso del bus per tutta la durata del trasfenmento, Le ,"'1 :,,', ' 5t notmo Ie 4 IInee per I. nchiesta dt servlzio DREQo - DREQ3 e Ie corrispon-
temporizzazioni sono illustrate in Figura4.35. '. nsposte DACK
o
- DACK
3
, relative a ciascuno dei 4 canali. Essendoci 4 canali,
Questa modalita eindicata per periferiche veloci. ',clascuno eequipaggiato degli appositi registri (CfrA.IO.l).
);1 -,
- '-,
'. -:-""
140 Capitolo 4
. .,

- -r"--
.' ;''l'
- \,li'
"'
,::'A'.\
Asaerisce la risposta DMACK. Di norma, a fronte del DMACK, il perifericQ.:J'
d
' 'DMREQ' ",
Isassensce . -,..-:"
';'",
,
,
I
l
j
\
!
I
I
I
I
\
I
I
]
1
I
)

DACKO-3
OREQO-3

M
fe'
<
<
Q
cs
, ,
,
0

0
<
<


Q
'I ,
..
8237
'\
"
w
>
.4

, ,
u
Q 0

" - -

, "
;
EO,
HLDA'
HRQ
II I II ''>L
__ II 1,---
___I 1 II 1 1,---
___I I II 1 1_
MEMR
D!>lACK
BUSACK -I

BUSREQ \..r1 I II 1'---
DMREQ
J
?I
"'I
\
'4
"'L
"I I
II
Lr-I\

l;--I\
I II
---,---;\ II I 1_
___I 1 II I Il--
MEMR
I/OW
BUSACK
DMACK
BUSREQ
DMREQ
3. La CPU, riconoscendo che il sistema di
possesso e disasserisce BUSACK.
4.10,3 Modalita di trasferimento a blocchi
.;:;":,:''-
,:/:::l, .
tjii"i'"
.it:.'i:,;.'"

.
!D:""<-""'-
n sottosistema <Ii ingressofuscita 141
,
" "
- - -:11." .
c l .
,.,
,
'0,......
, , .;-'
.",
...... '.1/<1'1_ ''',
.. '-..
. ,
l[iln"\I0-"r'" .",. "
"'f-"O., ",,,,!,.. >-, ' ,
2. Viene decrementato il contatore e viene aggiornato it puntatore
o. a seconda della scelta fatta in fase di prograrnrnazione)j viene .. ::
dlsassento 11 segnale BUSREQ. -
'.;.,-:0:'
_,. " -r ... .. v."'
:.' '. r',r"-l"t,:, - .
bus e stato rilasciato, oe rientra in ..;;,
,,, ,.,1\:," .. ':
. ... . , .... -
- , .. "' ..',---
:,'",1 , :"\_-
, ,:.} ,. ,,/. ,
':-i" .,o:._,':',\j ", -
Si Doti che il ottiene il del bus' per il necessario a ..
una lettura 0 una scnttura (pachl cIch dl clock). Thtta avvlene come se, durante il- Ijow
trasferimento, 1a CPU non ricevesse il clock. Per questa motiva si pada di cycle " ... ....
stealing. n bus viene rilasciato dopa il trasferimento del singolo carattere 0 della<>i temporaJe a.I trasfenmento DMA di un pacchetto di byte
parola. Di consegu:enza,. il trasferimento di bloceo di n byte) richiede d.i trasfenmento a blocchl (burst).
1 'pasSl da 2 a 4 vengone n (fino a. che Il del nOn :_.', .'
diventa 0). Nat,uralmente, tra iJ trasfertmento dt due datI, la CPU esegue U' , d' DMAC' '1 d' 't' I t 1 8237
normalmente.. " , n esemplO I . I ISPOSI IVO n e
Le temponzzaZlOlll sono Illustrate m FIgura 4.34. . . . .
tit.. titolo di esemplO brevemente II componente 82.37': ?-o control-
':{" di DMA a 4 canah. Ogm eanale puo effettuare operazlolll dl trasfenmento per
'.J.,;: massimo di 64K caratteri l'una. Ciascun canale pub essere programmata in modo.
autoreinizializzarsi al termine di un trasferimento. Inoltre sono possibiLi i tras-
memoria-memoria. lnfine e possibile aumentare il numere dei canali con
semplice aggiunta di altri 8237 in cascata. In Figura 4.36 viene data 10 schema
"')irl Iu" 1
>.!\, ... ,.:;, nZlona e.
'Ii 1_"""
,), l '.
;d.. ,
' .. :. ,
" ,.. .. .... ,
,,:r:(. .. _,.'r"-'
,". -.- -
c'" -I'"
" .. !,. C1,'tJ'\I.'':'' ;;('.: "._
"
.-'
,. ::';')")' - r
}/"
f'._." ..
,;I.;r,;r--;_-r..,
.,., ""1"lIo,O'T... , ..
'.'/. .'_;t,;,
"'1 ,'" ,".
relativo al trasferimento DMA di un paccbetto di ,-'
m modahta di trasferunento slngolo.t.?' it;,"'" _
... ...
"'j ", -, ..
=1:- '/ :",",'"
",.. ,' "'" , '''.:''.'.
. , .:' , .
. ,.t.:; . .;"., _-- .
',:' ,.,':' -
4h "".'r..
.
'-& 4.36 Schema funzionale dell'integrato 8237. II dispositivo e un integrato a 40 pie-
n trasferimento a blocchi differisce dalla madalita precedente in quanta BUSREQ ... ':i:',' __ diUl: di un latch in cui viene appoggiata la parte alta.
. .. ,. . ,,'f; ",\' ',degh IndmZZl, presentata sulle hnee DBD-DB7 (51 veda il testa).
vlene dlsassento solo se nsulta zero il contenuto del contatore dopo l'agglornamento. /M t: ,.' "
In pratica il DMAC, guadagnato it controllo del bus, 10 rilascia solo quando it bloceo
degli n specificate in di programmazione estate trasferito. ?vviamente' _ " . ""
la CPU nsulta esclusa dall uso del bus per tutta la durata del trasfenmento, Le ,"'1 :,,', ' 5t notmo Ie 4 IInee per I. nchiesta dt servlzio DREQo - DREQ3 e Ie corrispon-
temporizzazioni sono illustrate in Figura4.35. '. nsposte DACK
o
- DACK
3
, relative a ciascuno dei 4 canali. Essendoci 4 canali,
Questa modalita eindicata per periferiche veloci. ',clascuno eequipaggiato degli appositi registri (CfrA.IO.l).
);1 -,
- '-,
'. -:-""
140 Capitolo 4
. .,

- -r"--
.' ;''l'
- \,li'
"'
,::'A'.\
Asaerisce la risposta DMACK. Di norma, a fronte del DMACK, il perifericQ.:J'
d
' 'DMREQ' ",
Isassensce . -,..-:"
';'",
,
I
RESET
Trasferimenlo sinl1:0101HOLD
,( ( SI
DREQn/HRQ
( (
SO
)
READY ( r SW
READY
HLDA READY
S2
S3
READY
54
')
SI
Trasferimenlo a blocchi
I
HLDA
5
z
. Durante questo state gli 8 bit meno significativi dell'indirizze vengono pre-
sentati suI bus degh indirizzi attraverso i piedini Ao - A71 viene asserito il segnale
AEN (utilizzato per abilitare }'uscita degli 8 bit pili significativi delPindirizzo dal
latch esterno) e viene asserito il DACK corrispondente al DREQ servito (al canale
in servizio).
29Si tratta. dei bit (As - Au;) del registro punta-tore relativo al canale,
S" Viene attivato il segnale di lettura dalla memoria (MEMR) 0 da I/O (lOR),
S" Resta attivato il segoale di lettura (MEMR 0 lOR) e viene attivato anche
quello di sCfittur. (lOW 0 MEMW).
In riferimento aHa Figura4.37. si osservi 10 stato Sw, stato di attesa tra 83 e 8
4
.
Uno 0 piu stati Sw possono essere inseriti tra gli stati 5
z
0 8-3 e 84 attivando l'ingresso
READY. Gli stati di attesa possono essere richiesti da dispositivi particolarmente
lenti.
Descriviamo rapidamente il significato degli stati della rase di attivita
Capitola 4
la fase di attivitil,
a) la fase di inattivita, detta anche (idle);
b)
Fase di
attivita.
Fase di inattivita La fase di inattivita. stato Sr> corrisponde alIa condizione in cui
il dispositivo non sta servendo alcuna richiesta, ovvero ai periodi di tempo durante i
quali nessun canale ha. in corso un'operazione di trasferimento.
Quando si trova nello state Sf, la logica del controllore accetta comandi dalla
CPU, I comandi richieclono: (a) che iI dispositivo sia selezionato (ovvero, linea CS
asserita); (b) che sia asserita una tra Ie due linee lOWe lOR. L'effetto del comando e
scrivere 0 1eggere il registro interne del1'8237 specificato tramite Ie 4 hoee di indirizzo
A
o
- Ag ,
La descrizione seguente si appoggia at diagramma di stato eli Figura 4.37. Facendo
riferimento alia discussione generale nel Paragrafo 4.10.1, la fase di inattivita corris-
ponde alla fase di programmazione, mentre la fase di attivita. corrisponde a quella iv-i
detta eli trasferimento dati.
4.11.1 Funzionamento




,-,....,... , .
.. ,',
... ........ ' .'.
1
':.; 'jt.( -::- -
", -',? .Ii'........ c:,:' ':' ..
. ,.;1;, \ttiik'}l:'>,! . ,',
HRQ (Hold Request) e HOLDA (Hold Acknowledge) sono rispettivamente l,a
di richiesta bus eli sistez:na e " . ..
In fase d.i programrnazlODe 11 diSPOSItiVO Vlene seleZlonato asserendo 1a Imea OS. ',;:; !;\'I;,"'".', ,"
Le .e lOW I.a scrittura del registro interno al
pOSItiVO Identificato traIDlte Ie 4 linee dl mdmzzo A
o
- A
3
. La 1ettura 0 1a scrittura:
in fase di programmazione esempre a 8 bit (DB
o
- DB
r
), anche quando il registro _Q
' '16 b' In 2' , -'" .,,,,,,,',,' DRE n
lDteressato e a It. questo caso occorrono operazlODl. , .
In fase di trasferimento Ie linee MEMR e MEMW trasmettono il comando
memoria, mentre Ie linee lOWe lOR trasmettono it comando corrispondente alia. ,:".',.,.:,,'
periferica. L'indirizzo di memoria (16 bit) viene presentato su A
o
-A
r
e su DBa -
(parte. alta). perb il bus dat.i deve essere impiegato pe: il datc>
presentando l'mdinzzo 1'8237 assensce 11 comando ADSTR, che Vlene lmplegato per :',,'
memorizzare la parte alta delPindirizzo in un latch esterno. II comando AEN viene',.:A; .
usato immediatamente dopo per abilitare l'uscita di questo latch verso il bus }:'::>'> .',' 4.37 Diagraro
ma
d.i stato dell'8237. 51 rappresenta 10 eli 1
indirizzi del sistema, ricostruendo COSl su 16 bit e permettendo l'uso del .. stati nel diagramma compongoDo il di ,La, rase eli e
bUB dati per il passaggio del dato letto 0 relativa un 5ingolo canale. II pas.SagglO,all? stato 51 appen.a
La linea READY serve a introdurre eventuali cieli di attesa e dilatare la tempo-- aSserita una delle 4 hnee DREQ, In pre5enza dl una rtchl.esta. la IOgJ.ca Ia
d
'," -"....'.:' .. , - d Ibn CPU (HRQ) e passa alia stato So 81 notl che da S4 Sl passa a 1 se I
memoria 0 di de! perife:ici. a lavorare in modalita. Sing?lo. Nella
81 notl infine la che il canale che sta .-L:;: a. Blocchi, il passaggio a 5/ si ha solo a fine del trasfenmento, 1
trasferendo ha concluso il trasfenmento dl tuttI 1 dah. La Imea puo essere portata ::;i 'f-;":;:.,:: . . cli'stato sono scanditi dal clock e 1a durata. di una. operazione esempre UD multiplo
bassa dall1esterno per forzare la conclusione dell'operazione di trasferimento in corso, ,:

"& ..,' .... ,
:.c. ,,;,::,",: .. ,_
So' Primo stato di una operazione eli DMA. La logica si in
.::' .,. S avendo attivato i1 segnale HRQ e VI resta fino ache la CPU non nsponde
... ,."", 0
n comportamento del controllore 8237 puo essere descritto attraverso 2 macrostati 0 ''': . asserendo HLDA,
fasi: ' ,.. SI' Gli 8 bit piu dell'indirizzo
Z9
1
vengono sul bus dati
i DB? - al tempo stesso viene attlvato il segnale ADSTB
>:.' per la loro rnemonzzazl,one m latch esterno.
,li"._ .
... "j;. :
:;1\ ',... ,
,-.' ,,, .. ,.. .
'''' .,.',' .,
-J' ... ,
>.:.:7" ':"
''iI ..,., "
. ... ,
,,,,1 .
i"',
.... ;.
,," .. "
, .
,. .' .'
,r,i',' .: ',.i ," ,
0""" . _,.,
I"
.:.<,
';I;', .
,.:;: .
T' .,.
. '" '
,0. '.'.,.
.';: .. ;
:.;" ': ..
"li
:Ii , ... :
:... "" ,'.
,', .'
..)'!
..
."
i.,
" ..'
'I"' ...
'.
, " ".'
:Ii ,
0'-
'
: \ ':'
,r, ..
...
'..
?f ?-..
142
\
l
1
)
1
I
\
I

I
,
\

I
I
,I
I
RESET
Trasferimenlo sinl1:0101HOLD
,( ( SI
DREQn/HRQ
( (
SO
)
READY ( r SW
READY
HLDA READY
S2
S3
READY
54
')
SI
Trasferimenlo a blocchi
I
HLDA
5
z
. Durante questo state gli 8 bit meno significativi dell'indirizze vengono pre-
sentati suI bus degh indirizzi attraverso i piedini Ao - A71 viene asserito il segnale
AEN (utilizzato per abilitare }'uscita degli 8 bit pili significativi delPindirizzo dal
latch esterno) e viene asserito il DACK corrispondente al DREQ servito (al canale
in servizio).
29Si tratta. dei bit (As - Au;) del registro punta-tore relativo al canale,
S" Viene attivato il segnale di lettura dalla memoria (MEMR) 0 da I/O (lOR),
S" Resta attivato il segoale di lettura (MEMR 0 lOR) e viene attivato anche
quello di sCfittur. (lOW 0 MEMW).
In riferimento aHa Figura4.37. si osservi 10 stato Sw, stato di attesa tra 83 e 8
4
.
Uno 0 piu stati Sw possono essere inseriti tra gli stati 5
z
0 8-3 e 84 attivando l'ingresso
READY. Gli stati di attesa possono essere richiesti da dispositivi particolarmente
lenti.
Descriviamo rapidamente il significato degli stati della rase di attivita
Capitola 4
la fase di attivitil,
a) la fase di inattivita, detta anche (idle);
b)
Fase di
attivita.
Fase di inattivita La fase di inattivita. stato Sr> corrisponde alIa condizione in cui
il dispositivo non sta servendo alcuna richiesta, ovvero ai periodi di tempo durante i
quali nessun canale ha. in corso un'operazione di trasferimento.
Quando si trova nello state Sf, la logica del controllore accetta comandi dalla
CPU, I comandi richieclono: (a) che iI dispositivo sia selezionato (ovvero, linea CS
asserita); (b) che sia asserita una tra Ie due linee lOWe lOR. L'effetto del comando e
scrivere 0 1eggere il registro interne del1'8237 specificato tramite Ie 4 hoee di indirizzo
A
o
- Ag ,
La descrizione seguente si appoggia at diagramma di stato eli Figura 4.37. Facendo
riferimento alia discussione generale nel Paragrafo 4.10.1, la fase di inattivita corris-
ponde alla fase di programmazione, mentre la fase di attivita. corrisponde a quella iv-i
detta eli trasferimento dati.
4.11.1 Funzionamento




,-,....,... , .
.. ,',
... ........ ' .'.
1
':.; 'jt.( -::- -
", -',? .Ii'........ c:,:' ':' ..
. ,.;1;, \ttiik'}l:'>,! . ,',
HRQ (Hold Request) e HOLDA (Hold Acknowledge) sono rispettivamente l,a
di richiesta bus eli sistez:na e " . ..
In fase d.i programrnazlODe 11 diSPOSItiVO Vlene seleZlonato asserendo 1a Imea OS. ',;:; !;\'I;,"'".', ,"
Le .e lOW I.a scrittura del registro interno al
pOSItiVO Identificato traIDlte Ie 4 linee dl mdmzzo A
o
- A
3
. La 1ettura 0 1a scrittura:
in fase di programmazione esempre a 8 bit (DB
o
- DB
r
), anche quando il registro _Q
' '16 b' In 2' , -'" .,,,,,,,',,' DRE n
lDteressato e a It. questo caso occorrono operazlODl. , .
In fase di trasferimento Ie linee MEMR e MEMW trasmettono il comando
memoria, mentre Ie linee lOWe lOR trasmettono it comando corrispondente alia. ,:".',.,.:,,'
periferica. L'indirizzo di memoria (16 bit) viene presentato su A
o
-A
r
e su DBa -
(parte. alta). perb il bus dat.i deve essere impiegato pe: il datc>
presentando l'mdinzzo 1'8237 assensce 11 comando ADSTR, che Vlene lmplegato per :',,'
memorizzare la parte alta delPindirizzo in un latch esterno. II comando AEN viene',.:A; .
usato immediatamente dopo per abilitare l'uscita di questo latch verso il bus }:'::>'> .',' 4.37 Diagraro
ma
d.i stato dell'8237. 51 rappresenta 10 eli 1
indirizzi del sistema, ricostruendo COSl su 16 bit e permettendo l'uso del .. stati nel diagramma compongoDo il di ,La, rase eli e
bUB dati per il passaggio del dato letto 0 relativa un 5ingolo canale. II pas.SagglO,all? stato 51 appen.a
La linea READY serve a introdurre eventuali cieli di attesa e dilatare la tempo-- aSserita una delle 4 hnee DREQ, In pre5enza dl una rtchl.esta. la IOgJ.ca Ia
d
'," -"....'.:' .. , - d Ibn CPU (HRQ) e passa alia stato So 81 notl che da S4 Sl passa a 1 se I
memoria 0 di de! perife:ici. a lavorare in modalita. Sing?lo. Nella
81 notl infine la che il canale che sta .-L:;: a. Blocchi, il passaggio a 5/ si ha solo a fine del trasfenmento, 1
trasferendo ha concluso il trasfenmento dl tuttI 1 dah. La Imea puo essere portata ::;i 'f-;":;:.,:: . . cli'stato sono scanditi dal clock e 1a durata. di una. operazione esempre UD multiplo
bassa dall1esterno per forzare la conclusione dell'operazione di trasferimento in corso, ,:

"& ..,' .... ,
:.c. ,,;,::,",: .. ,_
So' Primo stato di una operazione eli DMA. La logica si in
.::' .,. S avendo attivato i1 segnale HRQ e VI resta fino ache la CPU non nsponde
... ,."", 0
n comportamento del controllore 8237 puo essere descritto attraverso 2 macrostati 0 ''': . asserendo HLDA,
fasi: ' ,.. SI' Gli 8 bit piu dell'indirizzo
Z9
1
vengono sul bus dati
i DB? - al tempo stesso viene attlvato il segnale ADSTB
>:.' per la loro rnemonzzazl,one m latch esterno.
,li"._ .
... "j;. :
:;1\ ',... ,
,-.' ,,, .. ,.. .
'''' .,.',' .,
-J' ... ,
>.:.:7" ':"
''iI ..,., "
. ... ,
,,,,1 .
i"',
.... ;.
,," .. "
, .
,. .' .'
,r,i',' .: ',.i ," ,
0""" . _,.,
I"
.:.<,
';I;', .
,.:;: .
T' .,.
. '" '
,0. '.'.,.
.';: .. ;
:.;" ': ..
"li
:Ii , ... :
:... "" ,'.
,', .'
..)'!
..
."
i.,
" ..'
'I"' ...
'.
, " ".'
:Ii ,
0'-
'
: \ ':'
,r, ..
...
'..
?f ?-..
142
\
l
1
)
1
I
\
I

I
,
\

I
I
,I

I
\
l
1
\
I
1
1
I
)
I
\
1
I
1
)
port are a 0 0 1 Indica se
CX <- x
; comando
; lettura byte 0
; comando
lettura byte 2
; lettura byte 3
,
AL, 0/1
CX, <x>
SETBIT
MOV AL. 2
OUT xx, AL
IN AL, xx
IN AL. xx
MOV AL, a
OUT xx, AL
IN At. xx
Esercizio 4.8 In riferimento a un rnicroprocessore con bus a 8 bit, si progetti un'in-
terfaccia parallela che riconosce una configurazione di 8 bit in ingresso. L'interfaccia
rispetta Ia specifica seguente. L'interfaccia ha un registro R all'indirizzQ FO esadeci-
male.
Se dopa 4 letture il comando non viene ritrasrnesso l'interfaccia continua a
restituire ciclicamente i byte meIDorizzati sull'ultimo comando.
Si disegni 10 schema dell'interfaccia. In particolare si wsegni 10 schema di sele-
zione del byte. (Si assuma che l'interfaccia sia all'indirizzo 70).
GREG = 10
GREG = 2
4.12 Esercizi
"'.!'" >i'\f!
;
. ::",
I!i'!..... ,.
- j .
:i(j.- . -.' ...:
144 Capitola 4 ' ,. ----------
----,- ,
- -'1:_"
,.;;fJ .' :
""::'.
. if':;:}W!l'ti:"".' ,t':"
" .. ' 4 3 Si costruisca IJinterfaccia per un bus dati a 8 bit, in grado di pilotare
,", , . "I., 'E.,"'''' E' rCIZIO
"'J s:scite digitalL Si 0 < x' < 63 it numero d'ordine generica
. . . .. .. ..' '; tta.re l'interfacCla 51 tenga conto che essa deve essere gestlta da una routme
Nota - Moltl degh eserClZI propost1 presuppongono la scnttura dl trattl dl pro..",> prog
e
II d chi t tt1i t L t d
.. . A bl S . II d II f . I 8086 ( '>:1 t a. contro 0 1 programma e arna a come so 0 speC1 ca o. a rou me eve
gramma In Imgu.gglo ssem er. I assume dl usare que 0 e a armg la Cfr.. >j e I t d tal rt d I Old del contenuto di
Appendi.ce D) 1 anche quando ,non si si usa CPU di- rp.odificare la so a USCI algi e X
ma
, po an 0 a a 0 a secon a
tipO. Inoltre, spesso 51 dl U5are un miCro a 8 ri"- ;. . i hiamata:
fenmento convemenza 51 mdmzzi .. , ConvenzlOne d c
sia su 16 bIt. In Oglll caso, per quanta SL rifensce al hnguagglO, Cl Sl'attlene a que\.. . MOV
10 dell'8086. Per svolgere alcuni esercizi e necessario aver acquisito un minima di .:Ii,R, '.. . MOV
dimestichezza can l'architettura x86. ::; CALL
, Un u.ltimo .riguarda i numeri a ,;. ...,.
ZlOlle di bIt. Se non mdlcato dlVersamente sono da Intendersl In notazlOne Esercizio 4.4 11 driver del 4,4.1 ha l'mconvemente di avere una vanablle a
E ' .. 1 S' d' '1 I . d' I' f . d' 't " :!;!K:'j:,'/;:;';"corrnine (BUSY) con l'esterno. E noto che le variabili a comune sono potenziale fonte
b
SerdCIZ!O 4
S
b 1 a
f
1 un mter a.cdeIa
t
. ' uSse
b
, at' (PDepr .con di malfunzionamenti nei programmi. Si modifichi il driver incapsulandone 10 stato
us atl a It. mer aCCla a una porta a 1 al, mmzzo, ;;i, , '',fj,'./;.:''l;:....... . dfi I Itt d 11 t t t
FO!., .registro di controUo (CREG, Fl) e di sta.to (SREQ.l 0 una speCI ca routme per a e ura e 0 sao s esso.
alllOdlIIZZ0 A seconda del contenuto cil CREG 1mterfaccla ha 11 seguente Esercizio. 4.5 Ddriver del Paragrafo 4.4.1 accettare un solo (chiamata)
comportamento. . . . . , . . . ..... di trasferimento aUa volta. Per questa motlVo estata ogata La vanablle BUSY, come
CREG = 0: Pinterfacc,la edel DPORT e malta lmpeden-c ?'mt una sorta di semafQro, Se la routine di inizializzazione viene comunque chiamata
za verso 1esterno
,
I su DPORT non provoca ':':>;",':;:,,: ::'mentre e in corso la stampa, si ha disastro.. analizzino Ie che
nessun 1 . .. "OSSODO risultare. lnoltre, sulla tracCla del1
l
esercIZlo precedeote, SI dia al dnver la
e a a controllo dl Possibilita di rifiutare la chiamata
,
dandone indicazione, se gia occupato.
l'mterfaccla eab111tata a .funzlonare S?tto controllo dl lnterru-. ',:'p'! H>: "::, P. _ . . .... .. .
zione e genera un'interruzlOne per ogm carattere trasmesso. !.N\p,/..":,, Esercizio 4.6 Si dehnel 1a struttura dl un dnver III grado di gestlIe una coda di
. . ... .,.' c'omandi di trasferimento.
EserclzlO 4.2 81 dispone di una CPU a 8 bIt con spazlo dl memona 64kbyte. n, ....,. .
sistema in cui es.sa einserita un dispositivo di ARRAY..IN Esercizio 4.7 Si progett.i un parallela per un calcolatore a 8 bit che legge
da un vettore cil 1024 porte di 8 bIt. Le porte sono contlgue e vengono vlste come da un bus esterno a 32 bIt. Umterfaccia cleve prevedere un comando
,
trasmesso con
mappate in memoria. La posizione di mappatura della prima porta) puo il registro AL, codificato con un numero da 0 a 3. Sulla trasmissione del comando
A tal. il programma legge la ingresso B..AR (indirizzo l'jnterfaccia legge e memorizza i 32 b.it (4 byte) esterni. successive 4 di
EO), 11 contenuto mdica deve essere 1a pOSIZlOne della rnappatura fino . ,lettura (IN AL,. xx) devono portare III AL 14 byte a parlrre da quello
nuovo ardme, secondo questa cornspondenza: !+>.:'" "" che estate speCIficate col comando. Esemplo:
.' ('('It '."; , .".
B..AR = 0 mappatura del dispositivo di ingresso da 1000; .' :tS':; .. '
B..AR = 1 mappatura del da 2000j
B..AR = 2 mappatura del da 4000; . ..
B..AR = 3 mappatura del d'SPOSltlVO dl lllgresso da SOOO.
In base alla Iettura di B..AR il programma predispone il dispositivo il modo che :11 !:;':::,:"
ARRAY-IN sia mappato alIa posizione indicata dalla lettura stessa. A tal fine il
dispositivo presenta una porta di contralla di nome XAR, all'indirizzo E2. .
Si progetti 130 logica che consente la mappatura fisica di ARRAY_IN alla posizione .';:,j ..:
voluta. .. \1 ..
Si seriva il tratto di cadiee assembler cheo (a) legge B..AR; (h) predispone ':' , .....
la mapp.tur. fisie. di ARRAY.IN; (c) chiaroa la routine MAP_TO.M, come sotto ..";.. ,.
specificato. ,:<"
8i scriva il testo a.lsembler della routine MAP_TO.M ehe legge Ie 1024 porte di ".
ARRAYIN e copia il contenuto di ciascuna porta nella corrispondente locazione di ......
memoria. La routine viene chiamata passando nel registro BX I'indirizZQ di mappa-
tura di ARRAY..IN. :\J .. ,
;.:<,

I
\
l
1
\
I
1
1
I
)
I
\
1
I
1
)
port are a 0 0 1 Indica se
CX <- x
; comando
; lettura byte 0
; comando
lettura byte 2
; lettura byte 3
,
AL, 0/1
CX, <x>
SETBIT
MOV AL. 2
OUT xx, AL
IN AL, xx
IN AL. xx
MOV AL, a
OUT xx, AL
IN At. xx
Esercizio 4.8 In riferimento a un rnicroprocessore con bus a 8 bit, si progetti un'in-
terfaccia parallela che riconosce una configurazione di 8 bit in ingresso. L'interfaccia
rispetta Ia specifica seguente. L'interfaccia ha un registro R all'indirizzQ FO esadeci-
male.
Se dopa 4 letture il comando non viene ritrasrnesso l'interfaccia continua a
restituire ciclicamente i byte meIDorizzati sull'ultimo comando.
Si disegni 10 schema dell'interfaccia. In particolare si wsegni 10 schema di sele-
zione del byte. (Si assuma che l'interfaccia sia all'indirizzo 70).
GREG = 10
GREG = 2
4.12 Esercizi
"'.!'" >i'\f!
;
. ::",
I!i'!..... ,.
- j .
:i(j.- . -.' ...:
144 Capitola 4 ' ,. ----------
----,- ,
- -'1:_"
,.;;fJ .' :
""::'.
. if':;:}W!l'ti:"".' ,t':"
" .. ' 4 3 Si costruisca IJinterfaccia per un bus dati a 8 bit, in grado di pilotare
,", , . "I., 'E.,"'''' E' rCIZIO
"'J s:scite digitalL Si 0 < x' < 63 it numero d'ordine generica
. . . .. .. ..' '; tta.re l'interfacCla 51 tenga conto che essa deve essere gestlta da una routme
Nota - Moltl degh eserClZI propost1 presuppongono la scnttura dl trattl dl pro..",> prog
e
II d chi t tt1i t L t d
.. . A bl S . II d II f . I 8086 ( '>:1 t a. contro 0 1 programma e arna a come so 0 speC1 ca o. a rou me eve
gramma In Imgu.gglo ssem er. I assume dl usare que 0 e a armg la Cfr.. >j e I t d tal rt d I Old del contenuto di
Appendi.ce D) 1 anche quando ,non si si usa CPU di- rp.odificare la so a USCI algi e X
ma
, po an 0 a a 0 a secon a
tipO. Inoltre, spesso 51 dl U5are un miCro a 8 ri"- ;. . i hiamata:
fenmento convemenza 51 mdmzzi .. , ConvenzlOne d c
sia su 16 bIt. In Oglll caso, per quanta SL rifensce al hnguagglO, Cl Sl'attlene a que\.. . MOV
10 dell'8086. Per svolgere alcuni esercizi e necessario aver acquisito un minima di .:Ii,R, '.. . MOV
dimestichezza can l'architettura x86. ::; CALL
, Un u.ltimo .riguarda i numeri a ,;. ...,.
ZlOlle di bIt. Se non mdlcato dlVersamente sono da Intendersl In notazlOne Esercizio 4.4 11 driver del 4,4.1 ha l'mconvemente di avere una vanablle a
E ' .. 1 S' d' '1 I . d' I' f . d' 't " :!;!K:'j:,'/;:;';"corrnine (BUSY) con l'esterno. E noto che le variabili a comune sono potenziale fonte
b
SerdCIZ!O 4
S
b 1 a
f
1 un mter a.cdeIa
t
. ' uSse
b
, at' (PDepr .con di malfunzionamenti nei programmi. Si modifichi il driver incapsulandone 10 stato
us atl a It. mer aCCla a una porta a 1 al, mmzzo, ;;i, , '',fj,'./;.:''l;:....... . dfi I Itt d 11 t t t
FO!., .registro di controUo (CREG, Fl) e di sta.to (SREQ.l 0 una speCI ca routme per a e ura e 0 sao s esso.
alllOdlIIZZ0 A seconda del contenuto cil CREG 1mterfaccla ha 11 seguente Esercizio. 4.5 Ddriver del Paragrafo 4.4.1 accettare un solo (chiamata)
comportamento. . . . . , . . . ..... di trasferimento aUa volta. Per questa motlVo estata ogata La vanablle BUSY, come
CREG = 0: Pinterfacc,la edel DPORT e malta lmpeden-c ?'mt una sorta di semafQro, Se la routine di inizializzazione viene comunque chiamata
za verso 1esterno
,
I su DPORT non provoca ':':>;",':;:,,: ::'mentre e in corso la stampa, si ha disastro.. analizzino Ie che
nessun 1 . .. "OSSODO risultare. lnoltre, sulla tracCla del1
l
esercIZlo precedeote, SI dia al dnver la
e a a controllo dl Possibilita di rifiutare la chiamata
,
dandone indicazione, se gia occupato.
l'mterfaccla eab111tata a .funzlonare S?tto controllo dl lnterru-. ',:'p'! H>: "::, P. _ . . .... .. .
zione e genera un'interruzlOne per ogm carattere trasmesso. !.N\p,/..":,, Esercizio 4.6 Si dehnel 1a struttura dl un dnver III grado di gestlIe una coda di
. . ... .,.' c'omandi di trasferimento.
EserclzlO 4.2 81 dispone di una CPU a 8 bIt con spazlo dl memona 64kbyte. n, ....,. .
sistema in cui es.sa einserita un dispositivo di ARRAY..IN Esercizio 4.7 Si progett.i un parallela per un calcolatore a 8 bit che legge
da un vettore cil 1024 porte di 8 bIt. Le porte sono contlgue e vengono vlste come da un bus esterno a 32 bIt. Umterfaccia cleve prevedere un comando
,
trasmesso con
mappate in memoria. La posizione di mappatura della prima porta) puo il registro AL, codificato con un numero da 0 a 3. Sulla trasmissione del comando
A tal. il programma legge la ingresso B..AR (indirizzo l'jnterfaccia legge e memorizza i 32 b.it (4 byte) esterni. successive 4 di
EO), 11 contenuto mdica deve essere 1a pOSIZlOne della rnappatura fino . ,lettura (IN AL,. xx) devono portare III AL 14 byte a parlrre da quello
nuovo ardme, secondo questa cornspondenza: !+>.:'" "" che estate speCIficate col comando. Esemplo:
.' ('('It '."; , .".
B..AR = 0 mappatura del dispositivo di ingresso da 1000; .' :tS':; .. '
B..AR = 1 mappatura del da 2000j
B..AR = 2 mappatura del da 4000; . ..
B..AR = 3 mappatura del d'SPOSltlVO dl lllgresso da SOOO.
In base alla Iettura di B..AR il programma predispone il dispositivo il modo che :11 !:;':::,:"
ARRAY-IN sia mappato alIa posizione indicata dalla lettura stessa. A tal fine il
dispositivo presenta una porta di contralla di nome XAR, all'indirizzo E2. .
Si progetti 130 logica che consente la mappatura fisica di ARRAY_IN alla posizione .';:,j ..:
voluta. .. \1 ..
Si seriva il tratto di cadiee assembler cheo (a) legge B..AR; (h) predispone ':' , .....
la mapp.tur. fisie. di ARRAY.IN; (c) chiaroa la routine MAP_TO.M, come sotto ..";.. ,.
specificato. ,:<"
8i scriva il testo a.lsembler della routine MAP_TO.M ehe legge Ie 1024 porte di ".
ARRAYIN e copia il contenuto di ciascuna porta nella corrispondente locazione di ......
memoria. La routine viene chiamata passando nel registro BX I'indirizZQ di mappa-
tura di ARRAY..IN. :\J .. ,
;.:<,
"
!
,
"
"
,
,
I',
,
I'
, I
,
,
,
I
,
"

I'
,
"
147
..
..

GJ
G3
G2
GO
II sottosistema di ingresso/uscita

:.:.


I ,
,
lORD
IOWR
81
80

,
"
3
"
"
"
"
7
" .,
"
'.
4
"
.,
"

"
.,
AI.
o.
m
-



.
'.
',.

r
'(

.
'.
',.

'-

?
-
'/1'74
"'.


""
"
Capitolo -4
"
'j' !x
:;i,h:",:"'
'm "",},
.; . .
"i<,
"I.' . ," '-.,.
'
"1'1 :Y"".:,
< "
-:1,-"""
, '" '
"rt ,;V",
Scrivendo un byte in R, l'interfaccia si predispone a generare un'interruzione. L'in- 'f,R :;':!;<".
terruzione cleve manifestarsi solo quando sulle 8 linee digitali provenienti dall',esterno ]'\0 :<,/,:"."
configurazione uguale, a quella scritta. . . ::/;/;,:;.
L mterruZlOne cleve restare assenta fino a.l momento In CUI non viene effettuata la '; ..
lettura di R. La lettura di R h3 Peffetto di disabilitare 13 generazione di interruzioni ,';4 ',.. !'
cia parte dell'interfaccia stessa. " :.:"
La riabilitazione dell'interfaccia alia generazione di interruzioni si ha solo a seguito di . .:::
una scrittura in R. r,1; :""" .
,
i:,...... ,,,,
Esercizio 4.9 Per una CPU a 32 bit si richiede che il sistema di interruzione funzioni
in questo modo: sulla di lao CPU genera un di e, a ':Jt ,:" .
Program Counter non modificato, legge Jl bus datI ed esegue come un
1
lstruzlOne 11 suo ':.',
contenuto. ;:,' :,: .. " ,
Si definisca il tipo di istruzione che deve essere presentata dal mondo esterno. til ,
che il del co.dice di operazione di 6 ,bit. e. che Ie :'1. ..'..
di salto gli ,altr1, bit all'mdInzzo di .
destma.zlOne, quah sono I limItl dello SpazlO di memona III CUi puo essere allocata la
istruzione delle routine di interruzione? Che tipo eli istruzione cleve concludere i:!(';'\'::',,';'
routine di interruzione e che effetto cleve avere? . ,:',
I. . ,. . ., , , ,:.:',.. 'Figura 4.38 Interfaccia di uscita castruita can componenti standard (Esercizio 4.11),
4.10 Un calc.olatore con a 8 bit ,Pilota un'mterfaccla dl mgresso a 8 bit, _. ,. ,
che eSlblSce questo funzlonamento: Vlene contmuamente controllato 10 stato delle 8 ::1'<-:">:::":,,,, , "
Hnee di e com?ar.ato col .del J:lEG fine l'interfaccia permettere Iettu,ra dello stato delle linee di uscita (Ie
,stessa; se II confronto mdIca the gli lllgressl sono dIVerS) da REG Vlene assenta una che fanno fede)} In modo cbe 4 bit degh 8 trasmessi siano identici a quelli letti
richiesta di interruzione. ,::,:.<:/::'::' suI gruppo non modificate. Si assegni all'interfaccia IJindirizzo di base FO.
gli .il viene in REG e la di .::rJ. ',:. -.' Si scriva la routine DRIVER: che pilota l'interfaccia a centrollo di programma,
mterruzlOne Vlene disassenta (la nchiesta cll mterruZlOne cleve restare assenta finC? al '.... i,(:,:'; ",:." chIamata secondo questa convenZlOne: . ,
momenta della lettura, anche se nel frattempo gli ingressi tornano allo stato prece-, . ," ,. .
dente). ,< , mov AL, <4 bH dl un gruppo, posizionati a destra>
L'interfaccia prevede anche un bit di abilitazionej disabilitaziane della generazione .A :.' .:". ' mov AH, <n> ; numero del gruppo 0, .. J 3.
della ricbiesta di interruzione. Tale bit viene comandato dalla CPU. Si assuma che ' call DRIVER
I'indirizzo di base sia 240,
. .Si la il testo Assembler della ..
mterruZlOne. All'usclta della routme la varlablle (globale) VAR deve avere 1 nel bIt -:-:J. -'
che sona variati rispetto alla precedente lettura, 0 in quelli che non sono variati. ,
.... ,',1.'. .. '.,
Esercizio 4.11 Si analizzi il comportamento dell'interfaccia di Figura4.38. In
ti.colare. si tracci il diagrarnma sef?nali DAV1 e INTR.,
81 tracc) la parte dl rete dl comando del flip-flop dl abIhtazlOne, facendo In modo che
alratto del reset di macchina questa si porti in stato O. Fig,.ura 4.39 Schema delFinterfacc,'a per l'Ese " di F' 412
'I,","" '.', . ,rCIZIO 19ura..
I",:>'''':,,,,
" ,
:'J ..
.' " . { .'
, '''!,.

Wi,"""',' ,
, . .... ...., ...
in Figura4.39 presenta 16 linee di uscita. E previsto che Ie uscite siano divise in \ {,::::;'t: /: E' .. .
4 gruppi di 4 linee CiasCUDO, indicati come GO, Gl, G2 e G3, L'interfaccia deve t, 4,13 Un mlcroprocessore con bus dati a 8 bit (8088) legge il valore di una
costrUita latch da ll1,mo?o che I gruppi GO Gl ;;.z.:,,:;-(y Jo
rnis
ezza fisIca vana nel attraverso convertItore che
il pruna latch e I gruPP1,G2 e G3 11 secondo Viene h:,-,"(,i' -' e il m
ce
I,a converSlOne su btt, II letto e un numero C?ffipreSO tra 0
camandata trasmettendo il dato (4 bit) relatIvo a un gruPPOj CIO deve avvemre senza ,,',>::, :' asslmo rappresentabIle su 12 bIt. Una lettura dal convertltore nchlede questa
A
d"'i":"'" sequenza'
che cambino configurazione le 4 linee dell'altro gruppo posta sui medesimo latch. ,.:!, :', ,. .
,}./,' ,',', "
"'. "1
,j
, . .,
il'u.: 'if,!:
146
f
\
\
)
II
I
1
I
I
I
I
I
I
I
I
"
!
,
"
"
,
,
I',
,
I'
, I
,
,
,
I
,
"

I'
,
"
147
..
..

GJ
G3
G2
GO
II sottosistema di ingresso/uscita

:.:.


I ,
,
lORD
IOWR
81
80

,
"
3
"
"
"
"
7
" .,
"
'.
4
"
.,
"

"
.,
AI.
o.
m
-



.
'.
',.

r
'(

.
'.
',.

'-

?
-
'/1'74
"'.


""
"
Capitolo -4
"
'j' !x
:;i,h:",:"'
'm "",},
.; . .
"i<,
"I.' . ," '-.,.
'
"1'1 :Y"".:,
< "
-:1,-"""
, '" '
"rt ,;V",
Scrivendo un byte in R, l'interfaccia si predispone a generare un'interruzione. L'in- 'f,R :;':!;<".
terruzione cleve manifestarsi solo quando sulle 8 linee digitali provenienti dall',esterno ]'\0 :<,/,:"."
configurazione uguale, a quella scritta. . . ::/;/;,:;.
L mterruZlOne cleve restare assenta fino a.l momento In CUI non viene effettuata la '; ..
lettura di R. La lettura di R h3 Peffetto di disabilitare 13 generazione di interruzioni ,';4 ',.. !'
cia parte dell'interfaccia stessa. " :.:"
La riabilitazione dell'interfaccia alia generazione di interruzioni si ha solo a seguito di . .:::
una scrittura in R. r,1; :""" .
,
i:,...... ,,,,
Esercizio 4.9 Per una CPU a 32 bit si richiede che il sistema di interruzione funzioni
in questo modo: sulla di lao CPU genera un di e, a ':Jt ,:" .
Program Counter non modificato, legge Jl bus datI ed esegue come un
1
lstruzlOne 11 suo ':.',
contenuto. ;:,' :,: .. " ,
Si definisca il tipo di istruzione che deve essere presentata dal mondo esterno. til ,
che il del co.dice di operazione di 6 ,bit. e. che Ie :'1. ..'..
di salto gli ,altr1, bit all'mdInzzo di .
destma.zlOne, quah sono I limItl dello SpazlO di memona III CUi puo essere allocata la
istruzione delle routine di interruzione? Che tipo eli istruzione cleve concludere i:!(';'\'::',,';'
routine di interruzione e che effetto cleve avere? . ,:',
I. . ,. . ., , , ,:.:',.. 'Figura 4.38 Interfaccia di uscita castruita can componenti standard (Esercizio 4.11),
4.10 Un calc.olatore con a 8 bit ,Pilota un'mterfaccla dl mgresso a 8 bit, _. ,. ,
che eSlblSce questo funzlonamento: Vlene contmuamente controllato 10 stato delle 8 ::1'<-:">:::":,,,, , "
Hnee di e com?ar.ato col .del J:lEG fine l'interfaccia permettere Iettu,ra dello stato delle linee di uscita (Ie
,stessa; se II confronto mdIca the gli lllgressl sono dIVerS) da REG Vlene assenta una che fanno fede)} In modo cbe 4 bit degh 8 trasmessi siano identici a quelli letti
richiesta di interruzione. ,::,:.<:/::'::' suI gruppo non modificate. Si assegni all'interfaccia IJindirizzo di base FO.
gli .il viene in REG e la di .::rJ. ',:. -.' Si scriva la routine DRIVER: che pilota l'interfaccia a centrollo di programma,
mterruzlOne Vlene disassenta (la nchiesta cll mterruZlOne cleve restare assenta finC? al '.... i,(:,:'; ",:." chIamata secondo questa convenZlOne: . ,
momenta della lettura, anche se nel frattempo gli ingressi tornano allo stato prece-, . ," ,. .
dente). ,< , mov AL, <4 bH dl un gruppo, posizionati a destra>
L'interfaccia prevede anche un bit di abilitazionej disabilitaziane della generazione .A :.' .:". ' mov AH, <n> ; numero del gruppo 0, .. J 3.
della ricbiesta di interruzione. Tale bit viene comandato dalla CPU. Si assuma che ' call DRIVER
I'indirizzo di base sia 240,
. .Si la il testo Assembler della ..
mterruZlOne. All'usclta della routme la varlablle (globale) VAR deve avere 1 nel bIt -:-:J. -'
che sona variati rispetto alla precedente lettura, 0 in quelli che non sono variati. ,
.... ,',1.'. .. '.,
Esercizio 4.11 Si analizzi il comportamento dell'interfaccia di Figura4.38. In
ti.colare. si tracci il diagrarnma sef?nali DAV1 e INTR.,
81 tracc) la parte dl rete dl comando del flip-flop dl abIhtazlOne, facendo In modo che
alratto del reset di macchina questa si porti in stato O. Fig,.ura 4.39 Schema delFinterfacc,'a per l'Ese " di F' 412
'I,","" '.', . ,rCIZIO 19ura..
I",:>'''':,,,,
" ,
:'J ..
.' " . { .'
, '''!,.

Wi,"""',' ,
, . .... ...., ...
in Figura4.39 presenta 16 linee di uscita. E previsto che Ie uscite siano divise in \ {,::::;'t: /: E' .. .
4 gruppi di 4 linee CiasCUDO, indicati come GO, Gl, G2 e G3, L'interfaccia deve t, 4,13 Un mlcroprocessore con bus dati a 8 bit (8088) legge il valore di una
costrUita latch da ll1,mo?o che I gruppi GO Gl ;;.z.:,,:;-(y Jo
rnis
ezza fisIca vana nel attraverso convertItore che
il pruna latch e I gruPP1,G2 e G3 11 secondo Viene h:,-,"(,i' -' e il m
ce
I,a converSlOne su btt, II letto e un numero C?ffipreSO tra 0
camandata trasmettendo il dato (4 bit) relatIvo a un gruPPOj CIO deve avvemre senza ,,',>::, :' asslmo rappresentabIle su 12 bIt. Una lettura dal convertltore nchlede questa
A
d"'i":"'" sequenza'
che cambino configurazione le 4 linee dell'altro gruppo posta sui medesimo latch. ,.:!, :', ,. .
,}./,' ,',', "
"'. "1
,j
, . .,
il'u.: 'if,!:
146
f
\
\
)
II
I
1
I
I
I
I
I
I
I
I
\
,
,
J
l
I
I
\
\
1
I
1
I
)
I
)
149
DIN

x
y
DO-D7
II sottosistema di ingressofuscita
20

6
"7
,
0
I
-
-
'"
, ,
D
I/O

"
lORD
lOW
lOR
lOW
!NT
(DO-D7)
Bus Dati
Bus Indirizzi
Bus lndinzzi
Bus 'Dati
Capitola 4
,

-.
-!'i:':!"1!,f: .
"".111:;.';., ,',
t;..',c . , . _
." ...... .. , -
.
''9 . ':j"
,', '..
ik<,,;.' .
"U: I.".. ',.
\' j'. .' ,
,;,,1
, 11 " ','
;'.",,, ". ' ,',
MOV AL,l .....
OUT CAD. AL ; comando conversione (ipotesi: risposta istantanea) ..
IN AL, CAD ;lett-ura 8 bit menO significativi ", ..
IN AH, CAD+l ; e dei 4 bit piu significativi (a destra in AH) ?""",
.,-' ," '
'".j
nvalore del dato letto viene comunicato all'esterno sui bit 0 (BO) della porta PW nel' ;';j: : "";'",'
modo seguente. BO corrisponde a un segnale periodico, con periodo T= 1 secondo. ,1: ..
Quando il valore letto ezero, allora BO= 0 per 100 ms e BO= 1 per i restanti 900 ,'-:' " ,
ms. Quando it valore letto epari al massimo, allara EO= 0 per 900 rns e EO= 1 per :t: , < Y' 440 Schema dell'inte f' I'E' . 414
' , d' d bb I BO l' d . al . I, 19ura ' r aCCta per serClZlO .
i restanti 100 ms. Valan mterme. 1 are ero lioga a = m rna 0 proporzlOn e' ','" .-I.
(I'intervallo di tempo in cui BO vale 1 cleve essere discretizzato, in conseguenza del ,
fatto che 10 stato di EO P,uo modificato solo.ogni 100.ms), ,t'<:: '::,' il'comando X (impulso). Sulla risposta del periferico (impulso Y) J'interfaccia cleve
. .n dispone dl un hmer) ,che gene.ra asserire INTR se eabilitata la sua generazione. La scrittura del prossimo dato deve
ZlOm ogm 100 ms. 81 assuma che CAD Sla all mdmzzo dl I/O pan a 70 e che PW Sla ,- far disasserire INTR. In ogni caso Pinterfaccia deve prevedere fl' -fl di t t d
II" d" AO'1, ,'"" ... . un Ip op sao a
a m .lnzzo.. ., .. .,' " .\:;:.r,;: ','{,'>;/;,. asserirejdisasserire au X/Y, in modo da poterla pilotare a controlla di pro aroma
81 progettl 1a routIne dI mterrUZione che, per It genenco penada d.i 1 secondo,' "",': '... ,Se l'interfaccia ein modalita di 'ngress il ,, Y dgr ,
. 'd did' d' I' d I I 't' II "._". . I 0, perllenco assensce qUaD 0 presenta
pllota BO rn rna 0 a rappresentare a me la e1 va on e segna e camplOna I su e ":. ,,:.. ' '.' ' "dato all'lllterfaccia Se l'interfac 'a' 'ab"'t tall" t ' , ,
. " - S' , I d'fi A bl dll ',;:- .. ',.: .. "un '. CI t: llaa rnerruzlOne,VleneassentoINTR
10 mterruZlOnt del penodo precedente. l scnva a co 1 ca ssem er e a routme /"," che resta in questa stato fino alIa lettura'del dato (, ' 'II tcb' , )'
r:::', :::." , . . . nOn I:: necessarIO I a 10 mgresso '
stessa., .. ",:. i' Anche qUi CI .cleve un bit dI stato asserito/disasserito cia YIX, in modo cia pater
Esercizio 4.14 A un calcolatore con bus dati a 8 bit (8088), soDa collegati, attraverso ',ill! "}", "-'.':",:" controllare l'mterfaccla da programma,
I'interfaccia J di Figura 4.40, 64 ingressi digitali, numerati da 0 a 63 (indicati come :':y"',c' ' Si progetti I'interfaceia, Si seriva 'a routine OUTPROG (chiamata con BX = off-
DIN), e 8 liscite digitali (indicate come DOUT). Ad intervalli di tempo predefiniti, ::-,:set dell'area ?atI, ex = nUffi:ro caratteri da trasmettere) che trasmette gli n caratteri
il programma esegue la rOll.tine LOOKUP che: (a) 10 degli '::'Vffi >a controllo dl pro?ramma. S: ,Ia a controllo interruzione OUTlNTR,
digitalij (b) stabilisce se, nspetto alia precedente eseCUZlOue, C e stata una 0 pm ''J::,i la relatlva parte cil inlZlalizzazlOne, che effettua II medesimo trasferirnento
variazione degli iogressi digitalij (c) trasmette sulla porta di uscita DOUT, nel caso .ed ecluamata con Ie stesse modalita di OUTPROG,
in cui ci stata alJ?ena un" il d'.ord,ine dell'ingresso digitale
ha camblato stato ,\m presenza dl pl1J mgressl vanatl, vlene presenta,to su DOUT
numero d'ordine pm basso tra quelh cornspondentl agh mgressl vanatl; se non c e;t
stata alcuna variazione vengono trasmessi tutti "I"). ,
LOOKUP BX il puotatore una ch:
individua 64 bit consecutlVl (8 byte), contenentlla copra delle vanazlofil d1 stato degll" ..:
di ques,ti byte deve valere 1 se il ,
mgresso dlgttale evanato, 0 ill caso contrano. '.
Si richiede: (1) il progetto prevedere un latch '.. '
DOUT mentTe non deve prevederlo per gh mgressl DIN); (2) 10 schema dl flusso dl' ,ro'\! "-\;.;;",,,_, Figura 4.41 Scbem', dell'inte face' I'E' , 415
' TL' d" - - I' , d il" '''1
1
,., , r la per serCLZlO
LOOKUP; (3)10 schema eli fiUBSO di INI KUP, routme 1 mlZla lzzazlOne e tn-"f.. . .
terfaccia e LO0 KUP che serva una. qualche inizializzazione)j (4)il testo
Assembler dl LOOKUP; (5)11 testo Assembler dl INITLKUP',:'f,l "
Esercizio 4.15 l'interfaccia in L'interfaccia 4.16 Su unaporta pa:ralle!a di uscita a 8 bit, i bit PO-P3 vengono impie ati
ha una porta datI all'lOdlnzzo FO. e una porta dl p:r 4 temponzzatl di periodo 4 s, PO easserito per il primo qu!rto
Scrivendo i byte sottoelencatl sulla porta F1 81 determma 1a modahta dl ..;, PJ. per 11 P2 per it terzo, per il quarto, I bit P4-P7 vengono
namento: ,. . . . " per, trasmettere datI eli alt:a natura, che qw non interessa. Per generare Ie forme
00: sema dl . Sl de,v
e
un dnver _03) risvegtiato dalle interruzioni generate
01: senza dl i a uno (RTC) al ntmo un'interruzione ogni 100 mB, n driver
80: Interfaccla III Usclta; con generazlOne dl mterruZlOm; ':!:il non deve modlficare 10 stato del bit P4-P7 Qme del resto il driver di
81: Interfaccia in can di ,,': dl bit (DRV ?eve modificare i bit' PO-P3', DRIV_03 e DRIV-47
Se l'interfaccla eIn modalita d.i uscIta, a ogm scnttura sulla porta.dab, 11 ',1-, no e non hanna vanablh m coroune. DRIV-47 eattivato da una specifica
viene trasmessQ all'esterno (l'interfaccia, deve prevedere un latch) e vlene
..I ':" "
148
,
I
\
,
,
J
l
I
I
\
\
1
I
1
I
)
I
)
149
DIN

x
y
DO-D7
II sottosistema di ingressofuscita
20

6
"7
,
0
I
-
-
'"
, ,
D
I/O

"
lORD
lOW
lOR
lOW
!NT
(DO-D7)
Bus Dati
Bus Indirizzi
Bus lndinzzi
Bus 'Dati
Capitola 4
,

-.
-!'i:':!"1!,f: .
"".111:;.';., ,',
t;..',c . , . _
." ...... .. , -
.
''9 . ':j"
,', '..
ik<,,;.' .
"U: I.".. ',.
\' j'. .' ,
,;,,1
, 11 " ','
;'.",,, ". ' ,',
MOV AL,l .....
OUT CAD. AL ; comando conversione (ipotesi: risposta istantanea) ..
IN AL, CAD ;lett-ura 8 bit menO significativi ", ..
IN AH, CAD+l ; e dei 4 bit piu significativi (a destra in AH) ?""",
.,-' ," '
'".j
nvalore del dato letto viene comunicato all'esterno sui bit 0 (BO) della porta PW nel' ;';j: : "";'",'
modo seguente. BO corrisponde a un segnale periodico, con periodo T= 1 secondo. ,1: ..
Quando il valore letto ezero, allora BO= 0 per 100 ms e BO= 1 per i restanti 900 ,'-:' " ,
ms. Quando it valore letto epari al massimo, allara EO= 0 per 900 rns e EO= 1 per :t: , < Y' 440 Schema dell'inte f' I'E' . 414
' , d' d bb I BO l' d . al . I, 19ura ' r aCCta per serClZlO .
i restanti 100 ms. Valan mterme. 1 are ero lioga a = m rna 0 proporzlOn e' ','" .-I.
(I'intervallo di tempo in cui BO vale 1 cleve essere discretizzato, in conseguenza del ,
fatto che 10 stato di EO P,uo modificato solo.ogni 100.ms), ,t'<:: '::,' il'comando X (impulso). Sulla risposta del periferico (impulso Y) J'interfaccia cleve
. .n dispone dl un hmer) ,che gene.ra asserire INTR se eabilitata la sua generazione. La scrittura del prossimo dato deve
ZlOm ogm 100 ms. 81 assuma che CAD Sla all mdmzzo dl I/O pan a 70 e che PW Sla ,- far disasserire INTR. In ogni caso Pinterfaccia deve prevedere fl' -fl di t t d
II" d" AO'1, ,'"" ... . un Ip op sao a
a m .lnzzo.. ., .. .,' " .\:;:.r,;: ','{,'>;/;,. asserirejdisasserire au X/Y, in modo da poterla pilotare a controlla di pro aroma
81 progettl 1a routIne dI mterrUZione che, per It genenco penada d.i 1 secondo,' "",': '... ,Se l'interfaccia ein modalita di 'ngress il ,, Y dgr ,
. 'd did' d' I' d I I 't' II "._". . I 0, perllenco assensce qUaD 0 presenta
pllota BO rn rna 0 a rappresentare a me la e1 va on e segna e camplOna I su e ":. ,,:.. ' '.' ' "dato all'lllterfaccia Se l'interfac 'a' 'ab"'t tall" t ' , ,
. " - S' , I d'fi A bl dll ',;:- .. ',.: .. "un '. CI t: llaa rnerruzlOne,VleneassentoINTR
10 mterruZlOnt del penodo precedente. l scnva a co 1 ca ssem er e a routme /"," che resta in questa stato fino alIa lettura'del dato (, ' 'II tcb' , )'
r:::', :::." , . . . nOn I:: necessarIO I a 10 mgresso '
stessa., .. ",:. i' Anche qUi CI .cleve un bit dI stato asserito/disasserito cia YIX, in modo cia pater
Esercizio 4.14 A un calcolatore con bus dati a 8 bit (8088), soDa collegati, attraverso ',ill! "}", "-'.':",:" controllare l'mterfaccla da programma,
I'interfaccia J di Figura 4.40, 64 ingressi digitali, numerati da 0 a 63 (indicati come :':y"',c' ' Si progetti I'interfaceia, Si seriva 'a routine OUTPROG (chiamata con BX = off-
DIN), e 8 liscite digitali (indicate come DOUT). Ad intervalli di tempo predefiniti, ::-,:set dell'area ?atI, ex = nUffi:ro caratteri da trasmettere) che trasmette gli n caratteri
il programma esegue la rOll.tine LOOKUP che: (a) 10 degli '::'Vffi >a controllo dl pro?ramma. S: ,Ia a controllo interruzione OUTlNTR,
digitalij (b) stabilisce se, nspetto alia precedente eseCUZlOue, C e stata una 0 pm ''J::,i la relatlva parte cil inlZlalizzazlOne, che effettua II medesimo trasferirnento
variazione degli iogressi digitalij (c) trasmette sulla porta di uscita DOUT, nel caso .ed ecluamata con Ie stesse modalita di OUTPROG,
in cui ci stata alJ?ena un" il d'.ord,ine dell'ingresso digitale
ha camblato stato ,\m presenza dl pl1J mgressl vanatl, vlene presenta,to su DOUT
numero d'ordine pm basso tra quelh cornspondentl agh mgressl vanatl; se non c e;t
stata alcuna variazione vengono trasmessi tutti "I"). ,
LOOKUP BX il puotatore una ch:
individua 64 bit consecutlVl (8 byte), contenentlla copra delle vanazlofil d1 stato degll" ..:
di ques,ti byte deve valere 1 se il ,
mgresso dlgttale evanato, 0 ill caso contrano. '.
Si richiede: (1) il progetto prevedere un latch '.. '
DOUT mentTe non deve prevederlo per gh mgressl DIN); (2) 10 schema dl flusso dl' ,ro'\! "-\;.;;",,,_, Figura 4.41 Scbem', dell'inte face' I'E' , 415
' TL' d" - - I' , d il" '''1
1
,., , r la per serCLZlO
LOOKUP; (3)10 schema eli fiUBSO di INI KUP, routme 1 mlZla lzzazlOne e tn-"f.. . .
terfaccia e LO0 KUP che serva una. qualche inizializzazione)j (4)il testo
Assembler dl LOOKUP; (5)11 testo Assembler dl INITLKUP',:'f,l "
Esercizio 4.15 l'interfaccia in L'interfaccia 4.16 Su unaporta pa:ralle!a di uscita a 8 bit, i bit PO-P3 vengono impie ati
ha una porta datI all'lOdlnzzo FO. e una porta dl p:r 4 temponzzatl di periodo 4 s, PO easserito per il primo qu!rto
Scrivendo i byte sottoelencatl sulla porta F1 81 determma 1a modahta dl ..;, PJ. per 11 P2 per it terzo, per il quarto, I bit P4-P7 vengono
namento: ,. . . . " per, trasmettere datI eli alt:a natura, che qw non interessa. Per generare Ie forme
00: sema dl . Sl de,v
e
un dnver _03) risvegtiato dalle interruzioni generate
01: senza dl i a uno (RTC) al ntmo un'interruzione ogni 100 mB, n driver
80: Interfaccla III Usclta; con generazlOne dl mterruZlOm; ':!:il non deve modlficare 10 stato del bit P4-P7 Qme del resto il driver di
81: Interfaccia in can di ,,': dl bit (DRV ?eve modificare i bit' PO-P3', DRIV_03 e DRIV-47
Se l'interfaccla eIn modalita d.i uscIta, a ogm scnttura sulla porta.dab, 11 ',1-, no e non hanna vanablh m coroune. DRIV-47 eattivato da una specifica
viene trasmessQ all'esterno (l'interfaccia, deve prevedere un latch) e vlene
..I ':" "
148
,
I
"
,
,
, I
" ,
, ,
"
::
,
" ,I
II "
I. :
,
" I
\1 I

I
"
i
151
--1
+5v
+5v
GO
Gl
G2
G3
IRQO
IRQ'
IRQ2
IRQ'
Il sottosistema di ingressojuscita
"
'"
00
.
e

0

D
06
,
Z
,
07
c
V
lOR
-
lOW
"

,
,

-
I
'.
lORD
IOWR

IRQ
Bus Dati
Bus lndlrizzi
Bus Indirizzi
Bus Dati
inizializzazione della routine di servizio azzeri CaNT, effettui il reset dell'interfaccia,
lasciandola abilitata a generare tutte Ie possibili interruzioni. .
" " Si assuma che Ie IRQi siano attive come fronti di salita, conseguentemente suIrin-
terfaccia occorre memorizzare I'avvenuta richiesta.
-,.
ndirizzl
all
10
0
.

I


0

10
DO
t,

17
D'l- '

-
Bus I
Bus I
IRQ
lORD -
IOWR -
Capitolo 4
, :.,
,-
Esercizio 4.18 A un micro con bus dati a 8 bit ecollegata un'interfaccia come quell a
di Figura 4.43. L'esterno si manifesta con 4 Hnee di richiesta di interruzione IRQO,y,I'
IRQI, IRQ2 e IRQ3, associate ai 4 gruppi di 8 bit in uscita (GO, GI, G2, G3), ..
presenza di due richieste contemporanee quella di numero pili basso eprioritaria.
risposta a una interruzione deve essere presentato it contenuto di un contatore software''':\f:
di 8 bit (CaNT) suI gruppo associato all'interruzione servita, la richiesta stessa deve
essere annullata (reset) e CONT incrementato di 1. L'interfaccia e all'indirizzo FO.
Si progetti l'interfaccia, comprese Ie decodifiche degli indirizzi, prevedendo.
consenta?i una? di interruzione.
SI.scnva la routine dl serV1Z10 dell'mterruzlOne (In hnguagglO Assembler) che
svolge quanta sopra specificato (il contatore e uruco per tutto il sistema e viene ag
giornato solo dalla routine di servizio dell'interfaccia). Si preveda che la sezione di
Figura 4,42 lnterfa.cce dell'esercizio 4.17.
.. :/
F,l....,,, ,
i
')1;)'..;,.; ,
'
";! ", c,
". ",.r ,_, ,
. ."" '
'".:''' , ,

.
.. ;{;, : -", .;;
,'-",""," '
\ <:,;. "",
.Ji
l

. !i'::'- -
",I,.'; "',";'.! co,
'''I " .. '
,; ..:,:" ',"
.".oi: '
Esercizio 4.17 Si dispone di un micro COD bus dati a 8 bit. Il sistema presenta Ie due :f.;}/-'
interfacce leO eli Figura4.42! rispettivamente agli indirizzi 70 e F2. All'interfaccia .. .",
r vengoDo portati 8 ingressi digitali. Vinterlaccia 0 pilota 8 LED. Ogni LED elogi- ';(X" '
camente associato a uno degli ingressi digitali letti attraverso L Quando un ingresso
ebasso (Zero logico) , il relativo LED non cleve emettere (e doe il catodo deve essere "
a Uvello di teusione alto). :'}q '1;:<::' .'
L'interlaccia I viene letta da programma e da programma viene trasmesso un byte ... .
alllinterfaccia 0 in modo da attivare i LED che corrispondono agli ingressi a 1. Si 'J'f.i F?-:-::' .""
presume che a regime tutti gli ingressi siano di norma a 0 e che pertanto i programmi i,;:< .
nOD debbano normalmente occuparsi dello stato degli I asserisce ':'.,' . . I ..
I 'ch' t di' -- ' IRQ quando almeno uno degli mgressl passa a 1. .. ;.jl. Figura 4.43 Inl;erfa.ccla dell EserclzlO 4.18.
a n les a . . . . .. . \ .
La IRQ di una routme di che.,
vamente, legge gli ingressi .e Ie. u.sclte modo nflettano gh ... ,
come detto sopra. La routrne di sefV1ZIO dell terrruna dopo che tutti ..
gli ingressi sono tornati a O. ffiQ deve essere stessa Esercizio 4.19 Un micro con bus dati a 8 bit (8088) presenta l'interfaccia di uscita
ingresso, prima di quaiunque altra azione) e v.lene.nassenta routme. di Figura4.44. L'interfaccia eall'indirizzo 40. Essa deve essere pilotata in modo tale
Si disegnino gli schemi delle interlacce. 51 scnva la routme dl serVIZI0. che un solo LED alIa volta sia in conduzione. In particolare si richiede che i LED
vengi:LDo pilotati che quelli corrispondenti aile .huee ,delle linee. pari (00,
.. .' 06.) In per I.sondo, mentre quelh huee
"" ,dlspan restm.o m conduzlOne per 2sandI. Per generare Ia tempoflzzazl0ne 51 dIspone
.. ...:.' di un dispOSItivo (contatore) che, una volta abilitato, genera un'interruzione ogni
..!$II . 200ms. n dispositivo in questione si abilita scrivendo 1 all'indirizzo (di I/O) 70, si
aal rnedesimo indirizzo. Si assuma che inizialmente il contatore
Sl3 dlsablhtato.
: tracci 10 di fiusso e il teste assembler della routine di servizio dell'in-
, ' . terrUzlOne che gestlsce il contatore, compresa 1a sua sezione di inizializzazione.
..
'15."" ...,.. " '
-;.<:r:;.":<..'
"" .,.

. '.. , " "
.. ...
'-., .
.
,,'cr'y-....
C.. .. ..l<.','". "
..... ,,...., ....
",. ,:.", ",'
"'. 'C' '.',. .. .
'
',:,
... """,, ."',"
.

.:." .
"
..
,"-
.' ,.".. .'
....... r

.
..,",'... ., "
"...
'.'"f.-.
r
.".' ,
Figura 4.44 lnterfaccia dell'Esercizio 4.19.
. "
.
'
!
fa'!...'.., ,". , \.
"f',.q,!':',,;.;j' ,
.:'....,.. .
.-. <:I
E '.
4.20 Una CPU a 8 bit risponde aile interruzioni eseguendo un cicIo (di
...:INTA) III cui: (a) asserisce in segnale INTA verso l'esterno e disabilita il sistema
'; .. ,.
'.' wi' .1):
'. 1:"', .....t>: .. ,
..
,,' I'"


Si disegni 10 schema dell'interfaccia. Si scriva il testo assembler di DRIV_03.
Supponendo che DRIV_03 si interrompibile da DRIV-47, quale condizione di malfun-
zionamento potrebbe verificarsi?
150
\
I
I
)
\
\
I
1
l
!
)
I
I
I
:I
"
,
,
, I
" ,
, ,
"
::
,
" ,I
II "
I. :
,
" I
\1 I

I
"
i
151
--1
+5v
+5v
GO
Gl
G2
G3
IRQO
IRQ'
IRQ2
IRQ'
Il sottosistema di ingressojuscita
"
'"
00
.
e

0

D
06
,
Z
,
07
c
V
lOR
-
lOW
"

,
,

-
I
'.
lORD
IOWR

IRQ
Bus Dati
Bus lndlrizzi
Bus Indirizzi
Bus Dati
inizializzazione della routine di servizio azzeri CaNT, effettui il reset dell'interfaccia,
lasciandola abilitata a generare tutte Ie possibili interruzioni. .
" " Si assuma che Ie IRQi siano attive come fronti di salita, conseguentemente suIrin-
terfaccia occorre memorizzare I'avvenuta richiesta.
-,.
ndirizzl
all
10
0
.

I


0

10
DO
t,

17
D'l- '

-
Bus I
Bus I
IRQ
lORD -
IOWR -
Capitolo 4
, :.,
,-
Esercizio 4.18 A un micro con bus dati a 8 bit ecollegata un'interfaccia come quell a
di Figura 4.43. L'esterno si manifesta con 4 Hnee di richiesta di interruzione IRQO,y,I'
IRQI, IRQ2 e IRQ3, associate ai 4 gruppi di 8 bit in uscita (GO, GI, G2, G3), ..
presenza di due richieste contemporanee quella di numero pili basso eprioritaria.
risposta a una interruzione deve essere presentato it contenuto di un contatore software''':\f:
di 8 bit (CaNT) suI gruppo associato all'interruzione servita, la richiesta stessa deve
essere annullata (reset) e CONT incrementato di 1. L'interfaccia e all'indirizzo FO.
Si progetti l'interfaccia, comprese Ie decodifiche degli indirizzi, prevedendo.
consenta?i una? di interruzione.
SI.scnva la routine dl serV1Z10 dell'mterruzlOne (In hnguagglO Assembler) che
svolge quanta sopra specificato (il contatore e uruco per tutto il sistema e viene ag
giornato solo dalla routine di servizio dell'interfaccia). Si preveda che la sezione di
Figura 4,42 lnterfa.cce dell'esercizio 4.17.
.. :/
F,l....,,, ,
i
')1;)'..;,.; ,
'
";! ", c,
". ",.r ,_, ,
. ."" '
'".:''' , ,

.
.. ;{;, : -", .;;
,'-",""," '
\ <:,;. "",
.Ji
l

. !i'::'- -
",I,.'; "',";'.! co,
'''I " .. '
,; ..:,:" ',"
.".oi: '
Esercizio 4.17 Si dispone di un micro COD bus dati a 8 bit. Il sistema presenta Ie due :f.;}/-'
interfacce leO eli Figura4.42! rispettivamente agli indirizzi 70 e F2. All'interfaccia .. .",
r vengoDo portati 8 ingressi digitali. Vinterlaccia 0 pilota 8 LED. Ogni LED elogi- ';(X" '
camente associato a uno degli ingressi digitali letti attraverso L Quando un ingresso
ebasso (Zero logico) , il relativo LED non cleve emettere (e doe il catodo deve essere "
a Uvello di teusione alto). :'}q '1;:<::' .'
L'interlaccia I viene letta da programma e da programma viene trasmesso un byte ... .
alllinterfaccia 0 in modo da attivare i LED che corrispondono agli ingressi a 1. Si 'J'f.i F?-:-::' .""
presume che a regime tutti gli ingressi siano di norma a 0 e che pertanto i programmi i,;:< .
nOD debbano normalmente occuparsi dello stato degli I asserisce ':'.,' . . I ..
I 'ch' t di' -- ' IRQ quando almeno uno degli mgressl passa a 1. .. ;.jl. Figura 4.43 Inl;erfa.ccla dell EserclzlO 4.18.
a n les a . . . . .. . \ .
La IRQ di una routme di che.,
vamente, legge gli ingressi .e Ie. u.sclte modo nflettano gh ... ,
come detto sopra. La routrne di sefV1ZIO dell terrruna dopo che tutti ..
gli ingressi sono tornati a O. ffiQ deve essere stessa Esercizio 4.19 Un micro con bus dati a 8 bit (8088) presenta l'interfaccia di uscita
ingresso, prima di quaiunque altra azione) e v.lene.nassenta routme. di Figura4.44. L'interfaccia eall'indirizzo 40. Essa deve essere pilotata in modo tale
Si disegnino gli schemi delle interlacce. 51 scnva la routme dl serVIZI0. che un solo LED alIa volta sia in conduzione. In particolare si richiede che i LED
vengi:LDo pilotati che quelli corrispondenti aile .huee ,delle linee. pari (00,
.. .' 06.) In per I.sondo, mentre quelh huee
"" ,dlspan restm.o m conduzlOne per 2sandI. Per generare Ia tempoflzzazl0ne 51 dIspone
.. ...:.' di un dispOSItivo (contatore) che, una volta abilitato, genera un'interruzione ogni
..!$II . 200ms. n dispositivo in questione si abilita scrivendo 1 all'indirizzo (di I/O) 70, si
aal rnedesimo indirizzo. Si assuma che inizialmente il contatore
Sl3 dlsablhtato.
: tracci 10 di fiusso e il teste assembler della routine di servizio dell'in-
, ' . terrUzlOne che gestlsce il contatore, compresa 1a sua sezione di inizializzazione.
..
'15."" ...,.. " '
-;.<:r:;.":<..'
"" .,.

. '.. , " "
.. ...
'-., .
.
,,'cr'y-....
C.. .. ..l<.','". "
..... ,,...., ....
",. ,:.", ",'
"'. 'C' '.',. .. .
'
',:,
... """,, ."',"
.

.:." .
"
..
,"-
.' ,.".. .'
....... r

.
..,",'... ., "
"...
'.'"f.-.
r
.".' ,
Figura 4.44 lnterfaccia dell'Esercizio 4.19.
. "
.
'
!
fa'!...'.., ,". , \.
"f',.q,!':',,;.;j' ,
.:'....,.. .
.-. <:I
E '.
4.20 Una CPU a 8 bit risponde aile interruzioni eseguendo un cicIo (di
...:INTA) III cui: (a) asserisce in segnale INTA verso l'esterno e disabilita il sistema
'; .. ,.
'.' wi' .1):
'. 1:"', .....t>: .. ,
..
,,' I'"


Si disegni 10 schema dell'interfaccia. Si scriva il testo assembler di DRIV_03.
Supponendo che DRIV_03 si interrompibile da DRIV-47, quale condizione di malfun-
zionamento potrebbe verificarsi?
150
\
I
I
)
\
\
I
1
l
!
)
I
I
I
:I
\
J

I
\
I
I
1
i
)
,
)
I
)
J

QO
Q6
.Q7
,
IF
,

PIC
I'
I'
INTA
IRQ
-
lORD
IOWR
Bus Dati
Bus IndiriZZi
.Jl ll-
I 'm I I
LJ LJ
+Sv
ali
-fl.- IRQ
lNTAO
- - - -
INTA INTAI
1NTERF
1-'---
:
CPU
INTR
Bus D
Capitola 4
Figura 4.45 Interfaccia dell'Esercizio 4.20. A sinistra il formate delPistruzione.
-
,,,.,="3;';1:


:''.. '.,'
,.:.- .'::;, I; ""'"-, '-
......c b_. _.
__
"e,,- ,"., i".,
h"" .-.
_c".e.,
.,..\; ....,._.:. -.'- -
i: !.__

di interruzione; (b) legge quanta viene presentato sui bus dati e 10 esegue come
un'lStruzlOne. __. _
n repertorio di istruzioni precede l'istruzione RST il cui formato e riportato in . --
Figura 4.4.5. Se neil numero codHicato nel campo xxx I l'esecuzione di RST n ha
l'elfetto die :;', .'./,_,:,.
- salvare il PC corrente sullo ,t/'. _'
- eseguire l'istruzione aHa locazlOne 8n. .
Supponendo che la richiesta di interruzione del periferico (IRQ) sia un impulso _ . .
eli la di rispetto al clell'inter., '- Figura 4.46 Schema del controllere programmabile di intenuzioni deU'Esercizio 4.21.
ruzlOne ill d3J.sy cham, per un genenco penfefleo, come schernatlzzato 1n figura. ....:.:il
1
.. ' .
essere possibile fissare il numero n a piacere (tra 0 e 7) tramite ponticelli. Si illustri . . "
cosa cleve contenere la posizione 8n e come si conclude 1a routine di interruzione. . , Esercizio 4.22 Trarmte caicolatore deve essere generato un segnale digitate penodi-
di = lsondo. nsegnale cleve sul bit. BO porta uscita
"j? ,"'it,":, PORT, dl mdmzzo 50. II duty cycle deve pater vanare tra II 10% e il 90% dl T, con
';;lJ] ;{{}C'H'incrementi discreti del 10% (1/10 di secondo). 1n Figura4.47 vengono presentati i
temporali corrispondenti ai due casi estremi.
La routine INTPW, operante sotto centrollo di interruzione, ha il compito di pi-
''-;;'';i" i'1-/L:f)'lotare PORT in modo tale che l'uscita BO abbia la fonna d'onda voluta. La routine e
/r,u agganciata aIle interruzioni dell'orologio che si manifestano una ogni 10 ms. Sull'inter-
ruzione che corrisponde all'inizio di un periodo
,
la routine legge la variabile (comune)
<.M (0 < N < 10
,
N intero) I che indica Quale cleve essere il duty cycle del periodo che
':'::f' :.: iniziando. Poiche i restanti 7 bit di PORT vengono usati in altro modo, eneces-
sario che la routine INTPW nOn ne modifichi 10 stato. A tal fine l'interfaccia cleve
consentire .1a lettura di sui 7 in modo che la scrittura
", da parte dI INTPW ne nconfermt il valore. Ipotlzzando dl usare una CPU 8088.
.. /;;j. 8i progetti l ' interfaccia assumendo di utilizzare per porta di uscita un normale
. .. . . .. .. .-latch a 8 bit. 8i disegni la logica per la lettura e la scrittura della porta. Si tracei 10
81 deve progettare 1a cit clI. mterrUZIOnt di Russo della routine di interruzione INTPW e il relativo testa assembler.
mablle (PIC) tlPO 8259A. Lo schema funzlOnale equello dl Figura 4.46. Le hnee dl ):."i':;cc"""",.
interruzione in ingresso sonG IRQOI IRQl, .. , IRQ7. In. presenza di almeno una .. _ t I SIIC
nea IRQi asserita, il eontrollore deve IRQ. La CPU risponcle aWinterruzione 11/11 I I
eseguendo un ciclo di INTA (si assumano 3 periodi di clock). Sui ciclo di 1NTA il
VT sono programmabili e IdentIficano la POSlZlone dl base (m memoria) dello SpazlO
riservato agli 8 vettori di interruzione. 13 bit meno.significativi c.ontengo.no iI numero
d'ordine dell'interruzione che. se:yita. f1s
p
o,ndere all'mterrUzlOoe la Figura 4.47 Schema del controllore programmabile d.i interruzion.i dell'Esercizio 4.22.
scala VT di 4. In presenza dI' pm t1Cbleste attlve, sull INTA, deve essere generato II
VT relativo a quella pili prioritaria (IRQO ha priorita massima, IRQ7 minima).
. Si. assuma ch.e il bus C:pU a 8 bit .. Per semplicita si che I.e .... .... . '.
ruZIOru car;nbrno durante il clc,lo dl SI assuma .anche la smgola Sl l'lDterfac.cla. In.
venga dlsassenta per effetto dell esecuZlone della relattva routme. II controllore e -' Quando vtene'scntto un byte all'lOdmzzo FO, il bit pm slgnificativo stabilisce se
all'indirizzo lFO. .!$'I tratta di un byte di comando (D7=1) 0 di un dato (D7=0). Nel caso si tratti di un
Si progetti la logica del controllore, comprensiva della predisposizione (su coman-.. di comando, il bit meno significativo (DO) abilita (00=1) a disabilita (DO=O)
do della CPU) della base dei vettori di interruzione, del mascheramento selettIvo delle alIa generazione cli interruzion.i. Nel caso di un byte di dati vengono
. della di VT suI bus clei dati in a INTA. . i bit deve prevedere un latch per il dato) e
Si scnva 11 tratto dl programma per programmare Ii controllore.1n modo ,.. assento II cornando X (dl tlPO lffipulsIVO).
che la base dei vettori sia all'indirizzo effettivo CO e quello per mascherare/ demascherare't. <,tlr:1'181':;: Sulla ri,posta del perilerico (impulso ACK) l'interfaccia deve asserire Pinterru-
IRQ5 lasciando gli altri mascheramenti invariati (la rnaschera corrente cleve essere zlone. se e. abilitata. In ogni caso l'interfaccia deve prevedere un flip-flop di stato da
ottenuta leggendo il controllore stesso). ;;:; su XI ACK.
;':;,
-':!:
',.. ."."'.
-,A 'f1?P-1ii;;;j;".i::".'
152
I
\
J

I
\
I
I
1
i
)
,
)
I
)
J

QO
Q6
.Q7
,
IF
,

PIC
I'
I'
INTA
IRQ
-
lORD
IOWR
Bus Dati
Bus IndiriZZi
.Jl ll-
I 'm I I
LJ LJ
+Sv
ali
-fl.- IRQ
lNTAO
- - - -
INTA INTAI
1NTERF
1-'---
:
CPU
INTR
Bus D
Capitola 4
Figura 4.45 Interfaccia dell'Esercizio 4.20. A sinistra il formate delPistruzione.
-
,,,.,="3;';1:


:''.. '.,'
,.:.- .'::;, I; ""'"-, '-
......c b_. _.
__
"e,,- ,"., i".,
h"" .-.
_c".e.,
.,..\; ....,._.:. -.'- -
i: !.__

di interruzione; (b) legge quanta viene presentato sui bus dati e 10 esegue come
un'lStruzlOne. __. _
n repertorio di istruzioni precede l'istruzione RST il cui formato e riportato in . --
Figura 4.4.5. Se neil numero codHicato nel campo xxx I l'esecuzione di RST n ha
l'elfetto die :;', .'./,_,:,.
- salvare il PC corrente sullo ,t/'. _'
- eseguire l'istruzione aHa locazlOne 8n. .
Supponendo che la richiesta di interruzione del periferico (IRQ) sia un impulso _ . .
eli la di rispetto al clell'inter., '- Figura 4.46 Schema del controllere programmabile di intenuzioni deU'Esercizio 4.21.
ruzlOne ill d3J.sy cham, per un genenco penfefleo, come schernatlzzato 1n figura. ....:.:il
1
.. ' .
essere possibile fissare il numero n a piacere (tra 0 e 7) tramite ponticelli. Si illustri . . "
cosa cleve contenere la posizione 8n e come si conclude 1a routine di interruzione. . , Esercizio 4.22 Trarmte caicolatore deve essere generato un segnale digitate penodi-
di = lsondo. nsegnale cleve sul bit. BO porta uscita
"j? ,"'it,":, PORT, dl mdmzzo 50. II duty cycle deve pater vanare tra II 10% e il 90% dl T, con
';;lJ] ;{{}C'H'incrementi discreti del 10% (1/10 di secondo). 1n Figura4.47 vengono presentati i
temporali corrispondenti ai due casi estremi.
La routine INTPW, operante sotto centrollo di interruzione, ha il compito di pi-
''-;;'';i" i'1-/L:f)'lotare PORT in modo tale che l'uscita BO abbia la fonna d'onda voluta. La routine e
/r,u agganciata aIle interruzioni dell'orologio che si manifestano una ogni 10 ms. Sull'inter-
ruzione che corrisponde all'inizio di un periodo
,
la routine legge la variabile (comune)
<.M (0 < N < 10
,
N intero) I che indica Quale cleve essere il duty cycle del periodo che
':'::f' :.: iniziando. Poiche i restanti 7 bit di PORT vengono usati in altro modo, eneces-
sario che la routine INTPW nOn ne modifichi 10 stato. A tal fine l'interfaccia cleve
consentire .1a lettura di sui 7 in modo che la scrittura
", da parte dI INTPW ne nconfermt il valore. Ipotlzzando dl usare una CPU 8088.
.. /;;j. 8i progetti l ' interfaccia assumendo di utilizzare per porta di uscita un normale
. .. . . .. .. .-latch a 8 bit. 8i disegni la logica per la lettura e la scrittura della porta. Si tracei 10
81 deve progettare 1a cit clI. mterrUZIOnt di Russo della routine di interruzione INTPW e il relativo testa assembler.
mablle (PIC) tlPO 8259A. Lo schema funzlOnale equello dl Figura 4.46. Le hnee dl ):."i':;cc"""",.
interruzione in ingresso sonG IRQOI IRQl, .. , IRQ7. In. presenza di almeno una .. _ t I SIIC
nea IRQi asserita, il eontrollore deve IRQ. La CPU risponcle aWinterruzione 11/11 I I
eseguendo un ciclo di INTA (si assumano 3 periodi di clock). Sui ciclo di 1NTA il
VT sono programmabili e IdentIficano la POSlZlone dl base (m memoria) dello SpazlO
riservato agli 8 vettori di interruzione. 13 bit meno.significativi c.ontengo.no iI numero
d'ordine dell'interruzione che. se:yita. f1s
p
o,ndere all'mterrUzlOoe la Figura 4.47 Schema del controllore programmabile d.i interruzion.i dell'Esercizio 4.22.
scala VT di 4. In presenza dI' pm t1Cbleste attlve, sull INTA, deve essere generato II
VT relativo a quella pili prioritaria (IRQO ha priorita massima, IRQ7 minima).
. Si. assuma ch.e il bus C:pU a 8 bit .. Per semplicita si che I.e .... .... . '.
ruZIOru car;nbrno durante il clc,lo dl SI assuma .anche la smgola Sl l'lDterfac.cla. In.
venga dlsassenta per effetto dell esecuZlone della relattva routme. II controllore e -' Quando vtene'scntto un byte all'lOdmzzo FO, il bit pm slgnificativo stabilisce se
all'indirizzo lFO. .!$'I tratta di un byte di comando (D7=1) 0 di un dato (D7=0). Nel caso si tratti di un
Si progetti la logica del controllore, comprensiva della predisposizione (su coman-.. di comando, il bit meno significativo (DO) abilita (00=1) a disabilita (DO=O)
do della CPU) della base dei vettori di interruzione, del mascheramento selettIvo delle alIa generazione cli interruzion.i. Nel caso di un byte di dati vengono
. della di VT suI bus clei dati in a INTA. . i bit deve prevedere un latch per il dato) e
Si scnva 11 tratto dl programma per programmare Ii controllore.1n modo ,.. assento II cornando X (dl tlPO lffipulsIVO).
che la base dei vettori sia all'indirizzo effettivo CO e quello per mascherare/ demascherare't. <,tlr:1'181':;: Sulla ri,posta del perilerico (impulso ACK) l'interfaccia deve asserire Pinterru-
IRQ5 lasciando gli altri mascheramenti invariati (la rnaschera corrente cleve essere zlone. se e. abilitata. In ogni caso l'interfaccia deve prevedere un flip-flop di stato da
ottenuta leggendo il controllore stesso). ;;:; su XI ACK.
;':;,
-':!:
',.. ."."'.
-,A 'f1?P-1ii;;;j;".i::".'
152
I
I
i
"
I I
, I
,
iI
I
'
"
,
I,
,
D7
T,
0-
T,
I"
o
'.
o
I,
I"
o
20.

DO-
l
-
-sox
-
T
ACK

lDV
\J AI
BD
BI
o o o
T,
--
I"
o
T,
o
I ,
T.
I I"
0- 0

IOV --h
X
ACK
00-D7
'"

D
I

lOR
10WR
INT
Bus Indiriui
BX, OFFSET BUFFER
OUTPUT
Bus Dati (DO-D7)
HOV
CALL
Capitolo 4
La routine deve trasmettere tutti i caratteri che incontra in BUFFER, a partire daHlin_
izio, fino a cbe Don incontra iI carattere "$)) .
Figura 4.48 Schema dell'interfaccia per Pesercizio 4.23.

,I.,. "

. II sottosistema di ingressofuscita. 155
.' :.;);;,; .. ,
,," ',. -
II ,,,,'1.':"\'" '
I" -''''''}.,'f
'j' ,-
.., J'..
',-" .. ....
,.,- "",- -.' -
Sulla trasmissione di un camanda l'interfaccia non cleve asserire X. Sulla tras- ."::;Ii..
missione del comando the abilita l'interfaccia alfinterruzione non cleve in nessun caso ...
generarsi un'intenuzione spuria. . ;:.:t:
Leggendo all1indirizZQ FO cleve tornare in D7 10 stato di abilitazionej disabilitazione
delle interruzioni e in DO lostato del flip-flop di stato,.. " >4bi,"';'.,-rT
51 tracel 10 schema lOgIcO dell'mterfacCla comprenSlVO dl: (1) decodlfiche cil co. . VA
mandi e indirizzi; (2) logica relativa alia scrittura e alia lettura dello stato; (3) logica AD<
relativa aU:interruzione.. 8i scriva il codice Assembler che legge 10 state delI'interfaccia ,<:1 ),,\' " x
J
I
e la porta 111 state dl abihtazlOne aile mterrUZlOnt. :,:'}: I! U
-'.-1
":'f-:::,--
..,;;: "Figura 4.49 Schema delle temporizz3zioni per l'esercizio 4.24.
, :-l:l ';'.' ': .
,.,,*, ',<",'
. -, ..
.. .
:, ....,.;i' ' ."
" "I, , II movimento del nastro ecomandato cia un albere motore rispetto alIa cui rota-
zione vanna sincronizzate tutte Ie attivita. relative a1 nastro. A tale scopa un encoder,
c:tl '>montato sull'albero
l
genera un1interruzione (segnale IRQ) ogni a gradi percorsi. A
. 'regime Ie interruzioni si presentano ogni lOOms. Inaitre esse si manifestano quando i
'/im sana nel campo di valida lettura da parte di Fl e F2, ovvero di scarto da parte
':,;h:':'-'J,'.,' dl 81 e 82.
8i supponga di controllare il nastro con un microprocessore a 8 bit (8088) e si
assuma che Ie istruzioni abbiano tutte 130 stessa durata
l
pari a 1 n sistema di
Esercizio 4.24 Uo'interfaecia di uscita per UD micro a 8 bit presenta un latch alrin controlla deve svolgere quante pili funzioni possibili per via softwareI lasciando alPin-
dirizzo FO" Al latch ecollegato un che cia }:f/:O} terfaccia hardware solo i compiti strettamente necessari. L'interfaccia deve generare
(pochi microsecondi). Per tale motIvo Sl vuole costrUlre una lOgIca dl mterfacela che ::r. Pinterruzione riconoscendo il fronte di salita di IRQ.
consenta
l
su una scrittura da parte della CPU, di generare il segnale di WAIT verso ",:' .8i richiede: (1) il criterio di progetto indicando come si mette in relazione il
130 CPU stessa
l
segnale che viene rimosso sulla risposta del periferico, come da schema .. riconoscimento delle condi:z.ioni di searto can Peseeu:z.ione della scarto stesso; (2) l'in-
di Figura4.49. . 'S)'j":,:'",/terfaccia hardware (due ingressi binari
l
Fl e F2; due useite binarie 81 e 82; ingresso
8i progetti la logica di decodifiea e di trasrnissione del comando X verso It uscita INTR)j (3) il diagramma di fiusso della routine di interru:z.ione mOUT
periferico e della logica relativa alIa generazione del WAIT. responsabile della lettura di Fl e F2 e dell'eventuale scarto su 81 e/o 82; (4) il testo
Si scriva il testo della routine OUTPUT
I
che trasmette il contenuto di unlarea di della routine !ROUT.
memoria aJj'esterno, chiamata secondo questa convenzione: :]';1;,",;_';, >
........ " ....".', ...,
',"',,"
,:" ',.;;;, ,'I'
'.:,':::-;;"" .
;:.f-;'
., ... " .-
':"", ,
I, , ... ' .
. r. 'j' ",C "..

Esercizio 4.25 In Figura4.50 viene schemati:z.zato un nastro trasportatore. I pezzi 4.50 Schematizzazione del nastro trasportatore delPEsercizio 4.25.
da trasportare vengono depositati nella posizione O. Nella posizione 1 130 cellula fo-
toelettrica Fl rileva se il pezzo che passa deve essere scartato dalla stazione si searto .'.' .. '
S1, situata a valle in Nell.a posizione 3. la .rileva se il pezzo .. ..
debba essere scartato dalla POSlzlone dl searto S2, sltuata m POSIZlone 9. Se EserclzlO 4.26 Se la routine ISERV nel Paragrafo 4.5.1 viene modificata in modo da
82 (11 pezza deve attraversare la pOSlZlone cornspondente a 81 come se non fosse da .-, r.Ilevato aJeuna nchlesta assenta. 81 dlScuta la questlOne e proporre eventuah modl-
scartare). . :',' ..\ fiche al programma sulla base di una politica di gestione di questa 0 simili situazioni
Le cellule fotoelettriche Fl e F2 forniscono un segnale binario (0: pezzo buono, \k {;':i:7.,;.:: .
1: pezzo da scarlare). Per effettuare 10 scarto, gli attuatori 81 e 82 riehiedono ehe JiJ{',( ..
venga asserito il relativo segnale binario di comando per almeno rna non pili di 4..z7. In Figura4.51.viene riportata una soluzione per 13 logica della daisy
30 IJS. . 81 mdlChl quale malfunzlonamento pub produrre.
',', '


154
\
I
I
1
I
I
,
\
I
!
(
I
\I
.
I
i
"
I I
, I
,
iI
I
'
"
,
I,
,
D7
T,
0-
T,
I"
o
'.
o
I,
I"
o
20.

DO-
l
-
-sox
-
T
ACK

lDV
\J AI
BD
BI
o o o
T,
--
I"
o
T,
o
I ,
T.
I I"
0- 0

IOV --h
X
ACK
00-D7
'"

D
I

lOR
10WR
INT
Bus Indiriui
BX, OFFSET BUFFER
OUTPUT
Bus Dati (DO-D7)
HOV
CALL
Capitolo 4
La routine deve trasmettere tutti i caratteri che incontra in BUFFER, a partire daHlin_
izio, fino a cbe Don incontra iI carattere "$)) .
Figura 4.48 Schema dell'interfaccia per Pesercizio 4.23.

,I.,. "

. II sottosistema di ingressofuscita. 155
.' :.;);;,; .. ,
,," ',. -
II ,,,,'1.':"\'" '
I" -''''''}.,'f
'j' ,-
.., J'..
',-" .. ....
,.,- "",- -.' -
Sulla trasmissione di un camanda l'interfaccia non cleve asserire X. Sulla tras- ."::;Ii..
missione del comando the abilita l'interfaccia alfinterruzione non cleve in nessun caso ...
generarsi un'intenuzione spuria. . ;:.:t:
Leggendo all1indirizZQ FO cleve tornare in D7 10 stato di abilitazionej disabilitazione
delle interruzioni e in DO lostato del flip-flop di stato,.. " >4bi,"';'.,-rT
51 tracel 10 schema lOgIcO dell'mterfacCla comprenSlVO dl: (1) decodlfiche cil co. . VA
mandi e indirizzi; (2) logica relativa alia scrittura e alia lettura dello stato; (3) logica AD<
relativa aU:interruzione.. 8i scriva il codice Assembler che legge 10 state delI'interfaccia ,<:1 ),,\' " x
J
I
e la porta 111 state dl abihtazlOne aile mterrUZlOnt. :,:'}: I! U
-'.-1
":'f-:::,--
..,;;: "Figura 4.49 Schema delle temporizz3zioni per l'esercizio 4.24.
, :-l:l ';'.' ': .
,.,,*, ',<",'
. -, ..
.. .
:, ....,.;i' ' ."
" "I, , II movimento del nastro ecomandato cia un albere motore rispetto alIa cui rota-
zione vanna sincronizzate tutte Ie attivita. relative a1 nastro. A tale scopa un encoder,
c:tl '>montato sull'albero
l
genera un1interruzione (segnale IRQ) ogni a gradi percorsi. A
. 'regime Ie interruzioni si presentano ogni lOOms. Inaitre esse si manifestano quando i
'/im sana nel campo di valida lettura da parte di Fl e F2, ovvero di scarto da parte
':,;h:':'-'J,'.,' dl 81 e 82.
8i supponga di controllare il nastro con un microprocessore a 8 bit (8088) e si
assuma che Ie istruzioni abbiano tutte 130 stessa durata
l
pari a 1 n sistema di
Esercizio 4.24 Uo'interfaecia di uscita per UD micro a 8 bit presenta un latch alrin controlla deve svolgere quante pili funzioni possibili per via softwareI lasciando alPin-
dirizzo FO" Al latch ecollegato un che cia }:f/:O} terfaccia hardware solo i compiti strettamente necessari. L'interfaccia deve generare
(pochi microsecondi). Per tale motIvo Sl vuole costrUlre una lOgIca dl mterfacela che ::r. Pinterruzione riconoscendo il fronte di salita di IRQ.
consenta
l
su una scrittura da parte della CPU, di generare il segnale di WAIT verso ",:' .8i richiede: (1) il criterio di progetto indicando come si mette in relazione il
130 CPU stessa
l
segnale che viene rimosso sulla risposta del periferico, come da schema .. riconoscimento delle condi:z.ioni di searto can Peseeu:z.ione della scarto stesso; (2) l'in-
di Figura4.49. . 'S)'j":,:'",/terfaccia hardware (due ingressi binari
l
Fl e F2; due useite binarie 81 e 82; ingresso
8i progetti la logica di decodifiea e di trasrnissione del comando X verso It uscita INTR)j (3) il diagramma di fiusso della routine di interru:z.ione mOUT
periferico e della logica relativa alIa generazione del WAIT. responsabile della lettura di Fl e F2 e dell'eventuale scarto su 81 e/o 82; (4) il testo
Si scriva il testo della routine OUTPUT
I
che trasmette il contenuto di unlarea di della routine !ROUT.
memoria aJj'esterno, chiamata secondo questa convenzione: :]';1;,",;_';, >
........ " ....".', ...,
',"',,"
,:" ',.;;;, ,'I'
'.:,':::-;;"" .
;:.f-;'
., ... " .-
':"", ,
I, , ... ' .
. r. 'j' ",C "..

Esercizio 4.25 In Figura4.50 viene schemati:z.zato un nastro trasportatore. I pezzi 4.50 Schematizzazione del nastro trasportatore delPEsercizio 4.25.
da trasportare vengono depositati nella posizione O. Nella posizione 1 130 cellula fo-
toelettrica Fl rileva se il pezzo che passa deve essere scartato dalla stazione si searto .'.' .. '
S1, situata a valle in Nell.a posizione 3. la .rileva se il pezzo .. ..
debba essere scartato dalla POSlzlone dl searto S2, sltuata m POSIZlone 9. Se EserclzlO 4.26 Se la routine ISERV nel Paragrafo 4.5.1 viene modificata in modo da
82 (11 pezza deve attraversare la pOSlZlone cornspondente a 81 come se non fosse da .-, r.Ilevato aJeuna nchlesta assenta. 81 dlScuta la questlOne e proporre eventuah modl-
scartare). . :',' ..\ fiche al programma sulla base di una politica di gestione di questa 0 simili situazioni
Le cellule fotoelettriche Fl e F2 forniscono un segnale binario (0: pezzo buono, \k {;':i:7.,;.:: .
1: pezzo da scarlare). Per effettuare 10 scarto, gli attuatori 81 e 82 riehiedono ehe JiJ{',( ..
venga asserito il relativo segnale binario di comando per almeno rna non pili di 4..z7. In Figura4.51.viene riportata una soluzione per 13 logica della daisy
30 IJS. . 81 mdlChl quale malfunzlonamento pub produrre.
',', '


154
\
I
I
1
I
I
,
\
I
!
(
I
\I
.
(
\
i
\
I
1
1
\
1
I
I
1
)
!
I
1
INTAO
INTAO
.
1- D
Q D
Q
IFF SFF
Q Q
Cl< Q
IRQ
1 D
Q D
Q
IFF
SFF
Ck
Ck

f-
IRQ
TNTAT
Capitola 4
INTAl
Figura 4.51 Si analizzi il comportamento eli questa. rete.
156
Figura 4.52 Una. possibile modifica. Bulla linea JED.
'
.. ,
_ nsottosistema di ingresso/uscita 157
.. ",,.,. -
-., -
-
I _
.

:
?..I .
assaggio di IS allo stato ON, Ia negazione della linea IEO e della richiesta di
.. IRQ. nselezionarsi dell'interfaccia inibisce Upassaggio a valle del rente
IS e ON, '?gica il bus dati e le di
"}@ Se sui bus dab 51 presenta 11. codlce dell'lst.ruZ1(;me mET con la linea
':j';t'''::''';'OPFTCH (in uscita dalla CPU) assenta e, se e venficata Ia IEI=ON e
,;;,t;:<:/.IEO=OFF, il flip-flop IS VlOne portato allo stato OFF (hasso) e Ia linea lEO deve
:;<!' allo stato ON.
,";{:.: ,-' Si richiede 10 schema della logica della daisy chain, in particolare si richiede:
schema. delia rete che fa passare IS alio stato di ON; (2) gli accorgimenti che
Esercl
'z'o 4 28 Al fi e d' e't I' ltd' 't d 11 t' d' F'"'''' ,.,".', 'permettono d1 dlSasseme IRQ sulla selezlOne, (3) 10 schema delia rete che nconosce
I. n 1 Vi are e emen 0 1 n ar a ne e re 1 I 19ura 4.22 {:w. '. .
Figura4.23, si potrebbe tentare di legar.. lEO a.Q di IFF,. come in Figura4.52. sil e comanda IS lD stato OFF, (3) 10 schema della parte relatlva aIla catena
II comportamento della rete e 51 mdlchl 11 tlPO cil anomalia che esso
mtrodurre. ,e, "t t" di 1 h'l Fl' Fl' SFF d 11 .
':../1
1
" 4.32 eta 0 osserva 0 pm, una vo ta eel Ip Ip ,e e m-
. indica che ein esecuzione la routine di servizio dell'interruzione. E stato
.. :'anche' osservato che normalmente SFF viene riportato a 0 al termine della routine
4.8.1). Quando SFF in .1, 1a catena di .a
'::\:1
13
valle. Che accade se a valle c'e un penfenco con IRQ assenta, nelPlpotesl che il 51-
. di interruzione sia stato riabiHtato nel corso della routine al fine eli permettere
delle interruzioni? Volendo consentire l'annidamento delle interruzio-
iri 'ola--senza permettere che passino mai interruzioni meno prioritarie, neanche: nel
bra descritto, cqe accorgimento si deve usare nel comandare IE? .
4.33 Facendo rife,rimento al precedente esercizio si supponga che SFF ven-
a 1 alquant? Pfln:a a'e qualche
d, Sl c,onslden 11 caso m CUl.l'lstruzlone STI venga esegwta prIma
.':.:<1f.S quello m CUI venga dopa quella che nporta SFF a O.
';3" ,;]; " ::,.>,.;"
, ' .. ",f,... , .. :' .'.,
Esercizio 4.29 Facendo riferimento all'interfaccia di Figura di Figura 4.20 e a quella"\f.'1 4.34 Si modifichi 10 schema di Figura4.26 in modo che IRQ venga disas-
d.i si Quale e due di al passaggio in stato 1 eli SFF.
SIstema 51 comportl correttamente. SllDdichl setto quail COndiZlOni una nchlesta puo .'. . . .. . .. .
andare progettJ 1a dl una daISY cham smeTana. 51 supponga che
. . . ..una volta nconOSClUto Th'TA assento, debbano passare 2 due periodi di clock per dar
Eserclzlo. 4.30 Dlscutendo della necessita. di avere lalinea IE per garantire it rispetto';.'!ffi ;2}'/t:::': '!Dodo ana catena di stabilizzarsi e che quindi venga selezionato il periferico a piu alta
della priorita per Ie interruzioni annidate (Cfr. 4.8,1), si esupposto di fare .
allo sche.ma di Fi?tir.a4.23, dove epresente il IFF, che viene comunque trovato' ' .. . . . . '.. . .
a 0 sull'mterfaccla 1 (a meno cbe questa non abbla di nuovo riasserito IRQ durante.J;:' 4.36 In nferunento alla rete dl Figura 4.29, 51 progettlla rete che suI pnmo
il servizio). Si supponga ora di fare riferimento aHa rete di Figura 4.20. Si analizzi '.. ?clo dl INTA seleziona la richiesta da servire e porta a 1 it bit corrispondente di ISR.
nella situazione descritta. Differisce, se differisce
l
da quello della rete}jj '
diF
423
1 ..
19ura . ' . ';-.&, .. ... '.'
''''.., .. ,.',
. . """ ,," .,
Esercizio 4,31 Le interfacce di I/O di un calcQlatore COIl bus dati a 8 bit sono ,
gate in daisy chain e vengono gestite sotto controllo di interruzione. Su ogni '." :
epresente un flip-fiop, denominato IS (In Servizio) che viene portato in stato ON (31- '
to) quando l'interfaccia viene selezionata come quella da servire dai segnale INTA. .c'
segnale INTA viene asserito dalla CPU in risposta aIle richieste di interruzione.
Uinterfaccia viene selezionata sui fronte di discesa di INTA, se essa stessa ha '
fatto una richiesta di interruzione ed easserita 1a linea lEI. La selezione si manifesta ?:',:,:,:'" ..
:,j", ".'" .",
. ,. . ,""
,,1}, , .... ,.'!, ,
:fiif!! ' ;:.';': ,,'-< .,'.,:
)dl'i ,',.[,', '-,'

(
\
i
\
I
1
1
\
1
I
I
1
)
!
I
1
INTAO
INTAO
.
1- D
Q D
Q
IFF SFF
Q Q
Cl< Q
IRQ
1 D
Q D
Q
IFF
SFF
Ck
Ck

f-
IRQ
TNTAT
Capitola 4
INTAl
Figura 4.51 Si analizzi il comportamento eli questa. rete.
156
Figura 4.52 Una. possibile modifica. Bulla linea JED.
'
.. ,
_ nsottosistema di ingresso/uscita 157
.. ",,.,. -
-., -
-
I _
.

:
?..I .
assaggio di IS allo stato ON, Ia negazione della linea IEO e della richiesta di
.. IRQ. nselezionarsi dell'interfaccia inibisce Upassaggio a valle del rente
IS e ON, '?gica il bus dati e le di
"}@ Se sui bus dab 51 presenta 11. codlce dell'lst.ruZ1(;me mET con la linea
':j';t'''::''';'OPFTCH (in uscita dalla CPU) assenta e, se e venficata Ia IEI=ON e
,;;,t;:<:/.IEO=OFF, il flip-flop IS VlOne portato allo stato OFF (hasso) e Ia linea lEO deve
:;<!' allo stato ON.
,";{:.: ,-' Si richiede 10 schema della logica della daisy chain, in particolare si richiede:
schema. delia rete che fa passare IS alio stato di ON; (2) gli accorgimenti che
Esercl
'z'o 4 28 Al fi e d' e't I' ltd' 't d 11 t' d' F'"'''' ,.,".', 'permettono d1 dlSasseme IRQ sulla selezlOne, (3) 10 schema delia rete che nconosce
I. n 1 Vi are e emen 0 1 n ar a ne e re 1 I 19ura 4.22 {:w. '. .
Figura4.23, si potrebbe tentare di legar.. lEO a.Q di IFF,. come in Figura4.52. sil e comanda IS lD stato OFF, (3) 10 schema della parte relatlva aIla catena
II comportamento della rete e 51 mdlchl 11 tlPO cil anomalia che esso
mtrodurre. ,e, "t t" di 1 h'l Fl' Fl' SFF d 11 .
':../1
1
" 4.32 eta 0 osserva 0 pm, una vo ta eel Ip Ip ,e e m-
. indica che ein esecuzione la routine di servizio dell'interruzione. E stato
.. :'anche' osservato che normalmente SFF viene riportato a 0 al termine della routine
4.8.1). Quando SFF in .1, 1a catena di .a
'::\:1
13
valle. Che accade se a valle c'e un penfenco con IRQ assenta, nelPlpotesl che il 51-
. di interruzione sia stato riabiHtato nel corso della routine al fine eli permettere
delle interruzioni? Volendo consentire l'annidamento delle interruzio-
iri 'ola--senza permettere che passino mai interruzioni meno prioritarie, neanche: nel
bra descritto, cqe accorgimento si deve usare nel comandare IE? .
4.33 Facendo rife,rimento al precedente esercizio si supponga che SFF ven-
a 1 alquant? Pfln:a a'e qualche
d, Sl c,onslden 11 caso m CUl.l'lstruzlone STI venga esegwta prIma
.':.:<1f.S quello m CUI venga dopa quella che nporta SFF a O.
';3" ,;]; " ::,.>,.;"
, ' .. ",f,... , .. :' .'.,
Esercizio 4.29 Facendo riferimento all'interfaccia di Figura di Figura 4.20 e a quella"\f.'1 4.34 Si modifichi 10 schema di Figura4.26 in modo che IRQ venga disas-
d.i si Quale e due di al passaggio in stato 1 eli SFF.
SIstema 51 comportl correttamente. SllDdichl setto quail COndiZlOni una nchlesta puo .'. . . .. . .. .
andare progettJ 1a dl una daISY cham smeTana. 51 supponga che
. . . ..una volta nconOSClUto Th'TA assento, debbano passare 2 due periodi di clock per dar
Eserclzlo. 4.30 Dlscutendo della necessita. di avere lalinea IE per garantire it rispetto';.'!ffi ;2}'/t:::': '!Dodo ana catena di stabilizzarsi e che quindi venga selezionato il periferico a piu alta
della priorita per Ie interruzioni annidate (Cfr. 4.8,1), si esupposto di fare .
allo sche.ma di Fi?tir.a4.23, dove epresente il IFF, che viene comunque trovato' ' .. . . . . '.. . .
a 0 sull'mterfaccla 1 (a meno cbe questa non abbla di nuovo riasserito IRQ durante.J;:' 4.36 In nferunento alla rete dl Figura 4.29, 51 progettlla rete che suI pnmo
il servizio). Si supponga ora di fare riferimento aHa rete di Figura 4.20. Si analizzi '.. ?clo dl INTA seleziona la richiesta da servire e porta a 1 it bit corrispondente di ISR.
nella situazione descritta. Differisce, se differisce
l
da quello della rete}jj '
diF
423
1 ..
19ura . ' . ';-.&, .. ... '.'
''''.., .. ,.',
. . """ ,," .,
Esercizio 4,31 Le interfacce di I/O di un calcQlatore COIl bus dati a 8 bit sono ,
gate in daisy chain e vengono gestite sotto controllo di interruzione. Su ogni '." :
epresente un flip-fiop, denominato IS (In Servizio) che viene portato in stato ON (31- '
to) quando l'interfaccia viene selezionata come quella da servire dai segnale INTA. .c'
segnale INTA viene asserito dalla CPU in risposta aIle richieste di interruzione.
Uinterfaccia viene selezionata sui fronte di discesa di INTA, se essa stessa ha '
fatto una richiesta di interruzione ed easserita 1a linea lEI. La selezione si manifesta ?:',:,:,:'" ..
:,j", ".'" .",
. ,. . ,""
,,1}, , .... ,.'!, ,
:fiif!! ' ;:.';': ,,'-< .,'.,:
)dl'i ,',.[,', '-,'

I
\
\
,
I
I
I
\
I
\ \

I
I
,
>,,,' " ,j "
.

" -, ,
;:1
,'" .
, ; '..,
."
..., ,c,
- - '; . ,
,
,
,
'.-
, ""
-' . ,
. ',' ,
,
;_.' -f
,
" I'
"
,
,
'\ ' ..
:.- '
, ;'''
'I "
,. : ," ; ,,'
"', ',j
. ..
......
.,. "
'--
'.
I
I",,,
,; , '
I _:; ..

.'. ,
,',
-
'I ..
"
J.. ',. "
.. " .
5
La CPU
Questo capitolo e dedicato all'esame approfondito del funzionamento della CPU
- Viene definita un'architettura semplificata che si ispira aIle maccmne RISe e per
essa vengono sviluppati due prototipi, denominati CPUI e CPU2. n primo prototi-
po (CPUl) ecastruita in modo da eseguire le istruzioni in un solo periodo di ciock,
il secondo (CPU2) esegue istruzioni in piu cieli. Risulta istruttivo confrontare Ie
prestazioni ottenibili n"ei due casi.
Uarchitettura della CPU e i prototipi sviluppati possiedono delle caratteristiche
che consentono, come vedremo nel capitola successivo, di operare facili trasformazioni
in modo da permettere l'esecuzione delle istruzioni in pipeline.
5.1 Notazione
Per descrivere il funzionamento della CPU faremo ricorso aHa n,9tazione di Tabella 5.1.
Notazione Significato
l- asferimento dati; la dimensioneaei dati traSteriti edata
dalla dimensione della destinazione.
Mix] Contenuto locazione memoria all'indirizzo x.
l-n Trasferimento di un campo-di n bit.
X
n
Selezione del bit n in X,
X
Selezione--di un campo di bit cla man in X.
m.. n
X
n
Replica n volte il campo X.
X II Y
Concatenamento dei campi Xe Y.
, Scorrimento logico a sinistra e a destra.
Tabella 5.1 Tabella. delle notazioni usate nel testo.
I
\
\
,
I
I
I
\
I
\ \

I
I
,
>,,,' " ,j "
.

" -, ,
;:1
,'" .
, ; '..,
."
..., ,c,
- - '; . ,
,
,
,
'.-
, ""
-' . ,
. ',' ,
,
;_.' -f
,
" I'
"
,
,
'\ ' ..
:.- '
, ;'''
'I "
,. : ," ; ,,'
"', ',j
. ..
......
.,. "
'--
'.
I
I",,,
,; , '
I _:; ..

.'. ,
,',
-
'I ..
"
J.. ',. "
.. " .
5
La CPU
Questo capitolo e dedicato all'esame approfondito del funzionamento della CPU
- Viene definita un'architettura semplificata che si ispira aIle maccmne RISe e per
essa vengono sviluppati due prototipi, denominati CPUI e CPU2. n primo prototi-
po (CPUl) ecastruita in modo da eseguire le istruzioni in un solo periodo di ciock,
il secondo (CPU2) esegue istruzioni in piu cieli. Risulta istruttivo confrontare Ie
prestazioni ottenibili n"ei due casi.
Uarchitettura della CPU e i prototipi sviluppati possiedono delle caratteristiche
che consentono, come vedremo nel capitola successivo, di operare facili trasformazioni
in modo da permettere l'esecuzione delle istruzioni in pipeline.
5.1 Notazione
Per descrivere il funzionamento della CPU faremo ricorso aHa n,9tazione di Tabella 5.1.
Notazione Significato
l- asferimento dati; la dimensioneaei dati traSteriti edata
dalla dimensione della destinazione.
Mix] Contenuto locazione memoria all'indirizzo x.
l-n Trasferimento di un campo-di n bit.
X
n
Selezione del bit n in X,
X
Selezione--di un campo di bit cla man in X.
m.. n
X
n
Replica n volte il campo X.
X II Y
Concatenamento dei campi Xe Y.
, Scorrimento logico a sinistra e a destra.
Tabella 5.1 Tabella. delle notazioni usate nel testo.
3. Tenuto conto delFassunzione precedente, se si esdudono Ie istruzioni di saIto, la - .'
regola di aggiornamento del registro PC e: PC+- PC + 4. -
,
].
,
,
\'
1.
I
r
I
I
\
1
\
I
I
)
\
I
; PCt- INDx4
4

lstruzioni di salto incondizionato.


Ne eprevista una sola: JMP. In questa caso il campo OP contiene i1 codice
del salta incondizionato, mentre il campo IND contiene l'indirizzo della posi-
zione di destinazione del saIto (diviso per 4). ncampo IND contiene sernp.ce
un positivo.
Esempio: JMP label
L'istruzione di !lnon operazione
1
'. '
[l suo codice mnemonico e NOP: Ha semplicemente l'effetto di far incre-
mentare PC di 4. Il formato di questa istruzione richiede solo il campo OP,
mentre gli altri bit sono irrilevanti.
delPistruzione ST it campo Rsd identifica il registro il cui contenuto deve

essere scritto in memoria.


Esempio: LD R13.100(R6) ; M[R6+100]
(dove Rsd =R13. Rb =R6),
Esempio: ST 400 (R4) ,R25 ; R25
(dove Rsd=R25, Rb=R4),
Si noti che la macchina legge/scrive solo parole di 32 bit. Non equesta una
grande limitazione in riferimento aile di tipo RISC, in quanto
la manipolazione di byte puo essere fatta all'interno dei registri tramite il
repertorio delle istruzioni aritmetiche e togiche, effettuando operazioni di
isolamento/scorrimento/raggruppamento. Si ev:idenzia perc che Ie macchine
reali, comprese Ie macchine RiSe, prevedono un'abbondante serie di codici
di operazione, comprese istruzioni di caricamento e memorizzazione, riferite
ai byte.
Istruzioni di salto condizionato.
Anche di queste ne sono previste solo due: JE (salta se uguale) e JS (salta in
base at segno)2. Arobedue confrontano it contenuto dei due registri sorgente,
RSi e RS2j JE effettua il saIto se i due registri hanno uguale contenuto, JS se
i1 contenuto del secondo registro emaggiore del primo. Nell'uno e nell'altro
caso il saito si effettua aggiungendo a PC il contenuto del campo OFFSET
(moltiplicato per 4), ,
Esempio: JE R2,R3,dest ; if R2
z
R3 then PCt- PC+OFFSETx4
3
.
La CPU 161
2Questa istruzione erappresentativa degli usuali codici JGB (Jump if Greater or Equal Zl:l"O) e
JLT (Jump Less Than zero). Ai fini degH argomenti svolti in questa capiteto, la sola. istruzione di
salta condizionato JE sarebbe stata sufficiente. Viene coosiderata ooche l'istruzione JS io quanto
con \a sola JE diventa praticamente impossibile costruire un prpgramma. di qualche utiliU,. Le due
istruzionl JE e JS, usate opportunamente in accostamento aile operazioni aritmetiche, COnsentono la
scrittura di programmi non banali in linguaggio Assembler. A tale proposito si veda I'Esercizio 5.L
JOFFSET rappresent.a 10 scostamento, misurato in numero di parole da 32 bit (4 byte) della posi-
zione simbolica dest rispetto a PC. In altre parole il valore di OFFSET edato dalla differenza tra due
indirizzi divisa per 4
4Qui label e il nome simboHco della posizione di memoria di destinazione del saIto e INO
rappresenta il suo indirizzo in parole di 4 byte; si veda piu ava.nti.
Siccome si estabilito che Ie istruzioni e i dati occupano sempre una parola a
indirizzi multipli di 4, non conviene irnpiegare i campi di scostamento/indirizzo per
"

,I
,,0' .
,
'1
','i; (
."., , .
"
-., ,
.
'; If ,
,
"
"
"
.":
Istruzioni che fanno riferimento alIa memoria.
Ne sono previste solo due: (a) l'istruzione LD (load) di caricamento di una .,.
parola di memoria in un registro; (b) Fistruzione ST (store) di memorizza-
zione del contenuto di un registro. In questo caso il campo Rb identifica il '-.
registro di CPU che si intende utilizzare come registro base, ovvero come
registro al Quale -.:iene sommato il campo OFFSET (moltipiicato per 4 - si
veda pili avanti) per calcolare I'indirizzo della locazione nella memoria dati
in cui l'istruzione legge 0 scrive
1
. Nel caso dell'istruzione LD il campo R.srl
identifiea il registro da caricare can il data Jetto in memoria, mentre nel caso
Istruzioni aritmetiche tra registri.
In questa caso il OF contiene il codice di generica operazione arit- _:;.
metica, mentre it campo fALU identifica 1a specifica operazione da eseguire,
per e,empio: ADD (somma), SUB (sottrazione), OR (somma logica), MUL
(moltiplicazione) ecc. Le istruzioni aritmetiche prevedono sempre due regi- --. ,
stri sorgente e un registro di destinazione. I campi RSl e RS2 identificano i
registri sorgente, contenenti i due operandi, mentre Rd identifica il registro
di destinazione del risultato dell'operazione.
Esempio: ADD Rl,R3,R8 j Rlf- R3+RB
(dove RSl = R3, RS2 = RS, Rd = Rl),
Ovviamente 10 stesso registro puo essere impiegato sia corne sorgente sia
come destinazione. Per esempio
1
l'istruzione SUB R7 ,R7 ,R7 ha l'effetto di
azzerare il contenuto del registro R7._
Capitola 5
4. n repertorio di istruzioni e estremamente ridotto. I possibili formati sono in
Figura.5.l. Si noti che iI codice di operazione occupa. sempre 10 stesso campo di
6 bit. Si hanno i seguenti tipi di istruzioni.
2. Gli indirizzi dl memoria sana riferiti ai bytej istruzioni e dati occupano sempre e _
solo una parola di 32 bit. Di conseguenza istruzioni e dati si trovano in,memoria
allineate agli indirizzi 4 x k, k = 0,1,2, .....
1. La macchina ea 32 bit, di conseguenza tutti i registri di CPU (salvo quando di-
versamente indicate) sana a 32 bit. Bus dati e bus indirizzi verso la memoria SOM "
pure a 32 bit. Uunita. operativa presenta 32 registri di usa generale identificati
come RO. Rl, R2, ... , R31.
1E comune nelle ma.cchine RISe riservare il registro RO per contenere permanentemente O. In
tal caso l'istruzione to R.2.SCOST(RO) ha I'effetto di caricare in R2 il contenuto della posizione di_
memoria di indirizzo SCOST.

Definiamo ora unJarchitettura di riferimento, aHa Quale ci appoggeremo per svilup._


pare molti argomenti futuri. All'occorrenza ci si serve della notazione riportata al
precedente paragrafo. Uarchitettura 5i basa sulle seguenti assunzioni.
5.2 Architettura di riferimento della CPU
160
3. Tenuto conto delFassunzione precedente, se si esdudono Ie istruzioni di saIto, la - .'
regola di aggiornamento del registro PC e: PC+- PC + 4. -
,
].
,
,
\'
1.
I
r
I
I
\
1
\
I
I
)
\
I
; PCt- INDx4
4

lstruzioni di salto incondizionato.


Ne eprevista una sola: JMP. In questa caso il campo OP contiene i1 codice
del salta incondizionato, mentre il campo IND contiene l'indirizzo della posi-
zione di destinazione del saIto (diviso per 4). ncampo IND contiene sernp.ce
un positivo.
Esempio: JMP label
L'istruzione di !lnon operazione
1
'. '
[l suo codice mnemonico e NOP: Ha semplicemente l'effetto di far incre-
mentare PC di 4. Il formato di questa istruzione richiede solo il campo OP,
mentre gli altri bit sono irrilevanti.
delPistruzione ST it campo Rsd identifica il registro il cui contenuto deve

essere scritto in memoria.


Esempio: LD R13.100(R6) ; M[R6+100]
(dove Rsd =R13. Rb =R6),
Esempio: ST 400 (R4) ,R25 ; R25
(dove Rsd=R25, Rb=R4),
Si noti che la macchina legge/scrive solo parole di 32 bit. Non equesta una
grande limitazione in riferimento aile di tipo RISC, in quanto
la manipolazione di byte puo essere fatta all'interno dei registri tramite il
repertorio delle istruzioni aritmetiche e togiche, effettuando operazioni di
isolamento/scorrimento/raggruppamento. Si ev:idenzia perc che Ie macchine
reali, comprese Ie macchine RiSe, prevedono un'abbondante serie di codici
di operazione, comprese istruzioni di caricamento e memorizzazione, riferite
ai byte.
Istruzioni di salto condizionato.
Anche di queste ne sono previste solo due: JE (salta se uguale) e JS (salta in
base at segno)2. Arobedue confrontano it contenuto dei due registri sorgente,
RSi e RS2j JE effettua il saIto se i due registri hanno uguale contenuto, JS se
i1 contenuto del secondo registro emaggiore del primo. Nell'uno e nell'altro
caso il saito si effettua aggiungendo a PC il contenuto del campo OFFSET
(moltiplicato per 4), ,
Esempio: JE R2,R3,dest ; if R2
z
R3 then PCt- PC+OFFSETx4
3
.
La CPU 161
2Questa istruzione erappresentativa degli usuali codici JGB (Jump if Greater or Equal Zl:l"O) e
JLT (Jump Less Than zero). Ai fini degH argomenti svolti in questa capiteto, la sola. istruzione di
salta condizionato JE sarebbe stata sufficiente. Viene coosiderata ooche l'istruzione JS io quanto
con \a sola JE diventa praticamente impossibile costruire un prpgramma. di qualche utiliU,. Le due
istruzionl JE e JS, usate opportunamente in accostamento aile operazioni aritmetiche, COnsentono la
scrittura di programmi non banali in linguaggio Assembler. A tale proposito si veda I'Esercizio 5.L
JOFFSET rappresent.a 10 scostamento, misurato in numero di parole da 32 bit (4 byte) della posi-
zione simbolica dest rispetto a PC. In altre parole il valore di OFFSET edato dalla differenza tra due
indirizzi divisa per 4
4Qui label e il nome simboHco della posizione di memoria di destinazione del saIto e INO
rappresenta il suo indirizzo in parole di 4 byte; si veda piu ava.nti.
Siccome si estabilito che Ie istruzioni e i dati occupano sempre una parola a
indirizzi multipli di 4, non conviene irnpiegare i campi di scostamento/indirizzo per
"

,I
,,0' .
,
'1
','i; (
."., , .
"
-., ,
.
'; If ,
,
"
"
"
.":
Istruzioni che fanno riferimento alIa memoria.
Ne sono previste solo due: (a) l'istruzione LD (load) di caricamento di una .,.
parola di memoria in un registro; (b) Fistruzione ST (store) di memorizza-
zione del contenuto di un registro. In questo caso il campo Rb identifica il '-.
registro di CPU che si intende utilizzare come registro base, ovvero come
registro al Quale -.:iene sommato il campo OFFSET (moltipiicato per 4 - si
veda pili avanti) per calcolare I'indirizzo della locazione nella memoria dati
in cui l'istruzione legge 0 scrive
1
. Nel caso dell'istruzione LD il campo R.srl
identifiea il registro da caricare can il data Jetto in memoria, mentre nel caso
Istruzioni aritmetiche tra registri.
In questa caso il OF contiene il codice di generica operazione arit- _:;.
metica, mentre it campo fALU identifica 1a specifica operazione da eseguire,
per e,empio: ADD (somma), SUB (sottrazione), OR (somma logica), MUL
(moltiplicazione) ecc. Le istruzioni aritmetiche prevedono sempre due regi- --. ,
stri sorgente e un registro di destinazione. I campi RSl e RS2 identificano i
registri sorgente, contenenti i due operandi, mentre Rd identifica il registro
di destinazione del risultato dell'operazione.
Esempio: ADD Rl,R3,R8 j Rlf- R3+RB
(dove RSl = R3, RS2 = RS, Rd = Rl),
Ovviamente 10 stesso registro puo essere impiegato sia corne sorgente sia
come destinazione. Per esempio
1
l'istruzione SUB R7 ,R7 ,R7 ha l'effetto di
azzerare il contenuto del registro R7._
Capitola 5
4. n repertorio di istruzioni e estremamente ridotto. I possibili formati sono in
Figura.5.l. Si noti che iI codice di operazione occupa. sempre 10 stesso campo di
6 bit. Si hanno i seguenti tipi di istruzioni.
2. Gli indirizzi dl memoria sana riferiti ai bytej istruzioni e dati occupano sempre e _
solo una parola di 32 bit. Di conseguenza istruzioni e dati si trovano in,memoria
allineate agli indirizzi 4 x k, k = 0,1,2, .....
1. La macchina ea 32 bit, di conseguenza tutti i registri di CPU (salvo quando di-
versamente indicate) sana a 32 bit. Bus dati e bus indirizzi verso la memoria SOM "
pure a 32 bit. Uunita. operativa presenta 32 registri di usa generale identificati
come RO. Rl, R2, ... , R31.
1E comune nelle ma.cchine RISe riservare il registro RO per contenere permanentemente O. In
tal caso l'istruzione to R.2.SCOST(RO) ha I'effetto di caricare in R2 il contenuto della posizione di_
memoria di indirizzo SCOST.

Definiamo ora unJarchitettura di riferimento, aHa Quale ci appoggeremo per svilup._


pare molti argomenti futuri. All'occorrenza ci si serve della notazione riportata al
precedente paragrafo. Uarchitettura 5i basa sulle seguenti assunzioni.
5.2 Architettura di riferimento della CPU
160
OP=O;
OP=l;
OP=2;
OP=3;
OP=4;
OP=5' , ,
OP=6,
Ai fini della discussione di questa capitola conviene assuniere i seguenti codici per Ie
operazioni elencate
7
:
istruzlODe NOP:
istruzioni aritmetiche:
istruzione LD:
istruzione ST:
istruzione JMP:
istruzione JE:
istruzione JS:
,
,
,,",
,

," .
'" ... ,
" : -' ..
1 ,C " 'S' , "" h" 'b bb 3 li b' 'I OP F
. t", " I notl LUe can queste poe e lstruzlom astere ero so It per I campo . aremo comunque
", che il campo sia di 6 bit. AI capitola dedicato al progetto della CPU in pipeline il repenorio
'" ',:,':/' leggermente esteso e si assumorio codici piu convenienti al fine del progetto della logica di
-.: .. "', ,;. controllo.
. '. I ::. 3Si OS5ervi che questa soluzione serve a ridurre al minimo it numero di !inee tra la parte di
",,:> decodifica delle istruzioni e la. ALU stessa., d!minuendo l'occupazione di spazio Bull'integrato.
.-, ,>-
... ,:;(.
." ."',,,-'"
". ',',
.' ." .. .'"
'I " ,
,
,'
..
,"
"
".' '.-..
,
- .,
. ';
(F2)
(Fl)
(F3)
(F2)
o I II I' ",
l"lkl-i I
, . .
I I I
o 11 II II. :ll
= I
"I
41 .alto (IWP)
arttm.Uah.
tlftnls10aJ w. S'T
t.t.nuio.n1 d1 alto oood1a1o.a.t.o
,..m
$La moltiplicazione per quattro corrisponde a uno scorrimento di due bit verso sinistra, ovvero
all'aggjunta di due zeri a destra.
6Nella pratica sara bene leggere attentamente i manuali del costruttore per capire cosa contengoDo
e come vengono manipola.ti in fase di esecuzione i campi di indirizzo/scostamento.
,
.,. ,.
- " ;
Figura 5.1 Formati delle istruzioni. La regolarita del formato permette una. facile decodifi- :.r ..3 Blocchi componenti
ca dei van campi dell'istruzione. II campo INn dell'istruzione di salto rappresenta. l'indirizzo ',-,. :.,.-' ,
di destinazione. n campo OFFSET delle istruzioni LDjST rappre'senta 10 scostamento.ris_ ....,.;.;'0':..'. ":'" .... .
petto al contenuto del registro Rb, mentre nel case delle istruzioni JE/JS rappresenta 10 -<:, -:i"-'Prima. di del prototlpl CPUI e CPU2 ve?gono ultenor-
scostamento rispetto alIa posizione corrente. Si Dati che a differenza del campo IND) che-:; discuSSl alculll blocchl component!.
contiene sempre un numero positivo, il campo OFFSET pub contenere un numero positivo .. " '
(riferimento in ava.nti) 0 negativo (riferimento all'indietro). Sia IND che OFFSET contengo- :" !":,,,:,,-:-
no un numero corrispondente all'eHettivo valore dell'indirizzo 0 della scostamento diviso per 5 3 1 I 'st' d' usa generale
4 Sull I
'd tr ' rt t' , , t' 'd ifi ' d ' 3 ,., .. , ' regl rI I
. a asaa es a vengono npo all noml usa 1 per I ent care Cla5cuno el nerenti
r " , ,.,'. "
!ormati. ':-:,f ::-
"" ,.'."
. };::;':?,:'$i' suppone che la maccbina presenti un banco di registri (Register File, RF) di usa
, ,'.i<' generale, nel senso spiegato al Capitola 2. I registri che compongono il banco sana
contenere 10 scostamento/indirizzo effettivo. E meglio codificare nelPistruzione ::,.da ritenere equivalenti tra lora salvo diversa speeifieazione. n banco dei registri e
,; " ' " ,
dirizzo diviso per 4 e prevedere che la CPU moltipliehi per 4 i1 contenuto di questi " : in Figura5.2.
, ...
campi in fase di esecuzione delle istruzioni. In tal modo viene meglio sfruttato 10, :;.- ..... , In Figura5.3 viene illustrato it dettaglio dell'interno di RF in riferimento al gene-
spazio offerto dai relativi campi e, per esempio, ecome avere 18 bit in luogo di 16, ": ::.:::' rico registro. Per Ie ipotesi fatte, i registri all'i!1tero eli RF operano secondo it modeno
C<?n la nostra notazione (Cfr, 5.1), l'azione di portare IND a 32 bit, moltiplican cui al Paragrafo 27 e la registro R
j
da, RW av-
dolo per 4', si indica come: 0000 II IND II 00, L'azione di portare OFFSET a 32 ,",:.-, viene alia fine del penodo dl clock se e assento il eomando R.;m dl ab,htazlOne aHa
ricbiede che venga espanso il bit 16 fino al bit O. Questa operazione si indica come /: ,ri,:>'";:.":: scrittura suI registro.
(OFFSET,,)" I IOFFSET, dove (OFFSET,,)" ,ta a indicare la ripetizione per 16 ", ",':-;"c,;
volte del bit 16 <Ii OFFSET, 1'azione di portare OFFSET a 32 bit, moltiplicandolo,;; '\(:,", ,
per 4, richiede the in piu the vengano aggiunti due zed a destra..Questa operazione 5.3.2 ALU
si indica dunque come (OFFSET, .)" II OFFSET1100, ,', C'"
. '" , :' \,.'.-"
Vale la pena di osservare the la tecniea di codificare diviso per 4 10 scostamen- .... ". schema della ALU e riportato in Figura 5.4. Per mati vi che saranno chiariti in
to/l'indirizzo presenta qualche aspetto contraddittorio. lnfatti, in una macchina reale, " '. ',.::', :.:," segulta, estato esplicitato it bloceo ContrALU. Questo bloceo ha la funzione di deeD-
sana previste ancbe istruzioni eli caricamento/memorizzazione the indirizzana diret-, :,J ;:;,',;:.. dificare it codice di operazione aritmetica fALU e di presentare l'opportuno segnale
tameIite il byte, Can la nostra architettura sarebbe necessaria rinundare, per queste : ::'< i>.di comando alia ALU
8
,
istruzioni, alIa tecnica eli codifica adottata e riportare nel campo OFFSET l'effettivo :__ n blocco ContrALU e condizionato attraverso OPALU (k linee) , in modo da
Avendo l'.ipotesi - per motivi di - che 1a nostra. :<.; :,,:,',;''<.> quando serve, unluscita diversa da quella corrispondente alIa decodifica del
macchina mdirizZl solo parole. 81 entenuto opportuno codlficare sempre nel campo .,'; . ";: '/'.',coaice di aperazione aritmetica.
OFFSET 10 ,costaroento effettivo diviso per 4 6, ' 'i ,',;;::',/
.. ' , .

"i.

..,.!! I: "'..1,,: _
__
".,> '';j'-'-' I
,.'..1'
,... ".j! - ",
>,1;
. .-
. .,'
, .. '
, ,

" ., 1":""\'
"
I
r
I
\
f
I
(
I
\
\
I
,
I
I
I
OP=O;
OP=l;
OP=2;
OP=3;
OP=4;
OP=5' , ,
OP=6,
Ai fini della discussione di questa capitola conviene assuniere i seguenti codici per Ie
operazioni elencate
7
:
istruzlODe NOP:
istruzioni aritmetiche:
istruzione LD:
istruzione ST:
istruzione JMP:
istruzione JE:
istruzione JS:
,
,
,,",
,

," .
'" ... ,
" : -' ..
1 ,C " 'S' , "" h" 'b bb 3 li b' 'I OP F
. t", " I notl LUe can queste poe e lstruzlom astere ero so It per I campo . aremo comunque
", che il campo sia di 6 bit. AI capitola dedicato al progetto della CPU in pipeline il repenorio
'" ',:,':/' leggermente esteso e si assumorio codici piu convenienti al fine del progetto della logica di
-.: .. "', ,;. controllo.
. '. I ::. 3Si OS5ervi che questa soluzione serve a ridurre al minimo it numero di !inee tra la parte di
",,:> decodifica delle istruzioni e la. ALU stessa., d!minuendo l'occupazione di spazio Bull'integrato.
.-, ,>-
... ,:;(.
." ."',,,-'"
". ',',
.' ." .. .'"
'I " ,
,
,'
..
,"
"
".' '.-..
,
- .,
. ';
(F2)
(Fl)
(F3)
(F2)
o I II I' ",
l"lkl-i I
, . .
I I I
o 11 II II. :ll
= I
"I
41 .alto (IWP)
arttm.Uah.
tlftnls10aJ w. S'T
t.t.nuio.n1 d1 alto oood1a1o.a.t.o
,..m
$La moltiplicazione per quattro corrisponde a uno scorrimento di due bit verso sinistra, ovvero
all'aggjunta di due zeri a destra.
6Nella pratica sara bene leggere attentamente i manuali del costruttore per capire cosa contengoDo
e come vengono manipola.ti in fase di esecuzione i campi di indirizzo/scostamento.
,
.,. ,.
- " ;
Figura 5.1 Formati delle istruzioni. La regolarita del formato permette una. facile decodifi- :.r ..3 Blocchi componenti
ca dei van campi dell'istruzione. II campo INn dell'istruzione di salto rappresenta. l'indirizzo ',-,. :.,.-' ,
di destinazione. n campo OFFSET delle istruzioni LDjST rappre'senta 10 scostamento.ris_ ....,.;.;'0':..'. ":'" .... .
petto al contenuto del registro Rb, mentre nel case delle istruzioni JE/JS rappresenta 10 -<:, -:i"-'Prima. di del prototlpl CPUI e CPU2 ve?gono ultenor-
scostamento rispetto alIa posizione corrente. Si Dati che a differenza del campo IND) che-:; discuSSl alculll blocchl component!.
contiene sempre un numero positivo, il campo OFFSET pub contenere un numero positivo .. " '
(riferimento in ava.nti) 0 negativo (riferimento all'indietro). Sia IND che OFFSET contengo- :" !":,,,:,,-:-
no un numero corrispondente all'eHettivo valore dell'indirizzo 0 della scostamento diviso per 5 3 1 I 'st' d' usa generale
4 Sull I
'd tr ' rt t' , , t' 'd ifi ' d ' 3 ,., .. , ' regl rI I
. a asaa es a vengono npo all noml usa 1 per I ent care Cla5cuno el nerenti
r " , ,.,'. "
!ormati. ':-:,f ::-
"" ,.'."
. };::;':?,:'$i' suppone che la maccbina presenti un banco di registri (Register File, RF) di usa
, ,'.i<' generale, nel senso spiegato al Capitola 2. I registri che compongono il banco sana
contenere 10 scostamento/indirizzo effettivo. E meglio codificare nelPistruzione ::,.da ritenere equivalenti tra lora salvo diversa speeifieazione. n banco dei registri e
,; " ' " ,
dirizzo diviso per 4 e prevedere che la CPU moltipliehi per 4 i1 contenuto di questi " : in Figura5.2.
, ...
campi in fase di esecuzione delle istruzioni. In tal modo viene meglio sfruttato 10, :;.- ..... , In Figura5.3 viene illustrato it dettaglio dell'interno di RF in riferimento al gene-
spazio offerto dai relativi campi e, per esempio, ecome avere 18 bit in luogo di 16, ": ::.:::' rico registro. Per Ie ipotesi fatte, i registri all'i!1tero eli RF operano secondo it modeno
C<?n la nostra notazione (Cfr, 5.1), l'azione di portare IND a 32 bit, moltiplican cui al Paragrafo 27 e la registro R
j
da, RW av-
dolo per 4', si indica come: 0000 II IND II 00, L'azione di portare OFFSET a 32 ,",:.-, viene alia fine del penodo dl clock se e assento il eomando R.;m dl ab,htazlOne aHa
ricbiede che venga espanso il bit 16 fino al bit O. Questa operazione si indica come /: ,ri,:>'";:.":: scrittura suI registro.
(OFFSET,,)" I IOFFSET, dove (OFFSET,,)" ,ta a indicare la ripetizione per 16 ", ",':-;"c,;
volte del bit 16 <Ii OFFSET, 1'azione di portare OFFSET a 32 bit, moltiplicandolo,;; '\(:,", ,
per 4, richiede the in piu the vengano aggiunti due zed a destra..Questa operazione 5.3.2 ALU
si indica dunque come (OFFSET, .)" II OFFSET1100, ,', C'"
. '" , :' \,.'.-"
Vale la pena di osservare the la tecniea di codificare diviso per 4 10 scostamen- .... ". schema della ALU e riportato in Figura 5.4. Per mati vi che saranno chiariti in
to/l'indirizzo presenta qualche aspetto contraddittorio. lnfatti, in una macchina reale, " '. ',.::', :.:," segulta, estato esplicitato it bloceo ContrALU. Questo bloceo ha la funzione di deeD-
sana previste ancbe istruzioni eli caricamento/memorizzazione the indirizzana diret-, :,J ;:;,',;:.. dificare it codice di operazione aritmetica fALU e di presentare l'opportuno segnale
tameIite il byte, Can la nostra architettura sarebbe necessaria rinundare, per queste : ::'< i>.di comando alia ALU
8
,
istruzioni, alIa tecnica eli codifica adottata e riportare nel campo OFFSET l'effettivo :__ n blocco ContrALU e condizionato attraverso OPALU (k linee) , in modo da
Avendo l'.ipotesi - per motivi di - che 1a nostra. :<.; :,,:,',;''<.> quando serve, unluscita diversa da quella corrispondente alIa decodifica del
macchina mdirizZl solo parole. 81 entenuto opportuno codlficare sempre nel campo .,'; . ";: '/'.',coaice di aperazione aritmetica.
OFFSET 10 ,costaroento effettivo diviso per 4 6, ' 'i ,',;;::',/
.. ' , .

"i.

..,.!! I: "'..1,,: _
__
".,> '';j'-'-' I
,.'..1'
,... ".j! - ",
>,1;
. .-
. .,'
, .. '
, ,

" ., 1":""\'
"
I
r
I
\
f
I
(
I
\
\
I
,
I
I
I

l
i
I
I
\
I
\
I
I
I
I
\
I
\
\
I
1
0
5, RR'
o
o
,
0
.
o 31
RRZ
. 0
BS2 BSl
5,
o
,
.
A
o 31
,
5,
R'
:
Riin
'32
0
o 31
Ri
eD
B
I

, D
32
RWrite
rendono necessarie unita. alternative per l'esecuzione delle specifiche operazioni
che determinano confiitt0
9
.
Una sezione dedicata alia ietturafscrittura nella memoria e alIa scrittura del
registro di destinazione .
Una sezione relativa alta ALU.
.. Una sezione dedicata al prelievo delle istruzioni dalla memoria, di cui fa natural-
'mente parte PC.
, , ..
. Una sezione di decodifica dell'istruzione e di prelievo del cootenuto degli eventuali
, . registri sorgente.
gIn generale, quando all'interno di U.1l periodo di clock una stl!53a risoraa. pub essere da
piil enecessario prevedere un duplicato 0 un'unita specia.1izzata all'ese<:uziolle di una specifica
funzlone,
"
, .
"1
:,,:') , I
'it" ,

,
.,-!'JI-
"
UI<:ite. r.glstro
/ selezlonllto dll RR2
"
..
U,eita reglstro
( ,elnionalo d.. RRl
"
..

I;jG
A
B
t
RF
RWrite
,!,> 'RW
752"1 D
,
/5 .. RRl
I
/5 .. RR2
I
registri
Selezion..,
Ingresso III reglstro
seln:lonato da RW
., ..
",
Uesecuzione di un'istruzione corrisponde alIa propagazione dei segnali attraverso .. ;l
il blocco di decodifica, il banco di registri, 130 ALU e 1a memoria datil fino all'even-
tuale un registr.o di venda 1a dati
da quella di programma, gil acceSSl alia memona non determlDano confhttl, che .. '
invece potrebbero nascere per l'uso della ALU. Per evitare confiitti sulla ALU si
5.4 Sviluppo di CPUl
5.3.3 Memoria
'.,":
<r ".:'
,j'<' "'. ....
..; '. ,.' '.'
oj;: . ':' .-
. .
. ":" .
-....
"'{ ...:.\
Figura 5.2 Schematizzazione del banco di registri di usa generale. RF (Register .",1,:,.:':
contiene 32 registri di 32 bit. I gruppi di !inee RRl e RR2 identificano gli eventuali due re.;'':? ..' .... ",.' :',",'
gistri letti (registri sorgente), Ie cui uscite vengono presentaie sulle porte A eB. II gruppo di ,If:" ,.' _<
linee RW identifica l'eventuale registro di destinazione, ovvero it registro in cui viene scritto :
il data presentato in ID. La scrittura nel registro di destinazione ha luogo suI fronte finale "',' ,
del clock, solo se e asserito il comando RWrite. Questa figura, come queUe che seguiran'no, :\.' ': t <; :,., ':. I' d' . 'II" eli RF BSl BS2 t' d b
non mostra. il clock; esso eda ritenere sottinteso.;i'" .:;;. .J Figura 5.3 Se eztOne el a. . '. e. rappresen I ue.
.. " . sorgente. BD rappresenta il bus eli destmazlOne. SI ossenl. che,. a I fenomem
',:, propagazione, R.F presenta suo A e durata del dock, 11 contenuto del
, ': !', . ,due registri che vengono seleZlonatl dagh Ingressl RRI e RR2
1
mdipendentemente da! {atto
,,:--., "cbe .questo abbia un significato rispetto all'istruzione in esecuzione. Per esempio, nel caso
,<,' I'" ,dell'istruzione JMP, queUo che esce da. RF eirrileva.nte.
,." ..' '. ..
',." "" l;'"
La schema della memoria e in Figura5.5. La figura rappresenta una memoria di ';;.:.: ','" :::--','.' '
lettura e scrittura. Nel caso in cui 130 memoria venga usata come contenitore delle sole .:':: ,:':
istruzioni, non serve la logica di selezione dell'operazione, e 130 sua uscita eda ritenere .' .. ' ,",'
' .. ,
sempre abilitata. '..>::'. ,"',
,\;". ;':,' Al termine del cicIo di clock, sui fronte di discesa, secondo il modella del Capitola
,-' ,.1, PC viene aggiornato (per incremento di 4 a per effetto delle di salta)
}>':: ._".,. "e 130 logica passa a eseguire la nuova istruzione.
,.... ! .....
r:.:.: ' ! :',:. ',',,"'. Per 'rendere possibile il funzionameilto sopra delineato enecessario che il periodo
'L'. , ' .' ,
.",',,1:: .' :.', .', di- clock sia lunge abbastanza, in modo permettere 1a completa propagazione di
. ., ., .
Viene ora sviluppato un prototipo che esegue istruzioni in un solo periodo di clock. ' tutti i segnali e la loro stabilizzazione. Tenuto canto delle caratteristiche della oostra
Per pater raggiungere tale scopo, conviene anzitutto ipltizzare che 1a memoria sia "", .:,' architettura, si puo pensare di suddividere'la CPU nelle seguenti sezioni.
separata in memoria istruzioni (MI) e memoria dati (MD), secondo il modello. di .';;':, ."
Figura2.5, in modo da consentire sia il fetch sia la letturafscrittura dati all'interno ::l
della stesso ciclo. Can tale assunzione l'esecuzione di un'istruzione pub procedere nel ;':1"
....
modo seguente. . "'.:/r
""
;' "
,..
La memoria istruzioni (MI) rende sempre disponibile it contenuto della cella :,(::
indirizzata dal PC.
- .".- , I ,. _
__

,jif;o.f
b
,";' ;.,
",11 -"0' .
' .
.... ",,'
'Wrr;" ,:",.
-,'I,'h-."i. .
" ",." " .
164 Capitola 5 .' :;. La CPU 165
11
- "pl" " .',
:j'il ," '..;.;
',',i
"", .-
' ..'
., '""
",
-,"'
,",1
,.
.1 '
,'
"
," "
"jo/
d

l
i
I
I
\
I
\
I
I
I
I
\
I
\
\
I
1
0
5, RR'
o
o
,
0
.
o 31
RRZ
. 0
BS2 BSl
5,
o
,
.
A
o 31
,
5,
R'
:
Riin
'32
0
o 31
Ri
eD
B
I

, D
32
RWrite
rendono necessarie unita. alternative per l'esecuzione delle specifiche operazioni
che determinano confiitt0
9
.
Una sezione dedicata alia ietturafscrittura nella memoria e alIa scrittura del
registro di destinazione .
Una sezione relativa alta ALU.
.. Una sezione dedicata al prelievo delle istruzioni dalla memoria, di cui fa natural-
'mente parte PC.
, , ..
. Una sezione di decodifica dell'istruzione e di prelievo del cootenuto degli eventuali
, . registri sorgente.
gIn generale, quando all'interno di U.1l periodo di clock una stl!53a risoraa. pub essere da
piil enecessario prevedere un duplicato 0 un'unita specia.1izzata all'ese<:uziolle di una specifica
funzlone,
"
, .
"1
:,,:') , I
'it" ,

,
.,-!'JI-
"
UI<:ite. r.glstro
/ selezlonllto dll RR2
"
..
U,eita reglstro
( ,elnionalo d.. RRl
"
..

I;jG
A
B
t
RF
RWrite
,!,> 'RW
752"1 D
,
/5 .. RRl
I
/5 .. RR2
I
registri
Selezion..,
Ingresso III reglstro
seln:lonato da RW
., ..
",
Uesecuzione di un'istruzione corrisponde alIa propagazione dei segnali attraverso .. ;l
il blocco di decodifica, il banco di registri, 130 ALU e 1a memoria datil fino all'even-
tuale un registr.o di venda 1a dati
da quella di programma, gil acceSSl alia memona non determlDano confhttl, che .. '
invece potrebbero nascere per l'uso della ALU. Per evitare confiitti sulla ALU si
5.4 Sviluppo di CPUl
5.3.3 Memoria
'.,":
<r ".:'
,j'<' "'. ....
..; '. ,.' '.'
oj;: . ':' .-
. .
. ":" .
-....
"'{ ...:.\
Figura 5.2 Schematizzazione del banco di registri di usa generale. RF (Register .",1,:,.:':
contiene 32 registri di 32 bit. I gruppi di !inee RRl e RR2 identificano gli eventuali due re.;'':? ..' .... ",.' :',",'
gistri letti (registri sorgente), Ie cui uscite vengono presentaie sulle porte A eB. II gruppo di ,If:" ,.' _<
linee RW identifica l'eventuale registro di destinazione, ovvero it registro in cui viene scritto :
il data presentato in ID. La scrittura nel registro di destinazione ha luogo suI fronte finale "',' ,
del clock, solo se e asserito il comando RWrite. Questa figura, come queUe che seguiran'no, :\.' ': t <; :,., ':. I' d' . 'II" eli RF BSl BS2 t' d b
non mostra. il clock; esso eda ritenere sottinteso.;i'" .:;;. .J Figura 5.3 Se eztOne el a. . '. e. rappresen I ue.
.. " . sorgente. BD rappresenta il bus eli destmazlOne. SI ossenl. che,. a I fenomem
',:, propagazione, R.F presenta suo A e durata del dock, 11 contenuto del
, ': !', . ,due registri che vengono seleZlonatl dagh Ingressl RRI e RR2
1
mdipendentemente da! {atto
,,:--., "cbe .questo abbia un significato rispetto all'istruzione in esecuzione. Per esempio, nel caso
,<,' I'" ,dell'istruzione JMP, queUo che esce da. RF eirrileva.nte.
,." ..' '. ..
',." "" l;'"
La schema della memoria e in Figura5.5. La figura rappresenta una memoria di ';;.:.: ','" :::--','.' '
lettura e scrittura. Nel caso in cui 130 memoria venga usata come contenitore delle sole .:':: ,:':
istruzioni, non serve la logica di selezione dell'operazione, e 130 sua uscita eda ritenere .' .. ' ,",'
' .. ,
sempre abilitata. '..>::'. ,"',
,\;". ;':,' Al termine del cicIo di clock, sui fronte di discesa, secondo il modella del Capitola
,-' ,.1, PC viene aggiornato (per incremento di 4 a per effetto delle di salta)
}>':: ._".,. "e 130 logica passa a eseguire la nuova istruzione.
,.... ! .....
r:.:.: ' ! :',:. ',',,"'. Per 'rendere possibile il funzionameilto sopra delineato enecessario che il periodo
'L'. , ' .' ,
.",',,1:: .' :.', .', di- clock sia lunge abbastanza, in modo permettere 1a completa propagazione di
. ., ., .
Viene ora sviluppato un prototipo che esegue istruzioni in un solo periodo di clock. ' tutti i segnali e la loro stabilizzazione. Tenuto canto delle caratteristiche della oostra
Per pater raggiungere tale scopo, conviene anzitutto ipltizzare che 1a memoria sia "", .:,' architettura, si puo pensare di suddividere'la CPU nelle seguenti sezioni.
separata in memoria istruzioni (MI) e memoria dati (MD), secondo il modello. di .';;':, ."
Figura2.5, in modo da consentire sia il fetch sia la letturafscrittura dati all'interno ::l
della stesso ciclo. Can tale assunzione l'esecuzione di un'istruzione pub procedere nel ;':1"
....
modo seguente. . "'.:/r
""
;' "
,..
La memoria istruzioni (MI) rende sempre disponibile it contenuto della cella :,(::
indirizzata dal PC.
- .".- , I ,. _
__

,jif;o.f
b
,";' ;.,
",11 -"0' .
' .
.... ",,'
'Wrr;" ,:",.
-,'I,'h-."i. .
" ",." " .
164 Capitola 5 .' :;. La CPU 165
11
- "pl" " .',
:j'il ," '..;.;
',',i
"", .-
' ..'
., '""
",
-,"'
,",1
,.
.1 '
,'
"
," "
"jo/
d
...,
167
La CPU
Mread
Uscite
Clock
lngressi
Hold time
--r k Tempo di commutazione
Mr
Mw
,'7.
"
/
I
D
'32
M
/32
Set-up lime
avere in uscita da quest'ultima l'istruzione corrente. PC viene aggiornato (suI fronte di
discesa) a ogni impulso di clock. Di norma l'aggiornamento consiste neU'incrementare
di 4 il eontenuto di PC; a meno che non si tratti deU'istruzione di JMP, dell'istruzione
. JE 0 dell'istruzione JS, se queste ultime effettiva.mente determinano il salto. Occorre
quindi prevedere in ingresso a PC un selettore a 3 vie.
Onde evitare confiitti, l'incremento di 4 di PC non puo essere effettuato con la
ALU, che potrebbe essere impiegata da unJoperazione aritmetica 0 cia una istruzione
che fa riferimento alla memoria. Dunque per incrementare PC di 4 occorre uno
Specifieo sommatore. AlIa stesso modo, 1a ALU non pub essere impiegata per il
calcolo del PC di destinazione per effetto delFistruzione JE/JS, in quanta caoviene
M-wrile
Figura 5,5 Schema memo.ria. ?? memoria impiegata pe.r contenere soltanto
.. , Ie istruzioni, seompare Ll Busso di dati In mgresso e 51 assume cbe essa Sla. permanentemente
" abilitata in lettura. Per questa motivo, negli schemi che seguaua, quando si disegna la
.memo
ria
istruzioni, i comandi di letturafscrittura e i buffer sui bus dei 'dati non vengono
.... rappresentati. (Naturalmente, la memoria istruziani deve poter essere scritta all'atto del
; "caricamento del programma.)

,. II c
, (
"
...,
,
': .
,
"
-.
," '.
.' ,
.. -,
,i'.'
" ..
..
"
'.
il- . f .....
, ,.
" .
";
'cl'
:1 '..
".f
. !.' I
"
.
.'
, .:-'


OJ /. Risullalo
32
11
rAW
ContrALU
, I
1
32
A
Dato
Dato
k
OPALU 7/ "I
Le sezioni sepra delineate vengono esarninate dopa la seguente .osservazione.
5.4,1 Sezione di prelievo delle istruzioni
, "
Dalla m.emoria di programma viene prelevata l'istruzione il cui indirizzo econtenuto )1 ...::_
in pc. E sufficient. che l'uscita di PC sia collegata alIa porta di indirizzo di MI ,
. "I" .,
, .' :'-.' .
-.' ';.) .. _ .
.' .

Osservazione sui tempi di commutazioile Sui fronte di discesa del clock i ',::,.'
gistri campionano i lora ingressi e cambiano corrispondentemente stato. Poiche ie '.
"
commutazioni non sono istantanee, enecessario che gli ingressi ai flip-flop siano 3ta-.. '- .'. j ,
bili prima del fronte del clock (tempo di set-up. TS) e vengano rnantenuti per un Figura 5.6 Schematizzazione dei tempi d.i commutazione di un registro. E necessaria
cecto tempo (tempo di hold, TH) perche si possa avere la commutazione (Cfr, 5.6). :.:i: che gli ingressi al registro siano stabili per almeno iI tempo di set-up prima del hante che
Potrebbe accadere che Ie uscite di un registro malta rapido nella commutazione C05- '. ::,1, . determina la commutazione e che mantenuti. oltre il fronte per il. tempo .di
tituisca.no gli ingressi di un secondo registro piu lento, che richiede un tempo di hold .'i ""'" II tempo di commutazione e queUo cbe mtercorre tra. 11 fronte del clock e l'lStante m CUI Ie
superiore a quello che impiega il primo a commutare. In tal caso il secondo registro :",:.: /. ',. . uscite sono st.abili.
avrebbe un funzionameoto erronea e indeterminato. Nella costruzione della CPU e':'! .'.:
dunque necessario ipotizzare cbe tutti i registri abbiano Ie medesime caratteristiche ',', j'. .
temporali di commutaziane e che la commutazione stessa si manifesti sulle uscite, .','
dopo un tempo TC (dal fronte del clock) superiore al tempo di hold (TC > TH)' CiG ......
assicura che i segnali in ingresso ai registri siano stabUi durante la commutaziane e
l
.' '.:.
conseguentemente, assicura il corretta comportamento del sistema. '
Figura 5.4 Schema della ALU. Per Ie motivazioni illustrate nel seguito, estata espJieitata ,',
, ,
la logica di controllo con il bloeeo ContrALU. Le 11 linee in ingresso a tale blocco provengo- ':. i .
no daJ campo fALU dell'istruzione e codificano 10 specifico codice di operazione aritmetica :
. J'
eontenuto in un'istruzione aritmetica.. Le k linee OPALU influiscono sull'uscita di ContrALU ...:._
e vengoDo usate per generare comandi che possono non corrispondere a quanto presentato ",_: ..
5ulle linee che codificano Poperazione aritmetica. L'uscita Zero viene as5erita quando iJ risul. "; .','
ta.to di un'operazione e0, l'uscita. Segno viene asserita quando i1 risultato di un'operazione .J': .:::' ',:
e minore di zero. A parte Ie operazioni aritmetiche, queste due linee sono rilevanti per Ie ':' ',,: ",,-
istruzioni JE e JS. .c. ;.? .
..
- ". ,I '.
,"I,
::il .' .
; ...
166 Capitolo 5 - _
'.
I
(
\
\
!
I
\

'I
1
I
I
(
\
I \
,
...,
167
La CPU
Mread
Uscite
Clock
lngressi
Hold time
--r k Tempo di commutazione
Mr
Mw
,'7.
"
/
I
D
'32
M
/32
Set-up lime
avere in uscita da quest'ultima l'istruzione corrente. PC viene aggiornato (suI fronte di
discesa) a ogni impulso di clock. Di norma l'aggiornamento consiste neU'incrementare
di 4 il eontenuto di PC; a meno che non si tratti deU'istruzione di JMP, dell'istruzione
. JE 0 dell'istruzione JS, se queste ultime effettiva.mente determinano il salto. Occorre
quindi prevedere in ingresso a PC un selettore a 3 vie.
Onde evitare confiitti, l'incremento di 4 di PC non puo essere effettuato con la
ALU, che potrebbe essere impiegata da unJoperazione aritmetica 0 cia una istruzione
che fa riferimento alla memoria. Dunque per incrementare PC di 4 occorre uno
Specifieo sommatore. AlIa stesso modo, 1a ALU non pub essere impiegata per il
calcolo del PC di destinazione per effetto delFistruzione JE/JS, in quanta caoviene
M-wrile
Figura 5,5 Schema memo.ria. ?? memoria impiegata pe.r contenere soltanto
.. , Ie istruzioni, seompare Ll Busso di dati In mgresso e 51 assume cbe essa Sla. permanentemente
" abilitata in lettura. Per questa motivo, negli schemi che seguaua, quando si disegna la
.memo
ria
istruzioni, i comandi di letturafscrittura e i buffer sui bus dei 'dati non vengono
.... rappresentati. (Naturalmente, la memoria istruziani deve poter essere scritta all'atto del
; "caricamento del programma.)

,. II c
, (
"
...,
,
': .
,
"
-.
," '.
.' ,
.. -,
,i'.'
" ..
..
"
'.
il- . f .....
, ,.
" .
";
'cl'
:1 '..
".f
. !.' I
"
.
.'
, .:-'


OJ /. Risullalo
32
11
rAW
ContrALU
, I
1
32
A
Dato
Dato
k
OPALU 7/ "I
Le sezioni sepra delineate vengono esarninate dopa la seguente .osservazione.
5.4,1 Sezione di prelievo delle istruzioni
, "
Dalla m.emoria di programma viene prelevata l'istruzione il cui indirizzo econtenuto )1 ...::_
in pc. E sufficient. che l'uscita di PC sia collegata alIa porta di indirizzo di MI ,
. "I" .,
, .' :'-.' .
-.' ';.) .. _ .
.' .

Osservazione sui tempi di commutazioile Sui fronte di discesa del clock i ',::,.'
gistri campionano i lora ingressi e cambiano corrispondentemente stato. Poiche ie '.
"
commutazioni non sono istantanee, enecessario che gli ingressi ai flip-flop siano 3ta-.. '- .'. j ,
bili prima del fronte del clock (tempo di set-up. TS) e vengano rnantenuti per un Figura 5.6 Schematizzazione dei tempi d.i commutazione di un registro. E necessaria
cecto tempo (tempo di hold, TH) perche si possa avere la commutazione (Cfr, 5.6). :.:i: che gli ingressi al registro siano stabili per almeno iI tempo di set-up prima del hante che
Potrebbe accadere che Ie uscite di un registro malta rapido nella commutazione C05- '. ::,1, . determina la commutazione e che mantenuti. oltre il fronte per il. tempo .di
tituisca.no gli ingressi di un secondo registro piu lento, che richiede un tempo di hold .'i ""'" II tempo di commutazione e queUo cbe mtercorre tra. 11 fronte del clock e l'lStante m CUI Ie
superiore a quello che impiega il primo a commutare. In tal caso il secondo registro :",:.: /. ',. . uscite sono st.abili.
avrebbe un funzionameoto erronea e indeterminato. Nella costruzione della CPU e':'! .'.:
dunque necessario ipotizzare cbe tutti i registri abbiano Ie medesime caratteristiche ',', j'. .
temporali di commutaziane e che la commutazione stessa si manifesti sulle uscite, .','
dopo un tempo TC (dal fronte del clock) superiore al tempo di hold (TC > TH)' CiG ......
assicura che i segnali in ingresso ai registri siano stabUi durante la commutaziane e
l
.' '.:.
conseguentemente, assicura il corretta comportamento del sistema. '
Figura 5.4 Schema della ALU. Per Ie motivazioni illustrate nel seguito, estata espJieitata ,',
, ,
la logica di controllo con il bloeeo ContrALU. Le 11 linee in ingresso a tale blocco provengo- ':. i .
no daJ campo fALU dell'istruzione e codificano 10 specifico codice di operazione aritmetica :
. J'
eontenuto in un'istruzione aritmetica.. Le k linee OPALU influiscono sull'uscita di ContrALU ...:._
e vengoDo usate per generare comandi che possono non corrispondere a quanto presentato ",_: ..
5ulle linee che codificano Poperazione aritmetica. L'uscita Zero viene as5erita quando iJ risul. "; .','
ta.to di un'operazione e0, l'uscita. Segno viene asserita quando i1 risultato di un'operazione .J': .:::' ',:
e minore di zero. A parte Ie operazioni aritmetiche, queste due linee sono rilevanti per Ie ':' ',,: ",,-
istruzioni JE e JS. .c. ;.? .
..
- ". ,I '.
,"I,
::il .' .
; ...
166 Capitolo 5 - _
'.
I
(
\
\
!
I
\

'I
1
I
I
(
\
I \
,
I
l
j
\
I
I
\

1
\
,
\
1
\
La CPU 169
Alia ALU
1 'II) RWril. I
I .
.. Dalla ALU 0 daUa
Wemorla DaU
6-31
PCJl.I:P
Alia set.ione PC
X4
'3
16-3\
SeOST' Alia set.ione PC
SX4
32
e aHa .\LU
10
RR!
11 15 A
Memorie
RRZ
Istru'l.ioni
16 20
:J.-
RW
RF

LD B
-
21 31
L


La ALU viene naturalmente impiegata per Ie istruzioni aritmetiche rna anche in ap-
poggio all'esecuzione di tutte Ie altre istruzioni, quando si richiedono operazioni arit-
metiche (per esempio nel calcoio degli indirizzi). Per questo motivo la ALU per interi
5.4.3 Sezione ALU
Figura 5,8 Sezione relativa ai registri e aHa decodific3o delle istruzioni. Da.l decodificatore
del campo OP (bit 0-5) esce una linea. per ogni singola istruzione (1a linea ARITM identi.fica
la classe delle operazioni aritmetiche e logiche, specificate individualmente da1 campo fALU).
II blocco indicato con X4 rappresenta Pestensione a 32 bit del relativo campo moltiplicato per
4; il blocco SX4 5volge la medesima funzione, ma con estensione del segno, Per il significato
di queste operazioni si facci30 riferimento a quanta detto a pagina 162, Paragrafo 5.2.
II campo 6-31 contiene indirizzo di del salt,o; il suo
contenuto viene trasmesso alIa seZlone del PC dopo l'estenslOoe a 32 bIt.
viene trasmesso aHa ALU per l'eventuale operazione logica a
,"
.'
'.. ,
vengono
:.1
Ca.pitola 5
4
1;'--
+

SCOST I
/32
lY

, I"
PCJl.I:P ,
C
MI
IV
32 32
/32
'oro '-
"
s...no
JMP
"
,-.,
. ,
D registro di destinazione RW viene Jlormalmente selezionato tramite il campo .J
16-20 dell'istruzione, eccetto che per l'istruzione LD, la Quale scrive nel registro 'I,
codificato nel campo 11-15.
I campi dell'istruzione che identifieano gli eventuali registri sorgente
presentati a RF, in modo da avere BU A e B il relativo contenuto.
Dal decodificatore de.1 campo OP escono tante linee Quante sono Ie possibili i5tru-. :;;. ":, ...
zioni e risulta asserita solo quella che corrisponde al eodice dell'istruzione in ese-
cuzionej queste !inee vanno a infiuire sulle varie sezioni della CPU e determinano '.:;,
l'esecuzione delle azioni corrispondenti. ..:,:'
,
"
10n confronto viene effettuato sottraendo il secondo operando dal primo, in modo da presentare "
asserita la linea Zero se i due sono uguaH 0 la linea Segno se il risultato e negativo. '
,
"
5.4.2 Sezione di decodifica dell'istruzione
,.
" ,';,.
" . "
':;.-'.. " .. " II
'. ' .' Da a
".::, ;< " --
':\ ." '",
, ,',' '''' .
,.=.';:. ""
r',
, .;1, ,j"
Questa sezione (Figura 5.8) eresponsabile della decodifiea delle istruzioni, del prelievo' !;:::.....,':
.';;t: ",." ..
del contenuto degli eventuali registri sorgente e del prelievo e instradamento aIle altre ;, ,., ,
sezioni di CPU dei eampi deIl'istruzione. Dato n funzionamento ipotizzato, non c'e :'::. ". '
'<'.. .'
bisogno di alcun registro intermedio tra. la memoria di programma e la sezione di ,>i;, :"' ..
decodifica. Ovviamente Ie linee in u5cita da questa sezione subiranno un fase di
.....
transitorio nei momenti in cui, cambiando il contenuto di PC, la memoria presenta . '<,:.
un nuovo vafore, Si notino i seguenti punti. :'.".,
,
. . , Il campo 21-31
., . ; aritmetica.
",' .;
...' 11 campo 16-31 contiene Peventuale scostamento del salto (JEI JS) 0 delle istru-
"'_;; .' zioni che fanno riferimento alla memoria (LD eST); il suo contenuto viene pure
rU7.ione :.. esteso a 32 bit e trasmesso: (a) alIa ALU per il calcolo dell'indirizw di memoria,
c'.:, . nel caso di istruzione LD 0 ST; (b) alIa sezione PC nel caso di lEfJS.
'.> :;.' .
Si Dati che la regolarita. del formato delle istruzioni permette, in fase di decodi-
i:; ," . fica, di estrarre il contenuto di tutti i campi e avviarlo aUe parti che \0 elaborano.
Figura. 5. 7' Sezione relativa al delle istruzioni e all'aggiornamento del PC. II .;. Come sara chiarite discussione. che .segue, scelta di quale elaborazione avra.
lettore 1? mgresso a PC e tn, tngresso a1 sommatore decidono quale sara il prossimo:::\ :.... effettivamente luogo dlpende dai codlce dl operazlOne,
di Pq. ,Con PCJMP 51 e il valore dell'indirizzo di destinazione nel caso del ':
salta questa valore Vlene caricato in PC per effetto dell'i5truzione JMP, Con
SCOST 51 e 10 della destinazione del salto condizionato ris: 1", ,\: ' '
petto a. Sulle Istruztom dl condiztonato, quando everific30ta 130 condizione (Zero ,>,.' , ,
Segno), vlene scelto SCOST come mgresso al 50mmatore. ,',:,'" '
,','- ., ..
:J. . ,
'.' .
'?" . ':': ':
c.,; .y.:".
..." ,;.:':"
che essa effettui il confronto tra il contenuti dei due operandi
lO
. Peraltro, per if ',;,
calcolo dell'indirizzo di destinazione di JEllS (PClEIlS) si pub utilizzare 10 stesso::r
sommatore usato per incrementare di 4 secondo 10 schema di Figura 5.7.
168
I
l
j
\
I
I
\

1
\
,
\
1
\
La CPU 169
Alia ALU
1 'II) RWril. I
I .
.. Dalla ALU 0 daUa
Wemorla DaU
6-31
PCJl.I:P
Alia set.ione PC
X4
'3
16-3\
SeOST' Alia set.ione PC
SX4
32
e aHa .\LU
10
RR!
11 15 A
Memorie
RRZ
Istru'l.ioni
16 20
:J.-
RW
RF

LD B
-
21 31
L


La ALU viene naturalmente impiegata per Ie istruzioni aritmetiche rna anche in ap-
poggio all'esecuzione di tutte Ie altre istruzioni, quando si richiedono operazioni arit-
metiche (per esempio nel calcoio degli indirizzi). Per questo motivo la ALU per interi
5.4.3 Sezione ALU
Figura 5,8 Sezione relativa ai registri e aHa decodific3o delle istruzioni. Da.l decodificatore
del campo OP (bit 0-5) esce una linea. per ogni singola istruzione (1a linea ARITM identi.fica
la classe delle operazioni aritmetiche e logiche, specificate individualmente da1 campo fALU).
II blocco indicato con X4 rappresenta Pestensione a 32 bit del relativo campo moltiplicato per
4; il blocco SX4 5volge la medesima funzione, ma con estensione del segno, Per il significato
di queste operazioni si facci30 riferimento a quanta detto a pagina 162, Paragrafo 5.2.
II campo 6-31 contiene indirizzo di del salt,o; il suo
contenuto viene trasmesso alIa seZlone del PC dopo l'estenslOoe a 32 bIt.
viene trasmesso aHa ALU per l'eventuale operazione logica a
,"
.'
'.. ,
vengono
:.1
Ca.pitola 5
4
1;'--
+

SCOST I
/32
lY

,
I"
PCJl.I:P ,
C
MI
IV
32 32
/32

'oro '-
"
s...no
JMP
"
,-.,
. ,
D registro di destinazione RW viene Jlormalmente selezionato tramite il campo .J
16-20 dell'istruzione, eccetto che per l'istruzione LD, la Quale scrive nel registro 'I,
codificato nel campo 11-15.
I campi dell'istruzione che identifieano gli eventuali registri sorgente
presentati a RF, in modo da avere BU A e B il relativo contenuto.
Dal decodificatore de.1 campo OP escono tante linee Quante sono Ie possibili i5tru-. :;;. ":, ...
zioni e risulta asserita solo quella che corrisponde al eodice dell'istruzione in ese-
cuzionej queste !inee vanno a infiuire sulle varie sezioni della CPU e determinano '.:;,
l'esecuzione delle azioni corrispondenti. ..:,:'
,
"
10n confronto viene effettuato sottraendo il secondo operando dal primo, in modo da presentare "
asserita la linea Zero se i due sono uguaH 0 la linea Segno se il risultato e negativo. '
,
"
5.4.2 Sezione di decodifica dell'istruzione
,.
" ,';,.
" . "
':;.-'.. " .. " II
'. ' .' Da a
".::, ;< " --
':\ ." '",
, ,',' '''' .
,.=.';:. ""
r',
, .;1, ,j"
Questa sezione (Figura 5.8) eresponsabile della decodifiea delle istruzioni, del prelievo' !;:::.....,':
.';;t: ",." ..
del contenuto degli eventuali registri sorgente e del prelievo e instradamento aIle altre ;, ,., ,
sezioni di CPU dei eampi deIl'istruzione. Dato n funzionamento ipotizzato, non c'e :'::. ". '
'<'.. .'
bisogno di alcun registro intermedio tra. la memoria di programma e la sezione di ,>i;, :"' ..
decodifica. Ovviamente Ie linee in u5cita da questa sezione subiranno un fase di
.....
transitorio nei momenti in cui, cambiando il contenuto di PC, la memoria presenta . '<,:.
un nuovo vafore, Si notino i seguenti punti. :'.".,
,
. . , Il campo 21-31
., . ; aritmetica.
",' .;
...' 11 campo 16-31 contiene Peventuale scostamento del salto (JEI JS) 0 delle istru-
"'_;; .' zioni che fanno riferimento alla memoria (LD eST); il suo contenuto viene pure
rU7.ione :.. esteso a 32 bit e trasmesso: (a) alIa ALU per il calcolo dell'indirizw di memoria,
c'.:, . nel caso di istruzione LD 0 ST; (b) alIa sezione PC nel caso di lEfJS.
'.> :;.' .
Si Dati che la regolarita. del formato delle istruzioni permette, in fase di decodi-
i:; ," . fica, di estrarre il contenuto di tutti i campi e avviarlo aUe parti che \0 elaborano.
Figura. 5. 7' Sezione relativa al delle istruzioni e all'aggiornamento del PC. II .;. Come sara chiarite discussione. che .segue, scelta di quale elaborazione avra.
lettore 1? mgresso a PC e tn, tngresso a1 sommatore decidono quale sara il prossimo:::\ :.... effettivamente luogo dlpende dai codlce dl operazlOne,
di Pq. ,Con PCJMP 51 e il valore dell'indirizzo di destinazione nel caso del ':
salta questa valore Vlene caricato in PC per effetto dell'i5truzione JMP, Con
SCOST 51 e 10 della destinazione del salto condizionato ris: 1", ,\: ' '
petto a. Sulle Istruztom dl condiztonato, quando everific30ta 130 condizione (Zero ,>,.' , ,
Segno), vlene scelto SCOST come mgresso al 50mmatore. ,',:,'" '
,','- ., ..
:J. . ,
'.' .
'?" . ':': ':
c.,; .y.:".
..." ,;.:':"
che essa effettui il confronto tra il contenuti dei due operandi
lO
. Peraltro, per if ',;,
calcolo dell'indirizzo di destinazione di JEllS (PClEIlS) si pub utilizzare 10 stesso::r
sommatore usato per incrementare di 4 secondo 10 schema di Figura 5.7.
168
I
.... .: . r " . .
.... .
". ,,',
..,<
. :., .,,' ".' "',

170 Capitolo 5 ..
:
.:..:_.:..:2:..:..::..:..:::-
-.,
r:' \
; '.
costituisce la parte portante di qualunque CPU. E interesse del progettista cercare di ..
sfruttare la ALU per Quanta possibile. Nel caso specifieo, dovendo la CPU eseguire Ie
istruzioni in un solo cicIo di clock) uaseoDa dei confiitti per il suo uso. In particolare: ,:'>:1:" ,:;.. :
La CPU 171
Dona porlo B 41
o
Zl-:1l {IALU)

,
l

,
COlltrALU
..
=

, ,
-
!
Docod
21-31 (ftJ.U)
It/JS

....It..
ALUou\
A
Z.ro
IR' _n
. 0 .,L
"
"'::
n. ,
..

Call1rALIJ
-l


",.
0.1 bloCco
Dalla porto A d
'" '
.
, .
L'incremento di 4 del PC non puo essere effettuato dalla ALD. Per questa , ...
tivo) nella sezione di prelievo delle istruzioni, e stato previsto un somrnatore . -:"
(Figura5.7). :(,' c:.
.:;,
Le istruzioni JE e JS impiegano 1a ALU per calcolare 1a condizione di .... ;.:
glianza e quindi la ALU non puo essere irnpiegata per calcolare Pindirizzo di '!. '
destinazione del salto. Si egia osservato che per it calcolo di PCJE/JS si usa 10 ;:': ."
stesso sommatore utilizzato per incrementare PC di 4 (Figura5.7). ,."r
" ' .
., "
\

\
I
j'" 1
ST

Rd W,
I
MD D
"-
v
ST
'f
ALUout
Dalla porta B RF
Alia porta 0 di RF
Figura 5.10 Sezione relativa alia memoria dati e alla. scrittura nel registro di destinazione.
Si noti che per i comandi di scrittura e lettura. in memoria. si sono prese direttamente Ie linee
ST e LD ie quaE determinano anche il percorso sulla porta dati della memoria. La linea LD
serve anche a discriminare se iI dato proviene dalla ALU 0 daJla memoria dati.
, "Figura 5.9 Sezione relativa alIa ALD. La. ALU viene impiegata. in tutte Ie operazioni
roetiche e logiche, per il calcolo dell'indiriz-zo di memoriarJieUe istruzioni LDJST e per il
confronto (differenza) di JEjJS. Per Ie istruzioni OPALU seleziona. l'operazione
prevista dal campo fALU; nel caso di LD/ST seleziona la somma; nel caso di JEjJS selez-iona
la sottrazione. In quest'ultimo caso erilevante la. condizione Zero/Segno per determinare se
il saIto cleve 0 no avere luogo, II dettaglio di ContrALU eriportato a destra..
'1 ,. (, .",' '
. .
, .
, .
11 In generaJe, speciaJrnente se Ie scelte da attua.re sono molte, conviene codificare Ie scelte in ,:"
OPALU e prevedere un decodifica.tore in ContrALU. Si fara. ricorso a questa soluzione nel capitolo I "
dedicato al progetto della. CPU in pipeline; per it momento d si attiene a.llo schema di Figura5,9, '. ...
i j ,I;
, ..."j "
"!f) ,' .
.' ."
. ,i. . .'
"1 . , , '.'
Si osservi che, mentre l'ingresso A della ALU coincide sempre con l'uscita A,:',
di RF, l'ingresso B puo essere sia Puscita B di RF (operazioni aritmetiche), sia 10 :(::",:"
scostamento rispetto a Rb della parola indirizzata (operazioni che fanno :,-;:;
aHa memoria). Cia richiede un selettore a due vie sulla porta B (Figura5.9).
lnfine e necessaria che attraverso il blocco ContrALU, comandato tramite .:.:.
linee OPALU, vengano applicati alIa ALU comandi congruenti .con l'istruzione in '"",.;,:'
esecuzione. Si Doti che in Figura5.9 per OPALU sono state portate direttamente le "
linee che corrispondoDo alla decodifica delle istruziani 11 . ".":",,,'
f!"'
'\'i '.' .
" .,..' ..
'''. ", .. '
5.4.4 La s.ezio.ne di memoria dati e scrittura nel registro .,"":;' .
destmazlOne .,;.',> .
". . .
-- ". ".-. . ",
, ''J! ';'. '.
Per quanto si riferisce alIa memoria dati, tenuto conto di quanta detto al paragrafo" 1':.':: ....::'
precedente, si tratta d.i presentare l'uscita della ALU sulle linee degli indirizzi e di . ',; ,
, .'
asserire i comandi Rd 0 Wr
l
che, in prima approssirnazione, coincidono con LD e ST. _' ",_
'. .
Riguardo aUa scrittura nel registro di destinazione, si deve tener conto che il dato pub ::' .
provenire dalla ALU come risultato di una operazione aritmetica 0 dalla memoria dati. }, ", ':::.
,
in caso di istruzione LD. In conclusione enecessaria un ulteriore selettore, .J
Lo schema corrispondente a questa sezione, esclusa la parte di eventuale scrittura. ):
in un registro di destinazione, viene presentata in Figura5.1O. ,'J.,.
I
I
l
I
I
I
\
!

I
.... .: . r " . .
.... .
". ,,',
..,<
. :., .,,' ".' "',

170 Capitolo 5 ..
:
.:..:_.:..:2:..:..::..:..:::-
-.,
r:' \
; '.
costituisce la parte portante di qualunque CPU. E interesse del progettista cercare di ..
sfruttare la ALU per Quanta possibile. Nel caso specifieo, dovendo la CPU eseguire Ie
istruzioni in un solo cicIo di clock) uaseoDa dei confiitti per il suo uso. In particolare: ,:'>:1:" ,:;.. :
La CPU 171
Dona porlo B 41
o
Zl-:1l {IALU)

,
l

,
COlltrALU
..
=

, ,
-
!
Docod
21-31 (ftJ.U)
It/JS

....It..
ALUou\
A
Z.ro
IR' _n
. 0 .,L
"
"'::
n. ,
..

Call1rALIJ
-l


",.
0.1 bloCco
Dalla porto A d
'" '
.
, .
L'incremento di 4 del PC non puo essere effettuato dalla ALD. Per questa , ...
tivo) nella sezione di prelievo delle istruzioni, e stato previsto un somrnatore . -:"
(Figura5.7). :(,' c:.
.:;,
Le istruzioni JE e JS impiegano 1a ALU per calcolare 1a condizione di .... ;.:
glianza e quindi la ALU non puo essere irnpiegata per calcolare Pindirizzo di '!. '
destinazione del salto. Si egia osservato che per it calcolo di PCJE/JS si usa 10 ;:': ."
stesso sommatore utilizzato per incrementare PC di 4 (Figura5.7). ,."r
" ' .
., "
\

\
I
j'" 1
ST

Rd W,
I
MD D
"-
v
ST
'f
ALUout
Dalla porta B RF
Alia porta 0 di RF
Figura 5.10 Sezione relativa alia memoria dati e alla. scrittura nel registro di destinazione.
Si noti che per i comandi di scrittura e lettura. in memoria. si sono prese direttamente Ie linee
ST e LD ie quaE determinano anche il percorso sulla porta dati della memoria. La linea LD
serve anche a discriminare se iI dato proviene dalla ALU 0 daJla memoria dati.
, "Figura 5.9 Sezione relativa alIa ALD. La. ALU viene impiegata. in tutte Ie operazioni
roetiche e logiche, per il calcolo dell'indiriz-zo di memoriarJieUe istruzioni LDJST e per il
confronto (differenza) di JEjJS. Per Ie istruzioni OPALU seleziona. l'operazione
prevista dal campo fALU; nel caso di LD/ST seleziona la somma; nel caso di JEjJS selez-iona
la sottrazione. In quest'ultimo caso erilevante la. condizione Zero/Segno per determinare se
il saIto cleve 0 no avere luogo, II dettaglio di ContrALU eriportato a destra..
'1 ,. (, .",' '
. .
, .
, .
11 In generaJe, speciaJrnente se Ie scelte da attua.re sono molte, conviene codificare Ie scelte in ,:"
OPALU e prevedere un decodifica.tore in ContrALU. Si fara. ricorso a questa soluzione nel capitolo I "
dedicato al progetto della. CPU in pipeline; per it momento d si attiene a.llo schema di Figura5,9, '. ...
i j ,I;
, ..."j "
"!f) ,' .
.' ."
. ,i. . .'
"1 . , , '.'
Si osservi che, mentre l'ingresso A della ALU coincide sempre con l'uscita A,:',
di RF, l'ingresso B puo essere sia Puscita B di RF (operazioni aritmetiche), sia 10 :(::",:"
scostamento rispetto a Rb della parola indirizzata (operazioni che fanno :,-;:;
aHa memoria). Cia richiede un selettore a due vie sulla porta B (Figura5.9).
lnfine e necessaria che attraverso il blocco ContrALU, comandato tramite .:.:.
linee OPALU, vengano applicati alIa ALU comandi congruenti .con l'istruzione in '"",.;,:'
esecuzione. Si Doti che in Figura5.9 per OPALU sono state portate direttamente le "
linee che corrispondoDo alla decodifica delle istruziani 11 . ".":",,,'
f!"'
'\'i '.' .
" .,..' ..
'''. ", .. '
5.4.4 La s.ezio.ne di memoria dati e scrittura nel registro .,"":;' .
destmazlOne .,;.',> .
". . .
-- ". ".-. . ",
, ''J! ';'. '.
Per quanto si riferisce alIa memoria dati, tenuto conto di quanta detto al paragrafo" 1':.':: ....::'
precedente, si tratta d.i presentare l'uscita della ALU sulle linee degli indirizzi e di . ',; ,
, .'
asserire i comandi Rd 0 Wr
l
che, in prima approssirnazione, coincidono con LD e ST. _' ",_
'. .
Riguardo aUa scrittura nel registro di destinazione, si deve tener conto che il dato pub ::' .
provenire dalla ALU come risultato di una operazione aritmetica 0 dalla memoria dati. }, ", ':::.
,
in caso di istruzione LD. In conclusione enecessaria un ulteriore selettore, .J
Lo schema corrispondente a questa sezione, esclusa la parte di eventuale scrittura. ):
in un registro di destinazione, viene presentata in Figura5.1O. ,'J.,.
I
I
l
I
I
I
\
!

\
I
I
\
I
J 1
173 L. CPU
Ricomposizione (provvisoria)
.... "
".f:
,"
__ :t:-;;'.?/ ','
. :..' ?.....,..
'f}"!' 't5,:i'j,.,":'.'
. .!tiJ '., I,"" '.
""',::"
";i :', "'''" :-,
. ,. , .,.. .c......5 4 5

.... ,.. ". ';Slarno, ora in condizione Ie sezioni: mostra
" :.. ' it risultato. Questa e .tuttavla da ntenerSI proVVlsona In quanto. presenta
',:..;. ,malfunzionamento sull'tstruzlOne ST. L'esame dell'errore e la sua correZlOne sana
";',j, , . al Paragrafo 5.5.1, dopa che saranno state fatte alcune considerazioni sui
.,." '" rJ . .
. <:; ; , tempi di esecuzlOne... .
",,:: ,In3oggiunt3o a quanta Illustrato 10 precedenza, 130 FIgura 5.11 mostra che la scrittu-
>f' .'a'di un registro di destinazione si ha solo con istruzioni aritmetiche 0 COD l'istruzione
'i::': Nella schema di Figura5.1l PC e l'eventuale registro di destinazione sono i due
:S,.:' ,', . soli registri che vengono aggiornatL Mentre PC viene aggiomato su ogni clock
12
, il
;' ::'; ':' .... ;' " registro di viene aggiornate solo asserito,
.,"; ,"; " Uistruzlone NOP non produce alcun efIetto se non queUe dl far lDcrementare PC
,. . ...
....., d4
" .... ''-1 .

-

:11

:t
0

" ,
-
I
h
"-
172 Capitolo 5
Figura 5.11 CPU1: risultato della composizione delle differenti sezioni (Questa soluzione
presenta un malfunzionamento sull'istruzione ST).
,
I IU

I
..

H,
0
--.

"
'1'1
" '
.. = ::!
r
9.r
I
I
I
I
I
f
)
I
(5.1)
(5.2)
Tmono,/ ::= LTi
tmono ::= N . Tmono
Tmono ::= max{Tmono,/}I=1,2..
12Per Ie convenzioni di pagina 28 del Paragrafo 1.5 I'ingresso d.i PC esempre abilitato, mentre il
registro di scrittura (identificato dal tag RW) eabilitato da RWrite.
ntempo di esecuzione di un programma di N istruzioni risulta dunque:
Un caso pratico sara di chiarimento. Per la nostra CPU si assumano i seguenti valori:
30ns per l'accesso alIa memoria. n tempo di accesso (in lettura) eil tempo che
intercorre tra l'istante in cui gli indirizzi sono stabili e l'istante in cui la memoria
presenta d.ti stabili. Poiche PC c.mbia sui fronte finale del clock, occorrerebbe
tenere conto del relativo tempo di commutazione e di di propagazione da
PC alla memoria. Per semplificare la trattazione assumeremo che questa tempo
'.
L'esecuzione in un solo periodo di clock presuppone che questo abbia durata sufficiente
, alla completa propagazione dei segnali. La propagazione ha inizio col cambiamento
di PC e deve essere conclusa prinla delParrivo del successivo fronte che fa modifi-
" care nuovamente PC. Di norma c'e un percorso piu lungo, in dipendenza da!. tipo d.i
istruzione. Ne consegue che l'istruzione piu Ulenta
ll
deterrnin:a 130 lunghezza del clock
Si indichi can 'Ti it tempo relativo al generico stadio
,
con Tmono,I queUo relati-
va all'istruzione I -rna e con Tmono il periodo di clock richiesto dalla realizzazione
monociclo. Essendo
. 5.5 Considerazioni sulla-reaHzzazione
- periodo di clock -
dove la somma include i soli Ti relativi agli stadi attraversati dall'istruzione I _ ma,
-' enecessario che il periodo di clock duri almeno il tempo richiesto dall'istruzione di
, maggior durata, cioe:
...
.,
., .

,,
-;
,
' ...
.'
,

,
..

...
n
l
,.
,.
, ..',
" .,
" o.
, -' ;. I' ..

"

..,...
'" '.
, r.

y"o,
.,

',,"; ,
,.
',\ I,
fl
.".':;;, .
' ...:'1
' .
,
':-.: ,

T
,

!,1,
I
-I \

u
-
J
r

x
l
,

x
"

\
\
I
I
\
I
J 1
173 L. CPU
Ricomposizione (provvisoria)
.... "
".f:
,"
__ :t:-;;'.?/ ','
. :..' ?.....,..
'f}"!' 't5,:i'j,.,":'.'
. .!tiJ '., I,"" '.
""',::"
";i :', "'''" :-,
. ,. , .,.. .c......5 4 5

.... ,.. ". ';Slarno, ora in condizione Ie sezioni: mostra
" :.. ' it risultato. Questa e .tuttavla da ntenerSI proVVlsona In quanto. presenta
',:..;. ,malfunzionamento sull'tstruzlOne ST. L'esame dell'errore e la sua correZlOne sana
";',j, , . al Paragrafo 5.5.1, dopa che saranno state fatte alcune considerazioni sui
.,." '" rJ . .
. <:; ; , tempi di esecuzlOne... .
",,:: ,In3oggiunt3o a quanta Illustrato 10 precedenza, 130 FIgura 5.11 mostra che la scrittu-
>f' .'a'di un registro di destinazione si ha solo con istruzioni aritmetiche 0 COD l'istruzione
'i::': Nella schema di Figura5.1l PC e l'eventuale registro di destinazione sono i due
:S,.:' ,', . soli registri che vengono aggiornatL Mentre PC viene aggiomato su ogni clock
12
, il
;' ::'; ':' .... ;' " registro di viene aggiornate solo asserito,
.,"; ,"; " Uistruzlone NOP non produce alcun efIetto se non queUe dl far lDcrementare PC
,. . ...
....., d4
" .... ''-1 .

-

:11

:t
0

" ,
-
I
h
"-
172 Capitolo 5
Figura 5.11 CPU1: risultato della composizione delle differenti sezioni (Questa soluzione
presenta un malfunzionamento sull'istruzione ST).
,
I IU

I
..

H,
0
--.

"
'1'1
" '
.. = ::!
r
9.r
I
I
I
I
I
f
)
I
(5.1)
(5.2)
Tmono,/ ::= LTi
tmono ::= N . Tmono
Tmono ::= max{Tmono,/}I=1,2..
12Per Ie convenzioni di pagina 28 del Paragrafo 1.5 I'ingresso d.i PC esempre abilitato, mentre il
registro di scrittura (identificato dal tag RW) eabilitato da RWrite.
ntempo di esecuzione di un programma di N istruzioni risulta dunque:
Un caso pratico sara di chiarimento. Per la nostra CPU si assumano i seguenti valori:
30ns per l'accesso alIa memoria. n tempo di accesso (in lettura) eil tempo che
intercorre tra l'istante in cui gli indirizzi sono stabili e l'istante in cui la memoria
presenta d.ti stabili. Poiche PC c.mbia sui fronte finale del clock, occorrerebbe
tenere conto del relativo tempo di commutazione e di di propagazione da
PC alla memoria. Per semplificare la trattazione assumeremo che questa tempo
'.
L'esecuzione in un solo periodo di clock presuppone che questo abbia durata sufficiente
, alla completa propagazione dei segnali. La propagazione ha inizio col cambiamento
di PC e deve essere conclusa prinla delParrivo del successivo fronte che fa modifi-
" care nuovamente PC. Di norma c'e un percorso piu lungo, in dipendenza da!. tipo d.i
istruzione. Ne consegue che l'istruzione piu Ulenta
ll
deterrnin:a 130 lunghezza del clock
Si indichi can 'Ti it tempo relativo al generico stadio
,
con Tmono,I queUo relati-
va all'istruzione I -rna e con Tmono il periodo di clock richiesto dalla realizzazione
monociclo. Essendo
. 5.5 Considerazioni sulla-reaHzzazione
- periodo di clock -
dove la somma include i soli Ti relativi agli stadi attraversati dall'istruzione I _ ma,
-' enecessario che il periodo di clock duri almeno il tempo richiesto dall'istruzione di
, maggior durata, cioe:
...
.,
., .

,,
-;
,
' ...
.'
,

,
..

...
n
l
,.
,.
, ..',
" .,
" o.
, -' ;. I' ..

"

..,...
'" '.
, r.

y"o,
.,

',,"; ,
,.
',\ I,
fl
.".':;;, .
' ...:'1
' .
,
':-.: ,

T
,

!,1,
I
-I \

u
-
J
r

x
l
,

x
"

\
unificata

memona
5.6 CPUl con
,
E possibile costruire una CPU rnonociclo e can memoria dati non separata dalla
memoria istruzioni
l
se si sfruttano Ie due fasi del clock, facendo leggere l'istruzione
.nel primo semiperiodo ed eseguire nel secondo. Per evitare il conflitto per la memoria,
basta prevedere che nella prima fase del cicIo 1a memoria venga letta alllindirizzo
contenuto in PC e che al termine di questa fase la lettura venga memorizzata in
un registro - il registro lR - il cui contenuto serve nella seconda fase a determinare
cosa fara. Jlistruzione
l
compresa Peventuale lettura/scrittura in memoria all'indirizzo
La CPU 175
13In pratica l'esecuzione entro un periodo di clock corrisponde a quella di una. macchina asincrona,
con fasi che si succedono senza soluzione di continuita
l
senza i tempi morti che pOSSODO aversi tra gli
impulsi di clock.

. nz-a alcun tempo aggiunti


v
o
13
n prototipo multiciclo sviluppato piu avanti, per
-' introduce sprec? di in tutti quegli stadi che potrebbero terminare in
n tempO minore del penodo dl clock. Da questo punta di vista, per un dato insieme
valori dei tempi .delle singole 1a soluzione monocicla risulta facilrnente essere
pill veloce anche se malto penalizzata dalla lentezza della
memoria rispetta alIa Iaglca di CPU.
5.5.1 Ricomposizione finale di CPU1
Cominciarno col mostrare il maIfunzionamento della CPU di Figura5.1l
1
cui si efatto
. cenno nel Paragrafo 5.4.5.
Facendo riferimento ai tempi indicati in Tabella 5.2, Ie istruzioni risultano decodi-
35ns, mentre la Case ALU si conclude dopo 47 nB. Nel caso dell'istruzione
ST, con 10 schema di Figura5.11, si ha che il comando Wr easserito 12 ns prima che
"sia disponibile I
l
indirizzo di memoria, cpn conseguente scrittura a un indirizw certa-
mente sbagliato (quello che casualmente si trova sulle linee di indirizzo quando Wr
viene asserito). Ulteriori complicazioni si hanno can due ST in sequenza
l
in quanta il
comando di scrittura in memoria dati resta sempre asserito, mentre l'indirizzo cambia.
Occorre fare in modo che 1a scrittura in memoria avvenga solo quando indirizzo
(e data) sana validi. Una soluzione consiste nelPagganciare al clock i1 comando di
scrittura. Se Wr eottenuto come AND di ST col clock, esso risulta asserito solo nella
seconda parte del periodo. Cia richiede che il ronte di salita che separa il primo dal
secondo semiperiodo cleve presentarsi quando l'indirizzo estabile. Con i nostri numeri
1a durata del primo semiperiodo edunque di almena 47ns.
Un problema analogo non si presenta su LDI in quanto il trarisitorio introdotto
, dal fatto che il comando di lettura della memoria eassento prima dell'indirizzo non
ha alcun effetto
l
poiche 1a scrittura del registro di destinazione avviene a fine cido
l
quando i1 data dalla memoria eormai stabilizzato.
In Figura5.12 viene riportato 10 schema corretto, con rindicazione della forma
del clock.
......

"
"
'.
,
"'1' :.,
, '. ',,'1'
. .' ,
,
.,
".
,.'1

"
'I
,/ " '.
"
52
82
-77
47
.l.-35 ,
30
30
5
5
5
5
5

30
30
30
30
30
LD
S1'
JE/JS
JMP
Capitolo 5

_" .L
-,.,.. ,

,.;;:"?,;. -.. ,;'


I\\;!f';",
k . .
','ilI .. ..l ..;
- "'#' .."',
;'\*' c' y. .
','
,,(. '.
"'io ",.. ,
.',
sia inglobato nel tempo d.i accesso. Assumererno che anche la scrittura richieda 2l) '.:',;:,", '
30ns

. '::.-,.:' ", .
, ,
i "", '
. . '
5ns per la decodifica dell'istruzione e per lettura dei registri. 5i neti che questa
tempo si ricluce a queUo necessaria alia propagazione dei segnali interessati. '}!
i ',I .',' '.
"1 .
ALU. Anche in questa caso si tratta di un tempo di '?:.l ,,-
' .., I. ,
., \ ' .
.,-, '".
12ns per un'operazione di
propagazlone.
5DS per la scrittura di un registro. Qui si richiede una precisazione. I registri ,,',::If ,';" ..
vengono scritti suI fronte finale del clock. II tempo richiesto dalla scrittura, a
parte minima ritarclo di propagazione dei segnali, si riduce al tempo richiesto dai
flip-flop per commutare. Tenuta canto delllosservazione di pagina 166 (Figura . <'''''''>
5.6) circa i tempi di commutazione, l'intervallo di tempo richiesto per la scrittura ",{
dei registri si troverebbe a cavallo rispetto al ronte del clock (il tempo di setup ''<'::
a sinistra, il tempo di effettiva commutazione a destra). Nel Dostro modello, i '.
5 ns rappresentano il tempo che deve intercorrere tra l'istante in cui i segnali sana .i
l
"
stabili in ingresso ai registri e it fronte del clock. I tempi di effettiva commutazione ",:<1"" .,','
e propagazione delle uscite vanno immaginati come parte del transitorio che segue !.,
il fronte finale del clock (e che, per quanta detto primal viene inglobato nel tempo .;"1,',',
di accesso alla memoria di programma), :,
,", I .
, ",
174
La Tabella 5.2 ripona il totale richiesto per differenti istruzioni. Corne si vede
llistruzione LD impone 1a durata minima del clock. Con i valori riportati deve essere
T
mono
> 82 os. Ne consegue che per un programmache esegue N istruzioni, essendo
tutte Ie istruzioni della stessa durata
l
il tempo di risulta eSsere pari a.
82xN.
Tabella 5.2 Determinazione della lunghezza del periodo di clock per differenLi cla.ssi di
istruzioni. Le colonne MIl illl ALU, MD e WR riportano i tempi richiesti rispettivamente
per: leggere dalla memoria di programma, decodificare l'istruzione e presentare il contenuto
dei registri sorgente, passare 18, ALU, leggere/scrivere in memoria dati, scrivere il registro di
destina.z:ione. La colonna T riporta it periodo minima di clock richiesto da ogni istruzione.
II risultato eche la durata minima. del periodo d.i clock Don puo me essere 82 os.
Con i numeri di 1'abella5.2, nel c""o dell'istruzione JMP il 57% del tempo e
sprecato. Cia fa pensare che 1'esecuzione a singoIo ciclo ealquanto inefficiente. Si deve
perC. tener conto chef sebbene il periodo di clock sia determinato dall'istruzione piu
Iunga
l
nella sua valutazione SOUO entrati i soli tempi necessari aIle diflerenti sezioni,
I
,
,

[
I
1
I
,I
i
I
I
I
1
I
I
I
I
unificata

memona
5.6 CPUl con
,
E possibile costruire una CPU rnonociclo e can memoria dati non separata dalla
memoria istruzioni
l
se si sfruttano Ie due fasi del clock, facendo leggere l'istruzione
.nel primo semiperiodo ed eseguire nel secondo. Per evitare il conflitto per la memoria,
basta prevedere che nella prima fase del cicIo 1a memoria venga letta alllindirizzo
contenuto in PC e che al termine di questa fase la lettura venga memorizzata in
un registro - il registro lR - il cui contenuto serve nella seconda fase a determinare
cosa fara. Jlistruzione
l
compresa Peventuale lettura/scrittura in memoria all'indirizzo
La CPU 175
13In pratica l'esecuzione entro un periodo di clock corrisponde a quella di una. macchina asincrona,
con fasi che si succedono senza soluzione di continuita
l
senza i tempi morti che pOSSODO aversi tra gli
impulsi di clock.

. nz-a alcun tempo aggiunti


v
o
13
n prototipo multiciclo sviluppato piu avanti, per
-' introduce sprec? di in tutti quegli stadi che potrebbero terminare in
n tempO minore del penodo dl clock. Da questo punta di vista, per un dato insieme
valori dei tempi .delle singole 1a soluzione monocicla risulta facilrnente essere
pill veloce anche se malto penalizzata dalla lentezza della
memoria rispetta alIa Iaglca di CPU.
5.5.1 Ricomposizione finale di CPU1
Cominciarno col mostrare il maIfunzionamento della CPU di Figura5.1l
1
cui si efatto
. cenno nel Paragrafo 5.4.5.
Facendo riferimento ai tempi indicati in Tabella 5.2, Ie istruzioni risultano decodi-
35ns, mentre la Case ALU si conclude dopo 47 nB. Nel caso dell'istruzione
ST, con 10 schema di Figura5.11, si ha che il comando Wr easserito 12 ns prima che
"sia disponibile I
l
indirizzo di memoria, cpn conseguente scrittura a un indirizw certa-
mente sbagliato (quello che casualmente si trova sulle linee di indirizzo quando Wr
viene asserito). Ulteriori complicazioni si hanno can due ST in sequenza
l
in quanta il
comando di scrittura in memoria dati resta sempre asserito, mentre l'indirizzo cambia.
Occorre fare in modo che 1a scrittura in memoria avvenga solo quando indirizzo
(e data) sana validi. Una soluzione consiste nelPagganciare al clock i1 comando di
scrittura. Se Wr eottenuto come AND di ST col clock, esso risulta asserito solo nella
seconda parte del periodo. Cia richiede che il ronte di salita che separa il primo dal
secondo semiperiodo cleve presentarsi quando l'indirizzo estabile. Con i nostri numeri
1a durata del primo semiperiodo edunque di almena 47ns.
Un problema analogo non si presenta su LDI in quanto il trarisitorio introdotto
, dal fatto che il comando di lettura della memoria eassento prima dell'indirizzo non
ha alcun effetto
l
poiche 1a scrittura del registro di destinazione avviene a fine cido
l
quando i1 data dalla memoria eormai stabilizzato.
In Figura5.12 viene riportato 10 schema corretto, con rindicazione della forma
del clock.
......

"
"
'.
,
"'1' :.,
, '. ',,'1'
. .' ,
,
.,
".
,.'1

"
'I
,/ " '.
"
52
82
-77
47
.l.-35 ,
30
30
5
5
5
5
5

30
30
30
30
30
LD
S1'
JE/JS
JMP
Capitolo 5

_" .L
-,.,.. ,

,.;;:"?,;. -.. ,;'


I\\;!f';",
k . .
','ilI .. ..l ..;
- "'#' .."',
;'\*' c' y. .
','
,,(. '.
"'io ",.. ,
.',
sia inglobato nel tempo d.i accesso. Assumererno che anche la scrittura richieda 2l) '.:',;:,", '
30ns

. '::.-,.:' ", .
, ,
i "", '
. . '
5ns per la decodifica dell'istruzione e per lettura dei registri. 5i neti che questa
tempo si ricluce a queUo necessaria alia propagazione dei segnali interessati. '}!
i ',I .',' '.
"1 .
ALU. Anche in questa caso si tratta di un tempo di '?:.l ,,-
' .., I. ,
., \ ' .
.,-, '".
12ns per un'operazione di
propagazlone.
5DS per la scrittura di un registro. Qui si richiede una precisazione. I registri ,,',::If ,';" ..
vengono scritti suI fronte finale del clock. II tempo richiesto dalla scrittura, a
parte minima ritarclo di propagazione dei segnali, si riduce al tempo richiesto dai
flip-flop per commutare. Tenuta canto delllosservazione di pagina 166 (Figura . <'''''''>
5.6) circa i tempi di commutazione, l'intervallo di tempo richiesto per la scrittura ",{
dei registri si troverebbe a cavallo rispetto al ronte del clock (il tempo di setup ''<'::
a sinistra, il tempo di effettiva commutazione a destra). Nel Dostro modello, i '.
5 ns rappresentano il tempo che deve intercorrere tra l'istante in cui i segnali sana .i
l
"
stabili in ingresso ai registri e it fronte del clock. I tempi di effettiva commutazione ",:<1"" .,','
e propagazione delle uscite vanno immaginati come parte del transitorio che segue !.,
il fronte finale del clock (e che, per quanta detto primal viene inglobato nel tempo .;"1,',',
di accesso alla memoria di programma), :,
,", I .
, ",
174
La Tabella 5.2 ripona il totale richiesto per differenti istruzioni. Corne si vede
llistruzione LD impone 1a durata minima del clock. Con i valori riportati deve essere
T
mono
> 82 os. Ne consegue che per un programmache esegue N istruzioni, essendo
tutte Ie istruzioni della stessa durata
l
il tempo di risulta eSsere pari a.
82xN.
Tabella 5.2 Determinazione della lunghezza del periodo di clock per differenLi cla.ssi di
istruzioni. Le colonne MIl illl ALU, MD e WR riportano i tempi richiesti rispettivamente
per: leggere dalla memoria di programma, decodificare l'istruzione e presentare il contenuto
dei registri sorgente, passare 18, ALU, leggere/scrivere in memoria dati, scrivere il registro di
destina.z:ione. La colonna T riporta it periodo minima di clock richiesto da ogni istruzione.
II risultato eche la durata minima. del periodo d.i clock Don puo me essere 82 os.
Con i numeri di 1'abella5.2, nel c""o dell'istruzione JMP il 57% del tempo e
sprecato. Cia fa pensare che 1'esecuzione a singoIo ciclo ealquanto inefficiente. Si deve
perC. tener conto chef sebbene il periodo di clock sia determinato dall'istruzione piu
Iunga
l
nella sua valutazione SOUO entrati i soli tempi necessari aIle diflerenti sezioni,
I
,
,

[
I
1
I
,I
i
I
I
I
1
I
I
I
I
t
)
)
1
I
I
I
I
I
I
,
,

1:1:
CW
I

. !

I

,
.,
'i
44 I
f.,.
r
l
CPU 177
1
+
I

I
- _.
.,

<

'" i
'"
= ..

0
r
1 I J 9

rl :1
WI '
, ,
"
>

0
"
,
I- .
'" . -
-.

>.
N
,:,;

..
, ,
,
<,
, ,



,
i l ) .,
Figura 5.12 CPU1: schema finale, dopo I'eliminazione del malfunzionamento sulPistru-
zione' ST. In alto a destra. viene riportata. la forma d'onda del clock; il primo semiperiodo
deve non essere inferiore a 47 ns.
,
"
"I:
,
.'It
"\ I',
, .

\" .
..
Capitola 5
la decodifica dell'istruzione ecompletataj gli ingressi alla ALU sono corretti. In
caso di istruzione LD sono asseriti MRead e In) in caso di istruzione ST easserito
il solo Out;
176

..
,

"',':.' ".
'
c. 'TJ;:l" ,: tr;,: ., '
,,", "."1"',0",,, "
, ,. , . , , ..
,.';;-'::.":'.;.,-- '------------------------------=-=-=--=-
'.-
t-- 1\'.) r) ''".';'.:. _
, ,... U:'"'i:."::"" :
:"',",
'':/-'''''','.-,
calcolato dalla ALU. i nostri numeri la del primo semiperiodo ealmena
30 ns. ,." ',: '.' "
In Figura5.13 viene riportato 10 schema di CPUl con memoria singola a ..:-::
cicio di clock. La CPU di Figura 5.13 estata ottenuta partendo da CPU1, .:-::' :., ,
il registro IR ,e la necessaria pe: tener questa modifica. Chiameremo ':,' :.,"
questa prototlpo CPUl...2F. 8, notillO 1seguentl puntl. -' ::':> t.::
La memorizzazione delPistruzione su IR avviene suI ronte di salita del clOck. ,.:,i l. '.,
Poiche estato assunto che i registri commutino sui fronti di discesa, in figura e: :,:', ,.'.
stato esplicitamente indicato il clock negate a IR (come al solita it clock a RF e .jt "',:""
PC esottinteso e non viene indicato), _'-: :,.. ,' ',',',\ ..
, ., 'i.:;_
Lo schema non riporta pili 1a memoriaj compaiono invece il bus degli indirizzi-- '.'6', "', ''.-i,',:'.
(BI) e il bus dei dati (BD)j relativamente a Quest'ultimo sana previsti i due ;',
comandi In e Out che abilitano il trasferimento in ingresso 0 in uscita alia CPU.. .<:';.:,:.""
, ', ... ', .' "
,"" .
II multiplexer che seleziona il data in ingresso a RF estato disegnato in prossiiniU: "A' ": ",
di RF stesso. , ,,,,-,t ,t, .' ',"
, ,,: '5 "',. .
I comandi MRead e In vengono sempre asseriti durante .ill, mentre durante 4
2
': :.<
vengono asseriti solo in presenza di LD, , , .:::} ",'
" ' 'i,,:> '
, "'01" ".
'. ncomando MWrite richiede un accorgimento per evitare false operazioni. Infatti;- :' ,
, ".
l'indirizzo alla memoria si rencle disponibile dopo 5 + 12 = 17 ns, mentre il dato' '); ,:;.; :,: .!
e gia. disponibile dopo 5 os. n comando di scrittura. in memoria cleve pervenire :,,}: ",: "
dopo che ambedue sono stabili. Per Questa motivo e necessario introdurre it .' J. ":: "".:::."
ritardo T > 12 sulla linea ST, in modo da compensare il tempo della ALU. Nella;; ,;.. "
discussione seguente assumeremo T = 13. .;:,"x;:" .
..'.-: ,:.'
" , "f.. . '
' , , .'
E istruttivo seguire la seguenza di eventi. I valori numerici riportati si riferiscono. :I' ;(::'
al tempo del cido di clock: ,.
T ... :.;,"
"II ':
0: BU) ronte eli discesa del clock PC viene aggiornato a puntare alia prossima \'" _._.
istruzionej il clock va basso e MRead viene asserito (risuita asserito anche In); ,,:;'f .
.. ";:;'" '.
30 : il fronte d.i salita del cJock viene usato per memorizzare in IR it dato presentato
clalla memoriaj dopo la memorizzazione in IR it contenuto dei campi del registro ",;.: .
si propagano a valle; "
. '" ,. :
35 :
77 : 1a memoria termina il suo eventuale delo;
82 : termina Peventuale fase di scrittura nei registri.
. 47: llALU termina it calcolo e produce un'uscita valida; sono asseriti segnali di ,.:'
zero/Segno;;".I'
,
48 : In caso di istruzione ST viene asserito MWritej

t
)
)
1
I
I
I
I
I
I
,
,

1:1:
CW
I

. !

I

,
.,
'i
44 I
f.,.
r
l
CPU 177
1
+
I

I
- _.
.,

<

'"
i
'"
= ..

0
r
1 I J 9

rl :1
WI '
, ,
"
>

0
"
,
I- .
'" . -
-.

>.
N
,:,;

..
, ,
,
<,
, ,



,
i l ) .,
Figura 5.12 CPU1: schema finale, dopo I'eliminazione del malfunzionamento sulPistru-
zione' ST. In alto a destra. viene riportata. la forma d'onda del clock; il primo semiperiodo
deve non essere inferiore a 47 ns.
,
"
"I:
,
.'It
"\ I',
, .

\" .
..
Capitola 5
la decodifica dell'istruzione ecompletataj gli ingressi alla ALU sono corretti. In
caso di istruzione LD sono asseriti MRead e In) in caso di istruzione ST easserito
il solo Out;
176

..
,

"',':.' ".
'
c. 'TJ;:l" ,: tr;,: ., '
,,", "."1"',0",,, "
, ,. , . , , ..
,.';;-'::.":'.;.,-- '------------------------------=-=-=--=-
'.-
t-- 1\'.) r) ''".';'.:. _
, ,... U:'"'i:."::"" :
:"',",
'':/-'''''','.-,
calcolato dalla ALU. i nostri numeri la del primo semiperiodo ealmena
30 ns. ,." ',: '.' "
In Figura5.13 viene riportato 10 schema di CPUl con memoria singola a ..:-::
cicio di clock. La CPU di Figura 5.13 estata ottenuta partendo da CPU1, .:-::' :., ,
il registro IR ,e la necessaria pe: tener questa modifica. Chiameremo ':,' :.,"
questa prototlpo CPUl...2F. 8, notillO 1seguentl puntl. -' ::':> t.::
La memorizzazione delPistruzione su IR avviene suI ronte di salita del clOck. ,.:,i l. '.,
Poiche estato assunto che i registri commutino sui fronti di discesa, in figura e: :,:', ,.'.
stato esplicitamente indicato il clock negate a IR (come al solita it clock a RF e .jt "',:""
PC esottinteso e non viene indicato), _'-: :,.. ,' ',',',\ ..
, ., 'i.:;_
Lo schema non riporta pili 1a memoriaj compaiono invece il bus degli indirizzi-- '.'6', "', ''.-i,',:'.
(BI) e il bus dei dati (BD)j relativamente a Quest'ultimo sana previsti i due ;',
comandi In e Out che abilitano il trasferimento in ingresso 0 in uscita alia CPU.. .<:';.:,:.""
, ', ... ', .' "
,"" .
II multiplexer che seleziona il data in ingresso a RF estato disegnato in prossiiniU: "A' ": ",
di RF stesso. , ,,,,-,t ,t, .' ',"
, ,,: '5 "',. .
I comandi MRead e In vengono sempre asseriti durante .ill, mentre durante 4
2
': :.<
vengono asseriti solo in presenza di LD, , , .:::} ",'
" ' 'i,,:> '
, "'01" ".
'. ncomando MWrite richiede un accorgimento per evitare false operazioni. Infatti;- :' ,
, ".
l'indirizzo alla memoria si rencle disponibile dopo 5 + 12 = 17 ns, mentre il dato' '); ,:;.; :,: .!
e gia. disponibile dopo 5 os. n comando di scrittura. in memoria cleve pervenire :,,}: ",: "
dopo che ambedue sono stabili. Per Questa motivo e necessario introdurre it .' J. ":: "".:::."
ritardo T > 12 sulla linea ST, in modo da compensare il tempo della ALU. Nella;; ,;.. "
discussione seguente assumeremo T = 13. .;:,"x;:" .
..'.-: ,:.'
" , "f.. . '
' , , .'
E istruttivo seguire la seguenza di eventi. I valori numerici riportati si riferiscono. :I' ;(::'
al tempo del cido di clock: ,.
T ... :.;,"
"II ':
0: BU) ronte eli discesa del clock PC viene aggiornato a puntare alia prossima \'" _._.
istruzionej il clock va basso e MRead viene asserito (risuita asserito anche In); ,,:;'f .
.. ";:;'" '.
30 : il fronte d.i salita del cJock viene usato per memorizzare in IR it dato presentato
clalla memoriaj dopo la memorizzazione in IR it contenuto dei campi del registro ",;.: .
si propagano a valle; "
. '"
,. :
35 :
77 : 1a memoria termina il suo eventuale delo;
82 : termina Peventuale fase di scrittura nei registri.
. 47: llALU termina it calcolo e produce un'uscita valida; sono asseriti segnali di ,.:'
zero/Segno;;".I'
,
48 : In caso di istruzione ST viene asserito MWritej

- Instruction Decode. E 10 stadio in cui Pistruzione viene decoclificata e


vengono generati i segnali di cornando utilizzati negli stach succeSsivi, per
effettuare Ie operazioni richieste dalle singole istruzioni.

IF - Instruction Fetch. E 10 stadia iniziale corrispondente al prelievo dell'istru-


zione il cui indirizzo si trova in PC.
EX - Execute. E 10 stadio in cui viene svolto Hlavoro principale richiesto dalla
specifica istruzione.
ID
n progetto della logica di controlla si riconduce all'individuazione dei passi di
cui sopra, ovvero all'individuazione degli stadi in cui scomporre la logica stess3,
ciascun stadia essendo responsabile delPesecuzione del passe corrispondente. La
scelta del numero di stadi ein larga parte iniluenzata dall'architettura e da consi-
derazioni di cenvenienza. Nel case specifico, anche in riferimento ad argomenti
che verranno iUustrati piu avanti, vengono individuati i seguenti 5 passi
14
:
L'esecuzione delPistruzione procede attraverso un certo numero di passi 0 fasi,
corrispondenti 3 impulsi di clock successivi, ovvero a successivi stati percorsi
dall'automa che realizza l'unita di cantrollo. Il percorso dell'autama nello spazio
degli stati dipende dalla specifica istruzione eseguita; 1a sequenza corrispondente
al prelievo e aHa decodifica dell'istruzione ecomune a tutte Ie istruzioni(Cfr. 2.3).
; ..
14Non ci sarebbe niente di strano se, per esempio, 10 stadio ID fesse conglobato nello stadio IF 0
se i due stadi ME e WB si riducessero a uno solo.

,...- I., "
,
"I '.,.
",.'. !"
., ,.
' ..
"", w'.
, ", '.
'''. . .,
.,
;' ..
..'':'( ,,,'
,'. I'
';r; j,'
". ,",
';< ".

....
,'I '0"
.-'" "'.'1
..... ,I.

.-
tlHoF .,


,'
""J: '.
------------- -=:La=-C.::.P:..U=-...:1:.:7.::.9 '" '
;.J.' \1' :,'. I'" , .. ,
,<', -,"" ,

"
-.
- " :,;. ",
._La CPU di Figura5.13 ad avere uno specifico per il calcolo
. .. del PC. E possibil: modificare sch,ema in da impiegare la AL1! effettuare
, ,.>, i ... : "l'incremento di 4 dl PC duran,te .11 semlpenodo. Purtroppo, pew, il
.. ; 'in questione no.n III epur sempre necessaria per 11 calcolo
"'''1'K :':. d lPindirizzo dl destmazlOne delle lstruZlOnl JE e JS.
.' e. Si osservi che se l'incremento di 4 di PC venisse effettuato durante L1
1
, la CPU
);m ;.:.' :- '; risultante non sarebbe piu compatibile can CPUl dal punta di vista del codice di
,.,;4t\ :.V \' , .macchina. Infatti, nel caso.di CPUI il contenuto del campo OFFSET delle istruzioni
,.. ,', di saIto condizionato contlene 10 scostamento tra la posizione di destinazione e il
,; ,,\,,::': .. PC dell'istruzione di saito, Se ora PC viene incrementato di 4 durante L1
11
affinche
;;' :;. ;'l'istruzione faccia saltare aUa stessa destinazione} il contenuto del campo OFFSET
.;;' ' .. cleve essere pari a1 precedente diminuito di 4 (si vedano gli Esercizi 5.9 e 5.10).
,..... i'!; ".' ..":.1 . ,"
:,7r.t ''';:.'::.:>
":; 1" p' "'. "."
,:j1 ..... . .\.
I' "" '.
::1il ,;,\5.7 Sviluppo di CPU2
': ", .:, '
'",' ,',
:'\.. '". Viene ora sviluppato un prototipo che esegue istruzioni in piu periodi di clock. Questa
volta si fa riferimento al modelio di Von Neuman, con memoria istruzioni e memoria
:,;,:.' .,.. ' . dati indistinte. La modalita di esecuzione multiciclo e quella piu naturale, e di essa
,'-:;.! "-::-",: '.' si e gia. parlato aHa pagina 48 e seguenti. I criteri generali per la costruzione del
',::.:)1 ':';;:':',' :" " :, prototipo sono) seguenti.
"I " '.' ..
'. "")1 .'

:iil ',: '.
'.Jl l
'''1 ,"
.:',' .
.. '
'.Ii! :":.
';;, "."
v ",
"'N' ,"
. 'd .". '"
,"" 'I' .
N, ".
.I ',' ,-

; .. '
" ." .
., ': ' .
", '1 J '
'0;
.:" . '
: 'l. "
:'-' ", ,
',J,.
:,;:\:.'
. .,
..'L
<':\.
:

I
.' .',,", ,
,.. ".' ", .
.,.;'" ','"
-

!
'"

! ,-<.. . '
Ie
,
1
-.1'
.J
I .
,
l
f,
- \
-

J
,-
,
ill t
.!l
,
=>
.
,
<i
.
,
<



& ="

t,
. ,
<

, ,
,

'"

,
i,=
i
.,
i


0
,
I .r'

0

- ,
I-


;
I

,

,
.. :<: -
,
.. . ';'

::: ..

II
'"
-
,
i

i.
,

c
'"

,
,
178 Capitolo 5
Figura 5.13 CPUL2F: schema. di CPUl a singolo clock con usa delle due fasi. II primo
semiperiodo ha durata pari aI tempo richiesto per la lettura dell'istruzione in memoria
(30 ns).
t
t
I
I
I
!
I
I
I
,I

, I
\
- Instruction Decode. E 10 stadio in cui Pistruzione viene decoclificata e
vengono generati i segnali di cornando utilizzati negli stach succeSsivi, per
effettuare Ie operazioni richieste dalle singole istruzioni.

IF - Instruction Fetch. E 10 stadia iniziale corrispondente al prelievo dell'istru-


zione il cui indirizzo si trova in PC.
EX - Execute. E 10 stadio in cui viene svolto Hlavoro principale richiesto dalla
specifica istruzione.
ID
n progetto della logica di controlla si riconduce all'individuazione dei passi di
cui sopra, ovvero all'individuazione degli stadi in cui scomporre la logica stess3,
ciascun stadia essendo responsabile delPesecuzione del passe corrispondente. La
scelta del numero di stadi ein larga parte iniluenzata dall'architettura e da consi-
derazioni di cenvenienza. Nel case specifico, anche in riferimento ad argomenti
che verranno iUustrati piu avanti, vengono individuati i seguenti 5 passi
14
:
L'esecuzione delPistruzione procede attraverso un certo numero di passi 0 fasi,
corrispondenti 3 impulsi di clock successivi, ovvero a successivi stati percorsi
dall'automa che realizza l'unita di cantrollo. Il percorso dell'autama nello spazio
degli stati dipende dalla specifica istruzione eseguita; 1a sequenza corrispondente
al prelievo e aHa decodifica dell'istruzione ecomune a tutte Ie istruzioni(Cfr. 2.3).
; ..
14Non ci sarebbe niente di strano se, per esempio, 10 stadio ID fesse conglobato nello stadio IF 0
se i due stadi ME e WB si riducessero a uno solo.

,...- I., "
,
"I '.,.
",.'. !"
., ,.
' ..
"", w'.
, ", '.
'''. . .,
.,
;' ..
..'':'( ,,,'
,'. I'
';r; j,'
". ,",
';< ".

....
,'I '0"
.-'" "'.'1
..... ,I.

.-
tlHoF .,


,'
""J: '.
------------- -=:La=-C.::.P:..U=-...:1:.:7.::.9 '" '
;.J.' \1' :,'. I'" , .. ,
,<', -,"" ,

"
-.
- " :,;. ",
._La CPU di Figura5.13 ad avere uno specifico per il calcolo
. .. del PC. E possibil: modificare sch,ema in da impiegare la AL1! effettuare
, ,.>, i ... : "l'incremento di 4 dl PC duran,te .11 semlpenodo. Purtroppo, pew, il
.. ; 'in questione no.n III epur sempre necessaria per 11 calcolo
"'''1'K :':. d lPindirizzo dl destmazlOne delle lstruZlOnl JE e JS.
.' e. Si osservi che se l'incremento di 4 di PC venisse effettuato durante L1
1
, la CPU
);m ;.:.' :- '; risultante non sarebbe piu compatibile can CPUl dal punta di vista del codice di
,.,;4t\ :.V \' , .macchina. Infatti, nel caso.di CPUI il contenuto del campo OFFSET delle istruzioni
,.. ,', di saIto condizionato contlene 10 scostamento tra la posizione di destinazione e il
,; ,,\,,::': .. PC dell'istruzione di saito, Se ora PC viene incrementato di 4 durante L1
11
affinche
;;' :;. ;'l'istruzione faccia saltare aUa stessa destinazione} il contenuto del campo OFFSET
.;;' ' .. cleve essere pari a1 precedente diminuito di 4 (si vedano gli Esercizi 5.9 e 5.10).
,..... i'!; ".' ..":.1 . ,"
:,7r.t ''';:.'::.:>
":; 1" p' "'. "."
,:j1 ..... . .\.
I' "" '.
::1il ,;,\5.7 Sviluppo di CPU2
': ", .:, '
'",' ,',
:'\.. '". Viene ora sviluppato un prototipo che esegue istruzioni in piu periodi di clock. Questa
volta si fa riferimento al modelio di Von Neuman, con memoria istruzioni e memoria
:,;,:.' .,.. ' . dati indistinte. La modalita di esecuzione multiciclo e quella piu naturale, e di essa
,'-:;.! "-::-",: '.' si e gia. parlato aHa pagina 48 e seguenti. I criteri generali per la costruzione del
',::.:)1 ':';;:':',' :" " :, prototipo sono) seguenti.
"I " '.' ..
'. "")1 .'

:iil ',: '.
'.Jl l
'''1 ,"
.:',' .
.. '
'.Ii! :":.
';;, "."
v ",
"'N' ,"
. 'd .". '"
,"" 'I' .
N, ".
.I ',' ,-

; .. '
" ." .
., ': ' .
", '1 J '
'0;
.:" . '
: 'l. "
:'-' ", ,
',J,.
:,;:\:.'
. .,
..'L
<':\.
:

I
.' .',,", ,
,.. ".' ", .
.,.;'" ','"
-

!
'"

! ,-<.. . '
Ie
,
1
-.1'
.J
I .
,
l
f,
- \
-

J
,-
,
ill t
.!l
,
=>
.
,
<i
.
,
<



& ="

t,
. ,
<

, ,
,

'"

,
i,=
i
.,
i


0
,
I .r'

0

- ,
I-


;
I

,

,
.. :<: -
,
.. . ';'

::: ..

II
'"
-
,
i

i.
,

c
'"

,
,
178 Capitolo 5
Figura 5.13 CPUL2F: schema. di CPUl a singolo clock con usa delle due fasi. II primo
semiperiodo ha durata pari aI tempo richiesto per la lettura dell'istruzione in memoria
(30 ns).
t
t
I
I
I
!
I
I
I
,I

, I
\
\
\
I
,
J
1
I
1
)
I
I

\
I
I
1
181
DI:STWrll..
La CPU
lJ'C'lfrlt..
"
IALUI
c
B
,
OPI.LU 'ColltrALU
:seo!!'
,
....
A
L
1 M
ALV
0 IR
4
B/
IRWrit.. ..
l.IR...d
OPAlU C
ontrALU
10-31 ' , SX4
0-0
cl.
8-10

IRIll
'"
A
RF
B
16Nota.re che in base a.Be nostre assunzioni si poteva anche anticipare I'indirizzo di memoria per le
istruzionj LO eST, Cib avrebbe richiesto un selettore sulla porta A della ALU. Si Doti inoltre che in
fase sarebbe gii possibile aggiornare PC nel case di JMP, concludendo I'esecuzione di questa
lstruzione, Per motivi espositivi, per ora ci asteniamo dall'intcoducre questi anticipi.
Figura 5.15 Stadia di decodifica delle istruzioni e del calcoto anticipato della destinazione
del salto condizianato. Ovviamente per effettuare la somma deve essere OPALU = ADD.
E necessario inoltre calcolare in questa fase Pindirizzo di destinazione del salto
condizionato
,
in quanto nella fase successiva 1a ALU viene impiegata per calcolare la
condizione di uguaglianza. Si tratta quindi di usare la ALU per sommare 10 scosta-
mento con il contenuto di PC e di memorizzare il risultato in un registro di appoggio,
che nomineremo DEST. In una fase successiva, quando sara stata calcolata la condi-
zione che determina il saito, il contenuto di DEST potra essere usate per aggiornare
PC
16
, In conclusione
1
la fase 10 svolge la seguente azione:
DEST+- PC + SCDST
essendo SCOST l'estensione a 32 bit del campo OFFSET moltiplicato per 4.
Lo schema dello stadio ID ein Figura5,15,
.' Figura 5.14 Stadio relativo al prelievo delle istruzioni e all'incremento di 4 del PC. Per
'effettuare la somma deve essere OPALU=ADD. Ovviamente iI registro PC sara anche
aggiornabile per effetto dei salti (la rete relativa verdI, aggiunta piu avanti),
"
,,'
' ....,
..',
.- I. '.-;
",,'"
/
,
,", ',",'
"I" , ..
"., "
".. ., '
"
I
"
r. ;,
"f
, ,.
,; .1,
",..'
, ,-: 1-. ,
"I:' '
'. .'
,," ..'
,
t
',,,
" ..

, ,
"

"I" "f ,; :",-


., .
':'.. 1"',,', '
, " ;"
,'.1, <,
' .. '
A differenza del caso della CPU operante in un cicIo di clock, questa volta accorre
maggiar contralla nell'abilitazione dei registri. Per esempio
,
nel caso di CPUl il
registro PC veniva comunque caricato aHa fine del periodo di clock con quanto
era presente ai sui ingressi
1S
, Nel caso di CPU2, PC viene rnodificato su uno
specifico clock; equindi da preveclere la logica che abilita il caricarnento in PC
solo sul clock dovuto.
<
")f:
..
""-"" II,;
"1'
, '.' ""''' .. '.' .
'. "-
. .' .
180 Capltolo 5 ...:: ;li?!::i '
:fI:,' .. ,--
1*\ ''0,/,". '.,' .'
.'f
ME - Merr:
ory
. In questa stadia viene letta 0 scritta la memoria se il codice di :.:):;i:,':-':::,. ,
ope:r;-azlOne 10 prevede. .' _
. ""i\' " 0 -
' "'';':" ,-
WB - Write Back. E 10 stadia in cui viene aggiornato il registro di destinazione: .,;:", :_._
sempre che I'istruzione 10 preveda. ... i;
, .., "" ,
,"">'", ::.",
...... ,'.".
;. --: "
Facendo riferimento ai due rnacrostati Fetch ed Execute di cui al Paragrafo2.3
1
Ie ',:
fasi di IF e In appartengono al macrostato Fetch, mentre Ie restanti appartengono ,..
al macrostato Execute. "
'..,:
" ,
Poiche presurnibilrnente Ie vade parli non saranno impiegate per tutti i periodi :.. ;
di clock, conviene ottimizzare 1'uso delle risorse in esse contenute, evitando ':,' __ '
duplicazioni che si sono rese necessarie nello sviluppo di CPl. In ' :', <.
1a ALU potra essere impiegata per i1 calco1o dell'indirizzo di destinazione dei . :?( '.'-:':'. ;
", '.
salti con<iizionati, come pure per incrementare di 4 i1 PC, Inoltre, poiche la ..
., .',.
1etturafscrittura di memoria e uno stadio distinto dal prelievo dell'i5truzione, /);, ,.>:,:.
non 5i rende necessario separare la memoria di programma da quella dati. ,::,j, : t:",
",' "",
" ",
',' '! : ,.', '
'," '
. ',"
'. . ,

,
) .
5.7.1 Fase di prelievo delle istruzioni, IF
n prelievo delPistruzione richiede 1a 1ettura della posizione di memoria it cui indirizzo
ein PC, 8i rencle necessario un registro di appoggio per memorizzare l'istruzione tetta
ai fini dell'esecuzione delle azioni richieste a,.i passi successivi. II registro in questione
eil registro IR.
Poiche in fase IF la ALU non verrebbe utilizzata, conviene approfittarne per ._: I.:.'
incrementare di 4 PC. In concIusione, la fase IF svolge Ie seguenti azioni:
IRf- M[PC];
PCf- PC+4.
Le precedenti considerazioni fanno pervenire aIlo schema di Figura5.14.
Questo stadio comprende essenzialmente il decodificatore del codice di istruzione ca-
ricato in IR nella fase precedente. Siccome il formato delle istruzioni consente di
individuare gli eventuali registri sorgente, la lora codifica viene presentata a RF,
rendendo subito disponibile il contenuto dei registri stessi.
5.7.2 Fase di decodifica delle istruzioni, ID
Ie convenzioni stabilite a pagina 28 del Paragrafo 1.5, Ie figure relative a CPUl
presupponevano che i segnali di abiUtazione degli ingressi ai registri fossero sempre asseriti.
\
\
I
,
J
1
I
1
)
I
I

\
I
I
1
181
DI:STWrll..
La CPU
lJ'C'lfrlt..
"
IALUI
c
B
,
OPI.LU 'ColltrALU
:seo!!'
,
....
A
L
1 M
ALV
0 IR
4
B/
IRWrit.. ..
l.IR...d
OPAlU C
ontrALU
10-31 ' , SX4
0-0
cl.
8-10

IRIll
'"
A
RF
B
16Nota.re che in base a.Be nostre assunzioni si poteva anche anticipare I'indirizzo di memoria per le
istruzionj LO eST, Cib avrebbe richiesto un selettore sulla porta A della ALU. Si Doti inoltre che in
fase sarebbe gii possibile aggiornare PC nel case di JMP, concludendo I'esecuzione di questa
lstruzione, Per motivi espositivi, per ora ci asteniamo dall'intcoducre questi anticipi.
Figura 5.15 Stadia di decodifica delle istruzioni e del calcoto anticipato della destinazione
del salto condizianato. Ovviamente per effettuare la somma deve essere OPALU = ADD.
E necessario inoltre calcolare in questa fase Pindirizzo di destinazione del salto
condizionato
,
in quanto nella fase successiva 1a ALU viene impiegata per calcolare la
condizione di uguaglianza. Si tratta quindi di usare la ALU per sommare 10 scosta-
mento con il contenuto di PC e di memorizzare il risultato in un registro di appoggio,
che nomineremo DEST. In una fase successiva, quando sara stata calcolata la condi-
zione che determina il saito, il contenuto di DEST potra essere usate per aggiornare
PC
16
, In conclusione
1
la fase 10 svolge la seguente azione:
DEST+- PC + SCDST
essendo SCOST l'estensione a 32 bit del campo OFFSET moltiplicato per 4.
Lo schema dello stadio ID ein Figura5,15,
.' Figura 5.14 Stadio relativo al prelievo delle istruzioni e all'incremento di 4 del PC. Per
'effettuare la somma deve essere OPALU=ADD. Ovviamente iI registro PC sara anche
aggiornabile per effetto dei salti (la rete relativa verdI, aggiunta piu avanti),
"
,,'
' ....,
..',
.- I. '.-;
",,'"
/
,
,", ',",'
"I" , ..
"., "
".. ., '
"
I
"
r. ;,
"f
, ,.
,; .1,
",..'
, ,-: 1-. ,
"I:' '
'. .'
,," ..'
,
t
',,,
" ..

, ,
"

"I" "f ,; :",-


., .
':'.. 1"',,', '
, " ;"
,'.1, <,
' .. '
A differenza del caso della CPU operante in un cicIo di clock, questa volta accorre
maggiar contralla nell'abilitazione dei registri. Per esempio
,
nel caso di CPUl il
registro PC veniva comunque caricato aHa fine del periodo di clock con quanto
era presente ai sui ingressi
1S
, Nel caso di CPU2, PC viene rnodificato su uno
specifico clock; equindi da preveclere la logica che abilita il caricarnento in PC
solo sul clock dovuto.
<
")f:
..
""-"" II,;
"1'
, '.' ""''' .. '.' .
'. "-
. .' .
180 Capltolo 5 ...:: ;li?!::i '
:fI:,' .. ,--
1*\ ''0,/,". '.,' .'
.'f
ME - Merr:
ory
. In questa stadia viene letta 0 scritta la memoria se il codice di :.:):;i:,':-':::,. ,
ope:r;-azlOne 10 prevede. .' _
. ""i\' " 0 -
' "'';':" ,-
WB - Write Back. E 10 stadia in cui viene aggiornato il registro di destinazione: .,;:", :_._
sempre che I'istruzione 10 preveda. ... i;
, .., "" ,
,"">'", ::.",
...... ,'.".
;. --: "
Facendo riferimento ai due rnacrostati Fetch ed Execute di cui al Paragrafo2.3
1
Ie ',:
fasi di IF e In appartengono al macrostato Fetch, mentre Ie restanti appartengono ,..
al macrostato Execute. "
'..,:
" ,
Poiche presurnibilrnente Ie vade parli non saranno impiegate per tutti i periodi :.. ;
di clock, conviene ottimizzare 1'uso delle risorse in esse contenute, evitando ':,' __ '
duplicazioni che si sono rese necessarie nello sviluppo di CPl. In ' :', <.
1a ALU potra essere impiegata per i1 calco1o dell'indirizzo di destinazione dei . :?( '.'-:':'. ;
", '.
salti con<iizionati, come pure per incrementare di 4 i1 PC, Inoltre, poiche la ..
., .',.
1etturafscrittura di memoria e uno stadio distinto dal prelievo dell'i5truzione, /);, ,.>:,:.
non 5i rende necessario separare la memoria di programma da quella dati. ,::,j, : t:",
",' "",
" ",
',' '! : ,.', '
'," '
. ',"
'. . ,

,
) .
5.7.1 Fase di prelievo delle istruzioni, IF
n prelievo delPistruzione richiede 1a 1ettura della posizione di memoria it cui indirizzo
ein PC, 8i rencle necessario un registro di appoggio per memorizzare l'istruzione tetta
ai fini dell'esecuzione delle azioni richieste a,.i passi successivi. II registro in questione
eil registro IR.
Poiche in fase IF la ALU non verrebbe utilizzata, conviene approfittarne per ._: I.:.'
incrementare di 4 PC. In concIusione, la fase IF svolge Ie seguenti azioni:
IRf- M[PC];
PCf- PC+4.
Le precedenti considerazioni fanno pervenire aIlo schema di Figura5.14.
Questo stadio comprende essenzialmente il decodificatore del codice di istruzione ca-
ricato in IR nella fase precedente. Siccome il formato delle istruzioni consente di
individuare gli eventuali registri sorgente, la lora codifica viene presentata a RF,
rendendo subito disponibile il contenuto dei registri stessi.
5.7.2 Fase di decodifica delle istruzioni, ID
Ie convenzioni stabilite a pagina 28 del Paragrafo 1.5, Ie figure relative a CPUl
presupponevano che i segnali di abiUtazione degli ingressi ai registri fossero sempre asseriti.
IITO<l
,

"'"
,
lI-jfj
..
RF
JJ.Uout
M
,
,
,
,

1
r
w
" 1="
'"
"--1"
0_10
..
.
ll-IS ",
,


RF
>.W.,,\
I-

,
M
,

,
""-3l
seo...
op>.w
r
'"
Stadio di memoria.
Fase di scrittura del registro di destinazione, WB



""
JJ.Uoul

""'
'co

..
RF
.J,
,
tR1fnh
Figura 5.18 Percorsi nello stadio WB a seconda che 81 tratti di operazioni aritmetiche (a
sinistra) 0 dell'operazione LD,
,
5.7.6 Ricomposizione
.,
',\ '
-' "
,:.1
I differenti stadi vengono ricomposti a formare 10 schema di Figura5.19, 8i noti che
" -. ''', nella schema e comparso un certo numero di selettori. Le espressioni logiche per
;,; " le selezione, come ?llre tutti i rimanenti segnali di controllo, vengono
;', i: esanllnate nel paragrafi seguentI.
" "
-": " .
" .

Ci, ' " .,


..
:,' ' ,
..
"f'
; ".',
'I' .
-0,,'''''': " ,c'
"," '. "
":,:: ",
.,
::;:5 '''':,:"
".',
.. ",
':'J?:
"."
'. :,I '"
_.,
-
"""....
,
,
RF

"m
'"
'"
'C. 0->
., -31

"
I If_3' 3CQln' I
Capitolo 5
0-0
lS2
5.7.3 Fase di esecuzione, EX
r;i'iirt);;" '.-
L CPU lS3
.. ' a
iiitli'i":" __-----------------------------='--------
::,':'-", '
-"1'"-''''' "
':.l.tit:"i .. , '
.., '."'"., ,-.
,..." .. ,.-, -
..',"; ,: "
,;
- to, ,,,,. ._
;J;E
<":"i _.
'.
11 codice di operazione decide 1'azione svolta in questa fase. Viene usata la ALU per Ie' ',',
operazioni aritmetiche) per il calcolo della condizione di JEj JS e per il calcolo ."':::: L,,;,.' . ,.
dirizzo di memoria delle istruzioni che a essa fanna riferimento. Essendo disponibile ':;;':: .
l'indirizzo di destinazione del saIto condizionato, se la condizione evera viene aggior_ )_,
nato PC. InoItre PC viene aggiornato anche per l'istruzione di salta incondizionato, .,:::.
In conclusione Ie azioni svolte sono: , ". '.
Istruzioni Aritmetiche: ALUoutt- A fALU B , ,i:;';: ..;'.'" Figura 5.17
Istruzioni LD eST: ALUoutt- A + SCaST "',;ii:' ,,,' ,,':' ;'.,
,'i< ". ..
Istruzione JE: ALUoutt- A - 8; if Zero then PCf- DEST "3: :.( . 7 5
Istruziane JS: ALUoutt-- A - 8; if Segno then PCt-- DESTfi; ":,' .fi.. . .
Istruzione JMP: PCt-- PCJMP .:) ." . I' t ale registra di destinazione" Per Ie istruzioni aritmellche 11
Le possibili alternative sono illustrate in Figura5.16. \j , , Viene a?glOrna.to alula ALU per la LD sul bus dei dati (Figura5.18).
' ' valore 51 trova III USCI a ,
"1' '"
" '. '
, ,,'! (.','
',,'. <
,
""::,31,',
Figura 5.16 Stadio di esecuzione, A sinistra in alto Ie istruzioni aritmetiche {OPALU :::
ALUj a destra in alto Ie istruzioni LD e ST (OPALU = ADD); a destra in basso l'istruzione
JMP; a sinistra in basso Ie istruzioni JE e JS (OPALU = SUB),

"
'"
'* II
:r!Cb;l.

f_'o
1= RF
11_"
"
I ...
i
,
,I
i
I
I,
I
I
i
I 1
,:,
"
5.7.7 Segnali di comando
Viene letta 0 sentta la memoria. La schema della stadia ein Figura5.17.
svolte sono:
Istruzione LD: DMemt- H[ALUout]
Istruziane ST: M[ALUout] t-- B.
!
I
5.7.4 Fase di

memorIa,
ME
Le azioni
,.
.. i '
,'.'
, ',r.
' ...
'
,,'
';,1, "
, (
.',. .
" L'
.-,1. 'J,'
';,1, ,"

',;"
Nello schema di Figura5.19 sono rimasti indefiniti i vari segnali di controllo che vi

compaiono. E compito delrunita di controllo che stiamo costruendo generare tali


segnali con l'opportuna temporizzazione. A tal fine convlene tener presente che l'unita
di cantralle eun automa a stati finiti. nrelative diagramma di stato ci aiuta a generare
i 5egnali can Ie opportune temporizzazioni: 5i tratta di costruire una macchina di
Moore, Ie cui uscite sono i segnali di controllo.
IITO<l
,

"'"
,
lI-jfj
..
RF
JJ.Uout
M
,
,
,
,

1
r
w
" 1="
'"
"--1"
0_10
..
.
ll-IS ",
,


RF
>.W.,,\
I-

,
M
,

,
""-3l
seo...
op>.w
r
'"
Stadio di memoria.
Fase di scrittura del registro di destinazione, WB



""
JJ.Uoul

""'
'co

..
RF
.J,
,
tR1fnh
Figura 5.18 Percorsi nello stadio WB a seconda che 81 tratti di operazioni aritmetiche (a
sinistra) 0 dell'operazione LD,
,
5.7.6 Ricomposizione
.,
',\ '
-' "
,:.1
I differenti stadi vengono ricomposti a formare 10 schema di Figura5.19, 8i noti che
" -. ''', nella schema e comparso un certo numero di selettori. Le espressioni logiche per
;,; " le selezione, come ?llre tutti i rimanenti segnali di controllo, vengono
;', i: esanllnate nel paragrafi seguentI.
" "
-": " .
" .

Ci, ' " .,


..
:,' ' ,
..
"f'
; ".',
'I' .
-0,,'''''': " ,c'
"," '. "
":,:: ",
.,
::;:5 '''':,:"
".',
.. ",
':'J?:
"."
'. :,I '"
_.,
-
"""....
,
,
RF

"m
'"
'"
'C. 0->
., -31

"
I If_3' 3CQln' I
Capitolo 5
0-0
lS2
5.7.3 Fase di esecuzione, EX
r;i'iirt);;" '.-
L CPU lS3
.. ' a
iiitli'i":" __-----------------------------='--------
::,':'-", '
-"1'"-''''' "
':.l.tit:"i .. , '
.., '."'"., ,-.
,..." .. ,.-, -
..',"; ,: "
,;
- to, ,,,,. ._
;J;E
<":"i _.
'.
11 codice di operazione decide 1'azione svolta in questa fase. Viene usata la ALU per Ie' ',',
operazioni aritmetiche) per il calcolo della condizione di JEj JS e per il calcolo ."':::: L,,;,.' . ,.
dirizzo di memoria delle istruzioni che a essa fanna riferimento. Essendo disponibile ':;;':: .
l'indirizzo di destinazione del saIto condizionato, se la condizione evera viene aggior_ )_,
nato PC. InoItre PC viene aggiornato anche per l'istruzione di salta incondizionato, .,:::.
In conclusione Ie azioni svolte sono: , ". '.
Istruzioni Aritmetiche: ALUoutt- A fALU B , ,i:;';: ..;'.'" Figura 5.17
Istruzioni LD eST: ALUoutt- A + SCaST "',;ii:' ,,,' ,,':' ;'.,
,'i< ". ..
Istruzione JE: ALUoutt- A - 8; if Zero then PCf- DEST "3: :.( . 7 5
Istruziane JS: ALUoutt-- A - 8; if Segno then PCt-- DESTfi; ":,' .fi.. . .
Istruzione JMP: PCt-- PCJMP .:) ." . I' t ale registra di destinazione" Per Ie istruzioni aritmellche 11
Le possibili alternative sono illustrate in Figura5.16. \j , , Viene a?glOrna.to alula ALU per la LD sul bus dei dati (Figura5.18).
' ' valore 51 trova III USCI a ,
"1' '"
" '. '
, ,,'! (.','
',,'. <
,
""::,31,',
Figura 5.16 Stadio di esecuzione, A sinistra in alto Ie istruzioni aritmetiche {OPALU :::
ALUj a destra in alto Ie istruzioni LD e ST (OPALU = ADD); a destra in basso l'istruzione
JMP; a sinistra in basso Ie istruzioni JE e JS (OPALU = SUB),

"
'"
'* II
:r!Cb;l.

f_'o
1= RF
11_"
"
I ...
i
,
,I
i
I
I,
I
I
i
I 1
,:,
"
5.7.7 Segnali di comando
Viene letta 0 sentta la memoria. La schema della stadia ein Figura5.17.
svolte sono:
Istruzione LD: DMemt- H[ALUout]
Istruziane ST: M[ALUout] t-- B.
!
I
5.7.4 Fase di

memorIa,
ME
Le azioni
,.
.. i '
,'.'
, ',r.
' ...
'
,,'
';,1, "
, (
.',. .
" L'
.-,1. 'J,'
';,1, ,"

',;"
Nello schema di Figura5.19 sono rimasti indefiniti i vari segnali di controllo che vi

compaiono. E compito delrunita di controllo che stiamo costruendo generare tali


segnali con l'opportuna temporizzazione. A tal fine convlene tener presente che l'unita
di cantralle eun automa a stati finiti. nrelative diagramma di stato ci aiuta a generare
i 5egnali can Ie opportune temporizzazioni: 5i tratta di costruire una macchina di
Moore, Ie cui uscite sono i segnali di controllo.
,
I
I
I
\
I
I
\
I
)
)
I
}
Avvio
per leggere 1a memoria;
per mettere il bus dei dati in ingresso;
per scrivere in memoria;
per mettere il bus dati in uscita;
per scrivere nel registro IR;
per scrivere nel registro di destinazione;
per scrivere in DEST;
per abilitare I'ingresso a PC;
per abilitare I'ingresso a PC;
.
,
/
. ,
Prelievo e decodifica
,
I,
,
1/
. ,

RHMem ARITM
JEIJS JMP
, , ,
/
MRead:
In:
MWrite:
Out:
IRWrite:
RWrite:
DESTWrite:
X..PC+4:
X..PCJE/JS:
-. a.saunzione ealquanto irrealistica e, nella pratica, potrebbe essere fonte di una e.strema
mefficlenza, in quanto iI periodo di clock risulta oecessariamente determinato dalla Case piu lunga
(presumlbilmente 1a fase IF 0 la fase ME). 'lUttavia conviene, almeno per il momento, che tutte Ie
fasi siano di pari durata. Nel seguito si illustrera come aggirare questa problema.
.".
Figura 5.20 Diagramrna di state aggregato delPunita di cantrollo eli CPU2. Si noti che
. tutte Ie istruzioni hanno in comune le fasi eli prelievo e decodi6ca e che Ie differenze si hanno
. solo in fase di esecuzione,
.. ,
,':, :1
....; jI, ,.
,',;. t ': .
", ,2;':1: .,;.::' ::,'
::'::r ,.Chiamerema TI, T2, T3, T4 e T5 i cinque periadi di clock corri:3pondenti aile 5
-'i :;'. fasi.' Gii stati dell'automa saranno numerati come i relativi impulsi di clock: gLi stati
'(ij' ? . ,., ._81 e 82 50no cornuni a tutte ie istruzioni
,
j rimanenti dipendono da! percorso seguito
,
, ';, (.., .'. come da Figura 5.20. Per convenienza
,
nell'analisi svolta di seguito, si chiamana IICo-
..''':' ,,:- .. mandi" i segnali di cantralla che hanno effetto solo quando sono asseriti e si chiamano
.. ,";. Uselettari" i segnali ai blocchi di selezione. Ci sono da specificare i seguenti comandi:
',.
, .
..
-

'"

>

0
,

,
- u
I

1\
r
J
<

,
I

,
,
>
..
,
I -:

.1S30

I

u

l,
I u
1
"
\
:
<i

<.J
u
5
,
...., l
1

.
<

,
'"
I
'"
,

,
I
0 :

I
III
...

<
I
u


,
x
x


i
I.
'-

,
, ,
,
0
,
, ,
,
N
. ,
.-

- , .

, ,
:!:
,

>

0:
- N
::>
,
2b.
Cl.
u
'"
'"
,
,

",jf/.:':


-
184 Capitola 5 La CPU 185
- ..
.... ....(I'il .' , .. .
-;....1;/..-1 ":('\',l" ..
....:ll ,'_ ,:
.. .. :. -_ II di stato e}n Fig.ura 5.20. nprimo macros.tato
'::/1' :';'-:.:'.>:.;, aila fase di e d:ll A esso
";:'t1 orrispondentl aIle 4 clasSl dllstruzlOUl. Tuttavla
l
per specificare 1segnah di contrallo
,.:.:"'.H diagramma Figura 5.2.0 ecli. poca piuttosto rife!irsi al diagramma
.' :."J" .-.di stato dettagliato. Dobblamo l!nmagmare che clascuna delle 5 faslIF, ill, EX, ME e
': ,i; :(:. ',-,'"::::WB occupi un periodo di c1ock
17
, per cui Ie istruzioni che richiedono 10 stadio di WB
..-: -' si: completeranno in 5 clock, anche se potrebbero concludersi prima, mentre alcune
.i'; '\.strilzioni (JE/JS e JMP) dureranno di meno. .
.' 'I' " '. - 1 , .. ,'. '.
, ' . .' 'I." .:': ,.-
,::,:' ",
.1-:17 .:' !,
'. .'
.c,'t: .. ' '.
.' .'" :. . -
.. '. .' .
:.... :'"
' ..,'
'. .. '. ..,
'. .
,,-. :,:;.:::::
, .,. .', '.' -; "
",IT " " ,
''','/p . '...
'';n :.; :
.il ." "
....
:1,-:'.'
,: ',i ....
, '.],'.
'. . .. ,
,'" " ,
"., .j.. ';.-
, ,.., , .. ,
,,',: ;"
'T""
':'),/ ,:; ,.': ;
,..1, ' -
r. '. ... '-
'.
1'1.:.,
-.
Figura 5.19 CPU2: ri5ultato della composizione delle differenti 5ezioni.
,
I
I
I
\
I
I
\
I
)
)
I
}
Avvio
per leggere 1a memoria;
per mettere il bus dei dati in ingresso;
per scrivere in memoria;
per mettere il bus dati in uscita;
per scrivere nel registro IR;
per scrivere nel registro di destinazione;
per scrivere in DEST;
per abilitare I'ingresso a PC;
per abilitare I'ingresso a PC;
.
,
/
. ,
Prelievo e decodifica
,
I,
,
1/
. ,

RHMem ARITM
JEIJS JMP
, , ,
/
MRead:
In:
MWrite:
Out:
IRWrite:
RWrite:
DESTWrite:
X..PC+4:
X..PCJE/JS:
-. a.saunzione ealquanto irrealistica e, nella pratica, potrebbe essere fonte di una e.strema
mefficlenza, in quanto iI periodo di clock risulta oecessariamente determinato dalla Case piu lunga
(presumlbilmente 1a fase IF 0 la fase ME). 'lUttavia conviene, almeno per il momento, che tutte Ie
fasi siano di pari durata. Nel seguito si illustrera come aggirare questa problema.
.".
Figura 5.20 Diagramrna di state aggregato delPunita di cantrollo eli CPU2. Si noti che
. tutte Ie istruzioni hanno in comune le fasi eli prelievo e decodi6ca e che Ie differenze si hanno
. solo in fase di esecuzione,
.. ,
,':, :1
....; jI, ,.
,',;. t ': .
", ,2;':1: .,;.::' ::,'
::'::r ,.Chiamerema TI, T2, T3, T4 e T5 i cinque periadi di clock corri:3pondenti aile 5
-'i :;'. fasi.' Gii stati dell'automa saranno numerati come i relativi impulsi di clock: gLi stati
'(ij' ? . ,., ._81 e 82 50no cornuni a tutte ie istruzioni
,
j rimanenti dipendono da! percorso seguito
,
, ';, (.., .'. come da Figura 5.20. Per convenienza
,
nell'analisi svolta di seguito, si chiamana IICo-
..''':' ,,:- .. mandi" i segnali di cantralla che hanno effetto solo quando sono asseriti e si chiamano
.. ,";. Uselettari" i segnali ai blocchi di selezione. Ci sono da specificare i seguenti comandi:
',.
, .
..
-

'"

>

0
,

,
- u
I

1\
r
J
<

,
I

,
,
>
..
,
I -:

.1S30

I

u

l,
I u
1
"
\
:
<i

<.J
u
5
,
...., l
1

.
<

,
'"
I
'"
,

,
I
0 :

I
III
...

<
I
u


,
x
x


i
I.
'-

,
, ,
,
0
,
, ,
,
N
. ,
.-

- , .

, ,
:!:
,

>

0:
- N
::>
,
2b.
Cl.
u
'"
'"
,
,

",jf/.:':


-
184 Capitola 5 La CPU 185
- ..
.... ....(I'il .' , .. .
-;....1;/..-1 ":('\',l" ..
....:ll ,'_ ,:
.. .. :. -_ II di stato e}n Fig.ura 5.20. nprimo macros.tato
'::/1' :';'-:.:'.>:.;, aila fase di e d:ll A esso
";:'t1 orrispondentl aIle 4 clasSl dllstruzlOUl. Tuttavla
l
per specificare 1segnah di contrallo
,.:.:"'.H diagramma Figura 5.2.0 ecli. poca piuttosto rife!irsi al diagramma
.' :."J" .-.di stato dettagliato. Dobblamo l!nmagmare che clascuna delle 5 faslIF, ill, EX, ME e
': ,i; :(:. ',-,'"::::WB occupi un periodo di c1ock
17
, per cui Ie istruzioni che richiedono 10 stadio di WB
..-: -' si: completeranno in 5 clock, anche se potrebbero concludersi prima, mentre alcune
.i'; '\.strilzioni (JE/JS e JMP) dureranno di meno. .
.' 'I' " '. - 1 , .. ,'. '.
, ' . .' 'I." .:': ,.-
,::,:' ",
.1-:17 .:' !,
'. .'
.c,'t: .. ' '.
.' .'" :. . -
.. '. .' .
:.... :'"
' ..,'
'. .. '. ..,
'. .
,,-. :,:;.:::::
, .,. .', '.' -; "
",IT " " ,
''','/p . '...
'';n :.; :
.il ." "
....
:1,-:'.'
,: ',i ....
, '.],'.
'. . .. ,
,'" " ,
"., .j.. ';.-
, ,.., , .. ,
,,',: ;"
'T""
':'),/ ,:; ,.': ;
,..1, ' -
r. '. ... '-
'.
1'1.:.,
-.
Figura 5.19 CPU2: ri5ultato della composizione delle differenti 5ezioni.
5.7.8 Stati comuni a tutte Ie istruzioni
Stato di prelievo Durante Tl (state 81) devono essere asseriti questi comandi:
MRead: per leggere la memoria;
In: per mettere BD in ingresso;
X..PC+4: per abilitare Pingresso a PC;
IRWrite: per memorizzare in IR l'istruzione letta.
Si Dati che a differenza del comando MRead, che esplica la sua azione con Ie modalita
. .
....::,'
,
MRoad
in
.
X_PC+4
JRWrite
.': .
INDsore=l
PCsore-O
SALU1-0
SALU2-0
OPALU-ADD
-
,
32
DESTIfrile
SALUI-O
.
SALU2-2
OPALU-ADD
~
l.D S1' AR1TM
JE/JS J>lP
,
1/ S3L
,
/
'!L- 33A 3 I... S3J
SALVI",,! SALUl-l
SALUI-I SALUI-l
X-PCJMP
SALU2",,-2 SALU2_2
SALU2_1 SALUa-l Pcsorg_2
OPALU=ADD OPALU-ADD
OPALU=ALU OPALU-SUB
X_pen/IS
S1'
PClIore-l

,
I ... 84'
'k::.. S4A
54S
,

SALVI-I SAWl-l
SALUl=l
SALU2.. Z SALU2-2
SALU2=1
OPALU"'ADD OPALV-ADD
OPALu=ALU
lNDlIori"'O lNDsore-O
..
Rdest"'l MWrite
.So
r
le"'1 Oui
WRead
in
~ 1./ S5L
,
... S5A
SALUI_l
SAW1-1
SALU2-2
SALU2=!

OPALU=ADD
OPAUI-ALU
INDsore"'O
Rdesl=O
Rdesl""l
Sorge-a
.Soree"'!
Rlrrite
),(Read
.
Ih
RWrile
.
"
,
1...-
....::,1...-
, ,
,
1/
Figura 5.21 Diagramma di stato dettagliato deU'unita. di cantralio. Si riportano solo i
:. comandi che risultano asseriti e i valori dei selettori che devono avere effetto. Non si riportano
i comandi che sana disasseriti e i selettori ininfluenti.
per abilitare }lingresso a PC.
Capitola 5
X.PCJMP:
Ci sono da specificaxe i seguenti selettori, tra cui ecompreso anche OPALU:
INDsorg: per selezionare la provenienza dell'indirizzo di memoria;
PCsorg: per selezionare la provenienza deJllingresso a PC; ,
SALUI: per selezionare la provenienza delJlingresso A di ALUj
SALU2: per selezionare la provewenza dell1ingresso B d.i ALU;
Rdest: per selezionare il registro di destinazionej
Sor,ge: DeT selezion;lrp ~ nroveoienza al registro di destinazione;

186
I
I
I
I
!
I
!
I
I
I
5.7.8 Stati comuni a tutte Ie istruzioni
Stato di prelievo Durante Tl (state 81) devono essere asseriti questi comandi:
MRead: per leggere la memoria;
In: per mettere BD in ingresso;
X..PC+4: per abilitare Pingresso a PC;
IRWrite: per memorizzare in IR l'istruzione letta.
Si Dati che a differenza del comando MRead, che esplica la sua azione con Ie modalita
. .
....::,'
,
MRoad
in
.
X_PC+4
JRWrite
.': .
INDsore=l
PCsore-O
SALU1-0
SALU2-0
OPALU-ADD
-
,
32
DESTIfrile
SALUI-O
.
SALU2-2
OPALU-ADD
~
l.D S1' AR1TM
JE/JS J>lP
,
1/ S3L
,
/
'!L- 33A 3 I... S3J
SALVI",,! SALUl-l
SALUI-I SALUI-l
X-PCJMP
SALU2",,-2 SALU2_2
SALU2_1 SALUa-l Pcsorg_2
OPALU=ADD OPALU-ADD
OPALU=ALU OPALU-SUB
X_pen/IS
S1'
PClIore-l

,
I ... 84'
'k::.. S4A
54S
,

SALVI-I SAWl-l
SALUl=l
SALU2.. Z SALU2-2
SALU2=1
OPALU"'ADD OPALV-ADD
OPALu=ALU
lNDlIori"'O lNDsore-O
..
Rdest"'l MWrite
.So
r
le"'1 Oui
WRead
in
~ 1./ S5L
,
... S5A
SALUI_l
SAW1-1
SALU2-2
SALU2=!

OPALU=ADD
OPAUI-ALU
INDsore"'O
Rdesl=O
Rdesl""l
Sorge-a
.Soree"'!
Rlrrite
),(Read
.
Ih
RWrile
.
"
,
1...-
....::,1...-
, ,
,
1/
Figura 5.21 Diagramma di stato dettagliato deU'unita. di cantralio. Si riportano solo i
:. comandi che risultano asseriti e i valori dei selettori che devono avere effetto. Non si riportano
i comandi che sana disasseriti e i selettori ininfluenti.
per abilitare }lingresso a PC.
Capitola 5
X.PCJMP:
Ci sono da specificaxe i seguenti selettori, tra cui ecompreso anche OPALU:
INDsorg: per selezionare la provenienza dell'indirizzo di memoria;
PCsorg: per selezionare la provenienza deJllingresso a PC; ,
SALUI: per selezionare la provenienza delJlingresso A di ALUj
SALU2: per selezionare la provewenza dell1ingresso B d.i ALU;
Rdest: per selezionare il registro di destinazionej
Sor,ge: DeT selezion;lrp ~ nroveoienza al registro di destinazione;

186
I
I
I
I
!
I
!
I
I
I
,
I
I
I
1
I
I
I
\
\
I
I
,Istruzioni aritmetiche Le istruzioni aritmetiche, terminando con la fase WB,
, richiedeno una fase di transite suI clock T4.
. In T3,(stato S3A), i selettori devono assumere questi valori (non si rende neces-
sanD che s}a'asserita,alcuna linea di comando):
'1 "
',f. ' ,
, ,
'" " " .

" .', ;
:,'
, ,.\
per leggere dalla memoria;
per mettere il bus dati in ingresso,
per selezionare l'uscita A di RF come ingresso A di ALUj
per selezionare SCOST come ingresso B di ALU;
per calcolare in anticipo l'indirizzo di memoria,
Capitolo 5
MRead
In
SALU1 =1
SALU2 =2
OPALU = ADD
SALU1 = 0
SALU2 = 2
OPALU = ADD
DESTWrite
18 Abbiamo infatti stabilito che Ie istruzioni che prevedano la fase di WE prendano cinque periodi
di clock,
I selettori devono assumere questi valori:
5.7.9 Stati dipendenti dal tipo di istruzione
Stato di decodifica
I selettori devono assumere questi valori:
li'n,,::' -.

_)"'l:"'"
:i.J' ....
_
-.rDli;'F .
;:: .. ,.:.-_-------------------------....::L:.:.:....:C:.:P-'U"---.:1:.:8:.:.9
_
..!i!;:Jt'".;;J; -. _

che sono .prop:ie dei . la memori,a, i riferiti registri hanno SALVI =1 mantenere selezionata l'uscita A di RF come A
dl ablhtare gli stesSI al cancamento del lora .mgress
l
a concluslOne del periodQ _. " dt ALU; . . . .
dl clock (Cfr: 1.5), , , ' /:>1 ',. SALU2 =2 per mantenere selezlOn.to SCOST come mgresso B d,ALU;
Durante Tl 1 seletton devono assumere questl valorI: :. OPALU :=:ADD p.er mantenere 3U ALUout l'mdmzzo della p051Z10ne dl memo-
,{,re ';;.' .. . ria'
'-'lt,t, .. :. ,.: '
INDsorg == 1 per trasmettere alta memoria l'indirizzD contenuto in PC; :: ','/'}:".; ::::"', ' INDsorg =0 per mantenere aHa memoria I'indirizzo calcolato da
PCsorg == 0 per da ALU: come a PCj >f{(':':':, :, ALU; . .
SALUI = 0 per seleZlonare 11 contenuto dl PC corne mgresso A dl ALD _ '{:.::;'" \." . Rdest =1 per scnvere nel Rsd;
SALU2 == 0 per come B di ALUj , . Sorge =1 per selezionare Ia provenienza da memoria.
OPALU =ADD per selezlOnare II comando dl somma alla ALU, j .. .. .,
restano assentl gh stessl comandl e selettotl che 10 erano lD T4, m pm SI
'.li: agaiunge il comando:
""., o
Durante T2 (stato S2) cleve essere asserito il soto comando' '<+ J.. ..:::::, " . . I' t d' d ' ,
. . RWrite per scnvere ne regis ro 1 estmazlOne.
per memorizzare in DEST l'indirizzo di destinazione "'
tuale JE/JS
' .::il! "!,,,,,, n, ::,' , "
J "-t
_..
, '...
....>\ '>C ',' '" 'c
.. ,<".
'",'.. .
.,;, ....... ':,"':\'1,":"':,.<,'- ..
"".'- ,,', .. ",
per il contenuto di. PC come A di ALD;: '/:tl
per selezlOnare SCOST come mgresso B dl ALU; _, ..
per calcolare in anticipo l'indirizzo di destinazione dell1even_ .'
t uale JE/ JS. , .''; ,,.}\;..,: .: .".
: c(i( :. ,
':\1;' ST L'istruzione ST si completa in T4 (stato 845) non ricbiedendo la fase
In terzo stato eidentico a queUo di LD. Tuttavia, si econvenuto
, : 186) dl assenre su T3:
Gli 'stah successivi a 82 vengono esaminati in riferimento aile differenti istruzioni: Out per in anticipd il bus in uscita e presentare alia
"'k1 memona il contenuto del registro 8Orgente;
, INDsorg =0 per trasmettere in anticipo alia memoria l'indirizzo calcolato
Istruzione LD Durante T3 (stato 83L) i selettori devono assumere i valori di da ALU.
seguito riportati -(non si rende necessario che sia asserita alcuna linea di comando): . T4 devono essere asseriti questi comandi:
'. .f'll ,t. "" 'j
,. , " "" f "
, :j:';:':' ':.. ';',. MWrite per scrivere in memoria;
{-. ::,;' ' . Out per mantenere it dato alia memoria.
'."", .'
:',d 1. selettori devono assumere questi valori;
-"",.'" ' .. ,','
Dopo T3, I'istruzione LD richiede due ulteriori cieli per completare l'esecuzione
I8
. In >q ),:" .. i:,';-,. '. SALVI =1 per mantenere selezienata l'uscita A di RF come ingresso A di
T4 (state 54L) devono essere invece asseriti,questi comandi: , ..t':.,:, ' :: ' , ALUj
,{:" " ;':' SALU2 =2 per mantenere selezionato SCOST come ingresso B di ALU;
,. OPALU :::ADD per calcolare l'indirizzo della posizione di memoria;
,,',,:,V.. :" INDsorg =0 per mantenere memoria I'indirizzo.
':', " . ' I ,_ " ... ' _
" <
.' , " ,
''!!.",
, " ,,',: ' ,
188
,
I
I
I
1
I
I
I
\
\
I
I
,Istruzioni aritmetiche Le istruzioni aritmetiche, terminando con la fase WB,
, richiedeno una fase di transite suI clock T4.
. In T3,(stato S3A), i selettori devono assumere questi valori (non si rende neces-
sanD che s}a'asserita,alcuna linea di comando):
'1 "
',f. ' ,
, ,
'" "
" .

"
.', ;
:,'
, ,.\
per leggere dalla memoria;
per mettere il bus dati in ingresso,
per selezionare l'uscita A di RF come ingresso A di ALUj
per selezionare SCOST come ingresso B di ALU;
per calcolare in anticipo l'indirizzo di memoria,
Capitolo 5
MRead
In
SALU1 =1
SALU2 =2
OPALU = ADD
SALU1 = 0
SALU2 = 2
OPALU = ADD
DESTWrite
18 Abbiamo infatti stabilito che Ie istruzioni che prevedano la fase di WE prendano cinque periodi
di clock,
I selettori devono assumere questi valori:
5.7.9 Stati dipendenti dal tipo di istruzione
Stato di decodifica
I selettori devono assumere questi valori:
li'n,,::' -.

_)"'l:"'"
:i.J' ....
_
-.rDli;'F .
;:: .. ,.:.-_-------------------------....::L:.:.:....:C:.:P-'U"---.:1:.:8:.:.9
_
..!i!;:Jt'".;;J; -. _

che sono .prop:ie dei . la memori,a, i riferiti registri hanno SALVI =1 mantenere selezionata l'uscita A di RF come A
dl ablhtare gli stesSI al cancamento del lora .mgress
l
a concluslOne del periodQ _. " dt ALU; . . . .
dl clock (Cfr: 1.5), , , ' /:>1 ',. SALU2 =2 per mantenere selezlOn.to SCOST come mgresso B d,ALU;
Durante Tl 1 seletton devono assumere questl valorI: :. OPALU :=:ADD p.er mantenere 3U ALUout l'mdmzzo della p051Z10ne dl memo-
,{,re ';;.' .. . ria'
'-'lt,t, .. :. ,.: '
INDsorg == 1 per trasmettere alta memoria l'indirizzD contenuto in PC; :: ','/'}:".; ::::"', ' INDsorg =0 per mantenere aHa memoria I'indirizzo calcolato da
PCsorg == 0 per da ALU: come a PCj >f{(':':':, :, ALU; . .
SALUI = 0 per seleZlonare 11 contenuto dl PC corne mgresso A dl ALD _ '{:.::;'" \." . Rdest =1 per scnvere nel Rsd;
SALU2 == 0 per come B di ALUj , . Sorge =1 per selezionare Ia provenienza da memoria.
OPALU =ADD per selezlOnare II comando dl somma alla ALU, j .. .. .,
restano assentl gh stessl comandl e selettotl che 10 erano lD T4, m pm SI
'.li: agaiunge il comando:
""., o
Durante T2 (stato S2) cleve essere asserito il soto comando' '<+ J.. ..:::::, " . . I' t d' d ' ,
. . RWrite per scnvere ne regis ro 1 estmazlOne.
per memorizzare in DEST l'indirizzo di destinazione "'
tuale JE/JS
' .::il! "!,,,,,, n, ::,' , "
J "-t
_..
, '...
....>\ '>C ',' '" 'c
.. ,<".
'",'.. .
.,;, ....... ':,"':\'1,":"':,.<,'- ..
"".'- ,,', .. ",
per il contenuto di. PC come A di ALD;: '/:tl
per selezlOnare SCOST come mgresso B dl ALU; _, ..
per calcolare in anticipo l'indirizzo di destinazione dell1even_ .'
t uale JE/ JS. , .''; ,,.}\;..,: .: .".
: c(i( :. ,
':\1;' ST L'istruzione ST si completa in T4 (stato 845) non ricbiedendo la fase
In terzo stato eidentico a queUo di LD. Tuttavia, si econvenuto
, : 186) dl assenre su T3:
Gli 'stah successivi a 82 vengono esaminati in riferimento aile differenti istruzioni: Out per in anticipd il bus in uscita e presentare alia
"'k1 memona il contenuto del registro 8Orgente;
, INDsorg =0 per trasmettere in anticipo alia memoria l'indirizzo calcolato
Istruzione LD Durante T3 (stato 83L) i selettori devono assumere i valori di da ALU.
seguito riportati -(non si rende necessario che sia asserita alcuna linea di comando): . T4 devono essere asseriti questi comandi:
'. .f'll ,t. "" 'j
,. , " "" f "
, :j:';:':' ':.. ';',. MWrite per scrivere in memoria;
{-. ::,;' ' . Out per mantenere it dato alia memoria.
'."", .'
:',d 1. selettori devono assumere questi valori;
-"",.'" ' .. ,','
Dopo T3, I'istruzione LD richiede due ulteriori cieli per completare l'esecuzione
I8
. In >q ),:" .. i:,';-,. '. SALVI =1 per mantenere selezienata l'uscita A di RF come ingresso A di
T4 (state 54L) devono essere invece asseriti,questi comandi: , ..t':.,:, ' :: ' , ALUj
,{:" " ;':' SALU2 =2 per mantenere selezionato SCOST come ingresso B di ALU;
,. OPALU :::ADD per calcolare l'indirizzo della posizione di memoria;
,,',,:,V.. :" INDsorg =0 per mantenere memoria I'indirizzo.
':', " . ' I ,_ " ... ' _
" <
.' , " ,
''!!.",
, " ,,',: ' ,
188
ST
JE
JS
IMP
T5 T4 T3 T2 Tl
T5LD
" "
Clock "L..J1.
1 2 3 4 5
RSRT
I
.-<
0
:
- Sorge =
Selettori Nella scrivere Ie espressioni ottimizzate per i selettori si cleve tener conto
delle condizioni di indifferenza. Cominciamo dai selettori a due vie e prendiamo. per
esempio il selettore Sorge. Esso deve valere 0 nello stato S5A e I nella stato 85L
(Figura5.2I). Su TI, T2, T3 e T4 il valore di Sorge eindifferente, in quanta non e
asserito RWrite. 8u T5 deve essere asserito solo in presenza di LD. Dunque, basta
tenere Sorge a I solo su T5 in presenza di LD e a 0 in tutti gli altri casi. n risultato
e:
.,
.

..
,.

,
....
,
" ...
"
, ','
'.
,
per scrivere nel registro di destinazione.
per scrivere nel registro Rd;
per selezionare la provenienza cia ALU.
per abilitare I'ingresso a PC.
per selezionare PCJMP come ingresso a PC.
Capitolo 5
SALUI =1
SALU2 =1
OPALU =ALU
RWrite
Rdest =0
Sorge =0
XJ>CJE/JS
SALU2 =2
PCsorg =1
SALUI =1
OPALU = SUB
XJ>CJMP
PCsorg = 2
190
Restano confermati i tre selettori precedenti e si aggiungono:
In T4 (stato S4A) si mantiene tutto come in T3.
In T5 (stato S5A) deve essere asserito solo it comando:

''f, .
,


,.,

lmr#,":.. - .
Iii'" .I'.. '"..,.... '-
',1\ .. -
per selezionare Puscita A di RF come ingresso A di ALU' .. ...
per selezionare Puscita B .di RF. co.me ingresso B di ALU;'
per far efIettuare l'operazlOne nchlesta da! codice aritmetic "dm '
o. !/:tJ .
.. .4) "'l , .
:-:'h t::l;::','''' >:', .
. ,......-
,,"'
'''';.' .. '.r
lQ! ',jW ,). r" .
,. .,
"1 ',,'- .
t,l) ..:.:.,', . .
'" :
..'. ..:.,
I .'
. -'", t..; ',,:
., .
'<1 ",
-.' ' .
.', "Ih' ,",-:::,;>':". 5 22 Schema del contatore che decodifica 5 impulsi di clock e riparte da. Tl al
Figura. . .. ,
"'-; '-:'. . del conteggio 0 in presenza delle istruzioni che duranD meno di 5 penodl dl clock.
',', '''. .. term
me
" \' ,.': :", .'
."", "",. (.
,'/ .. ,." .
,'-, .
o 0 0 _ Comandi A titolo di esempio corne si l'espressione algebrica. di
IstruzlOm di saito condUlOnato Ricbiedono solo un cicIo per completare. In T3 omando. Consideriamo per esemplo II segnale RWnte. Esso deve essere assento
(stato 83ES) easserito il comando: per Ie e su T5 per I'istruzione LD. Ne consegue che
. . ,. . , :J/./.. :.Tespressione algebnca per RWnte e:
per 1mgresso a PC se e vera la condizlOne Zero su JE ",:\.'.: . _ _ .( RIT LD) = T5
o la condlzlOne Segno su JS. ',', ;., '..' ., . RWnte _ T5 ARITM + T5 LD _ T5 A M +
:j;' t:::,,:"i. ," in Quanta su T.5 ci solo ,LD e ARlTM.
I, ;,."':' ",:,', ..... : In concluslOne 1 comandl sono:
',:{.\ ", ", . _ .
per selezionare la destinazione del salta condizionato come in- _MRead = Tl + T4'LD + T5.LD
gresso a PC; :." ,:"c,,:;,'.' .. In = Tl + T4.LD + T5.LD
per mantenere selezionata I'uscita A di RF come ingresso A '):' '.' ,'._ MWrite :::; T4.8T
di ALU; "" .;::;'1:.<::' Out = (T3 'I- T4)BT
per mantenere selezlOnata I usclta B dl RF come mgresso B di ';{ -';,r
o
;:":,';:,,",.:... '_ IRWrite = Tl
A
LU , ," .. '.'.
i , '.: ,', ".: f ':, ," ' RWrite - T5
per confrontare i due registri. "',;;::::' .:(' " . DEST\tVrite :::; T2
'r ., "
,.: '.',,', ... XJ>C+4 = Tl
. .'::.'. .'.' .. XJ>CJE/JS = T3(JE Zero + JS Segno)
Pure questa nchlede solo T3 per completare. ":, ,,:.,:" ,. . _XJ>CJMP = T3.JMP
- ' .... ',. Per quanta si riferisce a OPALU, esso si esplicita nei tre possibili segnali di
, . contrallo della ALU, doe ADD, SUB, ALU (Cfr. Figura5.9).
, " .. ADD = Tl + T2 + T3'(LD+ST) + T4(LD+ST)+ T5LD , .
. - SUB = T3(JE + JS)
',' - ALU = (T3 + T4 + T5)ARITM
I selettori devono assumere questi valori:
Istruzione di salto incondizionato
Deve essere asserito solo il comando:
nsolo selettore di e:
5.8 Espressioni logiche per comandi e selettori
Gli argomenti sopra svolti ci consentoDO di dare forma aIgebrica a tutte le linee di
contrello. Dobbiamo ipotizzare che la macchina sia dotata di un contatore da 1 a 5 e
che i segnali TI, T2, T3, T4 e T5 siano asseriti in corrispondenza dell'omonimo clock.
A tal fine esufficiente un contatore ad anello come quello di Figura 5.22.
j
ST
JE
JS
IMP
T5 T4 T3 T2 Tl
T5LD
" "
Clock "L..J1.
1 2 3 4 5
RSRT
I
.-<
0
:
- Sorge =
Selettori Nella scrivere Ie espressioni ottimizzate per i selettori si cleve tener conto
delle condizioni di indifferenza. Cominciamo dai selettori a due vie e prendiamo. per
esempio il selettore Sorge. Esso deve valere 0 nello stato S5A e I nella stato 85L
(Figura5.2I). Su TI, T2, T3 e T4 il valore di Sorge eindifferente, in quanta non e
asserito RWrite. 8u T5 deve essere asserito solo in presenza di LD. Dunque, basta
tenere Sorge a I solo su T5 in presenza di LD e a 0 in tutti gli altri casi. n risultato
e:
.,
.

..
,.

,
....
,
" ...
"
, ','
'.
,
per scrivere nel registro di destinazione.
per scrivere nel registro Rd;
per selezionare la provenienza cia ALU.
per abilitare I'ingresso a PC.
per selezionare PCJMP come ingresso a PC.
Capitolo 5
SALUI =1
SALU2 =1
OPALU =ALU
RWrite
Rdest =0
Sorge =0
XJ>CJE/JS
SALU2 =2
PCsorg =1
SALUI =1
OPALU = SUB
XJ>CJMP
PCsorg = 2
190
Restano confermati i tre selettori precedenti e si aggiungono:
In T4 (stato S4A) si mantiene tutto come in T3.
In T5 (stato S5A) deve essere asserito solo it comando:

''f, .
,


,.,

lmr#,":.. - .
Iii'" .I'.. '"..,.... '-
',1\ .. -
per selezionare Puscita A di RF come ingresso A di ALU' .. ...
per selezionare Puscita B .di RF. co.me ingresso B di ALU;'
per far efIettuare l'operazlOne nchlesta da! codice aritmetic "dm '
o. !/:tJ .
.. .4) "'l , .
:-:'h t::l;::','''' >:', .
. ,......-
,,"'
'''';.' .. '.r
lQ! ',jW ,). r" .
,. .,
"1 ',,'- .
t,l) ..:.:.,', . .
'" :
..'. ..:.,
I .'
. -'", t..; ',,:
., .
'<1 ",
-.' ' .
.', "Ih' ,",-:::,;>':". 5 22 Schema del contatore che decodifica 5 impulsi di clock e riparte da. Tl al
Figura. . .. ,
"'-; '-:'. . del conteggio 0 in presenza delle istruzioni che duranD meno di 5 penodl dl clock.
',', '''. .. term
me
" \' ,.': :", .'
."", "",. (.
,'/ .. ,." .
,'-, .
o 0 0 _ Comandi A titolo di esempio corne si l'espressione algebrica. di
IstruzlOm di saito condUlOnato Ricbiedono solo un cicIo per completare. In T3 omando. Consideriamo per esemplo II segnale RWnte. Esso deve essere assento
(stato 83ES) easserito il comando: per Ie e su T5 per I'istruzione LD. Ne consegue che
. . ,. . , :J/./.. :.Tespressione algebnca per RWnte e:
per 1mgresso a PC se e vera la condizlOne Zero su JE ",:\.'.: . _ _ .( RIT LD) = T5
o la condlzlOne Segno su JS. ',', ;., '..' ., . RWnte _ T5 ARITM + T5 LD _ T5 A M +
:j;' t:::,,:"i. ," in Quanta su T.5 ci solo ,LD e ARlTM.
I, ;,."':' ",:,', ..... : In concluslOne 1 comandl sono:
',:{.\ ", ", . _ .
per selezionare la destinazione del salta condizionato come in- _MRead = Tl + T4'LD + T5.LD
gresso a PC; :." ,:"c,,:;,'.' .. In = Tl + T4.LD + T5.LD
per mantenere selezionata I'uscita A di RF come ingresso A '):' '.' ,'._ MWrite :::; T4.8T
di ALU; "" .;::;'1:.<::' Out = (T3 'I- T4)BT
per mantenere selezlOnata I usclta B dl RF come mgresso B di ';{ -';,r
o
;:":,';:,,",.:... '_ IRWrite = Tl
A
LU , ," .. '.'.
i , '.: ,', ".: f ':, ," ' RWrite - T5
per confrontare i due registri. "',;;::::' .:(' " . DEST\tVrite :::; T2
'r ., "
,.: '.',,', ... XJ>C+4 = Tl
. .'::.'. .'.' .. XJ>CJE/JS = T3(JE Zero + JS Segno)
Pure questa nchlede solo T3 per completare. ":, ,,:.,:" ,. . _XJ>CJMP = T3.JMP
- ' .... ',. Per quanta si riferisce a OPALU, esso si esplicita nei tre possibili segnali di
, . contrallo della ALU, doe ADD, SUB, ALU (Cfr. Figura5.9).
, " .. ADD = Tl + T2 + T3'(LD+ST) + T4(LD+ST)+ T5LD , .
. - SUB = T3(JE + JS)
',' - ALU = (T3 + T4 + T5)ARITM
I selettori devono assumere questi valori:
Istruzione di salto incondizionato
Deve essere asserito solo il comando:
nsolo selettore di e:
5.8 Espressioni logiche per comandi e selettori
Gli argomenti sopra svolti ci consentoDO di dare forma aIgebrica a tutte le linee di
contrello. Dobbiamo ipotizzare che la macchina sia dotata di un contatore da 1 a 5 e
che i segnali TI, T2, T3, T4 e T5 siano asseriti in corrispondenza dell'omonimo clock.
A tal fine esufficiente un contatore ad anello come quello di Figura 5.22.
j
'Tmono,X == T
mono
== L'Ti
5.9 Considerazioni suJIa realizzazione multicic10
)
)
,
I
I
I
I
I
I
I
I
I
1

19Le fasi 10, EX e WB richiedoDo di per ~ ~ m p i molto inferiori dene fa.'Ji IF e ME. In una macchina
reale, tra IO, EX e WB ci !lOno delle differenze. La fase ID richiederebbe iI minima del tempo, in
quanto rigua.rda solo alcune reti di decodilica (praticamente poco piu di due liveUi di porte). Nel
casa di CPU2 il tempo per ID ri.mlterebbe leggermente allungato per via. del calcolo di PCJE.
20Ci si potrebbe domandare percM il tempo di ALU esta.to preso di t2ns, mentre il tempo di
ID estato preso pari a 5n8, sebbene in ID 51 usi Ia. ALU per ca.lcolare l'indirizzo d.i destinazione
del saIto condizionato. Con questa scelta si vuole evidenziare il fa.tto che la ALU per ioteri svolge
Operazioni come 1a moltiplica.zione e la divisione, che di solito richiedono un tempo malte piu lunge
delle operazioni basilari di somma, sottrazione, AND, OR acc.
193
(5.6)
tmono == N . Tmono
,
,
,
,
.;.
.,
.' .
Tl
T5LD
T3(ARlTM + LD + ST + JE + JS) + T4 + T5
T
m
1.lltt,X = X . Tmulti > ImonQ,X = Tmono
Capitolo 5
192
Analogarnente, adottando la convenzione di
no valere 1, 5i ha:
- IND,org =
- Rdest =
- SALUI =
e anche gli stOOi piu veloci 5i devono uniformare a1 periodo di cIock.
Abbiamo vista che Ie ctifferenti istruzioni si completano in un ditrerente numero
di periodi di clock. Indicando COD OPII iI Dumero di clock richiesto dall'istruzione
I -rna, questa dura un tempo Tmulti,l =:: CPIr .Tm.ultt:. Se PI ela frazione di istruzioni
di tipo I che compaiono in un programma di N lstruzioni, i1 tempo richiesto per
I'esecuzione edata da:
tm"lti =N 'L,(PI . Tm"'ti,J) =N 'L,(PI . CPh . Tm"'ti)
mentre, nel caso di CPU monocic1o, 10 stesso tempo era data da:
'Tmono,X == T
mono
== L'Ti
5.9 Considerazioni suJIa realizzazione multicic10
)
)
,
I
I
I
I
I
I
I
I
I
1

19Le fasi 10, EX e WB richiedoDo di per ~ ~ m p i molto inferiori dene fa.'Ji IF e ME. In una macchina
reale, tra IO, EX e WB ci !lOno delle differenze. La fase ID richiederebbe iI minima del tempo, in
quanto rigua.rda solo alcune reti di decodilica (praticamente poco piu di due liveUi di porte). Nel
casa di CPU2 il tempo per ID ri.mlterebbe leggermente allungato per via. del calcolo di PCJE.
20Ci si potrebbe domandare percM il tempo di ALU esta.to preso di t2ns, mentre il tempo di
ID estato preso pari a 5n8, sebbene in ID 51 usi Ia. ALU per ca.lcolare l'indirizzo d.i destinazione
del saIto condizionato. Con questa scelta si vuole evidenziare il fa.tto che la ALU per ioteri svolge
Operazioni come 1a moltiplica.zione e la divisione, che di solito richiedono un tempo malte piu lunge
delle operazioni basilari di somma, sottrazione, AND, OR acc.
193
(5.6)
tmono == N . Tmono
,
,
,
,
.;.
.,
.' .
Tl
T5LD
T3(ARlTM + LD + ST + JE + JS) + T4 + T5
T
m
1.lltt,X = X . Tmulti > ImonQ,X = Tmono
Capitolo 5
192
Analogarnente, adottando la convenzione di
no valere 1, 5i ha:
- IND,org =
- Rdest =
- SALUI =
e anche gli stOOi piu veloci 5i devono uniformare a1 periodo di cIock.
Abbiamo vista che Ie ctifferenti istruzioni si completano in un ditrerente numero
di periodi di clock. Indicando COD OPII iI Dumero di clock richiesto dall'istruzione
I -rna, questa dura un tempo Tmulti,l =:: CPIr .Tm.ultt:. Se PI ela frazione di istruzioni
di tipo I che compaiono in un programma di N lstruzioni, i1 tempo richiesto per
I'esecuzione edata da:
tm"lti =N 'L,(PI . Tm"'ti,J) =N 'L,(PI . CPh . Tm"'ti)
mentre, nel caso di CPU monocic1o, 10 stesso tempo era data da:
195 La CPU
0,50 x 84 +0,20 x 108 +0,10 x 96 + 0,15 x 60 +0,05 x 60 = 85,2 85 ns.
21L'a.ttesa. per Ia. risposta. della. memoria era. stata. messa. in conto sin dal diagramma. di Figura.2.9.
22Per semplicita. continuiamo ad assumere che T includa sempre la tolleranza. per affiancare clock
,successivi.
Compattazione di fasi n nostro modello prevede 5 fasi. Un'ulteriore via per
ottenere miglioramenti neUe prestazioni consiste nell'eventuale accorpamento di fasi,
nell'intento di rendere pili equilibrati i relativi tempi .. Per esempio, con il clock di
12 ns del paragrafo precedente la fase di fetch spreca 6 ns, un tempo superiore a quello
previsto dalla decodifica dell'istruzione. L'accorpamento della fase di decodifica con la
fase di lettura dell'istruzione (a parte Ie possibili complicazioni circuitali), eliminando
una fase, rende pili spedita l'esecuzione.
In Tabella5.3 viene riportato it confronto tra i tempi medi di esecuzione di CPU1
, e delle tre versioni di CPU2.
A conclusione degli argomenti ora discussi, 3i osservi che l'ottimizzazione dei
tempi di esecuzione richiede che ii progettista valuti J'appJicazione delle tecniche pre-
cedenti, trovando 1a combinazione che produce il risultato migliore. A tale proposito
si vedano gli esercizi 5.14, 5.13, 5.15, 5.16.
'.- 'Per un programma che esegue N istruzioni, i1 tempo totale consumato 13 pari a Nx85,
'di poco superiore a quello della CPU monociclo.
..<" Rispetto alIa versione originale di CPU2 c'e stata una riduzione del 37% (100 x
.. (135 - 85)/135).

. '. ,
I
",
,
:, ..
, ,{ I ','
.
0,50 x 150 +0,20 x 150 +0,10 x 120 +0,15 x 90 + 0,05 x 90 = 135ns.
Istruzione JMP. L'aggiornamento di PC puo essere effettuato in T2.
Istruzione JEjJS. Non epossibile anticipare niente.
:: .'
Istruzioni aritmetiche. II calcolo puo essere effettuato in T2, conseguentemente "
epossibile portare in T3 Ia scrittura dei registri. ";':\1,
Istruzione ST. n calcolo dell'indirizzo puo essere effettuato in T2, conseguente- ,":;
mente l'istruzione puo scrivere in memoria in T3.
c) compattare fasi distinte e aggiustare opportunarnente i1 clock.
194 Capitola 5
Ci sono pili modi per migliorare CPU2:
- ,,",';i, .'.:':" "
'-\! '-''',.'','' .
; .;; ":;' .'
:;,:,::,' ",' Per un programma N istruzioni, il tempo totale consumato 13 pari a
Per un esegue N il totale impiegato epari a Nx 135 ns' ':':Jt: ;":. ': " Nx94,5 os, coo una nduzlOne del 30% (100 x (135 - 94,5)/135) rispetto al caso
Val.e pena dl osservare che. SI tratta dl un tempo superiore di circa il 65% d: ::' ' ,; ::precedente.
quello nchiesto dalla CPU monoClClo (100 x (135 _ 82)/82). 1.:;:
" ,''-,
5.9.1 Miglioramenti a CPU2
'Aumento della del preso co.me di il
;'" t ropo richiesto dalla memona, uelle fasl m CUI questa non Vlene mdinzzata, c e un
:-:d' , spreco di tempo. una macchina multiciclo e tutti gli sta-
""" ' ".',,,, di richiedano circa 10 stesso penodo, ill modo da non avere spreco di tempo. Per
, '", uanto attiene alla memoria, se si sceglie un periodo pili basso del tempo di accesso,
a) possibile Ie operazioni, in modo da ridurre i1 numero media ' un conveniente nUlliero cii cicli di attesa nelle operazioni che la
di clock per lstruzlOne; , ,'.' riguardano.
" 'c' ,Nel caso della nostra architettura, possiamo prendere T=12ns, pari a1 tempo di
b) un periodo. di.:lock pili introducendo eventualmente degli stati ALU22. Cic rende necessari due cicli di attesa neUe operazioni di 1ettura e scrittura
?i att.esa per Ie fasl pm lunghe, ill modo da ottimizzare il tempo media :c di memoria, per dar modo a questa di rispondere. Riferendosi all'esecuzione secondo
18truzlOne; :.': __ ,il diagramma di Figura5.21, la durata delle istruzioni diventa:
.. ' '- istruzioni aritmetiche: 12 x 3 + 12 + 12 + 12 + 12 = 84ns;
- istruzione LD: 12 x 3 + 12 + 12 + 12 x 3 + 12 = 108 ns.
_ ;'It,r1l7,jrmp. ST: 1? )( :l. 4- 1'J, -+- , 'J -+- ,? v q - ali. n,,:
Anticipazione delle operazioni Nel commentare il diagramma di Figura5.21 si ,:';'. ,.. ' .:,", - istruzioni JEjJS: 12 x 3 + 12 + 12 = 60ns;
e gia Ossrvato che per Ie operazioni T4 e.di pura perdita di ',:,; i ' - , ,- istruzione JMP: .. 12 x 3 + 12 + . . , '.
e. che la fase WE potrebbe essere ill T4 anzlche ill T5. La dlScussione seguente ':,,;. e',., ',' Can la precedente composlzlOne, la durata media di un IstruzlOne e parI a.
lllustra 1 possibili miglioramenti ottenibili anticipando tutto cia che S1 puo anticipare , -'
(lenno restando il periodo <Ii 30 ns).<. .,
0,50 x 90 +0,20 x 120 + 0,10 x 90 +0,15 x 90 +0,05 x 60 = 94,5 ns.
Come si vede tutte Ie istruzioni completano entro 4 periodi di clock: LD richiede
4 periodi; ST, JE/JS e Ie aritmetiche richiedono 3 periodi; JMP solo 2. Ovviamente
Ie anticipazioni sopra elencate modificano il diagramma degli stati e richiedono un '
contatore in base 4 per il clock. 8i hanno quindi queste durate:
- istruzioni aritmetiche: 90 ns;
- istruzione LD: 120nsj
- istruzione ST: 90 nSi
- istruzioni JE/JS: 90 ns;
- istruzione JMP: 60 ns.
Con 1a precedente composizione, 1a durata media di un'istruzione epari a:
Istruzione LD. n calcolo dell'indirizzo puo essere effettuato in T2, conseguente-
mente 1a lettura di memoria avviene in T3 e la scrittura dei registri in T4.
j
f
195 La CPU
0,50 x 84 +0,20 x 108 +0,10 x 96 + 0,15 x 60 +0,05 x 60 = 85,2 85 ns.
21L'a.ttesa. per Ia. risposta. della. memoria era. stata. messa. in conto sin dal diagramma. di Figura.2.9.
22Per semplicita. continuiamo ad assumere che T includa sempre la tolleranza. per affiancare clock
,successivi.
Compattazione di fasi n nostro modello prevede 5 fasi. Un'ulteriore via per
ottenere miglioramenti neUe prestazioni consiste nell'eventuale accorpamento di fasi,
nell'intento di rendere pili equilibrati i relativi tempi .. Per esempio, con il clock di
12 ns del paragrafo precedente la fase di fetch spreca 6 ns, un tempo superiore a quello
previsto dalla decodifica dell'istruzione. L'accorpamento della fase di decodifica con la
fase di lettura dell'istruzione (a parte Ie possibili complicazioni circuitali), eliminando
una fase, rende pili spedita l'esecuzione.
In Tabella5.3 viene riportato it confronto tra i tempi medi di esecuzione di CPU1
, e delle tre versioni di CPU2.
A conclusione degli argomenti ora discussi, 3i osservi che l'ottimizzazione dei
tempi di esecuzione richiede che ii progettista valuti J'appJicazione delle tecniche pre-
cedenti, trovando 1a combinazione che produce il risultato migliore. A tale proposito
si vedano gli esercizi 5.14, 5.13, 5.15, 5.16.
'.- 'Per un programma che esegue N istruzioni, i1 tempo totale consumato 13 pari a Nx85,
'di poco superiore a quello della CPU monociclo.
..<" Rispetto alIa versione originale di CPU2 c'e stata una riduzione del 37% (100 x
.. (135 - 85)/135).

. '. ,
I
",
,
:, ..
, ,{ I ','
.
0,50 x 150 +0,20 x 150 +0,10 x 120 +0,15 x 90 + 0,05 x 90 = 135ns.
Istruzione JMP. L'aggiornamento di PC puo essere effettuato in T2.
Istruzione JEjJS. Non epossibile anticipare niente.
:: .'
Istruzioni aritmetiche. II calcolo puo essere effettuato in T2, conseguentemente "
epossibile portare in T3 Ia scrittura dei registri. ";':\1,
Istruzione ST. n calcolo dell'indirizzo puo essere effettuato in T2, conseguente- ,":;
mente l'istruzione puo scrivere in memoria in T3.
c) compattare fasi distinte e aggiustare opportunarnente i1 clock.
194 Capitola 5
Ci sono pili modi per migliorare CPU2:
- ,,",';i, .'.:':" "
'-\! '-''',.'','' .
; .;; ":;' .'
:;,:,::,' ",' Per un programma N istruzioni, il tempo totale consumato 13 pari a
Per un esegue N il totale impiegato epari a Nx 135 ns' ':':Jt: ;":. ': " Nx94,5 os, coo una nduzlOne del 30% (100 x (135 - 94,5)/135) rispetto al caso
Val.e pena dl osservare che. SI tratta dl un tempo superiore di circa il 65% d: ::' ' ,; ::precedente.
quello nchiesto dalla CPU monoClClo (100 x (135 _ 82)/82). 1.:;:
" ,''-,
5.9.1 Miglioramenti a CPU2
'Aumento della del preso co.me di il
;'" t ropo richiesto dalla memona, uelle fasl m CUI questa non Vlene mdinzzata, c e un
:-:d' , spreco di tempo. una macchina multiciclo e tutti gli sta-
""" ' ".',,,, di richiedano circa 10 stesso penodo, ill modo da non avere spreco di tempo. Per
, '", uanto attiene alla memoria, se si sceglie un periodo pili basso del tempo di accesso,
a) possibile Ie operazioni, in modo da ridurre i1 numero media ' un conveniente nUlliero cii cicli di attesa nelle operazioni che la
di clock per lstruzlOne; , ,'.' riguardano.
" 'c' ,Nel caso della nostra architettura, possiamo prendere T=12ns, pari a1 tempo di
b) un periodo. di.:lock pili introducendo eventualmente degli stati ALU22. Cic rende necessari due cicli di attesa neUe operazioni di 1ettura e scrittura
?i att.esa per Ie fasl pm lunghe, ill modo da ottimizzare il tempo media :c di memoria, per dar modo a questa di rispondere. Riferendosi all'esecuzione secondo
18truzlOne; :.': __ ,il diagramma di Figura5.21, la durata delle istruzioni diventa:
.. ' '- istruzioni aritmetiche: 12 x 3 + 12 + 12 + 12 + 12 = 84ns;
- istruzione LD: 12 x 3 + 12 + 12 + 12 x 3 + 12 = 108 ns.
_ ;'It,r1l7,jrmp. ST: 1? )( :l. 4- 1'J, -+- , 'J -+- ,? v q - ali. n,,:
Anticipazione delle operazioni Nel commentare il diagramma di Figura5.21 si ,:';'. ,.. ' .:,", - istruzioni JEjJS: 12 x 3 + 12 + 12 = 60ns;
e gia Ossrvato che per Ie operazioni T4 e.di pura perdita di ',:,; i ' - , ,- istruzione JMP: .. 12 x 3 + 12 + . . , '.
e. che la fase WE potrebbe essere ill T4 anzlche ill T5. La dlScussione seguente ':,,;. e',., ',' Can la precedente composlzlOne, la durata media di un IstruzlOne e parI a.
lllustra 1 possibili miglioramenti ottenibili anticipando tutto cia che S1 puo anticipare , -'
(lenno restando il periodo <Ii 30 ns).<. .,
0,50 x 90 +0,20 x 120 + 0,10 x 90 +0,15 x 90 +0,05 x 60 = 94,5 ns.
Come si vede tutte Ie istruzioni completano entro 4 periodi di clock: LD richiede
4 periodi; ST, JE/JS e Ie aritmetiche richiedono 3 periodi; JMP solo 2. Ovviamente
Ie anticipazioni sopra elencate modificano il diagramma degli stati e richiedono un '
contatore in base 4 per il clock. 8i hanno quindi queste durate:
- istruzioni aritmetiche: 90 ns;
- istruzione LD: 120nsj
- istruzione ST: 90 nSi
- istruzioni JE/JS: 90 ns;
- istruzione JMP: 60 ns.
Con 1a precedente composizione, 1a durata media di un'istruzione epari a:
Istruzione LD. n calcolo dell'indirizzo puo essere effettuato in T2, conseguente-
mente 1a lettura di memoria avviene in T3 e la scrittura dei registri in T4.
j
f
)
I
]
I
)
La CPU 191
,

':'1 ;
"


Perc. GP 1 l;Pu2 I 'CJ5'U2,b
A
i't1 50 . 2 150 90 84
LD 20 82 150 120 108
JE(JS 15 82 90 90
60 .
ST 10 82 120 90 96

5 82
90 60 60
82 135 94,5 85,2
Capitolo 5
5.10 Le interruzioni
. verificano in modo sincrono rispetto all'esecuzione del programma, anche se
51 n sana predicibili in quanta dipendono claUo stato della macchina at momento
nO d' ,. t .
',,' dell'esecuzione 1 un IS rUZlOne.
," '" ..
. {" 3 Trappole (traps): sana, generate da apposite istruzioni presenti.
. programma (per e5empl?, INT del 8086
di questa tipo). Esse 51 venficano In smerono e sana
.,' all'esecuzione del programma. In pratlca Ie trappole sana del tlPI partlcolan
. . . . . " :'.. di istruzioni di saito che hanno I'effetto di portare la macchina in opportune
Tabella 5.3 Confronto tra 1 tempI rnedi per (TMI) tra i vari modelli svilup " d lita di funzionamento.
La colo0D:3 da. la percentuaJe delle differenti categorie di istruzione. La col p It ." mO a
CPU2...a :lfensce a CPl..!2 can lao colonna CPU2_b si ';; ::,.. ' _ ,c: Nel seguito adotteremo una terminologia per quanto possibile coerente con la
CPU2 mlghorata con la dlmmuzlOoe della durata del clock. e a J' precedente cla.ss.ific.azione, anche quand? e la di
<;) ',:"', ambigue, si fara ncorso genenco ?J mter:uzlOne, ,Chlameremo SIstema
,.::,.'; ,"."di interruzione la parte dl loglca della rnacchma dedLcata a nlevare e a trattare Ie
., . .
'. , interruzlom.
--oJ
,..
196
I
j
\
J
\
I
I
230vviamente non eil caso della nostra architettura di riferimento.
Prima di passare alIa routine di servizio deU'interruzione deve essere salvato 10
stato di macchina, in modo che, quando la routine termina, tutto riprenda come
se niente fosse accaduto.
Le maggiori complicazioni derivano daHe interruzioni 'esterne, rna anche gli altri
tipi di interruzione pongono problemi eli non facite soluzione. L'esempio tipico eun'ec-
cezione che si manifesta in un sistema a memoria virtuale per mancanza dell'infor-
mazione in memoria centrale. Puo accadere che un'istruzione occupi piu posizioni
23
,
a cavallo tra due successive pagine, e che nel fare il fetch della porzione di istruzione
situata all'inizio della pagina successiva si determini un page fault: 10 stato di macchi-
na cleve essere salvato e nstruzione deve essere rieseguita quando la pagina mancante
1','
' ..'
'1:
.;:'
,
"
. )1
-.
' .
..
L Interruzioni esterne (external interrupt 0 device interrupt): non sono causate da '. -'
alcuna istruzione del programma in esecuzione rna sono generate dall'esterno. ,
Esse hanno 130 caratteristica di verificarsi in modo del tutto asincrono rispetto ",
all'esecuzione del programma. Le interruzioni esterne pili comuni sono quelle :)
usate per gestire Ie operazioni di I/O (CIr. Capitolo 4),
2. Eccezioni (exception conditions): causate da situazioni anomale rilevate
durante l'esecuzione del programma, Esempi di eccezione sono: il tentativo di :::
esecuzione di un codice operativo non permesso, 1'overflow in un'operazione arit-
metica, il fallimento di un'accesso aHa memoria virtuale (page fault), etc ... Esse.
Fondamentalmente Ie interruzioni possono essere raggruppate in tre classi.
5.10.1 Classificazione
Le interruzioni sono state introdotte 301 Capitolo 4, in riferimento 301 sottosistema di",:.;;;f(:, "
1(0. Nella parte che segue, l'argomento viene trattato nei ,uoi aspetti generali, allo 'Z:" 5.10.2 I problemi per il trattamento delle interruzioni
,copo dl defiOJIe la relatlva loglca dl CPU. '.. :: .
Un.'interruzione eun qualsiasi e.vento che, pur non. essendo. un saIto 0 una ;.:, -",.,' :.. n' di interruzione edi norma 130 parte piu intricata dell'architettura. Ecco gli
matafntorno cia procedura, altera 11 normale Busso dl eseCUZlOne del programma "','. ' l' d 11 estl'one
. d all CPU d' bb d " ,., '.' '., aspettl essenz," I e a qu '
Imponen 0 a 1 a an onare momentaneamente l'esecuzlone del progr
a
m.,.I: '.
rna corrente, per passare a eseguire un altro programma dipendente dalla natura '::.:: ',,: . Le interruzioni esterne si manifestano in modo asincrono rispetto all'esecuzione
dell'interruzione ([?] [HP93]). ,.), ::":" ' del programma. L'evento viene rilevato esaminando 10 stato di una 0 piu li-
. La terminologia cbe riguarda Ie interruzioni emolto confusa e 10 stesso termine :;';'", ,f nee provenienti dal mondo esterno (Ie richieste di interruzione). Le eccezioni si
Vlene usato con significati diversi. Tanto per fare qualche esempio, nella terminologia "',:;, manifestano durante l'esecuzione del programma e vengono rilevate osservando
della famiglia IBM 8/360 si usa il termine interruzione (nella forma lessicale di inter- <: . il delle condiziOni che sono lora associate. Per Ie trappole non c'e il
ruption in luogo della piu convenzionale interrupt), in seconda istanza viene usato iJ . ;:, ,J' ' problema del rilevamento, rna resta anche per esse il vincolo di produrre effetti
termine ecceziane per denotare alcuni tipi di interruzione; nei documenti Intel si tende ::'.,( ';';'c'" ,',' come gli altri tipi di interruzione.
a usare il generico tennine interiuzione, anche se, col passare del tempo, ediventato ,\ ".:" . . . . .
sempre piu frequente I'uso di eccezione e talvolta anche di trappoIa; la Motorola ela ," ,:':, ',", ' fhsogna stabilue, un modo per passare programma ill
pili coerente: chiama tutto eccezione. . , , ne al programma che tratta 1mterrUZlOne (gestare dell illterruZlOne -
", handler - 0 piu semplicemente routine di servizio dell' interruzione, ovvero routme
, " '; di interruzione),

)
I
]
I
)
La CPU 191
,

':'1 ;
"


Perc. GP 1 l;Pu2 I 'CJ5'U2,b
A
i't1 50 . 2 150 90 84
LD 20 82 150 120 108
JE(JS 15
82
90 90
60 .
ST 10 82
120
90 96

5 82
90 60 60
82 135
94,5 85,2
Capitolo 5
5.10 Le interruzioni
. verificano in modo sincrono rispetto all'esecuzione del programma, anche se
51 n sana predicibili in quanta dipendono claUo stato della macchina at momento
nO d' ,. t .
',,' dell'esecuzione 1 un IS rUZlOne.
," '" ..
. {" 3 Trappole (traps): sana, generate da apposite istruzioni presenti.
. programma (per e5empl?, INT del 8086
di questa tipo). Esse 51 venficano In smerono e sana
.,' all'esecuzione del programma. In pratlca Ie trappole sana del tlPI partlcolan
. . . . . " :'.. di istruzioni di saito che hanno I'effetto di portare la macchina in opportune
Tabella 5.3 Confronto tra 1 tempI rnedi per (TMI) tra i vari modelli svilup " d lita di funzionamento.
La colo0D:3 da. la percentuaJe delle differenti categorie di istruzione. La col p It ." mO a
CPU2...a :lfensce a CPl..!2 can lao colonna CPU2_b si ';; ::,.. ' _ ,c: Nel seguito adotteremo una terminologia per quanto possibile coerente con la
CPU2 mlghorata con la dlmmuzlOoe della durata del clock. e a J' precedente cla.ss.ific.azione, anche quand? e la di
<;) ',:"', ambigue, si fara ncorso genenco ?J mter:uzlOne, ,Chlameremo SIstema
,.::,.'; ,"."di interruzione la parte dl loglca della rnacchma dedLcata a nlevare e a trattare Ie
., . .
'. , interruzlom.
--oJ
,..
196
I
j
\
J
\
I
I
230vviamente non eil caso della nostra architettura di riferimento.
Prima di passare alIa routine di servizio deU'interruzione deve essere salvato 10
stato di macchina, in modo che, quando la routine termina, tutto riprenda come
se niente fosse accaduto.
Le maggiori complicazioni derivano daHe interruzioni 'esterne, rna anche gli altri
tipi di interruzione pongono problemi eli non facite soluzione. L'esempio tipico eun'ec-
cezione che si manifesta in un sistema a memoria virtuale per mancanza dell'infor-
mazione in memoria centrale. Puo accadere che un'istruzione occupi piu posizioni
23
,
a cavallo tra due successive pagine, e che nel fare il fetch della porzione di istruzione
situata all'inizio della pagina successiva si determini un page fault: 10 stato di macchi-
na cleve essere salvato e nstruzione deve essere rieseguita quando la pagina mancante
1','
' ..'
'1:
.;:'
,
"
. )1
-.
' .
..
L Interruzioni esterne (external interrupt 0 device interrupt): non sono causate da '. -'
alcuna istruzione del programma in esecuzione rna sono generate dall'esterno. ,
Esse hanno 130 caratteristica di verificarsi in modo del tutto asincrono rispetto ",
all'esecuzione del programma. Le interruzioni esterne pili comuni sono quelle :)
usate per gestire Ie operazioni di I/O (CIr. Capitolo 4),
2. Eccezioni (exception conditions): causate da situazioni anomale rilevate
durante l'esecuzione del programma, Esempi di eccezione sono: il tentativo di :::
esecuzione di un codice operativo non permesso, 1'overflow in un'operazione arit-
metica, il fallimento di un'accesso aHa memoria virtuale (page fault), etc ... Esse.
Fondamentalmente Ie interruzioni possono essere raggruppate in tre classi.
5.10.1 Classificazione
Le interruzioni sono state introdotte 301 Capitolo 4, in riferimento 301 sottosistema di",:.;;;f(:, "
1(0. Nella parte che segue, l'argomento viene trattato nei ,uoi aspetti generali, allo 'Z:" 5.10.2 I problemi per il trattamento delle interruzioni
,copo dl defiOJIe la relatlva loglca dl CPU. '.. :: .
Un.'interruzione eun qualsiasi e.vento che, pur non. essendo. un saIto 0 una ;.:, -",.,' :.. n' di interruzione edi norma 130 parte piu intricata dell'architettura. Ecco gli
matafntorno cia procedura, altera 11 normale Busso dl eseCUZlOne del programma "','. ' l' d 11 estl'one
. d all CPU d' bb d " ,., '.' '., aspettl essenz," I e a qu '
Imponen 0 a 1 a an onare momentaneamente l'esecuzlone del progr
a
m.,.I: '.
rna corrente, per passare a eseguire un altro programma dipendente dalla natura '::.:: ',,: . Le interruzioni esterne si manifestano in modo asincrono rispetto all'esecuzione
dell'interruzione ([?] [HP93]). ,.), ::":" ' del programma. L'evento viene rilevato esaminando 10 stato di una 0 piu li-
. La terminologia cbe riguarda Ie interruzioni emolto confusa e 10 stesso termine :;';'", ,f nee provenienti dal mondo esterno (Ie richieste di interruzione). Le eccezioni si
Vlene usato con significati diversi. Tanto per fare qualche esempio, nella terminologia "',:;, manifestano durante l'esecuzione del programma e vengono rilevate osservando
della famiglia IBM 8/360 si usa il termine interruzione (nella forma lessicale di inter- <: . il delle condiziOni che sono lora associate. Per Ie trappole non c'e il
ruption in luogo della piu convenzionale interrupt), in seconda istanza viene usato iJ . ;:, ,J' ' problema del rilevamento, rna resta anche per esse il vincolo di produrre effetti
termine ecceziane per denotare alcuni tipi di interruzione; nei documenti Intel si tende ::'.,( ';';'c'" ,',' come gli altri tipi di interruzione.
a usare il generico tennine interiuzione, anche se, col passare del tempo, ediventato ,\ ".:" . . . . .
sempre piu frequente I'uso di eccezione e talvolta anche di trappoIa; la Motorola ela ," ,:':, ',", ' fhsogna stabilue, un modo per passare programma ill
pili coerente: chiama tutto eccezione. . , , ne al programma che tratta 1mterrUZlOne (gestare dell illterruZlOne -
", handler - 0 piu semplicemente routine di servizio dell' interruzione, ovvero routme
, " '; di interruzione),

199
La CPU
Per rendere attuabile quanta detto al punto precedente, 1a CPU viene dotata
di un u1teriore registro (denominato SR per eopiare in esso il contenuto di PC
aU'atto dell'interruzione. Inoitre, viene anche aggiunto il registro XR, nel quale si
suppone sia permanentemente memorizzato l'indirizzo della routine di gestione
26
.
Al repertorio istruzioni della CPU viene aggiunta l'istruzione RFI
27
- Ritorno
daJl'interruzione, il cui effetto eeopiare il contenuto di SR in PC, in modo da far
riprendere it programma interrotto.
Si fa infine un'ulteriore ipotesi semplificativa: dal momento in cui Ia logica inizia
il servizio dell'interruzione fino al termine della routine di gestione, la linea INTR
eautomaticamente disasserita, in modo che l'interruzione non possa essere iterata
durante 1a routine. Vedremo pili avanti come db possa essere ottenuto.
26 Anch"e se la cosa non e di grande interesse, perche, nella pratica, l'indirizzo della routine di
.interruzione viene tenuto in memoria, tale registro dovrebbe essere reso programmabile, aggiungendo
una specifica istruzione al repertorio.
27n formato dell'istruzione RFI eanornalo rispetto ai tre indicati in FiguraS.l, in quanto usa solo
il campo OP.
,sSe si volesse essere rigorosi, occorrerebbe modificare il diagramma di stato di Figura5.20 ag-
glungendo, a ciascuno degli stati finali sui cinque rami del diagramma, un'uscita aiternativa verso
\0 stato del servizio deU'interruzione. Piu semp!icement.e, in Figura5.24 si e indicato che il percorso
a.lternativo viene preso quando INTR easserito.
il ' '..
' ..,-- ", ',,'
; ..',
, \.
., ".,

"'. , ". . . .. .
'41. ',",
.
',1 ' , i
(
, <

'.
"';: "'"''''''
,r "'"., _'
.
':>-. "'."',
".2r ,,;,1 .
2. Per 1a CPU, il servizio delPinterruzione consiste nel salvare il contenuto corrente
di PC e nel saltare alla routine di gestione dell'interruzione. In altre parole si
assume che l'elettronica salvi il solo PC
I
lasciando al programmatore la respon-
sabiJita di salvare gli eventuali registri che potrebbero essere modificati dalla
routine di servizio.
24 La memoria virtuale etrattata al Capitolo 8. II problema ora esposto viene trattato in maggiore
dettaglio aJ t.ermine del Paragra.fo 8.6.1.
25Fatta eccezione per ie situazioni tome queHa delineata in riferimento alIa memoria virtuale.
5.11 Interruzioni su CPU2

1$ ,
'fi"itt, ,
. .....
"-<':" ".-
-'{'J 1',
,, '
..... . -
198 C ' I 5 '.' .,'" .
aplto 0 ,,-.:;' .it..'.,:-

':"'- ,.. -
r."; " .'
.......,.. _.." ..
,,;',,', -,_."-:.; ......
''1 ,"" -, .
'" 1"'" .
. ..'" ..
estata cancata in memoria centrale. E perc possibile che quando l'istruzione viene. :.,:", 3.
ci sia un ,altro page fault
l
perche.il dato .indirizzato non e a sua .volta in i!:;"-<:',:,
memona
24
Anche In questa caso 10 state dl macchma cleve essere salvato, In modo ....
tale che l'istruzione possa essere rieseguita e portata a termine come se niente FOSSe
t
'".,' .,
avvenu o. ....'7" .
. --,i':.J '"
In una si pu.a convenire che ogni istruzione arrivi al corn_ 4.
p.nma che una ed La logica ',;r,:.
dl CPU deve se c'e una nchlesta assenta e In caso afIermatlvo <;/ '
il controllo al gestore delle interruzioni, al termine dell'istruzione corrente. H;.,;':"
tettura deve specificare Ie assunzioni che il gestore dell'interruzione deve fare quando:':'::in 5.
viene chiamato, in particolare l'architettura deve specificare 10 stato di macchina ehe ", "
il gestore tIOva, al fine di restituirlo immutato aI termine della sua esecuzione.
Se Ia macchina ein pipeline Ie difficolta si esasperano, poiche non c'e un ,
momento in cui si puo infilare il trattamento dell'int.erruzione tra e istruzio. .' 0 e aggiungere a CPU2 un po' di logica per:
ne, in quanta piu istruzioni stanno eseguendo concorrentemente. Si tratta di trovare :. }.:::(,.:':....,' eeorr
un metoda per fermare gli ingressi alIa pipeline, aspettare che sia svuotata e quindi , salvare in SR il contenuto di PC aU'atto dell'interruzione;
soddisfare la richiesta di interruzione. Siccome in queste macchine il prelievo delle :.:.. , .' .
istruzioni' avviene con un certo anticipo rispetto alIa 10ro esecuzione> l'identificazione' .. " eopiare in PC il eontenuto cil XR aU'atto del-l'mterruzlOne;
del valore di PC da salvare per il ritorno dalla routine di interruzione puo essere ',' ..' d' SR ff too dell'esecuzione di RfI.
alquanto complicata. Per questo tipo di situazioni estato introdotto il concetto di, ,.:, ' COplare m PC 11 contenuto 1 come e e
interruzione precisa, cui si pa.:
1era
al 6. .. ,'<ill La 10 ica in questione eriportata in Figura5.23. ndiagramma stato di
.A parte tutte Ie di:fi-colta, Ie elemento dl gmodificato come in Figura5.24, in modo da presentare II percorso. lD
A lora .SI cleve I,a 1a la, '/:/},<; r.esenza di INTR asserita (alternativo al ramo corrispondente aUo stato dl fetCh ) e
dlvlslOne dl tempo (hme-shanng) e 1 slsteml a process! paralleh (multltaskmg). fl, per,corso RFI. ..' . .
'E un semphce eserCIZlO trovare le espressIOUl Ioglche. per I comandi daXR,
';:":", ,"::\' . SRWrite come pure codificare PCsorg in modo che SIano mantenute ie
Figura5.19 e vengano aggiunte queUe ai due nuovi registri. Un'ultenore
".!:( ':';'"')',:.:'.':" .'modifica erichiesta dalla rete di Figura5.22, ill modo da concludere: RFI al terzo clock.
':"";'-1., ',,(
, :';y,,;' .. " '.
Vogliamo ora aggiungere il trattamento delle interruzioni in CPU2. Faremo riferimen- :'}J ,
to a CPU2 nella versione iniziale e al corrispondente diagrarnma degli stati dettagliato 11.1 Considerazioni
di Figura5.21; faremo inoitre alcune ipotesi semplificative. "
_ La nostra architettura non prevede alcuna informazione di stato. Le sole istruzioni
1, E prevista una sola interruzione: l
1
interruzione Sterna. La CPU si accerta della .."':' ':,,,:. che trattano una condizione, le istruzione JE e JS, la calcolano nel corso della loro
richiesta esaminando 1a linea INTR in ingresso alIa CPU stessa. Se la linea INTR esecuzione. Dunque non ci sono informazioni da salvarel escluse
easserita, quando Ia corrente istruzione termina, anziche dar corso aI prelievo in PC e nei registri di usc generale. n PC viene dalla.logIca dl macchma,
della prossima istruzione, 1a logica di CPU passa al servizio delJlinterruzione. , . ,. mentre i1 salvataggio del contenuto dei registri - solo dl che possono essere
':'."', . modificati dall'esecuzione della routine di servizio - resta a carICO del programmatore.
. " . .' ." .
'.('., """,
," _., ...' ,.. " "
." .\
\
I
\
\
\
I
\
1
I
\
\
\
\
\
199
La CPU
Per rendere attuabile quanta detto al punto precedente, 1a CPU viene dotata
di un u1teriore registro (denominato SR per eopiare in esso il contenuto di PC
aU'atto dell'interruzione. Inoitre, viene anche aggiunto il registro XR, nel quale si
suppone sia permanentemente memorizzato l'indirizzo della routine di gestione
26
.
Al repertorio istruzioni della CPU viene aggiunta l'istruzione RFI
27
- Ritorno
daJl'interruzione, il cui effetto eeopiare il contenuto di SR in PC, in modo da far
riprendere it programma interrotto.
Si fa infine un'ulteriore ipotesi semplificativa: dal momento in cui Ia logica inizia
il servizio dell'interruzione fino al termine della routine di gestione, la linea INTR
eautomaticamente disasserita, in modo che l'interruzione non possa essere iterata
durante 1a routine. Vedremo pili avanti come db possa essere ottenuto.
26 Anch"e se la cosa non e di grande interesse, perche, nella pratica, l'indirizzo della routine di
.interruzione viene tenuto in memoria, tale registro dovrebbe essere reso programmabile, aggiungendo
una specifica istruzione al repertorio.
27n formato dell'istruzione RFI eanornalo rispetto ai tre indicati in FiguraS.l, in quanto usa solo
il campo OP.
,sSe si volesse essere rigorosi, occorrerebbe modificare il diagramma di stato di Figura5.20 ag-
glungendo, a ciascuno degli stati finali sui cinque rami del diagramma, un'uscita aiternativa verso
\0 stato del servizio deU'interruzione. Piu semp!icement.e, in Figura5.24 si e indicato che il percorso
a.lternativo viene preso quando INTR easserito.
il ' '..
' ..,-- ", ',,'
; ..',
, \.
., ".,

"'. , ". . . .. .
'41. ',",
.
',1 ' , i
(
, <

'.
"';: "'"''''''
,r "'"., _'
.
':>-. "'."',
".2r ,,;,1 .
2. Per 1a CPU, il servizio delPinterruzione consiste nel salvare il contenuto corrente
di PC e nel saltare alla routine di gestione dell'interruzione. In altre parole si
assume che l'elettronica salvi il solo PC
I
lasciando al programmatore la respon-
sabiJita di salvare gli eventuali registri che potrebbero essere modificati dalla
routine di servizio.
24 La memoria virtuale etrattata al Capitolo 8. II problema ora esposto viene trattato in maggiore
dettaglio aJ t.ermine del Paragra.fo 8.6.1.
25Fatta eccezione per ie situazioni tome queHa delineata in riferimento alIa memoria virtuale.
5.11 Interruzioni su CPU2

1$ ,
'fi"itt, ,
. .....
"-<':" ".-
-'{'J 1',
,, '
..... . -
198 C ' I 5 '.' .,'" .
aplto 0 ,,-.:;' .it..'.,:-

':"'- ,.. -
r."; " .'
.......,.. _.." ..
,,;',,', -,_."-:.; ......
''1 ,"" -, .
'" 1"'" .
. ..'" ..
estata cancata in memoria centrale. E perc possibile che quando l'istruzione viene. :.,:", 3.
ci sia un ,altro page fault
l
perche.il dato .indirizzato non e a sua .volta in i!:;"-<:',:,
memona
24
Anche In questa caso 10 state dl macchma cleve essere salvato, In modo ....
tale che l'istruzione possa essere rieseguita e portata a termine come se niente FOSSe
t
'".,' .,
avvenu o. ....'7" .
. --,i':.J '"
In una si pu.a convenire che ogni istruzione arrivi al corn_ 4.
p.nma che una ed La logica ',;r,:.
dl CPU deve se c'e una nchlesta assenta e In caso afIermatlvo <;/ '
il controllo al gestore delle interruzioni, al termine dell'istruzione corrente. H;.,;':"
tettura deve specificare Ie assunzioni che il gestore dell'interruzione deve fare quando:':'::in 5.
viene chiamato, in particolare l'architettura deve specificare 10 stato di macchina ehe ", "
il gestore tIOva, al fine di restituirlo immutato aI termine della sua esecuzione.
Se Ia macchina ein pipeline Ie difficolta si esasperano, poiche non c'e un ,
momento in cui si puo infilare il trattamento dell'int.erruzione tra e istruzio. .' 0 e aggiungere a CPU2 un po' di logica per:
ne, in quanta piu istruzioni stanno eseguendo concorrentemente. Si tratta di trovare :. }.:::(,.:':....,' eeorr
un metoda per fermare gli ingressi alIa pipeline, aspettare che sia svuotata e quindi , salvare in SR il contenuto di PC aU'atto dell'interruzione;
soddisfare la richiesta di interruzione. Siccome in queste macchine il prelievo delle :.:.. , .' .
istruzioni' avviene con un certo anticipo rispetto alIa 10ro esecuzione> l'identificazione' .. " eopiare in PC il eontenuto cil XR aU'atto del-l'mterruzlOne;
del valore di PC da salvare per il ritorno dalla routine di interruzione puo essere ',' ..' d' SR ff too dell'esecuzione di RfI.
alquanto complicata. Per questo tipo di situazioni estato introdotto il concetto di, ,.:, ' COplare m PC 11 contenuto 1 come e e
interruzione precisa, cui si pa.:
1era
al 6. .. ,'<ill La 10 ica in questione eriportata in Figura5.23. ndiagramma stato di
.A parte tutte Ie di:fi-colta, Ie elemento dl gmodificato come in Figura5.24, in modo da presentare II percorso. lD
A lora .SI cleve I,a 1a la, '/:/},<; r.esenza di INTR asserita (alternativo al ramo corrispondente aUo stato dl fetCh ) e
dlvlslOne dl tempo (hme-shanng) e 1 slsteml a process! paralleh (multltaskmg). fl, per,corso RFI. ..' . .
'E un semphce eserCIZlO trovare le espressIOUl Ioglche. per I comandi daXR,
';:":", ,"::\' . SRWrite come pure codificare PCsorg in modo che SIano mantenute ie
Figura5.19 e vengano aggiunte queUe ai due nuovi registri. Un'ultenore
".!:( ':';'"')',:.:'.':" .'modifica erichiesta dalla rete di Figura5.22, ill modo da concludere: RFI al terzo clock.
':"";'-1., ',,(
, :';y,,;' .. " '.
Vogliamo ora aggiungere il trattamento delle interruzioni in CPU2. Faremo riferimen- :'}J ,
to a CPU2 nella versione iniziale e al corrispondente diagrarnma degli stati dettagliato 11.1 Considerazioni
di Figura5.21; faremo inoitre alcune ipotesi semplificative. "
_ La nostra architettura non prevede alcuna informazione di stato. Le sole istruzioni
1, E prevista una sola interruzione: l
1
interruzione Sterna. La CPU si accerta della .."':' ':,,,:. che trattano una condizione, le istruzione JE e JS, la calcolano nel corso della loro
richiesta esaminando 1a linea INTR in ingresso alIa CPU stessa. Se la linea INTR esecuzione. Dunque non ci sono informazioni da salvarel escluse
easserita, quando Ia corrente istruzione termina, anziche dar corso aI prelievo in PC e nei registri di usc generale. n PC viene dalla.logIca dl macchma,
della prossima istruzione, 1a logica di CPU passa al servizio delJlinterruzione. , . ,. mentre i1 salvataggio del contenuto dei registri - solo dl che possono essere
':'."', . modificati dall'esecuzione della routine di servizio - resta a carICO del programmatore.
. " . .' ." .
'.('., """,
," _., ...' ,.. " "
." .\
\
I
\
\
\
I
\
1
I
\
\
\
\
\
.1' ,
,
"
.'{. ,
) -
1-
) -
..
..

I-
I-
1
I .
) ,
I
I -
) .
I.
) ..
) ,
]
I'
-
Figura 5.24 Diagramma di state con il trattamento dell'interruzione. Quando it segnale
. INTReasserito viene percorso iI ramo a destra in alto, che dura solo un periodo di clock, Per
via delle assunzioni fatte, all'uscita di questo ramo INTR edisasserito e resta tale almena
f1:no a dopa l'esecuzione di RFI. E stato aggiunto iI ramo relativo a questa istruziooe. Esso
prevede semplicemente il ripristino di PC COD il conlenuto di Sa.
,
,
om!
,
,I,
.Jl om!
I'
>NT
MRaltd
'"
'.xR ,
LYc
SRlI'ril.
,
,
IR'II'rlle.
P<;sorc
.. IN{)sora_ 1
PCserc-O
SALUt_O
SALU2_0
OPAl,U_ADD
,
, I,
..
DtsTII'rll.
..
SALU\_O
SALU2_2
OPAl,U-ADD
,
co
S'r ARITloC
JE!lS 1>1,
RF'
, ,
1./ S"L
,1/ S3S
,
I, "'A -1,-
,1/ ""

SALUI-l
SALUI_!
SALU1_l SALUI_1
XJ'CIWP
...,.
SALU2-2
SALU2_2
SALU2 .. 1 SALU2_1
Pe..er._2
Pe.or.-3
OPALU-AOO
OPALU-ADO
OPALU_Al,U OPALU-SU!l
X-,P<:JE!JS
S'r
PC.erc_1
,
. ."
,
1./ S.S
,1/ S.A
SALUI-! SALUI-!
SAUlt-t
S.l!.UZ_2 SALU2"2 SALU2_\
... OP"'W-ADO
OPALU... ADD
OfALU-ALU
INO.org-O INO.ore:=O
. ' Rdeat_\ ""'rile.
,
.. Sor,e._l
0"'
llRud
'"
,
,
./ SSL
,
/ S5A
SAWI_I
SAUlt-\
SAWZ_Z SALU2__ !
OPW.....OD
OPA,LU-ALu

Rdul_O
Rdul_!
Sorle_O
Soree._l
R'II'rile
tfRu.d
'"
Rlhih
,
I, , ,
"
,
1/
,
/ ,I, ,
-
,
"
,
'. t:",. .
,I '",
,"i I " ':",
,. ,

, .I . ..
.. ," ,. ,
, .
..'" '
a
<
, d5
PC\Jrl1:e
X PCJMP X pc."
X_PCJ!JS
PCsorg
PC+4

PCJE/JS ,
INDsol"g
PC.JHP
C
I
,

SR\Jrite
,
'--
1/
R
L
'--
R
';/';"
,... .
... ,
''''....:., ,.
",." .
-":
. .. mr:':'!.:' La CPU 201
200 . CapItola 5 ',,1,:: _._-------------------------------
-; . .:.
....
.. '.' ,.-,", ' .
- ','. J ., ,. ".' .
" 'J:!!: "','.' ... ,'" ,I

"/,' ," ';,i' ;
... . . .
" -.-" ,",.,
"I,.. : '. " ,-
"
: I: ': 7 ',"
",,{;,-:. ,'"
.," .., ,"'
- .. ...
:".(;,,". :,.:',
, '." '..
,- .,j'"
-,-" .......
. ,,' I l' .
:}.> " ".
. ,,'.. : '," ,
c'; !. '1 "
":'" . " .. ' ,
:j ';;:::- <:
, / ,.,
.." .' <"
i .f; .. ".
":;:.; ,r-;,,"
..... '.,' n',

-',",- ,. .., - ,,-j
.,- -, ...
" ." ,,I
e
, , ...
'. ;;:.;' ",I "
,.. ;' .' ,', I,. "",'
, '::Ij .:':'
.. "'. .,'. .'
--, ',0(' '.
- . ",'::'"
Figura 5.23 Logica per salvare it contenuto di PC 801 momento del servizio deJI1interruiione '.: ..
e per riportare PC at valore salvato al termine della routine di gestione delPinterruzione. __ "';;'" :, '.:
Si assume che XR contenga permanentemente j'indirizzo della routine. La figura riporta Ie:
parti aggiuntive rispetto allo schema di insieme di CPlJ2. .. ..<r: .f,':" '
, '." '., '. ",
.",,-, ,,,' .
.'
Non e questa la sede per parI are degli aspetti legati aHa scrittura della routine
interruzione, discussi al Capitola 4; in questa sede interessa approfondire gli aspetti' ;: '-:,:'
relativi al comportamento della logica cii CPU. 't'..,:: "
Le macchine reali presentano un certo numero di informazioni di statol spesso . '.'.'
raccolte nella cosiddetta Processor Status Word (PSW). Oi questa registro di CPU', /:: ..... '
fanno parte, per esempio, il bit di riperto, trabocco, zero ecc:, relativi ;.t/', ,
precedente
29
. Se 1'architettura prevede il registro PSW, at progettista si presentano' ,;.. "
queste due alternative: .",
i"'if ,I,
.. ''''.',
prevedere il salvataggio automatico di PSW (e di eventuali analoghi registri) aI ..... .:"'-': .'
momento dell'interruzione e illoro ripristino al momento dell'esecuzione dell'i- ',. '..... ,.
. ,. """,
struzione RFI', :.' .
'"
';, ' .
lasciare al programmatore la responsabiliU. del salvataggio/ripristino, prevedendo . ',;
Ie istruzioni opportlllle. <;; :'.
.;:: ..
La prima soluzione eovviamente la piu efficace
,
rna, se Ie informazioni da salvare '__" '
sono tante, e anche la piu costosa in termini di logica di macchina. Di solito la, "
s<;elta equella dj salvare solo PSW, raccogliendo in questo registro Ie informazioni di. ,.';, ','
,.
stato critiche, che se non' aalvate propriamente potrebbero compromettere 0 rendere '!
difficoltoso it trattamento dell'interruzione da parte dei programmi,
29Nell'architettura Intel ee il registro denominato FLAG che fa la funzione di PSWj esso viene usato
non solo per raccogliere informazioni come queUe a.ccennate, rna anche per tenere informazioni di
impostazione del modo di operare della macehina, tra cui un bit cbe abilita{disabilita iI sistema di .
interruzione (si veda pin avanti).

.1' ,
,
"
.'{. ,
) -
1-
) -
..
..

I-
I-
1
I .
) ,
I
I -
) .
I.
) ..
) ,
]
I'
-
Figura 5.24 Diagramma di state con il trattamento dell'interruzione. Quando it segnale
. INTReasserito viene percorso iI ramo a destra in alto, che dura solo un periodo di clock, Per
via delle assunzioni fatte, all'uscita di questo ramo INTR edisasserito e resta tale almena
f1:no a dopa l'esecuzione di RFI. E stato aggiunto iI ramo relativo a questa istruziooe. Esso
prevede semplicemente il ripristino di PC COD il conlenuto di Sa.
,
,
om!
,
,I,
.Jl om!
I'
>NT
MRaltd
'"
'.xR ,
LYc
SRlI'ril.
,
,
IR'II'rlle.
P<;sorc
.. IN{)sora_ 1
PCserc-O
SALUt_O
SALU2_0
OPAl,U_ADD
,
, I,
..
DtsTII'rll.
..
SALU\_O
SALU2_2
OPAl,U-ADD
,
co
S'r ARITloC
JE!lS 1>1,
RF'
, ,
1./ S"L
,1/ S3S
,
I, "'A -1,-
,1/ ""

SALUI-l
SALUI_!
SALU1_l SALUI_1
XJ'CIWP
...,.
SALU2-2
SALU2_2
SALU2 .. 1 SALU2_1
Pe..er._2
Pe.or.-3
OPALU-AOO
OPALU-ADO
OPALU_Al,U OPALU-SU!l
X-,P<:JE!JS
S'r
PC.erc_1
,
. ."
,
1./ S.S
,1/ S.A
SALUI-! SALUI-!
SAUlt-t
S.l!.UZ_2 SALU2"2 SALU2_\
... OP"'W-ADO
OPALU... ADD
OfALU-ALU
INO.org-O INO.ore:=O
. ' Rdeat_\ ""'rile.
,
.. Sor,e._l
0"'
llRud
'"
,
,
./ SSL
,
/ S5A
SAWI_I
SAUlt-\
SAWZ_Z SALU2__ !
OPW.....OD
OPA,LU-ALu

Rdul_O
Rdul_!
Sorle_O
Soree._l
R'II'rile
tfRu.d
'"
Rlhih
,
I, , ,
"
,
1/
,
/ ,I, ,
-
,
"
,
'. t:",. .
,I '",
,"i I " ':",
,. ,

, .I . ..
.. ," ,. ,
, .
..'" '
a
<
, d5
PC\Jrl1:e
X PCJMP X pc."
X_PCJ!JS
PCsorg
PC+4

PCJE/JS ,
INDsol"g
PC.JHP
C
I
,

SR\Jrite
,
'--
1/
R
L
'--
R
';/';"
,... .
... ,
''''....:., ,.
",." .
-":
. .. mr:':'!.:' La CPU 201
200 . CapItola 5 ',,1,:: _._-------------------------------
-; . .:.
....
.. '.' ,.-,", ' .
- ','. J ., ,. ".' .
" 'J:!!: "','.' ... ,'" ,I

"/,' ," ';,i' ;
... . . .
" -.-" ,",.,
"I,.. : '. " ,-
"
: I: ': 7 ',"
",,{;,-:. ,'"
.," .., ,"'
- .. ...
:".(;,,". :,.:',
, '." '..
,- .,j'"
-,-" .......
. ,,' I l' .
:}.> " ".
. ,,'.. : '," ,
c'; !. '1 "
":'" . " .. ' ,
:j ';;:::- <:
, / ,.,
.." .' <"
i .f; .. ".
":;:.; ,r-;,,"
..... '.,' n',

-',",- ,. .., - ,,-j
.,- -, ...
" ." ,,I
e
, , ...
'. ;;:.;' ",I "
,.. ;' .' ,', I,. "",'
, '::Ij .:':'
.. "'. .,'. .'
--, ',0(' '.
- . ",'::'"
Figura 5.23 Logica per salvare it contenuto di PC 801 momento del servizio deJI1interruiione '.: ..
e per riportare PC at valore salvato al termine della routine di gestione delPinterruzione. __ "';;'" :, '.:
Si assume che XR contenga permanentemente j'indirizzo della routine. La figura riporta Ie:
parti aggiuntive rispetto allo schema di insieme di CPlJ2. .. ..<r: .f,':" '
, '." '., '. ",
.",,-, ,,,' .
.'
Non e questa la sede per parI are degli aspetti legati aHa scrittura della routine
interruzione, discussi al Capitola 4; in questa sede interessa approfondire gli aspetti' ;: '-:,:'
relativi al comportamento della logica cii CPU. 't'..,:: "
Le macchine reali presentano un certo numero di informazioni di statol spesso . '.'.'
raccolte nella cosiddetta Processor Status Word (PSW). Oi questa registro di CPU', /:: ..... '
fanno parte, per esempio, il bit di riperto, trabocco, zero ecc:, relativi ;.t/', ,
precedente
29
. Se 1'architettura prevede il registro PSW, at progettista si presentano' ,;.. "
queste due alternative: .",
i"'if ,I,
.. ''''.',
prevedere il salvataggio automatico di PSW (e di eventuali analoghi registri) aI ..... .:"'-': .'
momento dell'interruzione e illoro ripristino al momento dell'esecuzione dell'i- ',. '..... ,.
. ,. """,
struzione RFI', :.' .
'"
';, ' .
lasciare al programmatore la responsabiliU. del salvataggio/ripristino, prevedendo . ',;
Ie istruzioni opportlllle. <;; :'.
.;:: ..
La prima soluzione eovviamente la piu efficace
,
rna, se Ie informazioni da salvare '__" '
sono tante, e anche la piu costosa in termini di logica di macchina. Di solito la, "
s<;elta equella dj salvare solo PSW, raccogliendo in questo registro Ie informazioni di. ,.';, ','
,.
stato critiche, che se non' aalvate propriamente potrebbero compromettere 0 rendere '!
difficoltoso it trattamento dell'interruzione da parte dei programmi,
29Nell'architettura Intel ee il registro denominato FLAG che fa la funzione di PSWj esso viene usato
non solo per raccogliere informazioni come queUe a.ccennate, rna anche per tenere informazioni di
impostazione del modo di operare della macehina, tra cui un bit cbe abilita{disabilita iI sistema di .
interruzione (si veda pin avanti).

203
La CPU
nITR

,
,
,/ "
".m
IR:_ w(pcj IR:. }A(O)
I

"
,
O."odiflea
c
-
3lBisogna aggiungere che I'architettura deve corounquc poter garantire che, a discrezione del pro-
grammatore, it sistema operi in modo da non essere interrotto, dando modo di sa,lva,re l'indirizzo di
ritorno, prima the i1 sistema di interruzione venga. ria.bilitato. Si veda i1 successiv-Q Paragrafo5.11.4
32Nell'architettura Intel e prevista l'istruzione call, iI cui effetto e salvare la coppia CS:IP (il
contatore di programma.) sullo stack.
Figura 5.26 Ramo relativo a.ll'interruzione quando nellalocazione di interruzione e prevista
un'istruzione anziche un indirizzo. Il programmatore deve aver codicato in tale posizione
I'istruzione eli cbiamata alIa routine di interruzione. In caso contrario l'effetto sara. quello
previsto dal codice di operazione. Notare che il caricamento in IR del contenuto della
posizione 0 di memoria avviene a PC invariato, in modo che l'esecuzione dell'istruzione di
chiamata di sottoprogramma possa effettivamente salvare l'indiriz2o di ritorno.
Altre modalita Vale pena di esaminare altre rnodalita. di risposta all'interruzione.
Una di queste consiste nel non prevedere il salyataggio autornatico di PC, rna
contar
e
, per questa funzione, suI repertorio di istruzioni del programma e, in par-
ticolare, suI fatto che il repertorio deve presentare l'istruzione di chiamata a sotto-
programma. Questa istruzione, oltre a saltare al sottoprogramma determina il sal va-
tagg
io
automatico dell'indirizzo di ritorno (il valore corrente di PC
32
). Se dunque si
stabilisce la convenzione che in posizione 0 si trovi l'istruzione di salto alIa routine di
servizio (Cfr. Capitolo 4)1 al riconoscimento dell'interruzione la logica. di CPU deve
'semplicemente effettuare il fetch, a PC invariato, del contenuto di questa posizione.
L'esecuzione dell'istruzione determina il passaggio alla routine e il salvataggio di PC.
Con queste considerazioni, il ramo relativo aH'interruzione di Figura 5.24 diventa
queUo di Figura5.26
'dall
a
routine di interruzione, per evitare che altre 10 modifichino
1
facendo perdere
d
't 3I
l'indirizzo 1 n ornD
Se la macchina edotata. di stack, Ia cosa pili naturale esalvare PC e Ie eventuali
'nformazioni di stato proprio sullo stack. Come sempre, PC e le eventuali informazioni
stato saivate devono essere ripristinate dall'istruzione RFI.
,j "
,
, ,I '.
1"
.--,1 '
,
' ..'
,,,,.
"
":tl
,'I ,
,..
.' ..
,
...'
..
't .
.... :, .'
" :;'1:, .
" 'f
.. ' ..
, :'.".1 ",.'
, ,
/:;."
,....
,..-rtl. ,;
, ,."
-I '
.' ".; '.,'''
_. ,
,,,' " " '
\ ,'j '.'
::':-" .,
..
...
SR <-- PC
PC <-- 0
PC <-- M(PC}
un secondo stato in cui il contenuto della posizione indirizzata da PC (Ia zero)
viene copiato in PC.
un primo stato in cui PC yiene salvato e portato a zero;
Memorizzazione di PC Un altro miglioramento consiste nelPeliminare SR. Si puo
anzitutto preyedere che PC venga salvato in un registro di USD generale e convenire
che l'istruzlone RFI prenda da nl'indirizzo d.i ritorno, Questa tecnica eabbastanza
naturale nelle architetture RISC. Essa non e tuttavia immune da qualche complica-:
zione: se il sistema viene gestito in modo da consentire l'interrompibilita. delle routine
di interruzione, it registro usato per salvare PC deve essere immediatamente salvato
30Sarebbe un vero spreco di spazio sull'integrato, tenuto conto che Ie macchine reali possono
arrivare a trattare centina.ia di difJerenti interruzioni e quindi richiederebbero aJtretta.nti registri.
..
"'1"

,.,,'
.)'-
"
,". .'
.
..
"

;,
; ',."
..
. J; .
" ,
Figura 5.25 Ramo relativo al trattamento dell'interruzione nell'ipotesi cbe PC venga an ;:':..
cora. salvato in SR, ma che I'indirizzo della routine di servizio sia nella posizione di memoria. .A' .
, ",
di indirizzo O. Per semplicita, in questa figura si usa una notazione diversa da quella. di -
, "" , .
Figura 5.24: si esprimono Ie azioni svolte e non i comandi e/o i selettori cbe Ie determinano;
definire i corrispondenti comaneli e selettori e un esercizio elementare. ' " .
,
.i'
nnuoyo percorso eillustrato in forma sintetica in Figura5.25.
,,
':: -.
Passaggio alla routine di servizio Per semplificare l'esposizione abbiamo sup..:;:::. .,. :,
posta l'esistenza del registro XR. Nella pratica esso non esiste
30
. Al Capitole 4 abbia,
rno vista cbe i1 modo normale per tenere l'indirizzo della routine di servizio consiste . ',' .
nelrusare, ovviamente, la memoria del sistema. ','" .,'
-. ;- ...
Possiamo convenire che l'indirizzo della routine di servizio ein una posizione issa' ."":),,
(predefinita) di memoria, detta Iocazione di interruzione (interrupt location). Spetta ,;}j".,
','" , ..
al programrnatore predisporre il contenuto di questa posizione. Per convenienza as.. ';'i';."
sumiamo che essa sia all'indirizzo 0 (zero). II ramo relativo al servizio di interruzione .. ;.,'
di Figura5.24 deve essere modificato in modo da preyedere: ,.. J <';":
. .., '-

. ;'
': " ,
".
,,' .' ..,
"
';-::.
,\',', '
"..,: ., '.
5.11.2 Miglioramenti
c_"" '-
,','
"1'
.'" '.,
... '
1.',\,':., :
"!l ..."
202 Capitola 5
-:.:ili! ::'i>


" ..:-; " ,
. lj::f
"I
, .. '.,
',,- ."
'" j'i-;' ','.
Vogliamo ora rendere il quadro pili realistico, eliminando atcune ipotesi semplificative. ',1::'
;,":,:1'
I
\
I
\
\
I
\
\
\
\
\
l
\
I
\
\
,
203
La CPU
nITR

,
,
,/ "
".m
IR:_ w(pcj IR:. }A(O)
I

"
,
O."odiflea
c
-
3lBisogna aggiungere che I'architettura deve corounquc poter garantire che, a discrezione del pro-
grammatore, it sistema operi in modo da non essere interrotto, dando modo di sa,lva,re l'indirizzo di
ritorno, prima the i1 sistema di interruzione venga. ria.bilitato. Si veda i1 successiv-Q Paragrafo5.11.4
32Nell'architettura Intel e prevista l'istruzione call, iI cui effetto e salvare la coppia CS:IP (il
contatore di programma.) sullo stack.
Figura 5.26 Ramo relativo a.ll'interruzione quando nellalocazione di interruzione e prevista
un'istruzione anziche un indirizzo. Il programmatore deve aver codicato in tale posizione
I'istruzione eli cbiamata alIa routine di interruzione. In caso contrario l'effetto sara. quello
previsto dal codice di operazione. Notare che il caricamento in IR del contenuto della
posizione 0 di memoria avviene a PC invariato, in modo che l'esecuzione dell'istruzione di
chiamata di sottoprogramma possa effettivamente salvare l'indiriz2o di ritorno.
Altre modalita Vale pena di esaminare altre rnodalita. di risposta all'interruzione.
Una di queste consiste nel non prevedere il salyataggio autornatico di PC, rna
contar
e
, per questa funzione, suI repertorio di istruzioni del programma e, in par-
ticolare, suI fatto che il repertorio deve presentare l'istruzione di chiamata a sotto-
programma. Questa istruzione, oltre a saltare al sottoprogramma determina il sal va-
tagg
io
automatico dell'indirizzo di ritorno (il valore corrente di PC
32
). Se dunque si
stabilisce la convenzione che in posizione 0 si trovi l'istruzione di salto alIa routine di
servizio (Cfr. Capitolo 4)1 al riconoscimento dell'interruzione la logica. di CPU deve
'semplicemente effettuare il fetch, a PC invariato, del contenuto di questa posizione.
L'esecuzione dell'istruzione determina il passaggio alla routine e il salvataggio di PC.
Con queste considerazioni, il ramo relativo aH'interruzione di Figura 5.24 diventa
queUo di Figura5.26
'dall
a
routine di interruzione, per evitare che altre 10 modifichino
1
facendo perdere
d
't 3I
l'indirizzo 1 n ornD
Se la macchina edotata. di stack, Ia cosa pili naturale esalvare PC e Ie eventuali
'nformazioni di stato proprio sullo stack. Come sempre, PC e le eventuali informazioni
stato saivate devono essere ripristinate dall'istruzione RFI.
,j "
,
, ,I '.
1"
.--,1 '
,
' ..'
,,,,.
"
":tl
,'I ,
,..
.' ..
,
...'
..
't .
.... :, .'
" :;'1:, .
" 'f
.. ' ..
, :'.".1 ",.'
, ,
/:;."
,....
,..-rtl. ,;
, ,."
-I '
.' ".; '.,'''
_. ,
,,,' " " '
\ ,'j '.'
::':-" .,
..
...
SR <-- PC
PC <-- 0
PC <-- M(PC}
un secondo stato in cui il contenuto della posizione indirizzata da PC (Ia zero)
viene copiato in PC.
un primo stato in cui PC yiene salvato e portato a zero;
Memorizzazione di PC Un altro miglioramento consiste nelPeliminare SR. Si puo
anzitutto preyedere che PC venga salvato in un registro di USD generale e convenire
che l'istruzlone RFI prenda da nl'indirizzo d.i ritorno, Questa tecnica eabbastanza
naturale nelle architetture RISC. Essa non e tuttavia immune da qualche complica-:
zione: se il sistema viene gestito in modo da consentire l'interrompibilita. delle routine
di interruzione, it registro usato per salvare PC deve essere immediatamente salvato
30Sarebbe un vero spreco di spazio sull'integrato, tenuto conto che Ie macchine reali possono
arrivare a trattare centina.ia di difJerenti interruzioni e quindi richiederebbero aJtretta.nti registri.
..
"'1"

,.,,'
.)'-
"
,". .'
.
..
"

;,
; ',."
..
. J; .
" ,
Figura 5.25 Ramo relativo al trattamento dell'interruzione nell'ipotesi cbe PC venga an ;:':..
cora. salvato in SR, ma che I'indirizzo della routine di servizio sia nella posizione di memoria. .A' .
, ",
di indirizzo O. Per semplicita, in questa figura si usa una notazione diversa da quella. di -
, "" , .
Figura 5.24: si esprimono Ie azioni svolte e non i comandi e/o i selettori cbe Ie determinano;
definire i corrispondenti comaneli e selettori e un esercizio elementare. ' " .
,
.i'
nnuoyo percorso eillustrato in forma sintetica in Figura5.25.
,,
':: -.
Passaggio alla routine di servizio Per semplificare l'esposizione abbiamo sup..:;:::. .,. :,
posta l'esistenza del registro XR. Nella pratica esso non esiste
30
. Al Capitole 4 abbia,
rno vista cbe i1 modo normale per tenere l'indirizzo della routine di servizio consiste . ',' .
nelrusare, ovviamente, la memoria del sistema. ','" .,'
-. ;- ...
Possiamo convenire che l'indirizzo della routine di servizio ein una posizione issa' ."":),,
(predefinita) di memoria, detta Iocazione di interruzione (interrupt location). Spetta ,;}j".,
','" , ..
al programrnatore predisporre il contenuto di questa posizione. Per convenienza as.. ';'i';."
sumiamo che essa sia all'indirizzo 0 (zero). II ramo relativo al servizio di interruzione .. ;.,'
di Figura5.24 deve essere modificato in modo da preyedere: ,.. J <';":
. .., '-

. ;'
': " ,
".
,,' .' ..,
"
';-::.
,\',', '
"..,: ., '.
5.11.2 Miglioramenti
c_"" '-
,','
"1'
.'" '.,
... '
1.',\,':., :
"!l ..."
202 Capitola 5
-:.:ili! ::'i>


" ..:-; " ,
. lj::f
"I
, .. '.,
',,- ."
'" j'i-;' ','.
Vogliamo ora rendere il quadro pili realistico, eliminando atcune ipotesi semplificative. ',1::'
;,":,:1'
I
\
I
\
\
I
\
\
\
\
\
l
\
I
\
\
,
1
)
I
\ .
I.
I
I
]
)
I
]
]
1
205
S 01-
rE
R RI
Sl
HNTR 0 I' INTR
I
CPU
__ La CPU
5.11.4 Atornicita dell'interruzione
5.11.3 Interruzioni vettorizzate
,.."-
"3" .
.


'llittll':," ,
. '.. -
..,(: '.' '.
..;'1....,..,<"... '.: '
204 CapItola 5 _ ::'_'.. __--------------------------------
. '. ;"
,Ii.,"' ':": '.
,,:.':,". ":<".:::: -
, ..
':'
'.' ' ..'
...r- .. '
,,;,,: :!-.
"J".I .',
Nei precedenti ragionamenti si esupposto che vi fosse una sola interruzione
,
nel .>.,. / -.. -
?enerale, la, macchina deve essere in grada .di trat.tar.ne .p.ib. di Per trattare pHi,,:):}- ;",,>;:t-",'
mterruZlOlll basta prevedere una tabella dl lOCaZlOTIl cit mterruZlOne. Se, per .... , "
le contengono gli delle, routine di servizio delle -+- lACK
dlfferentl mterrUZIOlll, mdlcando con IRi la genenca mterruZlOne e con TABIR la ta- ,), . :",'y,"
bella, la logica di CPU trova in TABffi[IRd l'indirizzo a cui saltare. La posizione ':"',::,'>i', F. ura 5.27 Bit di abilitazionejdisabilita.zione del sistema. di interruzione. La logica eli
della pub essere oppure pub esse.re a ,,' ,:" c1u esamina IIN':r:'R per se c'e di interruzi?oe.
analogo discorso vale OVVlamente se la tabella contlene lstruzlom dl chiamata. Spetta : Il:' , ,,: _', '. delPinterruzione, Vlene assento il comando RI, il CUI effetto equeUo di far disassenre UNTR,
sempre 301 programmatore il compito di preparare la tabella con it dovuto contenuto. ,;:' L'esecuzione di RFl fa asserire SI e quindi riabilita il di n
La schema precedente viene anche detto vettorizzazione delle interruzioni: ogni '.: deve poter anche ?-a. 51 'Pos,sono. due. lStrUZI?Ol,
I t d
T"BIR' . t It h t d' 11 t' ;,'i ,','" "SETIeRSTI llculeffettoefareassenrelcomand15IeRI.Stnot'llalmeaIACK,essaVlene
e emen 0 1 J1" Vlene VIS 0 come un ve ore C e consen e 1 passare a a rou me', ;',F-: '.' " ' " ' , ' , I ( I eli'J I . at
, Al C . 1 4 f 'U f . d U' d' t ' , d' h' . ,j '," '., assertta. quando 1automa passa per 0 state 0 a sequenza stat! re atlvo trattamento
aplto 0 sono sta II ustra I van mo ell ve tOrIZZaZlOne I mace me ::,,'..(:: :. delPinterruzione,
re I ,:.iI,l, ".
.
" .. :, .....
,I, ., '
'... " .... La Figura 5,27 mostra che basta UD flip-fiop per rendere visibile 0 no Ie richieste
Eccezioni e trappole n trattarnento delle eccezioni e delle trappole eanalogo a' ':,,:''':: :"" ?i Comandare tale flip-flop equivale a abilitare/disabilitare il sistema di
quello delle interruzioni esterne, con 1a differenza che esse hanno origine interna. U' :': mterrUZIQne, . . . .
processo the si instaura eperb del tutto analogo. Per esempio, nel caso delParchitet. '.\;'!': .._. ,Oecorre ehe alIa ?1essa del sistema, IE ill .stato
tura Intel, l'istruzione IN! xx asserisce interruzione xx, ovvero fa passare alIa routine :'::/)!:'. ;--'.<i::; '.','. III che non Sl possano venficare fino a quando non dl
il cui indirizzo si trova in TABIR(xx]. " ' '. 'aVVIO da del software della ..Quan?o 1a fase detta
, .. .. ,. . . . , :, '::it .', ," econc1usa, 11 programmatore puo esegmre 1'1struzlOne SETI che abllita il sistema di
E norma che Ie POSlZIOIll lD TABIR the S1 nfenscono alle eccezlom Slana fisse e ,"' .. : . : ..' terruzione.
m.entre ,per Ie e?revista,Ia che i vettori di .:.:). ill _ Un'ultirna osservazione: quand0:;E viene portato basso in modo da disasserire
mterruZlOne SIano hberamente dlslocablh nelle nmanentl pOSlZ10Dl dl TABIR. ",Jt& ,:',:',: ',':: IINTR, la linea INTR resta asserita. E necessario che, nel tempo che intercorre tra
. ,\"'.-' , questo istante e I'esecuzione dell'istruzione RFI, a conc1usione della routine di servizio,
'":'; .. 180 linea INTR, venga disasserita. Ci pub essere un modo automatieo, basato suI rico-
. Nel caso delle ester?e, it per .. noscimento ,dello stato della linea lACK, in !,igura5.27.
aHa routme di serV1ZIO Sl basa sulla collaborazlOne del sistema dl mgressojusclta. La ,.. ';',": i., .. pub essere 11 programmatore a trasmettere al diSpOSItIvO che ha assento INTR un
convenzione eche quando l'autorna CPU esuI ramo di servizio dell'interruzione , viene che 10 faccia disasserire (Cfr, Capitolo 4). . .
asserito verso l'este:no che i1 sisten;a.di I/O la,CPU ':,:-'l},
sta. eseguendo un CIcio di. durante quale.leggera 11 ?US del " .
IOgIca esterna pub agganciarsl a tale segnale per pilotare II bus can l'mformazlOne che;""lf. : '.,:':, .",.
serve alIa CPU a passare aHa routine di servizio, Lo schema piu comune corrisponde '.;.;;rl '. :"\,;."<.
a quanto illustrato in precedenza, oyvero la logica esterna pone suI bus dei dati il . . .
numero IR;, can il quale la logiea di CPU raggiunge TAB[IR;] (si faeeia riferimento "::::\1, ::.. ;",5.12 EserCIZl
quanto detto al Capitolo 4). );1.". ::,: r .. ,
:. ",:::' ':: 5.1 In riferimento all'architettura introdotta al Paragrafo 5.2, si assuma
:.'::r;i :.::,,',.,.::.,:.. dl avere un ipotetico linguaggio di programmazione Assembler (si immagini che siano
. .tutte .le e can i for-
.' '.'. ,> ' matt dl lstruzlone posslbili e Ie eventuah pseudo operazlow necessane a comporre un
,,),; " ..
., '", . .
.,."'."""
Una delle ipotesi fatte nel Paragrafo 5.11 era che, una volta entrati nel ramo di servizio ',,::::: :",::,' "Non ,i co f d t b't II dl b d II . ,. . f'
)" .., 'I' l' \r;i I:':i, ;" " '.' ,n .on a ques OleO? que 0 masc eramento e a smgo a Interruzlone, che UOZIO
dell mterruzlOne, a causa del nconosClmento di INTR assenta, a medeslma mea. "';' ,nalmente e SImIle. La nostra archltettura prevede una sola richiesta di interruzione rna 10 schema
venisse automaticamente disasserita fino all1esecuzione di RFI. Cib al fine di rendere -':,.; funziona anche in presenza di molteplici richieste, basta che INTR sia I'OR delle singole
atomica l'eSecuzione della routine di servizio. Vediamo ora come cio si ottiene. .', ':, nchleste.

.!.!,

1
)
I
\ .
I.
I
I
]
)
I
]
]
1
205
S 01-
rE
R RI
Sl
HNTR 0 I' INTR
I
CPU
__ La CPU
5.11.4 Atornicita dell'interruzione
5.11.3 Interruzioni vettorizzate
,.."-
"3" .
.


'llittll':," ,
. '.. -
..,(: '.' '.
..;'1....,..,<"... '.: '
204 CapItola 5 _ ::'_'.. __--------------------------------
. '. ;"
,Ii.,"' ':": '.
,,:.':,". ":<".:::: -
, ..
':'
'.' ' ..'
...r- .. '
,,;,,: :!-.
"J".I .',
Nei precedenti ragionamenti si esupposto che vi fosse una sola interruzione
,
nel .>.,. / -.. -
?enerale, la, macchina deve essere in grada .di trat.tar.ne .p.ib. di Per trattare pHi,,:):}- ;",,>;:t-",'
mterruZlOlll basta prevedere una tabella dl lOCaZlOTIl cit mterruZlOne. Se, per .... , "
le contengono gli delle, routine di servizio delle -+- lACK
dlfferentl mterrUZIOlll, mdlcando con IRi la genenca mterruZlOne e con TABIR la ta- ,), . :",'y,"
bella, la logica di CPU trova in TABffi[IRd l'indirizzo a cui saltare. La posizione ':"',::,'>i', F. ura 5.27 Bit di abilitazionejdisabilita.zione del sistema. di interruzione. La logica eli
della pub essere oppure pub esse.re a ,,' ,:" c1u esamina IIN':r:'R per se c'e di interruzi?oe.
analogo discorso vale OVVlamente se la tabella contlene lstruzlom dl chiamata. Spetta : Il:' , ,,: _', '. delPinterruzione, Vlene assento il comando RI, il CUI effetto equeUo di far disassenre UNTR,
sempre 301 programmatore il compito di preparare la tabella con it dovuto contenuto. ,;:' L'esecuzione di RFl fa asserire SI e quindi riabilita il di n
La schema precedente viene anche detto vettorizzazione delle interruzioni: ogni '.: deve poter anche ?-a. 51 'Pos,sono. due. lStrUZI?Ol,
I t d
T"BIR' . t It h t d' 11 t' ;,'i ,','" "SETIeRSTI llculeffettoefareassenrelcomand15IeRI.Stnot'llalmeaIACK,essaVlene
e emen 0 1 J1" Vlene VIS 0 come un ve ore C e consen e 1 passare a a rou me', ;',F-: '.' " ' " ' , ' , I ( I eli'J I . at
, Al C . 1 4 f 'U f . d U' d' t ' , d' h' . ,j '," '., assertta. quando 1automa passa per 0 state 0 a sequenza stat! re atlvo trattamento
aplto 0 sono sta II ustra I van mo ell ve tOrIZZaZlOne I mace me ::,,'..(:: :. delPinterruzione,
re I ,:.iI,l, ".
.
" .. :, .....
,I, ., '
'... " .... La Figura 5,27 mostra che basta UD flip-fiop per rendere visibile 0 no Ie richieste
Eccezioni e trappole n trattarnento delle eccezioni e delle trappole eanalogo a' ':,,:''':: :"" ?i Comandare tale flip-flop equivale a abilitare/disabilitare il sistema di
quello delle interruzioni esterne, con 1a differenza che esse hanno origine interna. U' :': mterrUZIQne, . . . .
processo the si instaura eperb del tutto analogo. Per esempio, nel caso delParchitet. '.\;'!': .._. ,Oecorre ehe alIa ?1essa del sistema, IE ill .stato
tura Intel, l'istruzione IN! xx asserisce interruzione xx, ovvero fa passare alIa routine :'::/)!:'. ;--'.<i::; '.','. III che non Sl possano venficare fino a quando non dl
il cui indirizzo si trova in TABIR(xx]. " ' '. 'aVVIO da del software della ..Quan?o 1a fase detta
, .. .. ,. . . . , :, '::it .', ," econc1usa, 11 programmatore puo esegmre 1'1struzlOne SETI che abllita il sistema di
E norma che Ie POSlZIOIll lD TABIR the S1 nfenscono alle eccezlom Slana fisse e ,"' .. : . : ..' terruzione.
m.entre ,per Ie e?revista,Ia che i vettori di .:.:). ill _ Un'ultirna osservazione: quand0:;E viene portato basso in modo da disasserire
mterruZlOne SIano hberamente dlslocablh nelle nmanentl pOSlZ10Dl dl TABIR. ",Jt& ,:',:',: ',':: IINTR, la linea INTR resta asserita. E necessario che, nel tempo che intercorre tra
. ,\"'.-' , questo istante e I'esecuzione dell'istruzione RFI, a conc1usione della routine di servizio,
'":'; .. 180 linea INTR, venga disasserita. Ci pub essere un modo automatieo, basato suI rico-
. Nel caso delle ester?e, it per .. noscimento ,dello stato della linea lACK, in !,igura5.27.
aHa routme di serV1ZIO Sl basa sulla collaborazlOne del sistema dl mgressojusclta. La ,.. ';',": i., .. pub essere 11 programmatore a trasmettere al diSpOSItIvO che ha assento INTR un
convenzione eche quando l'autorna CPU esuI ramo di servizio dell'interruzione , viene che 10 faccia disasserire (Cfr, Capitolo 4). . .
asserito verso l'este:no che i1 sisten;a.di I/O la,CPU ':,:-'l},
sta. eseguendo un CIcio di. durante quale.leggera 11 ?US del " .
IOgIca esterna pub agganciarsl a tale segnale per pilotare II bus can l'mformazlOne che;""lf. : '.,:':, .",.
serve alIa CPU a passare aHa routine di servizio, Lo schema piu comune corrisponde '.;.;;rl '. :"\,;."<.
a quanto illustrato in precedenza, oyvero la logica esterna pone suI bus dei dati il . . .
numero IR;, can il quale la logiea di CPU raggiunge TAB[IR;] (si faeeia riferimento "::::\1, ::.. ;",5.12 EserCIZl
quanto detto al Capitolo 4). );1.". ::,: r .. ,
:. ",:::' ':: 5.1 In riferimento all'architettura introdotta al Paragrafo 5.2, si assuma
:.'::r;i :.::,,',.,.::.,:.. dl avere un ipotetico linguaggio di programmazione Assembler (si immagini che siano
. .tutte .le e can i for-
.' '.'. ,> ' matt dl lstruzlone posslbili e Ie eventuah pseudo operazlow necessane a comporre un
,,),; " ..
., '", . .
.,."'."""
Una delle ipotesi fatte nel Paragrafo 5.11 era che, una volta entrati nel ramo di servizio ',,::::: :",::,' "Non ,i co f d t b't II dl b d II . ,. . f'
)" .., 'I' l' \r;i I:':i, ;" " '.' ,n .on a ques OleO? que 0 masc eramento e a smgo a Interruzlone, che UOZIO
dell mterruzlOne, a causa del nconosClmento di INTR assenta, a medeslma mea. "';' ,nalmente e SImIle. La nostra archltettura prevede una sola richiesta di interruzione rna 10 schema
venisse automaticamente disasserita fino all1esecuzione di RFI. Cib al fine di rendere -':,.; funziona anche in presenza di molteplici richieste, basta che INTR sia I'OR delle singole
atomica l'eSecuzione della routine di servizio. Vediamo ora come cio si ottiene. .', ':, nchleste.

.!.!,

Eseccizio 5.18 In riferimento all'Esercizio 5.17, si assuma che il periodo di clock del
microprogramma sia 5 ns e che i tempi degli eventuali stadi siano quelli di pagina
193; si dia una valutazlone delle prestazioni delta CPU
l
confrontandole con queUe di
CPU2,
, Esercizio 5.19 8i determinino le espressioni logiche per daX.R, daSR e SRWrite e si
codifichi PCsorg in modo che siano possibili Ie selezioni di Figura5,23
Esercizio 5.20 8i modifichi 1a rete di Figura5.22, in modo da poter tener canto del
ramo di interruzione e della istruzione RFI. .. ,
"
.. '
,
.....
,>"\1 ;' ", "
. ".,' ,-
:i \ "..
r,.1'
..: .
. " . ,
.-, .. " '.'
",',', '
... " .
':',1 <
,', t" '
'. ;
',., ,
'.1 y,:,.;
....
Capitola 5
5.9 Si consideri CPUL2F e si ipotizzi eli fare effettuare l'incremento di
4 del PC dalla ALU durante il primo semiperiodo, Come si modifica 10 schema di
Figura5,13? E possibile eliminare del tutto il sommatore per il calcolo del PC?
Esercizio 5.10 In riferimento alPEsercizio 5.9, quale differenza si avrebbe, a Hvella
di codifica delle istruzioni, nel caso in cui il PC venisse incrernentato di 4 durante
il primo semiperiodo del clock? In altre parole la codifica del campo OFFSET delle
istruzioni JEIJS resterebbe la stessa?
.s
li;I:..':' ,,'.
"" ,"'':'' , L. CPU 207
I.. -'. __--------------------------=.::....::....::'---'--
- ";:1.":! ';' _
" ',':'li!") ,'\ ,::.", "
. ,n.
-;:. ,.'
-. ."
Si sc:iva UD ch.e ,una, st:mga di :' .,: '.' serciz
io
5.11 Si supponga che Ie istruziolli di saito condizionato siano del tipo JE
ill codifica ASCII m rappresentazlOne bmarla, Sl ,potlZZ' che la strlnga m,z, doll. ''''; , '",.,' E
J
m if Equal zera), JGE (Jump if Greater or Equal zero ), JLT (Jump Less Than
pOSlZlOne STRNG; che la masslma lunghezza 5la 8 caratten; che ogm parola contenga' ...: :" ". (u)p che queste istruzioni operino in base al contenuto di una parol a di stato
4 caratte ' (0 ) ch It' fin.i d' , , , . zero ecC" e
meno:. a nnga . sea quan 081 mcontra il carattere dl sPazio ":J :',' , sW processor Status Word) che riporta il risultato dell'operazione precedente. Si
(caratten non numencI dlversl da SpazlO devono dare errore). ":,,' (P '. 1 modifiche in modo da permettere a CPU2 di operare come descritto.
:.i .' '" appartm
a
e
Esercizio 5.2 In riferimento allo schema della ALU eli Figura5,4, si discuta la soIu.' ,'.' '.' " In 'f ' CPU2" " T2 1" t d' PC I
zione adot;ata testa consistente Del portare ALU il codice contenuto nel campo ... :',:: ''.; :::..:: a SI antlclpl a agglOrnamen 0 I ne
delllStruZlone, confrontandola con la soluzlOne alternativa di portare I'insieme ';) .,',:,: ' ...casa dl lstruZla
eli hnee che corrisponderebbero alia deeodifica del eodice del medesirno campo. '.:....; Esecciz
io
5.13 Si supponga di mettere in atto tutti i miglioramenti Ie
5.3 Nel' l'architettura, a pagina 162 si eassunto che anelle per Ie :::r ,.:,;"" "'":,''' dis.cussi al 5.9.1, in modo cia ridurre la struttura dl a
IstruZIODl LD e ST II campo OFFSET contenesse 10 scostamento della parola. diviso . ,'J ;' ::l: ..' 4 stadl. valutmo Ie .della CPU, confrontandole anche con quelle relative
4.. Si faccia ora Fip?tesi che. queste istruzioni il campo OFFSET eontenga '" .' at p'rototIpo CPU1, nelilpotesl dl T=30 ns e T _12 ns.
1effettlvo scostamento (clOenon eliv,so per 4), Comesi modificanoglischemidi CPU1"",0 " ".. , ' S,' h' 'd li d' eli CPU d' , 193"
e CPU2? )! ' :,."'.' 'Eseccizio 5.14 I supponga c e 1 tempI eg sta I I pagIna SIano
",'.' ' esattamente quelli richiesti dalle vane fasi e che si debba aggiungere 3 ns per ciascun
Eseccizio 5.4 Si supponga che nel caso dell'istruziene JMP il bit mene significativo' ,..:..... ... stadia. Si rieseguano Ie valutazioni di cui all'Esercizio 5.13.
?el. c.ampo IND indicbi i restanti bit del campo devono esseIe assunti come Un ..__ I. " "".;- ' ,
mdirizzo assoluto 0 reiativa a PC. Came 8i madificano gli scbemi di CPU1 e CPU2? ':1', '". EserCJZlO 5.15 In nfenJ?ento aile assunZlOm Esercizio 5.14, ,51 dl
. . . .:; .;.: .: ...dere per T it valore cornspondente a. quanta nchlesto dallo stadio pm veloce (eICe,
5.5 81 supponga che, ferme restando Ie assunziani fatte nel testo circa :-;}, ,,".'. :.'. Bns per 10 stadia ill). Come si trasforma CPU2 e che prestazioni fornisce in canfronto
il. sIgnlficato del campo OFFSET per Ie istruzioni LD eST, si debba aggiungere'. '."?' sia. al prototipo svi1uppato nel testo sia in riferimento ai miglioramenti suggeriti, di
I'Istruzioni LI?H. .la semiparola (16 bit) .in pos.izion: significativa cui agli esercizi precedenti.
della paroIa dl memona mdUlzzata e Ia porta nel reglstro dl destmazlone, nella meta '
meno significativa, azzerando l'altra meta. lpotizzando che dalla memoria venga ,.::.' Eseccizio 5.16 Si supponga di anticipare a T2 il calcola dell'indirizzo di memoria
comunque Ietta sempre una parola (32 bit), si illustrino Ie modifiche da apportare a",:] : \ ,', ....'. per Ie operazioni LD/ST di CPU2. Cosa comporta la conseguente anticipazione a T3
CPU1 e queUe da apportare a CPU2 per mantenere it modello di esecuzione in 5 stadi. ",' '.. "della fase M? Si esamini la questione sia nell'ipotesi di in cui il periodo T sia pari
(Suggerimento: conviene intervenire sulla ALU,' prevedendo ulteriori operazioni e/o ':,\,{ ....:', ", a quanto richiesto dalle operazioni di accesso alla memoria (30ns can i dati usati a
funzioni di cantrollo in modo da assecondare Ie nuove necessita). ,:.':: pagina 193), sia. nell'ipotesi in cui T sia piu breve e siano previsti degli stati di attesa
. . " , '. ,
E
.. 56 C I'E "55 . . ::,';,: :,::.,> nelPaccesso alia memoria.
serCIZIQ. orne serCIZlO., rna 51 supponga che ora 1a scrittura nel registro ,,\., ::,'
eli dei 16 bit letti non debba modificare il contenuto dell'altra meta. del " ".. Esercizio 5.17 8i ipotizzi di realizzare 1a CPU multiciclo can Ia tecnica della mi-
regIstro. ':"-:,.' _ cropragrammazione descritta al Capitola 2. Si assuma che una parola della memoria
Esercizjo 5.7 Si aggiunga }'istruzione STH che opera in modo duale rispetto a1Pis" " ..', di sia. divis.a in due contenti della
truzione LDH dell'Esercizio 5.6. , ..l,.: ..... prosslma (b) 1 bIt d1 co.mando. relatlv1 alia
:', ,', ' . secondo la tecOlca dl ffilcroprogrammazlOne onzzontale(pag. 55). 81 progettl l'umta
Esercizio 5.8 Si assuma che il campo OFFSET per istruzioni che fanno riferi" :' :, .'.di controllo, definendo nel dettaglio it contenuto delle singole parole della memoria di
mente alIa memoria contenga l'effettivo indirizzo dei byte. Si supponga che si debba ... " controlla. 8i ipotizzi di avere una ALU e un banco di registri BR come quelli usati
prevedere l'istruzione LDB, che carica nella posizione meno sigoificativa del registro nel testo.
di destinazione il byte 1etto, azzerando il resto del registro. Quale modificajaggiunta
sl deve apportare alla ALU di CPU2 per far fronte al problema? ,1 : '"
206
J
\
,
I
I
I
I
\
\
\
I
Eseccizio 5.18 In riferimento all'Esercizio 5.17, si assuma che il periodo di clock del
microprogramma sia 5 ns e che i tempi degli eventuali stadi siano quelli di pagina
193; si dia una valutazlone delle prestazioni delta CPU
l
confrontandole con queUe di
CPU2,
, Esercizio 5.19 8i determinino le espressioni logiche per daX.R, daSR e SRWrite e si
codifichi PCsorg in modo che siano possibili Ie selezioni di Figura5,23
Esercizio 5.20 8i modifichi 1a rete di Figura5.22, in modo da poter tener canto del
ramo di interruzione e della istruzione RFI. .. ,
"
.. '
,
.....
,>"\1 ;' ", "
. ".,' ,-
:i \ "..
r,.1'
..: .
. " . ,
.-, .. " '.'
",',', '
... " .
':',1 <
,', t" '
'. ;
',., ,
'.1 y,:,.;
....
Capitola 5
5.9 Si consideri CPUL2F e si ipotizzi eli fare effettuare l'incremento di
4 del PC dalla ALU durante il primo semiperiodo, Come si modifica 10 schema di
Figura5,13? E possibile eliminare del tutto il sommatore per il calcolo del PC?
Esercizio 5.10 In riferimento alPEsercizio 5.9, quale differenza si avrebbe, a Hvella
di codifica delle istruzioni, nel caso in cui il PC venisse incrernentato di 4 durante
il primo semiperiodo del clock? In altre parole la codifica del campo OFFSET delle
istruzioni JEIJS resterebbe la stessa?
.s
li;I:..':' ,,'.
"" ,"'':'' , L. CPU 207
I.. -'. __--------------------------=.::....::....::'---'--
- ";:1.":! ';' _
" ',':'li!") ,'\ ,::.", "
. ,n.
-;:. ,.'
-. ."
Si sc:iva UD ch.e ,una, st:mga di :' .,: '.' serciz
io
5.11 Si supponga che Ie istruziolli di saito condizionato siano del tipo JE
ill codifica ASCII m rappresentazlOne bmarla, Sl ,potlZZ' che la strlnga m,z, doll. ''''; , '",.,' E
J
m if Equal zera), JGE (Jump if Greater or Equal zero ), JLT (Jump Less Than
pOSlZlOne STRNG; che la masslma lunghezza 5la 8 caratten; che ogm parola contenga' ...: :" ". (u)p che queste istruzioni operino in base al contenuto di una parol a di stato
4 caratte ' (0 ) ch It' fin.i d' , , , . zero ecC" e
meno:. a nnga . sea quan 081 mcontra il carattere dl sPazio ":J :',' , sW processor Status Word) che riporta il risultato dell'operazione precedente. Si
(caratten non numencI dlversl da SpazlO devono dare errore). ":,,' (P '. 1 modifiche in modo da permettere a CPU2 di operare come descritto.
:.i .' '" appartm
a
e
Esercizio 5.2 In riferimento allo schema della ALU eli Figura5,4, si discuta la soIu.' ,'.' '.' " In 'f ' CPU2" " T2 1" t d' PC I
zione adot;ata testa consistente Del portare ALU il codice contenuto nel campo ... :',:: ''.; :::..:: a SI antlclpl a agglOrnamen 0 I ne
delllStruZlone, confrontandola con la soluzlOne alternativa di portare I'insieme ';) .,',:,: ' ...casa dl lstruZla
eli hnee che corrisponderebbero alia deeodifica del eodice del medesirno campo. '.:....; Esecciz
io
5.13 Si supponga di mettere in atto tutti i miglioramenti Ie
5.3 Nel' l'architettura, a pagina 162 si eassunto che anelle per Ie :::r ,.:,;"" "'":,''' dis.cussi al 5.9.1, in modo cia ridurre la struttura dl a
IstruZIODl LD e ST II campo OFFSET contenesse 10 scostamento della parola. diviso . ,'J ;' ::l: ..' 4 stadl. valutmo Ie .della CPU, confrontandole anche con quelle relative
4.. Si faccia ora Fip?tesi che. queste istruzioni il campo OFFSET eontenga '" .' at p'rototIpo CPU1, nelilpotesl dl T=30 ns e T _12 ns.
1effettlvo scostamento (clOenon eliv,so per 4), Comesi modificanoglischemidi CPU1"",0 " ".. , ' S,' h' 'd li d' eli CPU d' , 193"
e CPU2? )! ' :,."'.' 'Eseccizio 5.14 I supponga c e 1 tempI eg sta I I pagIna SIano
",'.' ' esattamente quelli richiesti dalle vane fasi e che si debba aggiungere 3 ns per ciascun
Eseccizio 5.4 Si supponga che nel caso dell'istruziene JMP il bit mene significativo' ,..:..... ... stadia. Si rieseguano Ie valutazioni di cui all'Esercizio 5.13.
?el. c.ampo IND indicbi i restanti bit del campo devono esseIe assunti come Un ..__ I. " "".;- ' ,
mdirizzo assoluto 0 reiativa a PC. Came 8i madificano gli scbemi di CPU1 e CPU2? ':1', '". EserCJZlO 5.15 In nfenJ?ento aile assunZlOm Esercizio 5.14, ,51 dl
. . . .:; .;.: .: ...dere per T it valore cornspondente a. quanta nchlesto dallo stadio pm veloce (eICe,
5.5 81 supponga che, ferme restando Ie assunziani fatte nel testo circa :-;}, ,,".'. :.'. Bns per 10 stadia ill). Come si trasforma CPU2 e che prestazioni fornisce in canfronto
il. sIgnlficato del campo OFFSET per Ie istruzioni LD eST, si debba aggiungere'. '."?' sia. al prototipo svi1uppato nel testo sia in riferimento ai miglioramenti suggeriti, di
I'Istruzioni LI?H. .la semiparola (16 bit) .in pos.izion: significativa cui agli esercizi precedenti.
della paroIa dl memona mdUlzzata e Ia porta nel reglstro dl destmazlone, nella meta '
meno significativa, azzerando l'altra meta. lpotizzando che dalla memoria venga ,.::.' Eseccizio 5.16 Si supponga di anticipare a T2 il calcola dell'indirizzo di memoria
comunque Ietta sempre una parola (32 bit), si illustrino Ie modifiche da apportare a",:] : \ ,', ....'. per Ie operazioni LD/ST di CPU2. Cosa comporta la conseguente anticipazione a T3
CPU1 e queUe da apportare a CPU2 per mantenere it modello di esecuzione in 5 stadi. ",' '.. "della fase M? Si esamini la questione sia nell'ipotesi di in cui il periodo T sia pari
(Suggerimento: conviene intervenire sulla ALU,' prevedendo ulteriori operazioni e/o ':,\,{ ....:', ", a quanto richiesto dalle operazioni di accesso alla memoria (30ns can i dati usati a
funzioni di cantrollo in modo da assecondare Ie nuove necessita). ,:.':: pagina 193), sia. nell'ipotesi in cui T sia piu breve e siano previsti degli stati di attesa
. . " , '. ,
E
.. 56 C I'E "55 . . ::,';,: :,::.,> nelPaccesso alia memoria.
serCIZIQ. orne serCIZlO., rna 51 supponga che ora 1a scrittura nel registro ,,\., ::,'
eli dei 16 bit letti non debba modificare il contenuto dell'altra meta. del " ".. Esercizio 5.17 8i ipotizzi di realizzare 1a CPU multiciclo can Ia tecnica della mi-
regIstro. ':"-:,.' _ cropragrammazione descritta al Capitola 2. Si assuma che una parola della memoria
Esercizjo 5.7 Si aggiunga }'istruzione STH che opera in modo duale rispetto a1Pis" " ..', di sia. divis.a in due contenti della
truzione LDH dell'Esercizio 5.6. , ..l,.: ..... prosslma (b) 1 bIt d1 co.mando. relatlv1 alia
:', ,', ' . secondo la tecOlca dl ffilcroprogrammazlOne onzzontale(pag. 55). 81 progettl l'umta
Esercizio 5.8 Si assuma che il campo OFFSET per istruzioni che fanno riferi" :' :, .'.di controllo, definendo nel dettaglio it contenuto delle singole parole della memoria di
mente alIa memoria contenga l'effettivo indirizzo dei byte. Si supponga che si debba ... " controlla. 8i ipotizzi di avere una ALU e un banco di registri BR come quelli usati
prevedere l'istruzione LDB, che carica nella posizione meno sigoificativa del registro nel testo.
di destinazione il byte 1etto, azzerando il resto del registro. Quale modificajaggiunta
sl deve apportare alla ALU di CPU2 per far fronte al problema? ,1 : '"
206
J
\
,
I
I
I
I
\
\
\
I
I
I
\
I
I
1
)
)
)
)
)
1
1
La pipeline e stata introdotta poco dopo la nascita dei primi calcolatori commer-
dali. agli inizi degli anni cinquanta il sistema Univac I adottava la sovrapposizione
di operazioni. Altri tipi di pipeline sono state sviluppate in seguito. Ricordiamo i
sistemi IBM 7094, Honeywell H-800 (1959), Univac Lare (1961) e IBM 360/91. Og-
gi la pipeline e un ingrediente immancabile nel progetto eli un microprocessore. In
particolare, eritenuta un elemento caratteristico delle rnacch.ine RISe.
.. Nel seguito viene usato il termine pipeline per indicare 1a strut.tura a stadi. Questo
termine, come altri dellinguaggio parlato nel mondo dei calcolatori, ediventato ormai
parte del nastro lessica e ha un potere evocativo di gran lunga superiore a quello di
. una possibile traduzione.
,,,.'
-....
,
,I
-
:', ..
";'
'1
"'.,, ,
'.'!?;'":!,",'
'e:...:l ,'- ..
"."
"l1-:t _
.... -
(",
.-
208 Capitola 5 . toto ,tlttj/f ,:;, .. ,'
"',.,,1'/0, .,,'.
-- .
..... " -
y(., "I;,:.' .
,-- , '" , , .
: r.., .
Esercizio 5.21 Con riferimento aHa Figura5.25, si scrivano Ie espressioni di comandi ",:m' i':: :,'" "
e selettori che ne conseguono. ',::'i '
"" ..
<-t:"" ,.'
Esercizio 5.22 Si modifich.i la logica di CPU2 in modo cia eliminare SR e XR
,
pre.. .
vedendo che
l
per saltare alla routine di servizio nella posizione 0 ':A ."....- eline
venga messa I'istruzione BRL Branch and Link, il cui effetto esalvare PC in R31. si, <:-.1
scrivano Ie espressioni dei comandi e dei selettori che risultano inftuenzati da questa, " '
modifica .
. -.f.. I ..;..... ,.,
"i... :
Esercizio 5.23 Si tracci la 10gica per azzerare il flip-flop IE di Figura5.27 quando ,.:-;t ,
si entra sul ramo del trattamenta dell'interruzione nel diagramma degli stati e per; _.. .. ';': "'_ .. '
mantenere asserita la linea lACK per la. durata del ramo. Supponendo che la macchina:','':';# ...... '::
presenti Ie istruzioni SETI e RSTI, si aggiunga la logica che genera i comandi 81 e R!;:-,f:i' !_;:<. 1,_\"
in corrispondenza di tali istruzioni. ,it:_ .\,;-;/.-_
--,.:-, .",:'. "
. . '. ",
'. - '.'--\'
Esercizio 5.24 Si consideri una CPU che esegue istruzioni in piu cicli di clock. .",
primo (Tl) alla. fase IF, i1 secondo (T2) alIa fase ID'. iI terzo alia 'f:;, " Le catene di montaggio sono larga.r:oent: il process?
fase EX. Le. altre non .. La ?PU un flIp-flop (IE) 11 'cui ....';..: . , di fabbricazione di un bene matenale e In una sequenza d.i sottoprocessl
,
stato se il sIstema wterrUZlone eon? ablhtato. AIIJatto della >,' ,. dei quali viene eseguito cia uno stadia della ?e la catena costan:
deve P?rtarsl nella stato .basso, In. modo che non possano ':'::.', ,:, temente alirnentata
,
il tempo richiesto per produrre un umta dl.prodotto non e
an0e se la line.a INTR e assenta: IE vlene. 1 quando Vlene' ,:;,,::-' data dalla somma dei tempi dei vari stachI ten:
po
del (suP.po-
esegw.t:
a
.PIstruzlOne S'I:I basso. se Vlene esegUlta l.lstruzlone Inoltre 3}" ';,:;\. nendo che la permanenza sia 1a stessa per tuttI gh stadt e che Clascun dl eSSl open su
se IE e ill e V1en.e h.nea INTR, a partlre !l la ,:i> .... '.. 'di.una singola unita di prodotto 0 semilavorato).
CPU deve serVlre l'mterruzIOne. CIO nchlede (oltre ad altre funzlOm che qUI non _-;.'-':::.:1 '
che il sistema di interruzione. smTl, ':,'.", . ,- Un simile concetto puo essere utilmente applicato nella di una C,PUI
e che restl lD tale stato fino al CUI non ,,:ene esegutta I _/:.', '_' ,s't,;utturando1a come di che effettuano Ie .azION fl?ueste per I ese-:
oppure fino a che non.e es.egUlta STI. 51 supponga che Ie lStruzlOm che -,j.'t .:: cuzione di ogni istruzlOne, III succeSSlOne temporale, come una dl
IE mo..dlfichino 10 stato In fase EX. .. ,. . :':('.. :,>:. Uanalogia con la catena d1 montaggio fimsce Infattl m quest ultIma
81 dlsegm 1a dl CPU IE a zero m nsposta all mterrUzlOne;. (2).-..:1* ',' : ogni stadio trasferisce al successivo un semilavorato che va
porta.. IE 1 V1ene esegulta I IstruzlOne STI 0 !RET; (3) porta IE a 0 se Vlene . ,nel caso del calcolatore gli "oggetti" in movime.Dto sono lstruzlOlll (comandl)j
IstruzlOne eLI. '. fetti del passaggio restano alI'interno delle part1 che compongono la catena (regtstn
,
81 dlsegm la rete che al momento della messa sotto tenslOne porta IE III stato O. <:c. 'i,', memoria ecc.) e non c'e un prodotto in uscita.
Si supponga di disporre di un clock multifase, ovvero di un certa numero di linee, ' .j,: ,
denominate TI, T2, T3, "I Ie quali risultano asserite in corrispondenza dei :",t
periodi. '.,:'.
: '
':'-'i '
'". ,
.. . ."
':'; ,
.' . :"".
"
:,
''''1' '\"; 'J
.;..,
ncapitola ededicato all'esame delle problernatiche relative a1 funzionarnento in
pipeline e al progetto della relativa unita di controllo
,
compresa la parte di gestione
delle interruzioni. Per rendere piu realistica la trattazione, viene ampliato il repertorio
delle istruzioni del Capitola 5.
)

I
I
\
I
I
1
)
)
)
)
)
1
1
La pipeline e stata introdotta poco dopo la nascita dei primi calcolatori commer-
dali. agli inizi degli anni cinquanta il sistema Univac I adottava la sovrapposizione
di operazioni. Altri tipi di pipeline sono state sviluppate in seguito. Ricordiamo i
sistemi IBM 7094, Honeywell H-800 (1959), Univac Lare (1961) e IBM 360/91. Og-
gi la pipeline e un ingrediente immancabile nel progetto eli un microprocessore. In
particolare, eritenuta un elemento caratteristico delle rnacch.ine RISe.
.. Nel seguito viene usato il termine pipeline per indicare 1a strut.tura a stadi. Questo
termine, come altri dellinguaggio parlato nel mondo dei calcolatori, ediventato ormai
parte del nastro lessica e ha un potere evocativo di gran lunga superiore a quello di
. una possibile traduzione.
,,,.'
-....
,
,I
-
:', ..
";'
'1
"'.,, ,
'.'!?;'":!,",'
'e:...:l ,'- ..
"."
"l1-:t _
.... -
(",
.-
208 Capitola 5 . toto ,tlttj/f ,:;, .. ,'
"',.,,1'/0, .,,'.
-- .
..... " -
y(., "I;,:.' .
,-- , '" , , .
: r.., .
Esercizio 5.21 Con riferimento aHa Figura5.25, si scrivano Ie espressioni di comandi ",:m' i':: :,'" "
e selettori che ne conseguono. ',::'i '
"" ..
<-t:"" ,.'
Esercizio 5.22 Si modifich.i la logica di CPU2 in modo cia eliminare SR e XR
,
pre.. .
vedendo che
l
per saltare alla routine di servizio nella posizione 0 ':A ."....- eline
venga messa I'istruzione BRL Branch and Link, il cui effetto esalvare PC in R31. si, <:-.1
scrivano Ie espressioni dei comandi e dei selettori che risultano inftuenzati da questa, " '
modifica .
. -.f.. I ..;..... ,.,
"i... :
Esercizio 5.23 Si tracci la 10gica per azzerare il flip-flop IE di Figura5.27 quando ,.:-;t ,
si entra sul ramo del trattamenta dell'interruzione nel diagramma degli stati e per; _.. .. ';': "'_ .. '
mantenere asserita la linea lACK per la. durata del ramo. Supponendo che la macchina:','':';# ...... '::
presenti Ie istruzioni SETI e RSTI, si aggiunga la logica che genera i comandi 81 e R!;:-,f:i' !_;:<. 1,_\"
in corrispondenza di tali istruzioni. ,it:_ .\,;-;/.-_
--,.:-, .",:'. "
. . '. ",
'. - '.'--\'
Esercizio 5.24 Si consideri una CPU che esegue istruzioni in piu cicli di clock. .",
primo (Tl) alla. fase IF, i1 secondo (T2) alIa fase ID'. iI terzo alia 'f:;, " Le catene di montaggio sono larga.r:oent: il process?
fase EX. Le. altre non .. La ?PU un flIp-flop (IE) 11 'cui ....';..: . , di fabbricazione di un bene matenale e In una sequenza d.i sottoprocessl
,
stato se il sIstema wterrUZlone eon? ablhtato. AIIJatto della >,' ,. dei quali viene eseguito cia uno stadia della ?e la catena costan:
deve P?rtarsl nella stato .basso, In. modo che non possano ':'::.', ,:, temente alirnentata
,
il tempo richiesto per produrre un umta dl.prodotto non e
an0e se la line.a INTR e assenta: IE vlene. 1 quando Vlene' ,:;,,::-' data dalla somma dei tempi dei vari stachI ten:
po
del (suP.po-
esegw.t:
a
.PIstruzlOne S'I:I basso. se Vlene esegUlta l.lstruzlone Inoltre 3}" ';,:;\. nendo che la permanenza sia 1a stessa per tuttI gh stadt e che Clascun dl eSSl open su
se IE e ill e V1en.e h.nea INTR, a partlre !l la ,:i> .... '.. 'di.una singola unita di prodotto 0 semilavorato).
CPU deve serVlre l'mterruzIOne. CIO nchlede (oltre ad altre funzlOm che qUI non _-;.'-':::.:1 '
che il sistema di interruzione. smTl, ':,'.", . ,- Un simile concetto puo essere utilmente applicato nella di una C,PUI
e che restl lD tale stato fino al CUI non ,,:ene esegutta I _/:.', '_' ,s't,;utturando1a come di che effettuano Ie .azION fl?ueste per I ese-:
oppure fino a che non.e es.egUlta STI. 51 supponga che Ie lStruzlOm che -,j.'t .:: cuzione di ogni istruzlOne, III succeSSlOne temporale, come una dl
IE mo..dlfichino 10 stato In fase EX. .. ,. . :':('.. :,>:. Uanalogia con la catena d1 montaggio fimsce Infattl m quest ultIma
81 dlsegm 1a dl CPU IE a zero m nsposta all mterrUzlOne;. (2).-..:1* ',' : ogni stadio trasferisce al successivo un semilavorato che va
porta.. IE 1 V1ene esegulta I IstruzlOne STI 0 !RET; (3) porta IE a 0 se Vlene . ,nel caso del calcolatore gli "oggetti" in movime.Dto sono lstruzlOlll (comandl)j
IstruzlOne eLI. '. fetti del passaggio restano alI'interno delle part1 che compongono la catena (regtstn
,
81 dlsegm la rete che al momento della messa sotto tenslOne porta IE III stato O. <:c. 'i,', memoria ecc.) e non c'e un prodotto in uscita.
Si supponga di disporre di un clock multifase, ovvero di un certa numero di linee, ' .j,: ,
denominate TI, T2, T3, "I Ie quali risultano asserite in corrispondenza dei :",t
periodi. '.,:'.
: '
':'-'i '
'". ,
.. . ."
':'; ,
.' . :"".
"
:,
''''1' '\"; 'J
.;..,
ncapitola ededicato all'esame delle problernatiche relative a1 funzionarnento in
pipeline e al progetto della relativa unita di controllo
,
compresa la parte di gestione
delle interruzioni. Per rendere piu realistica la trattazione, viene ampliato il repertorio
delle istruzioni del Capitola 5.
)

(61)
,
it tasso di
Indici delle prestazioni
LOvviameme anche Ie strutture pipeline, per la loro stessa natura sono multicic1o, rna per ragioni
di sinteticiU. espositiva., qui e nel seguito, si usa it termine multiciclo per indicare un macchina di
questa tipo non in pipeline. In ambedue i casi si assume che la struUura sialinearel ovvero composta
da piu stadi in cascata. Si escludono tioe Ie strut.ture con stadi multifunzionali paralleli.
2Per quanta vista al Capitolo 3 queste assunzioni sono poco realistiche per 1a 8OIuzione multiciclo,
dove gli stadi vengono attraversati selettivamente a seconda deU'istruzione, rna, come vedremo,
qualcosa di simile epossibile anche con Ie pipeline.
Le prestazioni di una struttura pipeline si misurano essenzialrnente can
esecuzione (I.), I'efficienza (ij) e l' accelera:zione (,,),
6,2,1
,
;, >
, , .
,,,
; !'
:l ,'_,..,
...:',
...
':':'-:,r

.)\' '"
-oL _"
.' ,

Uscita
Uscita
s..
s.
L
.'
L
s,
L
s,
s, s,
.
Capitola 6
lngresso
Clock
lngresso
Figura 6.2 Pipeline lineare'sincronizzata.. Gli stadi sana separati da registri (latch), cui e
applicatq un clock comune. L'istruzione avanza da un registro aI successivo a ogni impulso
di clock: durante il generico periodo di clock ogni stadia elabora il contenuto del registro
alla sua. sinistra, producendo un'uscita che viene memorizzata sui registro aUa. sua destra,
sul ronte finale del clock. Nelle figure che seguono non viene pili riportato il clock, ma il
modelio di funzionamento dei latch resta queUo piu volte descritto} can Ia memorizzazione
sul fronte finale del clock. Se la. pipeline e di k stacH, a regime essa cantiene k istruzioni,
ciascuna. in un diHerente stadia di elabarazione, ma can tutti i segmenti della catena operanti
in paraHela. Nel passare attraverso gli starli, Ia. cqdifica dell'istruzione puo essere modificata
se richiesto dalla logica di macchina..
6.1 Introduzione
.
,.-,..
,iO' ,.. "
,
,-' -
:__----------------------L::a:.!:p:oi
P
:.:e::lin::e:---=2::1::1
.
--

,
."'-'.>\"' >- .
. .. ',
-'v'.",,, ',_
, PrestazlO
lli
c' ,
In Figura6.1viene dato 10 schema di una pipeline lineare L' . , 'f'?':;';" per rendersi conto de' vantaggio introdotto dalla pipeline conviene confrontare questa
struzlOne e suddivisa in k passi ordinati: all'ingresso della : r dl . oluzione architettonica con il caso della CPU monociclo e multiciclo
l
. II confronto e
trattata dallo stadio 1, per poi passare attraverso tutti i vlene:,,'1i!i ;.tlO a parita di stadi, assumendo cioe che, indipendentemente dalla realizzazione, la
S;adIO finale. Dlversamente dalla soluzione multiciclo esaminata al Ca : CPU prese
ntl
sempre 10 ,tesso numero dl stadl e che tutte Ie IstruzlOfil li attraversmo
1.lstruzlOne passa claUo stadio 1 aHo stadia 2 neUe stadia 1 entra 1" . 3) quando . sempre tuttl
2
.
Slva, in modo da mantenere possibilmente impegn t' t tt' I succes- ';'i".:;;,,,:,',:. Si indichi con T, il tempo richiesto dal generico stadio, cpu T
p
il di clock
come in una catella di montaggio. Natuialmente e I,. proprio ,:.:W della inpipeline, con Tmono iI. periodo di cloc ella soluzione monociclo e
ne attraver'l alcum stadl ,enza ,volgere alcuna azione, rna, almeno nello
ta
Istruzl": ..'1\1.;,,<:: .' conTmulti queUo dena ,?Iuzlone multlclclo. T
p
dovr!> e,sere pan al tempo nchlesto
Flgura6.1, nessun stacho puo essere evitato. schema d.1 : lh ... daUO stadlO plu lento} Plu 11 tempo 'T"l necessano aJ. latch per memonzzare 11 nsultato
':.. (assunto uguale per tutti). Si ha. cioe:
T a { } + T +
i;"'J .,,:1, L., , P = m x Tj, ,'-I c T, = m"'t,' T,
-, ,,1< ..
.-,. 'il:( .
i":"':' ntempo per eseguire un'istruzione nei tre casi erispettivamente:
, .... .. ... ' '
"I _A', ..: - T (6 2)
,.,:... T
mono
- mono .
." . --.. ",
. Trnutti = kTmuJti (6.3)
, j," ,-,' ,'.
Figura. 6,1 Schema di una pipeline lineare, Gli staeli della catena 51 ,5, ,,,,5, sono Con' ',1:":",: , T
p
= kT
p
(6.4)
ill rnameta senale: le lstruzlODl entrana da un estremo I b I , ",J!: -'.. ,.,'.... ..' . ..'
previsto dalla catena ed escono dall'altro. ' vengono e. orate secondo I ordlne :..',: (,.. " In altre parole, per vIa del latch, la plpelme allunga II penodo nspetto alIa
:.i ":i ,:": .- . soluzione multiciclo convenz.ionale. Questa inconveniente eperc pili che compensato
.. "" '. ..
:' dal migJioramento complessivo delle prestazioni. Facciamo un esernpio pratico a chiosa
,.(fS delle considerazioni precedenti,
Sebbene in linea di principio una p' I' " <1>,"::.-' Si consideri un processore che esegue le istruzioni in quattro passi (K=4), aventi
. ' .. .' Ipe me meare possa essere composta da, )'\ ',':' d .
stadl comp1etamente asmcrolll, nsulta ovvio che in un calcolatore I'av t ,questa urata.
nella i lin e' . . ' anzamen 0 "','f' "":'':'.'I.,L,'' ,
pe e smcrOlllzzato dal clock, come III Figura 6.2 [Ram??]. " Tl ;;:: 65ns; T2;;:: 70nsj 'T3;;:: gOnsj T4 ;;:: 75ns
.'j 'I
.",'?J :,t',' , esi ipotizzi che i latch richiedano un 'TI di 10 ns. I tre profili di esecuzione sana riportati
,j1 , in Figura 6.3. 1 tempi di permanenza di un'istruzione in CPU sono rispettivamente:
.> ':,::'-': ::c':: 300, 360 e 400 us. Per la CPU monociclo e multiciclo il numero di istruzioni eseguite
,<?, " per unita di tempo erispettivamente 1/300 e 1/400
1
mentre per 1a CPU in pipeline}
,<::: .' .-" a causa della sovrapposizione delle operazioni, il numero di istruzioni eseguite peT
/ unita di tempo e 4/400 ;;:: 1/100, con un,guadagno di prestazioni pari a 3 e 3
1
6
-:;" '",:.: rispettivamente,
')f',
".
" ' e
"I,"
',:',',.".,'.
',,',' ,.-
<' ,
..:'1 I',

,:-:.
,'II ':.:.;'
,. ,
.' " " ....,

210
\
I
\
\
\
\
\
\
I
\
\
\
\
\
(61)
,
it tasso di
Indici delle prestazioni
LOvviameme anche Ie strutture pipeline, per la loro stessa natura sono multicic1o, rna per ragioni
di sinteticiU. espositiva., qui e nel seguito, si usa it termine multiciclo per indicare un macchina di
questa tipo non in pipeline. In ambedue i casi si assume che la struUura sialinearel ovvero composta
da piu stadi in cascata. Si escludono tioe Ie strut.ture con stadi multifunzionali paralleli.
2Per quanta vista al Capitolo 3 queste assunzioni sono poco realistiche per 1a 8OIuzione multiciclo,
dove gli stadi vengono attraversati selettivamente a seconda deU'istruzione, rna, come vedremo,
qualcosa di simile epossibile anche con Ie pipeline.
Le prestazioni di una struttura pipeline si misurano essenzialrnente can
esecuzione (I.), I'efficienza (ij) e l' accelera:zione (,,),
6,2,1
,
;, >
, , .
,,,
; !'
:l ,'_,..,
...:',
...
':':'-:,r

.)\' '"
-oL _"
.' ,

Uscita
Uscita
s..
s.
L
.'
L
s,
L
s,
s, s,
.
Capitola 6
lngresso
Clock
lngresso
Figura 6.2 Pipeline lineare'sincronizzata.. Gli stadi sana separati da registri (latch), cui e
applicatq un clock comune. L'istruzione avanza da un registro aI successivo a ogni impulso
di clock: durante il generico periodo di clock ogni stadia elabora il contenuto del registro
alla sua. sinistra, producendo un'uscita che viene memorizzata sui registro aUa. sua destra,
sul ronte finale del clock. Nelle figure che seguono non viene pili riportato il clock, ma il
modelio di funzionamento dei latch resta queUo piu volte descritto} can Ia memorizzazione
sul fronte finale del clock. Se la. pipeline e di k stacH, a regime essa cantiene k istruzioni,
ciascuna. in un diHerente stadia di elabarazione, ma can tutti i segmenti della catena operanti
in paraHela. Nel passare attraverso gli starli, Ia. cqdifica dell'istruzione puo essere modificata
se richiesto dalla logica di macchina..
6.1 Introduzione
.
,.-,..
,iO' ,.. "
,
,-' -
:__----------------------L::a:.!:p:oi
P
:.:e::lin::e:---=2::1::1
.
--

,
."'-'.>\"' >- .
. .. ',
-'v'.",,, ',_
, PrestazlO
lli
c' ,
In Figura6.1viene dato 10 schema di una pipeline lineare L' . , 'f'?':;';" per rendersi conto de' vantaggio introdotto dalla pipeline conviene confrontare questa
struzlOne e suddivisa in k passi ordinati: all'ingresso della : r dl . oluzione architettonica con il caso della CPU monociclo e multiciclo
l
. II confronto e
trattata dallo stadio 1, per poi passare attraverso tutti i vlene:,,'1i!i ;.tlO a parita di stadi, assumendo cioe che, indipendentemente dalla realizzazione, la
S;adIO finale. Dlversamente dalla soluzione multiciclo esaminata al Ca : CPU prese
ntl
sempre 10 ,tesso numero dl stadl e che tutte Ie IstruzlOfil li attraversmo
1.lstruzlOne passa claUo stadio 1 aHo stadia 2 neUe stadia 1 entra 1" . 3) quando . sempre tuttl
2
.
Slva, in modo da mantenere possibilmente impegn t' t tt' I succes- ';'i".:;;,,,:,',:. Si indichi con T, il tempo richiesto dal generico stadio, cpu T
p
il di clock
come in una catella di montaggio. Natuialmente e I,. proprio ,:.:W della inpipeline, con Tmono iI. periodo di cloc ella soluzione monociclo e
ne attraver'l alcum stadl ,enza ,volgere alcuna azione, rna, almeno nello
ta
Istruzl": ..'1\1.;,,<:: .' conTmulti queUo dena ,?Iuzlone multlclclo. T
p
dovr!> e,sere pan al tempo nchlesto
Flgura6.1, nessun stacho puo essere evitato. schema d.1 : lh ... daUO stadlO plu lento} Plu 11 tempo 'T"l necessano aJ. latch per memonzzare 11 nsultato
':.. (assunto uguale per tutti). Si ha. cioe:
T a { } + T +
i;"'J .,,:1, L., , P = m x Tj, ,'-I c T, = m"'t,' T,
-, ,,1< ..
.-,. 'il:( .
i":"':' ntempo per eseguire un'istruzione nei tre casi erispettivamente:
, .... .. ... ' '
"I _A', ..: - T (6 2)
,.,:... T
mono
- mono .
." . --.. ",
. Trnutti = kTmuJti (6.3)
, j," ,-,' ,'.
Figura. 6,1 Schema di una pipeline lineare, Gli staeli della catena 51 ,5, ,,,,5, sono Con' ',1:":",: , T
p
= kT
p
(6.4)
ill rnameta senale: le lstruzlODl entrana da un estremo I b I , ",J!: -'.. ,.,'.... ..' . ..'
previsto dalla catena ed escono dall'altro. ' vengono e. orate secondo I ordlne :..',: (,.. " In altre parole, per vIa del latch, la plpelme allunga II penodo nspetto alIa
:.i ":i ,:": .- . soluzione multiciclo convenz.ionale. Questa inconveniente eperc pili che compensato
.. "" '. ..
:' dal migJioramento complessivo delle prestazioni. Facciamo un esernpio pratico a chiosa
,.(fS delle considerazioni precedenti,
Sebbene in linea di principio una p' I' " <1>,"::.-' Si consideri un processore che esegue le istruzioni in quattro passi (K=4), aventi
. ' .. .' Ipe me meare possa essere composta da, )'\ ',':' d .
stadl comp1etamente asmcrolll, nsulta ovvio che in un calcolatore I'av t ,questa urata.
nella i lin e' . . ' anzamen 0 "','f' "":'':'.'I.,L,'' ,
pe e smcrOlllzzato dal clock, come III Figura 6.2 [Ram??]. " Tl ;;:: 65ns; T2;;:: 70nsj 'T3;;:: gOnsj T4 ;;:: 75ns
.'j 'I
.",'?J :,t',' , esi ipotizzi che i latch richiedano un 'TI di 10 ns. I tre profili di esecuzione sana riportati
,j1 , in Figura 6.3. 1 tempi di permanenza di un'istruzione in CPU sono rispettivamente:
.> ':,::'-': ::c':: 300, 360 e 400 us. Per la CPU monociclo e multiciclo il numero di istruzioni eseguite
,<?, " per unita di tempo erispettivamente 1/300 e 1/400
1
mentre per 1a CPU in pipeline}
,<::: .' .-" a causa della sovrapposizione delle operazioni, il numero di istruzioni eseguite peT
/ unita di tempo e 4/400 ;;:: 1/100, con un,guadagno di prestazioni pari a 3 e 3
1
6
-:;" '",:.: rispettivamente,
')f',
".
" ' e
"I,"
',:',',.".,'.
',,',' ,.-
<' ,
..:'1 I',

,:-:.
,'II ':.:.;'
,. ,
.' " " ....,

210
\
I
\
\
\
\
\
\
I
\
\
\
\
\
I
J
)
I
I
1
I
\
I
\
1
\
I
1
1
I
1
(6.7)
C = c.k +c/
T = 'TmE
M
+T/
Monociclo Multiciclo
Piperine
J1, - 1 -
I" - 1 -
1Jmono = -r::::::: = multi - n .....It; -
p - To-
.........
,
_ 1
I I
-V
= k.mu{T";};.l ..... 1o = ma:t{-ri}i_l .... ,lt+1'1
Come in tutti i problemi di progettazione, il progetto di un processore pipeline
.richiede ebe si definisca una funzione obiettivo da ottimizzare. Una tecnica di progetto
-consiste nel trovare il numero di stadi k che ottimizzi il prodotto costo-velocita.. Nel.
caso ideale in cui tutti i segmenti richiedono un uguale tempo pari a Tmonolkl si ha:
[Slruzlone 3
l,Itnlzlone J
Istru'l.iolle 2
lslruzlone 2
Istruttone 1
btru'&lone 1
90 90 SO SO
90 90 90 SO
90 90 90 90
90 90 90
I 400 I
65 70
"
15
"
7'
90 75
"
70 90
7'
I '" I 360 I 360 I
1901901901'01901'01901"190190190[901
I 300 I 300 I '00 I
Capitolo 6
Si pub notare che 1] -t 1 se n -+ 00.
(0) ptpaUne
(b) raulUclclo
(a) 1:000001010
212
_"
",.--,
'>In:' "-
: La pipeline 213
__---------------------------==..02.==---=
_" !Jf!h.':<','J 0' .. :..-
.. l'.-). ,
....
- '-. ," 1 ,,-,.,,_ ."
- ." -, > \":1' ','
,.',I>!', ,'.r
"'1',1:1 ',. \ '
: .-''',,' ',' 'J'
. ....t,. "
. .. ." . -
'" \ . .
..f, '.:'. '
-. ,;:!:''.l,'. '
" ",\,1; ,I;" ,,-', , . _
':t\ 1'';', , '
.- :',:.. ' -,'. '
",\.' t, ..
", . 0; , '\' ,n
::tA! , .... \":',
.... I,;' ..:
". '.. " ,
.., '" ",.
.', :."... II 6 1 Tasso di esecuzione (numerQ di istruzioni completate nell'unitA di tempo)
Tabe a . . . "d'\'t 'd t I
,.',): ::," .. per i tre casi consideratl. Per la plpehne non e stato CODSI erato 1 traJun OrIO OVU 0 a
:" ,"';':."_', . riernpimento.
. ,'" ... ' , .
"'''''"
.!"! '.
'.':;1 :.'.' .
- ":'1,;.\;' .',
'. :+1'" .
"1" f'.': '
,- ":'t
l
,;,: :"i; '. A lerazione Si definisce auelera.z.ione di liD processore con Illi>eline Uneare ri-
". cce I I" t 'I t '
spetto a un processore multi" r.t.QJ.ra leora ye oyyero sa I oro
: ::,::'. ',:, .. ':;' al"eset umendo per T
p
== Tmulti = T SI ha:
.;"! >,' up nkT nk
-,',l: i..' _ r- - ' - =k1]
. . . . I' . -', '. ' a - J.Lmulti - kT + (n - l)T - k +n - 1
6.3. .di eseCUZlOne e te:np1 di permanenza CP:U. Ne la monoclclo , . . .. . . .
degh stadi semphcementei. cel.la multlclclo Ii e a. .. dove (k + n _ l)T e II tempe per esegwre n lstruZlOnI nel case di plpehne,
rIchiesto dallo stadlO pill leoto; nel caso della deve.essere II del ":'-' .:,., , - t nkT eil tempo richiesto per il completamento delle n lstruzlOOl nel caso
Come si vede, sebbene il tempo tatale che un'lstruZlOne passa nella plpehne sia 400 ns, vlene J:':;! :.',',,' , men re. I
1 b I" 100 ' """', , ", convenZl0na e. '. .
e a orata un IstruzlOne ognl ns. >\,\,.'. " , Si noti che Q -t k se n k, ovvero: al crescere dt n, it tempo per rlempue la
" " ,, ", ::',,::i:<" pipeline diventa trascurabile rispetto al tempo totale per completare n i,truzioni.
dJ E il dl .. _
dl tempo. D tasso dl esecuzlone per 1 tre Casl dl CPU monoclclo (l-tmono), multloclo .... :,,-, _. ...
(J,lmultd-e in pipeline (.up) sonG riportati in Tabella 6.1. II tasso COS! calcolato ',:,:"'-,,1' " 6.2.2 Conslderazlonl
tiene conto del transitorio di riempimento della pipeline. :.}liJ: 1/1..:':'<::.
Se si considera invece il riempimento, partendo dalla condizione di pipeline vuota, :,:-> ntasso di esecuzione sia di una CPU multiciclo sia di una CPU pipeline, efortemente
per completare n istruzioni si richiedono k+(n-l) dcli di clock: k cieli per riempire la ;';:" ,,:'" .inftuenzato dallo stadia piu lento, it cosiddetto "colla di battiglia" (bottleneck). In
pipeline e completare }'esecuzione della prima istruzione, e (n - cicli per completare t, '-,.:,' :.' Figura 6.4 viene riportato un esempio di rimozione di un collo di bottiglia. La pipeline
Ie rimanenti (n - 1) istruzioni. Occorre dunque un tempo par.l a [k + (n -:-.l)]T
p
: . _originale a) presenta uno stadia con durata tre volte superiore agli altri. Le soluzioni
tasso medio di esecuzionel J.Lp, edunque dato dal rapporto tra 11 numero dl ..... : .. possibili consistono nel suddividere 1a struttura in tre starn seriali b) 0 in tre stadi
eseguite e il tempo trascorso, doe: e,:' .,' paraUeli c). La soluzione c) introduce una pipeline non lineare, tipica dei processod
J,lp = n (6.5)' r..<:.. superscalari. Questa genere di pipeline non viene esaminato in questo capitolo.
kTp + (n - 1)Tp "
" '
Osserviamo che, per n -t 00, jJ.p J.Lp. In altre parole, J.Lp di Tabella 6.lV; ..
rappresenta il limite superiore del tasso di esecuzione, it tasso idea1e, mai del tutto ::,
raggiungibile anche a causa dei molteplici fattori discussi in seguito. : :;:,1; ..;:
.1 "
... .-,
.. ;
',,;:; t. ,":, ";.
-fficienza .,Uefficienza 0 utiJizzazione e in .cPU e .
occupata e SI puo calcolare come ..":';' :.:' _," . .
ideafe:- . ,':.\ .. ,:' '. ,_ Assumendo che il costo totale possa essere calcolato come somma dJ un casto fisso
_ I'P _ n _ n (6.6) i,: ".' c/ e di una pa,rte proporzionale al costa di ogni segmento secondo un coefficiente di
- I"p - (kT
p
+ (n -l)T
p
)/(T
p
) - k+ (n -1) ':,,' t'.: prOpofZlonalitac" il costo totale C edato da:
:Ll 'I'" "
' ,
" .:'-' ..
,:.:i .. :., .
,'t': ,,j , " .:
, , " . "
.>\,., ,.,.':,.......
I
J
)
I
I
1
I
\
I
\
1
\
I
1
1
I
1
(6.7)
C = c.k +c/
T = 'TmE
M
+T/
Monociclo Multiciclo
Piperine
J1, - 1 -
I" - 1 -
1Jmono = -r::::::: =
multi - n .....It; -
p - To-
.........
,
_ 1
I
I
-V
= k.mu{T";};.l ..... 1o = ma:t{-ri}i_l .... ,lt+1'1
Come in tutti i problemi di progettazione, il progetto di un processore pipeline
.richiede ebe si definisca una funzione obiettivo da ottimizzare. Una tecnica di progetto
-consiste nel trovare il numero di stadi k che ottimizzi il prodotto costo-velocita.. Nel.
caso ideale in cui tutti i segmenti richiedono un uguale tempo pari a Tmonolkl si ha:
[Slruzlone 3
l,Itnlzlone J
Istru'l.iolle 2
lslruzlone 2
Istruttone 1
btru'&lone 1
90 90 SO SO
90 90 90 SO
90 90 90 90
90 90 90
I 400 I
65 70
"
15
"
7'
90 75
"
70 90
7'
I '" I 360 I 360 I
1901901901'01901'01901"190190190[901
I 300 I 300 I '00 I
Capitolo 6
Si pub notare che 1] -t 1 se n -+ 00.
(0) ptpaUne
(b) raulUclclo
(a) 1:000001010
212
_"
",.--,
'>In:' "-
: La pipeline 213
__---------------------------==..02.==---=
_" !Jf!h.':<','J 0' .. :..-
.. l'.-). ,
....
- '-. ," 1 ,,-,.,,_ ."
- ." -, > \":1' ','
,.',I>!', ,'.r
"'1',1:1 ',. \ '
: .-''',,' ',' 'J'
. ....t,. "
. .. ." . -
'" \ . .
..f, '.:'. '
-. ,;:!:''.l,'. '
" ",\,1; ,I;" ,,-', , . _
':t\ 1'';', , '
.- :',:.. ' -,'. '
",\.' t, ..
", .
0; , '\' ,n
::tA! , .... \":',
.... I,;' ..:
". '.. " ,
.., '" ",.
.', :."... II 6 1 Tasso di esecuzione (numerQ di istruzioni completate nell'unitA di tempo)
Tabe a . . . "d'\'t 'd t I
,.',): ::," .. per i tre casi consideratl. Per la plpehne non e stato CODSI erato 1 traJun OrIO OVU 0 a
:" ,"';':."_', . riernpimento.
. ,'" ... ' , .
"'''''"
.!"! '.
'.':;1 :.'.' .
- ":'1,;.\;' .',
'. :+1'" .
"1" f'.': '
,- ":'t
l
,;,: :"i; '. A lerazione Si definisce auelera.z.ione di liD processore con Illi>eline Uneare ri-
". cce I I" t 'I t '
spetto a un processore multi" r.t.QJ.ra leora ye oyyero sa I oro
: ::,::'. ',:, .. ':;' al"eset umendo per T
p
== T
multi
= T SI ha:
.;"! >,' up nkT nk
-,',l: i..' _ r- - ' - =k1]
. . . . I' . -', '. ' a - J.Lmulti - kT + (n - l)T - k +n - 1
6.3. .di eseCUZlOne e te:np1 di permanenza CP:U. Ne la monoclclo , . . .. . . .
degh stadi semphcementei. cel.la multlclclo Ii e a. .. dove (k + n _ l)T e II tempe per esegwre n lstruZlOnI nel case di plpehne,
rIchiesto dallo stadlO pill leoto; nel caso della deve.essere II del ":'-' .:,., , - t nkT eil tempo richiesto per il completamento delle n lstruzlOOl nel caso
Come si vede, sebbene il tempo tatale che un'lstruZlOne passa nella plpehne sia 400 ns, vlene J:':;! :.',',,' , men re. I
1 b I" 100 ' """', , ", convenZl0na e. '. .
e a orata un IstruzlOne ognl ns. >\,\,.'. " , Si noti che Q -t k se n k, ovvero: al crescere dt n, it tempo per rlempue la
" " ,, ", ::',,::i:<" pipeline diventa trascurabile rispetto al tempo totale per completare n i,truzioni.
dJ E il dl .. _
dl tempo. D tasso dl esecuzlone per 1 tre Casl dl CPU monoclclo (l-tmono), multloclo .... :,,-, _. ...
(J,lmultd-e in pipeline (.up) sonG riportati in Tabella 6.1. II tasso COS! calcolato ',:,:"'-,,1' " 6.2.2 Conslderazlonl
tiene conto del transitorio di riempimento della pipeline. :.}liJ: 1/1..:':'<::.
Se si considera invece il riempimento, partendo dalla condizione di pipeline vuota, :,:-> ntasso di esecuzione sia di una CPU multiciclo sia di una CPU pipeline, efortemente
per completare n istruzioni si richiedono k+(n-l) dcli di clock: k cieli per riempire la ;';:" ,,:'" .inftuenzato dallo stadia piu lento, it cosiddetto "colla di battiglia" (bottleneck). In
pipeline e completare }'esecuzione della prima istruzione, e (n - cicli per completare t, '-,.:,' :.' Figura 6.4 viene riportato un esempio di rimozione di un collo di bottiglia. La pipeline
Ie rimanenti (n - 1) istruzioni. Occorre dunque un tempo par.l a [k + (n -:-.l)]T
p
: . _originale a) presenta uno stadia con durata tre volte superiore agli altri. Le soluzioni
tasso medio di esecuzione
l
J.Lp, edunque dato dal rapporto tra 11 numero dl ..... : .. possibili consistono nel suddividere 1a struttura in tre starn seriali b) 0 in tre stadi
eseguite e il tempo trascorso, doe: e,:' .,' paraUeli c). La soluzione c) introduce una pipeline non lineare, tipica dei processod
J,lp = n (6.5)' r..<:.. superscalari. Questa genere di pipeline non viene esaminato in questo capitolo.
kTp + (n - 1)T
p
"
" '
Osserviamo che, per n -t 00, jJ.p J.Lp. In altre parole, J.Lp di Tabella 6.lV; ..
rappresenta il limite superiore del tasso di esecuzione, it tasso idea1e, mai del tutto ::,
raggiungibile anche a causa dei molteplici fattori discussi in seguito. : :;:,1; ..;:
.1 "
... .-,
.. ;
',,;:; t. ,":, ";.
-fficienza .,Uefficienza 0 utiJizzazione e in .cPU e .
occupata e SI puo calcolare come ..":';' :.:' _," . .
ideafe:- . ,':.\ .. ,:' '. ,_ Assumendo che il costo totale possa essere calcolato come somma dJ un casto fisso
_ I'P _ n _ n (6.6) i,: ".' c/ e di una pa,rte proporzionale al costa di ogni segmento secondo un coefficiente di
- I"p - (kT
p
+ (n -l)T
p
)/(T
p
) - k+ (n -1) ':,,' t'.: prOpofZlonalitac" il costo totale C edato da:
:Ll 'I'" "
' ,
" .:'-' ..
,:.:i .. :., .
,'t': ,,j , " .:
, , " . "
.>\,., ,.,.':,.......
214 Capitola 6
6.3 Alcune estensioni al repertCirio delle istruzioni
h
Figura 6.4 Sostituzione del collo di bottiglia della pipeline a) con tre stadi seriali (caro b)
o con tre starn paralleli (caso c). La soluzione c) introduce una pipeline non lineare, tipica
dei processori superscalari.
215 La pipeline
LW (Load Word), SW (Store Word)
Corrispondono aile precedenti LO eST.
La parola deve essere aUineata agli indirizzi multipli di 4.
L'istruzione LB carica un byte dalla 10cazione <u memoria indirizzata (senza:-
estenderne il segno) e 10 pone nella parte meno significativa del registro di
destinazione.
L'istruzione SB permette invece di memorizzare iI byte menD significativo
del registro sorgente nella locazione indirizzata.
LH (Load Hallward), SH (Store Hallward)
Nel caso di LH, il contenuto della semiparola (due byte) alia locazione di
memoria indirizzata viene caricato nel registro di destinazione (di cui va a
occupare la meta meno significativa).
Nel caso di SH la meta meno significativa del registro sorgente viene scritta
all'indiri:qzo di memoria.
La semiparola cleve essere allineata a indirizzi pari. In caso di disallineamento
la logica di CPU genera un'eccezione per errore di indirizzamento
3
(di questa
aspetto si pacla piu avanti, nella sezione dedicata aile interruzioni e aIle
eccezioni) .
a) suI codice di istruzione, per discriminare la dimensione del dato (paroia,
semiparola 0 byte);
b) sui due bit di ordine pili basso dell'indirizzo, AO e AI, per rnuovere it dato
nella giusta posizione.
Nel seguito, per semplificare l'esposizione, quando non vi sia possibilita di confu-
sione, vena usata la notazione generica ST e LD laddove ci si voglia riferire in
modo generico a tutte Ie istruzioni del medesimo gruppo.
Occone evidenziare che l'indirizzamento al byte e alla semiparola ricbiede che nel
campo OFFSET venga codificato 10 scostamento effettivo e non il suo rapporta
a 4, come nel caso di CPUI e CPU2. Inoltre, per poter trasferire i tre tipi diversi
di dati, occane introdurre un po' di logica. Questa si basa:
In base a1 codice di operazione vengono generati i due segnali ENW (Enable
Word) e ENH (Enable Hallward), di cui la Tabella 2 specifica la combinazione
dei valori in rapporto alla dimensione del date trasferito. Le Figure 6.5 e 6.6
mostrano 10 schema della logica relativa; essa diventa parte delle stadio ME.
3. Istruzioni di salto
Aile istruzioni di saito condizionato (JE e JS) e incondizionato (JMP) del Capitolo
5 si aggiungono Ie seguenti.
,

, .
,.
., ....
,
,- .. , -
,
" .....
t.
,
"
",.
, , " ...
.
..
..

,
,.

,-,'
"
.1 -\
: I ""
,
r
' .
e .
. '.
,;
, .
'.'.'
, ., I
',;'
.,
.. ",
....,
..
'I'
:, ',1,
.' "
l "
,"
(6.8)
,

2
2
,
oj
b)

2
2
,.
1
2
3
J.

3 2
3
.J

1
Il repertorio delle istruzioni della CPU in pipeline e queUo assunto al Capitola 5,
con l'aggiunta eli atcune istruzioni riguardanti: (1) la possibilita di ieggere/scrivere
in memoria non solo parole, rna anche semiparole e byte; (2) l'istruzione di ritorno
dall'interruzione; (3) ulteriori istruzioni di salto.
r. Istruzioni aritmetiche e logiche
Restano esattamente queUe definite al Capitolo 5. Per brevita, nel riferirci a que-
sta categoria di istruzioni si usa il termine "istruzioni aritmetiche" e si denotano
come ARlTM.
2. Istruzioni che leggonojscrivono in memoria
In precedenza si era supposto di avere solo Ie due istruzioni di caricamento e
memorizzazione di una parola (LO eST). Vogliamo Ora prevedere istruzioni di
letturafscrittura in memoria che trasferiscano, non solo la parola, rna anche la
semipacola e il byte. Piu precisamente:
-
La segmentazione ottima k, [Ram77], equella che minimizza il prodotto in 6.8.
nprodotto costo-velocita equindi:
(c,k +c )( I ) = k c,k +cJ
f T
m
;09 +Tz T
mono
+kTI
\
I
I
I
I
I
I
I
I
I
." !
LB (Load Byte), SB (Store Byte)
,
.,
..

,
..
JLa generazione dell 'eccezione eeJementare: si tratta di confrontare il codice di operazione rispetto
al valore assunto dai due bit meno significativi dell'indirizzo.

214 Capitola 6
6.3 Alcune estensioni al repertCirio delle istruzioni
h
Figura 6.4 Sostituzione del collo di bottiglia della pipeline a) con tre stadi seriali (caro b)
o con tre starn paralleli (caso c). La soluzione c) introduce una pipeline non lineare, tipica
dei processori superscalari.
215 La pipeline
LW (Load Word), SW (Store Word)
Corrispondono aile precedenti LO eST.
La parola deve essere aUineata agli indirizzi multipli di 4.
L'istruzione LB carica un byte dalla 10cazione <u memoria indirizzata (senza:-
estenderne il segno) e 10 pone nella parte meno significativa del registro di
destinazione.
L'istruzione SB permette invece di memorizzare iI byte menD significativo
del registro sorgente nella locazione indirizzata.
LH (Load Hallward), SH (Store Hallward)
Nel caso di LH, il contenuto della semiparola (due byte) alia locazione di
memoria indirizzata viene caricato nel registro di destinazione (di cui va a
occupare la meta meno significativa).
Nel caso di SH la meta meno significativa del registro sorgente viene scritta
all'indiri:qzo di memoria.
La semiparola cleve essere allineata a indirizzi pari. In caso di disallineamento
la logica di CPU genera un'eccezione per errore di indirizzamento
3
(di questa
aspetto si pacla piu avanti, nella sezione dedicata aile interruzioni e aIle
eccezioni) .
a) suI codice di istruzione, per discriminare la dimensione del dato (paroia,
semiparola 0 byte);
b) sui due bit di ordine pili basso dell'indirizzo, AO e AI, per rnuovere it dato
nella giusta posizione.
Nel seguito, per semplificare l'esposizione, quando non vi sia possibilita di confu-
sione, vena usata la notazione generica ST e LD laddove ci si voglia riferire in
modo generico a tutte Ie istruzioni del medesimo gruppo.
Occone evidenziare che l'indirizzamento al byte e alla semiparola ricbiede che nel
campo OFFSET venga codificato 10 scostamento effettivo e non il suo rapporta
a 4, come nel caso di CPUI e CPU2. Inoltre, per poter trasferire i tre tipi diversi
di dati, occane introdurre un po' di logica. Questa si basa:
In base a1 codice di operazione vengono generati i due segnali ENW (Enable
Word) e ENH (Enable Hallward), di cui la Tabella 2 specifica la combinazione
dei valori in rapporto alla dimensione del date trasferito. Le Figure 6.5 e 6.6
mostrano 10 schema della logica relativa; essa diventa parte delle stadio ME.
3. Istruzioni di salto
Aile istruzioni di saito condizionato (JE e JS) e incondizionato (JMP) del Capitolo
5 si aggiungono Ie seguenti.
,

, .
,.
., ....
,
,- .. , -
,
" .....
t.
,
"
",.
, , " ...
.
..
..

,
,.

,-,'
"
.1 -\
: I ""
,
r
' .
e .
. '.
,;
, .
'.'.'
, ., I
',;'
.,
.. ",
....,
..
'I'
:, ',1,
.' "
l "
,"
(6.8)
,

2
2
,
oj
b)

2
2
,.
1
2
3
J.

3 2
3
.J

1
Il repertorio delle istruzioni della CPU in pipeline e queUo assunto al Capitola 5,
con l'aggiunta eli atcune istruzioni riguardanti: (1) la possibilita di ieggere/scrivere
in memoria non solo parole, rna anche semiparole e byte; (2) l'istruzione di ritorno
dall'interruzione; (3) ulteriori istruzioni di salto.
r. Istruzioni aritmetiche e logiche
Restano esattamente queUe definite al Capitolo 5. Per brevita, nel riferirci a que-
sta categoria di istruzioni si usa il termine "istruzioni aritmetiche" e si denotano
come ARlTM.
2. Istruzioni che leggonojscrivono in memoria
In precedenza si era supposto di avere solo Ie due istruzioni di caricamento e
memorizzazione di una parola (LO eST). Vogliamo Ora prevedere istruzioni di
letturafscrittura in memoria che trasferiscano, non solo la parola, rna anche la
semipacola e il byte. Piu precisamente:
-
La segmentazione ottima k, [Ram77], equella che minimizza il prodotto in 6.8.
nprodotto costo-velocita equindi:
(c,k +c )( I ) = k c,k +cJ
f T
m
;09 +Tz T
mono
+kTI
\
I
I
I
I
I
I
I
I
I
." !
LB (Load Byte), SB (Store Byte)
,
.,
..

,
..
JLa generazione dell 'eccezione eeJementare: si tratta di confrontare il codice di operazione rispetto
al valore assunto dai due bit meno significativi dell'indirizzo.

./.
< ';'
,
)
\
I
1
I
1
J
]
J
)
).
217

La pipeline
Bus
I
I"ter"'no
I
f'...
i0... 31
I
,
I
1./ '32
o +.{>--+.
Bus
Es;1:"rr'lO
I
0...
31
l
24".31
I
r>
I07
\
. 16...23


I
8... 15
0.... 7

./

ENH
R
[Nil
AI A'O
Figura 6.5 Schema per il caricarneoto dalla memoria di una parola, una semiparola a un
byte. II dato viene messo suI bus interno dopo essere stato selezionato tra.m.ite i segnali ENW
e ENH (Tabella 2). 11 segnale di ENW comanda il trasferimento di un.'intera paz-ala. Se il
segnale ENW edisasserito, un buffer Can uscita a 16 bit mantiene a zero i 16 bit piu signifi-
cativi sur bus interne e l'ulteriore selezione tra semiparola 0 byte edeterminata da.! valore di
ENH: se easserito vengono trasferiti i 16 bit selezionati attraverso At, se edisasserito viene
mantenuto a zero anche il byte corrispondente ai bit 8.. 15 del bus interno, mentre sul byte
meno significativQ viene trasferito il byte selezionato in base alia combinazione (AoAt) dei
due bit meno significativi dell'indirizzo di memoria. La combinazione 11 per ENW, ENH
non econsentita: la logica di macchina cleve garantire che essa nan si possa mai manifestare.

f.
I
"
'.
.'
,
....'. .
. .
I Entita di memoria trasferita I ENW I ENH
I Byte
0 0
IWord
1
0
Halfword
0
I
1
I Non permeaso
1
1
Capitola 6
JAL (Jump And Link)
JR (Jump Register) . "';1<.
Provoca il salto incondlzionato alI'indirizzo contenuta nel registro codificato ': .:i,'
nell';struzione'. Puo essere u,ata come istmz;one di citorno da una "',"
tme mdlflzzandola al reglstro R31 0 a qualunque altro m CUI estate , ,.. ':, '
l'indirizzo di ritorno
6
. "',':.;; ,'.<.-' ::..
216
: ,..
Tabella 6.2 Codifica. dei segnali ENH e ENW in rapporto all'indirizzamento delle differenti '".
ent;t' d; memo,;a. La combinazione 11 non econsenbta.'ii.::'"
<.J :..; , .
};'.'-
:;;::, '.
-: ,,. .
L'istruzione JAL viene usata per Ie chiamate ai sottoprogrammi: essa pro- ":8 <
voca il saIto incondizionato alI'indirizzo di destinazione e salva l'indirizzo .,;K .:.:.
- ,.. ,
dell'istruzione seguente nel registro Rai, impiegato esclusivamente per ::;:r: ::;,
sta funzione e percio detto registro di collegamento (Link register). R3( /2 ..;
viene scritto solo dal1'istruzione J AL, rna puo essere letto e capiato in .' ::':-1
tro registro
4
. n ritorno aJ chiamante si ottiene attraverso l'istruzione JR /:::.:
descritta qui di seguito. nformate di JAL eidentice al formato di JMP. .:: ',:,:..,.; '.
Osservazione: si potrebbe prevedere un'istruzione JAL che codifichi anche ..{ ti
il registro di coUegamento. In tal caso il campo IND si sarebbe
:.:
,
... ,
, ...;
.,,' ,:'.
/,}(.. " ..
<ICol nostro repertorio di istruzioni per copiare da un registro all'altro si pub usace I'lstruzione ,"or;
ADD, scrivendo, per esempio, ADD Rl,R31,RO. L'istruz!one copla R31 io RI, se RO contiene zero.
Siccome il numero zero e uo numero spedale, usato frequentemente. in questa e in altre situa2ioDi,
atcune architetture sacrificano il registro RO a contenere permanentemente 0, facendo in modo che
eventuali operaziooi di scrittura su esso non abbiano effetto. Ci sana anche sistemi in cui la Jettura ..
di RD restituisce sempre 0, mentre la scrittura geoera un 'eccezione. '
noti che per JR bastano il campo OP e il campo del registro, dando luogo a. un formato diverso
da tutti quelli di FiguraS.1. Una forma piu. verSatile sarebbe quella di prevedere anche 1& presenza del
campo OFFSET, in modo che I'indirizzo di destinazione venga calcolato aggiungendo quest'ultimo
a1 contenuto del registrol in modo da poter per esempio scrivere JR scost (R=); il fonnato sarebbe
F2 (FiguraS.l) e-il campo corrispondente a Rs2 non verrebbe USato. Per semplicita evitiamo l'uso
di questa formato per JR.
6Poiche Ie istruzioni devono essere allineate, l'iatruzione JR deve specificare' come destinazione
un registro i cui due bit di ord.ine minore sana zero. In caso contrario, suI fetch dell'istruzione di
destinazione si verifichera un'eccezione per violazione dell'indirizzamento.
./.
< ';'
,
)
\
I
1
I
1
J
]
J
)
).
217

La pipeline
Bus
I
I"ter"'no
I
f'...
i0... 31
I
,
I
1./ '32
o +.{>--+.
Bus
Es;1:"rr'lO
I
0...
31
l
24".31
I
r>
I07
\
. 16...23


I
8... 15
0.... 7

./

ENH
R
[Nil
AI A'O
Figura 6.5 Schema per il caricarneoto dalla memoria di una parola, una semiparola a un
byte. II dato viene messo suI bus interno dopo essere stato selezionato tra.m.ite i segnali ENW
e ENH (Tabella 2). 11 segnale di ENW comanda il trasferimento di un.'intera paz-ala. Se il
segnale ENW edisasserito, un buffer Can uscita a 16 bit mantiene a zero i 16 bit piu signifi-
cativi sur bus interne e l'ulteriore selezione tra semiparola 0 byte edeterminata da.! valore di
ENH: se easserito vengono trasferiti i 16 bit selezionati attraverso At, se edisasserito viene
mantenuto a zero anche il byte corrispondente ai bit 8.. 15 del bus interno, mentre sul byte
meno significativQ viene trasferito il byte selezionato in base alia combinazione (AoAt) dei
due bit meno significativi dell'indirizzo di memoria. La combinazione 11 per ENW, ENH
non econsentita: la logica di macchina cleve garantire che essa nan si possa mai manifestare.

f.
I
"
'.
.'
,
....'. .
. .
I Entita di memoria trasferita I ENW I ENH
I Byte
0 0
IWord
1
0
Halfword
0
I
1
I Non permeaso
1
1
Capitola 6
JAL (Jump And Link)
JR (Jump Register) . "';1<.
Provoca il salto incondlzionato alI'indirizzo contenuta nel registro codificato ': .:i,'
nell';struzione'. Puo essere u,ata come istmz;one di citorno da una "',"
tme mdlflzzandola al reglstro R31 0 a qualunque altro m CUI estate , ,.. ':, '
l'indirizzo di ritorno
6
. "',':.;; ,'.<.-' ::..
216
: ,..
Tabella 6.2 Codifica. dei segnali ENH e ENW in rapporto all'indirizzamento delle differenti '".
ent;t' d; memo,;a. La combinazione 11 non econsenbta.'ii.::'"
<.J :..; , .
};'.'-
:;;::, '.
-: ,,. .
L'istruzione JAL viene usata per Ie chiamate ai sottoprogrammi: essa pro- ":8 <
voca il saIto incondizionato alI'indirizzo di destinazione e salva l'indirizzo .,;K .:.:.
- ,.. ,
dell'istruzione seguente nel registro Rai, impiegato esclusivamente per ::;:r: ::;,
sta funzione e percio detto registro di collegamento (Link register). R3( /2 ..;
viene scritto solo dal1'istruzione J AL, rna puo essere letto e capiato in .' ::':-1
tro registro
4
. n ritorno aJ chiamante si ottiene attraverso l'istruzione JR /:::.:
descritta qui di seguito. nformate di JAL eidentice al formato di JMP. .:: ',:,:..,.; '.
Osservazione: si potrebbe prevedere un'istruzione JAL che codifichi anche ..{ ti
il registro di coUegamento. In tal caso il campo IND si sarebbe
:.:
,
... ,
, ...;
.,,' ,:'.
/,}(.. " ..
<ICol nostro repertorio di istruzioni per copiare da un registro all'altro si pub usace I'lstruzione ,"or;
ADD, scrivendo, per esempio, ADD Rl,R31,RO. L'istruz!one copla R31 io RI, se RO contiene zero.
Siccome il numero zero e uo numero spedale, usato frequentemente. in questa e in altre situa2ioDi,
atcune architetture sacrificano il registro RO a contenere permanentemente 0, facendo in modo che
eventuali operaziooi di scrittura su esso non abbiano effetto. Ci sana anche sistemi in cui la Jettura ..
di RD restituisce sempre 0, mentre la scrittura geoera un 'eccezione. '
noti che per JR bastano il campo OP e il campo del registro, dando luogo a. un formato diverso
da tutti quelli di FiguraS.1. Una forma piu. verSatile sarebbe quella di prevedere anche 1& presenza del
campo OFFSET, in modo che I'indirizzo di destinazione venga calcolato aggiungendo quest'ultimo
a1 contenuto del registrol in modo da poter per esempio scrivere JR scost (R=); il fonnato sarebbe
F2 (FiguraS.l) e-il campo corrispondente a Rs2 non verrebbe USato. Per semplicita evitiamo l'uso
di questa formato per JR.
6Poiche Ie istruzioni devono essere allineate, l'iatruzione JR deve specificare' come destinazione
un registro i cui due bit di ord.ine minore sana zero. In caso contrario, suI fetch dell'istruzione di
destinazione si verifichera un'eccezione per violazione dell'indirizzamento.
:2::1:.:8:-_C=
ap
c:;:.:tO:::I:.:O...:6:- __
AlAO
Figura 6.6 Schema per la memorizzazione di una parolal una semiparola 0 un singolo byte.
Si, tratta della schema duale del precedente relativo al caricamento. Per selezionare il data
da scrivere in memoria, si usano gli sLessi segnali di cantralla usati per la lettura. Il segnale
EN'W abilita la scrittura in memoria della intera parola. Quando ENW edisasserito entra
in gioco ENH a stabilire se si tratti di semiparola 0 di byte.
219

La pipeline
JAL target t- PC; PC t- iNDx4
JR R23 PC t- R23
JMP target I PC t-lNDx4
SW 20(R12), R4 M 20+R12 t-32
JE R3, R4, off set if R3=R4 then
NOP
n __ ,,_, "_,'>V I R6 t- R5 + R8
I Mnemonico I Operazione I
I ann RA Rh I I
4. Istruzione di ritorno dall'inteITuzione
RFI (Return From Interrupt).
It l'istruzione che consente it ritorno dalle interruzioni. Nella parte che segue
essa non viene aneora presa in considerazionej la sua anaJisi erimandata aHa
sezione dedicata aile interruzioni (Cfr. 6.13).
Tabella 6.3 Esempi eli istruzioni. Viene riportato un esempio per ciascuna differente istru
zione (con l'esclusione di RFI di cui si parla nella seconda parte del capitola). Le istruzioni
aritmetiche e logiche vengono esemplificate dall'istruzione ADD. La NOP ha solo l'effetto di
far incrementare PC.
LB R3, 30(RS) 1M...." (M[30+R5]Q}''][M[30+R.5]
LW RiB, 40(R5) I Rl6 t-" M[40+R5J
SB 40(R4). Ril-TM[40+R:4j t-, Rll,..31
6.4 Esecuzione in pipeline
I LH R6, SO(R2S) RB t-" M150+R25
I SH 30(Rll). R14 M130+Rll t-16 ttl 16..31
5. L'istruzione di non operazione
NOP ( No Operation).
Gia descritta. Essa non modifica alcun dato, ne genera alcurt risultato.
, .
Vunico effetto e l'incremento di 4 di PC. E conveniente codificare NOP
come una stringa di zed.
In Tabella 6.3 viene riportato un esempio per ciascuna delle istruzioni del reper-
torio.
,
,' .
,
., " .
"
\
:.'
,
..
,.,
;. , .
,
"
",
0... 31
rno
0... 15
16... 31
24 31
16 23
8 15
0.,,7
Bus
Bus
Int
ENH
L..=>
I'-
-"-
"
r-
-
0... 31
"
V
J , 7
I ,
.

.
"
0
J
V
0.. ,15
"
t'
"
AI
.
,
,

0... 7
,
V
,
EN'"
I
\
I
I
\
I
\
I
I
I
I
I
,I
I
..
'.
Nel seguito faremo regolarmente riferimento a una pipeline costituita dai seguenti
cinque stadi
1
:
7Si noti che i 5 stadi corrispondono aile sezioni componenti CPU2 (Capitola 3). II nostro obiettivo
earrivare a progettare l'uniU. di contrallo per la stessa architettura nella ver13ione in pipeline.
:2::1:.:8:-_C=
ap
c:;:.:tO:::I:.:O...:6:- __
AlAO
Figura 6.6 Schema per la memorizzazione di una parolal una semiparola 0 un singolo byte.
Si, tratta della schema duale del precedente relativo al caricamento. Per selezionare il data
da scrivere in memoria, si usano gli sLessi segnali di cantralla usati per la lettura. Il segnale
EN'W abilita la scrittura in memoria della intera parola. Quando ENW edisasserito entra
in gioco ENH a stabilire se si tratti di semiparola 0 di byte.
219

La pipeline
JAL target t- PC; PC t- iNDx4
JR R23 PC t- R23
JMP target I PC t-lNDx4
SW 20(R12), R4 M 20+R12 t-32
JE R3, R4, off set if R3=R4 then
NOP
n __ ,,_, "_,'>V I R6 t- R5 + R8
I Mnemonico I Operazione I
I ann RA Rh I I
4. Istruzione di ritorno dall'inteITuzione
RFI (Return From Interrupt).
It l'istruzione che consente it ritorno dalle interruzioni. Nella parte che segue
essa non viene aneora presa in considerazionej la sua anaJisi erimandata aHa
sezione dedicata aile interruzioni (Cfr. 6.13).
Tabella 6.3 Esempi eli istruzioni. Viene riportato un esempio per ciascuna differente istru
zione (con l'esclusione di RFI di cui si parla nella seconda parte del capitola). Le istruzioni
aritmetiche e logiche vengono esemplificate dall'istruzione ADD. La NOP ha solo l'effetto di
far incrementare PC.
LB R3, 30(RS) 1M...." (M[30+R5]Q}''][M[30+R.5]
LW RiB, 40(R5) I Rl6 t-" M[40+R5J
SB 40(R4). Ril-TM[40+R:4j t-, Rll,..31
6.4 Esecuzione in pipeline
I LH R6, SO(R2S) RB t-" M150+R25
I SH 30(Rll). R14 M130+Rll t-16 ttl 16..31
5. L'istruzione di non operazione
NOP ( No Operation).
Gia descritta. Essa non modifica alcun dato, ne genera alcurt risultato.
, .
Vunico effetto e l'incremento di 4 di PC. E conveniente codificare NOP
come una stringa di zed.
In Tabella 6.3 viene riportato un esempio per ciascuna delle istruzioni del reper-
torio.
,
,' .
,
., " .
"
\
:.'
,
..
,.,
;. , .
,
"
",
0... 31
rno
0... 15
16... 31
24 31
16 23
8 15
0.,,7
Bus
Bus
Int
ENH
L..=>
I'-
-"-
"
r-
-
0... 31
"
V
J , 7
I ,
.

.
"
0
J
V
0.. ,15
"
t'
"
AI
.
,
,

0... 7
,
V
,
EN'"
I
\
I
I
\
I
\
I
I
I
I
I
,I
I
..
'.
Nel seguito faremo regolarmente riferimento a una pipeline costituita dai seguenti
cinque stadi
1
:
7Si noti che i 5 stadi corrispondono aile sezioni componenti CPU2 (Capitola 3). II nostro obiettivo
earrivare a progettare l'uniU. di contrallo per la stessa architettura nella ver13ione in pipeline.
)
)
]
)
)
)
)
)
I
I
I
)
I
1

ME I WE EX
EX!MEIWB
ME I WB
m
WB
'"
If: . J ID
EX. I ..
ME.. ,.I: "<'!':fl.
m t EX'
W'B
T, T
2
T
3

I I I I I I
I .... '1
I __ I __ I I
AlIo stadia ID viene aggregato il file dei registri RF. Durante la fase corris-
pondente, U contenuto degli eventuali registri identificati dai campi Rsl e Rs2
dell'istruzione viene reso immediatamente disponibile per 10 stadia successivo9.
WB - In questa stadia si completano Ie istruzioni di caricamento e Ie istruzioni
aritmetiche, scrivendo in RF il dato presente su ME/WB.
ME - La stadio ME interviene solo per Ie istruzioni che fanno accesso alIa me-
moria (LD eST). Nel caso di istruzioni di caricamento,lo stadio ME deposita su
ME/WB il data letto in memoria, per 1a scrittura in RF da parte di WB.
quella che comanda la modalita di esecuzione
1
costituisce in pratica l'unita di
controllo.
La. propagazione dei campi ME e WB, attuata su ogni clock per tutte le istruzioni
(Figura6.9), si esprime nel seguente modas:
EX/ME.WB +- ID/EX,WB
EX/ME.ME +- ID/EX.ME
ME/WB.WE +- EX/ME.WB
EX In questa stadia vengono compiute Ie azioni specifiche dell'istruzione) co-
mandate attraverso i segnali contenuti in ID/EX.EX. La ALU viene usata in
modo del tutto analogo a come e usata in CPU2. Al termine dello stadio EX,
le informazioni in uscita dalla ALU e i campi da propagare vengono copiati suI
registro EX/ME.
SCon la notazione R.S si rappresenta il campo S contenuto nel registro R.
9Dipendera dal codice di istruzione se it contenuto dei due registri letti verra usato 0 meno. La
lettura in fase ID consente di anticipare i tempi, senza imporre alcun costa, in virtu della regolarita.
del formato delle istruzioni che permette di identificare immediatarnente gli eventua1i registri sorgenti,
essendo la loro identiti in posizione fissa nel corpo dell'istruzione.
Figura 6.8 Esecuzione delle istruzioni in una pipeline a cinque stadi. Lo schema evidenzia
che dura.nte it periodo di clock T1 viene prelevata 1'istruzione i, sul clock T
2
viene prelevata
!'istruzione i +1 e decodifica.ta l'istruzione i, su T3 viene prelevata. l'istruzione i + 2, deco-
dificata. l'istruzione i + 1 ed eseguita l'istruzione i e cosl via. Questa modello di pipeline
corrisponde a queUo delle CPU MIPS R3000.
,,'
,,'
.
'i '
..
", '
,... ,
: 1--; .
.
,
.'.. --
",.'
..,
:1. '
'.', I. :",
':, "
,
'.,"
"
..
.: '"-
.
'.
- ,.I',
,.. ,r -.,
, .,
.''., ..
.,.-;
.'"
"
", .,
,
;c....
' ..'.
''<:".
',;'
.
"1
,,::.; ,': :;::.
'" 'i::' .
'. ,",
,.

", '
'i#;i?';':

....,.... L'lin 2
d.,<-i,).' a pipe e 2 1
-::i1':L: -
-;:' . t
'.:;:1 "-',: ,- ,.'.
_/
WE

I I
ME
EX/ME
I I
. 1
(,,\/ ....,
j. \ '
EX
j
lD/EX
I I
ID
IF/lD
IF
IF - Lo stadio IF svolge la funzione di leggere la prossima istruzione alPindirizzo . ,"i
contenuto in PC e di depositarla in IFlID, in un campo che continueremo a chia-
mare Registro Istruzioni (IR). In Figura 6.9 viene evidenziato suI registro IFlID
il solo campo OP di IR, corrispondente al codice di operazione dell'istruzione
letta. L'esecuzione in pipeline presuppone che a ogni impulso di clock PC venga
iricrementato di 4, per .essere pronto per il cielo di clock successivo.
ID - Lo stadio ID eresponsabile della decodifica del codice di operazione e della
trascrizione della decodifica sul registro IDlEX, in modo da determinare Ie azioni '
svolte dalle istruzioni nello stadia EX e in quelli successivi. La decodifica di OP cia
luogo alla scrittura suI registro IDlEX dei segnali di comando, che determinano
Ie azioni svolte nella stadio EX e negli stadi successivi. Questi segnali sono sta.ti ".:.
suddivisi in tre gruppi, ciascuno dei quaE erelativo. allo stadio in cui ha effetto; J,
essi costituiscono tre campi distinti suI registro IDlEX, e sono stati denominati
rispettivamente EX, ME, WB. La Iogica corrispondente allo stadio ID, essendo
esecuzione (EX); :; ,- \ ' r' t
accesso alIa memoria (ME); }).:/I/r:
n
/ '\ )."0
, ,1
scrittura nel registro di destinazione (WB). / ,1 1\.' ',' r.
J (tv! r,'
prelievo dell'istruzione (IF); .r I
'
decodifica dell'istruzione e lettura del contenuto dei registri (ID);
In Figura 6. 7 la pipeline viene disegnata in modo da esplicitare i nomi dei registd
interstadio.
220 Capitolo 6
Figura 6.7 La pipeline di riferimento a 5 starn. I nomi dei latch intermedi identificano
gli stach .che li II pili a corrisponde '':-,jlc:., ,
al reglstro IR cil una macchina multlclclo. I succeSSlVl contengono Ie mformazlODl che servono ." "
agli stadi a valle; queste informazioni sona in parte propagate dal registro precedente (pet ;/;._
esempio, J'identita del registro cii destinazione), mentre altre sono generate dallo stadia '-,';:1.'
precedente (per esempio, 1a ALU scrive it risultato dell'operazione su EX/ME). " ::.':
, ,", I:
, :; .:
D funzionamento della pipeline e schematizzabile come in Figura6.8. Varea
ombreggiataindica che, una volta passato il transitorio di riempimento e cioe a partire .
dalPimpulso di clock T
s
) se la catena continua a essere alimentata, tutti gli stadi sopo
in azione e tutto avviene come se in un periodo di clock venisse elaborata un'istruzione
per intero. In altre parole, tutto avviene come se fosse CPI=1.
La Figura6.9 fornisce una prima indicazione dei componenti principali dei singoli
stadi e delle funzioni svolte, come descritto qui di seguito.
" ',!
)
)
]
)
)
)
)
)
I
I
I
)
I
1

ME I WE EX
EX!MEIWB
ME I WB
m
WB
'"
If: . J ID
EX. I ..
ME.. ,.I: "<'!':fl.
m t EX'
W'B
T, T
2
T
3

I I I I I I
I .... '1
I __ I __ I I
AlIo stadia ID viene aggregato il file dei registri RF. Durante la fase corris-
pondente, U contenuto degli eventuali registri identificati dai campi Rsl e Rs2
dell'istruzione viene reso immediatamente disponibile per 10 stadia successivo9.
WB - In questa stadia si completano Ie istruzioni di caricamento e Ie istruzioni
aritmetiche, scrivendo in RF il dato presente su ME/WB.
ME - La stadio ME interviene solo per Ie istruzioni che fanno accesso alIa me-
moria (LD eST). Nel caso di istruzioni di caricamento,lo stadio ME deposita su
ME/WB il data letto in memoria, per 1a scrittura in RF da parte di WB.
quella che comanda la modalita di esecuzione
1
costituisce in pratica l'unita di
controllo.
La. propagazione dei campi ME e WB, attuata su ogni clock per tutte le istruzioni
(Figura6.9), si esprime nel seguente modas:
EX/ME.WB +- ID/EX,WB
EX/ME.ME +- ID/EX.ME
ME/WB.WE +- EX/ME.WB
EX In questa stadia vengono compiute Ie azioni specifiche dell'istruzione) co-
mandate attraverso i segnali contenuti in ID/EX.EX. La ALU viene usata in
modo del tutto analogo a come e usata in CPU2. Al termine dello stadio EX,
le informazioni in uscita dalla ALU e i campi da propagare vengono copiati suI
registro EX/ME.
SCon la notazione R.S si rappresenta il campo S contenuto nel registro R.
9Dipendera dal codice di istruzione se it contenuto dei due registri letti verra usato 0 meno. La
lettura in fase ID consente di anticipare i tempi, senza imporre alcun costa, in virtu della regolarita.
del formato delle istruzioni che permette di identificare immediatarnente gli eventua1i registri sorgenti,
essendo la loro identiti in posizione fissa nel corpo dell'istruzione.
Figura 6.8 Esecuzione delle istruzioni in una pipeline a cinque stadi. Lo schema evidenzia
che dura.nte it periodo di clock T1 viene prelevata 1'istruzione i, sul clock T
2
viene prelevata
!'istruzione i +1 e decodifica.ta l'istruzione i, su T3 viene prelevata. l'istruzione i + 2, deco-
dificata. l'istruzione i + 1 ed eseguita l'istruzione i e cosl via. Questa modello di pipeline
corrisponde a queUo delle CPU MIPS R3000.
,,'
,,'
.
'i '
..
", '
,... ,
: 1--; .
.
,
.'.. --
",.'
..,
:1. '
'.', I. :",
':, "
,
'.,"
"
..
.: '"-
.
'.
- ,.I',
,.. ,r -.,
, .,
.''., ..
.,.-;
.'"
"
", .,
,
;c....
' ..'.
''<:".
',;'
.
"1
,,::.; ,': :;::.
'" 'i::' .
'. ,",
,.

", '
'i#;i?';':

....,.... L'lin 2
d.,<-i,).' a pipe e 2 1
-::i1':L: -
-;:' . t
'.:;:1 "-',: ,- ,.'.
_/
WE

I I
ME
EX/ME
I I
. 1
(,,\/ ....,
j. \ '
EX
j
lD/EX
I I
ID
IF/lD
IF
IF - Lo stadio IF svolge la funzione di leggere la prossima istruzione alPindirizzo . ,"i
contenuto in PC e di depositarla in IFlID, in un campo che continueremo a chia-
mare Registro Istruzioni (IR). In Figura 6.9 viene evidenziato suI registro IFlID
il solo campo OP di IR, corrispondente al codice di operazione dell'istruzione
letta. L'esecuzione in pipeline presuppone che a ogni impulso di clock PC venga
iricrementato di 4, per .essere pronto per il cielo di clock successivo.
ID - Lo stadio ID eresponsabile della decodifica del codice di operazione e della
trascrizione della decodifica sul registro IDlEX, in modo da determinare Ie azioni '
svolte dalle istruzioni nello stadia EX e in quelli successivi. La decodifica di OP cia
luogo alla scrittura suI registro IDlEX dei segnali di comando, che determinano
Ie azioni svolte nella stadio EX e negli stadi successivi. Questi segnali sono sta.ti ".:.
suddivisi in tre gruppi, ciascuno dei quaE erelativo. allo stadio in cui ha effetto; J,
essi costituiscono tre campi distinti suI registro IDlEX, e sono stati denominati
rispettivamente EX, ME, WB. La Iogica corrispondente allo stadio ID, essendo
esecuzione (EX); :; ,- \ ' r' t
accesso alIa memoria (ME); }).:/I/r:
n
/ '\ )."0
, ,1
scrittura nel registro di destinazione (WB). / ,1 1\.' ',' r.
J (tv! r,'
prelievo dell'istruzione (IF); .r I
'
decodifica dell'istruzione e lettura del contenuto dei registri (ID);
In Figura 6. 7 la pipeline viene disegnata in modo da esplicitare i nomi dei registd
interstadio.
220 Capitolo 6
Figura 6.7 La pipeline di riferimento a 5 starn. I nomi dei latch intermedi identificano
gli stach .che li II pili a corrisponde '':-,jlc:., ,
al reglstro IR cil una macchina multlclclo. I succeSSlVl contengono Ie mformazlODl che servono ." "
agli stadi a valle; queste informazioni sona in parte propagate dal registro precedente (pet ;/;._
esempio, J'identita del registro cii destinazione), mentre altre sono generate dallo stadia '-,';:1.'
precedente (per esempio, 1a ALU scrive it risultato dell'operazione su EX/ME). " ::.':
, ,", I:
, :; .:
D funzionamento della pipeline e schematizzabile come in Figura6.8. Varea
ombreggiataindica che, una volta passato il transitorio di riempimento e cioe a partire .
dalPimpulso di clock T
s
) se la catena continua a essere alimentata, tutti gli stadi sopo
in azione e tutto avviene come se in un periodo di clock venisse elaborata un'istruzione
per intero. In altre parole, tutto avviene come se fosse CPI=1.
La Figura6.9 fornisce una prima indicazione dei componenti principali dei singoli
stadi e delle funzioni svolte, come descritto qui di seguito.
" ',!
La Figura6,10
pagma 220,
detto a
,
B
.
0
u
u
A+B
1
0
1
A B
2
1
0
-A-fALU B I
3
1
1
,
Fase IF.
Riguardo a questa fase si veda quanto
evidenzia l'incrernento di 4 a PC.

, ,,.. \,:' .
',"
:!i'll- .:
-',
" La pipeline 223
1,<'.
___
.

fl:o\...., , ,:-
',_r' '
Contrnllo della ALU Al Capitolo 5 (Figura 5.9) si e visto che la ALU viene
,! ,,?,)': I.t. attraversO OPALU, assumeva tre dlstmtl valon (denonun
a
tl m forma slmbo-
J;..;'\. ... lic, ALU, ADD, SUB). L IstruzlOne JAL nchlede che la ALU faccla passare m,uSClta,
;) .i"':.'. sen", alcuna II valore presente sull'mgresso B. SI tratta ClOe di agglUng
ere
_.:J : a nuo
va
pOSSlblhta attraverso OPALU. Questa Clrcostanza offre l'occaslOne per dare
:j .. ; un d'fi 'd' T b 11 64
'3 OPALU lao co 1 ca numenca 1 a ea ..
.. ..; ':. "
:! .;':.;,,' - '.
[AUJOut mALUJOPAL
U1
!OPALUO i
'.", I n l
, .j" .... "

'r:} ,':.:,,:,
... ,.r .
", j't.:;::,:'"
-'. '...
"J: ":,i-:'-':.:'I.'
..:;'; .:J::?' _--: 1.'abell
a
6.4 Codifica del selettore OPALU. Le colonne OPALU1, OPALUO danno la
'), '.,', codifica binaria.
'" ",!,' 'i '
.' "', , .
-, ""-'--)!"
::':' :.- ," ."
'" '-'" " '--.
1,-"" ,,'
""i'
'."1' ',.-.- '''0 .
,:;, ':_,;-;., ..
"";':::".:" ,,'
';'1 ,:,::.t;:!,.:;' .
:(1 .:.:'" '.'l'.
.: ,,'0,", 6,5,1 lstruzioni aritmetiche
,./. , \ '\ -j, ' .',
i .. ":"':,
:',. -',
.,
" ,:;,,,,,,' ,,'" .'"
'...Come al solito facciamo riferimento all'istruzione di somma (ADD). D suo trattamento
. :.."" e in Figura. 6.10,
(-;':::::':':',' ,.
. ,"" -', .
" ,: ;'p"!:. '.
,.,,'.-
::. ' .' ,,'::':,
:-', :/. '.
::-;'.', .
".... " ' ..
'<'I
.; ,
" ,.:-.;'
R

ME/VB EX/ME IO/EX


r",
v,
v,
vo HE;
-'.2
r:l e' 0
LJ leu LJ
V
r:l
LJ .v
'-
L:: L
IF/ID
p
c
[J
Figura 6.9 Componenti principali degli stadi di pipeline. Lo stadio IF si compone essen.
zialmente del PC e della memoria istruzioni (MI), che assumiamo separa.ta da.lla memoria
dati (MD). La stadio ill comprende it bloceo dei registri RF e ls. logica di decodifica delle,
istruzioni E la decodifica delle istrozioni che determina le a.zioni svolte nelle fasi successive:
in pratica si tratta della parte essenziale dell'unita, di cantrollo (DC). Lo stadio EX contiene
l'uniU, aritmetica e 10gie3.; 10 stadia di memoria si riduce aUa memoria dati; infine 10 stadio
di scrittura dei registri si compone della sola logica che comanda 130 scrittura in RF. La
decodifica del codice istruzione da. luogo a tre gruppi di segnali, rappresentati dai campi EX,
ME e WB, ciascuno dei quali e relativo al corrispondente stadia di pipeline. It campo EX)
esaurisce la sua. funzione nella stadio EX e non viene propagato oltre; il campo ME viene
propagato fino al registro EX/ME esaurendo la. sua. funzione neHo stadia ME; il campo WB
percorre tutta la pipeline e comanda I'ultimo stadio,
In Figura 6,9 viene mostrato anebe UP altro campo cbe si propaga da lDJEX
a ME/WB: il campo RW, Esso contiene la codifica (tag) del registro eventualmente
scritto in fase WB (per le istruzioni aritmetiche si tratta. del registro individuato dal
campo Rd dell'istruzione).
Mentre i campi finora descritti hanna significato univocol ci sono campi che in
base all'istruzione assumona diverse significate (come per esempio ALUout di cui si
parled. tra poco), n10ro significato viene illustrato nel prossimo paragrafo attraverso
un esame dettagliato, istruzione per istruzione,
_
\
\
\
I
I
\
\
I
\
\
I I6.5 Le fasi di esecuzione
," LL. ",
Pase!D,
L'unita. di controllo decodifica OP e assegna i valori sotto riportati ai campi di
ill lEX. Vengono letti i registri sorgente, se1ezionati attraverso i campi IFlID.Rs1
e lFj!D,R.s2. 11 lora contenuto viene copiato nei campi (a 32 bit) IDjEX.A e
!DjEX,B; questi due campi forniranno gli operandi alla ALU. In lFjIDJALU e
codificata la funzione specificamente richiesta dalla medesima.
Usando 130 nostra. nota.zione, i comandi, i selettori e gli assegnaroenti di interesse
sonG COSl espressi
10
: .
\0 Alcuni di questi assegnamenti vengono attuati in modo indiretto dalla. logica di controllo. Per
esempio, I'assegnamento ID/EX .RW IFIrD.Rei e determinato da. un selettore cite presenta IFIID.ad
come ingresso a lD/EX,RW. Come abbia.mo vista, quest' ultimo campo viene scritto su tutti i dock
cd e il selettare (0 i selettori se piu di uno) a definire l'ingresso. Per iI momento, Della descrizione
, che segue, quando I'identita. dei selettori e ancora non ben definita, ai mostranO i trasferimenti. Pill
avanti si dara corpO ai selettori necessaxi alloro verificarsL

,.
d,
:. '
,
,
_c,
,
".
"
.\ '
,i , '.-
.
..I,
'\ .x
-." :' '
:',
, '
.-- .- , "
".:" ,....r
"I .'
. d ':,
GIi schemi proposti nella parte seguente si riferiscono aIle specifiche istruzioni conside-
rate. Per esempio: Ie Figure 6.10 e 6.13 ambedue la sezione relativa a PC, rna
mettono in evidenza solo quanta epertinente alle istruzioni illustrate dalle medesime
figure. L'integrazione dei differenti schemi cestituisce argomento per la prossima
sezione (Cfr, 6,6,1),
Si resta Fedeli alIa convenzione di indicare i segnali di comando solo se asseriti
(ossia a 1 - logica positiva), sottintendendo che essi valgono 0 quando non asseriti.
Invece, per quanto si riferisce ai segnali con funzione di selettore, la 10ro codifica viene
riportata solo quando epertinente rispetto ai segnali di comando asseriti.
Prima di procedere nell'esame del comportamento delle differenti (classi di) i-
struzioni in pipeline, occorre ritornare Bulla ALU1 per denetare i relativi comandi in
una forma piu conveniente di quella vista al Capitolo 5. 'l
\
"
\
\
\
, \
La Figura6,10
pagma 220,
detto a
,
B
.
0
u
u
A+B
1
0
1
A B
2
1
0
-A-fALU B I
3
1
1
,
Fase IF.
Riguardo a questa fase si veda quanto
evidenzia l'incrernento di 4 a PC.

, ,,.. \,:' .
',"
:!i'll- .:
-',
" La pipeline 223
1,<'.
___
.

fl:o\...., , ,:-
',_r' '
Contrnllo della ALU Al Capitolo 5 (Figura 5.9) si e visto che la ALU viene
,! ,,?,)': I.t. attraversO OPALU, assumeva tre dlstmtl valon (denonun
a
tl m forma slmbo-
J;..;'\. ... lic, ALU, ADD, SUB). L IstruzlOne JAL nchlede che la ALU faccla passare m,uSClta,
;) .i"':.'. sen", alcuna II valore presente sull'mgresso B. SI tratta ClOe di agglUng
ere
_.:J : a nuo
va
pOSSlblhta attraverso OPALU. Questa Clrcostanza offre l'occaslOne per dare
:j .. ; un d'fi 'd' T b 11 64
'3 OPALU lao co 1 ca numenca 1 a ea ..
.. ..; ':. "
:! .;':.;,,' - '.
[AUJOut mALUJOPAL
U1
!OPALUO i
'.", I n l
, .j" .... "

'r:} ,':.:,,:,
... ,.r .
", j't.:;::,:'"
-'. '...
"J: ":,i-:'-':.:'I.'
..:;'; .:J::?' _--: 1.'abell
a
6.4 Codifica del selettore OPALU. Le colonne OPALU1, OPALUO danno la
'), '.,', codifica binaria.
'" ",!,' 'i '
.' "', , .
-, ""-'--)!"
::':' :.- ," ."
'" '-'" " '--.
1,-"" ,,'
""i'
'."1' ',.-.- '''0 .
,:;, ':_,;-;., ..
"";':::".:" ,,'
';'1 ,:,::.t;:!,.:;' .
:(1 .:.:'" '.'l'.
.: ,,'0,", 6,5,1 lstruzioni aritmetiche
,./. , \ '\ -j, ' .',
i .. ":"':,
:',. -',
.,
" ,:;,,,,,,' ,,'" .'"
'...Come al solito facciamo riferimento all'istruzione di somma (ADD). D suo trattamento
. :.."" e in Figura. 6.10,
(-;':::::':':',' ,.
. ,"" -', .
" ,: ;'p"!:. '.
,.,,'.-
::. ' .' ,,'::':,
:-', :/. '.
::-;'.', .
".... " ' ..
'<'I
.; ,
" ,.:-.;'
R

ME/VB EX/ME IO/EX


r",
v,
v,
vo HE;
-'.2
r:l e' 0
LJ leu LJ
V
r:l
LJ .v
'-
L:: L
IF/ID
p
c
[J
Figura 6.9 Componenti principali degli stadi di pipeline. Lo stadio IF si compone essen.
zialmente del PC e della memoria istruzioni (MI), che assumiamo separa.ta da.lla memoria
dati (MD). La stadio ill comprende it bloceo dei registri RF e ls. logica di decodifica delle,
istruzioni E la decodifica delle istrozioni che determina le a.zioni svolte nelle fasi successive:
in pratica si tratta della parte essenziale dell'unita, di cantrollo (DC). Lo stadio EX contiene
l'uniU, aritmetica e 10gie3.; 10 stadia di memoria si riduce aUa memoria dati; infine 10 stadio
di scrittura dei registri si compone della sola logica che comanda 130 scrittura in RF. La
decodifica del codice istruzione da. luogo a tre gruppi di segnali, rappresentati dai campi EX,
ME e WB, ciascuno dei quali e relativo al corrispondente stadia di pipeline. It campo EX)
esaurisce la sua. funzione nella stadio EX e non viene propagato oltre; il campo ME viene
propagato fino al registro EX/ME esaurendo la. sua. funzione neHo stadia ME; il campo WB
percorre tutta la pipeline e comanda I'ultimo stadio,
In Figura 6,9 viene mostrato anebe UP altro campo cbe si propaga da lDJEX
a ME/WB: il campo RW, Esso contiene la codifica (tag) del registro eventualmente
scritto in fase WB (per le istruzioni aritmetiche si tratta. del registro individuato dal
campo Rd dell'istruzione).
Mentre i campi finora descritti hanna significato univocol ci sono campi che in
base all'istruzione assumona diverse significate (come per esempio ALUout di cui si
parled. tra poco), n10ro significato viene illustrato nel prossimo paragrafo attraverso
un esame dettagliato, istruzione per istruzione,
_
\
\
\
I
I
\
\
I
\
\
I I6.5 Le fasi di esecuzione
," LL. ",
Pase!D,
L'unita. di controllo decodifica OP e assegna i valori sotto riportati ai campi di
ill lEX. Vengono letti i registri sorgente, se1ezionati attraverso i campi IFlID.Rs1
e lFj!D,R.s2. 11 lora contenuto viene copiato nei campi (a 32 bit) IDjEX.A e
!DjEX,B; questi due campi forniranno gli operandi alla ALU. In lFjIDJALU e
codificata la funzione specificamente richiesta dalla medesima.
Usando 130 nostra. nota.zione, i comandi, i selettori e gli assegnaroenti di interesse
sonG COSl espressi
10
: .
\0 Alcuni di questi assegnamenti vengono attuati in modo indiretto dalla. logica di controllo. Per
esempio, I'assegnamento ID/EX .RW IFIrD.Rei e determinato da. un selettore cite presenta IFIID.ad
come ingresso a lD/EX,RW. Come abbia.mo vista, quest' ultimo campo viene scritto su tutti i dock
cd e il selettare (0 i selettori se piu di uno) a definire l'ingresso. Per iI momento, Della descrizione
, che segue, quando I'identita. dei selettori e ancora non ben definita, ai mostranO i trasferimenti. Pill
avanti si dara corpO ai selettori necessaxi alloro verificarsL

,.
d,
:. '
,
,
_c,
,
".
"
.\ '
,i , '.-
.
..I,
'\ .x
-." :' '
:',
, '
.-- .- , "
".:" ,....r
"I .'
. d ':,
GIi schemi proposti nella parte seguente si riferiscono aIle specifiche istruzioni conside-
rate. Per esempio: Ie Figure 6.10 e 6.13 ambedue la sezione relativa a PC, rna
mettono in evidenza solo quanta epertinente alle istruzioni illustrate dalle medesime
figure. L'integrazione dei differenti schemi cestituisce argomento per la prossima
sezione (Cfr, 6,6,1),
Si resta Fedeli alIa convenzione di indicare i segnali di comando solo se asseriti
(ossia a 1 - logica positiva), sottintendendo che essi valgono 0 quando non asseriti.
Invece, per quanto si riferisce ai segnali con funzione di selettore, la 10ro codifica viene
riportata solo quando epertinente rispetto ai segnali di comando asseriti.
Prima di procedere nell'esame del comportamento delle differenti (classi di) i-
struzioni in pipeline, occorre ritornare Bulla ALU1 per denetare i relativi comandi in
una forma piu conveniente di quella vista al Capitolo 5. 'l
\
"
\
\
\
, \
\
J
I
I
1
I
]
1
]
-
HE/VB
CEl=
"" ""
..

RF
;_11 .......".
I
IMI
uc
..1.
.'
..
lr ID
. "f1'
_Gli aSpetti rilevanti sono illus.trati Fi?ura6.11 per Ie istruziooi di carica.mento e
", dalla-Figura6.12 per queUe dl memonzzaZlone.
,
, -.
- " '-
," "l'.
-;..,.;
.
e . \
'I' . '
.. " .. '
'. I' .'
,., ' "
" .. ' ",'
",
li'l ;";'"
':1 '.",
'j . .. , .
-.'''
.,
I
.. ., , '. "
.
",,,oj!.' ..
-
"'-'" _. ,
;Iii-"" .

..,.. , .
. '" . N' .,.
__ \i;":;<;:. La pipeline 225
;!, -
, ,.d. ., ,. '
:,::' .:,-r..." .... ',
"(..'1 .'
'
F:::> 6.5.2 Istruzioni di Load/Store
\'
r,,,_
, ..,
.:".,; , .
'I .,'
. ; -,
" .-
'," .. " .
.. )' .... ' .
, ."
, "
.., .,,"".
., ."
..
1iM1",..

..
LUI
"

""'-
'OlU
,..,

RF

"" i!:.-
-

,

-
""
uc


""
..
..,
IF'IID
Capitola 6


224
,
Figura 6.10 Scbematizzazione del processo di elaborazione di un'istruzione aritmetico-
logica. n campo ill/EX.EX contiene i comandi per la ALU: OPALU e ALUMux (ALUMux . 'f
seleziona IDjEX.B come ingresso B ALU). Per semplicita non e stato indicato il bloc
co

ContrALU. La fase ME non e richiesta: per questa motivo non viene mostrato il campo .. ".r:' '.
ME sui registri di pipeline. II campo WE deve contenere it eomando RWrite e presentare it (
selettore MemToReg disasserito. n campo IDjEX.IMM potrebbe essere di 11 bit
l
tuttavia ::_."
poiehe essa viene impiegato dagH altri tipi di istruzione) eonviene che esso sia a 32 bit (i1 '.,'...
bloeeo X ha questa funzione, anche se la sua presenza edel tutto pleonastica, in quanto e
del tutto irrilevante cosa venga scritto nei 21 bit pili significativi di IMM). "'.'
.. ,

.,
..
,
,:
Esattarnente come per Ie istruzioni aritmetiche.
Fase ID
II contenuto del registro Rb ecopiato BU ID/EX.A, mentre il campo OFFSET
delllistruzione eesteso in segno e copiato suI registro a 32 bit ill IEX.IMM. Vengo-
no anche opportunamente asseriti i selettori ENW e ENH
l
in base alIa dimensione
del dato trasferito (riconoscibile dal codice di istruz-ione).
Nel caso di Load, il contenuto del campo Rsd dell'istruzione viene copiato in
ID/EX.RW per essere propagato fino aUo stadio WB. Come indicate nella didas-
calia di Figura6.11, la selezione si attua semplicemente usando it segnale MRead,
che risulta asserito solo per Ie istruzioni che usano Rsci come registro di desti-
nazion... Net CMO di Store, il registro Rsd viene letto e copiato sU ID/EX.B; il
valore letto si propaghera. fino aIlo stadia ME per la scrittura in memoria.
Le parti comuni a LD e ST sana:
ID/EX,EX,OPALU +- 3
ID/EX.EX.ALUMux +- 0
ID/EX.WB,RWrite f- 1
ID/EX,WB,MemToReg +- a
ID/EX.A f- RF.A
ID/EX,B f- RF.B
ID/EX.RW f- IF/ID.Rd
ID/EX.IMM f- IF/ID.fALU
Fase EX
La ALU esegue }'operazione specificata dall'istruzione sui valori letti da RF conte-
nuti in ill IEX.A e ill IEX.B. n risultato dell'operazione viene posto nel registro
a 32 bit EX/ME.ALUOut. Dunque, oltre ai trasferimenti standard gil!. discussi
nei Paragraio 6.5, si ha:
EX/ME.ALUOut +- ALUOut
Fase ME
Le istruzioni aritmetiche nOll prevedono accesso alIa memoriaj ovviamente ven.
gono propagati i campi WB e RW sU ME/WE.
Fase WB
II bit ME/WB.RWrite, coUegato all'ingresso RWrite di RF, essendo asserito,
determina la scrittura nel registro selezionato da ME/WB.RW. La scelta di
ME/WB.ALUOut come sorgente del dato da scrivere e automatica, grazie al
segnale MemToReg (che ora vale 0). .'
'.1 ,.
. "

,.

Fase IF
,

1
\
I
)
I
)
J
\
J
I
I
1
I
]
1
]
-
HE/VB
CEl=
"" ""
..

RF
;_11 .......".
I
IMI
uc
..1.
.'
..
lr ID
. "f1'
_Gli aSpetti rilevanti sono illus.trati Fi?ura6.11 per Ie istruziooi di carica.mento e
", dalla-Figura6.12 per queUe dl memonzzaZlone.
,
, -.
- " '-
," "l'.
-;..,.;
.
e . \
'I' . '
.. " .. '
'. I' .'
,., ' "
" .. ' ",'
",
li'l ;";'"
':1 '.",
'j . .. , .
-.'''
.,
I
.. ., , '. "
.
",,,oj!.' ..
-
"'-'" _. ,
;Iii-"" .

..,.. , .
. '" . N' .,.
__ \i;":;<;:. La pipeline 225
;!, -
, ,.d. ., ,. '
:,::' .:,-r..." .... ',
"(..'1 .'
'
F:::> 6.5.2 Istruzioni di Load/Store
\'
r,,,_
, ..,
.:".,; , .
'I .,'
. ; -,
" .-
'," .. " .
.. )' .... ' .
, ."
, "
.., .,,"".
., ."
..
1iM1",..

..
LUI
"

""'-
'OlU
,..,

RF

"" i!:.-
-

,

-
""
uc


""
..
..,
IF'IID
Capitola 6


224
,
Figura 6.10 Scbematizzazione del processo di elaborazione di un'istruzione aritmetico-
logica. n campo ill/EX.EX contiene i comandi per la ALU: OPALU e ALUMux (ALUMux . 'f
seleziona IDjEX.B come ingresso B ALU). Per semplicita non e stato indicato il bloc
co

ContrALU. La fase ME non e richiesta: per questa motivo non viene mostrato il campo .. ".r:' '.
ME sui registri di pipeline. II campo WE deve contenere it eomando RWrite e presentare it (
selettore MemToReg disasserito. n campo IDjEX.IMM potrebbe essere di 11 bit
l
tuttavia ::_."
poiehe essa viene impiegato dagH altri tipi di istruzione) eonviene che esso sia a 32 bit (i1 '.,'...
bloeeo X ha questa funzione, anche se la sua presenza edel tutto pleonastica, in quanto e
del tutto irrilevante cosa venga scritto nei 21 bit pili significativi di IMM). "'.'
.. ,

.,
..
,
,:
Esattarnente come per Ie istruzioni aritmetiche.
Fase ID
II contenuto del registro Rb ecopiato BU ID/EX.A, mentre il campo OFFSET
delllistruzione eesteso in segno e copiato suI registro a 32 bit ill IEX.IMM. Vengo-
no anche opportunamente asseriti i selettori ENW e ENH
l
in base alIa dimensione
del dato trasferito (riconoscibile dal codice di istruz-ione).
Nel caso di Load, il contenuto del campo Rsd dell'istruzione viene copiato in
ID/EX.RW per essere propagato fino aUo stadio WB. Come indicate nella didas-
calia di Figura6.11, la selezione si attua semplicemente usando it segnale MRead,
che risulta asserito solo per Ie istruzioni che usano Rsci come registro di desti-
nazion... Net CMO di Store, il registro Rsd viene letto e copiato sU ID/EX.B; il
valore letto si propaghera. fino aIlo stadia ME per la scrittura in memoria.
Le parti comuni a LD e ST sana:
ID/EX,EX,OPALU +- 3
ID/EX.EX.ALUMux +- 0
ID/EX.WB,RWrite f- 1
ID/EX,WB,MemToReg +- a
ID/EX.A f- RF.A
ID/EX,B f- RF.B
ID/EX.RW f- IF/ID.Rd
ID/EX.IMM f- IF/ID.fALU
Fase EX
La ALU esegue }'operazione specificata dall'istruzione sui valori letti da RF conte-
nuti in ill IEX.A e ill IEX.B. n risultato dell'operazione viene posto nel registro
a 32 bit EX/ME.ALUOut. Dunque, oltre ai trasferimenti standard gil!. discussi
nei Paragraio 6.5, si ha:
EX/ME.ALUOut +- ALUOut
Fase ME
Le istruzioni aritmetiche nOll prevedono accesso alIa memoriaj ovviamente ven.
gono propagati i campi WB e RW sU ME/WE.
Fase WB
II bit ME/WB.RWrite, coUegato all'ingresso RWrite di RF, essendo asserito,
determina la scrittura nel registro selezionato da ME/WB.RW. La scelta di
ME/WB.ALUOut come sorgente del dato da scrivere e automatica, grazie al
segnale MemToReg (che ora vale 0). .'
'.1 ,.
. "

,.

Fase IF
,

1
\
I
)
I
)
J
La. pipeline 227
La selezione di MemDat
ID/EX
jrl/D
-
... uc oX. .4..
"', "
r ._
""..- J LU
I ItTr- lllll l--
ft. ,
RF f---l:.--

o JE, JS:
ID/EX.EX.OPALU t- 2
ID/EX.EX.ALUMux +- 0
ID/EX,A +- RF.RRI
ID/EX.B t- RF.RR2
ID/EX.IHM t- IF/ID.pe1 + SExt" x 4(IF/ID.DFFSETl
Fase IF
La IF si differenzia leggermente nel caso di istruzioni di diramazione (JE e JS),
in quanta occorre capiare BU IFlID anche il valore di PC, che risultera utile
nella fase successiva per calcolare l'indirizzo di destinazione. n relative campo su
IF/ID estato indicato come pel.
Fase ID
Viene calcolate l'indirizzQ di destinazione dei saltij inoltre, le istruzioni per la
chiamata 0 it ritorno dalla subroutine leggono i registri a loro riservati.
Fase WB
In questa passe si completano Ie istruzioni di tipo load..
eattuata tramite ME/WB,MemToReg,
6.5.3 Istruzioni di saito
Nella trattazione che segue, si distingueno i casi delle diverse istruzioni di salta, in
riferimento aile Figure 6.13, 6.14, 6.15 e 6.16,

. I I
II ,I
I
Figura 6.13 Schematizzazione del processo di elaborazione delle istruzioni JE e JS. In
. IDjEX.PCl viene copiato I'indirizzo deU'istruzione successiva a queJla di diramazione. II
campo OFFSET viene moltiplicato per 4 ed esteso a 32 bit dal blocco SX4. Nel testo questa
..processo eindicata come SExt32 x 4(IFjID.OFFSET)
"
",

,
,
..

,
,
..

,
..
,
"
,
"
..
,
,
. 't'
,.
, '

.. ,
:-'1
,
. ,
y
,:'t
','I

-, ,
l' "
, '
,1:
..
,
..
..

,.,:
ME/VB
h
_..
MD
EX/ME

'I t
_'...... 111.
!lVtlI.
,
; Offset esteso con seguo a 32 bit.
Lui ol::::t-I-00-1
; camanda la scrittura in memoria
; data per la memoria
; comanda la scrittura di RF nella stadio WB,t'
; seleziona iJ dato letto in memoria.
; lettura della memoria dati e selezione
di IF/ID,fuld come ingresso a ID/EX,WR

J..+---I

,
,.
ID/D:
t- 1
"

,I I
RF
'/1111
uc
II ..
ID/EX,EX,DPALU t- 1
ID/EX.EX.ALUHux t- 1
ID/EX.HE.ENW t- 1
ID/EX.HE.ENH t- 1
ID/EX.A t- RF.A
ID/EX.IMH t- SExt"CIF/ID.Dffset)
Per Ie istruzioni LD:
ID/EX.WB.RWrite t- 1
ID/EX.WB.HemToReg t- 1
ID/EX.ME.HRead t- 1
Per Ie istruzioni ST:
ID/EX.WB.HWrite
ID/EX.B t- RF.B

'n
IFlID
Fase EX
In questa fase, la ALU somma gli operandi contenuti nei registri ID/EX.A e
ill/EX.IMM. La sola operazione notevole equella satta ciportata, in quanta per
il resto si hanno i normali trasferimenti <Ii ME e WB da ID/EX a EX/ME.
EX/ME.ALUOut ... ALUOut
Fase ME
I segnali nel campo EX/ME.ME determinano I'operazione di memoria eseguita
(lettura 0 scrittura) e I'entita trasferita (parola
l
semiparola 0 byte). L'indirizzo
per la memoria ein EX/ME.ALUOut. Le istruzioni LD caricano iI data letto in
ME/WB.MemDat. Le ST memorizzano il dato in EX/ME.B non hanno seguito
in WB.
":n>"

- -;':;'.f .
"'J'

1) ".',
226 Capitola 6 _ ,i",
, ., .,; '::
'., I '",
.. ' , I
't
l
...
Operazione di somma per la Atu
I . 4
; ID/EX,IMM COme ingresso B AL\J,
; per LW/SW, 0 in tutti gli altri casi :';:.,l.,.:-
; per LH/SH, 0 in tutti gli altri c""i
,'.1;' "
,I, "
..'
Figura 6.12 Schematizza.2ione del processo di elaborazione di una istruzione di memoriz- .'
zazione (ST). IL blocco SX estende con segno iI campo OFFSET. It contenuto del registro .
Rsd viene fatto propagare fino allo stadia ME per la scrittura in memoria.
,
I
I
l
I
I
I
I
I
I
l
I
I
I I
I I
La. pipeline 227
La selezione di MemDat
ID/EX
jrl/D
-
... uc oX. .4..
"', "
r ._
""..- J LU
I ItTr- lllll l--
ft. ,
RF f---l:.--

o JE, JS:
ID/EX.EX.OPALU t- 2
ID/EX.EX.ALUMux +- 0
ID/EX,A +- RF.RRI
ID/EX.B t- RF.RR2
ID/EX.IHM t- IF/ID.pe1 + SExt" x 4(IF/ID.DFFSETl
Fase IF
La IF si differenzia leggermente nel caso di istruzioni di diramazione (JE e JS),
in quanta occorre capiare BU IFlID anche il valore di PC, che risultera utile
nella fase successiva per calcolare l'indirizzo di destinazione. n relative campo su
IF/ID estato indicato come pel.
Fase ID
Viene calcolate l'indirizzQ di destinazione dei saltij inoltre, le istruzioni per la
chiamata 0 it ritorno dalla subroutine leggono i registri a loro riservati.
Fase WB
In questa passe si completano Ie istruzioni di tipo load..
eattuata tramite ME/WB,MemToReg,
6.5.3 Istruzioni di saito
Nella trattazione che segue, si distingueno i casi delle diverse istruzioni di salta, in
riferimento aile Figure 6.13, 6.14, 6.15 e 6.16,

. I I
II ,I
I
Figura 6.13 Schematizzazione del processo di elaborazione delle istruzioni JE e JS. In
. IDjEX.PCl viene copiato I'indirizzo deU'istruzione successiva a queJla di diramazione. II
campo OFFSET viene moltiplicato per 4 ed esteso a 32 bit dal blocco SX4. Nel testo questa
..processo eindicata come SExt32 x 4(IFjID.OFFSET)
"
",

,
,
..

,
,
..

,
..
,
"
,
"
..
,
,
. 't'
,.
, '

.. ,
:-'1
,
. ,
y
,:'t
','I

-, ,
l' "
, '
,1:
..
,
..
..

,.,:
ME/VB
h
_..
MD
EX/ME

'I t
_'...... 111.
!lVtlI.
,
; Offset esteso con seguo a 32 bit.
Lui ol::::t-I-00-1
; camanda la scrittura in memoria
; data per la memoria
; comanda la scrittura di RF nella stadio WB,t'
; seleziona iJ dato letto in memoria.
; lettura della memoria dati e selezione
di IF/ID,fuld come ingresso a ID/EX,WR

J..+---I

,
,.
ID/D:
t- 1
"

,I I
RF
'/1111
uc
II ..
ID/EX,EX,DPALU t- 1
ID/EX.EX.ALUHux t- 1
ID/EX.HE.ENW t- 1
ID/EX.HE.ENH t- 1
ID/EX.A t- RF.A
ID/EX.IMH t- SExt"CIF/ID.Dffset)
Per Ie istruzioni LD:
ID/EX.WB.RWrite t- 1
ID/EX.WB.HemToReg t- 1
ID/EX.ME.HRead t- 1
Per Ie istruzioni ST:
ID/EX.WB.HWrite
ID/EX.B t- RF.B

'n
IFlID
Fase EX
In questa fase, la ALU somma gli operandi contenuti nei registri ID/EX.A e
ill/EX.IMM. La sola operazione notevole equella satta ciportata, in quanta per
il resto si hanno i normali trasferimenti <Ii ME e WB da ID/EX a EX/ME.
EX/ME.ALUOut ... ALUOut
Fase ME
I segnali nel campo EX/ME.ME determinano I'operazione di memoria eseguita
(lettura 0 scrittura) e I'entita trasferita (parola
l
semiparola 0 byte). L'indirizzo
per la memoria ein EX/ME.ALUOut. Le istruzioni LD caricano iI data letto in
ME/WB.MemDat. Le ST memorizzano il dato in EX/ME.B non hanno seguito
in WB.
":n>"

- -;':;'.f .
"'J'

1) ".',
226 Capitola 6 _ ,i",
, ., .,; '::
'., I '",
.. ' , I
't
l
...
Operazione di somma per la Atu
I . 4
; ID/EX,IMM COme ingresso B AL\J,
; per LW/SW, 0 in tutti gli altri casi :';:.,l.,.:-
; per LH/SH, 0 in tutti gli altri c""i
,'.1;' "
,I, "
..'
Figura 6.12 Schematizza.2ione del processo di elaborazione di una istruzione di memoriz- .'
zazione (ST). IL blocco SX estende con segno iI campo OFFSET. It contenuto del registro .
Rsd viene fatto propagare fino allo stadia ME per la scrittura in memoria.
,
I
I
l
I
I
I
I
I
I
l
I
I
I I
I I
I
]
]
I
l
]
I
)
1
1
-
I
-,-
:::1
I
-
A
_.

_ tD/EX
_,..... I'"
uc
IF" 110

viene fatto propagare attraverso la ALUj db richiede che IF/ID.JAL cornan-


di i! traslerimento lDjEX,B... IF.ID,PCl e che la ALU Iasei passare senza
alterazione I'ingresso B (deve essere OPALU=O),
In conclusione si ba:
ID/EX,EX,DPALU ... 0
ID/EX, EX, JAL ... 1
ID/EX, IMM ... Ext" x 4(IF/ID, IND)
ID/EX,B... IF/ID,PCl ; per Ia propagazione di PC+4,
ID/EX,WB,RWrite ... 1
ID/EX, WB, MemToReg ... 0 ; seleziona MEjWB,OLUout
Lo schema della pipeline ein Figura6.15
-I,.,h
,,-..l ...
Figura 6.15 Schema.tizzazione del processo di elaborazione di una. istruzione JAL. Nello
stadio ID il segna.le IFjID.JAL viene usato per selezionare: (a) PCl C;QPle ingresso al cam-
po B cti iD/EX; (b) Ext,,(IF/iD,lND) in a ID/EX.IMM; (c) 31 come a
ID/EX.RW (il selettore aorrispondente si trova a valle di quello che sceglie tra Rd. e Rsd),
.Nello stadio EX, similmente al caso dell'istruzione JMP, il segnale ID/EX.JAL eusato per
-Selezionare I'ingresso a PC.
".\,
, ..
',:':;1 '
""1 "
..' ,'" "
'I :'
.--"."
'
'r'
'..j.'
"-
...
"""'1 '
, .
, '
."'.. .
.. '.,
.;..
'iJI
',.,j
'1
1
1"
'.
'1 '"
,:t
"
-.' ..
I ';-"-
.'
"
; ;',

,I,
" . '. ..:.
ME/Vi
EX/ME
-
ID/EX
uc I ,-, r
1..... 1----"
IF" lID

ID/EX,EX,JE 1
ID/EX, EX, JS 1
Inoltre:
per Ia JE:
per la JS:
ro";".:. _
.
., .

,:;;. - La pipeline 229
.;::;.;:- ;'.1:' __-----------------------------=::..'-"c:.:-'----
", :"\;
-...... ':: ""rr,:c. -.-
. . {., . ':-.
,. ,. '" '.',
" ;:::.i,:':-
, i! .'. .
" " .. '. 'i',',' '
'/;''i., , '
'-it:.::
.\;'e ",
',tJi .',
,;" .;
" ", -,: ...
,.; .
,.
..:.,;. .'
F:' .
" "
I; ,
Uindirizzo del salto viene scritto su ID/EX.IMM. Per selezionare in ingresso
a PC l'indirizzo del saitoI viene usata la linea JMP. . :[}.1
ID/EX,EX,JMP ... 1
ID/EX.IMM t- Ext32 x 4(IF/ID.IND) ; estensione senza segno.
ID/EX,ME 0
ID/EX,WB 0
La schema della pipeline ein Figura6.14
Ca.pitolo 6
o JMP:
I.. I .. !

228
,
.' if
I '.1'<
'-,
" '.
'ti) , "
'" '.( ,
','). .,-,
, ;:"
"'h.; -
Figura 6.14 Schematizzazione del processo di elaborazione di una istruzione JMP. It bloc- ',:
co X4 moltiplica per 4 ed estende a 32 bit. II segnale IDjEX.JMP e usato in fae EX :.
per selezionare I'ingresso a PCj nella fase precedente il medesimo segnale viene usato per _
selezionare Ext32(IF/ID.IND) in ingresso a ID/EX.IMM. ..
,
, .
"I'
.,
.', '
' ...
.. , );
o JAL: :,":'11"
.' :(\-
Del tutto analoga a. JMP, da cui differisce per il fatto df scrivere il valore 'j "
deIl'indirizzo di ritorno in R31. Questa fatto comporta una cecta compli-
cazione, in quanto 1a scrittura cii R31 richiede 1a propagazione del valore
corrente di PC fino aIlo stadia WB, facendo impiegare a JAL tutti e cinque i
periodi i clock, diversamente dalle altre istruzioni di salto
ll
. Per selezionare
R31
,
si ricorrer.e a un selettore, a valle di queUo che sceglie tra Rei e Rsd! ':;.0"
che lasc! passare Pmgresso fisso "31" nel campo ID/EX.ME; tale selettore
puo essere eomandato can lalinea JAL nella stadia ID, II campo IFJID,PCI ."':
" 'rl' , '. ,
o JR:
It saIto indiretto attraverso un registro viene cii norma usato per il ritorno
. dalla subroutine (usando R31 a qualunque altro registro dove estato eopiato
l'indirizzo dt ritorno). D campo Rsl codifica il registro contenente l'indirizzo
di destinazione. Si ha dunque:
ID/EX,EX,JR ... 1
ID/EX,IMM <- RF,RRI
La schema della pipeline ein Figura6.16. La selezione della porta A di RF
come ingresso a IMM eottenuta tramite it segnale JR,
)
I
1
11 A meno di non voler complicare in modo esorbitante la logica di controllo, 10 stadio WB non
puo essere evitato facendo scrivere R31 in questa fase, infatti cia potrebbe interferire con l'eventuale
scrittura dell'istruzione che si trova attualmente in WB.
" I
, " ,.
"
.
'1;
Fase EX
o JE, JS:
J
I
]
]
I
l
]
I
)
1
1
-
I
-,-
:::1
I
-
A
_.

_ tD/EX
_,..... I'"
uc
IF" 110

viene fatto propagare attraverso la ALUj db richiede che IF/ID.JAL cornan-


di i! traslerimento lDjEX,B... IF.ID,PCl e che la ALU Iasei passare senza
alterazione I'ingresso B (deve essere OPALU=O),
In conclusione si ba:
ID/EX,EX,DPALU ... 0
ID/EX, EX, JAL ... 1
ID/EX, IMM ... Ext" x 4(IF/ID, IND)
ID/EX,B... IF/ID,PCl ; per Ia propagazione di PC+4,
ID/EX,WB,RWrite ... 1
ID/EX, WB, MemToReg ... 0 ; seleziona MEjWB,OLUout
Lo schema della pipeline ein Figura6.15
-I,.,h
,,-..l ...
Figura 6.15 Schema.tizzazione del processo di elaborazione di una. istruzione JAL. Nello
stadio ID il segna.le IFjID.JAL viene usato per selezionare: (a) PCl C;QPle ingresso al cam-
po B cti iD/EX; (b) Ext,,(IF/iD,lND) in a ID/EX.IMM; (c) 31 come a
ID/EX.RW (il selettore aorrispondente si trova a valle di quello che sceglie tra Rd. e Rsd),
.Nello stadio EX, similmente al caso dell'istruzione JMP, il segnale ID/EX.JAL eusato per
-Selezionare I'ingresso a PC.
".\,
, ..
',:':;1 '
""1 "
..' ,'" "
'I :'
.--"."
'
'r'
'..j.'
"-
...
"""'1 '
, .
, '
."'.. .
.. '.,
.;..
'iJI
',.,j
'1
1
1"
'.
'1 '"
,:t
"
-.' ..
I ';-"-
.'
"
; ;',

,I,
" . '. ..:.
ME/Vi
EX/ME
-
ID/EX
uc I ,-, r
1..... 1----"
IF" lID

ID/EX,EX,JE 1
ID/EX, EX, JS 1
Inoltre:
per Ia JE:
per la JS:
ro";".:. _
.
., .

,:;;. - La pipeline 229
.;::;.;:- ;'.1:' __-----------------------------=::..'-"c:.:-'----
", :"\;
-...... ':: ""rr,:c. -.-
. . {., . ':-.
,. ,. '" '.',
" ;:::.i,:':-
, i! .'. .
" " .. '. 'i',',' '
'/;''i., , '
'-it:.::
.\;'e ",
',tJi .',
,;" .;
" ", -,: ...
,.; .
,.
..:.,;. .'
F:' .
" "
I; ,
Uindirizzo del salto viene scritto su ID/EX.IMM. Per selezionare in ingresso
a PC l'indirizzo del saitoI viene usata la linea JMP. . :[}.1
ID/EX,EX,JMP ... 1
ID/EX.IMM t- Ext32 x 4(IF/ID.IND) ; estensione senza segno.
ID/EX,ME 0
ID/EX,WB 0
La schema della pipeline ein Figura6.14
Ca.pitolo 6
o JMP:
I.. I .. !

228
,
.' if
I '.1'<
'-,
" '.
'ti) , "
'" '.( ,
','). .,-,
, ;:"
"'h.; -
Figura 6.14 Schematizzazione del processo di elaborazione di una istruzione JMP. It bloc- ',:
co X4 moltiplica per 4 ed estende a 32 bit. II segnale IDjEX.JMP e usato in fae EX :.
per selezionare I'ingresso a PCj nella fase precedente il medesimo segnale viene usato per _
selezionare Ext32(IF/ID.IND) in ingresso a ID/EX.IMM. ..
,
, .
"I'
.,
.', '
' ...
.. , );
o JAL: :,":'11"
.' :(\-
Del tutto analoga a. JMP, da cui differisce per il fatto df scrivere il valore 'j "
deIl'indirizzo di ritorno in R31. Questa fatto comporta una cecta compli-
cazione, in quanto 1a scrittura cii R31 richiede 1a propagazione del valore
corrente di PC fino aIlo stadia WB, facendo impiegare a JAL tutti e cinque i
periodi i clock, diversamente dalle altre istruzioni di salto
ll
. Per selezionare
R31
,
si ricorrer.e a un selettore, a valle di queUo che sceglie tra Rei e Rsd! ':;.0"
che lasc! passare Pmgresso fisso "31" nel campo ID/EX.ME; tale selettore
puo essere eomandato can lalinea JAL nella stadia ID, II campo IFJID,PCI ."':
" 'rl' , '. ,
o JR:
It saIto indiretto attraverso un registro viene cii norma usato per il ritorno
. dalla subroutine (usando R31 a qualunque altro registro dove estato eopiato
l'indirizzo dt ritorno). D campo Rsl codifica il registro contenente l'indirizzo
di destinazione. Si ha dunque:
ID/EX,EX,JR ... 1
ID/EX,IMM <- RF,RRI
La schema della pipeline ein Figura6.16. La selezione della porta A di RF
come ingresso a IMM eottenuta tramite it segnale JR,
)
I
1
11 A meno di non voler complicare in modo esorbitante la logica di controllo, 10 stadio WB non
puo essere evitato facendo scrivere R31 in questa fase, infatti cia potrebbe interferire con l'eventuale
scrittura dell'istruzione che si trova attualmente in WB.
" I
, " ,.
"
.
'1;
Fase EX
o JE, JS:
J
231

"" M

'"'
La. pipeline

""
M

ID!EX
asserito solo per l'istruzione JR.
asserito solo per l'istruzione JE;
asserito solo per l'istruzione JS;
asserito solo per l'istruzione JMP;
asserito solo per l'istruzione JALj
abilita il trasferimento di una parola;
abilita il trasferimento di una semiparola.
comanda la scrittura in memoria;
seleziona l'rngresso B ana ALU;
seleziona l'operazione ALU;
0(>
"
eo,
IFlID
o JMP:
o JR:
o JAL:
o JS:
o JE:
o OPALU:
o ALUMux:
o ENH:
o ENW:
o MWrite:
o
I segnali facenti parte del campo EX sono:
6.6 L'unita di controllo
,Figura 6.17 I registri di pipeline IF/ID, ill/EX, EX/ME, ME/WB con tutti i campi conte-
nutL Nel registro IF/ID si trovano l'Instruction Register e il PCl. Nell'IR si trovano i campi
relativi all'istruzione. Su ID/EX, il registro IMM puo contenere sia fALU per Ie istruzioni
aritmetiche che un indirizzo calcolato in varia modo a seconda dell'istruzione. II campo
ID/EX.B enormalmente usato per tenere copia del registro sorgente codificato nel campo
corrispondente a Rs2 dell'istruzione. Nel caso dell'istruzione JAL, ID/EX.B viene usato per
contenere l'indirizzo da salvare in R31.
. La stesura della schema della rete di controllo richiede la ricomposizione degli schemi
che SOno stati tracciati in precedenza.
,-,
, ,
"
,
.' ..
.- ','-
,
,
,
--"
',': I'
'".-
. :'
'.,
"
, ,,'
,1:
.':::.
.
. ,;'
.".-
,
"f,1
-';:: '.
- ,.'
.);1 .'.
-., ..
"j,
;:
..
,"I"
." , ..
"
,
:!:
> - -, '.
, ." '"
: h":'"
-: ";,.
-''"''.,
,;..}:'" .
.
,t_'" .
r :;.- ,--' ;
.- ,:

>'"
... ,-
, '.,-'
HENS ::--1'/__ .-
-- -\1 '
(ovviamente _
(X/H(
Rr

ID/EX

uc I l' ir';I ..
per la scrittura in RF da parte delle istruzioni load e arit-
metiche.
comanda la lettura in memoria;
comanda la scrittura del registro di destinazione;
o JMP. JAL. JR:
PC viene aggiornato con l'indirizzo contenuto in ill /EX.IMM
utilizzando I'OR dei tre segnali per comandare il selettore),
o MRead:
o MemToReg:
o RWrite:
Solo l'istruzione JAL scrive in R31 Pindirizzo contenuto in ME/WB.ALUOut.


In modo non dissimile da quanto visto per CPU2, i segnali Zero e Segno, in _"
AND rispettivamente con JE e JS, vengono usato per selezionare in ingresso ,"
a PC il contenuto del registro ID/EX.IMM, ",
,
Fase ME
Nessuna operazione per Ie istruzioni di salto.

Fase WB
I segnali facenti parte del campo WB sono:
I segnali facenti parte del campo ME sono:
Figura 6.16 Schematizzazione del processo di elaborazione di una istruzione JR. Qui il <i
segnale IDjEX.JR eusa-to per selezionare: (1) IDjEX.IMM come ingresso a PC in rase EX. :-
, "
e l'uscita A di RF come ingresso a. IDjEX.IMM. . "
230 Capitola 6
6.5.4 Sintesi del contenuto dei campi EX, ME, WB
In Figura 6.17 viene illustrato l'insieme dei campi risultanti dall'analisi svolta. Conviene
elencare i campi e i sottocampi di comando fin qui identificati; al prossimo paragrafo;'
questa lista ci guidera nella stesura della logica di cantralla. '.;.,
j
\
I
l
1
l
I
I
I
I
I
I
I
I
I I
231

"" M

'"'
La. pipeline

""
M

ID!EX
asserito solo per l'istruzione JR.
asserito solo per l'istruzione JE;
asserito solo per l'istruzione JS;
asserito solo per l'istruzione JMP;
asserito solo per l'istruzione JALj
abilita il trasferimento di una parola;
abilita il trasferimento di una semiparola.
comanda la scrittura in memoria;
seleziona l'rngresso B ana ALU;
seleziona l'operazione ALU;
0(>
"
eo,
IFlID
o JMP:
o JR:
o JAL:
o JS:
o JE:
o OPALU:
o ALUMux:
o ENH:
o ENW:
o MWrite:
o
I segnali facenti parte del campo EX sono:
6.6 L'unita di controllo
,Figura 6.17 I registri di pipeline IF/ID, ill/EX, EX/ME, ME/WB con tutti i campi conte-
nutL Nel registro IF/ID si trovano l'Instruction Register e il PCl. Nell'IR si trovano i campi
relativi all'istruzione. Su ID/EX, il registro IMM puo contenere sia fALU per Ie istruzioni
aritmetiche che un indirizzo calcolato in varia modo a seconda dell'istruzione. II campo
ID/EX.B enormalmente usato per tenere copia del registro sorgente codificato nel campo
corrispondente a Rs2 dell'istruzione. Nel caso dell'istruzione JAL, ID/EX.B viene usato per
contenere l'indirizzo da salvare in R31.
. La stesura della schema della rete di controllo richiede la ricomposizione degli schemi
che SOno stati tracciati in precedenza.
,-,
, ,
"
,
.' ..
.- ','-
,
,
,
--"
',': I'
'".-
. :'
'.,
"
, ,,'
,1:
.':::.
.
. ,;'
.".-
,
"f,1
-';:: '.
- ,.'
.);1 .'.
-., ..
"j,
;:
..
,"I"
." , ..
"
,
:!:
> - -, '.
, ." '"
: h":'"
-: ";,.
-''"''.,
,;..}:'" .
.
,t_'" .
r :;.- ,--' ;
.- ,:

>'"
... ,-
, '.,-'
HENS ::--1'/__ .-
-- -\1 '
(ovviamente _
(X/H(
Rr

ID/EX

uc I l' ir';I ..
per la scrittura in RF da parte delle istruzioni load e arit-
metiche.
comanda la lettura in memoria;
comanda la scrittura del registro di destinazione;
o JMP. JAL. JR:
PC viene aggiornato con l'indirizzo contenuto in ill /EX.IMM
utilizzando I'OR dei tre segnali per comandare il selettore),
o MRead:
o MemToReg:
o RWrite:
Solo l'istruzione JAL scrive in R31 Pindirizzo contenuto in ME/WB.ALUOut.


In modo non dissimile da quanto visto per CPU2, i segnali Zero e Segno, in _"
AND rispettivamente con JE e JS, vengono usato per selezionare in ingresso ,"
a PC il contenuto del registro ID/EX.IMM, ",
,
Fase ME
Nessuna operazione per Ie istruzioni di salto.

Fase WB
I segnali facenti parte del campo WB sono:
I segnali facenti parte del campo ME sono:
Figura 6.16 Schematizzazione del processo di elaborazione di una istruzione JR. Qui il <i
segnale IDjEX.JR eusa-to per selezionare: (1) IDjEX.IMM come ingresso a PC in rase EX. :-
, "
e l'uscita A di RF come ingresso a. IDjEX.IMM. . "
230 Capitola 6
6.5.4 Sintesi del contenuto dei campi EX, ME, WB
In Figura 6.17 viene illustrato l'insieme dei campi risultanti dall'analisi svolta. Conviene
elencare i campi e i sottocampi di comando fin qui identificati; al prossimo paragrafo;'
questa lista ci guidera nella stesura della logica di cantralla. '.;.,
j
\
I
l
1
l
I
I
I
I
I
I
I
I
I I
1
1
I
I
I
I
\
J
1
\
\
I
l
1
1
1
I
__ ",..,..,. 233

Avalle del selettore a 4 ingressi comandata da IMMux, un ulteriore selettore a due


ingressi forza il trasferimento in IMM di RF.A (ovvero del contenuto del registro
identificato dal campo corrispondente a Rsl), quando la linea JR easserita.
ov
D.o,.. .-tad",
k" o.
RIJ,..I-t.,
ttl/ex

u.....
-

'<0
0
I
n
r
R .......
"
f""
I-
LGI_


,_.
"
R,

,
...
I-

l-
."
I-
,
,
'v
,
-

0
.. ,
."
0

,
,-
0
0" I
..

., c-
,.,

5, Stadia WB
La schema dello stadio di scritt\.lra dei registri eriportato in Figura6.22.
3, Stadia EX
Lo schema della stadio di esecuzione eriportato in Figura 6.20.
4, Stadio ME
Lo schema dello stadio di memorizzazione dei dati eriportato nella Figura 6.21. I
due blocchi Xst e Xld carrispondono agE schemi di Figura6.6 e Figura6.5, tramite
i quali viene trasferito il dato della giusta misura e nella carretta posizione.
'I '
",' ,
,
,I
'(-.I' ":
"
,I
.':: ' ,
I
,
,'"" , ,
'co'

.,
:,'
""
, ;'; ,
..., ., " ..
, 'i' I, " '
. ' ..
,,' I '
,.,;t ,
" \'
, ' .. "
. .' '
... ,;
'.' ..
.,..:;1.-

'; ..
..
,'" I'
'.

L'unita di control

0 0 0
L ,ST 1 0 1

2 1 0
, JAL 3 1 1
I [ IMiVlux [1NINluxl I IMMuxO I
""JR......
If liD
"
'v,
-
,
I
.... PlO.....
-
h,-t,..... tlcnI
'0'
I
." c-
\ ...eIIl... :.."

0
'-
I

":'1' '
lMMux seleziona I'ingresso a ID/EX.IMM tra quelli provenienti dai seguenti cam " .. "
pi: (a) fALy, Ie istruzioni di t.ipo aritmetico; (b) OFFSET, con Ie operazioni . ..
ehe fanna nfenmente alia memana; (e) lND per JMP e JAL; (d) OFFSET per':'
JE e JS, IMMux viene cadificata come in Tabella 6,5,'-.::1> ",
La schema della stadia di decodifica eriportato in Figura 6.19.
10 genera segnali per Ia fase ill e per Ie successive.
2, Stadia ID
1. Stadia IF

,',';::' ," . 'Figura 6.19 L?gica..di cantrolla della stadia ill. La linea. MRead, seleziooa Rsd come
[)( , " , , tro di deshnazlOne In Juogo della standard Rdj a valle del relatlvo selettore, un ultenore
Figura 6.18 Logica di controllo della stadio IF. L'ingresso a PC eseleziona.to attraverso: . impone R31 come registro di destinazione per PistM12ione JAL. n blocco LGIMM
PCMux. Normalmente PCMux vale 0 e PC viene incrementato di 4. Quando vale 1 viene : ,; . " serve a generare IMMux, tramite it quale viene attuata ta scelta principale per l'ingresso a
l'ingresso da.l car:npo I.MM di ID/EX. II comando lettura . ID/EX.IMM. In caso eli JR, 1.30 scelta di questa viene irrilevante
non e strettamente necessano; estato eVldeuzlato perche 10 stesso segnale 51 rende necessaria .. J, ,:", ,:. 'selettore a valle, che fa coplare In IMM II contenuto del reglstro Rsi. La IOgica contenuta 10
nel caso di CPU con una sola memoria. In IF/TO.PCI viene salvato il valore dell'indirizzo' :.:':, .' LGIMM deriva dalla Tabella 6.5 e risultera evidente pin avanti.
dell'istruzione successiva a quetla letta (ovviamente PCl viene aggiornato a ogni clockj ',;;1 :,;;7",' ':' '
dipende dal codice di istruzione se esso viene 0 no usato a valle). ,:.;j: ",':>':;,:
'",:1 .::
' .. ..-1 ,C',
, '".'
",....l c,,', .
""; "
. '"
. -" -,
;'L' .
,,;,' ,I


,

... f
t
''''..... ,
., "; ,'""
232 Cap
'tolo 6 ',:i.:: 1.", ",in"I;....
I .'d'ij.... ,
",.:. I'!'''' . '
.
. -
,:.}.-,
'<'It\lf. ':-':-:.
'/'l:l1 . '.,.'. ,
" '_":.. ' .IL ," ._,
'"':"',, " .. ' .,'
. . :Ii!', , .

'J .
.-1 ,"
La logica relativa al PC e alIa memoria istruzioni
1
si traccia facilmente .
ra6.18). Si tratta infatti di prevedere Pingresso alternativo a PC+4 che, COrne
abbiamo vista, proviene sempre da IDjEX,IMM, .;'h' ;".,-
,
I
I
I
I
I
, ",0.
Tabella 6,5 Codifica del selettore IMMux. La colonna IMMux fornisce il valore numerica,
Ie colonne IMMuxl e IMMuxO danno la codifica binaria.
:.-.
':'
-' '",
.... ;
"
)
1
1
I
I
I
I
\
J
1
\
\
I
l
1
1
1
I
__ ",..,..,. 233

Avalle del selettore a 4 ingressi comandata da IMMux, un ulteriore selettore a due


ingressi forza il trasferimento in IMM di RF.A (ovvero del contenuto del registro
identificato dal campo corrispondente a Rsl), quando la linea JR easserita.
ov
D.o,.. .-tad",
k" o.
RIJ,..I-t.,
ttl/ex

u.....
-

'<0
0
I
n
r
R .......
"
f""
I-
LGI_


,_.

"
R,

,
...

I-

l-
."
I-
,
,
'v
,
-

0
.. ,
."
0

,
,-
0
0" I
..

., c-
,.,

5, Stadia WB
La schema dello stadio di scritt\.lra dei registri eriportato in Figura6.22.
3, Stadia EX
Lo schema della stadio di esecuzione eriportato in Figura 6.20.
4, Stadio ME
Lo schema dello stadio di memorizzazione dei dati eriportato nella Figura 6.21. I
due blocchi Xst e Xld carrispondono agE schemi di Figura6.6 e Figura6.5, tramite
i quali viene trasferito il dato della giusta misura e nella carretta posizione.
'I '
",' ,
,
,I
'(-.I' ":
"
,I
.':: ' ,
I
,
,'""
, ,
'co'

.,
:,'
""
, ;'; ,
..., ., " ..
, 'i' I, " '
. ' ..
,,' I '
,.,;t ,
" \'
, ' .. "
. .' '
... ,;
'.' ..
.,..:;1.-

'; ..
..
,'" I'
'.

L'unita di control

0 0 0
L ,ST 1 0 1

2 1 0
, JAL 3 1 1
I [ IMiVlux [1NINluxl I IMMuxO I
""JR......
If liD
"
'v,
-
,
I
.... PlO.....
-
h,-t,..... tlcnI
'0'
I
." c-
\ ...eIIl... :.."

0
'-
I

":'1' '
lMMux seleziona I'ingresso a ID/EX.IMM tra quelli provenienti dai seguenti cam " .. "
pi: (a) fALy, Ie istruzioni di t.ipo aritmetico; (b) OFFSET, con Ie operazioni . ..
ehe fanna nfenmente alia memana; (e) lND per JMP e JAL; (d) OFFSET per':'
JE e JS, IMMux viene cadificata come in Tabella 6,5,'-.::1> ",
La schema della stadia di decodifica eriportato in Figura 6.19.
10 genera segnali per Ia fase ill e per Ie successive.
2, Stadia ID
1. Stadia IF

,',';::' ," . 'Figura 6.19 L?gica..di cantrolla della stadia ill. La linea. MRead, seleziooa Rsd come
[)( , " , , tro di deshnazlOne In Juogo della standard Rdj a valle del relatlvo selettore, un ultenore
Figura 6.18 Logica di controllo della stadio IF. L'ingresso a PC eseleziona.to attraverso: . impone R31 come registro di destinazione per PistM12ione JAL. n blocco LGIMM
PCMux. Normalmente PCMux vale 0 e PC viene incrementato di 4. Quando vale 1 viene : ,; . " serve a generare IMMux, tramite it quale viene attuata ta scelta principale per l'ingresso a
l'ingresso da.l car:npo I.MM di ID/EX. II comando lettura . ID/EX.IMM. In caso eli JR, 1.30 scelta di questa viene irrilevante
non e strettamente necessano; estato eVldeuzlato perche 10 stesso segnale 51 rende necessaria .. J, ,:", ,:. 'selettore a valle, che fa coplare In IMM II contenuto del reglstro Rsi. La IOgica contenuta 10
nel caso di CPU con una sola memoria. In IF/TO.PCI viene salvato il valore dell'indirizzo' :.:':, .' LGIMM deriva dalla Tabella 6.5 e risultera evidente pin avanti.
dell'istruzione successiva a quetla letta (ovviamente PCl viene aggiornato a ogni clockj ',;;1 :,;;7",' ':' '
dipende dal codice di istruzione se esso viene 0 no usato a valle). ,:.;j: ",':>':;,:
'",:1 .::
' .. ..-1 ,C',
, '".'
",....l c,,', .
""; "
. '"
. -" -,
;'L' .
,,;,' ,I


,

... f
t
''''..... ,
., "; ,'""
232 Cap
'tolo 6 ',:i.:: 1.", ",in"I;....
I .'d'ij.... ,
",.:. I'!'''' . '
.
. -
,:.}.-,
'<'It\lf. ':-':-:.
'/'l:l1 . '.,.'. ,
" '_":.. ' .I
L
," ._,
'"':"',, " .. ' .,'
. . :Ii!', , .

'J .
.-1 ,"
La logica relativa al PC e alIa memoria istruzioni
1
si traccia facilmente .
ra6.18). Si tratta infatti di prevedere Pingresso alternativo a PC+4 che, COrne
abbiamo vista, proviene sempre da IDjEX,IMM, .;'h' ;".,-
,
I
I
I
I
I
, ",0.
Tabella 6,5 Codifica del selettore IMMux. La colonna IMMux fornisce il valore numerica,
Ie colonne IMMuxl e IMMuxO danno la codifica binaria.
:.-.
':'
-' '",
.... ;
"
)

ME/VB
VB


Ou
0
1
"" Do
"V
I Alto stadia I

1
--
I 1 1 1 1
1 0 0 0 1 1
LB 1 0 0 0 0 0
LH 1 0 0 0 0 1
SW 1 0 1 0 1 1
SB 1 0 1 0 0 0
SH 1 0 1
0 0 1
JAL
0 0 0 0 1 1
JR 0 0 0 1 1 1
JMP 0 0 0 0 1
0
-ri
E 0 0 0
-{- {
0
tn 1 1 1
0
NOi' 0 0 0 0 U 0
Allo stodia 10
I nOpO I Opl IOp2 I Op3 I Op4 I Op5 I

RIJ
IJB
ME/\JB

Read
Indir-'zzo
W'l"'i"te
\Jrite
I Doto I
rl IHEM
___ Xst Xld Dot
t t J.. V -I
rl I I I'ALU
Out
PCM"'I<
"""
"AC
""
ID/EX
(X/HE
"
VO
"
....
<E

"
OP"'LU E
,

A
Zpro
..""'.
ACU
Ou'

,
CO'1'r-"'l.U
"..
,
21-31
..
B
ME
IJB
ALU
Out
EX/ME
Alto
stndio
"
Capitolo 6
Alto
stodio IF
-
'1;'.... '
]l "I: "'.

..",.,., .
,'1'_'1.,<,., ."
La plpehne 235
',.
l'iI:b:i,J:; .. '
...k:,': .
'fJ'"1 :
":...1 :J'ol '. ,.- .
,.':j( J,II.,.,- ..
.... ' ..
: '.::..: ),;1,-:,:.
," '. J<" .
-: .. .....
.. '
...t'\.-: {l:', .
,",:'1._ .....,. "'.
",t, "",':1'
': ,'. ,
"'/i'" .'.',"

" :-;l-,<;t}': ',>r';
,.r .. c.
..
., ,'1-.-, -.._"
.... ..
1" .
'. "il .
... ".>'", ,. , '
..""" ..
".{t."] ,,' ,',.'
;''';iI'!j1 1:/'" '
..'.,......,. ...\.:"
f,' ..< ' ,
,.::. '." ..',

",f''1{'' '.;.'." ::,.. ',,' .
.1'.....J '). 'I": '.' '... ".;
'r-IIl:' \. .. " .. "
, J"I,,!" -i):':"'-' .'.' .': .
. "'!:::';:-.;' '.
...... ';' ..
..,.. lr'."-... .'
....' .
,,' "' ...... '.,' .

flO',. ,:,'"
'''1 .."." ...
'iii;:'::'''':''",> ,; '.
, 'II" :,.\:.,.," ",
'.-",ll " ", ' ..
, ... ', .. "'Ii' ,... ' ,'.'
di della stadio EX: II selettore.AL1!Mux deve valere 1 Figura 6.22 Logica d,i dello stadio II selettore stabilisce
s.ulle lStruzlOn1 che nferlmento alia 51 ottlene OR delle due viene scritto in Rd. 51 ncordl che su ALUOut 51 pub trovare 11 delle operazlODl
lmee e MWnte. 11 se.lettore sceglie II campo come lnE?'esso a '::aiitmetiche e logiche, ma anche l'indirizzo di ritorno salvato dall'lStruzlOne JAL (che sara.
presenza di JMP, JAL 0 JR; m presenza di JE e JS se 5000 venficate Ie relative condltloUi. :".(,', Scritto in R31).
,<.... .

,'"',,
.. "
",,:':' r ,:,\'-rj,.-I, ".
'
, ::N'';,.;'
:.',!{.,ilY.i ;." ",
j; 'JI..{.
.r.,,.,, ,
.".

,:, '. "ll:';': .
.;:. -! .... .-
""\" ..f,',., '
,-,-...-,,11,'
"',:W;.1 ,:"'';''... ;::,,'
' . "(.'1: ",ft',J"" "
,r-;.':"":'
, 'i";f.!;fjJ'ir '1.\,:,,:,:.,:,
.,".' ,"'.
, '$;\", ,. ,
..
., ';"':'" '.,
. ,. "'j ..}I." .
.' ':';' ",i,:.;, ..
.'ro.;;: . 'to , .
, ""-" '"" t . ' "
, --- ,",'.,
';11. :r {.,l. I.,
,;." .
.. ,

'"1 '.,. .
w, .... " "
. I.' """
,"'U ,.' ',', ..
,

.:.
r" .

l. .. ,
'PI' '/" i
,. , . ,
.'::i '
, 'I,
'iI,., I,.. '
".1 , ' .
.r,., ", ..
,
".' '. " ..
I '.' .,,'
".(ik\ Tabella 6.6 Codifica delle istruzioni. Il codice operativo del NOP e un campo di soli
zeri; per Ie operaziooi aritmetiche estata scelta una. stringa di 1. Per quanto riguarda Ie
Jt ;" ;.. istruzioni, i primo lore bit eli OP (OPO, OPl, OP2) iodividuano il tipo di istruzione
Figura 6.21 Logica di controllo dello stadio ME. I blocchi Xst e Xld selezionano e posi- (nferimenti aHa memoria 0 saltO, mentre i restanti codificano l'istruziooe all'interoo della
zionano il dato trasferito. I due buffer suI bus datil il cui ruolo eovvio
j
vengono r, ..' .dasse di appartenenza.
dai segnaii di comando della memoria. Il blocco F ha 10 scopo eli generare per il segnale di .:.:, ' ..
scrittura una forma d'onda che eviti scritture indesiderate mentre gli indirizzi si assestaoo.. ',;\a\.,>'
, ",f:'; >"\
.$ ,.. .
'.' l " '
' ....... , t.,''
.-'" P" ':
.>:"' l;" 'I,

... ",.,
" ".:1' ,.
234
I
I
\
I
J
I
I
I
I
I
I
I
I
I
(
,I

ME/VB
VB


Ou
0
1
"" Do
"V
I Alto stadia I

1
--
I 1 1 1 1
1 0 0 0 1 1
LB 1 0 0 0 0 0
LH 1 0 0 0 0 1
SW 1 0 1 0 1 1
SB 1 0 1 0 0 0
SH 1 0 1
0 0 1
JAL
0 0 0 0 1 1
JR 0 0 0 1 1 1
JMP 0 0 0 0 1
0
-ri
E 0 0 0
-{- {
0
tn 1 1 1
0
NOi' 0 0 0 0 U 0
Allo stodia 10
I nOpO I Opl IOp2 I Op3 I Op4 I Op5 I

RIJ
IJB
ME/\JB

Read
Indir-'zzo
W'l"'i"te
\Jrite
I Doto I
rl IHEM
___ Xst Xld Dot
t t J.. V -I
rl I I I'ALU
Out
PCM"'I<
"""
"AC
""
ID/EX
(X/HE
"
VO
"
....
<E

"
OP"'LU E
,

A
Zpro
..""'.
ACU
Ou'

,
CO'1'r-"'l.U
"..
,
21-31
..
B
ME
IJB
ALU
Out
EX/ME
Alto
stndio
"
Capitolo 6
Alto
stodio IF
-
'1;'.... '
]l "I: "'.

..",.,., .
,'1'_'1.,<,., ."
La plpehne 235
',.
l'iI:b:i,J:; .. '
...k:,': .
'fJ'"1 :
":...1 :J'ol '. ,.- .
,.':j( J,II.,.,- ..
.... ' ..
: '.::..: ),;1,-:,:.
," '. J<" .
-: .. .....
.. '
...t'\.-: {l:', .
,",:'1._ .....,. "'.
",t, "",':1'
': ,'. ,
"'/i'" .'.',"

" :-;l-,<;t}': ',>r';
,.r .. c.
..
., ,'1-.-, -.._"
.... ..
1" .
'. "il .
... ".>'", ,. , '
..""" ..
".{t."] ,,' ,',.'
;''';iI'!j1 1:/'" '
..'.,......,. ...\.:"
f,' ..< ' ,
,.::. '." ..',

",f''1{'' '.;.'." ::,.. ',,' .
.1'.....J '). 'I": '.' '... ".;
'r-IIl:' \. .. " .. "
, J"I,,!" -i):':"'-' .'.' .': .
. "'!:::';:-.;' '.
...... ';' ..
..,.. lr'."-... .'
....' .
,,' "' ...... '.,' .

flO',. ,:,'"
'''1 .."." ...
'iii;:'::'''':''",> ,; '.
, 'II" :,.\:.,.," ",
'.-",ll " ", ' ..
, ... ', .. "'Ii' ,... ' ,'.'
di della stadio EX: II selettore.AL1!Mux deve valere 1 Figura 6.22 Logica d,i dello stadio II selettore stabilisce
s.ulle lStruzlOn1 che nferlmento alia 51 ottlene OR delle due viene scritto in Rd. 51 ncordl che su ALUOut 51 pub trovare 11 delle operazlODl
lmee e MWnte. 11 se.lettore sceglie II campo come lnE?'esso a '::aiitmetiche e logiche, ma anche l'indirizzo di ritorno salvato dall'lStruzlOne JAL (che sara.
presenza di JMP, JAL 0 JR; m presenza di JE e JS se 5000 venficate Ie relative condltloUi. :".(,', Scritto in R31).
,<.... .

,'"',,
.. "
",,:':' r ,:,\'-rj,.-I, ".
'
, ::N'';,.;'
:.',!{.,ilY.i ;." ",
j; 'JI..{.
.r.,,.,, ,
.".

,:, '. "ll:';': .
.;:. -! .... .-
""\" ..f,',., '
,-,-...-,,11,'
"',:W;.1 ,:"'';''... ;::,,'
' . "(.'1: ",ft',J"" "
,r-;.':"":'
, 'i";f.!;fjJ'ir '1.\,:,,:,:.,:,
.,".' ,"'.
, '$;\", ,. ,
..
., ';"':'" '.,
. ,. "'j ..}I." .
.' ':';' ",i,:.;, ..
.'ro.;;: . 'to , .
, ""-" '"" t . ' "
, --- ,",'.,
';11. :r {.,l. I.,
,;." .
.. ,

'"1 '.,. .
w, .... " "
. I.' """
,"'U ,.' ',', ..
,

.:.
r" .

l. .. ,
'PI' '/" i
,. , . ,
.'::i '
, 'I,
'iI,., I,.. '
".1 , ' .
.r,., ", ..
,
".' '. " ..
I '.' .,,'
".(ik\ Tabella 6.6 Codifica delle istruzioni. Il codice operativo del NOP e un campo di soli
zeri; per Ie operaziooi aritmetiche estata scelta una. stringa di 1. Per quanto riguarda Ie
Jt ;" ;.. istruzioni, i primo lore bit eli OP (OPO, OPl, OP2) iodividuano il tipo di istruzione
Figura 6.21 Logica di controllo dello stadio ME. I blocchi Xst e Xld selezionano e posi- (nferimenti aHa memoria 0 saltO, mentre i restanti codificano l'istruziooe all'interoo della
zionano il dato trasferito. I due buffer suI bus datil il cui ruolo eovvio
j
vengono r, ..' .dasse di appartenenza.
dai segnaii di comando della memoria. Il blocco F ha 10 scopo eli generare per il segnale di .:.:, ' ..
scrittura una forma d'onda che eviti scritture indesiderate mentre gli indirizzi si assestaoo.. ',;\a\.,>'
, ",f:'; >"\
.$ ,.. .
'.' l " '
' ....... , t.,''
.-'" P" ':
.>:"' l;" 'I,

... ",.,
" ".:1' ,.
234
I
I
\
I
J
I
I
I
I
I
I
I
I
I
(
,I
1
,

I
M'o'rlt.
Iftud
!

!
j
1
]
\
t
)
]
I
I
1
]
)
1
I
_..
-..
....,
-"'
"'"
""

-'"" JAL J( JS ..
Figura 6.23 Realizzazione dell'unita di controUo della CPU. Alcuni comandi com'e ALU-
Mux e PCMux, derivanti dalla combinazione dei segnali in uscita da UC, non sana presentati;
per essi si faccia riferimento aUe figure precedenti. Non viene presentato I'ovvio comando
,lv'!:IRead, asserito.
,
.,

. .
" !
LA'>hl:(
n ' r0
-\':'J() II-..Ii. fl.."\ <.'./1
, I .
'. , I'
";' .
. .
c", I' ,.. .
',- . _. ..

Capitola 6
236
6.6.1 Realizzazione dell'unita di controllo
Conflitti dati: nascono quando un'istruzione dipende dai risultati di
zione precedente.
6" 7 Conflitti
-
'...
7
-,,:
. ...
".

-
..-, :'i'-'-' "
.... _', . ,
Siamo Ora in condizione di tr.cciare 10 schema dell'unita eli controllo. Occone an,;:tl
tutto assegnare una codifica a ciascun di operazione. L'assegnamento
m 6.6 estato scelto nell'mtento dl semphficare la rete nsultante. L'unitl. ;'0';:':;'.. :-
controllo e una ;ete combmatona che decodlfica Ie smgole Istruzlom e assensce Co.'j'\ ';';!?:;:';'" .
mandl e seletton m base alia codlfica scelta m Tabella 6.6. Ne nsulta la Tabella .,I('.,:' .
tramite la quale si traccia la rete di Figura6.23. . "'.i ," '" -< " ""
-,":: '
I ::n ARJTM I LW [jw I JMP I JE I JAL I JR I LB I LH I SB I SH I Nap ;!f
. .:-.". iJ'l
1 MI ean 1 1 1 1 1 1 1 1 1 1 1 1 .i!71'..y'.:;
-- .." ...
IMMuxl 0 0 0 1 1 1 - 0 0 0 0 0 ' . "
o _ .... '. __ '.
lMMuxO 0 1 1 1 0 1 - 1 1 1 1 0 "!iI" :ft"-',...
OpALUl 1 0 0 0 1 0 0 0 0 0 0 0 {.,., ..
OpALUO 1 1 1 0 0 0 0 1 1 1 1 Y\"
" , "'" ','.,
MemToReg 0 1 0 0 0 0 0 1 1 0 0 O.,;tj\};:;; .
MWrite 0 0 1 0 0 0 0 0 0 1 1 0 ".":'I.e",.
MRead 0 1 0 0 0 0 0 1 1 0 0 O. ,'"
ENW 0 1 1 0 0 0 0 0 0 0 0 .', ' '.
ENH 0 0 0 0 0 0 0 0 1 0 1 0 '. " '..>,;
RWrite 1 1 , 0 , 0 ! 0 ! 1 I 0 I 1 I 1 I 0 I 0 I 0
d.
. . '':.,.'
.... ',0';,:',', ,"
,'" 'I :'/'..:"".
Tabella 6.
7
Valori da assegnare ai segn.1i di controllo in relazione .11. codific. della ;;',S'" ;" .
precedente tabella. Si noti che per 'I'ipotesi di doppia memoria MIRe.d esempre asserito 'eA' tiL....
. ",';+""
. ,-\"1 '-". ,. '
',"";1/:-;-,--
-'ii' ',," . ,
i;-r, 't,,' ',,"
, , ,.'j, ":,:"', '
, "'";.",' .. :-, ,-',
" """, -). .
J:
"hri: '. oC' ':
, "ll ' ...-
.:':'; .) ".
'-I ,
. ,. "
.':
"J _,
Poiche la combinazioDe delle i,truzioni che pO,sono trovarsi in e,ecuzione nella pipeIiDe:,)lli'\,,:C- .
al geDenco "tante dl tempo non puc prevederSl, SI POSSODO ve"ficare confi,tt, dl vano ,''''') '.', ..:'
genere. Esistono tre clas,i di confiitt!. .8; :"';;' .
c C6Dfiitti strutturali; insorgono per l'uso di una medesima risorsa da parte di piu':'''! ;,t.; .
,-,,':, .... ' . .,'
.
una istru- :':Y\ .':,,'
1'1 .'
'-:;j, ,;,:>: o'
J",
...
.. ':
,'i..

?t{ :",:,'
.: 'I'" :,
"'. ,"
" .
.

Conflitti di controllo: derivano dalla presenza di diramazioni e da altre istruzioni
j che modificano il contatore d.i programma.
In presenza di conflitto la soluzione piu semplice consiste nell'arrestare la pipeline
fino alia sua eliminazione, generando una situazione di stallo. L'aspetto negativo di
questa soluzione ela degTadazione delle prestazioni.
La restante parte di questa sezione tratta i confEtti strutturaH; agli altri tipi, di
cODflitto sono dedicate i paragrafi 6.8 e 6.9.
'"
1
,

I
M'o'rlt.
Iftud
!

!
j
1
]
\
t
)
]
I
I
1
]
)
1
I
_..
-..
....,
-"'
"'"
""

-'"" JAL J( JS ..
Figura 6.23 Realizzazione dell'unita di controUo della CPU. Alcuni comandi com'e ALU-
Mux e PCMux, derivanti dalla combinazione dei segnali in uscita da UC, non sana presentati;
per essi si faccia riferimento aUe figure precedenti. Non viene presentato I'ovvio comando
,lv'!:IRead, asserito.
,
.,

. .
" !
LA'>hl:(
n ' r0
-\':'J() II-..Ii. fl.."\ <.'./1
, I .
'. , I'
";' .
. .
c", I' ,.. .
',- .
_. ..

Capitola 6
236
6.6.1 Realizzazione dell'unita di controllo
Conflitti dati: nascono quando un'istruzione dipende dai risultati di
zione precedente.
6" 7 Conflitti
-
'...
7
-,,:
. ...
".

-
..-, :'i'-'-' "
.... _', . ,
Siamo Ora in condizione di tr.cciare 10 schema dell'unita eli controllo. Occone an,;:tl
tutto assegnare una codifica a ciascun di operazione. L'assegnamento
m 6.6 estato scelto nell'mtento dl semphficare la rete nsultante. L'unitl. ;'0';:':;'.. :-
controllo e una ;ete combmatona che decodlfica Ie smgole Istruzlom e assensce Co.'j'\ ';';!?:;:';'" .
mandl e seletton m base alia codlfica scelta m Tabella 6.6. Ne nsulta la Tabella .,I('.,:' .
tramite la quale si traccia la rete di Figura6.23. . "'.i ," '" -< " ""
-,":: '
I ::n ARJTM I LW [jw I JMP I JE I JAL I JR I LB I LH I SB I SH I Nap ;!f
. .:-.". iJ'l
1 MI ean 1 1 1 1 1 1 1 1 1 1 1 1 .i!71'..y'.:;
-- .." ...
IMMuxl 0 0 0 1 1 1 - 0 0 0 0 0 ' . "
o _ .... '. __ '.
lMMuxO 0 1 1 1 0 1 - 1 1 1 1 0 "!iI" :ft"-',...
OpALUl 1 0 0 0 1 0 0 0 0 0 0 0 {.,., ..
OpALUO 1 1 1 0 0 0 0 1 1 1 1 Y\"
" , "'" ','.,
MemToReg 0 1 0 0 0 0 0 1 1 0 0 O.,;tj\};:;; .
MWrite 0 0 1 0 0 0 0 0 0 1 1 0 ".":'I.e",.
MRead 0 1 0 0 0 0 0 1 1 0 0 O. ,'"
ENW 0 1 1 0 0 0 0 0 0 0 0 .', ' '.
ENH 0 0 0 0 0 0 0 0 1 0 1 0 '. " '..>,;
RWrite 1 1 , 0 , 0 ! 0 ! 1 I 0 I 1 I 1 I 0 I 0 I 0
d.
. . '':.,.'
.... ',0';,:',', ,"
,'" 'I :'/'..:"".
Tabella 6.
7
Valori da assegnare ai segn.1i di controllo in relazione .11. codific. della ;;',S'" ;" .
precedente tabella. Si noti che per 'I'ipotesi di doppia memoria MIRe.d esempre asserito 'eA' tiL....
. ",';+""
. ,-\"1 '-". ,. '
',"";1/:-;-,--
-'ii' ',," . ,
i;-r, 't,,' ',,"
, , ,.'j, ":,:"', '
, "'";.",' .. :-, ,-',
" """, -). .
J:
"hri: '. oC' ':
, "ll ' ...-
.:':'; .) ".
'-I ,
. ,. "
.':
"J _,
Poiche la combinazioDe delle i,truzioni che pO,sono trovarsi in e,ecuzione nella pipeIiDe:,)lli'\,,:C- .
al geDenco "tante dl tempo non puc prevederSl, SI POSSODO ve"ficare confi,tt, dl vano ,''''') '.', ..:'
genere. Esistono tre clas,i di confiitt!. .8; :"';;' .
c C6Dfiitti strutturali; insorgono per l'uso di una medesima risorsa da parte di piu':'''! ;,t.; .
,-,,':, .... ' .
.,'
.
una istru- :':Y\ .':,,'
1'1 .'
'-:;j, ,;,:>: o'
J",
...
.. ':
,'i..

?t{ :",:,'
.: 'I'" :,
"'. ,"
" .
.

Conflitti di controllo: derivano dalla presenza di diramazioni e da altre istruzioni
j che modificano il contatore d.i programma.
In presenza di conflitto la soluzione piu semplice consiste nell'arrestare la pipeline
fino alia sua eliminazione, generando una situazione di stallo. L'aspetto negativo di
questa soluzione ela degTadazione delle prestazioni.
La restante parte di questa sezione tratta i confEtti strutturaH; agli altri tipi, di
cODflitto sono dedicate i paragrafi 6.8 e 6.9.
'"
239
La pipeline
_ock
M\Jrl"te
..."cI- O/K: t/'WB
': I It: It: ). f:t.:,
. Reool L 0 1 ':-:-:1,,_<:; i UC , .:::::: Mlo'rlU .:.:.:.'
I} I tl: .:::.
, 1_10; RRI A A
MeMoria. .... Mi.' .:..:,
::.: Rr - I-- .....
- 1\ P
. v
Wi .,..h ... ;,
'p. '" b \7-
"". "" ....
B<Js Do tl .:.:.;.:
Bus lndtrizzl
WAR (Write After Read): j tenta di 5crivere in una destinazione letta da i prima
che sia effettivamente letta da i. Questo tipo di conftitto non epossibile nel nostro
modelIo di pipeline, poiche tutte Ie letture precedono (in ill) tutte Ie scritture
(in WB).
11 modo piu ovvio per risolvere le situazioni conflittuali consiste nell'introdurre deli
di stallo, impedendo l'avanzamento delle istruzioni ebe entrerebbera in confiitto can
queUe gia presenti nella pipeline. Peraltro, il ricorso alIo stallo eun provvedimento
drastico, che penalizza le prestazioni della macchina e va quindi, 5e possibile, evitato.
Ci sono Ie seguenti tecniche per evitare gli stalli per con1litti sui dati.
6.8.1 Tecniche per la soluzione dei confEtti dati
WAW (Wnte After Write): j tenta di scrivere'un operando prima che questa sia
stato scritto da i. In questa caso Ie scritture verrebbero eseguite nell 'ordine
'sbagliato; si tratta di un conflitto che puo verificarsi in pipeline che consentono
aile istruzioni di avanzare anche quando un'istruzione precedente estata 505pesa.
Neanche questo confiitto epossibile nel modello di pipeline di Figura6.8.
Figura 6.25 CPU con una sola memoria: generazione della bolla per evitare il confiitto
strutturale. Lo stadio ME accede aHa. memoria se easserito uno dei due comandi MRea.d 0
,MWrite. La logica rilevando la condizione di accesso alia memoria in ME non fa avanzare
PC, e carica il codice 0 nel campo OP di IF/ID. In tal modo tutto avvicne come se la
prossima istruzione fosse una NOP, ma cbe non fa avanzare il contatore di programma. La.
'linea de comanda. Ia. bolla serve ad abilitare le uscite dei buffer che rendono mutuamente
esclusive Ie uscite di PC e EX/ME.ALUOut sui bus indirizzi. Non estata. riportata la logica
relativa a ENW e ENH. Si noti cbe il funzionamento in pipeline comporta un accesso alIa
memoria ad ogni cielo; ovviamente il fetch e alternativo alIa lettura/scrittura di un dato.
. RAW (Read After Write): j Lenta di leggere un data scritto da i prima che i l'abbia
. effettivamente seritto. .
..-'
.. '

_,,1; ....
'I.
.. "
, .-\.
..;
'}<I'

,
.,
',' .
'\ ".' ,
'I
.' :;; ,
','
','1'
-.'"
_iL ',.
'.
..
,
,
,.
,
p., .
,
,,' I ;
'..
.' .. ,
,: ,.
i'i:,
.'
.
.."., .
"
' ...
.
}:,,,
')'f
.- '1< :
:
c' ','. "
" i
't .. ,
"" '... ,
'..q [
c';,
'.
.. 'i,
"/",li', .
'. -,

;*1.
,
. ,

7

3
CloU dJ e10ele
2
lettura!scrittura da un 'unica porta di memoria
1
IF
'"
EX ME
W.
IF
ID
EX
ME
W.
IF
lD
EX ME
W.
Stan,
IF
ID
EX
ME
we
IF
10
EX ME
we
let.ruziootl
lstruzione 1+1
blru;r.ion. I (WIST)
blru::r.ionc 1+2
lalruz;on.. 1+3
I.Lruzlonll 1+4
6.7.LCo.nJlitti strutturali
,'" " ..
".-, .
",7i"\
".
:l'oi'. _
,,',"., .
'"<. I'
''' .. ,1, .
238
C
apitolo 6 ,/i:;,',""\'"
"'. 'V. ,
;..,.li IP'I<;""
--:-: -
'I" ,." ".
!-":':', '," ,
'"I" '" _t... ,., .
','" -',
"'c .,- , .
,';,." c'",' ...

'.{l;i
"" '
Si ba un conflitto ,trutturale quando la combinazione delle istruzioni presenti in maC.. ;J,..:,,'
ebina e tale per cui stadi distinti della pipeline lineare riebiedono I'uso (esc1usivOj'.:T:<.:f:: .
delle medeslIDe f1Sorse. ,:",:,
..'
j' -
\" ' .
, :. ;:); "".
.: t.i
..:r}
,,
c' '"
Figura 6.24 Conftitto strutturale.
In riferimento al nostro modello di pipeline a cinque stadi, si Supponga che la
macchina sia dotata di una sola porta per la lettura/scrittura in memoria. Se I'is-
truzione i fa riferimento alIa memoria, nella sua fase ME entra in confiitto per ]J
uso
dei bus esterni con l'istruzione i + 3 che dovrebbe effettuare il fetch. Ovviamente e
obbligatorio far procedere l'istruzione in ME e bloccare quella in IF. In Figura 6.24
viene esplicitamente indicato che l'istruzione i + 3 subisce una fase di statIo, nel sensa
che la fase IF eli questa istruzione viene posposta al clock successivo. In tal modo si
eintrodotta una ubolla" nella pipeline
12
. La logica per 1a generazione della staHa e
riportata in Figura 6.25.
nmodo per evitare i conBitti strutturali consiste nel duplicare Ie risorse. Nel caso
vista si tratta di avere 1a memoria istruzioni separata da quella dati. 8i noti me la
separazione della cache in cache istruzioni e dati risolve (anche se non compJetamente)
questo problema.
I confiitti dati 5i verificano ogni qual volta esiste una dipendenza tra ]e i5truzioni e
queste sana abbastanza vicine cia far S1 cbe la sovrapposizione indotta dalla pipeline
modifichi l'ordine di accesso agli operandi, rispetto a queUo naturale dellJesecuzione
sequenziale delle istruzioni.
In riferimento a due istruzioni i e j, Con i che precede j, i conflitti dati 5i possono
classificare secondo tre categorie [HP93), [Ram77).
12Si osservi che se ancbe l'istruzione i + 1 facesse riferimento a.lIa. memoria, suI clock 5 sarebbe
necessario mettere i +3 ancora in stallo. In tal caso la bolla occuperebbe due posizioni. E COS! via,.
6.8 ConfUtti dati
. i
\
J
I
\
\
I
I
\
I
L --l)

I
I
I
I
239
La pipeline
_ock
M\Jrl"te
..."cI- O/K: t/'WB
': I It: It: ). f:t.:,
. Reool L 0 1 ':-:-:1,,_<:; i UC , .:::::: Mlo'rlU .:.:.:.'
I} I tl: .:::.
, 1_10; RRI A A
MeMoria. .... Mi.' .:..:,
::.: Rr - I-- .....
- 1\ P
. v
Wi .,..h ... ;,
'p. '" b \7-
"". "" ....
B<Js Do tl .:.:.;.:
Bus lndtrizzl
WAR (Write After Read): j tenta di 5crivere in una destinazione letta da i prima
che sia effettivamente letta da i. Questo tipo di conftitto non epossibile nel nostro
modelIo di pipeline, poiche tutte Ie letture precedono (in ill) tutte Ie scritture
(in WB).
11 modo piu ovvio per risolvere le situazioni conflittuali consiste nell'introdurre deli
di stallo, impedendo l'avanzamento delle istruzioni ebe entrerebbera in confiitto can
queUe gia presenti nella pipeline. Peraltro, il ricorso alIo stallo eun provvedimento
drastico, che penalizza le prestazioni della macchina e va quindi, 5e possibile, evitato.
Ci sono Ie seguenti tecniche per evitare gli stalli per con1litti sui dati.
6.8.1 Tecniche per la soluzione dei confEtti dati
WAW (Wnte After Write): j tenta di scrivere'un operando prima che questa sia
stato scritto da i. In questa caso Ie scritture verrebbero eseguite nell 'ordine
'sbagliato; si tratta di un conflitto che puo verificarsi in pipeline che consentono
aile istruzioni di avanzare anche quando un'istruzione precedente estata 505pesa.
Neanche questo confiitto epossibile nel modello di pipeline di Figura6.8.
Figura 6.25 CPU con una sola memoria: generazione della bolla per evitare il confiitto
strutturale. Lo stadio ME accede aHa. memoria se easserito uno dei due comandi MRea.d 0
,MWrite. La logica rilevando la condizione di accesso alia memoria in ME non fa avanzare
PC, e carica il codice 0 nel campo OP di IF/ID. In tal modo tutto avvicne come se la
prossima istruzione fosse una NOP, ma cbe non fa avanzare il contatore di programma. La.
'linea de comanda. Ia. bolla serve ad abilitare le uscite dei buffer che rendono mutuamente
esclusive Ie uscite di PC e EX/ME.ALUOut sui bus indirizzi. Non estata. riportata la logica
relativa a ENW e ENH. Si noti cbe il funzionamento in pipeline comporta un accesso alIa
memoria ad ogni cielo; ovviamente il fetch e alternativo alIa lettura/scrittura di un dato.
. RAW (Read After Write): j Lenta di leggere un data scritto da i prima che i l'abbia
. effettivamente seritto. .
..-'
.. '

_,,1; ....
'I.
.. "
, .-\.
..;
'}<I'

,
.,
',' .
'\ ".' ,
'I
.' :;; ,
','
','1'
-.'"
_iL ',.
'.
..
,
,
,.
,
p., .
,
,,' I ;
'..
.' .. ,
,: ,.
i'i:,
.'
.
.."., .
"
' ...
.
}:,,,
')'f
.- '1< :
:
c' ','. "
" i
't .. ,
"" '... ,
'..q [
c';,
'.
.. 'i,
"/",li', .
'. -,

;*1.
,
. ,

7

3
CloU dJ e10ele
2
lettura!scrittura da un 'unica porta di memoria
1
IF
'"
EX ME
W.
IF
ID
EX
ME
W.
IF
lD
EX ME
W.
Stan,
IF
ID
EX
ME
we
IF
10
EX ME
we
let.ruziootl
lstruzione 1+1
blru;r.ion. I (WIST)
blru::r.ionc 1+2
lalruz;on.. 1+3
I.Lruzlonll 1+4
6.7.LCo.nJlitti strutturali
,'" " ..
".-, .
",7i"\
".
:l'oi'. _
,,',"., .
'"<. I'
''' .. ,1, .
238
C
apitolo 6 ,/i:;,',""\'"
"'. 'V. ,
;..,.li IP'I<;""
--:-: -
'I" ,." ".
!-":':', '," ,
'"I" '" _t... ,., .
','" -',
"'c .,- , .
,';,." c'",' ...

'.{l;i
"" '
Si ba un conflitto ,trutturale quando la combinazione delle istruzioni presenti in maC.. ;J,..:,,'
ebina e tale per cui stadi distinti della pipeline lineare riebiedono I'uso (esc1usivOj'.:T:<.:f:: .
delle medeslIDe f1Sorse. ,:",:,
..'
j' -
\" ' .
, :. ;:); "".
.: t.i
..:r}
,,
c' '"
Figura 6.24 Conftitto strutturale.
In riferimento al nostro modello di pipeline a cinque stadi, si Supponga che la
macchina sia dotata di una sola porta per la lettura/scrittura in memoria. Se I'is-
truzione i fa riferimento alIa memoria, nella sua fase ME entra in confiitto per ]J
uso
dei bus esterni con l'istruzione i + 3 che dovrebbe effettuare il fetch. Ovviamente e
obbligatorio far procedere l'istruzione in ME e bloccare quella in IF. In Figura 6.24
viene esplicitamente indicato che l'istruzione i + 3 subisce una fase di statIo, nel sensa
che la fase IF eli questa istruzione viene posposta al clock successivo. In tal modo si
eintrodotta una ubolla" nella pipeline
12
. La logica per 1a generazione della staHa e
riportata in Figura 6.25.
nmodo per evitare i conBitti strutturali consiste nel duplicare Ie risorse. Nel caso
vista si tratta di avere 1a memoria istruzioni separata da quella dati. 8i noti me la
separazione della cache in cache istruzioni e dati risolve (anche se non compJetamente)
questo problema.
I confiitti dati 5i verificano ogni qual volta esiste una dipendenza tra ]e i5truzioni e
queste sana abbastanza vicine cia far S1 cbe la sovrapposizione indotta dalla pipeline
modifichi l'ordine di accesso agli operandi, rispetto a queUo naturale dellJesecuzione
sequenziale delle istruzioni.
In riferimento a due istruzioni i e j, Con i che precede j, i conflitti dati 5i possono
classificare secondo tre categorie [HP93), [Ram77).
12Si osservi che se ancbe l'istruzione i + 1 facesse riferimento a.lIa. memoria, suI clock 5 sarebbe
necessario mettere i +3 ancora in stallo. In tal caso la bolla occuperebbe due posizioni. E COS! via,.
6.8 ConfUtti dati
. i
\
J
I
\
\
I
I
\
I
L --l)

I
I
I
I
)
)
1
I
I
]
j
I
241
(6.17)
(6.18)
(6.13)
(6.14)
(6.15)
(6.16)
La pipeline
(IF/ID. R.sI = EX/ME. RW) /\ 51 AEX/ME. RWrite
(IF/ID. R.s2 = EX/ME. RW) A52 AEX/ME. RWrite
Rl,R6,R9
200(R3),Rl
ADD
ST
Rl,100(R3)
R4,Rl,R7
to
MUt
R1.R6,R9
R4,Rl,R7
ADD
SUB
6.8.2 Riconoscimento del conflitto dati
Per fissare le idee si considerino queste tre sequenze di istruzioni:
-,"(I'
.,>
,
':'J!'oi
. '
.: '. "'I
240 Capitola 6 _....
- -----'-'----'-"--'-- .. Y.';."',;

,.
,'til. -.-".
. .;' ,
" ;, n: l, ':", ',.'
(ForwG1'ding): il presentato all
'
ingresso delPunita .:,0,;::":.: I segnali neUe 6.11 e 6.1,2 intesi come queUi in uscita cia
che 10 usa .attraverso del ClrCUItl cil bypass. La tecnica viene anche de .:; _Vel ovvero relatlV! alia ID. Rispetto hsta al termme del
dt bypass 0 cortoclrcuitazione. 1.:;0:.: ''- _.6.5, Decorre 1a lmea ARITM, all'mtera delle lstruzlom
. . . :";.,,, ".":,,. ... , . 'tmetiche e IOglche, della quale non c e blsogno a valle dello stadlO !D.
(Clock halfing): Ie operazi?ni di accesso ai cia parte di due an Si ha un tra Pistruzione in ill e quella in EX se e vera una delle due
lstruZIOnl avvengono sullo stesso clock, rna III modo non confhttuale. ,.,',': relaziom:
(Scheduling): viene modificato i'ordine di esecuzione in mod (IF/ID. R.sI = ID/EX. RW) A51 AID/EX. RWrite
rendere Don conflittuale ]'accesso ai dati. 0 a :.:.'<,-,
: \,'H;'.: . (IF/ID. R.s2 = JD/EX. RW) A52 AID/EX. RWrite
"0 'I' ".:: " .
t .COffi
d
un
j
pque si v
f
o
g
6
lia
8
2risalvere un conflitto questa va prima individuate COn la;' ,:,: Le relazioni 6.15 e 6.16 verificano l'avverarsi del conflitto tra J'istruzione in ID e
eClllca e aragra 0 . . '1' ME'
.... quel
am
.
. ' .,,.,.,
:\."::',.. "',.'
.... ,.,. '.
- .'
',' .,',tt ". ", ,
.. :,', . ,
';' .' c"",,_-,
'.f , , .,
" ,- '. '
' .,
, , , .-
-' i,:::, ; "
,'
1
)
,
I
.-
13Non si dimenticbi "che i campi indicati come Rs1 e Rs2 hanno significato come tali solo can Ie ':i
istruzioni che prevedooo registri sorgente. L'istruzione di saito incondizionato, per esempio, non
Ii pre:rede: 51 e 52 sarebbero disasseriti e il conrronto di cui 51 parla darebbe comunque risultato \;1:'
negatIVQ. .
. .I-
<' .

)
J
)
I
...
-
....
,v
MEIIJI

'" ..-
-
'v
EX/ME
'...,
'v
IDlEX'
"
uc
"
RSl
l

OP.H+----j

IrlID
,.,
6.26 Logica per il rilievo dei confiitti dati. Sui latch sono disegnati solo i campi di
mteresse al fine del rilevamento dei confiitti dati.
.' .

"
,
..
..
'"

" ,

:} ..,..;
,.
'I;;;;
'.,__ , 4'
"'J .
.- ', ..
-, ..
",
.-
(69)
(6.10)
(6.11)
(6.12)
51 = ARITM V MRead V MWrite V JE V JS V JR
52 = ARITM V MWrite V JE V J5
51 = ARITM V LW V LH V LB V 5W V 5H V 5B V JE V J5 V JR
52 = ARITM V 5W V 5H V 5B V JE V J5
riscrivibili come
)
)
1
I
I
]
j
I
241
(6.17)
(6.18)
(6.13)
(6.14)
(6.15)
(6.16)
La pipeline
(IF/ID. R.sI = EX/ME. RW) /\ 51 AEX/ME. RWrite
(IF/ID. R.s2 = EX/ME. RW) A52 AEX/ME. RWrite
Rl,R6,R9
200(R3),Rl
ADD
ST
Rl,100(R3)
R4,Rl,R7
to
MUt
R1.R6,R9
R4,Rl,R7
ADD
SUB
6.8.2 Riconoscimento del conflitto dati
Per fissare le idee si considerino queste tre sequenze di istruzioni:
-,"(I'
.,>
,
':'J!'oi
. '
.: '. "'I
240 Capitola 6 _....
- -----'-'----'-"--'-- .. Y.';."',;

,.
,'til. -.-".
. .;' ,
" ;, n: l, ':", ',.'
(ForwG1'ding): il presentato all
'
ingresso delPunita .:,0,;::":.: I segnali neUe 6.11 e 6.1,2 intesi come queUi in uscita cia
che 10 usa .attraverso del ClrCUItl cil bypass. La tecnica viene anche de .:; _Vel ovvero relatlV! alia ID. Rispetto hsta al termme del
dt bypass 0 cortoclrcuitazione. 1.:;0:.: ''- _.6.5, Decorre 1a lmea ARITM, all'mtera delle lstruzlom
. . . :";.,,, ".":,,. ... , . 'tmetiche e IOglche, della quale non c e blsogno a valle dello stadlO !D.
(Clock halfing): Ie operazi?ni di accesso ai cia parte di due an Si ha un tra Pistruzione in ill e quella in EX se e vera una delle due
lstruZIOnl avvengono sullo stesso clock, rna III modo non confhttuale. ,.,',': relaziom:
(Scheduling): viene modificato i'ordine di esecuzione in mod (IF/ID. R.sI = ID/EX. RW) A51 AID/EX. RWrite
rendere Don conflittuale ]'accesso ai dati. 0 a :.:.'<,-,
: \,'H;'.: . (IF/ID. R.s2 = JD/EX. RW) A52 AID/EX. RWrite
"0 'I' ".:: " .
t .COffi
d
un
j
pque si v
f
o
g
6
lia
8
2risalvere un conflitto questa va prima individuate COn la;' ,:,: Le relazioni 6.15 e 6.16 verificano l'avverarsi del conflitto tra J'istruzione in ID e
eClllca e aragra 0 . . '1' ME'
.... quel
am
.
. ' .,,.,.,
:\."::',.. "',.'
.... ,.,. '.
- .'
',' .,',tt ". ", ,
.. :,', . ,
';' .' c"",,_-,
'.f , , .,
" ,- '. '
' .,
, , , .-
-' i,:::, ; "
,'
1
)
,
I
.-
13Non si dimenticbi "che i campi indicati come Rs1 e Rs2 hanno significato come tali solo can Ie ':i
istruzioni che prevedooo registri sorgente. L'istruzione di saito incondizionato, per esempio, non
Ii pre:rede: 51 e 52 sarebbero disasseriti e il conrronto di cui 51 parla darebbe comunque risultato \;1:'
negatIVQ. .
. .I-
<' .

)
J
)
I
...
-
....
,v
MEIIJI

'" ..-
-
'v
EX/ME
'...,
'v
IDlEX'
"
uc
"
RSl
l

OP.H+----j

IrlID
,.,
6.26 Logica per il rilievo dei confiitti dati. Sui latch sono disegnati solo i campi di
mteresse al fine del rilevamento dei confiitti dati.
.' .

"
,
..
..
'"

" ,

:} ..,..;
,.
'I;;;;
'.,__ , 4'
"'J .
.- ', ..
-, ..
",
.-
(69)
(6.10)
(6.11)
(6.12)
51 = ARITM V MRead V MWrite V JE V JS V JR
52 = ARITM V MWrite V JE V J5
51 = ARITM V LW V LH V LB V 5W V 5H V 5B V JE V J5 V JR
52 = ARITM V 5W V 5H V 5B V JE V J5
riscrivibili come
243
)
WB
ADD
<
I
La pipeline
ME/WB
ME/WB
ME/WE
ME
ADD
bolla

EX/ME
EX/ME
Ell/ME
EX

EX idE LW]oil ..I we


0

bolla
bolla
ID/E>:
ID/E::<
ID/EX
1D
SUB
SUB

IF/IO
tF/IO
Jr/ID

IF
r-
SUB ADD



IF iD oi EX ME .. we

0 L_-,
;:
"-
Figura 6.28 Introduzione di deli di stalIo, La figura in alto schematizza l'introduzione della
bolla: 10 stadia ID scrive su ID/EX informazioni (indicate col tratteggio) che non producono
alcuna operaziooe da parte degli stadi successivi. La figura al centro mostra la pipeline aI
clock successivo: I'istruzione ADD e nella stadia ME, mentre nella stadio EX c'e una bolla;
10 stadia ID scrive ancora una bolla su ID/EX. La figura in basso mostra la pipeline a.l
successivo clock: ora. l'istruzione ADD e nella stadia WE, in ME c1e 1a bolla che prima era in
EX, in EX c'e la seconda bolla introdotta da ill; quest 'ultimo stadia generando 1a terza.
.
,

IF
ID
,
,
',,-.' .

Rl,R6,R9
200(R3),Rl
ADD
ST
." -'
Rl,lOO(R3)
R4,Rl,R7
LD
MUL
IF
ID EX ME
WB
IF .talI ......
.talI. 10
EX ME 1fII
Rl,R6,R9
R4,Rl,R7
ADD
SUB
-I'
'I :.,
.. "
.

"
L Quando SUB ein ill 1a linea Coati risulta asserita, in quanta everilicata la can- ,:<;:'
dizione 6.13. Conseguentemente SUB non viene fatta procedere
l
introducenda un
,
primo stallo. Lo stato della pipeline, durante il periodo di clock in cui }'istruzione . .
.,'
ADD enella stadio di esecuzione e l'istruzione SUB enella stadia di decodifica, e "'::\,:
schematizzato in nella parte alta di Figura 6.28. L'introduzione della stallo rio "il"
chiede la formazione della bolla, ovvero 1a scrittura in ill/EX di un1informazione' '.';-t';'
che non determina alcuna operazione negli stadi a valle. In Figura6.28 cic estata '
schematizzato tratteggiando il lato in ingresso del latch ID/EX. Per attuare 10 <:{:,
stall0 occorre rnantenere in.IF/ID I'istruzione S,tn,i, Ne che Pistruzione
che segue SUB (della Quale m questa momento e In COrsO 11 fetch) non cleve es- .,"
sere copiata in IF/ID. Cib si ottiene annullando il fronte finale del clock allatch ":'{
medesimo. nclock cleve essere bloccato anche per il Program Counter, in modo
da evitare il suo incremento. Cib determina 1a ripetiziane del fetch dell'istru-
zione che segue SUB. nsemplice AND del clock can il negato della linea Conft e ::':'1"
sufficiente ailo scopo. ...
, " ' ,
., ...
,."
.- .'
Si considerino aneora Ie tre sequenze:

(

," I
,- ........ " ;1/ ,_,'-J"
-. I., """,,'
j- --.j ..... )..< , ." .. " I
' i - )", J, -- J/:::=:;;\
. / I _ I 'I
242 Capltolo 6 -' . _ ;' I l
" I :".' ''',.' . 1 I . J
) / SR<J., .. _ " ,
/ l '\..... ,,",',.,-,' ,f:,: " I ,/
, I ''''" .,"'" ..' L' " I
--- - ../ .-;lrw,:, '';i':CJ::;., .
6,8,3 Soluzione dei confEtti tramite stalJo \ ,'Aj .., __ J
" :;': '
."']r ;;,; ,,'...j.,.
... ,
:. ".
.. .i: ' .. .
:.:.
. ..:'."'i"" " '
,<;.!, .
. ',c. .
0.1 '''.'
',' ,,, - ".
,,,- "
"('.,1,' ".-,
, .. ; ,'. ' '.' " ,
Per curare il conflitto con 10 statio occorre posticipare la rase ID della seconda ':'/. ".
istruzione (SUB I MUL, ST) a seguire la fase WB dell'istruzione che la precede. Si ':':.
tratta di inserire tre cicli d.i ritardo, come illustrato nello schema di principio ".,; .
F 2 ",,,.,
19ura6.7. ,'."i':':;"'.- .-,
, . '.-

"1/< .-." ....,


'I :!!.';, ., ._'

Figura 6.27 lDtroduzione di tre deli di stallo nella seconda istruzione, in attesa che iI dato .-'"
scritto in fase WE possa essere Jetto (in ID). . .... ::,.-,J.;.
, "" . , ... "
" .. , "
"":'l ,,'.1',,'"
.,;:;;;. ,
condizione di conflitto viene riconosciuta dalla rete di Figura6.26. Per attuare ,....:"
10 stallo e necessario tenere bloccata in ill la seconda istruzione: si cleve dunque ',.. :':g,: ,(,
aggiornare il registro ill/EX, non con Ie informazioni che servono a comandare gli stadi;:J;
a valle all'esecuzione di questa istruzione, rna con una IIbolla" , ovvero con informazioni r ':.:,,>.;,: .
... ,
the non producono alcun effetta sugH stach a valle. Ci si pub riferire alla schema di
Figura 6.25: la linea Confi pub essere impiegata per silenziare il clock a PC e per
seIezionare 0 (zero) come ingresso ai campi di comando su illlEX. '11 '-;, '
In riferimento alia prima delle tre sequenze considerate, accade quanta riportato ',.:
qui d.i seguita: >- ,:
'."
l
r
\
I
I
I
I
I
I
I
I
,I
\I

,I
,

243
)
WB
ADD
<
I
La pipeline
ME/WB
ME/WB
ME/WE
ME
ADD
bolla

EX/ME
EX/ME
Ell/ME
EX

EX idE LW]oil ..I we


0

bolla
bolla
ID/E>:
ID/E::<
ID/EX
1D
SUB
SUB

IF/IO
tF/IO
Jr/ID

IF
r-
SUB ADD



IF iD oi EX ME .. we

0 L_-,
;:
"-
Figura 6.28 Introduzione di deli di stalIo, La figura in alto schematizza l'introduzione della
bolla: 10 stadia ID scrive su ID/EX informazioni (indicate col tratteggio) che non producono
alcuna operaziooe da parte degli stadi successivi. La figura al centro mostra la pipeline aI
clock successivo: I'istruzione ADD e nella stadia ME, mentre nella stadio EX c'e una bolla;
10 stadia ID scrive ancora una bolla su ID/EX. La figura in basso mostra la pipeline a.l
successivo clock: ora. l'istruzione ADD e nella stadia WE, in ME c1e 1a bolla che prima era in
EX, in EX c'e la seconda bolla introdotta da ill; quest 'ultimo stadia generando 1a terza.
.
,

IF
ID
,
,
',,-.' .

Rl,R6,R9
200(R3),Rl
ADD
ST
." -'
Rl,lOO(R3)
R4,Rl,R7
LD
MUL
IF
ID EX ME
WB
IF .talI ......
.talI. 10
EX ME 1fII
Rl,R6,R9
R4,Rl,R7
ADD
SUB
-I'
'I :.,
.. "
.

"
L Quando SUB ein ill 1a linea Coati risulta asserita, in quanta everilicata la can- ,:<;:'
dizione 6.13. Conseguentemente SUB non viene fatta procedere
l
introducenda un
,
primo stallo. Lo stato della pipeline, durante il periodo di clock in cui }'istruzione . .
.,'
ADD enella stadio di esecuzione e l'istruzione SUB enella stadia di decodifica, e "'::\,:
schematizzato in nella parte alta di Figura 6.28. L'introduzione della stallo rio "il"
chiede la formazione della bolla, ovvero 1a scrittura in ill/EX di un1informazione' '.';-t';'
che non determina alcuna operazione negli stadi a valle. In Figura6.28 cic estata '
schematizzato tratteggiando il lato in ingresso del latch ID/EX. Per attuare 10 <:{:,
stall0 occorre rnantenere in.IF/ID I'istruzione S,tn,i, Ne che Pistruzione
che segue SUB (della Quale m questa momento e In COrsO 11 fetch) non cleve es- .,"
sere copiata in IF/ID. Cib si ottiene annullando il fronte finale del clock allatch ":'{
medesimo. nclock cleve essere bloccato anche per il Program Counter, in modo
da evitare il suo incremento. Cib determina 1a ripetiziane del fetch dell'istru-
zione che segue SUB. nsemplice AND del clock can il negato della linea Conft e ::':'1"
sufficiente ailo scopo. ...
, " ' ,
., ...
,."
.- .'
Si considerino aneora Ie tre sequenze:

(

," I
,- ........ " ;1/ ,_,'-J"
-. I., """,,'
j- --.j ..... )..< , ." .. " I
' i - )", J, -- J/:::=:;;\
. / I _ I 'I
242 Capltolo 6 -' . _ ;' I l
" I :".' ''',.' . 1 I . J
) / SR<J., .. _ " ,
/ l '\..... ,,",',.,-,' ,f:,: " I ,/
, I ''''" .,"'" ..' L' " I
--- - ../ .-;lrw,:, '';i':CJ::;., .
6,8,3 Soluzione dei confEtti tramite stalJo \ ,'Aj .., __ J
" :;': '
."']r ;;,; ,,'...j.,.
... ,
:. ".
.. .i: ' .. .
:.:.
. ..:'."'i"" " '
,<;.!, .
. ',c. .
0.1 '''.'
',' ,,, - ".
,,,- "
"('.,1,' ".-,
, .. ; ,'. ' '.' " ,
Per curare il conflitto con 10 statio occorre posticipare la rase ID della seconda ':'/. ".
istruzione (SUB I MUL, ST) a seguire la fase WB dell'istruzione che la precede. Si ':':.
tratta di inserire tre cicli d.i ritardo, come illustrato nello schema di principio ".,; .
F 2 ",,,.,
19ura6.7. ,'."i':':;"'.- .-,
, . '.-

"1/< .-." ....,


'I :!!.';, ., ._'

Figura 6.27 lDtroduzione di tre deli di stallo nella seconda istruzione, in attesa che iI dato .-'"
scritto in fase WE possa essere Jetto (in ID). . .... ::,.-,J.;.
, "" . , ... "
" .. , "
"":'l ,,'.1',,'"
.,;:;;;. ,
condizione di conflitto viene riconosciuta dalla rete di Figura6.26. Per attuare ,....:"
10 stallo e necessario tenere bloccata in ill la seconda istruzione: si cleve dunque ',.. :':g,: ,(,
aggiornare il registro ill/EX, non con Ie informazioni che servono a comandare gli stadi;:J;
a valle all'esecuzione di questa istruzione, rna con una IIbolla" , ovvero con informazioni r ':.:,,>.;,: .
... ,
the non producono alcun effetta sugH stach a valle. Ci si pub riferire alla schema di
Figura 6.25: la linea Confi pub essere impiegata per silenziare il clock a PC e per
seIezionare 0 (zero) come ingresso ai campi di comando su illlEX. '11 '-;, '
In riferimento alia prima delle tre sequenze considerate, accade quanta riportato ',.:
qui d.i seguita: >- ,:
'."
l
r
\
I
I
I
I
I
I
I
I
,I
\I

,I
,

I
i
1

1
I
\
I
,
l
]
\
1
1
I
J
\
I
0 0 0
1 0
{
2 1
- -
-
I SALx I SALxl I SALxO I
Tabella 6.8 Codifica del selettori SALA e SALa. La colonna SALx it valore numerico;
Ie. colonne SALxl e SALxO danno 1a codifica binaria.
ID/EX

HE HE!IJB
RVrlt"
Rv..lt"
RIJ..lte
RVr
lU ,
,
'... .-,
'..:.,:
:.:,,:,;
::::\,
c,,-.
, ....
r,-
1-"
,"'
A......... l-
I-'
,

rS"l"
ALU
ME
1:;;\
\,IB
I-'
""

B
V
I--
""
""
'-'
, '
C-
'u
fo'v
'v
.v
"
t
,
Unlill dl
p"Op<lgQ:t;0<"l1'
" ' .
::
. "
'.' ,
-".. ...., ...
0-,""
"\\, 'i<
',.,,:, <",':.-
Rl,R6,R9
R4,Rl,R7
(lD/EX. RR2 = EX/ME. RW) 1\ EX/ME. Rwrite
(lDjEX. RRl = EXjME.RW) 1\ EX/ME. Rwrite
ADD
SUB
l40vviamente il selettore sulla porta di ingresso B deve essere armonizzato con il precedeote
selettore sulla medesima. porta,
16Si noti che nella 6.19 e nella 6.21 non compare SL Cib perche queste relazioni si riferiscono alIa
selezjone di un dato in ingresso alia ALU. Tale dato viene 0 non viene usato a. seconda del comando
per la ALU presente in ill/EX.EX. In altre parole, Ie due condizioni sono indifferenti rispetto a 51
e S2.
11 risultato dell'operazione ADD edisponibile in Rl dopo Ia fase WB, rna prima di
essere scritto in Rl si trova nei registri della pipeline. Difatti, quando l'istruzione ADD
6.8.4 Soluzione dei conflitti sui dati traI)J.ite anticipazione
.. '..
.- ..
-, ..
',<,'t;:-,
,', ,
; .'
, ..

La pipeline 245
244 Capitola 6 .', jl .
J' "
'-, I> -
- :,', !.<. .
.r.-, .
'.,\",:,\\'
";",, "I".
' ..,'f1'.' ""'4':<'\",\,
2. Al clock successivo SUB eaneora in ill, mentre l'istruzione precedente ein ME L
linea Confi risulta asserita per via del verificarsi della condizione 6.15: per ,:']&:
appena detto, l'istruzione SUB subisce aneora uno stallo, mentre l'istruzio
ne
in
ME d
', ',,,,*' ""'1
proce e.
,1"-' ',";',
.: ..
" :;".,,- -
3. Al clock successivo SUB esempre in rD, mentre 1a precedente (ADD 0 LO) e in WB, '..
Ancora una volta 1a linea Conti. risulta asserita, in quanto evera la condizione ",
6.17: Pistruzione in ill subisce ancora uno stallo) rnentre quella in WB (ADD 0' .'
LD) scrive il registro di destinazione (Rl). .
"<",.,, .' ..." ,
, , :' :.
. ,
4. Al cl?ck seguente letti da ancora in ill, non ',:'
(anche perche ormaz la plpehne a valle e vuotal) e la catena 51 nmette :';, ,
In movllDento I' "'rl',y,",',.,"',
. .' .,..
-('> ,,"', :':",,;';.
". ;f$?-:}E
".""it .. '", .
, .. :p\i,;,,',,'/,.'. '
:' ;'t.'/," :., ,
"",," "",>".,.
-
- ---------- ---
,., "";.,1 .. '
',',:, ..l .... ".,.
.. ,f , . ,
Consideriamo anzitutto il caso delle istruzioni aritmetiche riferendoci alIa sequenza: " )'1:.;::, ' S h d I b I fi stat,' r',portat,' solo " campi dei latch di
. .. > Figura 6,29 C ema n ,gura sono . . .
::i '. "interesse ai fini dell'anticlpazlOne. della ALU al ternune della Case EX
in EX/ME.ALUOut, per essere trasfenta a1 clock SUCCesSlVO lD ..
;.,':.' de su ID/EX sono stati aggiunti due campi (RR1 e RR2) per contenere del reglstn
:::- sorgente, in quanta questa essere con queUa del campo R;W de.! a
'.. ,': ,Ovviamente RRI e RR2 cornspondoDo a Rsl e Rs2 su IFJID, mentre RW Idenbfica 11 regtstro
.'.'" -",. .. ,,,,,.,",, -
"::di destinaa:ione.

... . ,
"." ".' .':.
termina l,a fase EX, il risultato viene copiato in per .. . . jl' . ALUOut di ME/WB
essere pm propagato al clock successlVo LD ME/WB. Dunque l'attesa della scnttura . e dovranno selezlonare . provemente dal campo
di Rl in RF puo essere evitata - e con essa i relativi stalli visti prima - intercettanda sana venficate Ie relaZlOnI.
il risuJtato e presentandolo alla ALU in luogo del contenuto di Rl. 8, tratta, in altre ,"':\ "e;:;:' (ID;EX, RRI f. EX/ME. RW) 1\ (ill/EX. RRI = ME/WB. RW 1\ ME/WB. Rwrite
parole, d, bypassace ,I contenuto del. camp, ill /EX.A e ill jEX.B (Ill questo caso -:'.f";:i,;"" (6.21)
illjEX.A),. anticipando l'operando alia ALD, come in Figura6,29, . ((ill/EX. RR2 f. EX/ME. RW) 1\ (lD/EX. RR2 = ME/WB. RW)) 1\ ME/WB. Rwrite
Sugli mgress! alla ALU vengono preVlstl due seletton
14
che, 10 presenza : . (6.22)
conflitto, selezionano la sorgente cia! campo ALU.Out di uno dei latch a valle. E ':.<:t. .. altri casi gli ingressi alIa ALU restano i campi A e B di ill/EX. In Tabella 6.8
abbastanza facile scrivere Ie relazioni che danno i comandi per selettori. Essi dovran .. '5:P./ ... '.viene riportata la codifica per i due selettori SALA e SALB
I
tramite Ie quali si traccia
no se1ezionare gli ingressi provenienti dal campo ALUOut di EX/ME quando sona: facilmente la rete di Figura 6.30.
vere Ie relazioni seguenti
l
scritte rispettivamente per Pingresso A e l'ingresso B 15:. .' ..
," :', ...
. , ... ,'.' .. ' \ ' '
(6J9)':E 'C".' '

(6
20) ,,'" ' ,-
;".J'
;,t /{,..,::
.t;:i. ,.
..,. ,...,.
". ,'.' ,j,
,,' ,:;. ". "
, ';', <,
"
I
i
1

1
I
\
I
,
l
]
\
1
1
I
J
\
I
0 0 0
1 0
{
2 1
- -
-
I SALx I SALxl I SALxO I
Tabella 6.8 Codifica del selettori SALA e SALa. La colonna SALx it valore numerico;
Ie. colonne SALxl e SALxO danno 1a codifica binaria.
ID/EX

HE HE!IJB
RVrlt"
Rv..lt"
RIJ..lte
RVr
lU ,
,
'... .-,
'..:.,:
:.:,,:,;
::::\,
c,,-.
, ....
r,-
1-"
,"'
A......... l-
I-'
,

rS"l"
ALU
ME
1:;;\
\,IB
I-'
""

B
V
I--
""
""
'-'
, '
C-
'u
fo'v
'v
.v
"
t
,
Unlill dl
p"Op<lgQ:t;0<"l1'
" ' .
::
. "
'.' ,
-".. ...., ...
0-,""
"\\, 'i<
',.,,:, <",':.-
Rl,R6,R9
R4,Rl,R7
(lD/EX. RR2 = EX/ME. RW) 1\ EX/ME. Rwrite
(lDjEX. RRl = EXjME.RW) 1\ EX/ME. Rwrite
ADD
SUB
l40vviamente il selettore sulla porta di ingresso B deve essere armonizzato con il precedeote
selettore sulla medesima. porta,
16Si noti che nella 6.19 e nella 6.21 non compare SL Cib perche queste relazioni si riferiscono alIa
selezjone di un dato in ingresso alia ALU. Tale dato viene 0 non viene usato a. seconda del comando
per la ALU presente in ill/EX.EX. In altre parole, Ie due condizioni sono indifferenti rispetto a 51
e S2.
11 risultato dell'operazione ADD edisponibile in Rl dopo Ia fase WB, rna prima di
essere scritto in Rl si trova nei registri della pipeline. Difatti, quando l'istruzione ADD
6.8.4 Soluzione dei conflitti sui dati traI)J.ite anticipazione
.. '..
.- ..
-, ..
',<,'t;:-,
,', ,
; .'
, ..

La pipeline 245
244 Capitola 6 .', jl .
J' "
'-, I> -
- :,', !.<. .
.r.-, .
'.,\",:,\\'
";",, "I".
' ..,'f1'.' ""'4':<'\",\,
2. Al clock successivo SUB eaneora in ill, mentre l'istruzione precedente ein ME L
linea Confi risulta asserita per via del verificarsi della condizione 6.15: per ,:']&:
appena detto, l'istruzione SUB subisce aneora uno stallo, mentre l'istruzio
ne
in
ME d
', ',,,,*' ""'1
proce e.
,1"-' ',";',
.: ..
" :;".,,- -
3. Al clock successivo SUB esempre in rD, mentre 1a precedente (ADD 0 LO) e in WB, '..
Ancora una volta 1a linea Conti. risulta asserita, in quanto evera la condizione ",
6.17: Pistruzione in ill subisce ancora uno stallo) rnentre quella in WB (ADD 0' .'
LD) scrive il registro di destinazione (Rl). .
"<",.,, .' ..." ,
, , :' :.
. ,
4. Al cl?ck seguente letti da ancora in ill, non ',:'
(anche perche ormaz la plpehne a valle e vuotal) e la catena 51 nmette :';, ,
In movllDento I' "'rl',y,",',.,"',
. .' .,..
-('> ,,"', :':",,;';.
". ;f$?-:}E
".""it .. '", .
, .. :p\i,;,,',,'/,.'. '
:' ;'t.'/," :., ,
"",," "",>".,.
-
- ---------- ---
,., "";.,1 .. '
',',:, ..l .... ".,.
.. ,f , . ,
Consideriamo anzitutto il caso delle istruzioni aritmetiche riferendoci alIa sequenza: " )'1:.;::, ' S h d I b I fi stat,' r',portat,' solo " campi dei latch di
. .. > Figura 6,29 C ema n ,gura sono . . .
::i '. "interesse ai fini dell'anticlpazlOne. della ALU al ternune della Case EX
in EX/ME.ALUOut, per essere trasfenta a1 clock SUCCesSlVO lD ..
;.,':.' de su ID/EX sono stati aggiunti due campi (RR1 e RR2) per contenere del reglstn
:::- sorgente, in quanta questa essere con queUa del campo R;W de.! a
'.. ,': ,Ovviamente RRI e RR2 cornspondoDo a Rsl e Rs2 su IFJID, mentre RW Idenbfica 11 regtstro
.'.'" -",. .. ,,,,,.,",, -
"::di destinaa:ione.

... . ,
"." ".' .':.
termina l,a fase EX, il risultato viene copiato in per .. . . jl' . ALUOut di ME/WB
essere pm propagato al clock successlVo LD ME/WB. Dunque l'attesa della scnttura . e dovranno selezlonare . provemente dal campo
di Rl in RF puo essere evitata - e con essa i relativi stalli visti prima - intercettanda sana venficate Ie relaZlOnI.
il risuJtato e presentandolo alla ALU in luogo del contenuto di Rl. 8, tratta, in altre ,"':\ "e;:;:' (ID;EX, RRI f. EX/ME. RW) 1\ (ill/EX. RRI = ME/WB. RW 1\ ME/WB. Rwrite
parole, d, bypassace ,I contenuto del. camp, ill /EX.A e ill jEX.B (Ill questo caso -:'.f";:i,;"" (6.21)
illjEX.A),. anticipando l'operando alia ALD, come in Figura6,29, . ((ill/EX. RR2 f. EX/ME. RW) 1\ (lD/EX. RR2 = ME/WB. RW)) 1\ ME/WB. Rwrite
Sugli mgress! alla ALU vengono preVlstl due seletton
14
che, 10 presenza : . (6.22)
conflitto, selezionano la sorgente cia! campo ALU.Out di uno dei latch a valle. E ':.<:t. .. altri casi gli ingressi alIa ALU restano i campi A e B di ill/EX. In Tabella 6.8
abbastanza facile scrivere Ie relazioni che danno i comandi per selettori. Essi dovran .. '5:P./ ... '.viene riportata la codifica per i due selettori SALA e SALB
I
tramite Ie quali si traccia
no se1ezionare gli ingressi provenienti dal campo ALUOut di EX/ME quando sona: facilmente la rete di Figura 6.30.
vere Ie relazioni seguenti
l
scritte rispettivamente per Pingresso A e l'ingresso B 15:. .' ..
," :', ...
. , ... ,'.' .. ' \ ' '
(6J9)':E 'C".' '

(6
20) ,,'" ' ,-
;".J'
;,t /{,..,::
.t;:i. ,.
..,. ,...,.
". ,'.' ,j,
,,' ,:;. ". "
, ';', <,
"
. II
'" I
247
(625)
(6.24)
:\lrit
He... T0
'.g
'"

M
""

r,
._f-I0r---,
I
HENB
"
-
,
D.te
........,
01
Ipr_<icnr
p," ,tor,
lr;:Li ---'i,o
rt-r1
vnt
'
HReod
CONDLD i\ ID/EX. MRead,
Rl,lOO(R3)
R4'Rl,R7
,
'"
Hl.'rltr
La pipeline

'"
M

U-+-I.)---jI 'l) , I
EX/HE
"
LD
SUB
11110 stodio _
ID I
.
SALAO
SALAl
SALBI
F
F
l-
.
per l'istruzione store
HE/VB.RV
[X/H[.RV
ID/EX.RRI
IDI[X,RR2
EX/H[.RVrlte
HE/VB.RVrite
ST M(Rb),Rsd
246 Capitola 6
La propagazione
di memorizzazione:
6.8.5 I confiitti per Ie istruzioni load
FO SALBO ',:'"
Jgura 6.30 Rete corrispondente al blocco "D 't' di' :-.),l;,;
III a propagazlOne" della figura

", ....
,; "".'i
,':r.

Alia stndlo -
propagazione per ole istruzioni' di La specifica unita di
' "i'fi1;:>propagazlOue e semphcemente 1a rete cornspondente ana cond.!zlOue 6.23.
Nella stadia EX'il contenuto eli Rb .
. Vien' "" -'''-''M'' S'l'.--" .
Dunq,ue il bypass di A BU illlEX e lisato per lmdmzzo di ..
Ie lstrliZioni aritmetiche. segue Ie stesse regale Vlste precedentemente per'it'.'
. si invece al re 'stro Rsd'I' -. " .' ':.<1}
memona ill fase ME il bypass' gI. ' 1 CUI contenuto Vlene scntto in .
t
. , puo avvemre da' (1) ME/WB all d""" "'"i,,
, rUZlOne che modifica furl preced' d' . ,. . 0 sta. 10 ME, se _ ,
EX/ME.B, se tra l'istruzione (2) da MW pure deterI?ina :onfiitto .R1, c'e differenza rispetto ai
Rsdj (3) da MW/WB a ID/EX.IM Rsd e c e .un che pnma: quando e ill EX, Il.valore SUB dovrebbe
1a ST C1 sono due istruzioni che 1asciano se tra 1IstruzlOne che modlfica Rsd e,,";:;-:?, non e aneora stato prodotto LD che SI trova,.lll ME. Dunque la
Come esem:pio si considerino queste due ato fud.. . . "'::",;'1:' 6.19, che far:bbe prelevare 11 del campo.D EX/!VIE,
. . ,sequenze, cornsponqentl al caso (1): un ;rrore, per0e tale campo non contIene II dato rna dl memona (11
ADD Rl,R6,R9LD Rl,100(R3) , .';'erra prodotto 1D ME/WB.MemDat solo alia fine del penodo clock). In altre
5T M(:ftS) .Rl 8T H(RS) Rl col Dostro modello di pipeline lineare, il caricamento dalla memoria, seguito
, ":,:ri da un'istruzione che 1egge il registro caricato, introduce uno staUo inevitabile.
In Figura 6.31 viene 1 t tt . ',,')1 ,.. Per introdurre 10 stalio convie.ne intervenire in faze' ill, in non dissimile da
ME/WB alIo stadio"ME. Si noti ahs ru ura d:l bYPa:s
s
re1ativa aWanticipazione da .quanta visto nel Paragraio 6.8.3. Si tratta di introdurre una-bolla in ill quando e
Rsd, prevedendo oil RR2 ME del verifi:ata d:lle condizioni 6.12 e al tempo stesso precedente (in
per cO,mandare il di bypass, e condlzlone dl da ubhizare " EX) e un'lstruzlOne LD.. In altre parole, detta CONDLD 1a condlzlOne:
, (EX/ME. RR2 =ME/WB RW) i\ EX/ME. MWrite i\ ME/WB RWrite /ID. RBI =ID/EX, RW) i\ 81) V((IF/ID. RB2 =ID/EX. RW) i\ 82)
L antlClpazlOne completa per 10 8T . h' d'
i casi' (2) e (3). _ HC Ie e, ovvlamente, Ie reti di bypass Si ha stallo se everificata 1a condizione:
. ,'I);J "0;'\";' ,..
"'0',,0:.>,'
,,,,,,, ',,' .
,;",""';"' .. , .

:
:"",,-l.;r,,' ',::;1:1",","',
" , ::'$ """,,,',",' , .
','i;"f,F{;',.. .Nello schema in Figura6.32 si riporta l'intervento necessario a mettere in stal-
... 10 l\struzione in ID. Quando la situazione e stata risolta, la pipeline riprende il
,suo, cielo di lavoro. Eventuali altri 90nflitti vengono. rete di
,A. '. antlclpazlOne. .."
j
" ,.?,,,,,.
"i '.. \:---
La tecnica. del bypass non risolve tutte le situazioni qi conflitto a cui ,si pUG andare
incontro nell'esecuzione delle istruzioni. Consideriamo la sequenza
1
I
I
I
I
I
I
I
I
I
I
!
,I
.
. II
'" I
247
(625)
(6.24)
:\lrit
He... T0
'.g
'"

M
""

r,
._f-I0r---,
I
HENB
"
-
,
D.te
........,
01
Ipr_<icnr
p," ,tor,
lr;:Li ---'i,o
rt-r1
vnt
'
HReod
CONDLD i\ ID/EX. MRead,
Rl,lOO(R3)
R4'Rl,R7
,
'"
Hl.'rltr
La pipeline

'"
M

U-+-I.)---jI 'l) , I
EX/HE
"
LD
SUB
11110 stodio _
ID I
.
SALAO
SALAl
SALBI
F
F
l-
.
per l'istruzione store
HE/VB.RV
[X/H[.RV
ID/EX.RRI
IDI[X,RR2
EX/H[.RVrlte
HE/VB.RVrite
ST M(Rb),Rsd
246 Capitola 6
La propagazione
di memorizzazione:
6.8.5 I confiitti per Ie istruzioni load
FO SALBO ',:'"
Jgura 6.30 Rete corrispondente al blocco "D 't' di' :-.),l;,;
III a propagazlOne" della figura

", ....
,; "".'i
,':r.

Alia stndlo -
propagazione per ole istruzioni' di La specifica unita di
' "i'fi1;:>propagazlOue e semphcemente 1a rete cornspondente ana cond.!zlOue 6.23.
Nella stadia EX'il contenuto eli Rb .
. Vien' "" -'''-''M'' S'l'.--" .
Dunq,ue il bypass di A BU illlEX e lisato per lmdmzzo di ..
Ie lstrliZioni aritmetiche. segue Ie stesse regale Vlste precedentemente per'it'.'
. si invece al re 'stro Rsd'I' -. " .' ':.<1}
memona ill fase ME il bypass' gI. ' 1 CUI contenuto Vlene scntto in .
t
. , puo avvemre da' (1) ME/WB all d""" "'"i,,
, rUZlOne che modifica furl preced' d' . ,. . 0 sta. 10 ME, se _ ,
EX/ME.B, se tra l'istruzione (2) da MW pure deterI?ina :onfiitto .R1, c'e differenza rispetto ai
Rsdj (3) da MW/WB a ID/EX.IM Rsd e c e .un che pnma: quando e ill EX, Il.valore SUB dovrebbe
1a ST C1 sono due istruzioni che 1asciano se tra 1IstruzlOne che modlfica Rsd e,,";:;-:?, non e aneora stato prodotto LD che SI trova,.lll ME. Dunque la
Come esem:pio si considerino queste due ato fud.. . . "'::",;'1:' 6.19, che far:bbe prelevare 11 del campo.D EX/!VIE,
. . ,sequenze, cornsponqentl al caso (1): un ;rrore, per0e tale campo non contIene II dato rna dl memona (11
ADD Rl,R6,R9LD Rl,100(R3) , .';'erra prodotto 1D ME/WB.MemDat solo alia fine del penodo clock). In altre
5T M(:ftS) .Rl 8T H(RS) Rl col Dostro modello di pipeline lineare, il caricamento dalla memoria, seguito
, ":,:ri da un'istruzione che 1egge il registro caricato, introduce uno staUo inevitabile.
In Figura 6.31 viene 1 t tt . ',,')1 ,.. Per introdurre 10 stalio convie.ne intervenire in faze' ill, in non dissimile da
ME/WB alIo stadio"ME. Si noti ahs ru ura d:l bYPa:s
s
re1ativa aWanticipazione da .quanta visto nel Paragraio 6.8.3. Si tratta di introdurre una-bolla in ill quando e
Rsd, prevedendo oil RR2 ME del verifi:ata d:lle condizioni 6.12 e al tempo stesso precedente (in
per cO,mandare il di bypass, e condlzlone dl da ubhizare " EX) e un'lstruzlOne LD.. In altre parole, detta CONDLD 1a condlzlOne:
, (EX/ME. RR2 =ME/WB RW) i\ EX/ME. MWrite i\ ME/WB RWrite /ID. RBI =ID/EX, RW) i\ 81) V((IF/ID. RB2 =ID/EX. RW) i\ 82)
L antlClpazlOne completa per 10 8T . h' d'
i casi' (2) e (3). _ HC Ie e, ovvlamente, Ie reti di bypass Si ha stallo se everificata 1a condizione:
. ,'I);J "0;'\";' ,..
"'0',,0:.>,'
,,,,,,, ',,' .
,;",""';"' .. , .

:
:"",,-l.;r,,' ',::;1:1",","',
" , ::'$ """,,,',",' , .
','i;"f,F{;',.. .Nello schema in Figura6.32 si riporta l'intervento necessario a mettere in stal-
... 10 l\struzione in ID. Quando la situazione e stata risolta, la pipeline riprende il
,suo, cielo di lavoro. Eventuali altri 90nflitti vengono. rete di
,A. '. antlclpazlOne. .."
j
" ,.?,,,,,.
"i '.. \:---
La tecnica. del bypass non risolve tutte le situazioni qi conflitto a cui ,si pUG andare
incontro nell'esecuzione delle istruzioni. Consideriamo la sequenza
1
I
I
I
I
I
I
I
I
I
I
!
,I
.
,
,

) .
J .
\
,
J .
] .
I.
1
I
\
I
I.
I
j
j
I
\
I
.', ".
I eonfronlalcri rileva,no
I'uso dl Rl in ADD.
prima cbe il reilitivo valore
sia stato prodollo. .
I c:onfrontlllori rileva,no
ruso di Rl e R5 in SU8:
ambedue possono essen!
lI11tlcipali
NOD c:'a eonflillo se
Ill. togic:.. consenle Ill.
sovrapposiozione ID WE
A:lloo. mtraprese. do.11a
lIequeoS4 di c:odice
Non :Ii verifiell. llleUll
eonfUtto; non esistono
dipeodenze
"
8(0)
C(O)
Rl.alfa(R2)
R5.R1,R7
R8,R6.R7
R9,R6.R7
Rt,O(R2)
R5,R6,R7
RB,R6.R7
R9,R6.R7
LO
ADD
SUB
OR
LD Rl,bela(RZ)
ADD R5,R6,R7
SUB R8. HI. R5
OR R9.R6,R7
LO Rl,var{R2).
ADD R5.R6,R7
SUB RB.R6,R7
OR R9. Rt,R7
to
ADD
SUB
OR
rl,
r2,
E:lomplo di sequeuzo
di c:odiee
ld
ld
00"
C=8+C;
D=E*F
Dipendenza
rlsolle con
]' I ntlc:ip1l.210 ne
Dipendenozll
ac:cesso
ordineto
Nessuns
dipenden2S
Situwono
"
uc I 1---
"
.,-
IO
"
ME
lf8
R
.,-
lD
"
M' we
R

.,-
IO
"
WE ..
R

.,-
IO
"
M'
..
R

"
IO
"
M'
lf8
-'.R
"
Ir;IDj I
p
C
Clock Stop
, I rcJ L(;l I



...."..",
248 Capitolo 6. . .
La plpehne 249
; II .ij; :( .
, 11 '
," ..;w. . ", .
. :.j i ':
y.",' j' ;:-
'In Figura6.34 viene riportata 1a sintesi dei ragionamenti svolti ai Paragrafi
,.. /::r'" Sintesl
, "'d '68.3 a 6,8,6,
,f ,;o.. .:.:., "', a .
", ."0:1 ., .. -,.
.''';'
f.lRend .,:c,' )t.-.. ,
o
1 ""'WJ '.,'
'DIEX
.. .' .
y ,., ... - .'
.. -,::.'
::. y:.I';", :"
':'1';".-..

:' :'Xt',i )-(,>,',;' .


, '\ '
...,.,:::' ,,-.
.
"':I.Iii;, -,-,,' -,.,:.... ,
"'''\''.,.
; -.,'.-", ,t,,'
\",llJ ..
, "ll<'!l'--'". ,
, .',:'Jd '/.':,;: .<, ";
..
.At.:
,';" :..
J'r,,':'''.
'.' :i!!:( ." ...
, ;.,:,::.' ," .
" ,' ....
\: :" "it ,
.; "1"11' ;1:::'.-.;"'" ..
, !-;',I '''-'''. '....
. . " ::.'
gestione del,conflitto per d.i lettura dalla Dipendenn c:he
tranl1te I IDsenmento dl uno stallo. La Imea Stop eassenta Quando si verifica la relazio ';":' rlc:hiede uno
6.25. Essa ha Peffetto di inserire una bolla su TO/EX, mantenere invariato il contenuto : stano
IFlID e non far avanzare PC. ... ' . E ' d' flitt' d t'
".' ,,;';,.:: ',:'-'- 'F,'gura 6.34 'semp' I con 'a L
"" '1"" ':' "'.:
' .... ,I,.:fI' .
"l "r;,,' ...
6.8.6 Sovrapposizione
. . La Figura 6.34 mostra che quando I'informazione cia usa.r:e non e, aneora stata
. , . ". . prodotta easo) 10 staUo e In questa soluzlone potrebbe
La, teemea nehlede una buona dose dl loglca agglUntlva. Parte di essa venire dal nordmamento del codlce se la sequenza di Istruzlom 10 permette,
p.uo la sovrapposizione delle fasi ID e WB, in quanto, illustrato a1 Paragrafo6.8.7.
SI fasl che dl pe: se rIChledono una frazione della durata . .. '
penodo dl clock. In partlcolare, se Ie due fasl nchledono un tempo T inferiore alia'
di clock,. il confiitto ID- WB eevitato effettuando le scritture sui 6'.8.7 Riordinamento
reglstIl meta dl WB e letture nella seconda meta. di ill (Figura6.33)l6. -<Sfl ': ....
Questa teeDlea Viene anehe detta d,mezzamento del clock, if\:::'1'n riordinamento puo essere di tue tipi: ',t.
alko
0 dina,m;co, a
;, :.,l?;:1 ven a attuato cial compilatore 0 dalla lOgIca dl maeehma durante 1eseeUZlone,
',.:;;1- 'H.. ','" '
''"'Il "l' . I '
" ., . '\ \
- ", .. \
't .... '"
" Riordinamento statieo , Si considerino due istruzioni in un linguaggio di program-
, ':, 'mazion. di alto livello (C, FORTRAN, ..):
""""'''' '. .
.
, ',.. .. ..
, 'j ,",,'
, ...... c' ,
-
-L...l.!!J__L_J..!IT-J I, ''\' \ ;;',\:;, ,
'"" , ".iI(',.."""
Figura 6,33. Sovrapposizione della e scrittura dei registri nello stesso periodo di .' ..?f.;I Anche supponendo che 1a maeeruna sia dotata ?i i bypass, un
clock. Le scntture avvengono nella pnma meta, Ie letture nella seconda. :,", ::- 'latore che traducesse nel seguente frammento di codlce, determmerebbe SltU3Z101ll dt
stallo sulle.due istruzioni aritmetiche. Lo stallo sarebbe di un solo cicio se la logica
. , provvista di bypass. Si noti che il codice segueDte una traduZione uno a uno rispetto
16Q t I . . , .. :& ',:\. '. al testa di alto liveilo, con riusa degli stessi registri nelle due coppie di istruzioni ehe
ues 0 comporta natura mente una alia modalita di aggiornamento dei registri che .. " ., c' . CP . bU' "\
sin da.! Capitola 2.. Per i! WB bisogna costruirsi un fronte di clock per la scrittura ::, . , ancano 10 Ule varIa l-
Dm reg.lstrI prU1:,a della meta. del penodo. e una grande difficolta.: basta agganciarsi al .' .. :....:.
feont, ,"t"m,d,a, ch, pe,o d've p''',nt",,, 'ntra la pnma met. del :"i\;
.
. ', II "''" ,.,
. .--
,,.
I
,
,

) .
J .
\
,
J .
] .
I.
1
I
\
I
I.
I
j
j
I
\
I
.', ".
I eonfronlalcri rileva,no
I'uso dl Rl in ADD.
prima cbe il reilitivo valore
sia stato prodollo. .
I c:onfrontlllori rileva,no
ruso di Rl e R5 in SU8:
ambedue possono essen!
lI11tlcipali
NOD c:'a eonflillo se
Ill. togic:.. consenle Ill.
sovrapposiozione ID WE
A:lloo. mtraprese. do.11a
lIequeoS4 di c:odice
Non :Ii verifiell. llleUll
eonfUtto; non esistono
dipeodenze
"
8(0)
C(O)
Rl.alfa(R2)
R5.R1,R7
R8,R6.R7
R9,R6.R7
Rt,O(R2)
R5,R6,R7
RB,R6.R7
R9,R6.R7
LO
ADD
SUB
OR
LD Rl,bela(RZ)
ADD R5,R6,R7
SUB R8. HI. R5
OR R9.R6,R7
LO Rl,var{R2).
ADD R5.R6,R7
SUB RB.R6,R7
OR R9. Rt,R7
to
ADD
SUB
OR
rl,
r2,
E:lomplo di sequeuzo
di c:odiee
ld
ld
00"
C=8+C;
D=E*F
Dipendenza
rlsolle con
]' I ntlc:ip1l.210 ne
Dipendenozll
ac:cesso
ordineto
Nessuns
dipenden2S
Situwono
"
uc I 1---
"
.,-
IO
"
ME
lf8
R
.,-
lD
"
M' we
R

.,-
IO
"
WE ..
R

.,-
IO
"
M'
..
R

"
IO
"
M'
lf8
-'.R
"
Ir;IDj I
p
C
Clock Stop
, I rcJ L(;l I



...."..",
248 Capitolo 6. . .
La plpehne 249
; II .ij; :( .
, 11 '
," ..;w. . ", .
. :.j i ':
y.",' j' ;:-
'In Figura6.34 viene riportata 1a sintesi dei ragionamenti svolti ai Paragrafi
,.. /::r'" Sintesl
, "'d '68.3 a 6,8,6,
,f ,;o.. .:.:., "', a .
", ."0:1 ., .. -,.
.''';'
f.lRend .,:c,' )t.-.. ,
o
1 ""'WJ '.,'
'DIEX
.. .' .
y ,., ... - .'
.. -,::.'
::. y:.I';", :"
':'1';".-..

:' :'Xt',i )-(,>,',;' .


, '\ '
...,.,:::' ,,-.
.
"':I.Iii;, -,-,,' -,.,:.... ,
"'''\''.,.
; -.,'.-", ,t,,'
\",llJ ..
, "ll<'!l'--'". ,
, .',:'Jd '/.':,;: .<, ";
..
.At.:
,';" :..
J'r,,':'''.
'.' :i!!:( ." ...
, ;.,:,::.' ," .
" ,' ....
\: :" "it ,
.; "1"11' ;1:::'.-.;"'" ..
, !-;',I '''-'''. '....
. . " ::.'
gestione del,conflitto per d.i lettura dalla Dipendenn c:he
tranl1te I IDsenmento dl uno stallo. La Imea Stop eassenta Quando si verifica la relazio ';":' rlc:hiede uno
6.25. Essa ha Peffetto di inserire una bolla su TO/EX, mantenere invariato il contenuto : stano
IFlID e non far avanzare PC. ... ' . E ' d' flitt' d t'
".' ,,;';,.:: ',:'-'- 'F,'gura 6.34 'semp' I con 'a L
"" '1"" ':' "'.:
' .... ,I,.:fI' .
"l "r;,,' ...
6.8.6 Sovrapposizione
. . La Figura 6.34 mostra che quando I'informazione cia usa.r:e non e, aneora stata
. , . ". . prodotta easo) 10 staUo e In questa soluzlone potrebbe
La, teemea nehlede una buona dose dl loglca agglUntlva. Parte di essa venire dal nordmamento del codlce se la sequenza di Istruzlom 10 permette,
p.uo la sovrapposizione delle fasi ID e WB, in quanto, illustrato a1 Paragrafo6.8.7.
SI fasl che dl pe: se rIChledono una frazione della durata . .. '
penodo dl clock. In partlcolare, se Ie due fasl nchledono un tempo T inferiore alia'
di clock,. il confiitto ID- WB eevitato effettuando le scritture sui 6'.8.7 Riordinamento
reglstIl meta dl WB e letture nella seconda meta. di ill (Figura6.33)l6. -<Sfl ': ....
Questa teeDlea Viene anehe detta d,mezzamento del clock, if\:::'1'n riordinamento puo essere di tue tipi: ',t.
alko
0 dina,m;co, a
;, :.,l?;:1 ven a attuato cial compilatore 0 dalla lOgIca dl maeehma durante 1eseeUZlone,
',.:;;1- 'H.. ','" '
''"'Il "l' . I '
" ., . '\ \
- ", .. \
't .... '"
" Riordinamento statieo , Si considerino due istruzioni in un linguaggio di program-
, ':, 'mazion. di alto livello (C, FORTRAN, ..):
""""'''' '. .
.
, ',.. .. ..
, 'j ,",,'
, ...... c' ,
-
-L...l.!!J__L_J..!IT-J I, ''\' \ ;;',\:;, ,
'"" , ".iI(',.."""
Figura 6,33. Sovrapposizione della e scrittura dei registri nello stesso periodo di .' ..?f.;I Anche supponendo che 1a maeeruna sia dotata ?i i bypass, un
clock. Le scntture avvengono nella pnma meta, Ie letture nella seconda. :,", ::- 'latore che traducesse nel seguente frammento di codlce, determmerebbe SltU3Z101ll dt
stallo sulle.due istruzioni aritmetiche. Lo stallo sarebbe di un solo cicio se la logica
. , provvista di bypass. Si noti che il codice segueDte una traduZione uno a uno rispetto
16Q t I . . , .. :& ',:\. '. al testa di alto liveilo, con riusa degli stessi registri nelle due coppie di istruzioni ehe
ues 0 comporta natura mente una alia modalita di aggiornamento dei registri che .. " ., c' . CP . bU' "\
sin da.! Capitola 2.. Per i! WB bisogna costruirsi un fronte di clock per la scrittura ::, . , ancano 10 Ule varIa l-
Dm reg.lstrI prU1:,a della meta. del penodo. e una grande difficolta.: basta agganciarsi al .' .. :....:.
feont, ,"t"m,d,a, ch, pe,o d've p''',nt",,, 'ntra la pnma met. del :"i\;
.
. ', II "''" ,.,
. .--
,,.
I
I
I

J
,
.,
IF 10
EX
ME
WB
Siallo
Sialio
IF 10
EX'
ME WB
Siallo
Siallo
IF
10
EX ME
WB
isiruzione di destinazione
Istruzione di salto
l7 Gli anglosassoni parlano di diramazione taken/n.ot.taken.
Se le istruzioni vengono riordinate in modo che 1a sequenza diventi:
Una soluzione software: it salta ritardato La penalizzazione introdotta dal
,
saito e facilmente prevenibUe attraverso il compilatore, che puo riempire i cieli di
clock che andrebbero perduti (delay slot) can altre istruzioni. Questa tecnica viene
detta saUo ritardato.
Per esempio, supponendo che 1a pipeline si comporti come in Figura6.35
introducendo cioe una bolla di due cicli - si consideri questa sequenza di istruzioni:
LD R1,100(R3)
ADD R2,R2,R3
SUB R4,R5,R6
JMP DaQualcheParte
La Figura6.35 ci cia l'indicazione di anticipare per quanto possibile il momento
in cui PC viene aggiornato. Nella nostra architettura, portare alia fase ID l'aggior-
namento del PC ecosa elementare (CfT. Capitolo 3). Se PC viene aggiprnato, in ID
resta comunque uno stallo.
. Figura 6.35 Stalio dovuto a. una istruzione di salto. faccia l'assunzione che PC venga
modificato nena fase EX. Quando l'istruzione di sa.ito ein ID e non e 8oncora. stata decodi-
ficat.a., 10 stadio IF preleva l'istruzione attigua. Prima cbe 180 fase ID termini, 180 logica di
m3.Cchina., riconoscendo il salto
,
pub introdurre una bolla, in m,odo che l'i,struzione cbe segue
non passi in esecuzione. Anche il ciclo successivo viene perso in attesa che 180 fase EX abbia.
calcolato e modific3oto PC. A questo punto 130 pipeline puo riprendere a essere alimentata,
.' 'ma si e determinata una bolla 1unga. due cicli di clock.
6.9.1 Conflitti per salti (incondizionati)
. In Figura6.35 viene mostrato 10 stal10 prodotto cia un'istruzione di salto (nell\potesi
. che il valore del nuOVO PC sia assegnato alIa fine della lase EX).
..
'"
..

,'-
..
,
,::;
..
" I
,.
.. ",
,-
'..
'l!
..f'

."'j;
..
--
,'..
"\'1
..

:i
,-.tt

"11'
,,;J '.
-'I
';-,.
0'
.'.,.'.
.i
":,,t
'$
..

..., '
, .
'. "
"
""--f
, it ;.
".
:1,
....."
,
;questa istruzione e stata
; qui non c'e piu stallo
;questa e stata
; la bolla
r1, B(O)
r2, C(O)
r4, E(O)
r3, rl, r2
r1, F(O)
C(O), r3
r3, r4, rl
0(0), r3
r3, ri, r2
C(0), r3
r1, E(O)
r2, F(O)
r3, ri, r2
0(0), r3
ld
ld
ld
add
ld
st
mul
st
add
st
ld
ld
mul
st
Capitolo 6
Per le istruzioni che possono modificare il Busso del programma non esiste una ter
minologia uniforme. In segulto si far-a. riferimento a1 termine salto il saito
6.9 Conflitti di controllo
Riordinamento dinamico Nel caso della pipeline lineare come ql.lella che stia-
mo considerando
l
Ie istruzioni entrano e escono in modo strettarnente sequenziale.
Dunque non c'e possibilita di riordinarle al tempo di esecuzione. n riordinamento
dinamico ba senso quando la pipeline emultifuDzionale, come quella
in Figura6.4 c) e quando Ie unita. operanti in parallelo sono esse stesse delle pipeline.
In questa caso eabbastanza comune I'esecuzione fuori ordine, detta anche specula-
tiva, con la quale si riesce a ottenere il massimo grado di parallelismo e si riescono
a mitigare gli effetti dei conftitti. Delle pipeline multifunzionali si parla nel" Capitola
10.
Osserviamo per inciso che l'ulteriore avanzamento di un posta della quarta istru-
zione Id (con impiego di altro registro per F) I in modo da precedere 1a somma, avrebbe
ottenuto 10 stesso effetto e l'istruzione st CeO) ,r3 avrebbe anche potuto seguire la
moltiplicazione.
Si tenga presente che una traduzione uno-a-UDO come quella sopra riportata non
,f! la piu efficiente. Specialmente con Ie maccbine dotate di molti registri, un campi-
latore ottj?lizzato evitera. riscrivere il risultato nella variabile in memorial fino al
momenta in cui il registro contenente il corrispondente valore non diventa assoluta-
mente necessaria per altri usi. In tal modo, tutte Ie volte che viene usata. una variabile
il cui valore si trova in un registro, sono evitate anche Ie istruzioni di caricamento.
Nel caso specifico, 1a memorizzazione di A e,O puo essere posposta al momento in cui
si rende necessario I'uso dei registri in cui sane contenute.

_..... , .
P 'JI,li'l'>",- -
',' ,
""!':<,.
:,t. .
(l,51" ,..
La. pipeline 251
,.. ,'"
- . - - -:r.:
I ,':>-:,:i;,,"
..:r.t ,.'.' 4.( .

oil,;, ;.:, , '.' -
.. t; ;. eincondizionato, e diramazione quando esoggetto a condizione. Un'altra questione
:i'll", '.,.'.. terminologica riguarda Ie diramazioni: occorre spesso distinguere tra quelle che hanno
i..," ):-';" luog
o
e quell
e
che non modificano il contatore di programma (PC); nel primo caso 5i
.. par
la
di diramazione effettiva. nel secondo di diramazione non '0'.
;",i:iL< Prima cit affrontare Ie dnama.zlOnl, eSaIDllllamO 11 caso molto pm semphce del
,. :1:...., "' '.
Lo stallo pub essere evitato riordinando Ie istruzio . . " .. .. ;.;:.: sal
ti
.
partlcolare Sl pub aotieipare il caricarnento m da nemplre Ie boll
e
".. }ji, ';: " :. :
a somma: CI0 comparta. l'usa di un d'ff . ana I e In modo cia precedere . <;;-;. !.. '"
moltiplicazione estate ritardato l' . I erente reglstro. Per evitare 10 stallo dell \ii: ",.: .0" '
aggiOrnamento della. variabile C .a
. ., \:-
,:.;/;'; ,,", .
.' ''; ,
. "'1':.
".,';.\, '
'";,'"\( ;- ;:-.,
.""'f' .;..
t
' . ..q,.
an :lC:lpata -, .
. , .. .'
,':N -. .
.. ",.,' ,,' .'
. .,
. :<iI..'" "
r1tard t . -:., '
a a per rlempire ' :.'.>' .
".' ':' " ' ,
250
l
I
\
I
I
I
l

"

.
1
I
" I
(
, 1
., ,
I
I

J
,
.,
IF 10
EX
ME
WB
Siallo
Sialio
IF 10
EX'
ME WB
Siallo
Siallo
IF
10
EX ME
WB
isiruzione di destinazione
Istruzione di salto
l7 Gli anglosassoni parlano di diramazione taken/n.ot.taken.
Se le istruzioni vengono riordinate in modo che 1a sequenza diventi:
Una soluzione software: it salta ritardato La penalizzazione introdotta dal
,
saito e facilmente prevenibUe attraverso il compilatore, che puo riempire i cieli di
clock che andrebbero perduti (delay slot) can altre istruzioni. Questa tecnica viene
detta saUo ritardato.
Per esempio, supponendo che 1a pipeline si comporti come in Figura6.35
introducendo cioe una bolla di due cicli - si consideri questa sequenza di istruzioni:
LD R1,100(R3)
ADD R2,R2,R3
SUB R4,R5,R6
JMP DaQualcheParte
La Figura6.35 ci cia l'indicazione di anticipare per quanto possibile il momento
in cui PC viene aggiornato. Nella nostra architettura, portare alia fase ID l'aggior-
namento del PC ecosa elementare (CfT. Capitolo 3). Se PC viene aggiprnato, in ID
resta comunque uno stallo.
. Figura 6.35 Stalio dovuto a. una istruzione di salto. faccia l'assunzione che PC venga
modificato nena fase EX. Quando l'istruzione di sa.ito ein ID e non e 8oncora. stata decodi-
ficat.a., 10 stadio IF preleva l'istruzione attigua. Prima cbe 180 fase ID termini, 180 logica di
m3.Cchina., riconoscendo il salto
,
pub introdurre una bolla, in m,odo che l'i,struzione cbe segue
non passi in esecuzione. Anche il ciclo successivo viene perso in attesa che 180 fase EX abbia.
calcolato e modific3oto PC. A questo punto 130 pipeline puo riprendere a essere alimentata,
.' 'ma si e determinata una bolla 1unga. due cicli di clock.
6.9.1 Conflitti per salti (incondizionati)
. In Figura6.35 viene mostrato 10 stal10 prodotto cia un'istruzione di salto (nell\potesi
. che il valore del nuOVO PC sia assegnato alIa fine della lase EX).
..
'"
..

,'-
..
,
,::;
..
" I
,.
.. ",
,-
'..
'l!
..f'

."'j;
..
--
,'..
"\'1
..

:i
,-.tt

"11'
,,;J '.
-'I
';-,.
0'
.'.,.'.
.i
":,,t
'$
..

..., '
, .
'. "
"
""--f
, it ;.
".
:1,
....."
,
;questa istruzione e stata
; qui non c'e piu stallo
;questa e stata
; la bolla
r1, B(O)
r2, C(O)
r4, E(O)
r3, rl, r2
r1, F(O)
C(O), r3
r3, r4, rl
0(0), r3
r3, ri, r2
C(0), r3
r1, E(O)
r2, F(O)
r3, ri, r2
0(0), r3
ld
ld
ld
add
ld
st
mul
st
add
st
ld
ld
mul
st
Capitolo 6
Per le istruzioni che possono modificare il Busso del programma non esiste una ter
minologia uniforme. In segulto si far-a. riferimento a1 termine salto il saito
6.9 Conflitti di controllo
Riordinamento dinamico Nel caso della pipeline lineare come ql.lella che stia-
mo considerando
l
Ie istruzioni entrano e escono in modo strettarnente sequenziale.
Dunque non c'e possibilita di riordinarle al tempo di esecuzione. n riordinamento
dinamico ba senso quando la pipeline emultifuDzionale, come quella
in Figura6.4 c) e quando Ie unita. operanti in parallelo sono esse stesse delle pipeline.
In questa caso eabbastanza comune I'esecuzione fuori ordine, detta anche specula-
tiva, con la quale si riesce a ottenere il massimo grado di parallelismo e si riescono
a mitigare gli effetti dei conftitti. Delle pipeline multifunzionali si parla nel" Capitola
10.
Osserviamo per inciso che l'ulteriore avanzamento di un posta della quarta istru-
zione Id (con impiego di altro registro per F) I in modo da precedere 1a somma, avrebbe
ottenuto 10 stesso effetto e l'istruzione st CeO) ,r3 avrebbe anche potuto seguire la
moltiplicazione.
Si tenga presente che una traduzione uno-a-UDO come quella sopra riportata non
,f! la piu efficiente. Specialmente con Ie maccbine dotate di molti registri, un campi-
latore ottj?lizzato evitera. riscrivere il risultato nella variabile in memorial fino al
momenta in cui il registro contenente il corrispondente valore non diventa assoluta-
mente necessaria per altri usi. In tal modo, tutte Ie volte che viene usata. una variabile
il cui valore si trova in un registro, sono evitate anche Ie istruzioni di caricamento.
Nel caso specifico, 1a memorizzazione di A e,O puo essere posposta al momento in cui
si rende necessario I'uso dei registri in cui sane contenute.

_..... , .
P 'JI,li'l'>",- -
',' ,
""!':<,.
:,t. .
(l,51" ,..
La. pipeline 251
,.. ,'"
- . - - -:r.:
I ,':>-:,:i;,,"
..:r.t ,.'.' 4.( .

oil,;, ;.:, , '.' -
.. t; ;. eincondizionato, e diramazione quando esoggetto a condizione. Un'altra questione
:i'll", '.,.'.. terminologica riguarda Ie diramazioni: occorre spesso distinguere tra quelle che hanno
i..," ):-';" luog
o
e quell
e
che non modificano il contatore di programma (PC); nel primo caso 5i
.. par
la
di diramazione effettiva. nel secondo di diramazione non '0'.
;",i:iL< Prima cit affrontare Ie dnama.zlOnl, eSaIDllllamO 11 caso molto pm semphce del
,. :1:...., "' '.
Lo stallo pub essere evitato riordinando Ie istruzio . . " .. .. ;.;:.: sal
ti
.
partlcolare Sl pub aotieipare il caricarnento m da nemplre Ie boll
e
".. }ji, ';: " :. :
a somma: CI0 comparta. l'usa di un d'ff . ana I e In modo cia precedere . <;;-;. !.. '"
moltiplicazione estate ritardato l' . I erente reglstro. Per evitare 10 stallo dell \ii: ",.: .0" '
aggiOrnamento della. variabile C .a
. ., \:-
,:.;/;'; ,,", .
.' ''; ,
. "'1':.
".,';.\, '
'";,'"\( ;- ;:-.,
.""'f' .;..
t
' . ..q,.
an :lC:lpata -, .
. , .. .'
,':N -. .
.. ",.,' ,,' .'
. .,
. :<iI..'" "
r1tard t . -:., '
a a per rlempire ' :.'.>' .
".' ':' " ' ,
250
l
I
\
I
I
I
l

"

.
1
I
" I
(
, 1
., ,

j
) .
\ .
J
.
)
)
I-
I
)
I
\
I
I
I
?53
Ovviamente, conviene cercare di evitare per Quanta possibile di pagare la pena-
Iizzazione delle dirarnazioni, anche perche Ie statistiche riportate in [HP93] indicano
che Ie diramazioni hanno una frequenza cornpresa fra 1'11 %eil17 %. In letteratura
sono state presentate molte proposte per ridurne il costa [Lil88], [PS93J, [BAM+93],
[GL93]. Una buona parte di queste si basa su predizioni st.tiche, stabilite sulla base
di stime, in fase di compilazione. Altre su predizioni dinamiche, svalte dalla logica di
CPU durante l'esecuzione. Di tutte queste tecniche si parla nei paragrafi seguenti.
Alcuni microprocessori - fra cui l'Intel 80960 - prevedono un bit di predizione
statica delle diramazioni nel codice dell'istruzione. Essa si basa su statisticbe di
esecuzione (si veda piu avanti), rna l'effetto e queUo di indicare alIa logica di CPU
se in presenza di una dirarnazione debba essere prelevata l'istruziooe successiva a
. .
quella di dirarnazione. Se la previsione deI'compiIatore non ecorretta, si incorre nella
penalizzazione dei cieli perduti: occorre infatti eliminare dalla pipeline le istruzioni
non pertinenti e iniziare a prelevare dall'indirizzo deU'istruzione che, Del' Busso del
programma, segu,e logicamente la diramazione.
,

ID/U
,H
.
UnlU di

,
.
lr/ID
controUo


'.
.
01'
-


001I' 110_
10
u-,.
A

U
.'-


RF
L
IA
LU
,
..
B
,
""

""'..
..
--
.
,

',' "" '
"
,'if
; '. 1',
, '", ,

;
, . I

" " ,
!..
:. ,,1
",j
, r
..:1 '
",'Ii I '
,,',
1 ' ,
, ,\',+,
" .,
.:. 'I' .\), ;
,-

- , ".:>
..
.
..
Rl,lOO(R3)
DaQualcheParte
R2,R2,R3
R4,R5,R6
LO
JMP
ADO
SUB
a) se appare un'istruzione di diramazione la pipeline continua a prelevare ]e istru-
" .
ZlOm successtve;
c) se la verifica della condizione di diramazione indica che essa non eefl'ettiva, tutto
procede come se si trattasse di una normale istruzione senza effetto sui PC e
senza alcuna penaJizzazione.
b) se la verifica della condizione di diramazione indica che essa eeffettiva, la pipeline
viene svuotata delle istruzioni che seguono la diramazione e viene alimentata a
partire dall'indirizzo di destinazione, con cib introducendo un bolla lunga quanta
il numero di cieli persij
6.9.2 Confiitti per Ie diramazioni
":; .
,.1"l;:- :.
La pipeline
__
I!i -1_'"
.. _.
252 Capitolo 6
:
::::=--:::::0:::.:::::..:..___________________________ "iif'" ,',c. ___
. 'r, 'r,,'\ '!':: _
--..... j;,:.;.,:.-/:",. .
" . 1 t la condizione eli diramazlOne
' "'H I< In Figura6.36 viene .rnostrata 1?gIc1a
1
val,u are
n
verificarsi della condizione
' 1-," .' I b lla dl due penodl oe a pIpe me. . aI II
\.Ii;' i:Y.,:":.::-".':- inserire a 0 '. () '1 . t di un1istruzione eqwv ente a a
peliraJE/JSll essa determma. a 1 cancabmelln d' d e periodi' (b) 11aggiornamento
-.-:"6
0
. 10 e ID/EX
,
dancio luogo a una 0 a 1 U - I
diramazione (PCJE/JS).
allora, quando viene modificato il PC, 1a coda contiene Ie istruzioni ADD e SUE e da '--
momenta vengono prelevate Ie istruzioni dalIa posizione DaQualchePartej rna intanto r,:':'
Ie due operazioni gia nella pipeline vanna avanti, e arrivano a regolare cornpletamentc.' ;',";," '
".. ' .. , "
Naturalmente
,
se si intende evitare gli stalli del salta con questo metodo, ene-
cessario che 1a logica di CPU non ne introduca, come farebbe secondo 10 schema di }', ,( :,'.',
Figura6.35. E percio evidente che un programmatore che lavori in Iinguaggio a.s:, ..
sembler deve sapere come si compo:ta. la macchina, nel senso che, se questa -g ..
1I saito ntardato, deve aver cura dt nemplfe In modo congruente cqn la loglca del :t:I:.' ""
programma gli intervalli di ritardo. E questa uno dei motivi per cui spesso si 1egge
che Ie macchine RISe (intendendo riferirsi alia lora pipeline) sonG estrernamente dif..:" ,".
ficili da programmare in linguaggio macchina: rneglio lasciar perdere e affidarsi ':'
compilatore. . ,'. " '
Nel caso del salto il riempimento delle bolle eteoricamente sempre possibile. Di .... ',' .'
fronte a situazioni intricate - piu istruzioni di salto in sequenza - iI puo.
sempre riempire gli intervalli di ritardo conquaicheNOp. Ne! caso di diramazioni . .. " . .. ata
cose sono plU complesse. DI esse 51 pari a qUI dl segUlto. '/ ;-. '--<. _ c 11 d II condiziolle di salta per Ie lSOUZlOni JE .e .JS. e; . stata t
.:..,';;- . ,-- Figura 6.36 ontro 0 S' t' che il- test della condlzlone Vlene e et ua 0
In [HP93) vengono [omite molte statistiche su salti e diramazioni e sulla loro incideDz,: :.;\ "'.. solo la p",te ;e<iodi di clock. AI v,rifle""i della
media nel corpo dei programmi. Esse indicano che, a seconda del tipo di macchln. e ' .. :".c. in EX, pe< 0 a coo l'IDdirizzo di diramazione e VleDe UlSwta \
di programma, la frequenza del salti va da! 2% aI1'8%..:;:;.! ::. ::. ': .' aI) IFlID e ID(EX, iD modo da ere"" una bolla lung. due c oc. e 0
. (q I" eli' ad,' diramazlone Vlene ca1colato III ID.
. ';':, schema In nzz
. # ';;' ,"'-"
",,' ",.
',,'- !", ".'.
'. ", ' ..-
','
,.' - '-
: " , ..
. "l .
Nel caso della diramazione, se questa eetfettiva, si presenta anCOra la situazione di . 'Yi.
Figura6.35; il PC puo essere aggiornato solo quando il suo nuovo valore edisponibile. '..
Ma nel caso della diramazione c'e la possibilita che il salta non debba etfettuarsi e che
debba invece essere preJevata Pistruzione successiva. E evidente che
l
anche accettando .
10 stallo, non conviene introdurre 1a bolla all'apparire della diramazione, in quanto
potrebbe darsi che la strada presa da! programma sia proprio queila dell'istruzione
attigua. ill parole:

j
) .
\ .
J
.
)
)
I-
I
)
I
\
I
I
I
?53
Ovviamente, conviene cercare di evitare per Quanta possibile di pagare la pena-
Iizzazione delle dirarnazioni, anche perche Ie statistiche riportate in [HP93] indicano
che Ie diramazioni hanno una frequenza cornpresa fra 1'11 %eil17 %. In letteratura
sono state presentate molte proposte per ridurne il costa [Lil88], [PS93J, [BAM+93],
[GL93]. Una buona parte di queste si basa su predizioni st.tiche, stabilite sulla base
di stime, in fase di compilazione. Altre su predizioni dinamiche, svalte dalla logica di
CPU durante l'esecuzione. Di tutte queste tecniche si parla nei paragrafi seguenti.
Alcuni microprocessori - fra cui l'Intel 80960 - prevedono un bit di predizione
statica delle diramazioni nel codice dell'istruzione. Essa si basa su statisticbe di
esecuzione (si veda piu avanti), rna l'effetto e queUo di indicare alIa logica di CPU
se in presenza di una dirarnazione debba essere prelevata l'istruziooe successiva a
. .
quella di dirarnazione. Se la previsione deI'compiIatore non ecorretta, si incorre nella
penalizzazione dei cieli perduti: occorre infatti eliminare dalla pipeline le istruzioni
non pertinenti e iniziare a prelevare dall'indirizzo deU'istruzione che, Del' Busso del
programma, segu,e logicamente la diramazione.
,

ID/U
,H
.
UnlU di

,
.
lr/ID
controUo


'.
.
01'
-


001I' 110_
10
u-,.
A

U
.'-


RF
L
IA
LU
,
..
B
,
""

""'..
..
--
.
,

',' "" '
"
,'if
; '. 1',
, '", ,

;
, . I

" " ,
!..
:. ,,1
",j
, r
..:1 '
",'Ii I '
,,',
1 ' ,
, ,\',+,
" .,
.:. 'I' .\), ;
,-

- , ".:>
..
.
..
Rl,lOO(R3)
DaQualcheParte
R2,R2,R3
R4,R5,R6
LO
JMP
ADO
SUB
a) se appare un'istruzione di diramazione la pipeline continua a prelevare ]e istru-
" .
ZlOm successtve;
c) se la verifica della condizione di diramazione indica che essa non eefl'ettiva, tutto
procede come se si trattasse di una normale istruzione senza effetto sui PC e
senza alcuna penaJizzazione.
b) se la verifica della condizione di diramazione indica che essa eeffettiva, la pipeline
viene svuotata delle istruzioni che seguono la diramazione e viene alimentata a
partire dall'indirizzo di destinazione, con cib introducendo un bolla lunga quanta
il numero di cieli persij
6.9.2 Confiitti per Ie diramazioni
":; .
,.1"l;:- :.
La pipeline
__
I!i -1_'"
.. _.
252 Capitolo 6
:
::::=--:::::0:::.:::::..:..___________________________ "iif'" ,',c. ___
. 'r, 'r,,'\ '!':: _
--..... j;,:.;.,:.-/:",. .
" . 1 t la condizione eli diramazlOne
' "'H I< In Figura6.36 viene .rnostrata 1?gIc1a
1
val,u are
n
verificarsi della condizione
' 1-," .' I b lla dl due penodl oe a pIpe me. . aI II
\.Ii;' i:Y.,:":.::-".':- inserire a 0 '. () '1 . t di un1istruzione eqwv ente a a
peliraJE/JSll essa determma. a 1 cancabmelln d' d e periodi' (b) 11aggiornamento
-.-:"6
0
. 10 e ID/EX
,
dancio luogo a una 0 a 1 U - I
diramazione (PCJE/JS).
allora, quando viene modificato il PC, 1a coda contiene Ie istruzioni ADD e SUE e da '--
momenta vengono prelevate Ie istruzioni dalIa posizione DaQualchePartej rna intanto r,:':'
Ie due operazioni gia nella pipeline vanna avanti, e arrivano a regolare cornpletamentc.' ;',";," '
".. ' .. , "
Naturalmente
,
se si intende evitare gli stalli del salta con questo metodo, ene-
cessario che 1a logica di CPU non ne introduca, come farebbe secondo 10 schema di }', ,( :,'.',
Figura6.35. E percio evidente che un programmatore che lavori in Iinguaggio a.s:, ..
sembler deve sapere come si compo:ta. la macchina, nel senso che, se questa -g ..
1I saito ntardato, deve aver cura dt nemplfe In modo congruente cqn la loglca del :t:I:.' ""
programma gli intervalli di ritardo. E questa uno dei motivi per cui spesso si 1egge
che Ie macchine RISe (intendendo riferirsi alia lora pipeline) sonG estrernamente dif..:" ,".
ficili da programmare in linguaggio macchina: rneglio lasciar perdere e affidarsi ':'
compilatore. . ,'. " '
Nel caso del salto il riempimento delle bolle eteoricamente sempre possibile. Di .... ',' .'
fronte a situazioni intricate - piu istruzioni di salto in sequenza - iI puo.
sempre riempire gli intervalli di ritardo conquaicheNOp. Ne! caso di diramazioni . .. " . .. ata
cose sono plU complesse. DI esse 51 pari a qUI dl segUlto. '/ ;-. '--<. _ c 11 d II condiziolle di salta per Ie lSOUZlOni JE .e .JS. e; . stata t
.:..,';;- . ,-- Figura 6.36 ontro 0 S' t' che il- test della condlzlone Vlene e et ua 0
In [HP93) vengono [omite molte statistiche su salti e diramazioni e sulla loro incideDz,: :.;\ "'.. solo la p",te ;e<iodi di clock. AI v,rifle""i della
media nel corpo dei programmi. Esse indicano che, a seconda del tipo di macchln. e ' .. :".c. in EX, pe< 0 a coo l'IDdirizzo di diramazione e VleDe UlSwta \
di programma, la frequenza del salti va da! 2% aI1'8%..:;:;.! ::. ::. ': .' aI) IFlID e ID(EX, iD modo da ere"" una bolla lung. due c oc. e 0
. (q I" eli' ad,' diramazlone Vlene ca1colato III ID.
. ';':, schema In nzz
. # ';;' ,"'-"
",,' ",.
',,'- !", ".'.
'. ", ' ..-
','
,.' - '-
: " , ..
. "l .
Nel caso della diramazione, se questa eetfettiva, si presenta anCOra la situazione di . 'Yi.
Figura6.35; il PC puo essere aggiornato solo quando il suo nuovo valore edisponibile. '..
Ma nel caso della diramazione c'e la possibilita che il salta non debba etfettuarsi e che
debba invece essere preJevata Pistruzione successiva. E evidente che
l
anche accettando .
10 stallo, non conviene introdurre 1a bolla all'apparire della diramazione, in quanto
potrebbe darsi che la strada presa da! programma sia proprio queila dell'istruzione
attigua. ill parole:
La sequenza puo essere riordinata dal compilatore18 come:
lndipendentemente dal fatto che 1a diramazione sia 0 no efi'ettiva, non c1e perdita
di alcun ciclo.
6.9.3 La soluzione software: Ie cliraInazllmi.Jitardate
-
255 La pipeline
20Notare che i salti esterni al cicio che in origine erano verso Dest devono essere indirizzati
all'istruzione precedente.
Dest ADD R2.Rl.R3
.. altre istruzioni
SUB R4.R2.Rl
JE R4,R8,Dest
MUL R5.R2.Rl
ADD R2,Rl,R3
.. altre istruzioni
SUB R4.R2.Rl
JE R4.R8.Dest
ADD R2.Rl.R3
MUL R5.R2.Rl
viene normalmente eseguita l'istruzione MUL se ealta 130 probabilita che la dirama-
zione non venga presa. L.'istruzione MUL viene eseguita anche in caso di diramazione
effettiv3o. Anche qui enecessaria che il cornpilatore garantisca che, se la diramazione
ha luoga, I'aver eseguito l'istruzione successiva alIa diramazione non ha effetto sulla
logica del programma. Si tratta di fare in modo che 1'eventuale assegnamento avvenga
su registri can funzione di contenitore temporaneo; tali cioe da non produrre alcun
effetto rispetto alia logica del programma se 1a diramazione ha effetto.
SUB R4,R2.Rl
JE R4,R8,Dest
MUL R5.R2.Rl
.. ,altre istruzioni
Se la probabilita di una effettiva diramazione ebassa, conviene che la bolla sia
riempita can l'istruzione che segue. In pratica si tratta di lasci30re tutto com'e. Per
esempio, con 1a sequenza:
Dest
venisse ristrutturata come
20
:
si verificherebbe un errore, in quanta il registm R2 sarebbe utilizzato dalla MUL
successiva. In altre parole, prendere I'istruzione di destinazione per riempire 1a bolla
non deve modificare la logica del programma. Cic esicuramente verificato se il registro
scritto dall'istruzione di riempimento ha funzione di contenitore temporaneo per il
loop, rna non evisibile all'esterno del loop stesso.
-J}-.Questa soluzione ha molto sensa se ealta la probabilita. che la diramazione sia ef-
,:Uettiva. Si noti che se essa non ha Iuogo
l
il registro R7 viene comunque modificato
contro la logica del programma. A- parte il fatto che si tratta di lavoro perso, occone
che questo fatto non abbia conseguenze sul.codice seguente. Per esempio,
5e la sequenza:
R2,Rl,R3
R4.R2.Rl
Rl,R3,Dest
R2.Rl.R3
Rl.R3,Dest
R4.R2.Rl
ADD
SUB
JE
ADD
JE
SUB
Dest
Dest
.:i's4 Capitola 6
. - - .. .. . .

,
Si puo ricorrere alla tecnica usata per i salti consistente nel riempire i cicli di
con altre istruzioni
1
sebbene la Sua applicazione nel caso delle diramazioni richieda IfI
qualche attenzione. Per semplicita qui di seguito si assume che, diversamente
schema di Figura6.35 dove era di due dcli di clock, 1a penalizzazione sia di uno solo.
Consideriamo la sequenza:
Dest .. altre istruzion1
SUB R4.R2.Rl
JE R4,R8,Dest
ADD R7.Rl.R3
MUL R5.R2.Rl
La riorganizzazione delle istruzioni come sopra non e possibile se Ie istruzioni che
precedono nell'ordine naturale la diramazione modificano Ie condizioni su cui viene
eseguito iI test di diramazione. 8i consideri ora questa frammento di codice:
Dest ADD R7,Rl,R3
. . altre istruzioni
SUB R4.R2.Rl
JE R4,R8,Dest
MUL R5.R2.Rl
L'istruzione SUB non puo essere impiegata per riempire la bolla. Si puo usare
Pistruzione di destinazione, ottenendo19:
18Si SUppone che aJ momento dell'esecuzione di JE i registri confrontati siano gia. stati acrhti da
eventuaJi istruzioni precedenti, 0 che ci sia la rete di bypass.
19Si noti che l'istruzione iDD R7 ,Rl.R3 dovra essere mantenuta a.nche in Dest se in tale posizione
si puo arrivare anche per a1tra via, inclusa queUa lIequenziale per l'istruzione che 1a precede nel testa
d'origine.
\
I
r
I
I
I
1
I
I
!
I
I
I
I
".
.:;
La sequenza puo essere riordinata dal compilatore18 come:
lndipendentemente dal fatto che 1a diramazione sia 0 no efi'ettiva, non c1e perdita
di alcun ciclo.
6.9.3 La soluzione software: Ie cliraInazllmi.Jitardate
-
255 La pipeline
20Notare che i salti esterni al cicio che in origine erano verso Dest devono essere indirizzati
all'istruzione precedente.
Dest ADD R2.Rl.R3
.. altre istruzioni
SUB R4.R2.Rl
JE R4,R8,Dest
MUL R5.R2.Rl
ADD R2,Rl,R3
.. altre istruzioni
SUB R4.R2.Rl
JE R4.R8.Dest
ADD R2.Rl.R3
MUL R5.R2.Rl
viene normalmente eseguita l'istruzione MUL se ealta 130 probabilita che la dirama-
zione non venga presa. L.'istruzione MUL viene eseguita anche in caso di diramazione
effettiv3o. Anche qui enecessaria che il cornpilatore garantisca che, se la diramazione
ha luoga, I'aver eseguito l'istruzione successiva alIa diramazione non ha effetto sulla
logica del programma. Si tratta di fare in modo che 1'eventuale assegnamento avvenga
su registri can funzione di contenitore temporaneo; tali cioe da non produrre alcun
effetto rispetto alia logica del programma se 1a diramazione ha effetto.
SUB R4,R2.Rl
JE R4,R8,Dest
MUL R5.R2.Rl
.. ,altre istruzioni
Se la probabilita di una effettiva diramazione ebassa, conviene che la bolla sia
riempita can l'istruzione che segue. In pratica si tratta di lasci30re tutto com'e. Per
esempio, con 1a sequenza:
Dest
venisse ristrutturata come
20
:
si verificherebbe un errore, in quanta il registm R2 sarebbe utilizzato dalla MUL
successiva. In altre parole, prendere I'istruzione di destinazione per riempire 1a bolla
non deve modificare la logica del programma. Cic esicuramente verificato se il registro
scritto dall'istruzione di riempimento ha funzione di contenitore temporaneo per il
loop, rna non evisibile all'esterno del loop stesso.
-J}-.Questa soluzione ha molto sensa se ealta la probabilita. che la diramazione sia ef-
,:Uettiva. Si noti che se essa non ha Iuogo
l
il registro R7 viene comunque modificato
contro la logica del programma. A- parte il fatto che si tratta di lavoro perso, occone
che questo fatto non abbia conseguenze sul.codice seguente. Per esempio,
5e la sequenza:
R2,Rl,R3
R4.R2.Rl
Rl,R3,Dest
R2.Rl.R3
Rl.R3,Dest
R4.R2.Rl
ADD
SUB
JE
ADD
JE
SUB
Dest
Dest
.:i's4 Capitola 6
. - - .. .. . .

,
Si puo ricorrere alla tecnica usata per i salti consistente nel riempire i cicli di
con altre istruzioni
1
sebbene la Sua applicazione nel caso delle diramazioni richieda IfI
qualche attenzione. Per semplicita qui di seguito si assume che, diversamente
schema di Figura6.35 dove era di due dcli di clock, 1a penalizzazione sia di uno solo.
Consideriamo la sequenza:
Dest .. altre istruzion1
SUB R4.R2.Rl
JE R4,R8,Dest
ADD R7.Rl.R3
MUL R5.R2.Rl
La riorganizzazione delle istruzioni come sopra non e possibile se Ie istruzioni che
precedono nell'ordine naturale la diramazione modificano Ie condizioni su cui viene
eseguito iI test di diramazione. 8i consideri ora questa frammento di codice:
Dest ADD R7,Rl,R3
. . altre istruzioni
SUB R4.R2.Rl
JE R4,R8,Dest
MUL R5.R2.Rl
L'istruzione SUB non puo essere impiegata per riempire la bolla. Si puo usare
Pistruzione di destinazione, ottenendo19:
18Si SUppone che aJ momento dell'esecuzione di JE i registri confrontati siano gia. stati acrhti da
eventuaJi istruzioni precedenti, 0 che ci sia la rete di bypass.
19Si noti che l'istruzione iDD R7 ,Rl.R3 dovra essere mantenuta a.nche in Dest se in tale posizione
si puo arrivare anche per a1tra via, inclusa queUa lIequenziale per l'istruzione che 1a precede nel testa
d'origine.
\
I
r
I
I
I
1
I
I
!
I
I
I
I
".
.:;
21 Evidentemente per x basta un bit
6.10 Predizione dinamica delle diramazioni
I
I
I
1
I
]
\
\
i
\
I
\
1
1
I
1
\
257
La pipeline
8i noti chela rev' ione viene effettuata d B
". t e usa evedere l'esito dell'eventuale
djramazione. Se fa previsione eche la. diramazione avra luogo e l\atruzione erealmente
una diramazione (fase ID successiva), aHora il prelievo delPistruzione di destinazione
inizia non appena l'indirizzo estato calcolato, altrimenti viene prelevata Pistruzione in
ordine sequenziale. La predizione evita i tempi morti dovuti al calcolo della condizione
di diramazione, rna i1 vantaggio della previsione viene parzialmente perso se l'indirizzo
di destinazione non viene calcolato prima possibile.
Figura 6.37 Schema della tabella di predizione delle diramazioni. La tabella viene gestita
come una cache associativ3o: il campo di sinistra ha t30 funzione di tagl mentre il campo di
contiene ta statistica di esecuzione della "Corrispondente diramazione. Se la tabella
contiene n righe ed e gestita con atgoritmo LRU
1
essa contiene gli i.ndirizzi e gti esiti delle
ultime n distinte diramazioni incontrate.
II modo naturale per tener traccia de Ii esiti
:ramm I con e ne ricorrer 1 a
sto a eUe recede ti ea bella di redizione
delle diramazioni Branch Pr . ion Buffer
l
:aPB . Se si vuole mantenere liml a
ta e a necessaria gestirla come una cac e, con tecnica LRU, in modo da farle tenere
tracda delle ultime n diramazioni incontrate. Lo schema del BPB e in Figura6.37.
Nella pratica
,
per evitare che 1a tabella richieda troppo spazio sull'integrato
l
si ri-
nunda' ad avere l'intero PC della diramazione e si impiegano i bit meno significativi
del relativo indirizzo (di solito si usano 5 0 6 bit). In questo caso e possiblle che
due diramazioni distinte si collochino nella stessa posizione, can 1a conaeguenza che
Ie predizioni elaborate per la prima verrebbero applicate alia seconda
l
diminuendo
l'accuratezza della previsione.
D ':) \- { \2-, Or, ,
U '):..: (\ /
PC delle diremazlone Statist:
I
6.10.1 Tabella di predizione delle diramazioni
probabiUta. che hanno Ie singole diramazioni di essere eseguite. Per una predizione
mig
liore
oecorre tener conto della specificita. delle singole diramazioni, in partico1are,
daUa storia degli esiti di una specifica diramazione si hanno utili indicazioni circa la
probabilita che la sua prossima esecuzione produca 0 no una effettiva diramazione.
In conclusione, per tentare di riempire 1a bolla della diramazione
1
it compilatore r:
pub prendere Ie istruzioni di rjempimento da tre differenti posti: a) dalle posizioni '"
che precedono la diramazione; b) dalla destinazionej c) dalle istruzioni successive. ;
Nel caso a) il compilatore non cleve prendere alcuna decisione e 1a bolla ecomunque
evitata. Le soluzioni b) e c) sono scelte in base a statistiche sul funzionamento dei ,;',
programmi. Sono stati fatli molli studi (ampiamente riportati in [HP93]),secondo '1
i quali Ie diramazioni corrispondenti ai test dei deli sono effettive con probabilita di J
1

<,
circa il 90%, mentre buona parte delle diramazioni riferite ai test sui singoli bit non
hanno luogo.
Per una maggiore fiessibilita. alcune macchine consentono I'omissione delle istru- it
zioni di ritardo, in base al valore di un bit (squash bit) contenuto nella codifica della
diramazione. Tale tecnica, eutil.izzata dalle CPU SPARC della Sun. Ovviamente e'"
ancora il compi1atore a prendere ogni decisione in merito.
',,' 1
'!
Osservazione suI saIto e sulla diramazione ritardati La t"ecnica del salta 0
della diramazione ritardata presuppone che il compilatore generi il codice conseguente
rimescolando Pordine naturale delle istruzioni del programma e che
l
ovviamente
l
1a
macchina non introduca stalB. Essa appare una soluzione ovvia, rna non sempre
di possibile attuazione. Per una macchina di nuova produzione, per la quale non
preesiste software, non ci sono controindicazioni. A riprova 9.i questa afferrnazione
basta. pensare che questa tecnica estata impiegata in quasi tutte Ie macchine RiSe
al momenta della lora introduzione. Al contrario, se una nuova CPU deve essere
compatibile con it software prodotto in precederiza, 1a strada diventa impercorribile.
E questa la situazione in cui si sana venuti a trovare i progettisti Intel, quando Ie
loro macchine (486 e successive) hanno cominciato a presentare una effettiva pipeline.
II problema era questo: introdurre il salto/diramazione ritardati (e quindi rendere
incompatibile l'immenso patrimonio di software sviluppato a partire daWintroduzione
dell'8086)1 oppure mantenere la compatibilita. La risposta era ovvia se si pensa che
abbandonare la cornpatibilita per il vezzo di far risparmiare qua1che clock ad alcune
istruzioni sarebbe stata una foUia daI punto di vista commerciale.
La predizione dinamica delle diramazioni e a carico della logica di CPU. Concet-
tualmente essa si basa suI valore della funzione F(XI,X'l"")1 dove F rappresenta
la probabilita che una diramazione sia effettiva e Xl,X'l" .. sana i parametri che in-
fluenzana F. Se F(XIIX'l,"') > 0
1
5, la predizione sara di successo
l
viceversa
1
se
F(XI
l
X2, ... ) < 0,5
1
la predizione sara di fallimento. Nella pratica
l
i pararnetri presi
in considerazione rappresentano la stOMa passata della diramazione.
Nella forma sempHficata si tiene conto dell'esito deU'ultima dira.mazione incon-
trata e si predice 10 stesso comportamento per la successiva. Con tale semplificazione
l
se X
21
eil parametro cbe registra l'esito del1'lj.ltima diramazione eseguita, il funzionale
di predizione vale F(x) = x. Questa tecnica di predizione molto rozza. Infatti essa
tratta tutte Ie diramazioni nel programma aIlo stesso moda, indipendentemente dalla
;i '.
,7' i
1"'1 '
'I't'! ',. "< ,"" ,
't" "0,_"" ',"
.. l' :.{'-"'7ff".II-;r," . .
""-256 Q,,:
"J:':" h.W eo< ',"
I
'Y '"":,,
"

'(.
I
I
I
I
I
I
I[
21 Evidentemente per x basta un bit
6.10 Predizione dinamica delle diramazioni
I
I
I
1
I
]
\
\
i
\
I
\
1
1
I
1
\
257
La pipeline
8i noti chela rev' ione viene effettuata d B
". t e usa evedere l'esito dell'eventuale
djramazione. Se fa previsione eche la. diramazione avra luogo e l\atruzione erealmente
una diramazione (fase ID successiva), aHora il prelievo delPistruzione di destinazione
inizia non appena l'indirizzo estato calcolato, altrimenti viene prelevata Pistruzione in
ordine sequenziale. La predizione evita i tempi morti dovuti al calcolo della condizione
di diramazione, rna i1 vantaggio della previsione viene parzialmente perso se l'indirizzo
di destinazione non viene calcolato prima possibile.
Figura 6.37 Schema della tabella di predizione delle diramazioni. La tabella viene gestita
come una cache associativ3o: il campo di sinistra ha t30 funzione di tag
l
mentre il campo di
contiene ta statistica di esecuzione della "Corrispondente diramazione. Se la tabella
contiene n righe ed e gestita con atgoritmo LRU
1
essa contiene gli i.ndirizzi e gti esiti delle
ultime n distinte diramazioni incontrate.
II modo naturale per tener traccia de Ii esiti
:ramm I con e ne ricorrer 1 a
sto a eUe recede ti ea bella di redizione
delle diramazioni Branch Pr . ion Buffer
l
:aPB . Se si vuole mantenere liml a
ta e a necessaria gestirla come una cac e, con tecnica LRU, in modo da farle tenere
tracda delle ultime n diramazioni incontrate. Lo schema del BPB e in Figura6.37.
Nella pratica
,
per evitare che 1a tabella richieda troppo spazio sull'integrato
l
si ri-
nunda' ad avere l'intero PC della diramazione e si impiegano i bit meno significativi
del relativo indirizzo (di solito si usano 5 0 6 bit). In questo caso e possiblle che
due diramazioni distinte si collochino nella stessa posizione, can 1a conaeguenza che
Ie predizioni elaborate per la prima verrebbero applicate alia seconda
l
diminuendo
l'accuratezza della previsione.
D ':) \- { \2-, Or, ,
U '):..: (\ /
PC delle diremazlone Statist:
I
6.10.1 Tabella di predizione delle diramazioni
probabiUta. che hanno Ie singole diramazioni di essere eseguite. Per una predizione
mig
liore
oecorre tener conto della specificita. delle singole diramazioni, in partico1are,
daUa storia degli esiti di una specifica diramazione si hanno utili indicazioni circa la
probabilita che la sua prossima esecuzione produca 0 no una effettiva diramazione.
In conclusione, per tentare di riempire 1a bolla della diramazione
1
it compilatore r:
pub prendere Ie istruzioni di rjempimento da tre differenti posti: a) dalle posizioni '"
che precedono la diramazione; b) dalla destinazionej c) dalle istruzioni successive. ;
Nel caso a) il compilatore non cleve prendere alcuna decisione e 1a bolla ecomunque
evitata. Le soluzioni b) e c) sono scelte in base a statistiche sul funzionamento dei ,;',
programmi. Sono stati fatli molli studi (ampiamente riportati in [HP93]),secondo '1
i quali Ie diramazioni corrispondenti ai test dei deli sono effettive con probabilita di J
1

<,
circa il 90%, mentre buona parte delle diramazioni riferite ai test sui singoli bit non
hanno luogo.
Per una maggiore fiessibilita. alcune macchine consentono I'omissione delle istru- it
zioni di ritardo, in base al valore di un bit (squash bit) contenuto nella codifica della
diramazione. Tale tecnica, eutil.izzata dalle CPU SPARC della Sun. Ovviamente e'"
ancora il compi1atore a prendere ogni decisione in merito.
',,' 1
'!
Osservazione suI saIto e sulla diramazione ritardati La t"ecnica del salta 0
della diramazione ritardata presuppone che il compilatore generi il codice conseguente
rimescolando Pordine naturale delle istruzioni del programma e che
l
ovviamente
l
1a
macchina non introduca stalB. Essa appare una soluzione ovvia, rna non sempre
di possibile attuazione. Per una macchina di nuova produzione, per la quale non
preesiste software, non ci sono controindicazioni. A riprova 9.i questa afferrnazione
basta. pensare che questa tecnica estata impiegata in quasi tutte Ie macchine RiSe
al momenta della lora introduzione. Al contrario, se una nuova CPU deve essere
compatibile con it software prodotto in precederiza, 1a strada diventa impercorribile.
E questa la situazione in cui si sana venuti a trovare i progettisti Intel, quando Ie
loro macchine (486 e successive) hanno cominciato a presentare una effettiva pipeline.
II problema era questo: introdurre il salto/diramazione ritardati (e quindi rendere
incompatibile l'immenso patrimonio di software sviluppato a partire daWintroduzione
dell'8086)1 oppure mantenere la compatibilita. La risposta era ovvia se si pensa che
abbandonare la cornpatibilita per il vezzo di far risparmiare qua1che clock ad alcune
istruzioni sarebbe stata una foUia daI punto di vista commerciale.
La predizione dinamica delle diramazioni e a carico della logica di CPU. Concet-
tualmente essa si basa suI valore della funzione F(XI,X'l"")1 dove F rappresenta
la probabilita che una diramazione sia effettiva e Xl,X'l" .. sana i parametri che in-
fluenzana F. Se F(XIIX'l,"') > 0
1
5, la predizione sara di successo
l
viceversa
1
se
F(XI
l
X2, ... ) < 0,5
1
la predizione sara di fallimento. Nella pratica
l
i pararnetri presi
in considerazione rappresentano la stOMa passata della diramazione.
Nella forma sempHficata si tiene conto dell'esito deU'ultima dira.mazione incon-
trata e si predice 10 stesso comportamento per la successiva. Con tale semplificazione
l
se X
21
eil parametro cbe registra l'esito del1'lj.ltima diramazione eseguita, il funzionale
di predizione vale F(x) = x. Questa tecnica di predizione molto rozza. Infatti essa
tratta tutte Ie diramazioni nel programma aIlo stesso moda, indipendentemente dalla
;i '.
,7' i
1"'1 '
'I't'! ',. "< ,"" ,
't" "0,_"" ',"
.. l' :.{'-"'7ff".II-;r," . .
""-256 Q,,:
"J:':" h.W eo< ',"
I
'Y '"":,,
"

'(.
I
I
I
I
I
I
I[
I ,..
\
I
259 La pipeline
ll:rnento
0,97
0,61
0,54
0,11
'P,(SS)
'P,(NS)
1',(SN)
'P,(NN)
s
(

ralllmcnto
\0
11
-
..
Pr.dll. dl .UCCU30
PUdi1;, di .ucco
ueceuo
Y.,
Successo
00
Succeuo
01
di r.llimentG
"'-l F.lllnunt 0
Prcdh. di ,.Ulmento

Branch Target Buffer


,
E stato gia osservato (Crr. pagina257) cbe can la Tabella di predizione delle dira-
mazioni di Figura6.37, il fetch dell'istruzione all'indirizw eli destinazione pub iniziare
solo al cicIo successivo a queUa in cui tale indlrizzo estata calca1ato dalla pipeline.
Senza altri accorgimenti, it vantaggio della predizione consiste solo nel risparmio di
tempo dovuto al caleolo della condizione di diramazione,
Si otten ana risuitati migliori se, oltre aHa redizione delPesito della diramazi ne
i riesce a redire pnma 05S1 1 e termine dello st 10 anc e a BU destinazione.
Cib epossibl e con a Tabella delle destinazioni i diramazione (Branch Target Bu er,
ch --_.--.
6.11
e quindi, data che Pcp =0,9, P
ccP
=0,5 e P ;;;;;: 0,9, si ha che l'accuratezza complessiva
della predizione vale A = 0,86. Si noti che se it tag fosse costituito dall'intero indirizzo
della diramazione, si avrebbe P = 1 e l'accuratezza salirebbe a 0,9, migliorando del
4%.
Figura 6.40 Dati sperimentali sulla probabilita. d.i successo eli una diramazione in fun:z.ione
degli esiti pregressi. 1l primo pa.rametro indica l'esito precedente, it secondo l'e5ito ultimo,
per cui, per esempio, 'Pt(NS) e la probabilita che una diramazione sia effettiva, quando
in precedenza non 10 e stata.. 8i noti che c'e una probabilita. del 97% che, se una dira.-
mazione ha avuto successa, la successiva esecuzione abbia ancora 10 stesso esito. I dati in
questione provengono dall'analisi riportata in [HP93]. Naturalmente, esaminando differenti
applicazioni rispetto a queUe consi.derate in [HP93] si possono ottenere differenti risultati
mat in ogni casa, risulterebbe sempre evidente 1a stretta relazione tra la storia passata di
una diramazione e la sua probabilita di successo.
,
'T,":"", '
,I; ,,",.
..," :
...




' ..
.

,.;,-,...,', ;

..
.. t.:<_",. ,
.,"'.11';"':' ,
""''-'"'' , '
. ".-;.,....
;..'t:;( "
l' '" .,'
," . .
,"0' " .' .
'" "......" ..
rl;;N,.,-
,&:.\::,.": ..
,.".

'. ,l'l,p' ">'
" ' "" ',,"
.. , -
.. ,,-:-;':;.' '
..
:
hi .,
; ".; ',:..
" .
"'. '.."..
"':'I " "
.' '", ' ..
.;...:,',,'-
" "' ..".;.-.
j'-', ,';"'C'
,,;)Iii'.
"'".' ,.,.. .. F 6 3" O . h d <Ii . 2 b S <Ii
Igura. l,II Ia.gramma a statl con uno sc ema 1 pre ZLOne a. It. I tratta un
contatore a 5aturazione (I'esito di successo neUo stato 11, come pure l'esito di faUimento
\'8
f
@ : nello 00 provocano I molto di.ffuso. nei processori moderni, spesso
parte dl un predlttore a due hvelh (eft. 6.12). Gh statl 00 e 01 danno luogo a una predlzlone
di fallimento, gli stati 10 e 11 fanno predire successo.
c ," :r,'- "
Ffti'.j.,/
.;'"J'."'"
j/ '0i::: .
'a I .. " ..
'. ",
.;., >'.
,.;lo..... "h" "-- '.-
.,' .."
. ,I., '.
t_"" ,
',I'
'. '-.:!!.I;l1' ,'.
j"\' .",.--l'" "
.., .......-
. __

.
, 'i'?' ,;','.:",'
.' ,;,fl' ,r. (:' :......',
." . .
::'
... i '.
1,1." !!::...
) '.;;tt ')"','" -,
'.""\ , ..,.,.
:, ,
, ," l'
'i
.. .. ..'.".


',' ""'\'''''.1:0' /..;:.....,.,
, I"') - .
;f.' }:"";,', .

,
.:'\'. I.
.
i ,'ii:"",111 '';;''. '.
.' ,:.I< ..... ,.
,.\. :,,,r., '.
..." ..,.. ,... ,'"
""M u. -!;J{-':'
'. r,n'/>:'
",""'" " ",.
".:' I":'::"',,
.' .. ,,\ '''. ,",'
".,,,,,.'
'....".
> .,- " ''t!'r ..
.' 'f; '>",,;-''' .
I' "'I; "
'.
" ''<I"f,'"''
,,,;. '
,J"i'!'> ,;C," ,.t,
.: . _. Ii\: j".:,
'h;t '( ,1 {./'
:I,r,i't1' ,;,
; -:1-:;1.: .
." .... ;ft .
. ;..;'F'.:
.. :t[.,\'-:'
"".,;.,'
':.j;'.;
-'.,a,->"'.;
. 'a:1" :,'!' }.":, ;
::',;,,:'
,;'.'.,
'. '

'..:'\,'<:1-
.\"..,r, ""","; ,

':.,.,'t, .
,-;liJ1: ,';<j'.:
".",,>:'
',"11 <1'"
" .r';,.:L ';:"'.",
I.'.'. '

,,"' .
,
',0, ,
,Ji 'J '" .
...
:.,.. :f ,,' "1; ... '
"'. ,.. .-
(6.26)
;rl +- 0
jr! t-- 10
A = 'P,. *'P +'P". *(1 - 'P)
sub rl,rl \.rl
add
loop: ... corpo del loop ..
sub rl.rl,l
bnez rl,loop
22Si parla di taken/not. taken $Witch..
Figura 6.38 Esempio di cicIo. La diramazione bnez rl.1oop eeffettiva fintantoche il conte-
nuto <li rl e diverso da zero (si assume che rl non sis. modificat.o nel corpo del loop). Poiche
all'inizio del cicio si ha. rl = 10, Is. diramazione eeffettiva. per nove volte consecutive; aHa
decima esecuzione.fa.llisce. La successiva predizione (at rientro nel loop) sara. dunque di
fallimento, cioe errata. In conclusione, tener traccia solo dell'esito dell'ultima esecuzione da
una predizione d.i un 80% ill successi, 'contro un 90% efIettivo.
Per rimediare fAlrinconveniente S1 ricb.iedODO la statistica di esecuzione
della diramazione. Con due bit si fa in modo che la predizione sia invertita solo quando
errata per due yolte .6.39 51 mostra ilCliagramma
eg 1 stati di una macchina a stati finiti avente uno schema di predizione a 2-bit
[HP93}. La,. maccruna eli Figura 6.39 eun contatore a saturazione a quattro statio n
suo contenuto viene incrementato quando la diramazione ha successo, decrementato
quando non ha luogo.
In Figura 6.40 5i riportano i risultati di uno studio sperimentale Bulla probabilita.
che ha una diramazione di essere eseguita in base alIa sua storia passata.
Poiche l'a,.ccesso alla tabella di predizione avviene utilizzando i bit meno signi-
ficativi dell'indirizzo dell'istruzione eli diramazione (Figura6.37), l'accuratezza della
schema eli prediziane dipen<;le non solo da! grado di correttezza delle predizioni per
ogni diramazione, rna anche da! grado con cui gli elementi della tabella di predizione
sono realmente riferiti alia dira,mazione in esecuzione. La studio sopra menzionato,
[HP93], ha evidenziato che 1a probabilita di correttezza, nel caso in cui la predizione
si riferisca ad altra diramazione, edi circa il 50%, mentre nel caso sia effettivamente
riferita. alla. diramazione in oggetto edi circa il 90%.
Indicando can P la probabilita che ci sia. corrispondenza tra l'elemento della
,
tabella e l'istruzione di diramazione, con 'Pcp 130 probabilita. di carretta predizione e
COD 'P
cCP
la probabilita di casuale carretta predizione (ovvero di carretta prediziane nel
caso in cui l'elemento della tabella si riferisce a un'altra diramazione), Paccuratezza
A (ovvero la probabilita complessiva di corretta prediziane) edata da:
258 Capitola 6
6.10.2 Statistica di esecuzione e accuratezza della predizione
In riferimento alla Figura6.37, la forma piu semplice di statistica e un bit
22
che
.indica l'esito dell'ultima esecuzione della diramazione. Appare chiaro, perc, che questa
schema di predizione presenta l'inconveniente mostrato da! frammento di programma
di Figura 6.38: se una diramazione viene,quasi sempre eseguita, la volta in cui fallisce.
si banna due predizioni scorrette soltanto.
J
I
I
I
I
I
I
I
I
I
-
-
-

-
-
-
-
-
I ,..
\
I
259 La pipeline
ll:rnento
0,97
0,61
0,54
0,11
'P,(SS)
'P,(NS)
1',(SN)
'P,(NN)
s
(

ralllmcnto
\0
11
-
..
Pr.dll. dl .UCCU30
PUdi1;, di .ucco
ueceuo
Y.,
Successo
00
Succeuo
01
di r.llimentG
"'-l F.lllnunt 0
Prcdh. di ,.Ulmento

Branch Target Buffer


,
E stato gia osservato (Crr. pagina257) cbe can la Tabella di predizione delle dira-
mazioni di Figura6.37, il fetch dell'istruzione all'indirizw eli destinazione pub iniziare
solo al cicIo successivo a queUa in cui tale indlrizzo estata calca1ato dalla pipeline.
Senza altri accorgimenti, it vantaggio della predizione consiste solo nel risparmio di
tempo dovuto al caleolo della condizione di diramazione,
Si otten ana risuitati migliori se, oltre aHa redizione delPesito della diramazi ne
i riesce a redire pnma 05S1 1 e termine dello st 10 anc e a BU destinazione.
Cib epossibl e con a Tabella delle destinazioni i diramazione (Branch Target Bu er,
ch --_.--.
6.11
e quindi, data che Pcp =0,9, P
ccP
=0,5 e P ;;;;;: 0,9, si ha che l'accuratezza complessiva
della predizione vale A = 0,86. Si noti che se it tag fosse costituito dall'intero indirizzo
della diramazione, si avrebbe P = 1 e l'accuratezza salirebbe a 0,9, migliorando del
4%.
Figura 6.40 Dati sperimentali sulla probabilita. d.i successo eli una diramazione in fun:z.ione
degli esiti pregressi. 1l primo pa.rametro indica l'esito precedente, it secondo l'e5ito ultimo,
per cui, per esempio, 'Pt(NS) e la probabilita che una diramazione sia effettiva, quando
in precedenza non 10 e stata.. 8i noti che c'e una probabilita. del 97% che, se una dira.-
mazione ha avuto successa, la successiva esecuzione abbia ancora 10 stesso esito. I dati in
questione provengono dall'analisi riportata in [HP93]. Naturalmente, esaminando differenti
applicazioni rispetto a queUe consi.derate in [HP93] si possono ottenere differenti risultati
mat in ogni casa, risulterebbe sempre evidente 1a stretta relazione tra la storia passata di
una diramazione e la sua probabilita di successo.
,
'T,":"", '
,I; ,,",.
..," :
...




' ..
.

,.;,-,...,', ;

..
.. t.:<_",. ,
.,"'.11';"':' ,
""''-'"'' , '
. ".-;.,....
;..'t:;( "
l' '" .,'
," . .
,"0' " .' .
'" "......" ..
rl;;N,.,-
,&:.\::,.": ..
,.".

'. ,l'l,p' ">'
" ' "" ',,"
.. , -
.. ,,-:-;':;.' '
..
:
hi .,
; ".; ',:..
" .
"'. '.."..
"':'I " "
.' '", ' ..
.;...:,',,'-
" "' ..".;.-.
j'-', ,';"'C'
,,;)Iii'.
"'".' ,.,.. .. F 6 3" O . h d <Ii . 2 b S <Ii
Igura. l,II Ia.gramma a statl con uno sc ema 1 pre ZLOne a. It. I tratta un
contatore a 5aturazione (I'esito di successo neUo stato 11, come pure l'esito di faUimento
\'8
f
@ : nello 00 provocano I molto di.ffuso. nei processori moderni, spesso
parte dl un predlttore a due hvelh (eft. 6.12). Gh statl 00 e 01 danno luogo a una predlzlone
di fallimento, gli stati 10 e 11 fanno predire successo.
c ," :r,'- "
Ffti'.j.,/
.;'"J'."'"
j/ '0i::: .
'a I .. " ..
'. ",
.;., >'.
,.;lo..... "h" "-- '.-
.,' .."
. ,I., '.
t_"" ,
',I'
'. '-.:!!.I;l1' ,'.
j"\' .",.--l'" "
.., .......-
. __

.
, 'i'?' ,;','.:",'
.' ,;,fl' ,r. (:' :......',
." . .
::'
... i '.
1,1." !!::...
) '.;;tt ')"','" -,
'.""\ , ..,.,.
:, ,
, ," l'
'i
.. .. ..'.".


',' ""'\'''''.1:0' /..;:.....,.,
, I"') - .
;f.' }:"";,', .

,
.:'\'. I.
.
i ,'ii:"",111 '';;''. '.
.' ,:.I< ..... ,.
,.\. :,,,r., '.
..." ..,.. ,... ,'"
""M u. -!;J{-':'
'. r,n'/>:'
",""'" " ",.
".:' I":'::"',,
.' .. ,,\ '''. ,",'
".,,,,,.'
'....".
> .,- " ''t!'r ..
.' 'f; '>",,;-''' .
I' "'I; "
'.
" ''<I"f,'"''
,,,;. '
,J"i'!'> ,;C," ,.t,
.: . _. Ii\: j".:,
'h;t '( ,1 {./'
:I,r,i't1' ,;,
; -:1-:;1.: .
." .... ;ft .
. ;..;'F'.:
.. :t[.,\'-:'
"".,;.,'
':.j;'.;
-'.,a,->"'.;
. 'a:1" :,'!' }.":, ;
::',;,,:'
,;'.'.,
'. '

'..:'\,'<:1-
.\"..,r, ""","; ,

':.,.,'t, .
,-;liJ1: ,';<j'.:
".",,>:'
',"11 <1'"
" .r';,.:L ';:"'.",
I.'.'. '

,,"' .
,
',0, ,
,Ji 'J '" .
...
:.,.. :f ,,' "1; ... '
"'. ,.. .-
(6.26)
;rl +- 0
jr! t-- 10
A = 'P,. *'P +'P". *(1 - 'P)
sub rl,rl \.rl
add
loop: ... corpo del loop ..
sub rl.rl,l
bnez rl,loop
22Si parla di taken/not. taken $Witch..
Figura 6.38 Esempio di cicIo. La diramazione bnez rl.1oop eeffettiva fintantoche il conte-
nuto <li rl e diverso da zero (si assume che rl non sis. modificat.o nel corpo del loop). Poiche
all'inizio del cicio si ha. rl = 10, Is. diramazione eeffettiva. per nove volte consecutive; aHa
decima esecuzione.fa.llisce. La successiva predizione (at rientro nel loop) sara. dunque di
fallimento, cioe errata. In conclusione, tener traccia solo dell'esito dell'ultima esecuzione da
una predizione d.i un 80% ill successi, 'contro un 90% efIettivo.
Per rimediare fAlrinconveniente S1 ricb.iedODO la statistica di esecuzione
della diramazione. Con due bit si fa in modo che la predizione sia invertita solo quando
errata per due yolte .6.39 51 mostra ilCliagramma
eg 1 stati di una macchina a stati finiti avente uno schema di predizione a 2-bit
[HP93}. La,. maccruna eli Figura 6.39 eun contatore a saturazione a quattro statio n
suo contenuto viene incrementato quando la diramazione ha successo, decrementato
quando non ha luogo.
In Figura 6.40 5i riportano i risultati di uno studio sperimentale Bulla probabilita.
che ha una diramazione di essere eseguita in base alIa sua storia passata.
Poiche l'a,.ccesso alla tabella di predizione avviene utilizzando i bit meno signi-
ficativi dell'indirizzo dell'istruzione eli diramazione (Figura6.37), l'accuratezza della
schema eli prediziane dipen<;le non solo da! grado di correttezza delle predizioni per
ogni diramazione, rna anche da! grado con cui gli elementi della tabella di predizione
sono realmente riferiti alia dira,mazione in esecuzione. La studio sopra menzionato,
[HP93], ha evidenziato che 1a probabilita di correttezza, nel caso in cui la predizione
si riferisca ad altra diramazione, edi circa il 50%, mentre nel caso sia effettivamente
riferita. alla. diramazione in oggetto edi circa il 90%.
Indicando can P la probabilita che ci sia. corrispondenza tra l'elemento della
,
tabella e l'istruzione di diramazione, con 'Pcp 130 probabilita. di carretta predizione e
COD 'P
cCP
la probabilita di casuale carretta predizione (ovvero di carretta prediziane nel
caso in cui l'elemento della tabella si riferisce a un'altra diramazione), Paccuratezza
A (ovvero la probabilita complessiva di corretta prediziane) edata da:
258 Capitola 6
6.10.2 Statistica di esecuzione e accuratezza della predizione
In riferimento alla Figura6.37, la forma piu semplice di statistica e un bit
22
che
.indica l'esito dell'ultima esecuzione della diramazione. Appare chiaro, perc, che questa
schema di predizione presenta l'inconveniente mostrato da! frammento di programma
di Figura 6.38: se una diramazione viene,quasi sempre eseguita, la volta in cui fallisce.
si banna due predizioni scorrette soltanto.
J
I
I
I
I
I
I
I
I
I
-
-
-

-
-
-
-
-
-
"
I
1
,
\
I ,.
)
I-
I-
\ .
1
J
I
).
1
1
\
diramazione, la logica procede secondo una regola predefinita
24
La nuova d.ira-
mazione viene inserita in BTB, can l'indirizzo di destinazione e can la statistica
corrispondente a questa sua prima esecuzione. In questo modo, assumendo che Ia
teenica di gestione di BTB sia LRU, la tabella finisce col contenere i dati relativi
a.1le ultime istruzioni di dirarnazione incontrate dal flusso del
Stall.l, PC dl de.llnu:lol'le PC Isln.Lzlone
I pc corrente I
. Se l'istruzione ein BTB, essa esicurarnente una diramazione e.la sua destina-
zione econtenuta Del primo dei due campi della parte dati della cache. II c'ampo
. ' . , .
contenente Ie statistiche di previsione consente aHa CPU di decidere se la
rnazione sara effettiva a no. Se la predizione e di dirarnazione effettiva, la logica
preleva l'indirizzo di'destinazione direttamente da BTB. Se invece la predizione
eche la diramazione non avra. luogo, la logica di CPU continua a prelevare se-
quenzialmente Ie istruzioni secondo l'ordine testuale. Naturalmente, se a verifica
della condizione di diramazione la predizione si dimostra errata, la pipeline deve
essere svuotata e il caricamento deve essere ripreso, In ogni caso, Ie stati"stiche
di previsione vengono aggiornate dopo l'esecuzione della diramazione
23
,
23Poiehe a BTB si accede con l'indirizro dell'istruzione di saIto, si rende nece'ssario almeno un
registro temporaneo di CPU in cui salvare tale indirizzo per gli accessi suecessivi di aggiornamento
del BTB, come pure deve essere salvato l'indirizzo (PC+4) dell'istruzione che nell'ordine testuale
segue la diramazione, per pater riaggiornare iI valore di PC in caso di fallimento della previsione.
-;F.-
r..:.,':'-

;;JO,"::' "
j'''' -
'..... '

. La pipeline 261

_..

jO.. ..,)-.

""... '
'1'" :IS'".,
, ...",' .
. ,
. 'to'
-.
_,.0:: ........ ,
, ,"""w"
1.",':'0',..1-,.
,.;:.. .
.-
{W,o""
-,..
'",
:: .
''l.;':''
., ,t:.\ '.
Incidentalmente, vale la perra di notare che l'indirizzo eli destinazione cleve co-
. .munque coincidere con queUo calcolato in EX, in quanto, se (come succede di norma)
J it campo tag del BTB contiene solo una porzione dell'indirizzo della diramazione, la
.".tt:; destinazione fornita: dal BTB potrebbe riferirsi ad altra diramazione., con 10 stesso tag
.. ,itr, di corrente.. In altre parole, accadere questQ:. (a) Vlene una
diramazlOne effettlva con conseguente modliica del PC e prehevo dalla qestmazlOnej
,.(b) una volta caIcolato l'indirizzo di si scopre cbe. questa e'diverse da
que!lo predetto da,. A questa punta non a:IternatIve: PC deve essere
J ':-':,if agglOrnato 0 con I mdmzzo calcolato, se la preVlSlOne di saIto e confermata, 0 con
.6.41 destinazioni .delle tag della tabella quello'dell'istruzione successiva (PC+4 nella nostra architettura) in case contrario.
e Imdlnzzo delilstruzlOne, fa parte datI contIene l'mdmzzo dl destllla.zlOne e Ie statistiche )'it"!i'" :-
relative a.ll'istruzione stessa. Per quanta si riferisoe gli indirizzi utilizzati per a.ccedere alia.
(pw:te TAG): per intero oppure parzialmente, 6.11.1 Prestazioni del BTB
eons,dera:nd?ne solo I Illeno slgmfieatl':'l; n:l sulle prest-azioni
del BTJ:3 Ie tra le dl con uguale parte , .. .
menD qUaD:o 51 .statIstlche .per la predizio,ne, .Ie 6.9 nportata la; diramazlOnt. per 1
preditton a 2 bIt 0 predltton ptu eomplessl, come quelli a due' renh Casl posslbih. La tabella SI rifensce aile nportate nella dldasea:.ha di
m segUlto. '.. .' . Figura 6.42: .(1) la valuta.z:ion.e ,della di viene effettuata nella
. ../:;\:1<, fase m; (2) 1l calcolo deU'mdinzzo dl destmazlOne In EX.
. . I casi 1 e 3si riferiscollo a istruzione in BTB e predizione corretta: non ci sana
n e cache modeste: il fo:mat.o e in Figu.' .. e procede ritardi
25
. . . .
ra6.41, II" funzlOnamento ill Flgura6.42. Nel tempo In CUI un'l5truzlone VIene prele-, '," Le' nghe 2 e 4 51 nfen5cono a preVlSlone errata con lStruzlOne m BTB. Nel caso
vata memoria IF), viene anche coufrontato it relativo PC con gli ,indirizzi 2 si nel. di un solo di clock il prelievo dell'istruzione
presentl (come tag) In BTB. . ,,' . ,n 51 In sequenza (dall'mdinzzo. caso.4
il fltardo e dl due clch dl clock m quanto, per prelevare l'lstruzlone d.i destmazlOne
: corretta, occorre attendere che questo indirizzo sia state calcolato, ovvero che sia
: conclu5a la fase EX, rimandando it fetch al prossimo cicIo.
Quando Pistruzione non viene localizzata nel BTB (casi 5 e 6), la logica di CPU
:p.roced.e sequenziale successiva,
con SI hanno di penallZ-
nel caso 10 CUI la diramazlOne e dt succe5SO e ne55una penahzzazlOne nel case
' dl falhmento. .. .. , .
, . Occ0.rre sottohneare 11 che In Tabella 6.9 e }IDa semplifi-
:;X:, n',:':> ' caZIone di quanto accade nel processon reali. Infattl, anche una predizlone corretta
ha un casto. Una diramazione eseguita, anche se correttamente predetta, provoca
/ ..1..,
...'
",:.y,;,. I,:, ,),,:,"- "
Se l'indirizzo non viene lecalizzato nel BTB, rna si scopre che l'istruzione e una .
24
La regola piu semplice consiste nell'assumere che la dira.mazione npn abbia luogoj una regola
. piiJ. raffinata potrebbe dfarsi, per esempio, alia predizione statica: diramazion8 all'indietro predetta
, '.' come effettiva, dirama.2.ione in ava.nti predetta. come non effettiva.,
.. '. ,
2s
Si noti che, per quante detto in precedenza, nel caso 1 necessario verificare a.1 termine della
..<,::, fase di EX, a indirizzo di diramazione calcolata, se questo coincide con quello fomito da BTe. [n
caso di discrepanza, la logica della CPU deve concludere cbe it BTB ha foroito'l'indirizZQ di altra
quella corrente a causa de.Ua limitazione.del t.ag. Se e'e discrepanza la
predlzlOne e da COfiSlderarSI errata e, come nel caso 4, 51 ha una penahZUZlooe di 2 picli.
,.'"1, ''''''''.

1[>;
260 Capitolo 6
1",
,.1"
" '. i
BTB), Conoscere questo indirizzo gill a1 primo delo di clock, anziche attendere
calcolo, permette di effettuare immediatamente it prelievo della relativa i5truzione, 'f;
azzerando coal il ritard6 di diramazione [GL93j,
:
, ,'II\)'
'.;:"]

. ..
-
"
I
1
,
\
I ,.
)
I-
I-
\ .
1
J
I
).
1
1
\
diramazione, la logica procede secondo una regola predefinita
24
La nuova d.ira-
mazione viene inserita in BTB, can l'indirizzo di destinazione e can la statistica
corrispondente a questa sua prima esecuzione. In questo modo, assumendo che Ia
teenica di gestione di BTB sia LRU, la tabella finisce col contenere i dati relativi
a.1le ultime istruzioni di dirarnazione incontrate dal flusso del
Stall.l, PC dl de.llnu:lol'le PC Isln.Lzlone
I pc corrente I
. Se l'istruzione ein BTB, essa esicurarnente una diramazione e.la sua destina-
zione econtenuta Del primo dei due campi della parte dati della cache. II c'ampo
. ' . , .
contenente Ie statistiche di previsione consente aHa CPU di decidere se la
rnazione sara effettiva a no. Se la predizione e di dirarnazione effettiva, la logica
preleva l'indirizzo di'destinazione direttamente da BTB. Se invece la predizione
eche la diramazione non avra. luogo, la logica di CPU continua a prelevare se-
quenzialmente Ie istruzioni secondo l'ordine testuale. Naturalmente, se a verifica
della condizione di diramazione la predizione si dimostra errata, la pipeline deve
essere svuotata e il caricamento deve essere ripreso, In ogni caso, Ie stati"stiche
di previsione vengono aggiornate dopo l'esecuzione della diramazione
23
,
23Poiehe a BTB si accede con l'indirizro dell'istruzione di saIto, si rende nece'ssario almeno un
registro temporaneo di CPU in cui salvare tale indirizzo per gli accessi suecessivi di aggiornamento
del BTB, come pure deve essere salvato l'indirizzo (PC+4) dell'istruzione che nell'ordine testuale
segue la diramazione, per pater riaggiornare iI valore di PC in caso di fallimento della previsione.
-;F.-
r..:.,':'-

;;JO,"::' "
j'''' -
'..... '

. La pipeline 261

_..

jO.. ..,)-.

""... '
'1'" :IS'".,
, ...",' .
. ,
. 'to'
-.
_,.0:: ........ ,
, ,"""w"
1.",':'0',..1-,.
,.;:.. .
.-
{W,o""
-,..
'",
:: .
''l.;':''
., ,t:.\ '.
Incidentalmente, vale la perra di notare che l'indirizzo eli destinazione cleve co-
. .munque coincidere con queUo calcolato in EX, in quanto, se (come succede di norma)
J it campo tag del BTB contiene solo una porzione dell'indirizzo della diramazione, la
.".tt:; destinazione fornita: dal BTB potrebbe riferirsi ad altra diramazione., con 10 stesso tag
.. ,itr, di corrente.. In altre parole, accadere questQ:. (a) Vlene una
diramazlOne effettlva con conseguente modliica del PC e prehevo dalla qestmazlOnej
,.(b) una volta caIcolato l'indirizzo di si scopre cbe. questa e'diverse da
que!lo predetto da,. A questa punta non a:IternatIve: PC deve essere
J ':-':,if agglOrnato 0 con I mdmzzo calcolato, se la preVlSlOne di saIto e confermata, 0 con
.6.41 destinazioni .delle tag della tabella quello'dell'istruzione successiva (PC+4 nella nostra architettura) in case contrario.
e Imdlnzzo delilstruzlOne, fa parte datI contIene l'mdmzzo dl destllla.zlOne e Ie statistiche )'it"!i'" :-
relative a.ll'istruzione stessa. Per quanta si riferisoe gli indirizzi utilizzati per a.ccedere alia.
(pw:te TAG): per intero oppure parzialmente, 6.11.1 Prestazioni del BTB
eons,dera:nd?ne solo I Illeno slgmfieatl':'l; n:l sulle prest-azioni
del BTJ:3 Ie tra le dl con uguale parte , .. .
menD qUaD:o 51 .statIstlche .per la predizio,ne, .Ie 6.9 nportata la; diramazlOnt. per 1
preditton a 2 bIt 0 predltton ptu eomplessl, come quelli a due' renh Casl posslbih. La tabella SI rifensce aile nportate nella dldasea:.ha di
m segUlto. '.. .' . Figura 6.42: .(1) la valuta.z:ion.e ,della di viene effettuata nella
. ../:;\:1<, fase m; (2) 1l calcolo deU'mdinzzo dl destmazlOne In EX.
. . I casi 1 e 3si riferiscollo a istruzione in BTB e predizione corretta: non ci sana
n e cache modeste: il fo:mat.o e in Figu.' .. e procede ritardi
25
. . . .
ra6.41, II" funzlOnamento ill Flgura6.42. Nel tempo In CUI un'l5truzlone VIene prele-, '," Le' nghe 2 e 4 51 nfen5cono a preVlSlone errata con lStruzlOne m BTB. Nel caso
vata memoria IF), viene anche coufrontato it relativo PC con gli ,indirizzi 2 si nel. di un solo di clock il prelievo dell'istruzione
presentl (come tag) In BTB. . ,,' . ,n 51 In sequenza (dall'mdinzzo. caso.4
il fltardo e dl due clch dl clock m quanto, per prelevare l'lstruzlone d.i destmazlOne
: corretta, occorre attendere che questo indirizzo sia state calcolato, ovvero che sia
: conclu5a la fase EX, rimandando it fetch al prossimo cicIo.
Quando Pistruzione non viene localizzata nel BTB (casi 5 e 6), la logica di CPU
:p.roced.e sequenziale successiva,
con SI hanno di penallZ-
nel caso 10 CUI la diramazlOne e dt succe5SO e ne55una penahzzazlOne nel case
' dl falhmento. .. .. , .
, . Occ0.rre sottohneare 11 che In Tabella 6.9 e }IDa semplifi-
:;X:, n',:':> ' caZIone di quanto accade nel processon reali. Infattl, anche una predizlone corretta
ha un casto. Una diramazione eseguita, anche se correttamente predetta, provoca
/ ..1..,
...'
",:.y,;,. I,:, ,),,:,"- "
Se l'indirizzo non viene lecalizzato nel BTB, rna si scopre che l'istruzione e una .
24
La regola piu semplice consiste nell'assumere che la dira.mazione npn abbia luogoj una regola
. piiJ. raffinata potrebbe dfarsi, per esempio, alia predizione statica: diramazion8 all'indietro predetta
, '.' come effettiva, dirama.2.ione in ava.nti predetta. come non effettiva.,
.. '. ,
2s
Si noti che, per quante detto in precedenza, nel caso 1 necessario verificare a.1 termine della
..<,::, fase di EX, a indirizzo di diramazione calcolata, se questo coincide con quello fomito da BTe. [n
caso di discrepanza, la logica della CPU deve concludere cbe it BTB ha foroito'l'indirizZQ di altra
quella corrente a causa de.Ua limitazione.del t.ag. Se e'e discrepanza la
predlzlOne e da COfiSlderarSI errata e, come nel caso 4, 51 ha una penahZUZlooe di 2 picli.
,.'"1, ''''''''.

1[>;
260 Capitolo 6
1",
,.1"
" '. i
BTB), Conoscere questo indirizzo gill a1 primo delo di clock, anziche attendere
calcolo, permette di effettuare immediatamente it prelievo della relativa i5truzione, 'f;
azzerando coal il ritard6 di diramazione [GL93j,
:
, ,'II\)'
'.;:"]

. ..
-
-
(
Caso Istruzione Predizione ito vicli di
nel Buffer
penalizzazione
1 Si -Successo
uccesso 0
2 Si Successo Fallimento 1
3 Si Fallimento Fallimento 0
4 Si Fallimento Successo 2
5 No Successo 2
6 No Fallimento 0
La pipeline 263
260vviamente, la gestione del BTB come cache, can possibiliU. di interferf!DZa e conseguente riso-
luzione parziale {Fag97j, e di per se un fattore di risparmio nel con8umo di bit per Ia. realizzazione
del BTB. E' questa la soluzione adottata da tutti i costruttori, in quanto i benefici derivanti dalla
riduzione delle dimensioni del BTB giu8tificano il costo in termini di accuratezza di predizione. Per-
altro, si ricordi che, 301 tennine del Paragrafo 6.10.2. si era osserva.to il data sperimentale secondo cui
il migli.oramento deU'accuratezza delivante dall'impiego dell'intero indirizzo era quantificabile in un
4%.
Quali diramazioni in BTB? Essendo il BTB limitato, si deve decidere quaE
diramazioni esso debba preferibllmente contenere. Dal primo criterio sopra riportato,
si deriva che conviene inserire nel BTB Boltanto Ie diramazioci eseguite con successo.
Infatti, se la regola equella di dare una predizione di fallimento per le diramazioni non
in 8TB, non conviene tenere in BTB quelle i cui bit di predizione darebbero fal1imento,
in quanto si clarebbe una predizione pari ad una diramazione n'on presente.
Le prestazioni potenziali del BTB crescono all'aumentare del contenuto informativo
di ogni riga del BTB. ndimensionamento del BTB eun tipico problema ingegneristico
di ricerca del miglior rapporto costojprestazioni. Si adottano i seguenti tre
26
criteri
geoerali [PS93j.
1. Se una diramazione non ha potenzialita di migliorare Ie prestazioni) non deve
essere memorizzata nel BTBj
2. Quando enecessario eliminare una diramazione da! BTB, viene eliminata quella
con minori potenzialita. di prestazionij
3. Un BTH multilivello, in cui ogni livello puo contenere un clifferente numero di
righe e, di conseguenza, un diversa quantita eli informazioni per riga, deve poter
riuscire a massimizzare le prestazioni ottenendo un miglior bilanciamento tra il
numero di righe entrate e la quantita di informazioni per riga.
Dei primi due criteri si parla qui di seguito, mentre al terzo dedicato il Paragrafo
6.12.
6.11.2 Ottimizzazione del BTB
Tabella 6.9 Penalizzazioni di salta in presenza di BTB. Le prime quattro righe si riferiscono
a.i casi in cui Ia. diramazione epreseote nella tabella. La. penalizzazione di errata. predizione
edi due cicli di clock tranne che nel caso 2, dove si ha. un sofo ciclo di penalizzazione per
Ia. disponibilita. dell'indirizzo di destinazione (PC+4). Si e fatta I'ipotesi the, se l'istruzione
non e presente in BTB, venga predetto it fallimento.
,
t ';L', '.': .:

::
tt:C-,
I '".',,'f
", .,.. , " ...... '
....11 __ ".
-')::.1..
.>,
".
, . .
, l' A '.,
. I .
2\
'1;
.
?,..l
" , . ,
'''-
":'
""Iill ". T
'M" ,
,i II ';-- ._:
"'r:. ... !"
'CR' .- -
..
"';;ii:' :.. "..
,
I '.- :"1,.
\.-'" ., ..
. .
,R::' ,-. -
,.. ..
,1;,;,1 ..-.;_ .
;";''1.,: ;',-
......
'if. .'
..." '.
.. .. ,.
.

. ," ',..',
-";1'-''':,'
.. ,,; ",",'.-,'".
.. ,,"
, /
, ..:t; ...... , .-t , ..
..:;d< .<:
, ,.. : ...,
.' _;. ,..<!.:":.,:,, ,
'. ",'" ki', "" ...." I,
"";'l' ,
i .. '-'''cI'j'': ."
,'
c
,:,'!X ':--t';". ".
",.' .,,, .,...
_<'/....... :." _:.'... r'
:;j"" .':;..-1. ,. .'
, .\oG?,c
'i:_',;; ,:'
'""-1';'"
!:.
j'-,,,

""w"-'t -.1. ' ..

': 'l.'';1i.'t .;[->-:.;.."
. ,.;rl1i1!i ",'-
"fMTfiI .
, ..1' ::il
"\"", ,,', ..
..,-'.,., . '
.. '':iJ,i',t-""
.. I.. ,.> '".
'':'''''\'
,'." B.
",$0::: ,:!",."" " ,
': ,;. :',
"?.-, ,
:'i;::':"." ,.
,
:';;: t",;;.;.:._ .
.r ." <. .... ,
.
'
,;/ ...., ",',
, _,.l,:,l.',to.. ,:w,' ).,'
,... G-,.;,' ...
?r.....
_>".,.,'nI: . J"'.1.;.\
,
'.' "h
5
if=- __ , . "
'
'\""fC' ",",n,,\::
-'. r. '.' '
.' . -:;{; ,:" '. .
". "
......, r 11',.'
,"..""", .l> I'
!
'>l.t'U''',
r,v, " .
... ,'" .,./\., ,
,.. :r,.,", ':"",
"'..
';-,
.'l'P':.

,::;';',','
"
""j'
_,,"
.!<"-..:.
'::';1''-

: ','.
.,'1, '!' :.
- ''!.).'':
.. - ..
:0J";::.'; .,"di,:'
-."'lr ..,.'
... '.. ., ... .-
, ,,';I'ti! f,''' "
'?h:';&",' ."

.".. . '." ." "- :',,';' - ,,' .
... :t:9: .
-.'" _.' l
, :';',',li5P'
1..
PC 82: memoria
..,
NO
/h.Il?
"
prell.Uo
'"
"
B memorl.
dlra.mnlon.

NO

Sl
CDrT" ..

lnnrimento
Elhnlnnione
:ffl0nu,m"ote
'" '"
d.U'I,trudon.; ... I,Uch..;
<:&10010 del pro.ecu%lone
PC _Item_tty,,: ..IIU .l&1Il
Pn.U.vo ddl'&!tn
dullnaziolle
c."<I1,"
del.
EX
m
UnJaltra importante diHerenza equeUa relativa alIa gestione delle diramazioni
non presenti nel BTB. Per queste si utilizzano metodi di predizione statica (come nei
processori della famiglia P-6 dell'Intel). Ad esempio: si da. predizioce di successo aIle
diramazioni.ali'indietroj si predice fallimento per diramazioni in avanti.
Figura 6.42 Trattamento di una istruzione in presenza del branch-target buffer. Le tre
fasi IF, ID ed EX si riferiscono ad una generica istruzione. 10 schema. assume che: (1) 1a
valutazione della condizione di diramaziooe sia. effettuata. in ID; (2) i1 calcolo dell'eventuale
indirizzo di destinazione della diramazione sia effettuato in EX. 5e l'istruzione e presente
in BTB) e possibile prelevare l'istruzione di destinazione attraverso Pindirizzo fornito da!
campo a cib preposto. A seconda della condizione di diramazione valutata in fase rD,
nella fase EX dell'istruzione di diramazione la logica di CPU: (a) continua l'esecuzione
senza. alcuna. penalizzazione; (b) elimina. l'istruzione dalla. coda, aggiorna. BTB e preleva
Pistruzione dovuta.. Nel caso in cui non si abbia hit (del PC corrente), Pistruzione .pub
ancora essere una diramazione. In questa caso lao diramazione viene inserita in BTB con la
statistica corrispondente all'esito di questa prima esecuzione. Nell'escguire per Ia. prima volta
di diramazione PUQ essere tentata una. previsionc secondo una logica predefinita
IF
)l
262 Capitola 6
comunque un'uscita dalla connale sequenzialita delle istruzioni, e il tempo di accesso
. alla memoria (che sia la memoria cache 0 quell a principale) puo' essere tale' da non per
mettere il prelievo della destinazione prima della conclusione della Case ill. Talvolta,
per superare questo problema, viene aggiunto al BTB un quarto campo contenente
alcuni relativi alia destinazione, in modo da evitare i1 loro fetch da memoria:.
Questa soluzione, presente solo nei BTH piu avanzati, rende immediatamente dispo-
nihile Pistruzione di destinazione, eliminando cosi il ritardo dovuto all'accesso aHa
memona.
I
I
,I
I
I
I
I
-I
I
I
I
!
-
-
-
-
-
-- 1
-
-
(
Caso Istruzione Predizione ito vicli di
nel Buffer
penalizzazione
1 Si -Successo
uccesso 0
2 Si Successo Fallimento 1
3 Si Fallimento Fallimento 0
4 Si Fallimento Successo 2
5 No Successo 2
6 No Fallimento 0
La pipeline 263
260vviamente, la gestione del BTB come cache, can possibiliU. di interferf!DZa e conseguente riso-
luzione parziale {Fag97j, e di per se un fattore di risparmio nel con8umo di bit per Ia. realizzazione
del BTB. E' questa la soluzione adottata da tutti i costruttori, in quanto i benefici derivanti dalla
riduzione delle dimensioni del BTB giu8tificano il costo in termini di accuratezza di predizione. Per-
altro, si ricordi che, 301 tennine del Paragrafo 6.10.2. si era osserva.to il data sperimentale secondo cui
il migli.oramento deU'accuratezza delivante dall'impiego dell'intero indirizzo era quantificabile in un
4%.
Quali diramazioni in BTB? Essendo il BTB limitato, si deve decidere quaE
diramazioni esso debba preferibllmente contenere. Dal primo criterio sopra riportato,
si deriva che conviene inserire nel BTB Boltanto Ie diramazioci eseguite con successo.
Infatti, se la regola equella di dare una predizione di fallimento per le diramazioni non
in 8TB, non conviene tenere in BTB quelle i cui bit di predizione darebbero fal1imento,
in quanto si clarebbe una predizione pari ad una diramazione n'on presente.
Le prestazioni potenziali del BTB crescono all'aumentare del contenuto informativo
di ogni riga del BTB. ndimensionamento del BTB eun tipico problema ingegneristico
di ricerca del miglior rapporto costojprestazioni. Si adottano i seguenti tre
26
criteri
geoerali [PS93j.
1. Se una diramazione non ha potenzialita di migliorare Ie prestazioni) non deve
essere memorizzata nel BTBj
2. Quando enecessario eliminare una diramazione da! BTB, viene eliminata quella
con minori potenzialita. di prestazionij
3. Un BTH multilivello, in cui ogni livello puo contenere un clifferente numero di
righe e, di conseguenza, un diversa quantita eli informazioni per riga, deve poter
riuscire a massimizzare le prestazioni ottenendo un miglior bilanciamento tra il
numero di righe entrate e la quantita di informazioni per riga.
Dei primi due criteri si parla qui di seguito, mentre al terzo dedicato il Paragrafo
6.12.
6.11.2 Ottimizzazione del BTB
Tabella 6.9 Penalizzazioni di salta in presenza di BTB. Le prime quattro righe si riferiscono
a.i casi in cui Ia. diramazione epreseote nella tabella. La. penalizzazione di errata. predizione
edi due cicli di clock tranne che nel caso 2, dove si ha. un sofo ciclo di penalizzazione per
Ia. disponibilita. dell'indirizzo di destinazione (PC+4). Si e fatta I'ipotesi the, se l'istruzione
non e presente in BTB, venga predetto it fallimento.
,
t ';L', '.': .:

::
tt:C-,
I '".',,'f
", .,.. , " ...... '
....11 __ ".
-')::.1..
.>,
".
, . .
, l' A '.,
. I .
2\
'1;
.
?,..l
" , . ,
'''-
":'
""Iill ". T
'M" ,
,i II ';-- ._:
"'r:. ... !"
'CR' .- -
..
"';;ii:' :.. "..
,
I '.- :"1,.
\.-'" ., ..
. .
,R::' ,-. -
,.. ..
,1;,;,1 ..-.;_ .
;";''1.,: ;',-
......
'if. .'
..." '.
.. .. ,.
.

. ," ',..',
-";1'-''':,'
.. ,,; ",",'.-,'".
.. ,,"
, /
, ..:t; ...... , .-t , ..
..:;d< .<:
, ,.. : ...,
.' _;. ,..<!.:":.,:,, ,
'. ",'" ki', "" ...." I,
"";'l' ,
i .. '-'''cI'j'': ."
,'
c
,:,'!X ':--t';". ".
",.' .,,, .,...
_<'/....... :." _:.'... r'
:;j"" .':;..-1. ,. .'
, .\oG?,c
'i:_',;; ,:'
'""-1';'"
!:.
j'-,,,

""w"-'t -.1. ' ..

': 'l.'';1i.'t .;[->-:.;.."
. ,.;rl1i1!i ",'-
"fMTfiI .
, ..1' ::il
"\"", ,,', ..
..,-'.,., . '
.. '':iJ,i',t-""
.. I.. ,.> '".
'':'''''\'
,'." B.
",$0::: ,:!",."" " ,
': ,;. :',
"?.-, ,
:'i;::':"." ,.
,
:';;: t",;;.;.:._ .
.r ." <. .... ,
.
'
,;/ ...., ",',
, _,.l,:,l.',to.. ,:w,' ).,'
,... G-,.;,' ...
?r.....
_>".,.,'nI: . J"'.1.;.\
,
'.' "h
5
if=- __ , . "
'
'\""fC' ",",n,,\::
-'. r. '.' '
.' . -:;{; ,:" '. .
". "
......, r 11',.'
,"..""", .l> I'
!
'>l.t'U''',
r,v, " .
... ,'" .,./\., ,
,.. :r,.,", ':"",
"'..
';-,
.'l'P':.

,::;';',','
"
""j'
_,,"
.!<"-..:.
'::';1''-

: ','.
.,'1, '!' :.
- ''!.).'':
.. - ..
:0J";::.'; .,"di,:'
-."'lr ..,.'
... '.. ., ... .-
, ,,';I'ti! f,''' "
'?h:';&",' ."

.".. . '." ." "- :',,';' - ,,' .
... :t:9: .
-.'" _.' l
, :';',',li5P'
1..
PC 82: memoria
..,
NO
/h.Il?
"
prell.Uo
'"
"
B memorl.
dlra.mnlon.

NO

Sl
CDrT" ..

lnnrimento
Elhnlnnione
:ffl0nu,m"ote
'" '"
d.U'I,trudon.; ... I,Uch..;
<:&10010 del pro.ecu%lone
PC _Item_tty,,: ..IIU .l&1Il
Pn.U.vo ddl'&!tn
dullnaziolle
c."<I1,"
del.
EX
m
UnJaltra importante diHerenza equeUa relativa alIa gestione delle diramazioni
non presenti nel BTB. Per queste si utilizzano metodi di predizione statica (come nei
processori della famiglia P-6 dell'Intel). Ad esempio: si da. predizioce di successo aIle
diramazioni.ali'indietroj si predice fallimento per diramazioni in avanti.
Figura 6.42 Trattamento di una istruzione in presenza del branch-target buffer. Le tre
fasi IF, ID ed EX si riferiscono ad una generica istruzione. 10 schema. assume che: (1) 1a
valutazione della condizione di diramaziooe sia. effettuata. in ID; (2) i1 calcolo dell'eventuale
indirizzo di destinazione della diramazione sia effettuato in EX. 5e l'istruzione e presente
in BTB) e possibile prelevare l'istruzione di destinazione attraverso Pindirizzo fornito da!
campo a cib preposto. A seconda della condizione di diramazione valutata in fase rD,
nella fase EX dell'istruzione di diramazione la logica di CPU: (a) continua l'esecuzione
senza. alcuna. penalizzazione; (b) elimina. l'istruzione dalla. coda, aggiorna. BTB e preleva
Pistruzione dovuta.. Nel caso in cui non si abbia hit (del PC corrente), Pistruzione .pub
ancora essere una diramazione. In questa caso lao diramazione viene inserita in BTB con la
statistica corrispondente all'esito di questa prima esecuzione. Nell'escguire per Ia. prima volta
di diramazione PUQ essere tentata una. previsionc secondo una logica predefinita
IF
)l
262 Capitola 6
comunque un'uscita dalla connale sequenzialita delle istruzioni, e il tempo di accesso
. alla memoria (che sia la memoria cache 0 quell a principale) puo' essere tale' da non per
mettere il prelievo della destinazione prima della conclusione della Case ill. Talvolta,
per superare questo problema, viene aggiunto al BTB un quarto campo contenente
alcuni relativi alia destinazione, in modo da evitare i1 loro fetch da memoria:.
Questa soluzione, presente solo nei BTH piu avanzati, rende immediatamente dispo-
nihile Pistruzione di destinazione, eliminando cosi il ritardo dovuto all'accesso aHa
memona.
I
I
,I
I
I
I
I
-I
I
I
I
!
-
-
-
-
-
-- 1
264 Ca.pitolo 6
6.11.3 L'unita per la predizione dei salti condizionati
del Pentium
II BTB del Pentium hene traccia delle ultime 256 istruzioni di salto ed eorganizzato
come memoria cache associativa a quattro vie (vedi Figura 6.43).
I
1
I
\
\
1
j
1
\
I
,
I
\
I
1
\
265 La pipeline
Ciascuno dei 64 elementi (per ogni via) del buffer contiene:
Se l'istruzione non epresente in BTB, 130 Iag;icadel Pentium assume che fa dira-
mazione non si verifichera. e continua a prelevare Ie istruzioni sequenzialmente. Si
nati che questa ela scelta pili conveniente. Tnfatti, se l'assunzione'viene conferma:'
ta non resta altro cia fare e l'istruzione non viene inserita in BTB. Come risultato
i1 BTB contiene istruzioni di diramazione che hanno effettivamente dato luoga
a un salto la prima volta che il controllo epassato su di esse. Se la previsione
eerrata, anche in questa CasOI si ha un ritardo di almeno tre cicli di clock. 1;..a
nuova istruzione di salto entra in BTB, corredata di tutte ie informazioni neces-
sarie (compresi i due bit di predizione), sostituendola a un'altra gia presente nel
caso in cui it buffer fosse pieno, 1a pipeline viene svuotata e riparte it caricamento
dalla destinazione carretta.
L'algoritmo di predizione eottenuto attraverso un contatore a 2 bit a saturazione,
analogo a queUo mostrato in Figura 6.39. All'entrata di una diramazione in BTB
(quando per la prima Yolta ha successo) 10 stato della predizione viene messo a 10.
,. Se l'istruzione epresente in BTB, il del campo storia
cazion.e per predire l'effetto delPistruzione. Se la predizione edi nqn saltare, it
caricamento delle istruzioni continua i.r\ sequenza nel prefetch buffer in
altrimenti il prefetch buffer disponibile comincia a 9f..icare
zo di destinazione salto (questa egia in cache e quindi non richied.e perdita
di tempo per essere calcalato) e i due di storia. Se Ie
previsioni del BTB sono corrette non si verifi,cano conqizioni di stallo, In caso
viene svuotata pipeline relativa al. percorso dimostratosi inappro-
priato e riprende il caricaniento deUe istruzioni lungo il percorso corretto, con un
ritardo minimo di 3 cieli di clock se l'istruzione ein U e di 4 se e in V (vedere
pili avanti) .
3. le statistiche di predizione: la predizione dell'esito della diramazione e ricavata
grazie a un predittore a 2 bit.
2. gli indirizzi delle destinazioni a esse associate: si rnemorizzano solo gil indirizzi
di diramazione effettivaj in caso di fallirnento si preleva l'istruzione sequenziale il
cui indirfzzo egia disponibi1ei
1. gli indirizzi delle istruzioni di controllo del jlusso esegtl-ite: gli indirizzi, utiliz-
zati come TAG di accesso ana tabella, sono memorizzati parzialmente, ossia
considerandone solo i bit meno significativij
A un data momento, il prefetch che e in funzione carica sequenzialrnente le
truzioni dalla cache istruzioni. Se entra un'istruzione di salto condizionato, si attiva
il meccanismo di predizione. L'istruzione in que5tione puo trovarsi 0 meno nel BTB
(a. seconda cbe un TAG contenga 0 no il suo indirizzo).
"
"': ,.
'! i
.' ..,r,'';'
.',: .,,' ..
,;: J,:
'.
",-,' ,
..r)}
::
,
'. "Ji' >
.,:' ...
'\" ,.



-.
.
;t':,
, "., ,
'-I !
11"<' ,c '.',
r".'
,fr' .'," '
'I .{:;'::.
, _ .. ,'"
.. :=.llil .
" . " .
'. :r. : \ 'r:
.)1; ',: '
'
: " :';',1
1
; ,.' "
" ;,..,
. .. ;....
. "J!;
". , ,
.. 1 ','
..... ,:' ,.
',-

,". '''', '.
'
-', ',' ,.
. ,,,, :
- .,... <!.:\: .-,',
" ' ., .:.:1j .
.,,: ....- .., ..
. ',..;"" ".
.. ".\
.. '.",

,."" ' . "
....;'.
,.,.';t ,; .. '
.:.. -.,..
,'i.-.... , .
.;",H '. ""
.. ,"
I
.... c.... ,...
. ",1,1' ,,"
',. c,',"
.,.:)'1:
, .,.' , .'
-" .'!.' . .' '.
........ 1
. ' '
.;.:.'
'".;\.'. ' j
" '.1' ,'"
i"" .
" ,,"" .
1'" .. ' .. ..
., T'
'.' ,r--, i
" . .._. ' ..
.; '"
.,'-'...
.., .., ..'
:"i'" .......
., ," ' ",
.. ;' .
", .;....:;' -:-,..,; :":"
::'..,:,
",'" ", .:.".
,,"',''';'' ""',
......,.
...' .
., ... '. - ,,'
. (! (......
,\,,"
.......,.,.' ."
, ::;:i.i"i;;' ,,::,,:.,.:.
" '. ..' .
" 1,'\' :,'1',.',
.. .. "
'" , .. I",') "
0;";",'
,,; .' \.'
'. "" , . "
'. ..
. ,.' ,.. '
.',' '," .
.... \.. ..; :.' ..;.
.' "c,"': "\ i
, .......
. '\ -::".,:;
'C',," /....
..
, ' ' ','
,:.'
;. ,,:,'
... ?....... ". ,.,
.,
'i'''1!:
..
- '
",'-;':>':
;'}.'"'i" L,
.. ' '
,-
"
J: ,:;;' ':'
,.... ' ,
l
.,
\, .
Indiriui di Bit di
Destin.... ion. Predi'Z;on.
I I
I I
I I
,
, '.
.
.
l
L
bit 0-5 TAG (bit 6_31)
11111
000010
HU10
000001
Figura 6.43 ETB a quattro vie del Pentium. 11 campo a sinistra bala funzione di TAG per
130 ricerca associativa nella cache. La "storia
ll
esu due bit. 11 5TE tiene traccia delle ultime
. 256 istruzioni di saIto condizionato. I bit 0-5 delPindirizzo di riferimento della diramazione
sono utilizzati per accec;iere a una. delle 64 entrate per ciascuna via. I bit sana invece
utitizzati come TAG. La. sostituzione degli elementi del BTB e regolata da. un algoritmo di
sostituzione pseudo casuale che elimina un elemento quando si banno quattro elementi e un
quinto e in arrivo con gli stessi bit 0-5.
Gestione del BTB Si osservi che Ie entrate del BTB che hanno maggiore utilit"
sana queUe che permettono di prevedere con successo diramazioni can esito positivo.
Entrate relative a. diramazioni che hanp.o raramente esito positivo, ache vengono
incontrate di rado neU'esecuzione del programma
l
hanna invece scarsa utilita.
Ua.lgoritmo LRUI d.i cui 5i eampiamente pal;lato nei capitoli dedicati alIa memo
ria, eil naturale candidato anche per 1a gestione del BTB. Vordinamento LRU tende
a jndicare quali diramazioni hanno maggiar prababilita di essere incontrate; Ia staria
della diramazione indica invece 1a probabilita che esse hanno .di avere successo.
Un buon metodo nella determinazione delPelementa del buffer da eliminare uti
lizza I'a1goritmo MPP (Minimum Performance Potential) [PS93), In base a esso viene
eliminata l'entrata con minimo potenziale d.i prestazione, ossia quella in cui iI
dotto tra la probabilita. cii riferimento e la probabUita di esito positivo eminima. La
probabilita. di riferimento (che indica l'elemento del BTB con minor probabilita. di C5-
sere incontrata) eottenuta empiricamente come funzione dei bit LRU. La prababilita
che una diramazione abbia esito positivo eottenuta dalle statistiche di predizione.
264 Ca.pitolo 6
6.11.3 L'unita per la predizione dei salti condizionati
del Pentium
II BTB del Pentium hene traccia delle ultime 256 istruzioni di salto ed eorganizzato
come memoria cache associativa a quattro vie (vedi Figura 6.43).
I
1
I
\
\
1
j
1
\
I
,
I
\
I
1
\
265 La pipeline
Ciascuno dei 64 elementi (per ogni via) del buffer contiene:
Se l'istruzione non epresente in BTB, 130 Iag;icadel Pentium assume che fa dira-
mazione non si verifichera. e continua a prelevare Ie istruzioni sequenzialmente. Si
nati che questa ela scelta pili conveniente. Tnfatti, se l'assunzione'viene conferma:'
ta non resta altro cia fare e l'istruzione non viene inserita in BTB. Come risultato
i1 BTB contiene istruzioni di diramazione che hanno effettivamente dato luoga
a un salto la prima volta che il controllo epassato su di esse. Se la previsione
eerrata, anche in questa CasOI si ha un ritardo di almeno tre cicli di clock. 1;..a
nuova istruzione di salto entra in BTB, corredata di tutte ie informazioni neces-
sarie (compresi i due bit di predizione), sostituendola a un'altra gia presente nel
caso in cui it buffer fosse pieno, 1a pipeline viene svuotata e riparte it caricamento
dalla destinazione carretta.
L'algoritmo di predizione eottenuto attraverso un contatore a 2 bit a saturazione,
analogo a queUo mostrato in Figura 6.39. All'entrata di una diramazione in BTB
(quando per la prima Yolta ha successo) 10 stato della predizione viene messo a 10.
,. Se l'istruzione epresente in BTB, il del campo storia
cazion.e per predire l'effetto delPistruzione. Se la predizione edi nqn saltare, it
caricamento delle istruzioni continua i.r\ sequenza nel prefetch buffer in
altrimenti il prefetch buffer disponibile comincia a 9f..icare
zo di destinazione salto (questa egia in cache e quindi non richied.e perdita
di tempo per essere calcalato) e i due di storia. Se Ie
previsioni del BTB sono corrette non si verifi,cano conqizioni di stallo, In caso
viene svuotata pipeline relativa al. percorso dimostratosi inappro-
priato e riprende il caricaniento deUe istruzioni lungo il percorso corretto, con un
ritardo minimo di 3 cieli di clock se l'istruzione ein U e di 4 se e in V (vedere
pili avanti) .
3. le statistiche di predizione: la predizione dell'esito della diramazione e ricavata
grazie a un predittore a 2 bit.
2. gli indirizzi delle destinazioni a esse associate: si rnemorizzano solo gil indirizzi
di diramazione effettivaj in caso di fallirnento si preleva l'istruzione sequenziale il
cui indirfzzo egia disponibi1ei
1. gli indirizzi delle istruzioni di controllo del jlusso esegtl-ite: gli indirizzi, utiliz-
zati come TAG di accesso ana tabella
,
sono memorizzati parzialmente, ossia
considerandone solo i bit meno significativij
A un data momento
,
il prefetch che e in funzione carica sequenzialrnente le
truzioni dalla cache istruzioni. Se entra un'istruzione di salto condizionato, si attiva
il meccanismo di predizione. L'istruzione in que5tione puo trovarsi 0 meno nel BTB
(a. seconda cbe un TAG contenga 0 no il suo indirizzo).
"
"': ,.
'! i
.' ..,r,'';'
.',: .,,' ..
,;: J,:
'.
",-,' ,
..r)}
::
,
'. "Ji' >
.,:' ...
'\" ,.



-.
.
;t':,
, "., ,
'-I !
11"<' ,c '.',
r".'
,fr' .'," '
'I .{:;'::.
, _ .. ,'"
.. :=.llil .
" . " .
'. :r. : \ 'r:
.)1; ',: '
'
: "
:';',1
1
; ,.' "
" ;,..,
. .. ;....
. "J!;
". , ,
.. 1 ','
..... ,:' ,.
',-

,". '''', '.
'
-', ',' ,.
. ,,,, :
- .,... <!.:\: .-,',
" ' ., .:.:1j .
.,,: ....- .., ..
. ',..;"" ".
.. ".\
.. '.",

,."" ' . "
....;'.
,.,.';t ,; .. '
.:.. -.,..
,'i.-.... , .
.;",H '. ""
.. ,"
I
.... c.... ,...
. ",1,1' ,,"
',. c,',"
.,.:)'1:
, .,.' , .'
-" .'!.' . .' '.
........ 1
. ' '
.;.:.'
'".;\.'. ' j
" '.1' ,'"
i"" .
" ,,"" .
1'" .. ' .. ..
., T'
'.' ,r--, i
" . .._. ' ..
.; '"
.,'-'...
.., .., ..'
:"i'" .......
., ," ' ",
.. ;' .
", .;....:;' -:-,..,; :":"
::'..,:,
",'" ", .:.".
,,"',''';'' ""',
......,.
...' .
., ... '. - ,,'
. (! (......
,\,,"
.......,.,.' ."
, ::;:i.i"i;;' ,,::,,:.,.:.
" '. ..' .
" 1,'\' :,'1',.',
.. .. "
'" , .. I",') "
0;";",'
,,; .' \.'
'. "" , . "
'. ..
. ,.' ,.. '
.',' '," .
.... \.. ..; :.' ..;.
.' "c,"': "\ i
, .......
. '\ -::".,:;
'C',," /....
..
, ' ' ','
,:.'
;. ,,:,'
... ?....... ". ,.,
.,
'i'''1!:
..
- '
",'-;':>':
;'}.'"'i" L,
.. ' '
,-
"
J: ,:;;' ':'
,.... ' ,
l
.,
\, .
Indiriui di Bit di
Destin.... ion. Predi'Z;on.
I I
I I
I I
,
,
'.
.
.
l
L
bit 0-5 TAG (bit 6_31)
11111
000010
HU10
000001
Figura 6.43 ETB a quattro vie del Pentium. 11 campo a sinistra bala funzione di TAG per
130 ricerca associativa nella cache. La "storia
ll
esu due bit. 11 5TE tiene traccia delle ultime
. 256 istruzioni di saIto condizionato. I bit 0-5 delPindirizzo di riferimento della diramazione
sono utilizzati per accec;iere a una. delle 64 entrate per ciascuna via. I bit sana invece
utitizzati come TAG. La. sostituzione degli elementi del BTB e regolata da. un algoritmo di
sostituzione pseudo casuale che elimina un elemento quando si banno quattro elementi e un
quinto e in arrivo con gli stessi bit 0-5.
Gestione del BTB Si osservi che Ie entrate del BTB che hanno maggiore utilit"
sana queUe che permettono di prevedere con successo diramazioni can esito positivo.
Entrate relative a. diramazioni che hanp.o raramente esito positivo, ache vengono
incontrate di rado neU'esecuzione del programma
l
hanna invece scarsa utilita.
Ua.lgoritmo LRUI d.i cui 5i eampiamente pal;lato nei capitoli dedicati alIa memo
ria, eil naturale candidato anche per 1a gestione del BTB. Vordinamento LRU tende
a jndicare quali diramazioni hanno maggiar prababilita di essere incontrate; Ia staria
della diramazione indica invece 1a probabilita che esse hanno .di avere successo.
Un buon metodo nella determinazione delPelementa del buffer da eliminare uti
lizza I'a1goritmo MPP (Minimum Performance Potential) [PS93), In base a esso viene
eliminata l'entrata con minimo potenziale d.i prestazione
,
ossia quella in cui iI
dotto tra la probabilita. cii riferimento e la probabUita di esito positivo eminima. La
probabilita. di riferimento (che indica l'elemento del BTB con minor probabilita. di C5-
sere incontrata) eottenuta empiricamente come funzione dei bit LRU. La prababilita
che una diramazione abbia esito positivo eottenuta dalle statistiche di predizione.
267
>.(5. )
Predizione
s,
La pipeline
di n ..to
re.l ..tivi II
Logica. per
Bit di st&to
I.. tr..nli .. ione.
cOlaO atorico
s, I
Rc_E.ito d.lI.. dir.........;on.
2QSi noti che Ie due equazioni 6.28 e 6.27 corrispondono a una ma.cchina. di Moore. Si noti anche
che il contatore a saturazione a 2 bit e descritto da. una ma.cchina a. stati 6niti formahnente uguale
alia precedente (con l'ovvia differenza. nelle funzioni .x e 6.)
Uno dei punti di forza del predittore adattativo a due livelli ora visto ela possibilita
di scelta tra tre opzioni:
GAg: global history register e global pattern history tablej
PAg: per-address history register e globa pattern histQry tablej
. PAp: per-address branch history table e per-address pattern history table.
Figura 6.44 Struttura del predittore adattativo a 2 livelli ideato da Yeb e Patt. Le 2
k
entrate della PHT sana essenzia.lmente dei semplici predittori a un livello come, per esempio,
il contatore a saturazione a 2 bit. .
prossimo ca.pitola verranna
z, = A(S,)

Capitola 6
'7Per il momento si stanno considerando solo pipeline linea-ri, at
considerati processori superscalari.
28Si pub trattare della storia delle u1time k diramazioni incontrate 0, come vedremo, degli ultimi
k incantri con la stessa diramazione.
dove.\. ela funzione di decisione di predizione.
6,12 Predittore adattativo a due livelli
266


.
.. ,
.,' .... ,.
-;;,"'''", -
r:-. I 1,..,. .
,,.
"' 'j, ..
.
.L1\l i/o( .
.
jV::,.,,,..
if):1>,',;;';
"':
,",I"!i'" .
.. i" ,
Pattern History Table (PHT)
La predizione delle diramazioni diventa tanto piu importante qu"'"to maggiore' la c . s..
...... t: '. ' "''-:\ ' ou, Onel
p:ofondita. della pipeline e il grado di parallelismo della medesima
27
.. In questa genere dsllt.
cit processori, il predittore di diramazioni diviene di vitale importanza in quanta le ."'" B h H'sto R "ste (BRR) 0 0 0 0 i i
errate prediz'on' p 't eli It 'd t' d t' all . 'd' I" "A" ralle I ry egl r.. 0 0 0 1
1 1 ravocano n ar rno 0 eVl ep I, OVil 1 a neceSSlta 1 e lIDmare . /1:." (Per trul... Iuultr..)
dalle pipeline W1 elevato numero di istruzioni. E questa la ragione per cui sono stati .' ROO ... 1 0
. studiati preelittori multilivello come quelli descritti eli seguito. .. He ... H
I
C_Io+
1
' I" 'I' 'I
alia base eli ':ll livel.li e. di utilizzare il primo livello ! 1 1 ... 1 0
per seleZlOnare uno specifico mS1eme di informazlODl stonche legate alIa diramazione in ... '1.:'. 1 1 1 0
oggetto e it livell.o.per la propria [Nai95]. In altre _ f$;;''-'" t 1 1 1 1
parole, al pnmo SI la Ul CUI C1 51 trovaj al secondo Hvello
vengono sfruttate informazlOID pm specifiche volte alIa predizione della diramazione. 1t;.(::::.
In. [YP91] e e di per il primo Hvello di predizione,
la stona delle ultlIDe k diramazlOnI
28
. Per il secondo Uvello si considera invece il
1 I
comportamento che Ia diramazione incontrata ha avuto nelle ultime s volte in cui }" ""
t:- . :.-;.' 'il:..,?:
stata da! corso. storico indicato Del livello.. '" '
. Per esemplO, SuppoDlamo ?er k. = 8, ultlme k d1ramazlOnJ abblano avuto.
11 11100110 (1 mdica drr.amazlOne 0 diramazione fallita). '..
Supporuamo m.oltre s = 6 .e che Ie ultlme 6 che SI epresentata 1a sequenza j-t}!'.'
11100110 la diramazlOlle abbla alternato succeSSl e fallimenti, cosl che il secondo
livello contenga la sequenza 101010. n predittore dara predizione di successo, in Dopo che I. diramazione e ri80lta, BHR viene [atto scorrere a sinistra e l'esito
quanta la sequenza di secondo Uvello contmuerebbe 10gIcamente con un 1. . Vlene messo nella pos1zlone del bit meno slgmficatIVo, talche il contenuto del BUR
. !,.er conservare due di i:l adattativo a due livel- ....Re. Per quanto.si di. state questi
li utIhzza due strutture prmclpali: I1 Branch HIstory (BRR) e la Pattern t4JiJ agglOrnatl (da Se a Se+d III base alIa funzlOne dl translZlOne cil stato 6 che, a partlre
History Table (PHT) I come mostra la Figura 6.44. dai vecchi bit di stato e dall'esito della diramazione, genera i nuovi bit di stat0
29
:
informazioni sulle quali sonG ra.ccolte in rase di , 8
c
+
1
= 6(S
cI
R
c
). (6.28)
del programma e esse 51 agglOrna II BRR e i bIt di stato relativi al .. .". ..
corso stonco. n BHR eW1 reglstro a scorrimento di k bit i cui contenuto indica gli :.:,;l';:; . '. 81 osserVI che quest9 tIpo dl prerlLttore 51 adatta dmanucarnente al programma
esiti delle k dir.amazioni pill (1 per successo
,
0 per dirarnazione non effettiva). in esecuzi?ne: due anche C?O.10
Dato il ha k bit, CI possono essere fino a 2
k
combillazioni differenti
,
,,' corso stonco (bit dl hve.Bo), no? e. detto. c?e tl contenuto III
ovvero 2.1: differentl corsi storici. Per ciascuna di queste combinazioni, esiste una' Un confronto tra I d1verSI scheIDl dI. predlzlone tratto da fYP92] e nportato III
Ogni d.ella l'esito di dirama Tabella 6.10.
Zlone ultlDle s volte ill CUI Ie precedentl k dlramazlom sana state rappresentate
dallo specifico contenuto del BHR. ..... " ""
AI momenta della predizione dell'esito di una diramazione, il contenuto del BHR, .:"J';,'!j!iw-; .6.12.1 ReallzzazlOUl alternative del pred1ttore a due livelli
denotato can Rc-IcRc_k+I ... R
e
-
11
viene utUizzato per indirizzare la PHT. I bit di
stato SCI at corso <:he si trovano indirizzata da
BHR, serVOllO mfine per la predlzlone. La predlZlone della duamazlOne edata da
"'.: .";Jil
". , .. ".;10. "'\'" ",
(6.27)
..,. ....
'';-.:, . (f!'';';':''''

, -. '."r,. '\'-<

'-" \:", ..,:.;
'. :
." .. ", .., '
,. ", ",.
, . " ....:i . ; .", .':
.' ..._"t,..
" '''''-,'
, '. , .
,.". ,-:' ".
.,.,., .J
ff:fi;;'::'
.."',,
1' " ."'. ><:,. . ..., , ..
. . .... .....
;;1;11"
', .. , ..
h'l '. .....
.: ;..
\
\
I
\
!
I
\
\
\
I
\
\
1
\.
267
>.(5. )
Predizione
s,
La pipeline
di n ..to
re.l ..tivi II
Logica. per
Bit di st&to
I.. tr..nli .. ione.
cOlaO atorico
s, I
Rc_E.ito d.lI.. dir.........;on.
2QSi noti che Ie due equazioni 6.28 e 6.27 corrispondono a una ma.cchina. di Moore. Si noti anche
che il contatore a saturazione a 2 bit e descritto da. una ma.cchina a. stati 6niti formahnente uguale
alia precedente (con l'ovvia differenza. nelle funzioni .x e 6.)
Uno dei punti di forza del predittore adattativo a due livelli ora visto ela possibilita
di scelta tra tre opzioni:
GAg: global history register e global pattern history tablej
PAg: per-address history register e globa pattern histQry tablej
. PAp: per-address branch history table e per-address pattern history table.
Figura 6.44 Struttura del predittore adattativo a 2 livelli ideato da Yeb e Patt. Le 2
k
entrate della PHT sana essenzia.lmente dei semplici predittori a un livello come, per esempio,
il contatore a saturazione a 2 bit. .
prossimo ca.pitola verranna
z, = A(S,)

Capitola 6
'7Per il momento si stanno considerando solo pipeline linea-ri, at
considerati processori superscalari.
28Si pub trattare della storia delle u1time k diramazioni incontrate 0, come vedremo, degli ultimi
k incantri con la stessa diramazione.
dove.\. ela funzione di decisione di predizione.
6,12 Predittore adattativo a due livelli
266


.
.. ,
.,' .... ,.
-;;,"'''", -
r:-. I 1,..,. .
,,.
"' 'j, ..
.
.L1\l i/o( .
.
jV::,.,,,..
if):1>,',;;';
"':
,",I"!i'" .
.. i" ,
Pattern History Table (PHT)
La predizione delle diramazioni diventa tanto piu importante qu"'"to maggiore' la c . s..
...... t: '. ' "''-:\ ' ou, Onel
p:ofondita. della pipeline e il grado di parallelismo della medesima
27
.. In questa genere dsllt.
cit processori, il predittore di diramazioni diviene di vitale importanza in quanta le ."'" B h H'sto R "ste (BRR) 0 0 0 0 i i
errate prediz'on' p 't eli It 'd t' d t' all . 'd' I" "A" ralle I ry egl r.. 0 0 0 1
1 1 ravocano n ar rno 0 eVl ep I, OVil 1 a neceSSlta 1 e lIDmare . /1:." (Per trul... Iuultr..)
dalle pipeline W1 elevato numero di istruzioni. E questa la ragione per cui sono stati .' ROO ... 1 0
. studiati preelittori multilivello come quelli descritti eli seguito. .. He ... H
I
C_Io+
1
' I" 'I' 'I
alia base eli ':ll livel.li e. di utilizzare il primo livello ! 1 1 ... 1 0
per seleZlOnare uno specifico mS1eme di informazlODl stonche legate alIa diramazione in ... '1.:'. 1 1 1 0
oggetto e it livell.o.per la propria [Nai95]. In altre _ f$;;''-'" t 1 1 1 1
parole, al pnmo SI la Ul CUI C1 51 trovaj al secondo Hvello
vengono sfruttate informazlOID pm specifiche volte alIa predizione della diramazione. 1t;.(::::.
In. [YP91] e e di per il primo Hvello di predizione,
la stona delle ultlIDe k diramazlOnI
28
. Per il secondo Uvello si considera invece il
1 I
comportamento che Ia diramazione incontrata ha avuto nelle ultime s volte in cui }" ""
t:- . :.-;.' 'il:..,?:
stata da! corso. storico indicato Del livello.. '" '
. Per esemplO, SuppoDlamo ?er k. = 8, ultlme k d1ramazlOnJ abblano avuto.
11 11100110 (1 mdica drr.amazlOne 0 diramazione fallita). '..
Supporuamo m.oltre s = 6 .e che Ie ultlme 6 che SI epresentata 1a sequenza j-t}!'.'
11100110 la diramazlOlle abbla alternato succeSSl e fallimenti, cosl che il secondo
livello contenga la sequenza 101010. n predittore dara predizione di successo, in Dopo che I. diramazione e ri80lta, BHR viene [atto scorrere a sinistra e l'esito
quanta la sequenza di secondo Uvello contmuerebbe 10gIcamente con un 1. . Vlene messo nella pos1zlone del bit meno slgmficatIVo, talche il contenuto del BUR
. !,.er conservare due di i:l adattativo a due livel- ....Re. Per quanto.si di. state questi
li utIhzza due strutture prmclpali: I1 Branch HIstory (BRR) e la Pattern t4JiJ agglOrnatl (da Se a Se+d III base alIa funzlOne dl translZlOne cil stato 6 che, a partlre
History Table (PHT) I come mostra la Figura 6.44. dai vecchi bit di stato e dall'esito della diramazione, genera i nuovi bit di stat0
29
:
informazioni sulle quali sonG ra.ccolte in rase di , 8
c
+
1
= 6(S
cI
R
c
). (6.28)
del programma e esse 51 agglOrna II BRR e i bIt di stato relativi al .. .". ..
corso stonco. n BHR eW1 reglstro a scorrimento di k bit i cui contenuto indica gli :.:,;l';:; . '. 81 osserVI che quest9 tIpo dl prerlLttore 51 adatta dmanucarnente al programma
esiti delle k dir.amazioni pill (1 per successo
,
0 per dirarnazione non effettiva). in esecuzi?ne: due anche C?O.10
Dato il ha k bit, CI possono essere fino a 2
k
combillazioni differenti
,
,,' corso stonco (bit dl hve.Bo), no? e. detto. c?e tl contenuto III
ovvero 2.1: differentl corsi storici. Per ciascuna di queste combinazioni, esiste una' Un confronto tra I d1verSI scheIDl dI. predlzlone tratto da fYP92] e nportato III
Ogni d.ella l'esito di dirama Tabella 6.10.
Zlone ultlDle s volte ill CUI Ie precedentl k dlramazlom sana state rappresentate
dallo specifico contenuto del BHR. ..... " ""
AI momenta della predizione dell'esito di una diramazione, il contenuto del BHR, .:"J';,'!j!iw-; .6.12.1 ReallzzazlOUl alternative del pred1ttore a due livelli
denotato can Rc-IcRc_k+I ... R
e
-
11
viene utUizzato per indirizzare la PHT. I bit di
stato SCI at corso <:he si trovano indirizzata da
BHR, serVOllO mfine per la predlzlone. La predlZlone della duamazlOne edata da
"'.: .";Jil
". , .. ".;10. "'\'" ",
(6.27)
..,. ....
'';-.:, . (f!'';';':''''

, -. '."r,. '\'-<

'-" \:", ..,:.;
'. :
." .. ", .., '
,. ", ",.
, . " ....:i . ; .", .':
.' ..._"t,..
" '''''-,'
, '. , .
,.". ,-:' ".
.,.,., .J
ff:fi;;'::'
.."',,
1' " ."'. ><:,. . ..., , ..
. . .... .....
;;1;11"
', .. , ..
h'l '. .....
.: ;..
\
\
I
\
!
I
\
\
\
I
\
\
1
\.
Global History Ragister (GHR)
Glob,,1 Pa.ttern
Table
(GPHT)

Predittore con organizzazione GAg E l'organizzazione meno complessa, rna


forse anche quella di pili difficile giustificazione.
)
r
J
)
r
I
r
1
I
!
I
I
I
Global Pa.ttern
History Table
(GPHT)
Per-addreu Bra.nch
History Table
(PBHT)
Indice
.
'\
\:
Predittore con organizzazione PAp Per rimuovere completamente Ie interfe-
renze in entrambi i livelli, ad ogni diramazione si fa corrispondere un BHR e una
PHT) come mostrato in Figura 6.47. L'insieme delle n PHT (n eanche il numero di
BRR) echiamato Per-address Pattern History Table (PPHT) ..
In questa modo a ogni diramazione incontrata corrispondono un BHR
,
nel quale
vengono memorizzati gli ultimi k esiti della diramazione stessa
,
e la PHT ad. esse
associata. I k bit del BHR vengono utilizzati per indirizzare l'entrata della PHT che
fornira la statistica di predizione.
Figura 6.46 Realizzazione PAg del predittore a 2 livelli. Per ottenere un'accuratezza media
del 97 % si deve utilizzare una PBHT composta da 512 registri a 12 bit e una GPHT con
2
12
contatori a saturazione a 2 bit (2
12
=4.096).
La. pipeline 269
L'esito di ogni diramazione aggiorna it BHR associato alia .diramazione stessa e
una entrata della GPHT. La predizione ebasata sulla partieolare storia della dira-
mazione e sui bit di state presenti nell'entrata della. GPHT inmcizzata cia! contenuto
del BHR. In questa, modo le informazioni storiche di ogni diramazione sono separate)
anche se
,
visto che ogni BHR accede alIa stessa GPHT (vedi Figura 6.46), si pre-
dice un comportamento analoga a differenti diramazioni che abbiano 10 stesso corso
storieD.
Predittore con organizzazione PAg . Per ridurre l'interferenza at primo Hvella,
. a ogni diramaziane si assada uno specifieo BHR. In questa modo si ottengono una
serie di registri contenuti in una tabella) la Per-address Branch History Table (PBHT),
nella quale si accede a ogni entrata tramlte gli indirizzi delle istruzioni di diramazione.
..-,.


"'-"'I
...." "."
,
",,"'"
".'':?'
.',;..! '.
., t. .
"'.".
';."'!<!;,

,
,:.. ', t'", .
.,'; .,.
",;"
'>:lJ"'I,l'" .";
.:.:>:.1:;'\ '.
, .."- .
, ' ,
" ,}i ity.1 ,;';' "'r;
.;",:;:;Il ,t,
, .. ,:\' 't
<'"

... ' .'

...\;,." ,
.",": ',' ,.


". .. ,',

. ,.,. ' .
.....
r... (\l, .-,.,,"
," ".


.. t' '.. " ..
. :<'.':;,"'i ,
..,.\'."t" '.,'." '
".:'..;>",.....",.'

r:'" ,
.
',: ,';:;r"",', ".
..c, ....,...
"" .F"';'"';'-'
, ,.
. ';

:q!';;;:.,hil? ,"
' .. ''''''' ' , ''- ,
"-;,,1.\:]
. ".. ,':,,\\7' t
: ,
.; . ,'''' . " ",
,'J;",ilt:."", .J ,'} .:; "

r
,
"
-..,,t,:C<.. .;'""
' .1 ,j,;!jV;!:""
..tt!'1:1 ,.,. Jr', .

'


''-''If'.',,,' "

, . j,.J::';:""
--' .i""'""lJ, "," ',.,'t,
':',1_,',:;':'.'

... . ,,':': .:..
:t
J
.;:.:,/,
".

:
,,ti'.: "
\': {;'k::'>:
..,',. ' I' .-' .... , ,.
:
. ..
.' ;

,
, :;+1(}-, ,
' .. '. .
'''tr ,.' "..
.::..-
....
"',>"

..-""','" ."". "r-" "".'. ,..
'''. ,".,.:.,.
"l.;t .......
_,;,',:,-:'
'''1.'''''' ]"'_'1' .
. ":Ij,,,!,. ,"."
97 %
93 %
89 %
62,5 %
Accuratezza
Predittore
Predittore adattatlvo a 2 livelli
Contatore a saturazione (2 bit)
Predittore Last Time (1 bit)
Predittore Always Taken
268 Capitola 6
Figura 6.45 Realizzazione GAg del predittore a 2 livelli. Dalle simulazioni di Yeh e Patt
[YP91] erisultato che
,
per ottenere un'accuratezza media del 97%, si deve utilizzare come
GHR un registro a 18 bit e nella PHT 2
18
contatori a saturazione a 2 bit (218 = 262.144 !).
Tabella 6.10 Accuratezza di predizione di alcuni predittori camuni fYP91J. Questi dati
mostrano come con il predittore a 2 livelli si riescano a ottenere Ie migliori prestazioni.
D'altra parte, gia con il semplice contatore a saturazione si riescono ad ottenere risultati eli
tutto rispetto che pen), nei processori piu avanzati, non sono sufficienti.
Nel GAg (come rnostrato in Figura 6.45) troviamo un unieo Global History Re-
gister (GHR) e un'unica Global Pattern History Table (GPHT). Tutte Ie predizioni
sono basate sullo stesso GHR e la stessa GPHT che vengono aggiornati han appena
si risolve la diramazione.
n grosso svantaggio di questa sempIice realizzazione eche si presentano interfe-
renze sia al primo sia a1 secondo livello; Ie prime si verificano quando il contenuto
storieo del BRR viene mutato da differenti diramazioni
,
Ie seconde quando due 0 pili
sequenze di diramazioni hanna la stessa storia.
Per ottenere delle buone prestazioni da questa organizzazione del predittore e
necessaria utilizzare un BHR can molti bit storici e, di conseguenza un'enorme tabella
PHT
,
Global History Ragister (GHR)
Glob,,1 Pa.ttern
Table
(GPHT)

Predittore con organizzazione GAg E l'organizzazione meno complessa, rna


forse anche quella di pili difficile giustificazione.
)
r
J
)
r
I
r
1
I
!
I
I
I
Global Pa.ttern
History Table
(GPHT)
Per-addreu Bra.nch
History Table
(PBHT)
Indice
.
'\
\:
Predittore con organizzazione PAp Per rimuovere completamente Ie interfe-
renze in entrambi i livelli, ad ogni diramazione si fa corrispondere un BHR e una
PHT) come mostrato in Figura 6.47. L'insieme delle n PHT (n eanche il numero di
BRR) echiamato Per-address Pattern History Table (PPHT) ..
In questa modo a ogni diramazione incontrata corrispondono un BHR
,
nel quale
vengono memorizzati gli ultimi k esiti della diramazione stessa
,
e la PHT ad. esse
associata. I k bit del BHR vengono utilizzati per indirizzare l'entrata della PHT che
fornira la statistica di predizione.
Figura 6.46 Realizzazione PAg del predittore a 2 livelli. Per ottenere un'accuratezza media
del 97 % si deve utilizzare una PBHT composta da 512 registri a 12 bit e una GPHT con
2
12
contatori a saturazione a 2 bit (2
12
=4.096).
La. pipeline 269
L'esito di ogni diramazione aggiorna it BHR associato alia .diramazione stessa e
una entrata della GPHT. La predizione ebasata sulla partieolare storia della dira-
mazione e sui bit di state presenti nell'entrata della. GPHT inmcizzata cia! contenuto
del BHR. In questa, modo le informazioni storiche di ogni diramazione sono separate)
anche se
,
visto che ogni BHR accede alIa stessa GPHT (vedi Figura 6.46), si pre-
dice un comportamento analoga a differenti diramazioni che abbiano 10 stesso corso
storieD.
Predittore con organizzazione PAg . Per ridurre l'interferenza at primo Hvella,
. a ogni diramaziane si assada uno specifieo BHR. In questa modo si ottengono una
serie di registri contenuti in una tabella) la Per-address Branch History Table (PBHT),
nella quale si accede a ogni entrata tramlte gli indirizzi delle istruzioni di diramazione.
..-,.


"'-"'I
...." "."
,
",,"'"
".'':?'
.',;..! '.
., t. .
"'.".
';."'!<!;,

,
,:.. ', t'", .
.,'; .,.
",;"
'>:lJ"'I,l'" .";
.:.:>:.1:;'\ '.
, .."- .
, ' ,
" ,}i ity.1 ,;';' "'r;
.;",:;:;Il ,t,
, .. ,:\' 't
<'"

... ' .'

...\;,." ,
.",": ',' ,.


". .. ,',

. ,.,. ' .
.....
r... (\l, .-,.,,"
," ".


.. t' '.. " ..
. :<'.':;,"'i ,
..,.\'."t" '.,'." '
".:'..;>",.....",.'

r:'" ,
.
',: ,';:;r"",', ".
..c, ....,...
"" .F"';'"';'-'
, ,.
. ';

:q!';;;:.,hil? ,"
' .. ''''''' ' , ''- ,
"-;,,1.\:]
. ".. ,':,,\\7'
t
: ,
.; . ,'''' . " ",
,'J;",ilt:."", .J ,'} .:; "

r
,
"
-..,,t,:C<.. .;'""
' .1 ,j,;!jV;!:""
..tt!'1:1 ,.,. Jr', .

'


''-''If'.',,,' "

, . j,.J::';:""
--' .i""'""lJ, "," ',.,'t,
':',1_,',:;':'.'

... . ,,':': .:..
:t
J
.;:.:,/,
".

:
,,ti'.: "
\': {;'k::'>:
..,',. ' I' .-' .... , ,.
:
. ..
.' ;

,
, :;+1(}-, ,
' .. '. .
'''tr ,.' "..
.::..-
....
"',>"

..-""','" ."".
"r-" "".'. ,..
'''. ,".,.:.,.
"l.;t .......
_,;,',:,-:'
'''1.'''''' ]"'_'1' .
. ":Ij,,,!,. ,"."
97 %
93 %
89 %
62,5 %
Accuratezza
Predittore
Predittore adattatlvo a 2 livelli
Contatore a saturazione (2 bit)
Predittore Last Time (1 bit)
Predittore Always Taken
268 Capitola 6
Figura 6.45 Realizzazione GAg del predittore a 2 livelli. Dalle simulazioni di Yeh e Patt
[YP91] erisultato che
,
per ottenere un'accuratezza media del 97%, si deve utilizzare come
GHR un registro a 18 bit e nella PHT 2
18
contatori a saturazione a 2 bit (218 = 262.144 !).
Tabella 6.10 Accuratezza di predizione di alcuni predittori camuni fYP91J. Questi dati
mostrano come con il predittore a 2 livelli si riescano a ottenere Ie migliori prestazioni.
D'altra parte, gia con il semplice contatore a saturazione si riescono ad ottenere risultati eli
tutto rispetto che pen), nei processori piu avanzati, non sono sufficienti.
Nel GAg (come rnostrato in Figura 6.45) troviamo un unieo Global History Re-
gister (GHR) e un'unica Global Pattern History Table (GPHT). Tutte Ie predizioni
sono basate sullo stesso GHR e la stessa GPHT che vengono aggiornati han appena
si risolve la diramazione.
n grosso svantaggio di questa sempIice realizzazione eche si presentano interfe-
renze sia al primo sia a1 secondo livello; Ie prime si verificano quando il contenuto
storieo del BRR viene mutato da differenti diramazioni
,
Ie seconde quando due 0 pili
sequenze di diramazioni hanna la stessa storia.
Per ottenere delle buone prestazioni da questa organizzazione del predittore e
necessaria utilizzare un BHR can molti bit storici e, di conseguenza un'enorme tabella
PHT
,
, \
' .

-
-

I
)
1
1\
I
\
\
I
I
!
I
\
\
210 Capitola 6
Per-.d<J.... PaH<lTn
Hi.tory T.ble
(PPHT)
rU-&(lCnn lUanc:n
Hinory Tabl.
(PBHT)

In.dice
,
----------
.
I-'
.
I-'
/
Figura 6.47 Realizzazione PAp del predittore a 21ivelli. Per ottenere un'accuratezza media.
del 97 % si cleve utilizza.:re una PBHT composta da 512 registri a. 6 bit e 512 tabelle PHT
ciascuna deUe quali COD 64 contaton a. saturazione a. 2 bit (per complessivi 32.768 cantatori).
6.13 Le interruzioni
Riprendiamo ora 1a questione delle interruzioni, la cui gestione si complica ulterior-
mente nel funzionamento in pipeline. Diversamente da quante fatto al Capitola 5, in
questa sede enecessaria trattare anche Ie eccezioni.
6.13.1 Il concetto di interruzione precisa
Al momento in cui si verifica un1interruzione, Bono presenti in pipeline piu. istruzioni,
la cui esecuzione puo essere completata 0 rinviata per servire I'interruzione. Con-
sideriamo iil particolare il caso d.i un'eccezione e prendendo per esempio quclla che
si manifesta a causa della divisione per zero: essa non puo che; presentarsi in fase
EX. Per passare alia routine <Ii servizio occorre stabilire delle regole che permettano
di salvare 10 stato di macchina, in modo da riprendere senza scompenso I'esecuzione
del programma, al termine del servizio dell'eccezione. Nel caso specifieo, la solu-
zione piu logica CODsiste nel portare a termine Ie istruzioni ehe in pipeline sono piu
avanti d.i quella che ba determinato Peccezione e svuotare la pipeline di queUe che la
seguono, avviando la procedura (hardware) che portera al passaggio alia routine. di
servizio. Analogo problema si presenta con Ie interruzioni esterne} con la differenza
'I
"
',0;> :,>".
%, ,'''',
.' n, . " "
c' ,. "" '

',!
". . "
"t;r, ,,',
,;'.:,}
: ,
, ' ',,-
: ,"'"
";', , ,
,,'
,
;"l'C
'.
',,,
;''', , ..
<t; ..
.i...
!'!.
w
-
.. ...

'.,1'"
-'
,j:,
;,. i.',
.. ,J."
';
::':,:: ,: :'
':,-1:; ,,

,.
-


,Jii::{ :'i:,
,"':.!
.'
. ....
"
"
:, '.
,:,
> ' ..J), '
"'1"
'. ,\
., : ,
,,:..;,,; ."";:'
''':;''1,. '.
'.' ',1:i-\:' .1,:," J '.
, 'i ' 'i'? :
,"':
"", .
':'jj., ,'t;:-
- j . .
.'. . ,( "d'.
<,,..,.
'.; - .'
;'-',::'
'-'(';" ,
-' . "; ',.' ...
';',';'.:,::;.:
i'l

" .....;. ' ,
,-"">0"" 'J .. ' .. '
..-..... "". I '
':;::',:
"';Fj'.,
'''.. J
: -::, '
... ,'.
_.
-,.
i
I
.,
"'" .' "
';"1.. ' ,
. , "'::
.... .',', __
:'::;:<."
_'! .
,';.... ':"
" ,: ';" ":,
. ,',
.'. ", . "
"I;, ,I,'
.;,;;- : " ';"
,,&-;
,
, /"
"
,;,1,1
.. /'
',.;'1 '.'"
, ..
.. ...".
-
' .. , ,
, ". -" '
". "
',' "
'''' .
:%,,:!:' "::'.
:'
, 'l1'i
',--\, ,',.;. .
.. ' ,
" ,

.': '';:F., ,,"f(;.':,
...",. . .
,., \,.:

"'. ;'''.<1'1, ,.!fVi, "
La pipeline 271
che queste sono asincrone rispetto all'esecuzione del programma, quindi esse possono
manifestarsi in qualunque stadio si trovi una data istruzione.
La gestione delle interruzioni diviene aneora piu problematica qualora la pipeline
si. compost. d. pill unit" funzionali multiciclo ([HP93] e [WE93]) , come quelle dis-
cusse al Paragrafo 10.1. Vintroduzione nella pipeline di unita funzionali multicic10
parallele porta con se due ulteriori complicazioni, che non sono presenti nelle pipeline
lineari come queUe fin qui studiate, Puo infatti accadere che Ie istruzioni modifichino
10 stato del proeesso in un ordine diverso da queUo definito dall'esecuzione sequenziale
(detta anche architetturale) del programma. Se per esempio un'istruzione complessa
A (quale un prodotto in virgola mobile) eseguita cia una istruzione piu semplice B
(tipo una somma tra interi) e se A e B vengono eseguite in parallelo su unita. diverse,
epossibile che B venga completata e modifichi 10 stato prima di A, Oral se durante
l'esecuzione di A si verifica un'interruzione, il programma puo venire interrotto in
uno stato non consistente con il modeUo di funzionamento sequenziale, poiche B puo
aver gil modificato i registri interni del processore 0 13 memoria Si parla in
questa caso di interruzione imprecisa.
Al contrario un'interruzione edetta'precisa se lascia 1a macchina in uno stato
consistente col modelIo sequenziale di esecuzione del programma; per essere pili spe-
cifiei, 10 stato salvato al momento delI'interruzione (che vena utilizzato per ripristinare
iI processo) cleve verificare Ie seguenti condizioni.
1. Tutte Ie istruzioni preeedenti al PC salvato (relativo all'istruzione interrotta
3
0)1
hanno completato l'esecuzione e hanno gia modificato 10 stato della macchina.
2. Thtte le istruzioni successive al PC salvato non devono aver completato l'esecu-
zione, ne aver modifieato in alcun modo 10 stato del processo.
3. L'istruzione interrotta, a seconqa del tipo di interruzione, puo essere stata ese-
guita oppure no; a ogni modo l'istruzione interrotta 0 e stata completamente
eseguita oppure deve essere aneora iniziata: non epossibile quindi ehe 10 stato
salvato eontenga istruzioni solo parzialmente eseguite.
Nella parte ehe segue faremo aneora riferimento alla nostra pipeline lineare e
tratteremo 1e interruzioni precise.
Priorita Un problema con la pipeline e che non solo Ie interruzioni possono
ficarsi in qualunque momenta, rna due a piu interruzioni possono anche rnanifestarsi
contemporamente a eausa della presenza in pipeline di pili istruzioni, che potrebbe
ro determinare un'eccezione nello stadio in cui si trovano. In tal easo la logica di
CPU deve decidere quale interruzione trattare, scegliendo in base alia sua natura
(interruzione esterna, eceezione 0 trappola) e in base agli stadi che hanno rilevato
l'interruzione.
Per trattare Ie interruzioni precise enecessario stabilire una priorita., che ovvia-
mente privilegera Ie eceezioni che si manifestano in stadi pili avanzati della pipeline
3
0
D'ora in avanti, con la dizione istruzione interT'otta si intende riferirsi 0 a.ll'istruzione la cui
esecuzione viene sospeaa e rinviata a. causa. di un'interruzione eatcrna, oppure a queUa che ha causato
una eccezione 0 che ha generato Wla trappola.
, \
' .

-
-

I
)
1
1\
I
\
\
I
I
!
I
\
\
210 Capitola 6
Per-.d<J.... PaH<lTn
Hi.tory T.ble
(PPHT)
rU-&(lCnn lUanc:n
Hinory Tabl.
(PBHT)

In.dice
,
----------
.
I-'
.
I-'
/
Figura 6.47 Realizzazione PAp del predittore a 21ivelli. Per ottenere un'accuratezza media.
del 97 % si cleve utilizza.:re una PBHT composta da 512 registri a. 6 bit e 512 tabelle PHT
ciascuna deUe quali COD 64 contaton a. saturazione a. 2 bit (per complessivi 32.768 cantatori).
6.13 Le interruzioni
Riprendiamo ora 1a questione delle interruzioni, la cui gestione si complica ulterior-
mente nel funzionamento in pipeline. Diversamente da quante fatto al Capitola 5, in
questa sede enecessaria trattare anche Ie eccezioni.
6.13.1 Il concetto di interruzione precisa
Al momento in cui si verifica un1interruzione, Bono presenti in pipeline piu. istruzioni,
la cui esecuzione puo essere completata 0 rinviata per servire I'interruzione. Con-
sideriamo iil particolare il caso d.i un'eccezione e prendendo per esempio quclla che
si manifesta a causa della divisione per zero: essa non puo che; presentarsi in fase
EX. Per passare alia routine <Ii servizio occorre stabilire delle regole che permettano
di salvare 10 stato di macchina, in modo da riprendere senza scompenso I'esecuzione
del programma, al termine del servizio dell'eccezione. Nel caso specifieo, la solu-
zione piu logica CODsiste nel portare a termine Ie istruzioni ehe in pipeline sono piu
avanti d.i quella che ba determinato Peccezione e svuotare la pipeline di queUe che la
seguono, avviando la procedura (hardware) che portera al passaggio alia routine. di
servizio. Analogo problema si presenta con Ie interruzioni esterne} con la differenza
'I
"
',0;> :,>".
%, ,'''',
.' n, . " "
c' ,. "" '

',!
". . "
"t;r, ,,',
,;'.:,}
: ,
, ' ',,-
: ,"'"
";', , ,
,,'
,
;"l'C
'.
',,,
;''', , ..
<t; ..
.i...
!'!.
w
-
.. ...

'.,1'"
-'
,j:,
;,. i.',
.. ,J."
';
::':,:: ,: :'
':,-1:; ,,

,.
-


,Jii::{ :'i:,
,"':.!
.'
. ....
"
"
:, '.
,:,
> ' ..J), '
"'1"
'. ,\
., : ,
,,:..;,,; ."";:'
''':;''1,. '.
'.' ',1:i-\:' .1,:," J '.
, 'i ' 'i'? :
,"':
"", .
':'jj., ,'t;:-
- j . .
.'. . ,( "d'.
<,,..,.
'.; - .'
;'-',::'
'-'(';" ,
-' . "; ',.' ...
';',';'.:,::;.:
i'l

" .....;. ' ,
,-"">0"" 'J .. ' .. '
..-..... "". I '
':;::',:
"';Fj'.,
'''.. J
: -::, '
... ,'.
_.
-,.
i
I
.,
"'" .' "
';"1.. ' ,
. , "'::
.... .',', __
:'::;:<."
_'! .
,';.... ':"
" ,: ';" ":,
. ,',
.'. ", . "
"I;, ,I,'
.;,;;- : " ';"
,,&-;
,
, /"
"
,;,1,1
.. /'
',.;'1 '.'"
, ..
.. ...".
-
' .. , ,
, ". -" '
". "
',' "
'''' .
:%,,:!:' "::'.
:'
, 'l1'i
',--\, ,',.;. .
.. ' ,
" ,

.': '';:F., ,,"f(;.':,
...",. . .
,., \,.:

"'. ;'''.<1'1, ,.!fVi, "
La pipeline 271
che queste sono asincrone rispetto all'esecuzione del programma, quindi esse possono
manifestarsi in qualunque stadio si trovi una data istruzione.
La gestione delle interruzioni diviene aneora piu problematica qualora la pipeline
si. compost. d. pill unit" funzionali multiciclo ([HP93] e [WE93]) , come quelle dis-
cusse al Paragrafo 10.1. Vintroduzione nella pipeline di unita funzionali multicic10
parallele porta con se due ulteriori complicazioni, che non sono presenti nelle pipeline
lineari come queUe fin qui studiate, Puo infatti accadere che Ie istruzioni modifichino
10 stato del proeesso in un ordine diverso da queUo definito dall'esecuzione sequenziale
(detta anche architetturale) del programma. Se per esempio un'istruzione complessa
A (quale un prodotto in virgola mobile) eseguita cia una istruzione piu semplice B
(tipo una somma tra interi) e se A e B vengono eseguite in parallelo su unita. diverse,
epossibile che B venga completata e modifichi 10 stato prima di A, Oral se durante
l'esecuzione di A si verifica un'interruzione, il programma puo venire interrotto in
uno stato non consistente con il modeUo di funzionamento sequenziale, poiche B puo
aver gil modificato i registri interni del processore 0 13 memoria Si parla in
questa caso di interruzione imprecisa.
Al contrario un'interruzione edetta'precisa se lascia 1a macchina in uno stato
consistente col modelIo sequenziale di esecuzione del programma; per essere pili spe-
cifiei, 10 stato salvato al momento delI'interruzione (che vena utilizzato per ripristinare
iI processo) cleve verificare Ie seguenti condizioni.
1. Tutte Ie istruzioni preeedenti al PC salvato (relativo all'istruzione interrotta
3
0)1
hanno completato l'esecuzione e hanno gia modificato 10 stato della macchina.
2. Thtte le istruzioni successive al PC salvato non devono aver completato l'esecu-
zione, ne aver modifieato in alcun modo 10 stato del processo.
3. L'istruzione interrotta, a seconqa del tipo di interruzione, puo essere stata ese-
guita oppure no; a ogni modo l'istruzione interrotta 0 e stata completamente
eseguita oppure deve essere aneora iniziata: non epossibile quindi ehe 10 stato
salvato eontenga istruzioni solo parzialmente eseguite.
Nella parte ehe segue faremo aneora riferimento alla nostra pipeline lineare e
tratteremo 1e interruzioni precise.
Priorita Un problema con la pipeline e che non solo Ie interruzioni possono
ficarsi in qualunque momenta, rna due a piu interruzioni possono anche rnanifestarsi
contemporamente a eausa della presenza in pipeline di pili istruzioni, che potrebbe
ro determinare un'eccezione nello stadio in cui si trovano. In tal easo la logica di
CPU deve decidere quale interruzione trattare, scegliendo in base alia sua natura
(interruzione esterna, eceezione 0 trappola) e in base agli stadi che hanno rilevato
l'interruzione.
Per trattare Ie interruzioni precise enecessario stabilire una priorita., che ovvia-
mente privilegera Ie eceezioni che si manifestano in stadi pili avanzati della pipeline
3
0
D'ora in avanti, con la dizione istruzione interT'otta si intende riferirsi 0 a.ll'istruzione la cui
esecuzione viene sospeaa e rinviata a. causa. di un'interruzione eatcrna, oppure a queUa che ha causato
una eccezione 0 che ha generato Wla trappola.
Clcll dl
clock
pipeline 273
6.13.2 Interruzioni esterne

-
,
,
-

I
\
/ -
I-
\
I-
\ -
\
\ .
\
\ .
I
I
1
\
u.> ADD ST sus XOR
RS-F BoU. sT sus
RS-M DoH... 8011.. SoU... BoU..
,
Figura 6.48 Al periodo di clock i
l
in pipeline si trovano Ie istruzioni ADD, ST, SUB, XOR
e viene fatto it fetch deU'istruzione LD che, per ipotesi, determina l'eccezione FAdEr. At
periodo di clock successivo si trovano ancora ADD, ST e SUB; at posto di LD estata inserita
una. bolla e viene fatto it fetch della prima istruzione della routine di servizio dell'eccezione
FAdEr, indicata come RS-F. Si suppone cbe in questa. Case l'istruzione ST, nella stadio ME,
generi I'eccezione MAdEr. Al periodo di clock i + 2 - l'istruzione SUB e uscita. - tutte 1e
istruzioni presenti in pipeline a seguire ST e ST stessa sono state sostituite da una bolla
e viene fatto il fetch della prima istruzione della routine di servizio deU'eccezione MAdEr,
indicata come RSM.
In questa sezione viene sviluppata 1a logica di controllo delle interruzioni esterne. Per
il momento esse sono considerate indipendentemente dalle eccezioni. Faremo inoltre
Ie ipotesi semplijicative fatte al Paragrafo 5.11 (in particolare assumiamo cbe ci siano
i due registri XR e SR). ,
e'e il problema di dove intervenire sulla pipeline. II trattamento dell'internizione
richiede che venga sospesa 1a normale sequenza di caricarnento e che 5i pas5i alla
routine di servizio. La soIuzione pili vantaggiosa e ovviamente quella di perdere
meno informazioni possibili, ovvero di intervenire sullo stadio IF, lasciando che Ie
istruzioni negli altri stacH completino regolarmente (si ricorm che per ora non vengono
considerate Ie eccezioni).
31ln questa figura si e fatta implicitamente un'assunzione non di poco conto. Infatti 51 e ipotizzato
che al clock successivo a queUo in cui viene rilevata l'eccezione venga effettuato it fetch della prima
istruzione della routine di servizio. Nel CMO di una macchina reale questa e molto improbabile,
in quanto per fare il fetch della prima istruzione della routine di servizio occone dispone del suo
indirizzo, che a sua .volta 5i trova in memoria nella tabella dei interrtlZione (TABIR);
qilindi per 10 meno un cicio di lettura deUa memoria centrale (e non nemmeno da lIperare che il
vettore possa. trovarsi in cache, in quanta, Ie eccezioni 8i manifestano'abbastanza sporadica.mente,
cosl da non far 10ro trovare in cache lao tabella dei vettori di interruzione). In ogni caso sempre
possibile che 5i manifesti una seconda eccezione mentre in pipeline hanno cominciato a entra.re Ie
istruzioni relative aI servizio della precedente. Questa eventualita, e pili probabile quanto piu tunga
la pipeline.
'.2
,. ,
che questa condizione accade nel caso della nostra architettura; si veda l'Esercizio
6.9). La Fig. 6.48 chiarisce Ie precedenti argomentazioni
31
Nella parte che segue, si assume che un'eccezione cbe si manifesta in uno sta-
dia .vanzato della pipeline debba comunque svuotare tutti gli stadi cbe la seguono,
indipendentemente dal lore contenuto.
,h
.
""'\
,,/.
..1 -:';
c .....,
;;\ I:
q.
.
.1' ",'
,
, ,.1' "
',;i"
.. ,I
I O'
, ...'/. ,
, I .-
.... .
, :',
.- .,



,t(\ .'
",,",".'/'C'
.
',\ .
". b,
i:;.},')::: '
,,"
> :.
, .. .,....-.
,..,.-' ;.

.... '
,.:':" '.
_
... ,"e'i
... -'.'
'. .' . '
.. ' .. " .. '"
J' ". '-: .,
.. I"
:;'"i' _...

;,:',0:;' '"

"."'.
.;'t:. ,{ ,
.,'.. ,
._",.,. '.
,.",' ,,'
:. ,; .
''''';"'(il- .'
_...,.;iJ:_ (-'. "
.. " .. ,
. '1i"\V' ,.. : ..
"",' ,.1 ' .
.. '':li' r .,.
, "v"-""
" r' '.'
_ t:1',:\ I'
, '>;" ". .-
...,,' ;.
.;.t,. ""',
.;:../'1
1
' '!
, ..... ...
'," ';1." .,.. ,

.:---"."
'.' "',,'
.<n
r
')! >..-.. '
.::.I.r, S'
.",:.:.
... \l ._,.-...,.
.:...... ." '.
, , .
....,.j,.lr,
,.' .,""
:..
::'"
- . 'I .
. " 'f ' .
..... ',;:.;',
-":-.i'''';' " -
.:' .,.

\.;" /:I' .. '>''';('',
.._ ,. l.; .
"" ..,....

.. ;'.:f;,l;[l
., -'" .',""
.
J'
.,... '
'''1'0 -.'
.,fro ',' 0:0 "
" ' l ",';\.." .
,i(/' .:'\'"
,-, ,,;'J
-,'.
.'.1".. ,"
':,' "/' .
,,' .'.\'
'll .-.,,,.
.' . ..,
,J,-,_,,,
..;. -',','
l ,'" ,
'>' .. ;'."

.. ...
" -...
,... - ,',

'l,,,
- ,
.'J"<ji_< .:
-.";0/', ,
.' .'"
,,:ii,' .
"t/: -
-.'
'J ';'I'J1
" !<;:.
".:!-"
, ...i'\.
Tabella 6.11 Le differenti interruzioni considerate riportate secondo 13. low priorits. di trat-
tamento. Le interruzioni esterne hanno in assoluto la piu bassa priorita.. La colonna a destra
identifica 10 stadio in cui Ie differenti interruzioni si possono manifestare. Le eccezioni (e
Ie trappole) baUDO 1a priorita. che deriva lora dallo stadia in cui 5i manifestano: la priorita.
massima e per Peccezione MAdEr (Memory Addre.", Error) cbe 5i manifesta nello stadio
ME, La minima per FAdEr (Fetch Addre.", Error) che 5i manifesta nella stadio IF. Nella
stadio WB non si hanno eccezioni.
272 Capitolo 6
Le eccezioni non contemporanee n criterio di priorita. di cui si e parlato nel
paragrafo precedente risolve completamente la contesa per Ie interruzioni che si ma-
nifestaD0 nello stesso cicio di clock. Rirnane tuttavia Ia possibilita che, al clock che
$egue it verificarsi di Wl3 eccezione, si manifesti un'altra eccezione in uno stadio piu
avanzato della pipeline, da parte eli un'istruzione ancora non completata. In questa
caso, enecessario applicare nuovamente it criterio di prioritA, servendo I'eccezione che
si trova nelio stadio piu avanzato della pipeline ed eliminando tutte Ie istruzioni che
si trovano negli stadi a monte, cornprese queUe che potrebbero essere state introdotte
dalla prima eccezione a seguito del passaggio alla relativa routine di servizio. AflincM
it trattamento sia preciso, Ie istruzioni che vengono tolte con 10 svuotamento di quanta
segue in pipeline non devono aver modificato Io stato di macchina (e facile verificare
e che percio sana relative a istruzioni piu prossime at completamento, Ie quali, can
maggior probabHita, potrebbero aver modificato 10 state di macchina. Gli esempi
di interruzioni coosiderati in Tabella 6.11 coprono tutti gli stadi di CPU. La tabella
riporta 10 stadia in cui Ie interruzioni si manifestano, dal quale discende la priorita.
Un esempio sara. di aiuto: supponiamo che si verifichino contemporaneamente
RI (a causa di un coclice eli operazione non esistente) e la FAdEr. Poiche
l'istruzione illegale estata caricata prima di quella che ha generato I'errore di indiriz-
zamento, e poiche eplausibile che la gestione della prima possa evitare i1 manifestarsi
della seconda; e necessaria che i1 processore serva l'eccezione dovuta a.ll'istruzione
megale prima del1'eccezione di indirizzamento.
Al rilevamento di un'eccezione, tutte Ie istruzioni che si trovano negli stacH pre-
cedenti quello dell'eccezione da servire sono cancellatej le istruzioni che invece sono
negli seguenti vengono fatte procedere.
Per quanta riguarda Ie interruzioni esterne, per 1a lora stessa natura (asincrone
.e non predicibili), esse p058ono manifestarsi in qua1siasi momenta dell'esecuzione del
programma. Vedremo nel seguito come trattarie.
[1'lome I Tipo I Causa
Itr
l
ccezione
entativo lettura scrittura dato c
.sallineato
.LH 0 &cezione iVlsione per 0 Qurante opera-Zlonl aritmetlChe
'l'l'a.ppola eCUZlOue dt Chiamata a sistema (, ystem call)
J
@gr
cceZl0m Istruzione nservata 0 co ice
cceZlOoe lettura dl un lstruZ1QUe ctisaI1meata ""IF"
IN".t'Il: Interr. esterna vento esterno Tutt,
Clcll dl
clock
pipeline 273
6.13.2 Interruzioni esterne

-
,
,
-

I
\
/ -
I-
\
I-
\ -
\
\ .
\
\ .
I
I
1
\
u.> ADD ST sus XOR
RS-F BoU. sT sus
RS-M DoH... 8011.. SoU... BoU..
,
Figura 6.48 Al periodo di clock i
l
in pipeline si trovano Ie istruzioni ADD, ST, SUB, XOR
e viene fatto it fetch deU'istruzione LD che, per ipotesi, determina l'eccezione FAdEr. At
periodo di clock successivo si trovano ancora ADD, ST e SUB; at posto di LD estata inserita
una. bolla e viene fatto it fetch della prima istruzione della routine di servizio dell'eccezione
FAdEr, indicata come RS-F. Si suppone cbe in questa. Case l'istruzione ST, nella stadio ME,
generi I'eccezione MAdEr. Al periodo di clock i + 2 - l'istruzione SUB e uscita. - tutte 1e
istruzioni presenti in pipeline a seguire ST e ST stessa sono state sostituite da una bolla
e viene fatto il fetch della prima istruzione della routine di servizio deU'eccezione MAdEr,
indicata come RSM.
In questa sezione viene sviluppata 1a logica di controllo delle interruzioni esterne. Per
il momento esse sono considerate indipendentemente dalle eccezioni. Faremo inoltre
Ie ipotesi semplijicative fatte al Paragrafo 5.11 (in particolare assumiamo cbe ci siano
i due registri XR e SR). ,
e'e il problema di dove intervenire sulla pipeline. II trattamento dell'internizione
richiede che venga sospesa 1a normale sequenza di caricarnento e che 5i pas5i alla
routine di servizio. La soIuzione pili vantaggiosa e ovviamente quella di perdere
meno informazioni possibili, ovvero di intervenire sullo stadio IF, lasciando che Ie
istruzioni negli altri stacH completino regolarmente (si ricorm che per ora non vengono
considerate Ie eccezioni).
31ln questa figura si e fatta implicitamente un'assunzione non di poco conto. Infatti 51 e ipotizzato
che al clock successivo a queUo in cui viene rilevata l'eccezione venga effettuato it fetch della prima
istruzione della routine di servizio. Nel CMO di una macchina reale questa e molto improbabile,
in quanto per fare il fetch della prima istruzione della routine di servizio occone dispone del suo
indirizzo, che a sua .volta 5i trova in memoria nella tabella dei interrtlZione (TABIR);
qilindi per 10 meno un cicio di lettura deUa memoria centrale (e non nemmeno da lIperare che il
vettore possa. trovarsi in cache, in quanta, Ie eccezioni 8i manifestano'abbastanza sporadica.mente,
cosl da non far 10ro trovare in cache lao tabella dei vettori di interruzione). In ogni caso sempre
possibile che 5i manifesti una seconda eccezione mentre in pipeline hanno cominciato a entra.re Ie
istruzioni relative aI servizio della precedente. Questa eventualita, e pili probabile quanto piu tunga
la pipeline.
'.2
,. ,
che questa condizione accade nel caso della nostra architettura; si veda l'Esercizio
6.9). La Fig. 6.48 chiarisce Ie precedenti argomentazioni
31
Nella parte che segue, si assume che un'eccezione cbe si manifesta in uno sta-
dia .vanzato della pipeline debba comunque svuotare tutti gli stadi cbe la seguono,
indipendentemente dal lore contenuto.
,h
.
""'\
,,/.
..1 -:';
c .....,
;;\ I:
q.
.
.1' ",'
,
, ,.1' "
',;i"
.. ,I
I O'
, ...'/. ,
, I .-
.... .
, :',
.- .,



,t(\ .'
",,",".'/'C'
.
',\ .
". b,
i:;.},')::: '
,,"
> :.
, .. .,....-.
,..,.-' ;.

.... '
,.:':" '.
_
... ,"e'i
... -'.'
'. .' . '
.. ' .. " .. '"
J' ". '-: .,
.. I"
:;'"i' _...

;,:',0:;' '"

"."'.
.;'t:. ,{ ,
.,'.. ,
._",.,. '.
,.",' ,,'
:. ,; .
''''';"'(il- .'
_...,.;iJ:_ (-'. "
.. " .. ,
. '1i"\V' ,.. : ..
"",' ,.1 ' .
.. '':li' r .,.
, "v"-""
" r' '.'
_ t:1',:\ I'
, '>;" ". .-
...,,' ;.
.;.t,. ""',
.;:../'1
1
' '!
, ..... ...
'," ';1." .,.. ,

.:---"."
'.' "',,'
.<n
r
')! >..-.. '
.::.I.r, S'
.",:.:.
... \l ._,.-...,.
.:...... ." '.
, , .
....,.j,.lr,
,.' .,""
:..
::'"
- . 'I .
. " 'f ' .
..... ',;:.;',
-":-.i'''';' " -
.:' .,.

\.;" /:I' .. '>''';('',
.._ ,. l.; .
"" ..,....

.. ;'.:f;,l;[l
., -'" .',""
.
J'
.,... '
'''1'0 -.'
.,fro ',' 0:0 "
" ' l ",';\.." .
,i(/' .:'\'"
,-, ,,;'J
-,'.
.'.1".. ,"
':,' "/' .
,,' .'.\'
'll .-.,,,.
.' . ..,
,J,-,_,,,
..;. -',','
l ,'" ,
'>' .. ;'."

.. ...
" -...
,... - ,',

'l,,,
- ,
.'J"<ji_< .:
-.";0/', ,
.' .'"
,,:ii,' .
"t/: -
-.'
'J ';'I'J1
" !<;:.
".:!-"
, ...i'\.
Tabella 6.11 Le differenti interruzioni considerate riportate secondo 13. low priorits. di trat-
tamento. Le interruzioni esterne hanno in assoluto la piu bassa priorita.. La colonna a destra
identifica 10 stadio in cui Ie differenti interruzioni si possono manifestare. Le eccezioni (e
Ie trappole) baUDO 1a priorita. che deriva lora dallo stadia in cui 5i manifestano: la priorita.
massima e per Peccezione MAdEr (Memory Addre.", Error) cbe 5i manifesta nello stadio
ME, La minima per FAdEr (Fetch Addre.", Error) che 5i manifesta nella stadio IF. Nella
stadio WB non si hanno eccezioni.
272 Capitolo 6
Le eccezioni non contemporanee n criterio di priorita. di cui si e parlato nel
paragrafo precedente risolve completamente la contesa per Ie interruzioni che si ma-
nifestaD0 nello stesso cicio di clock. Rirnane tuttavia Ia possibilita che, al clock che
$egue it verificarsi di Wl3 eccezione, si manifesti un'altra eccezione in uno stadio piu
avanzato della pipeline, da parte eli un'istruzione ancora non completata. In questa
caso, enecessario applicare nuovamente it criterio di prioritA, servendo I'eccezione che
si trova nelio stadio piu avanzato della pipeline ed eliminando tutte Ie istruzioni che
si trovano negli stadi a monte, cornprese queUe che potrebbero essere state introdotte
dalla prima eccezione a seguito del passaggio alla relativa routine di servizio. AflincM
it trattamento sia preciso, Ie istruzioni che vengono tolte con 10 svuotamento di quanta
segue in pipeline non devono aver modificato Io stato di macchina (e facile verificare
e che percio sana relative a istruzioni piu prossime at completamento, Ie quali, can
maggior probabHita, potrebbero aver modificato 10 state di macchina. Gli esempi
di interruzioni coosiderati in Tabella 6.11 coprono tutti gli stadi di CPU. La tabella
riporta 10 stadia in cui Ie interruzioni si manifestano, dal quale discende la priorita.
Un esempio sara. di aiuto: supponiamo che si verifichino contemporaneamente
RI (a causa di un coclice eli operazione non esistente) e la FAdEr. Poiche
l'istruzione illegale estata caricata prima di quella che ha generato I'errore di indiriz-
zamento, e poiche eplausibile che la gestione della prima possa evitare i1 manifestarsi
della seconda; e necessaria che i1 processore serva l'eccezione dovuta a.ll'istruzione
megale prima del1'eccezione di indirizzamento.
Al rilevamento di un'eccezione, tutte Ie istruzioni che si trovano negli stacH pre-
cedenti quello dell'eccezione da servire sono cancellatej le istruzioni che invece sono
negli seguenti vengono fatte procedere.
Per quanta riguarda Ie interruzioni esterne, per 1a lora stessa natura (asincrone
.e non predicibili), esse p058ono manifestarsi in qua1siasi momenta dell'esecuzione del
programma. Vedremo nel seguito come trattarie.
[1'lome I Tipo I Causa
Itr
l
ccezione
entativo lettura scrittura dato c
.sallineato
.LH 0 &cezione iVlsione per 0 Qurante opera-Zlonl aritmetlChe
'l'l'a.ppola eCUZlOue dt Chiamata a sistema (, ystem call)
J
@gr
cceZl0m Istruzione nservata 0 co ice
cceZlOoe lettura dl un lstruZ1QUe ctisaI1meata ""IF"
IN".t'Il: Interr. esterna vento esterno Tutt,
i

!
Figura 6.50
eli clock.
274 Ca.pitola 6
275 La pipeline
Le interruzioni esterne potrebbero essere vettorizzate. Cia comporta un meeea-
nismo per rintracciare il vettore di interruzione. La tabella TABIR dei vettori di
interruzione (supponiamo che contengano gli indirizzi delle routine di servizio),
per essere realistici, dobbiamo immaginarla in memoria. Col nostro modello a
memorie separate c'e cia decidere in Quale delle due collocarla. Non convince ne
l'associazione di TABIR a MI ne a MD. Supponiamo comunque che TABIR sia
in MI, a partire dalla posizione 0 (0 da una posizione contenuta in un
to registro di CPU). Per accedere al vettore di interruzione l'elettronica. esterna
dovrebbe porre suI bus dati un numero identificativo della posizione in TABIR
associata all'interruzione da servire, in modo che 1a logica di CPU, leggendo 1a
posizione corrisponclente, ottenga l'indirizzo di partenza della routine di servi-
zio, che, trasferito in PC possa permettere il fetch della prima Come
si vede e'e qualche complicazione. In partieolare il nostro modelIo non prevede
l'efIettuazione di una lettura in memoria che riporta un indirizzo anziche un'is-
truzione. Peraltro non c'e tra.ccia di I/O nel nostro modelia (si veda a questo
proposito l'Esercizio 6.12).
Se si vuole consentire l'interrompibilita. delle routine di servizio delle interruzio-
ni, bisogna avere 1a cautela di non perdere I'indirizzo di ritorno al programma
interrotto, sia che si trovi in SR 0 in R30. Con il nostro modello, cic> deve es-
sere fatto necessariamente dal programmatore, prima di riabilitare il sistema di
interruzione. .
Gli indirizzi per Ie routine di servizio si trovano nella tabella TABECC, che fa
parte della logica di CPU. Nel nostro caso si tratta di 5 registri, cOIIispondenti aile
5 eecezioni di Tabella 6.11. Assumeremo ehe ciascuno di questi registri eontenga
permanentemente l'indirizzQ della routine di servizio.
n servizio dell'eccezione comporta la disabilitazione del lora ulteriore riconos-
cimento, che verra. riabilitato solo dopo che estata eseguita l'istruzione RFE.
In altre parole, si assume che Ie routine eli servizio delle eccezioni non siano
interrompibili.
In questa sezione vengono dati i criteri per il progetto della Iogica di centrollo delle
eccezioni. Per il momento vengono considerate 1e sole eccezioni, indipendentemente
dalle interruzioni. Per brevita., qui di seguito si usa il termine "eccezione" per riferirsi
sia aIle eccezioni che aUe trappole, non essendoci differenza alcuna per quanto attiene
al loro trattamento.
L'assunzione di base eche Ie eccezioni vengano trattate in modo preciso. Se, per
esempio, si verifica un'eccezione ne110 stadio IF, prima di passare alIa relativa routine
di servizio, oecorre garantire che Ie istruzioni attualmente negli stadi ID ed EX (Ie
a1tre non possono) non determinino eccezioni a.i clock sueeessivi., prima di uscire dalla
pipeline, perche in caso eontrario sono queste da servire.
Per impostare l'analisi, si possono fare aleune assunzioni semplificative.
6.14 Eccezioni
ME/WB
EX/ME
eru
IINTR
'I
-l
,
0
s 01-
i/
s
IS
'1
IE:

lNTR
INTR
Generazione del comando IServ. II flip-flop IS Testa asserito per un solo periodo
Si possono apportare alcuni migliorarnenti alia schema precedente.
Anziche prevedere iJ registro Sft per salvare l'indirizzo di ritorno, si puo convenire
che un registro di CPU, per esempio R30
1
sia permanentemente dedicato alIa
In Questo easo, 1a scrittura in R30 di pel 1a
propagazione di questo campo per tutta la pipeline fino allo stadia WB (si veda
l'Esercizio 6.11).
10 schema per gestfre Ia pipeline ein Figura 6.49. Ovviam.ente Pistruzione RFI
deve compiere l'azione d.i ripristinare PC da Sa. In Figura6.50 viene rnostrata la
logica ebe, a partire da INTR, asserisce IServ. 8i Dati ehe IServ resta asserito per un
solo periodo di clock. .
Figura 6.49 Logics. per gestire 1a. pipeline in presenza di interruzione esterna.. La. linea.
IServ viene asserita da UC, per un solo cido d.i clock, quando deve essere servita 1a richiesta
eli interruzione (INTR). Quando IServ e asserita. si genera. una bolla. au IFjID: XR viene
se1ezionato come mgresso a. PC e ill sa viene copiato il contenuto di IF/ID.pe!.
ma campo contiwe esattamente l'indirizzo deU'istruzione di cui sarebbe stato fatto il fetch.
L'istruzione che si trov& in IF, non essendo stata. copiata. in IFlID non viene eseguita.. La.
sua esecuzione eposposta at momento in cui, per effetto dell'esecuzione dell'istruzione RFI,
in PC vena. ricaricato il contenuto di PCI (il suo indirizzo).
IServ
Bu'
h
IF/ID
I

lst,.uzlonl
0-'
o-
w

UC
,ECHuX
f-
P
,
+
C

f-

+

XR
" SR I
.
-

I
\
\
I
I
I
1
I
I
(
I
I

!
Figura 6.50
eli clock.
274 Ca.pitola 6
275 La pipeline
Le interruzioni esterne potrebbero essere vettorizzate. Cia comporta un meeea-
nismo per rintracciare il vettore di interruzione. La tabella TABIR dei vettori di
interruzione (supponiamo che contengano gli indirizzi delle routine di servizio),
per essere realistici, dobbiamo immaginarla in memoria. Col nostro modello a
memorie separate c'e cia decidere in Quale delle due collocarla. Non convince ne
l'associazione di TABIR a MI ne a MD. Supponiamo comunque che TABIR sia
in MI, a partire dalla posizione 0 (0 da una posizione contenuta in un
to registro di CPU). Per accedere al vettore di interruzione l'elettronica. esterna
dovrebbe porre suI bus dati un numero identificativo della posizione in TABIR
associata all'interruzione da servire, in modo che 1a logica di CPU, leggendo 1a
posizione corrisponclente, ottenga l'indirizzo di partenza della routine di servi-
zio, che, trasferito in PC possa permettere il fetch della prima Come
si vede e'e qualche complicazione. In partieolare il nostro modelIo non prevede
l'efIettuazione di una lettura in memoria che riporta un indirizzo anziche un'is-
truzione. Peraltro non c'e tra.ccia di I/O nel nostro modelia (si veda a questo
proposito l'Esercizio 6.12).
Se si vuole consentire l'interrompibilita. delle routine di servizio delle interruzio-
ni, bisogna avere 1a cautela di non perdere I'indirizzo di ritorno al programma
interrotto, sia che si trovi in SR 0 in R30. Con il nostro modello, cic> deve es-
sere fatto necessariamente dal programmatore, prima di riabilitare il sistema di
interruzione. .
Gli indirizzi per Ie routine di servizio si trovano nella tabella TABECC, che fa
parte della logica di CPU. Nel nostro caso si tratta di 5 registri, cOIIispondenti aile
5 eecezioni di Tabella 6.11. Assumeremo ehe ciascuno di questi registri eontenga
permanentemente l'indirizzQ della routine di servizio.
n servizio dell'eccezione comporta la disabilitazione del lora ulteriore riconos-
cimento, che verra. riabilitato solo dopo che estata eseguita l'istruzione RFE.
In altre parole, si assume che Ie routine eli servizio delle eccezioni non siano
interrompibili.
In questa sezione vengono dati i criteri per il progetto della Iogica di centrollo delle
eccezioni. Per il momento vengono considerate 1e sole eccezioni, indipendentemente
dalle interruzioni. Per brevita., qui di seguito si usa il termine "eccezione" per riferirsi
sia aIle eccezioni che aUe trappole, non essendoci differenza alcuna per quanto attiene
al loro trattamento.
L'assunzione di base eche Ie eccezioni vengano trattate in modo preciso. Se, per
esempio, si verifica un'eccezione ne110 stadio IF, prima di passare alIa relativa routine
di servizio, oecorre garantire che Ie istruzioni attualmente negli stadi ID ed EX (Ie
a1tre non possono) non determinino eccezioni a.i clock sueeessivi., prima di uscire dalla
pipeline, perche in caso eontrario sono queste da servire.
Per impostare l'analisi, si possono fare aleune assunzioni semplificative.
6.14 Eccezioni
ME/WB
EX/ME
eru
IINTR
'I
-l
,
0
s 01-
i/
s
IS
'1
IE:

lNTR
INTR
Generazione del comando IServ. II flip-flop IS Testa asserito per un solo periodo
Si possono apportare alcuni migliorarnenti alia schema precedente.
Anziche prevedere iJ registro Sft per salvare l'indirizzo di ritorno, si puo convenire
che un registro di CPU, per esempio R30
1
sia permanentemente dedicato alIa
In Questo easo, 1a scrittura in R30 di pel 1a
propagazione di questo campo per tutta la pipeline fino allo stadia WB (si veda
l'Esercizio 6.11).
10 schema per gestfre Ia pipeline ein Figura 6.49. Ovviam.ente Pistruzione RFI
deve compiere l'azione d.i ripristinare PC da Sa. In Figura6.50 viene rnostrata la
logica ebe, a partire da INTR, asserisce IServ. 8i Dati ehe IServ resta asserito per un
solo periodo di clock. .
Figura 6.49 Logics. per gestire 1a. pipeline in presenza di interruzione esterna.. La. linea.
IServ viene asserita da UC, per un solo cido d.i clock, quando deve essere servita 1a richiesta
eli interruzione (INTR). Quando IServ e asserita. si genera. una bolla. au IFjID: XR viene
se1ezionato come mgresso a. PC e ill sa viene copiato il contenuto di IF/ID.pe!.
ma campo contiwe esattamente l'indirizzo deU'istruzione di cui sarebbe stato fatto il fetch.
L'istruzione che si trov& in IF, non essendo stata. copiata. in IFlID non viene eseguita.. La.
sua esecuzione eposposta at momento in cui, per effetto dell'esecuzione dell'istruzione RFI,
in PC vena. ricaricato il contenuto di PCI (il suo indirizzo).
IServ
Bu'
h
IF/ID
I

lst,.uzlonl
0-'
o-
w

UC
,ECHuX
f-
P
,
+
C

f-

+

XR
" SR I
.
-

I
\
\
I
I
I
1
I
I
(
I
I

I.
\

I .
..
-
.
..

l.
I.
I.
I
l
\
I
\
1
c) Ia logica per propagare PCl.
L'eccezione si manifesta neUe stato ill 0 IF.
Situazione del tutto analoga ai casi precedenti, rna con una grossa differenza:
non eescluso che Ie istruzioni che si trovano in stacH pili avanzati possano dare
un'eccezione a un clock successivo, prima di uscire dalla pipeline.
b) un contatore che tenga traccia di dove si e verif1cata l'eccezione, in modo da
garantire il suo trattamento preciso (se essa si verifica prima dello stadio ME,
1a si puo servire solo se ha raggiunto uno stadio oltre il quale non puo dare piu
eccezione) ;
La pipeline 277
proseguire (su di essa non epiu possibile it verificarsi di eccezione). Analogamep.te
a quanta detto sopra, vanno assegnati gli opportuni valori ai campi di EX/ME,
in modo che in fase WB I'attuale contenuto di ill/EX.PCl venga scritto in R29.
2. Al clock successivo, l'istruziane LW, che' ora ein ME, determina l'eccezione MA-
dEr: viene inserita una bolla su tutti gli stadi precedenti e viene annullato it
comando MRead. Su ME/WE deve restare immutato it contenuto del cam-
po PCI (l'indirizzo dell'istruzione LW che verra. rieseguita in seguito) , vengono
asseriti RWrite e PClToReg e viene scritto 29 nel campo ME/WB.RW.
In questa modo l'eccezione in ME prevale su quella avutaai in IF. !no1tre, poiche
in WB non puo esserci eccezione, viene scritto in PC l'indirizw contenuto nel
registro TABECC assegnato all'eccezione MAdEr, in modo che al clock
venga effettuato il fetch della relativa routine di servizio.
1. Quando l'istruzione LB in IF genera l'eccezione FAdEr, in IFlID viene inserita
una "pseudo bolla", nel senso che non devono essere svelte Ie azioni previste da
LB33, rna vJngono scritte au IFlID (senza modificare PC1) Ie informazioni per
comandare Ih scrittura in R29, quando la posizione corrispondente si sara. portata
in WB. Le istruzioni in ID e sta4i seguenti procedono regolarmente.
Secondo il nostro schema 1a pseudo bolla richiede una sorta di pseudo codiee 0 P
the, in rase ID, faccja semplicernente propagate i campi WE, WR e PC1 (non puo
essere il eodice dell'istruzione NOP perche questa fa azzerare i campi di comando,
quindi anche WB).
33Si"fa l'ipotesi che l'istruzione LB venga rieseguita. nel seguito - potrebbe trattarsi di un page
fault - e quindi deve essere mantenuto iI suo PC, che attualmente si trova in IFIID.PCl.
Per traeciare la logica di controllo delle eccezioni (si vedano gli Esercizi 6.14, 6.15
e 6.16) Occ?rre quindi prevedere:
a) un arbitro di priorita che selezioni l'eccezione prioritaria in caso di' contempora-
. neitaj
II problema del punta precedente edi una certa complessita.. Si faccia riferimento
alla Figura 6.51.



..,. ,..... .
"!lit"",,, '.
;"','j>,:> .....
h'.,,:,,.;,,,, ,
,
""'",
..
. ,...
"."
,

:k;
"f"
..
; ,f"

"iii ..' ; il.,
.
". :6


;,.'I '.
'. r;., \,{, "
, 'I'"
,.". ,.'" '.
"':;: .
-. :'
. ;' .
,"',,:
,,:1;1,
.. .\-'"
; ">
,'. '",
.... ,,""
.. ... ,.:.:,.
,-,.'.'
.>"
"'"'l*' . ,. 'or ' ....
.. ,'. ...
"" .. ''C';'"
y;:.s-.
l,!f:r:. ,.y' "
,
,.. ,
.-:;'. l'e'"
j :.":.'.",,.'
: !:" ."
\,''-::'
, .. ..'.,
,.. " .. , '
.. ""y;; .,"
... .
.,.'\ . ,.:... .,
." ;..{":,
":"1'" .' ;;!--/ ,,'.'
't"''

.,,::'kw',
.:,.:.-'1; I::',', ,'.
,'.-, ,. , "
',:}::'}
,}_i-t ;:: .;::......
." . ..
,
.__'i:
v
' '.:;:' ',,'
""[' ,"
"
.. ..... .. ,
.. .." .,.."
';' \::;...':,::.
.. ..
t;;,'; '!-.
... " .... '
,.. ".'"''
',:.,':i ;' ."
j"" ,,;..
..
, .' ":,:;,.:'
,. ,.,
,.;,.,; ''':'.

,,,,::y,,.'
..' ! .
. :. t,- '
i'it
<,1.'1,:(.:-: .' \",: .-,
'<0,"( "V"
': .

,..,.,.,,'
".J; -', .. ,
"f .. ,
'-;:"',' .:

$;.. --<." ,:'-
.;iif
':",
_.
, _.
;";':," .
, ',." ...' .'

'o.! ..-.,.,


,.. .. j" ' .
. ,.-- .'
';''1l. .;:,:i .-:;
.',' .'"
'.(:l1I., ,.
.. ,.. ..
/.j:;,.I.. ;- .'j."
.. ;"
.. i 0; ..
. .'1;; . ',"'
'.>
'. '"
.. '?:
,..... ... , \
",.. " ..-,'N;
"'" .... ' .. '
.....,...: '."' ,;
Si noti che siccome PC viene aggiornato con il contenuto di TABECC (che per
ipotesi fa parte della Iogica eli CPU) al prossimo clock verra fatto iI fetch della
prima istruzione della routine di servizio, mentre nella pipeline ci saranno solo
bolle, eccetto che nello stadia WE dove ora si trova l'istruzione interrotta per
eccezione in ME.
L'eccezione si manifesta nella state EX.
Differisce rispetto al caso precedente per il solo fatto che inserisce una bolla in IF
e ill e vanifica l'effetta dell'istruzione in EX, mentre l'istruzione in ME viene fatta
1) svuotare 1a pipeline a monte, inserendo una bolla in IF, ID ed EX, annullando
al tempo stesso l'eventuale lettura/scrittura in memoria;
2) imporre che il PC dell1istruzione seguente venga scritto in R29. A tal fine
oecorre: (i) prevedere it campo PCI su tutti i registri di pipeline, in modo
che p08sa propagarsi fino a116 stadia WBj (ii) prevedere un selettore che in
fase WB consenta, come terza possibilitll., la acelta del campo ME/WB.PCI.
Rispetto agli schem.i visti si tratta di aggiungere un se1ettore (a valle di queUo
comandato da MemToReg) piIotato dalla linea PClToReg; (iii) scrivere 29
nel campo ME/WB.RW; (iv) asserire ME/WB.RWrite;
3) copiare in PC il contenuto della posizione TABECC individuata in base a1
tipo di eccezione
32
.
Veccezione si maniesta nello stato ME.
Si tratta eli:
L'eccezione determina l'annullamento dell'operazione tentata dall'istruzione che
la determina. Le assunzioni precedenti comportano che la routine di servizio, una
volta trattata l'eccezione, ritorni all'istruzione successiva. Non sempre questa di
modalita. di funzionamento ecarretta. Per esempio, nel casa di ecceziane dovuta a
page fault, l'istruzione che la determina deve essere rieseguita dopa che la pagimi.
estata portata in memoria (Cfr. 8.2). Senza perdere di generalita e al fine di
non modificare 1a struttura della nostra pipeline (ci si riferisce in particolare al
fatto che il campo PCI contenga il valore del PC deWistruzione ehe segue), si
puo assumere che, per Ie eccezioni che richiedono 1a riesecuzione delle istruzioni
che Ie generano, 1a routine di gestione aggiusti I'indirizzo di ritorno (saltando cioe
aiPistruzione che precede quella indirizza.ta da R29).
.
npassaggio alIa routine di servizio comparta it salvataggio dell'indirizzo di ritorno
nel registra R29, che viene destinato a questo solo scopa. La routine di servizio'
si conclude con l'istruzione RFE che ha l'effetto di un saito indiretto attraverso
R29, oltre che riahilitare il sistema di rilevamento delle eccezioni.
3
2
Si tratta bana.1mente di dare un numero a tutte Ie eccezioni ed entrare in TABECC in base a
esso.
Per servire l'eccezione oecorre anzitutto identificare 10 stadio in cui si emanifes
tata. Si hanno Ie seguenti possihilita.
276 Capitolo 6
I.
\

I .
..
-
.
..

l.
I.
I.
I
l
\
I
\
1
c) Ia logica per propagare PCl.
L'eccezione si manifesta neUe stato ill 0 IF.
Situazione del tutto analoga ai casi precedenti, rna con una grossa differenza:
non eescluso che Ie istruzioni che si trovano in stacH pili avanzati possano dare
un'eccezione a un clock successivo, prima di uscire dalla pipeline.
b) un contatore che tenga traccia di dove si e verif1cata l'eccezione, in modo da
garantire il suo trattamento preciso (se essa si verifica prima dello stadio ME,
1a si puo servire solo se ha raggiunto uno stadio oltre il quale non puo dare piu
eccezione) ;
La pipeline 277
proseguire (su di essa non epiu possibile it verificarsi di eccezione). Analogamep.te
a quanta detto sopra, vanno assegnati gli opportuni valori ai campi di EX/ME,
in modo che in fase WB I'attuale contenuto di ill/EX.PCl venga scritto in R29.
2. Al clock successivo, l'istruziane LW, che' ora ein ME, determina l'eccezione MA-
dEr: viene inserita una bolla su tutti gli stadi precedenti e viene annullato it
comando MRead. Su ME/WE deve restare immutato it contenuto del cam-
po PCI (l'indirizzo dell'istruzione LW che verra. rieseguita in seguito) , vengono
asseriti RWrite e PClToReg e viene scritto 29 nel campo ME/WB.RW.
In questa modo l'eccezione in ME prevale su quella avutaai in IF. !no1tre, poiche
in WB non puo esserci eccezione, viene scritto in PC l'indirizw contenuto nel
registro TABECC assegnato all'eccezione MAdEr, in modo che al clock
venga effettuato il fetch della relativa routine di servizio.
1. Quando l'istruzione LB in IF genera l'eccezione FAdEr, in IFlID viene inserita
una "pseudo bolla", nel senso che non devono essere svelte Ie azioni previste da
LB33, rna vJngono scritte au IFlID (senza modificare PC1) Ie informazioni per
comandare Ih scrittura in R29, quando la posizione corrispondente si sara. portata
in WB. Le istruzioni in ID e sta4i seguenti procedono regolarmente.
Secondo il nostro schema 1a pseudo bolla richiede una sorta di pseudo codiee 0 P
the, in rase ID, faccja semplicernente propagate i campi WE, WR e PC1 (non puo
essere il eodice dell'istruzione NOP perche questa fa azzerare i campi di comando,
quindi anche WB).
33Si"fa l'ipotesi che l'istruzione LB venga rieseguita. nel seguito - potrebbe trattarsi di un page
fault - e quindi deve essere mantenuto iI suo PC, che attualmente si trova in IFIID.PCl.
Per traeciare la logica di controllo delle eccezioni (si vedano gli Esercizi 6.14, 6.15
e 6.16) Occ?rre quindi prevedere:
a) un arbitro di priorita che selezioni l'eccezione prioritaria in caso di' contempora-
. neitaj
II problema del punta precedente edi una certa complessita.. Si faccia riferimento
alla Figura 6.51.



..,. ,..... .
"!lit"",,, '.
;"','j>,:> .....
h'.,,:,,.;,,,, ,
,
""'",
..
. ,...
"."
,

:k;
"f"
..
; ,f"

"iii ..' ; il.,
.
". :6


;,.'I '.
'. r;., \,{, "
, 'I'"
,.". ,.'" '.
"':;: .
-. :'
. ;' .
,"',,:
,,:1;1,
.. .\-'"
; ">
,'. '",
.... ,,""
.. ... ,.:.:,.
,-,.'.'
.>"
"'"'l*' . ,.
'or ' ....
.. ,'. ...
"" .. ''C';'"
y;:.s-.
l,!f:r:. ,.y' "
,
,.. ,
.-:;'. l'e'"
j :.":.'.",,.'
: !:" ."
\,''-::'
, .. ..'.,
,.. " .. , '
.. ""y;; .,"
... .
.,.'\ . ,.:... .,
." ;..{":,
":"1'" .' ;;!--/ ,,'.'
't"''

.,,::'kw',
.:,.:.-'1; I::',', ,'.
,'.-, ,. , "
',:}::'}
,}_i-t ;:: .;::......
." . ..
,
.__'i:
v
' '.:;:' ',,'
""[' ,"
"
.. ..... .. ,
.. .." .,.."
';' \::;...':,::.
.. ..
t;;,'; '!-.
... " .... '
,.. ".'"''
',:.,':i ;' ."
j"" ,,;..
..
, .' ":,:;,.:'
,. ,.,
,.;,.,; ''':'.

,,,,::y,,.'
..' ! .
. :. t,- '
i'it
<,1.'1,:(.:-: .' \",: .-,
'<0,"( "V"
': .

,..,.,.,,'
".J; -', .. ,
"f .. ,
'-;:"',' .:

$;.. --<." ,:'-
.;iif
':",
_.
, _.
;";':," .
, ',." ...' .'

'o.! ..-.,.,


,.. .. j" ' .
. ,.-- .'
';''1l. .;:,:i .-:;
.',' .'"
'.(:l1I., ,.
.. ,.. ..
/.j:;,.I.. ;- .'j."
.. ;"
.. i 0; ..
. .'1;; . ',"'
'.>
'. '"
.. '?:
,..... ... , \
",.. " ..-,'N;
"'" .... ' .. '
.....,...: '."' ,;
Si noti che siccome PC viene aggiornato con il contenuto di TABECC (che per
ipotesi fa parte della Iogica eli CPU) al prossimo clock verra fatto iI fetch della
prima istruzione della routine di servizio, mentre nella pipeline ci saranno solo
bolle, eccetto che nello stadia WE dove ora si trova l'istruzione interrotta per
eccezione in ME.
L'eccezione si manifesta nella state EX.
Differisce rispetto al caso precedente per il solo fatto che inserisce una bolla in IF
e ill e vanifica l'effetta dell'istruzione in EX, mentre l'istruzione in ME viene fatta
1) svuotare 1a pipeline a monte, inserendo una bolla in IF, ID ed EX, annullando
al tempo stesso l'eventuale lettura/scrittura in memoria;
2) imporre che il PC dell1istruzione seguente venga scritto in R29. A tal fine
oecorre: (i) prevedere it campo PCI su tutti i registri di pipeline, in modo
che p08sa propagarsi fino a116 stadia WBj (ii) prevedere un selettore che in
fase WB consenta, come terza possibilitll., la acelta del campo ME/WB.PCI.
Rispetto agli schem.i visti si tratta di aggiungere un se1ettore (a valle di queUo
comandato da MemToReg) piIotato dalla linea PClToReg; (iii) scrivere 29
nel campo ME/WB.RW; (iv) asserire ME/WB.RWrite;
3) copiare in PC il contenuto della posizione TABECC individuata in base a1
tipo di eccezione
32
.
Veccezione si maniesta nello stato ME.
Si tratta eli:
L'eccezione determina l'annullamento dell'operazione tentata dall'istruzione che
la determina. Le assunzioni precedenti comportano che la routine di servizio, una
volta trattata l'eccezione, ritorni all'istruzione successiva. Non sempre questa di
modalita. di funzionamento ecarretta. Per esempio, nel casa di ecceziane dovuta a
page fault, l'istruzione che la determina deve essere rieseguita dopa che la pagimi.
estata portata in memoria (Cfr. 8.2). Senza perdere di generalita e al fine di
non modificare 1a struttura della nostra pipeline (ci si riferisce in particolare al
fatto che il campo PCI contenga il valore del PC deWistruzione ehe segue), si
puo assumere che, per Ie eccezioni che richiedono 1a riesecuzione delle istruzioni
che Ie generano, 1a routine di gestione aggiusti I'indirizzo di ritorno (saltando cioe
aiPistruzione che precede quella indirizza.ta da R29).
.
npassaggio alIa routine di servizio comparta it salvataggio dell'indirizzo di ritorno
nel registra R29, che viene destinato a questo solo scopa. La routine di servizio'
si conclude con l'istruzione RFE che ha l'effetto di un saito indiretto attraverso
R29, oltre che riahilitare il sistema di rilevamento delle eccezioni.
3
2
Si tratta bana.1mente di dare un numero a tutte Ie eccezioni ed entrare in TABECC in base a
esso.
Per servire l'eccezione oecorre anzitutto identificare 10 stadio in cui si emanifes
tata. Si hanno Ie seguenti possihilita.
276 Capitolo 6
0
I
278 Capitola 6
,
m/D
EX/" "1'1l
\
LB iii SUB
I I
LV
I I
ADD II HUL
B, LD Rl,100(R2)
ST 200(Rl),R3
A: LD Rl,100(R2)
ST 200(R3) .Rl
La. pipeline 279
.36Yale comunque 1a pena di osservare roe con la struttura della no.stra pipeline, il rilevamento delle
interruzioni esterne PUQ restare in IF, infatti, il verificarsi di un'eccezione per via di un'istruzione che
e aneora in pipeline, permette aneora di disfarsi de1!e eventuali istruziooi entrate, in quanta esse Don
possono aver progredito fino al punta cia aver introdotto modifiche allo stata di macehina (peraitro,
il PC relativo all'interruzione non e stato Meara sa.lvato perche non e aneora arrivat9 ailo stadio
WB).
Si supponga che 1a macchina non disponga di alcun aceorgimento per evitare Ie condi-
zioni di conflitto. Si determinino:
a) il numero di stalli per Ie sequenze A e Bi
b) Ie relazioni che danno Ie condizioni di stallo.
Si supponga di realizzare la rete corrispondente aile relazioni del punto b) e si indichi
con X la relativa uscita (X vero in presenza di eonfiitto). Si tracci 10 schema logico
della rete che sfrutta X per la generazione delle bolle.
Supponendo ora che si voglia dotare la macchina di reti di by-pass per evitare gli
stalli, epossibile costruire una rete di by-pass che'elimina tutti gli stalli?
Si disegni 1a rete di by-pass, riportando (e sale parti di interesse della pipeline (in
particolare, i latch con i campi impiegati dalla rete che eomanda Uby-pass).
6.15 Esercizi
LD RG, 40(R2)
ADD R3, RG, Rl
Esercizio 6.1 La completa esecuzione di una istruzione passa attraverso 5 stach.
Ordinatamente, i 5 stadi richiedono: 50, 30
1
50, 50 e 40 nanosecondi. Si assuma che
ogni stadio si eomp1eti in un cicio di clock. Se si realizza la macchina in forma pipeline
occorre prevedere che i latch tra gli stadi prendano ulteriori 5 ns.
Quale frequenza di clock si richiede Del caso senza pipeline?
Qual ela frequenza (massima) di clock per il caso con la pipeline?
Qual eil guadagno massimo teorico che si ottiene con la pipeline?
Esercizio 6,2 In riferimento al nostro modelio di pipeline e aI Dostro modelio
tetturale, 5i considerino Ie due sequenze di istruzioni A e B.
Esercizio 6.3 Si supponga che la macchina possegga l'unita. di by-pass e si consideri
180 sequenza di istruzioni '
manifesta Peccezione, con cio eliminando anche Ie eventuali istruzioni della routine di
servizio deUe interruzioni esterne gia earieate.
La soluzione piiJ ovvia consiste nel portare il rilevamento delle interruzioni esterne
ailo stadio ME: se non ee eccezione l'interruzione puo essere servita tranquillamente,
se invece, mentre viene rilevata Ia richiesta di intenuzione esterna, si manifesta un'ee-
cezione in qua!siasi stadio, l'interruzione esterna cede i1 passo a quest'ultima, per via
della minor priorita.
36
.

t.ll1t!! '.'"

, ,Lil,1
"lr ",I
'
, t,),.,
...;,
.;:/
, "l:'.!
.. "'," ' ... .. ' ,.
""".,
"',"
""\Ik,' ','",
,' ... ,

:.), ':" j
'. I.. "" .'
.. . ' ..',
.... ,
.;'..
,
:' ,:.. :.
,...."lrW :" ,.'
..... ", I ..
;'."WjlIj ,:1 "
','
... f.f . '

,'. .".
("I,) ',;,; ."
':"0;. ',..,
',:-:-;r,.'
.....'1., ." ,
". 'I c,
!
'.,',::.
" '", .
"::'?:!'I.
..tj:... .
. Ij;!'. '.
.... 'I .
..,,,. \:./. ,
,....'- \,
v' 'J' , 1 '
',:.-'tj,1 "
":Wj'lr ' .. "
",,'jl,.!,.
"'." ' .. .. ,
"-"'l"..-.il .. J . ,
".
.....;1 '"
." ,"'A,
'0{' ".
",.,' r"'J,
' .. ',' ', ..
;;'I
r
;... ",
,..':lilll , ")":
" l':' j
t
"'
1
*"
.',."j. "
.
' ,,'Q,'j ..
"'.-..;;: -', ..',
'':''<;, """"'.
. ' .'0;..;0.,
'IS ':'!:::",(.;"
.
n :"""',, 'j
':,.' 1'1 "l'1'...."'.i.
il"fI',i. ,'"' """,.,


' .;'"ii:\ , )
,. ";' l .., ....
-'" .

"i' r "' .
' ..... I'
'I"'l .. ...
, ..h."
'; .',iZ':i" ."t",.. 'I
' "." .. '
'
..... ' III. : "'.,'"
"1'.Jj. ,',."

''':u.! !::..,, __
.-"f;;os
.. ..
' .....""., .. / ....
'f "11 ".' :'\, ,
":1'-,"':''-
''!t\Il:' .. ".

.,..... -".
-" , .
'. "f,
I' .,
i"l"Y'
.1,.
...
" ...' ..
"',,!III 'i '.

'. ""',.,
:1"'-'1'
'.:'1 ,t\..
.. ,...:,
j:. ...,
'.t ".'0'
" ,
.. . ..
. ,
"'f'I,'.,. '
"It ' . ',

"/' '<;'1 .,;
. "
'. I ',. _

'\"',' .. '
[....,.;0,. : ...."
: -:;, .
" 'f!',. ..;' .. ,
"',
, 'i\.' , \
""
":'" "'. .
.
,It',.. ..

",
-.. ,Ii,
,.....fli1
....
ADD
"1'1l
LV
tXjla
SUB
m;",
"I"
6.14.1 Eccezioni e interruzioni esterne
NelJlesposizione precedente si e 3UPPOSto che i1 repertorio di istruzioni presentasse
l'istruzione RFE per il ritorno dal servizio delle eccezioni. Si tratta di un'ipotesi poco
realistica fatt'a solo per ragioni espositive. Nella pratica si usa un solo codice operativo
(RFI), sia per Ie interruzioni esterne ebe per Ie eccezioni. Cio presuppone ebe la logica
di macchina abbia memoria, all'atto dell'esecuzione di RFI, del fatto che l'istruzione
debba prelevare da R.30 0 da R29.
Se si vuole usare un unico registro (R30) aoche per il salvataggio del PC, occone
ipotizzare ebe quando viene servita un'interruzione esterna venga disabilitato l'intero
sistema di interruzione (comprese quindi Ie eccezioni). In questo modo, il programma-
tore ha lao possibilita. di salvare il contenuto di R30 all'inizio della routine di servizio
dell'interruzione esterna e quindi riabilitare Ie interruzioni attraverso un'istruzione
esplicita
3
\ con cio consentendo di nuovo it lore manifestarsi. L'esecuzione di RFI
deve in questo caso essere preceduta da! ripristino del contenuto di R30
ss
.
Al Paragrafo 6.13.2 si era fatta I'ipotesi ebe Ie interruzioni esterne venissero rile-
vate (e trattate) in fase IF. Se si vuole rendere Ie interruzioni esterne meno prioritarie
delle eccezioni, dando a queste ultime la possibilita. di interrompere Ie routine di ser-
vizio delle prime, non epili consentito avviare 1a routine di servizio delle interruzioni
esterne in IF. Infatti se cio accadesse e Sl verificasse, a un clock successivo, un'ec-
cezione da parte di un'istruzione alleora non uscita dalla pipeline, questa andrebbe
svuotata in tutte Ie posizioni a monte di quella corrispondente allo stadio in cui si
34n noetro repenorio noD prevede una tale istruzione, rna non e'e rnacchina reale che non ne sia
dotata..
35Alternativamente si pub stabilire che l'istruzione RFI possa specificare il registro per it ritomo,
diventa.ndo del tutto simile alla JR, salvo l'azione di riabilitazione del sistema. di interruzione.
Figura 6.51 Tratt"amento precise delle eccezioni. Sopta: l'eccezione in IF determina un'ee.
cezione (FAdEr); in IF/ID viene introdotta una pseudo bolla che tenderebbe a propagarsi
verso 10 stadia WB, per arrivare a. scrivere in R29 l'indirizzo salvato in PCl. Satta: L'ecce-
zione in ME porta. all'introduzione di una analoga pseudo bolla in ME e alla svuotamento
di tutti i precedenti stadi. (In figura il fonnarsi di una bolla eindicato tratteggia.ndo l'in-
tera registro, mentre il formarsi eli una pseudo bolla e indicata tratteggiando la parte alta
ed evidenzia.ndo il campo pel. Evidentemente, nel caso di pseudo bolla sono significativi
anche i campi OP su IF/ID e i campi WB, e RW su lD/EX, EX/ME e ME/WB.)
II
f
1
I
I
I
1
I
I
I
I
, )
0
I
278 Capitola 6
,
m/D
EX/" "1'1l
\
LB iii SUB
I I
LV
I I
ADD II HUL
B, LD Rl,100(R2)
ST 200(Rl),R3
A: LD Rl,100(R2)
ST 200(R3) .Rl
La. pipeline 279
.36Yale comunque 1a pena di osservare roe con la struttura della no.stra pipeline, il rilevamento delle
interruzioni esterne PUQ restare in IF, infatti, il verificarsi di un'eccezione per via di un'istruzione che
e aneora in pipeline, permette aneora di disfarsi de1!e eventuali istruziooi entrate, in quanta esse Don
possono aver progredito fino al punta cia aver introdotto modifiche allo stata di macehina (peraitro,
il PC relativo all'interruzione non e stato Meara sa.lvato perche non e aneora arrivat9 ailo stadio
WB).
Si supponga che 1a macchina non disponga di alcun aceorgimento per evitare Ie condi-
zioni di conflitto. Si determinino:
a) il numero di stalli per Ie sequenze A e Bi
b) Ie relazioni che danno Ie condizioni di stallo.
Si supponga di realizzare la rete corrispondente aile relazioni del punto b) e si indichi
con X la relativa uscita (X vero in presenza di eonfiitto). Si tracci 10 schema logico
della rete che sfrutta X per la generazione delle bolle.
Supponendo ora che si voglia dotare la macchina di reti di by-pass per evitare gli
stalli, epossibile costruire una rete di by-pass che'elimina tutti gli stalli?
Si disegni 1a rete di by-pass, riportando (e sale parti di interesse della pipeline (in
particolare, i latch con i campi impiegati dalla rete che eomanda Uby-pass).
6.15 Esercizi
LD RG, 40(R2)
ADD R3, RG, Rl
Esercizio 6.1 La completa esecuzione di una istruzione passa attraverso 5 stach.
Ordinatamente, i 5 stadi richiedono: 50, 30
1
50, 50 e 40 nanosecondi. Si assuma che
ogni stadio si eomp1eti in un cicio di clock. Se si realizza la macchina in forma pipeline
occorre prevedere che i latch tra gli stadi prendano ulteriori 5 ns.
Quale frequenza di clock si richiede Del caso senza pipeline?
Qual ela frequenza (massima) di clock per il caso con la pipeline?
Qual eil guadagno massimo teorico che si ottiene con la pipeline?
Esercizio 6,2 In riferimento al nostro modelio di pipeline e aI Dostro modelio
tetturale, 5i considerino Ie due sequenze di istruzioni A e B.
Esercizio 6.3 Si supponga che la macchina possegga l'unita. di by-pass e si consideri
180 sequenza di istruzioni '
manifesta Peccezione, con cio eliminando anche Ie eventuali istruzioni della routine di
servizio deUe interruzioni esterne gia earieate.
La soluzione piiJ ovvia consiste nel portare il rilevamento delle interruzioni esterne
ailo stadio ME: se non ee eccezione l'interruzione puo essere servita tranquillamente,
se invece, mentre viene rilevata Ia richiesta di intenuzione esterna, si manifesta un'ee-
cezione in qua!siasi stadio, l'interruzione esterna cede i1 passo a quest'ultima, per via
della minor priorita.
36
.

t.ll1t!! '.'"

, ,Lil,1
"lr ",I
'
, t,),.,
...;,
.;:/
, "l:'.!
.. "'," ' ... .. ' ,.
""".,
"',"
""\Ik,' ','",
,' ... ,

:.), ':" j
'. I.. "" .'
.. . ' ..',
.... ,
.;'..
,
:' ,:.. :.
,...."lrW :" ,.'
..... ", I ..
;'."WjlIj ,:1 "
','
... f.f . '

,'. .".
("I,) ',;,; ."
':"0;. ',..,
',:-:-;r,.'
.....'1., ." ,
". 'I c,
!
'.,',::.
" '", .
"::'?:!'I.
..tj:... .
. Ij;!'. '.
.... 'I .
..,,,. \:./. ,
,....'- \,
v' 'J' , 1 '
',:.-'tj,1 "
":Wj'lr ' .. "
",,'jl,.!,.
"'." ' .. .. ,
"-"'l"..-.il .. J . ,
".
.....;1 '"
." ,"'A,
'0{' ".
",.,' r"'J,
' .. ',' ', ..
;;'I
r
;... ",
,..':lilll , ")":
" l':' j
t
"'
1
*"
.',."j. "
.
' ,,'Q,'j ..
"'.-..;;: -', ..',
'':''<;, """"'.
. ' .'0;..;0.,
'IS ':'!:::",(.;"
.
n :"""',, 'j
':,.' 1'1 "l'1'...."'.i.
il"fI',i. ,'"' """,.,


' .;'"ii:\ , )
,. ";' l .., ....
-'" .

"i' r "' .
' ..... I'
'I"'l .. ...
, ..h."
'; .',iZ':i" ."t",.. 'I
' "." .. '
'
..... ' III. : "'.,'"
"1'.Jj. ,',."

''':u.! !::..,, __
.-"f;;os
.. ..
' .....""., .. / ....
'f "11 ".' :'\, ,
":1'-,"':''-
''!t\Il:' .. ".

.,..... -".
-" , .
'. "f,
I' .,
i"l"Y'
.1,.
...
" ...' ..
"',,!III 'i '.

'. ""',.,
:1"'-'1'
'.:'1 ,t\..
.. ,...:,
j:. ...,
'.t ".'0'
" ,
.. . ..
. ,
"'f'I,'.,. '
"It ' . ',

"/' '<;'1 .,;
. "
'. I ',. _

'\"',' .. '
[....,.;0,. : ...."
: -:;, .
" 'f!',. ..;' .. ,
"',
, 'i\.' , \
""
":'" "'. .
.
,It',.. ..

",
-.. ,Ii,
,.....fli1
....
ADD
"1'1l
LV
tXjla
SUB
m;",
"I"
6.14.1 Eccezioni e interruzioni esterne
NelJlesposizione precedente si e 3UPPOSto che i1 repertorio di istruzioni presentasse
l'istruzione RFE per il ritorno dal servizio delle eccezioni. Si tratta di un'ipotesi poco
realistica fatt'a solo per ragioni espositive. Nella pratica si usa un solo codice operativo
(RFI), sia per Ie interruzioni esterne ebe per Ie eccezioni. Cio presuppone ebe la logica
di macchina abbia memoria, all'atto dell'esecuzione di RFI, del fatto che l'istruzione
debba prelevare da R.30 0 da R29.
Se si vuole usare un unico registro (R30) aoche per il salvataggio del PC, occone
ipotizzare ebe quando viene servita un'interruzione esterna venga disabilitato l'intero
sistema di interruzione (comprese quindi Ie eccezioni). In questo modo, il programma-
tore ha lao possibilita. di salvare il contenuto di R30 all'inizio della routine di servizio
dell'interruzione esterna e quindi riabilitare Ie interruzioni attraverso un'istruzione
esplicita
3
\ con cio consentendo di nuovo it lore manifestarsi. L'esecuzione di RFI
deve in questo caso essere preceduta da! ripristino del contenuto di R30
ss
.
Al Paragrafo 6.13.2 si era fatta I'ipotesi ebe Ie interruzioni esterne venissero rile-
vate (e trattate) in fase IF. Se si vuole rendere Ie interruzioni esterne meno prioritarie
delle eccezioni, dando a queste ultime la possibilita. di interrompere Ie routine di ser-
vizio delle prime, non epili consentito avviare 1a routine di servizio delle interruzioni
esterne in IF. Infatti se cio accadesse e Sl verificasse, a un clock successivo, un'ec-
cezione da parte di un'istruzione alleora non uscita dalla pipeline, questa andrebbe
svuotata in tutte Ie posizioni a monte di quella corrispondente allo stadio in cui si
34n noetro repenorio noD prevede una tale istruzione, rna non e'e rnacchina reale che non ne sia
dotata..
35Alternativamente si pub stabilire che l'istruzione RFI possa specificare il registro per it ritomo,
diventa.ndo del tutto simile alla JR, salvo l'azione di riabilitazione del sistema. di interruzione.
Figura 6.51 Tratt"amento precise delle eccezioni. Sopta: l'eccezione in IF determina un'ee.
cezione (FAdEr); in IF/ID viene introdotta una pseudo bolla che tenderebbe a propagarsi
verso 10 stadia WB, per arrivare a. scrivere in R29 l'indirizzo salvato in PCl. Satta: L'ecce-
zione in ME porta. all'introduzione di una analoga pseudo bolla in ME e alla svuotamento
di tutti i precedenti stadi. (In figura il fonnarsi di una bolla eindicato tratteggia.ndo l'in-
tera registro, mentre il formarsi eli una pseudo bolla e indicata tratteggiando la parte alta
ed evidenzia.ndo il campo pel. Evidentemente, nel caso di pseudo bolla sono significativi
anche i campi OP su IF/ID e i campi WB, e RW su lD/EX, EX/ME e ME/WB.)
II
f
1
I
I
I
1
I
I
I
I
, )
280 Capitolo 6
LD Rl, 220
LD R2, 100
ADD
R3, Ri, R2
ADD
R4, R3, Rl
JMP qUALCHE]ARTE
Esercizio 6.4 Si consideri 1a sequenza di istruzioni che scambia il contenuto di due
parole di memoria:
-
-
-
I-
-
-
-
-
I
1-
\ -
1-
I-
\
1-
I
\ -
\
1 .
)
1
}
281 La pipeline
Esercizio 6.11 Facendo riferimento aBo schema di Figura6.49 si supponga ora di
rinunciare all'impiego di sa e ehe il servizio dell'interruzione preveda il salvataggio
del PC di ritorno in R30. Si assuma anche che questa registro venga utilizzato solo a
questa scopo. Si disegnino Ie modifiche cia apportare alia pipeline.
Esercizio 6.12 Si faceia l'ipotesi di avere 130 tabella TABffi in memoria MI. Mante-
nendo Ie ipotesi del Paragrafo 6.13.2 e supponendo che suI bus delle istruzioni compaia
i1 se1ettore del1'interruzione al ciclo successivo a queUo in cui viene asserito INTR, 5i
analizzi come S1 modifica fa pipeline e si pragetti la relativa logica.
Esercizio 6.13 Con Ie ipotesi del Paragrafo 6.14 si definiscano i valori che devono
essere scritti nei campi di comando di EX/ME in caso di eccezione in fase EX.
Esercizio 6.14 In riferimento al modello di trattamento delle eccezioni di cui nel
Paragrafo 6.14, si 'faccia l'ulteriore ipotesi semplificativa di avere un unieo indirizzo
per la routine di servizio delle eceezioni, nel registro di CPU ?eER. 8i tracci la logica
per la propagazione di PCI e per 1a sua scrittura in R29 all'arrivo nello stadio WB.
Esercizio 6.15 In riferimento al modello eli delle eccezioni di cui nel
Paragrafo 6.14 e alla Tabella 6.11, si disegni la logica che serve l'eceezione nell'ipotesi
di impiegare la tavo1a di registri TABECC (Attenzione: ci sono due eccezioni che
si manifestano in ID, dunque TABECC non pub essere indicizzata solo in base aIlo
stadio dell'eceezione) .
Esercizio 6.16 In riferimento al modelio di trattamento delle eccezioni di cui nel
Paragrafo 6.14, si supponga che non esista I'istruzione RFE per il ritorno dalie ec-
cezioni e che si debba sempre usare 130 RFI. Come si pub tener conto del fatto che
la RFI sta concludendo il servizio di un'eccezione 0 di un'interruzione esterna? Se
inoltre si ipotizza che sia Ie eccezioni che le interruzioni esterne salvino PC in R.30,
ehe conseguenze si hanno?
Esercizio 6.17 In base aile priorits, di Tabella 6.11, assurnendo che le interruzioni
esterne vengano rilevate in IF, si esamini cosa accade nel caso in cui un'istruzione
ancpra in pipeline eausi un'eceezione uno 0 due clock dopo quello relativo al rico-
noscimento di un'interruzione esterna. Verificare se questa situazione fa perdere 1a
Esercizio 6.10 Facendo riferimento a110 schema di Figura6.49 5i supponga di voler
trattare l'interruzione nella stadio ill 0 EX (si tenga conto ebe nello stadio EX pe-
trebhe esserci un'istruzione di saito cbe sta modificando PC). Quale tra ID ed EX e
inutilizzabile per trattare l'interruzione?
Esercizio 6.9 8i ipotizzi un'eccezione FAdEr, e si assuma che suI clock successivo la
logica sia in grado di effettuare il prelievo della prima istruzione della relativa routine
di servizio. 8i supponga ora che l'istruzione ehe precede quella che ha generato FAdEr
provochi un'eccezione (in EX 0 in ME). Si verifichi che, qualunque siano Ie prime
istruzioni della routine di servizio, esse non possono modificare 10 stato di macchina.
Esercizio 6.8 Facendo riferimento alta Figura6.49 si verifichi che in IFIID.PCI si
trova l'indirizzo dell'istruzione che verra ripresa al termine del trattamento dell'inter-
ruzione.
..
. .
, .;. >
,.;""; ...
," .' J
,"'
Il' .
.. I' f ',--!, ,
,t7,
. ..
.. .- 2 )
"/1"'-"
.';iJ" .,.'-" ',:.
..
';
... ,... '."
""'"
.'/:. ',! :';,:",
. ,'.
...,. ffi , .
'".'itt, " .
.,. ,
''''t " ' ..
.. 11 .. ' ','
.....,.. "".. ..
"'lji' _I,
.' ,.
':.L,,'
.: ,
.,.-
'!,,,"'" '!..>"'-'.
' .. .."".
':!n"":-
..,'..
: ...
: ('.
'-:'\
.,'
.. j"""':,. -
.:.:. 1',1,>:".
.;-":'".
,;.I!., ; __'.\,:
" .. " , .......
: ,.. .",
'.,:.,. ... ,."\ :..
f .... '.,.,,',
c.>,.:,: J
", r'l.(
.". " .... ,
8.1 ..,..& ..
(r'l'Ji' ;.'kJ-""',,
'
':> .. ,
, . ,(' ..'.
./ ..L,Ot;,
ol, t .'
.. -,.
',11 .. _ ,.
, .... 1." '.
"'." .. ' .
.':
, .. \
"

,c '>::,;".:,
: ':}:k\'
i
--
Po,' ,,,", ....,,, .
... ',.
"1'1, ..;',
.
.,' . ,
';'IQ:l, .::.:; :. '.'
't := ,; ,-
.',
:
... to, " "".
",X){ "',"
'
,:"-,:. ;.
"C' . ,
. ": "
. '.
" i" .'-
- I, ,." ..
".I.r,,<.' .', '
::':;'\"
':<":'::"
01);, I"'.,'..
.:,:-rt,"';
i ... ' ,.:.j ".
"\i .".....
':"j, .:", .
.,. '
h
:, "
I," r. '
, ,"
..,
.j".' ..
-:
... !.Ii.

.... , ..,
':I,"l;;.,i:"". '
".'.!" ,,;
, ,',. , .
;RS,= M[R2)
;R6,= M[R2+4)
;M[R2) := R6
;M[R2+4) := RS
LD R5, 0(R2)
LD R6, 4(R2)
ST 0(R2) , R6
ST 4(R2), RS
Quanti stalli si generano tra l'IF della prima istruzione e l'IF relativo all'istruzione in
posizione QUALCHEJ>ARTE? Come puo essere riorganizzata 1a sequenza in modo da
evitare 130 latenza. dovuta al JMP? Quanti staHi si evitana can tale riorganizzazione?
Esercizio 6.7 Si disegni 10 schema della parte di logiea che gestisce il contatore di
programma in presenza di BTB, in modo da consentire l'accesso e l'aggiornamento
di BTB e da rendere minima la penalizzazione in caso di fallimento. In riferimento a
quanto illustrato dalle Figure 6.41 e 6.42
7
130 logica deve essere in grado di sostituire il
PC mal predetto con queUo alternativo.
Esercizio 6.6 8i consideri una pipeline a 5 stadi: IF, ID, EX, MEM, WB. Nel caso
di operazioni di salto, il nuovo PC viene calcolato e modificato in EX. 8i supponga
che la macchina non possieda alcun meccanismo di ottimizzazione della pipeline e si
consideri il seguente tratto di codice:
Si richiede:
a) il numero di stalli dovuto a1 conflitto per R6 e 1a schematizzazione della pipeline
nel momento in cui l'istruzione ADD puo procederej
h) la relazione (0 Ie relazioni se piu di una) che esprime la condizione di stallo;
c) 10 schema logico che corrisponde alia relazione del punto b); indicando con X
l'tiscita della rete corrispondente, si schematizzi come X agisce (se agisce) suI Program
Counter (PC). Si indichi su quale (quali) latch e su quali dei suoi componenti agisce
X.
Si indichi se si hanno stalli e, in caso positivo, tra quali istruzioni. Se ci sono stalli si
indichi come possono essere ridotti a1 minimo 0 eliminati.
Esercizio 6.5 In riferimento al Dostro modello di a 5 stadi, si assuma che Ie
istruzioni di saIto eondizionato siano del tipo Jc OFFSET, dove OFFSET 10 seostamen-
to rispetto al PC. La condizione (indicata genericamente con c .nel codice simbolico
del saito) edeterminata dall'esecuzione dell'istruzione precedente.
1. Quanti cicli di stallo verrebbero introdotti nella pipeline in caso di condizione vera,
assumendo che il calcolo del valore del PC venga effettuato nello stadio EX dalPunica
ALU disponibile?
,
2. E possibile ridurre il numero di staliLutilizzando un sommatore aggiuntivo (solo
per PC e offset)? Di quanti cicli? In Quale stadio sarebbe aggiornato PC? !
3. In quale dei due precedenti casi enecessario memorizzare la condizione c all'uscita
deU'ALU?
280 Capitolo 6
LD Rl, 220
LD R2, 100
ADD
R3, Ri, R2
ADD
R4, R3, Rl
JMP qUALCHE]ARTE
Esercizio 6.4 Si consideri 1a sequenza di istruzioni che scambia il contenuto di due
parole di memoria:
-
-
-
I-
-
-
-
-
I
1-
\ -
1-
I-
\
1-
I
\ -
\
1 .
)
1
}
281 La pipeline
Esercizio 6.11 Facendo riferimento aBo schema di Figura6.49 si supponga ora di
rinunciare all'impiego di sa e ehe il servizio dell'interruzione preveda il salvataggio
del PC di ritorno in R30. Si assuma anche che questa registro venga utilizzato solo a
questa scopo. Si disegnino Ie modifiche cia apportare alia pipeline.
Esercizio 6.12 Si faceia l'ipotesi di avere 130 tabella TABffi in memoria MI. Mante-
nendo Ie ipotesi del Paragrafo 6.13.2 e supponendo che suI bus delle istruzioni compaia
i1 se1ettore del1'interruzione al ciclo successivo a queUo in cui viene asserito INTR, 5i
analizzi come S1 modifica fa pipeline e si pragetti la relativa logica.
Esercizio 6.13 Con Ie ipotesi del Paragrafo 6.14 si definiscano i valori che devono
essere scritti nei campi di comando di EX/ME in caso di eccezione in fase EX.
Esercizio 6.14 In riferimento al modello di trattamento delle eccezioni di cui nel
Paragrafo 6.14, si 'faccia l'ulteriore ipotesi semplificativa di avere un unieo indirizzo
per la routine di servizio delle eceezioni, nel registro di CPU ?eER. 8i tracci la logica
per la propagazione di PCI e per 1a sua scrittura in R29 all'arrivo nello stadio WB.
Esercizio 6.15 In riferimento al modello eli delle eccezioni di cui nel
Paragrafo 6.14 e alla Tabella 6.11, si disegni la logica che serve l'eceezione nell'ipotesi
di impiegare la tavo1a di registri TABECC (Attenzione: ci sono due eccezioni che
si manifestano in ID, dunque TABECC non pub essere indicizzata solo in base aIlo
stadio dell'eceezione) .
Esercizio 6.16 In riferimento al modelio di trattamento delle eccezioni di cui nel
Paragrafo 6.14, si supponga che non esista I'istruzione RFE per il ritorno dalie ec-
cezioni e che si debba sempre usare 130 RFI. Come si pub tener conto del fatto che
la RFI sta concludendo il servizio di un'eccezione 0 di un'interruzione esterna? Se
inoltre si ipotizza che sia Ie eccezioni che le interruzioni esterne salvino PC in R.30,
ehe conseguenze si hanno?
Esercizio 6.17 In base aile priorits, di Tabella 6.11, assurnendo che le interruzioni
esterne vengano rilevate in IF, si esamini cosa accade nel caso in cui un'istruzione
ancpra in pipeline eausi un'eceezione uno 0 due clock dopo quello relativo al rico-
noscimento di un'interruzione esterna. Verificare se questa situazione fa perdere 1a
Esercizio 6.10 Facendo riferimento a110 schema di Figura6.49 5i supponga di voler
trattare l'interruzione nella stadio ill 0 EX (si tenga conto ebe nello stadio EX pe-
trebhe esserci un'istruzione di saito cbe sta modificando PC). Quale tra ID ed EX e
inutilizzabile per trattare l'interruzione?
Esercizio 6.9 8i ipotizzi un'eccezione FAdEr, e si assuma che suI clock successivo la
logica sia in grado di effettuare il prelievo della prima istruzione della relativa routine
di servizio. 8i supponga ora che l'istruzione ehe precede quella che ha generato FAdEr
provochi un'eccezione (in EX 0 in ME). Si verifichi che, qualunque siano Ie prime
istruzioni della routine di servizio, esse non possono modificare 10 stato di macchina.
Esercizio 6.8 Facendo riferimento alta Figura6.49 si verifichi che in IFIID.PCI si
trova l'indirizzo dell'istruzione che verra ripresa al termine del trattamento dell'inter-
ruzione.
..
. .
, .;. >
,.;""; ...
," .' J
,"'
Il' .
.. I' f ',--!, ,
,t7,
. ..
.. .- 2 )
"/1"'-"
.';iJ" .,.'-" ',:.
..
';
... ,... '."
""'"
.'/:. ',! :';,:",
. ,'.
...,. ffi , .
'".'itt, " .
.,. ,
''''t " ' ..
.. 11 .. ' ','
.....,.. "".. ..
"'lji' _I,
.' ,.
':.L,,'
.: ,
.,.-
'!,,,"'" '!..>"'-'.
' .. .."".
':!n"":-
..,'..
: ...
: ('.
'-:'\
.,'
.. j"""':,. -
.:.:. 1',1,>:".
.;-":'".
,;.I!., ; __'.\,:
" .. " , .......
: ,.. .",
'.,:.,. ... ,."\ :..
f .... '.,.,,',
c.>,.:,: J
", r'l.(
.". " .... ,
8.1 ..,..& ..
(r'l'Ji' ;.'kJ-""',,
'
':> .. ,
, . ,(' ..'.
./ ..L,Ot;,
ol, t .'
.. -,.
',11 .. _ ,.
, .... 1." '.
"'." .. ' .
.':
, .. \
"

,c '>::,;".:,
: ':}:k\'
i
--
Po,' ,,,", ....,,, .
... ',.
"1'1, ..;',
.
.,' . ,
';'IQ:l, .::.:; :. '.'
't := ,; ,-
.',
:
... to, " "".
",X){ "',"
'
,:"-,:. ;.
"C' . ,
. ": "
. '.
" i" .'-
- I, ,." ..
".I.r,,<.' .', '
::':;'\"
':<":'::"
01);, I"'.,'..
.:,:-rt,"';
i ... ' ,.:.j ".
"\i .".....
':"j, .:", .
.,. '
h
:, "
I," r. '
, ,"
..,
.j".' ..
-:
... !.Ii.

.... , ..,
':I,"l;;.,i:"". '
".'.!" ,,;
, ,',. , .
;RS,= M[R2)
;R6,= M[R2+4)
;M[R2) := R6
;M[R2+4) := RS
LD R5, 0(R2)
LD R6, 4(R2)
ST 0(R2) , R6
ST 4(R2), RS
Quanti stalli si generano tra l'IF della prima istruzione e l'IF relativo all'istruzione in
posizione QUALCHEJ>ARTE? Come puo essere riorganizzata 1a sequenza in modo da
evitare 130 latenza. dovuta al JMP? Quanti staHi si evitana can tale riorganizzazione?
Esercizio 6.7 Si disegni 10 schema della parte di logiea che gestisce il contatore di
programma in presenza di BTB, in modo da consentire l'accesso e l'aggiornamento
di BTB e da rendere minima la penalizzazione in caso di fallimento. In riferimento a
quanto illustrato dalle Figure 6.41 e 6.42
7
130 logica deve essere in grado di sostituire il
PC mal predetto con queUo alternativo.
Esercizio 6.6 8i consideri una pipeline a 5 stadi: IF, ID, EX, MEM, WB. Nel caso
di operazioni di salto, il nuovo PC viene calcolato e modificato in EX. 8i supponga
che la macchina non possieda alcun meccanismo di ottimizzazione della pipeline e si
consideri il seguente tratto di codice:
Si richiede:
a) il numero di stalli dovuto a1 conflitto per R6 e 1a schematizzazione della pipeline
nel momento in cui l'istruzione ADD puo procederej
h) la relazione (0 Ie relazioni se piu di una) che esprime la condizione di stallo;
c) 10 schema logico che corrisponde alia relazione del punto b); indicando con X
l'tiscita della rete corrispondente, si schematizzi come X agisce (se agisce) suI Program
Counter (PC). Si indichi su quale (quali) latch e su quali dei suoi componenti agisce
X.
Si indichi se si hanno stalli e, in caso positivo, tra quali istruzioni. Se ci sono stalli si
indichi come possono essere ridotti a1 minimo 0 eliminati.
Esercizio 6.5 In riferimento al Dostro modello di a 5 stadi, si assuma che Ie
istruzioni di saIto eondizionato siano del tipo Jc OFFSET, dove OFFSET 10 seostamen-
to rispetto al PC. La condizione (indicata genericamente con c .nel codice simbolico
del saito) edeterminata dall'esecuzione dell'istruzione precedente.
1. Quanti cicli di stallo verrebbero introdotti nella pipeline in caso di condizione vera,
assumendo che il calcolo del valore del PC venga effettuato nello stadio EX dalPunica
ALU disponibile?
,
2. E possibile ridurre il numero di staliLutilizzando un sommatore aggiuntivo (solo
per PC e offset)? Di quanti cicli? In Quale stadio sarebbe aggiornato PC? !
3. In quale dei due precedenti casi enecessario memorizzare la condizione c all'uscita
deU'ALU?
,
7
1Ii Pentium Pro, per esempio, contiene due cache di 8 kbyte di primo livello e una cache di secondo
Iivello, a.lloggiata sullo stesso supporto ceramico della CPU, di 256 kbyte.
zLe operazioni di scrittura comportano qualche complicazione in piu rispetto alia letturaj per
questa motivo, per il momento, si considerano Ie sole operazioni di lettura.
leggere il dato dalla memoria principale;
7.1 Funzionamento della memoria cache
Spendiamo due parole per spiegare il criterio generate di funzionamento della cache,
riferendoci a una operazione di lettura in memoria
2
. Un'operazione di lettura si svolge
nel modo seguente.
1. La CPU genera l'iD:dirizzo I e iI comando di lettura.
2. Se it dato alPindirizzo T di memoria centrale non ein cache si ha un miss. In
,
caso di miss enecessario:'
La memoria cache
Al Capitolo 3 abbiamo visto che il principia di localita. spazio-temporale dei riferimenti
alIa memoria generati dall'esecuzione dei programmi suggerisce di interporre tra CPU
e memoria centrale una memoria piccola, molto veloce. La memoria in questione viene
detta cache. Tipicamente una memoda cache eda 20 a 1000 volte piu piccola della
memoria centrale, rna eanche 5-20 volte piu veloce.
Se ben progettata la cache rencle apparente alia CPU una memoria della dimen-
sione di quella centrale e una velocita. pari quasi a quella della cache. Ovviamente,
essendo impossibile che it cento per cento dei riferimenti trovi i dati in cache, la velo-
cita di questa rappresenta illimite superiore teorico at delle prestazioni
deUa memoria.
La tecnica deUe memorie cache enata negli anni '60. nprimo sistema a presentare
una memoria cache fu 11 modello 360/85 introdotto dall'IBM nel 1969. Progresslva-
mente, can l'avvento di microprocessori sempre piu veioci, la tecnica earrivata fino alle
workstation e ai personal computer. A partire dagli anw novanta, i microprocessori
di categoria alta presentano, integrate suI chip, una 0 piu memorie cache
l
.



" .. ,.,"
W

.
" tW.'
,,'
I" r.... ..
;

./....,
'" ' ; -
,., J"
.<i"t"
,.....,t'.' .',

,
' ..
".".. ,
..,.. .. "

;:"-",,c .
'", ',,",!,
"1_ ....1'.:-
:.... ' ,
,.. -- ;.', ,.:...
'"jl\:;:':;' .
.. {': ':,
o v ;.';;".1,'. '
'.
,
, "'"1"-,0
....' .... <
.'".hc:n- ;:f" ,'.
,( ,},",:x . J.,.,
.'

, ..
.... -.'
,.,:rt'1,,,
... ', ".' , ,.,. .....
..:,.1"'-'
..,.", .
.. ;'t'l:l ::-:.:>':-'.'
': ;;.. ,
'.. "
:J;!ibt!,-..'",''lfl:
..,..-}.,.. '
. ,r.',: ,,' , ..
.""1 . , ....'... ..
.. { ',
.."v.{ .
.... I:', "
,.,'.."",, ,",' "'"
; ,I"; ':,' ", .,'+,
" .
", I
. ..,. ."""x'
:::i,'..:",'
.. A. ", ,
>i/o{ .,'j\
....'>1":.... ,. '
.,.,. ,.::' ....
,. _,,., ,.".cy.
, ("f'!.'..< ' .'
.
;It
'
' . .T.
:.,
,';i,,".
.. ..
'
";.' ",., ."
)7\;:>1.
,:..

...----- .>-...
.',';
"0'.1'-, .' '
., . c. ,., " .,
.. o:"hl
... '"
,. f'rJlf.
,fI,:;l<' '1'i//"':
,. , "' .... -"
I. ,.-,'4; -,
. "a ::

",.",i!'
"

?l.'l" ,,'.
.."" .. "
, .. "
I
':1' .
""
....

.
.. ',' .-
y.! ,"...,.-.
,'. ; ;" i"' '
..

'., .. ,;,." ('/'
. ,.:to U".
'".';, .. ,
"" . '''
.... ' ;j. , .
, .. .t.. , .,"
, 5,,, '.'
.,,1-' '.' .,'

,.,.:'" .
.,. ...,. '"
,:."." ..

. "...
. '."'_'f;it..:;,
, >
,"'.,
"."'" ",
....... ..,
'
'.
".'1".' .J, ..:.'
'i,,,,,-Ji'",r''" ,
.
,.... I" '..
..,..,' . ,',

"tJ' ,..
t;".,q
".,' .". .
,
.. ' ..:,,' i'
,.:...,
., . ,.1'
"' ".,:;11 T:f; ' . .
, '1"'I""
'X'':". '. '.11"'''','.
, , .'"
,._, 1:
1

'lll'" ,
, ,i..
. I [U
-I '
MDI
IF ID
ME
1,18
FU
I MDF
-I

Figura 6.52 Schema. della pipeline multifunzionale dell'Esercizio 6.18.


consistenza rispetto al madelia sequenziale e se non enecessaria portare il rilevamento
delle interruzioni esterne in ME (si tenga seropre presente che Ie interruzioni esterne
sono del tutto asincrone rispetto all'esecuzione dei programmi).
Esercizio 6.18 5i consideri una pipeline .multifunzionale come quella di Figura 6.52.
Lo stadia EX prevede 4 unita funzionali: IU (per tutte Ie operazioni tra interi eccetto
moltiplicazione e divisione)j MDI (per la moltiplicazionejdivisione tra inted)j FU
(per Ie operazioni tra floating eccetto moltiplicazione e divisione)j FMDU (per 1a
moltiplicazionejdivisione tra floating). Le 4 unita funzionali richiedono i seguenti,
differenti periodi di clock per effettuare Ie relative operazioni:
IU: 1; MDl: 2; FU: 2; MDF: 3;
Lo stadia ill, trasmette Ie istruzioni alle appropriate unita funzionali se queste sono
libere. Richiedendo Ie differenti unita funzionali tempi diversi, la conclusione delle
[..i EX pub risultare non in ordine: la logica dl CPU procede alle [..I ME e WB
dell'eventuale istruzione che ha terminato in EX prima di una precedente, solo se
cio. non comporta confiitti (eli qualunque natura) con Ie altre istruzioni poel testo. Si
consideri questa sequenza di istruzioni:
ADD R3. Rl, R2 ;Somma tra interi
LD R4, 100 (Rl) ;
MUL R5, R3, R4 ;Moltiplicazione tra interi
ADDF F4. F5, F6 ;Somma tra floating
OIVF Fl. F8, F9 jDivisione tra floating
Si calcoli il numero eli clock che intercorrono tra quello relativo alIa fase IF della prima
istruzione e queUo relativo al completamento dell'ultima istruzione (primo e ultimo
clock compresi), nell'ipotesi the la ma<;china non presenti una rete eli by-pass, ne altro
accorgimento per ridurre gli stalli.
Si ripeta il calcolo supponendo che ci sia una rete di by-pass.
Nell'ipotesi che la macchina non presenti una rete di by-pass, ne altro accorgi-
menta per ridurre gli stalli, si riordinino le istruzioni in modo the il numero di stalli
sia minima. Si valutino i numeri di clock come sopra (Si suggerisce di schematizza.r::e
il cantenuta della pipeline in riferimento aUe sequenze di istruzioni).
282 Capitola 6
I
I
)
\
I
(
I
.1
\
I
I
l
,
I
I
I
,
,
7
1Ii Pentium Pro, per esempio, contiene due cache di 8 kbyte di primo livello e una cache di secondo
Iivello, a.lloggiata sullo stesso supporto ceramico della CPU, di 256 kbyte.
zLe operazioni di scrittura comportano qualche complicazione in piu rispetto alia letturaj per
questa motivo, per il momento, si considerano Ie sole operazioni di lettura.
leggere il dato dalla memoria principale;
7.1 Funzionamento della memoria cache
Spendiamo due parole per spiegare il criterio generate di funzionamento della cache,
riferendoci a una operazione di lettura in memoria
2
. Un'operazione di lettura si svolge
nel modo seguente.
1. La CPU genera l'iD:dirizzo I e iI comando di lettura.
2. Se it dato alPindirizzo T di memoria centrale non ein cache si ha un miss. In
,
caso di miss enecessario:'
La memoria cache
Al Capitolo 3 abbiamo visto che il principia di localita. spazio-temporale dei riferimenti
alIa memoria generati dall'esecuzione dei programmi suggerisce di interporre tra CPU
e memoria centrale una memoria piccola, molto veloce. La memoria in questione viene
detta cache. Tipicamente una memoda cache eda 20 a 1000 volte piu piccola della
memoria centrale, rna eanche 5-20 volte piu veloce.
Se ben progettata la cache rencle apparente alia CPU una memoria della dimen-
sione di quella centrale e una velocita. pari quasi a quella della cache. Ovviamente,
essendo impossibile che it cento per cento dei riferimenti trovi i dati in cache, la velo-
cita di questa rappresenta illimite superiore teorico at delle prestazioni
deUa memoria.
La tecnica deUe memorie cache enata negli anni '60. nprimo sistema a presentare
una memoria cache fu 11 modello 360/85 introdotto dall'IBM nel 1969. Progresslva-
mente, can l'avvento di microprocessori sempre piu veioci, la tecnica earrivata fino alle
workstation e ai personal computer. A partire dagli anw novanta, i microprocessori
di categoria alta presentano, integrate suI chip, una 0 piu memorie cache
l
.



" .. ,.,"
W

.
" tW.'
,,'
I" r.... ..
;

./....,
'" ' ; -
,., J"
.<i"t"
,.....,t'.' .',

,
' ..
".".. ,
..,.. .. "

;:"-",,c .
'", ',,",!,
"1_ ....1'.:-
:.... ' ,
,.. -- ;.', ,.:...
'"jl\:;:':;' .
.. {': ':,
o v ;.';;".1,'. '
'.
,
, "'"1"-,0
....' .... <
.'".hc:n- ;:f" ,'.
,( ,},",:x . J.,.,
.'

, ..
.... -.'
,.,:rt'1,,,
... ', ".' , ,.,. .....
..:,.1"'-'
..,.", .
.. ;'t'l:l ::-:.:>':-'.'
': ;;.. ,
'.. "
:J;!ibt!,-..'",''lfl:
..,..-}.,.. '
. ,r.',: ,,' , ..
.""1 . , ....'... ..
.. { ',
.."v.{ .
.... I:', "
,.,'.."",, ,",' "'"
; ,I"; ':,' ", .,'+,
" .
", I
. ..,. ."""x'
:::i,'..:",'
.. A. ", ,
>i/o{ .,'j\
....'>1":.... ,. '
.,.,. ,.::' ....
,. _,,., ,.".cy.
, ("f'!.'..< ' .'
.
;It
'
' . .T.
:.,
,';i,,".
.. ..
'
";.' ",., ."
)7\;:>1.
,:..

...----- .>-...
.',';
"0'.1'-, .' '
., . c. ,., " .,
.. o:"hl
... '"
,. f'rJlf.
,fI,:;l<' '1'i//"':
,. , "' .... -"
I. ,.-,'4; -,
. "a ::

",.",i!'
"

?l.'l" ,,'.
.."" .. "
, .. "
I
':1' .
""
....

.
.. ',' .-
y.! ,"...,.-.
,'. ; ;" i"' '
..

'., .. ,;,." ('/'
. ,.:to U".
'".';, .. ,
"" . '''
.... ' ;j. , .
, .. .t.. , .,"
, 5,,, '.'
.,,1-' '.' .,'

,.,.:'" .
.,. ...,. '"
,:."." ..

. "...
. '."'_'f;it..:;,
, >
,"'.,
"."'" ",
....... ..,
'
'.
".'1".' .J, ..:.'
'i,,,,,-Ji'",r''" ,
.
,.... I" '..
..,..,' . ,',

"tJ' ,..
t;".,q
".,' .". .
,
.. ' ..:,,' i'
,.:...,
., . ,.1'
"' ".,:;11 T:f; ' . .
, '1"'I""
'X'':". '. '.11"'''','.
, , .'"
,._, 1:
1

'lll'" ,
, ,i..
. I [U
-I '
MDI
IF ID
ME
1,18
FU
I MDF
-I

Figura 6.52 Schema. della pipeline multifunzionale dell'Esercizio 6.18.


consistenza rispetto al madelia sequenziale e se non enecessaria portare il rilevamento
delle interruzioni esterne in ME (si tenga seropre presente che Ie interruzioni esterne
sono del tutto asincrone rispetto all'esecuzione dei programmi).
Esercizio 6.18 5i consideri una pipeline .multifunzionale come quella di Figura 6.52.
Lo stadia EX prevede 4 unita funzionali: IU (per tutte Ie operazioni tra interi eccetto
moltiplicazione e divisione)j MDI (per la moltiplicazionejdivisione tra inted)j FU
(per Ie operazioni tra floating eccetto moltiplicazione e divisione)j FMDU (per 1a
moltiplicazionejdivisione tra floating). Le 4 unita funzionali richiedono i seguenti,
differenti periodi di clock per effettuare Ie relative operazioni:
IU: 1; MDl: 2; FU: 2; MDF: 3;
Lo stadia ill, trasmette Ie istruzioni alle appropriate unita funzionali se queste sono
libere. Richiedendo Ie differenti unita funzionali tempi diversi, la conclusione delle
[..i EX pub risultare non in ordine: la logica dl CPU procede alle [..I ME e WB
dell'eventuale istruzione che ha terminato in EX prima di una precedente, solo se
cio. non comporta confiitti (eli qualunque natura) con Ie altre istruzioni poel testo. Si
consideri questa sequenza di istruzioni:
ADD R3. Rl, R2 ;Somma tra interi
LD R4, 100 (Rl) ;
MUL R5, R3, R4 ;Moltiplicazione tra interi
ADDF F4. F5, F6 ;Somma tra floating
OIVF Fl. F8, F9 jDivisione tra floating
Si calcoli il numero eli clock che intercorrono tra quello relativo alIa fase IF della prima
istruzione e queUo relativo al completamento dell'ultima istruzione (primo e ultimo
clock compresi), nell'ipotesi the la ma<;china non presenti una rete eli by-pass, ne altro
accorgimento per ridurre gli stalli.
Si ripeta il calcolo supponendo che ci sia una rete di by-pass.
Nell'ipotesi che la macchina non presenti una rete di by-pass, ne altro accorgi-
menta per ridurre gli stalli, si riordinino le istruzioni in modo the il numero di stalli
sia minima. Si valutino i numeri di clock come sopra (Si suggerisce di schematizza.r::e
il cantenuta della pipeline in riferimento aUe sequenze di istruzioni).
282 Capitola 6
I
I
)
\
I
(
I
.1
\
I
I
l
,
I
I
I
,
284 Capitolo 7
copiarlo in cache, tenendo traccia delPindirizzo 1, in modo che eventuali
riferimenti futuri trovino iI dato in cache.
3. 5e invece il date ein cache si ha un hit. In case di hit il dato viene direttamente
letto dalla cache', senza interessare la memoria centrale.
I punti sopra elencati evidenziano alcune questioni relative alia gestione e all 'or-
ganizzazione della cache.
Anzitutto si rencle necessario tenere traccia dei dati contenuti nella cache. A
tale scopo e necessaria prevedere un catalogo (directory), che consenta di ricercare
il dato in base all'indirizzo generato dalla CPU. La struttura del catalogo dipende
dall'organizzazione della cache, Di essa si parla nel seguito (Gfr. 7.1.1).
Un altro aspetto importante riguarda la quantita di informazione (di dati) che
si leggono dalla memoria e si portano in cache a seguito di un miss. Dalla descri-
zione precedente sembrerebbe che venga portato in cache il solo dato cui viene fatto
riferimento. Pero, se si tiene conto del principio di localita. spaziale, ci si convince
subito che conviene copiare in cache Mche it contenuto di un blocco di celIe di me-
moria principale contigue a quella indirizzata, avendo queste una elevata probabilita.
di essere indirizzate nell'immediato futuro. Per questa motivo, 1a memoria cache e
la memoria centrale vengono viste come insiemi di (piccoli) blocchi di dimensione
fissa detti linee. La linea el'unita di informazione trasferita tra memoria principale
e cache. Ovviamente la linea viene trasferita in blocco
3
, in modo cia ridurre il tempo
medio di trasferimento del singolo dato (rispetto al caso' del trasferirnento di un dato
alIa volta)'
Per quanto si riferisce all'organizzazione della cache, e rilevante il modo con
cui si associano Ie linee della memoria centrale a quelle della cache, ovvero il modo
in cui si determina Quale posizione in cache andra a riempire una linea letta dana
memoria centrale. In teoria . della memoria principal b essere co iata
in ualunque linea di cache' si arIa alIora dl ac e co et ciativa. II
caso lametr mente opposto si ha quando una linea di memoria Qrincipale viene

nella stessa .pas;z;one di cache; sj parla allora di cgdie a


dire _ . Come lll'i:iS'Gato piu avanti, ambedue Ie organizzazioni presentano
un ceno numero di vantaggi e di svantaggi. n compromesso consiste nell'adottare
detta associativa a pill vieS ,
Nella parte che segue assumeremo tendenzialmente di avere a che fare con una moder-
na CPU a 32 bit. Piu. precisamente, si ipotizza che Ie letture in memoria corrispondenti
al fetch delle istruzioni abbiano Petretto di trasferire sempre 32 bit e che la lettura
avvenga solo per parole allineate, ovvero a un indirizzo multiplo di 4 (aderendo alIa
convenzione universalmente adottata secondo cui gli indirizzi sana comunque associati
ai byte)6. Diverso eil caso di lettura/scrittura di un dato, in quanto epossibile che it

3Questa tecnica. viene detta. trasferimento in modo bUf.Jt.


4Sembra superfluo aggiungere che Ie posizioni delle linee sono fisse, sia in cache e in memoria
centrale. In altri termini, una linea non va riguaxdata. come una finestra centrata suUa locaz;ione
indirizzata, bensl come un blocco di locazioni di memoria. 0 di cache in posizione predefinita.
llsata questa dizione per l'anglosassone .Jet a.uociative.
6Negli anni novanta. hanna fatto comparsa a1cuni modelli di microprocessod che trasferiscono da
cache 64 e talvolta 128 bit alia volta.
j"';''.
:\l1l""
TIlj;,,1
:
..
''Ii ' ...<

,
J' . ,


.
I
, '. '.
.
irS-i>'
.- '- " ."
"'.';.
.,'-,-.
,-",.
, .'
j"
La memoria- cache 285
trasferimento riguardi una parola, rna ancbe di una mezza parola 0 un singolo byte.
Se viene trasferita una paroIa, aHora questa deve comunque es5ere allineata, se invece
si tratta di mezza parola 0 di un byte, la CPU genera meora un indirizzo multiplo di
4, rna emette anche gli opportuni segnali in modo da selezionare la parte di interesse
7
,
Per il momento, nella descrizione delle differenti organizzazioni di cache, ci si riferisce
aile sole operazioni di lettura. .
7.1.1 Cache a mappatura diretta
La mappatura diretta prevede che una data linea di memoria venga sempre mappata
nena stessa posizione in cache. Per fissare Ie idee si assuma di avere:
una cache di capacita. pari a L = 2
1
lineej
linee di W = 2
w
parole, ovvero una capacita. di cache pari a C = L x W parole;
una memoria centrale della dimensione di B = 2
b
blocchi, multipla della dimen-
sione della cache.
L'indirizzo di una parola viene quindi riguardato come in Figura 7.1.
b I w
IB IL
IW
Figura 7.1 Struttura dell'indirizzo. n campo lunge b bit. identmca il numero di blocco in
memoria, il eampo lungo l identifiea il Dumero di linea Del blocco, mentre il campo lunge w
identifica il Dumero di pa.rola entro 1a linea. Nat.uralmente, assumendo tutti zeri a destra,
IB rappresental'indirizzo (di partenza) del bloceo, h l'indirizzo della linea nel blocco e Iw
l'indirizzo della parola. nella linea.
Con la mappatura diretta tutte Ie B linee in posizione h entro un qualunque
blocco di memoria, vengono mappate sulla linea IL di cache, come schematizzato in
Figura 7.2.
L'organizzazione della cache e illustrata in Figura 7.3. Si noti che in realta. 1a
cache si compone di due distinti banchi di memoria. n banco di destra (DATA) ha
1a funzione di contenere i dati, mentre il banco di sinistra rappresenta il catalogo
dei dati contenuti nell'aItr9 banco. Ovviamente,' ogni posizione nel banco di destra
corrisponde a una linea dt cache, mentre ogni posizione nel banco di sinistra ha la
dimensione pari a quella del campo fB dell'indirizzo generato 9alla CPU (per questo
motivo it banco di sinistra viene correntemente indicato come TAG RAM, mentre
quello di destra viene denominato DATA RAM).
Riferendos! alla Figura7.3 efacile ,piegare it meccanismo della mappatura duet-
ta:
-
7r microprocessori Intel, dal 386 in poi, usano Ie \inee BEo.BE
I
,BE'}. ... per identificare i byte
entro la parola. (BE sta per Byte Enable).
I
1
I
I
\ .
\
I
I .

I
I
I-
f
-
I.
f .

i .
284 Capitolo 7
copiarlo in cache, tenendo traccia delPindirizzo 1, in modo che eventuali
riferimenti futuri trovino iI dato in cache.
3. 5e invece il date ein cache si ha un hit. In case di hit il dato viene direttamente
letto dalla cache', senza interessare la memoria centrale.
I punti sopra elencati evidenziano alcune questioni relative alia gestione e all 'or-
ganizzazione della cache.
Anzitutto si rencle necessario tenere traccia dei dati contenuti nella cache. A
tale scopo e necessaria prevedere un catalogo (directory), che consenta di ricercare
il dato in base all'indirizzo generato dalla CPU. La struttura del catalogo dipende
dall'organizzazione della cache, Di essa si parla nel seguito (Gfr. 7.1.1).
Un altro aspetto importante riguarda la quantita di informazione (di dati) che
si leggono dalla memoria e si portano in cache a seguito di un miss. Dalla descri-
zione precedente sembrerebbe che venga portato in cache il solo dato cui viene fatto
riferimento. Pero, se si tiene conto del principio di localita. spaziale, ci si convince
subito che conviene copiare in cache Mche it contenuto di un blocco di celIe di me-
moria principale contigue a quella indirizzata, avendo queste una elevata probabilita.
di essere indirizzate nell'immediato futuro. Per questa motivo, 1a memoria cache e
la memoria centrale vengono viste come insiemi di (piccoli) blocchi di dimensione
fissa detti linee. La linea el'unita di informazione trasferita tra memoria principale
e cache. Ovviamente la linea viene trasferita in blocco
3
, in modo cia ridurre il tempo
medio di trasferimento del singolo dato (rispetto al caso' del trasferirnento di un dato
alIa volta)'
Per quanto si riferisce all'organizzazione della cache, e rilevante il modo con
cui si associano Ie linee della memoria centrale a quelle della cache, ovvero il modo
in cui si determina Quale posizione in cache andra a riempire una linea letta dana
memoria centrale. In teoria . della memoria principal b essere co iata
in ualunque linea di cache' si arIa alIora dl ac e co et ciativa. II
caso lametr mente opposto si ha quando una linea di memoria Qrincipale viene

nella stessa .pas;z;one di cache; sj parla allora di cgdie a


dire _ . Come lll'i:iS'Gato piu avanti, ambedue Ie organizzazioni presentano
un ceno numero di vantaggi e di svantaggi. n compromesso consiste nell'adottare
detta associativa a pill vieS ,
Nella parte che segue assumeremo tendenzialmente di avere a che fare con una moder-
na CPU a 32 bit. Piu. precisamente, si ipotizza che Ie letture in memoria corrispondenti
al fetch delle istruzioni abbiano Petretto di trasferire sempre 32 bit e che la lettura
avvenga solo per parole allineate, ovvero a un indirizzo multiplo di 4 (aderendo alIa
convenzione universalmente adottata secondo cui gli indirizzi sana comunque associati
ai byte)6. Diverso eil caso di lettura/scrittura di un dato, in quanto epossibile che it

3Questa tecnica. viene detta. trasferimento in modo bUf.Jt.


4Sembra superfluo aggiungere che Ie posizioni delle linee sono fisse, sia in cache e in memoria
centrale. In altri termini, una linea non va riguaxdata. come una finestra centrata suUa locaz;ione
indirizzata, bensl come un blocco di locazioni di memoria. 0 di cache in posizione predefinita.
llsata questa dizione per l'anglosassone .Jet a.uociative.
6Negli anni novanta. hanna fatto comparsa a1cuni modelli di microprocessod che trasferiscono da
cache 64 e talvolta 128 bit alia volta.
j"';''.
:\l1l""
TIlj;,,1
:
..
''Ii ' ...<

,
J' . ,


.
I
, '. '.
.
irS-i>'
.- '- " ."
"'.';.
.,'-,-.
,-",.
, .'
j"
La memoria- cache 285
trasferimento riguardi una parola, rna ancbe di una mezza parola 0 un singolo byte.
Se viene trasferita una paroIa, aHora questa deve comunque es5ere allineata, se invece
si tratta di mezza parola 0 di un byte, la CPU genera meora un indirizzo multiplo di
4, rna emette anche gli opportuni segnali in modo da selezionare la parte di interesse
7
,
Per il momento, nella descrizione delle differenti organizzazioni di cache, ci si riferisce
aile sole operazioni di lettura. .
7.1.1 Cache a mappatura diretta
La mappatura diretta prevede che una data linea di memoria venga sempre mappata
nena stessa posizione in cache. Per fissare Ie idee si assuma di avere:
una cache di capacita. pari a L = 2
1
lineej
linee di W = 2
w
parole, ovvero una capacita. di cache pari a C = L x W parole;
una memoria centrale della dimensione di B = 2
b
blocchi, multipla della dimen-
sione della cache.
L'indirizzo di una parola viene quindi riguardato come in Figura 7.1.
b I w
IB IL
IW
Figura 7.1 Struttura dell'indirizzo. n campo lunge b bit. identmca il numero di blocco in
memoria, il eampo lungo l identifiea il Dumero di linea Del blocco, mentre il campo lunge w
identifica il Dumero di pa.rola entro 1a linea. Nat.uralmente, assumendo tutti zeri a destra,
IB rappresental'indirizzo (di partenza) del bloceo, h l'indirizzo della linea nel blocco e Iw
l'indirizzo della parola. nella linea.
Con la mappatura diretta tutte Ie B linee in posizione h entro un qualunque
blocco di memoria, vengono mappate sulla linea IL di cache, come schematizzato in
Figura 7.2.
L'organizzazione della cache e illustrata in Figura 7.3. Si noti che in realta. 1a
cache si compone di due distinti banchi di memoria. n banco di destra (DATA) ha
1a funzione di contenere i dati, mentre il banco di sinistra rappresenta il catalogo
dei dati contenuti nell'aItr9 banco. Ovviamente,' ogni posizione nel banco di destra
corrisponde a una linea dt cache, mentre ogni posizione nel banco di sinistra ha la
dimensione pari a quella del campo fB dell'indirizzo generato 9alla CPU (per questo
motivo it banco di sinistra viene correntemente indicato come TAG RAM, mentre
quello di destra viene denominato DATA RAM).
Riferendos! alla Figura7.3 efacile ,piegare it meccanismo della mappatura duet-
ta:
-
7r microprocessori Intel, dal 386 in poi, usano Ie \inee BEo.BE
I
,BE'}. ... per identificare i byte
entro la parola. (BE sta per Byte Enable).
I
1
I
I
\ .
\
I
I .

I
I
I-
f
-
I.
f .

i .

,
BUS DATI
dal pro"usore
IB
IL
"
I
I
TAO RAM
DATA RAM
-----
----
hit \ OE
COMPARAT,
SEL
/
I
T
mr;s
Quando una linea di memoria pub essere copiata in qualunque posizione di cache,
questa viene detta completamente associativa, per il fatto me la TAG RAM si com-
porta effettivamente come una memoria associativa, ovvero come una memoria CAM
(Content Addressable Memory).
Foiche Ie linee di memoria non 5i mappano in cache in posizioni predefinite, ogni
linea di memoria ha un proprio univoco jndi'rizzo, Ix. Tale indirizzo deve essere me-
morizzato in TAG RAM; dunque, 1a TAG RAM deve essere costituita da L posizioni
di t = b+ I bit.
La schema di una cache completamente associativa viene mostrato in Figura 7.4.
Essa mette in evidenza che il campo Ix dell'indirizzo viene' confrontato in parallelo
con it contenuto di ciascuna locazione della TAG RAM. Se il Ix epresente viene
aSserita l'indicazione di hit e il dato viene Jetto da cache. In caso di miss accorre
accedere alIa memoria principale.
A differenza del caso della mappatura diretta, a fronte di un miss e necessaria
programmi hanno localita. tale da coinvolgere due blocchi di memoria, a ogni passaggio
da un blocco a Paltro Ie linee di cache vengono necesaarlamente sostituite, abbassando
le prestazioni complessive della cache_ Nonostante questo, in pill di uno studio eo stata
dimostrata, attraverso dati sperimentali [Hil88], la bonta. della mappatura diretta,
anche in paragone aile organizzazioni illustrate qui di seguito.
-,,". '
{?j,!'"
'
La memoria. cache 287
." _ 1
..
.,.,...
""".,..
'l 1,f".,
,
L'J ;:(i"" ,

'
,
,
. ,:"
I
'.. ..
"'i"i':"
..;\,.;' .....
Il!,c l;jt' , '
,.

I?: .,
.;
..
;)u!' ),","


,
\':'fi.d"!;
,
::'
.,. ..
.,;:,.,;-, .. "
,;',;.\:.";--'
1
'1"'"
j;\ ''1r.. "
, ",','
"
....
-
''','' .
., "nd"
.. i J ,

ofI>,"',' "

tiP""
" . .,..:1'
I:

',e,. ,

"

"'"-"':,
, ;y.'
.. ,"
'f' .:",
.. ";;' .
.",' ,v
Figura 1.3 Cache a mappat.ura diret.ta
,'t1'J,,:,' '
..
' ...a '.,
"".,,, ",j.,- .
. ..
,.' " " ."",, .'
'
,'.:
'::< m:, }li!"';:j;i
, i '
';/io'll'''it"
"
:"'f!

- ... " ....
. ,. t.!t .. ,f" "J'" '
, ..' '
;"
....... .
... ,' ,. --,
" "\' '""\',.,, .
, " '"'' \l .' .
,.:.}"l\ .-''':
",:b ...
..,,,",'" '.<:1>"" , ..
..
' ..
7.1.2 Cache completamente associativa
r
'(J .....
.
'!::i;lIFt! -: ....
::(f/."' :
. "" ,,,;t. ..

';qt'flJ ,.
.'-'
':':':i'L,"
;o,.,p<.'- _-'
.. "l ."'" ",:'."
-; "." 1'. j-'i'j;,-", ,
- 1;:&'
,,' .. ';-')l ".
-;"';"..
. ... "'
..
",""
."",\1' ":"',
.\..
...
,,',-,,' I'
"".'" ..
',1:,;'" "...... ,
."" "'''-''
. ,(("....
.- ";' 'it '
... .-, ;'.'
)">
.;..",:.1.
, .. ....
:"j'"
('l .' ".,.'"
'. 'i
'
" .' ,.
. ( .. ',," ..
:; ,... "_d,_"
- ': ,.",

:\C?
"iT"' ,...
.' ',",'i', "t'
.or.. .'


.
, ',Ii
.. ''I ,...'Ii... "
inea k
810""0 I
BloC'CO 0
Linea k
MEMORIA
-
UUClI k
...
CACHE
'0
.. J)CCD
n' ,
'IA......J.,Q... .. .,

...
, - ,,;)
"r . -;;L,..,. I I
,.
,
,
=til
JL

-'"-1
-
'S6 Capitola 7
ncontenuto di questa posizione della TAG RAM viene confrontato con il campo
IB dell'indirizzo.
Se il confronto indica uguaglia.nza il date cercato si treva in cache e puo essere
letto direttamente da DATA RAM. Nella schematizzazione di Figura 7.3, Ia parte
bassa dell'indirizzo viene usata per selezionare 1a parola richiesta. La linea hit,
asserita a causa dell'esito positivo del confronto, abilita J'uscita dal multiplexer
della parola selezionata.
Se iJ confronto da. risultato negative la cache non contiene copia del contenuto
della locazione di memoria indirizzata. In questa caso la linea hit risulta di-
sasserita e si innesca un processo di lettura dalla memoria centrale della linea
contenente la locazione indirizzata. D campo IE dell'indirizzo viene copiato alIa
posizione h nella TAG RAM, mentre la linea letta viene copiata nella medesima
. posizione in DATA RAM.
Vale la pena di osservare che, con l'organizzazione di Figura 7.3
1
la ricerca in TAG
e in DATA RAM possono procedere in parallelo. Se il confronto tra I
B
e i1 contenuto
della posizione indirizzata in TAG RAM d. esito positivo, iI segnale di OE (Output
Enable) rende immediatamente disponibile la parola letta. '
La mappatura ctiretta rappresenta la soluzione pili irnmediata alla realizzazione di
'-ma memoria cache. L'inconveniente della mappatura diretta deriva dal fatto che se i
ncampo h dell'inditizzo permette di identificare la posizione della linea in DATA
e in TAG RAM,
Figura 7.2 Schema di principio della cache a mappatura diretta. Tutte Ie linee di una data,
posizione nei bloccbi vengono mappate sulla medesima linea di cache,
\
\
'[
\
I
I
I
\
\
,
I \
"
Linn k
Bloceo 2
\ I
,l
\1
Unea k
'I
I
eloccc n- 1
)
I
)
I I
.
,I
.

,
BUS DATI
dal pro"usore
IB
IL
"
I
I
TAO RAM
DATA RAM
-----
----
hit \ OE
COMPARAT,
SEL
/
I
T
mr;s
Quando una linea di memoria pub essere copiata in qualunque posizione di cache,
questa viene detta completamente associativa, per il fatto me la TAG RAM si com-
porta effettivamente come una memoria associativa, ovvero come una memoria CAM
(Content Addressable Memory).
Foiche Ie linee di memoria non 5i mappano in cache in posizioni predefinite, ogni
linea di memoria ha un proprio univoco jndi'rizzo, Ix. Tale indirizzo deve essere me-
morizzato in TAG RAM; dunque, 1a TAG RAM deve essere costituita da L posizioni
di t = b+ I bit.
La schema di una cache completamente associativa viene mostrato in Figura 7.4.
Essa mette in evidenza che il campo Ix dell'indirizzo viene' confrontato in parallelo
con it contenuto di ciascuna locazione della TAG RAM. Se il Ix epresente viene
aSserita l'indicazione di hit e il dato viene Jetto da cache. In caso di miss accorre
accedere alIa memoria principale.
A differenza del caso della mappatura diretta, a fronte di un miss e necessaria
programmi hanno localita. tale da coinvolgere due blocchi di memoria, a ogni passaggio
da un blocco a Paltro Ie linee di cache vengono necesaarlamente sostituite, abbassando
le prestazioni complessive della cache_ Nonostante questo, in pill di uno studio eo stata
dimostrata, attraverso dati sperimentali [Hil88], la bonta. della mappatura diretta,
anche in paragone aile organizzazioni illustrate qui di seguito.
-,,". '
{?j,!'"
'
La memoria. cache 287
." _ 1
..
.,.,...
""".,..
'l 1,f".,
,
L'J ;:(i"" ,

'
,
,
. ,:"
I
'.. ..
"'i"i':"
..;\,.;' .....
Il!,c l;jt' , '
,.

I?: .,
.;
..
;)u!' ),","


,
\':'fi.d"!;
,
::'
.,. ..
.,;:,.,;-, .. "
,;',;.\:.";--'
1
'1"'"
j;\ ''1r.. "
, ",','
"
....
-
''','' .
., "nd"
.. i J ,

ofI>,"',' "

tiP""
" . .,..:1'
I:

',e,. ,

"

"'"-"':,
, ;y.'
.. ,"
'f' .:",
.. ";;' .
.",' ,v
Figura 1.3 Cache a mappat.ura diret.ta
,'t1'J,,:,' '
..
' ...a '.,
"".,,, ",j.,- .
. ..
,.' " " ."",, .'
'
,'.:
'::< m:, }li!"';:j;i
, i '
';/io'll'''it"
"
:"'f!

- ... " ....
. ,. t.!t .. ,f" "J'" '
, ..' '
;"
....... .
... ,' ,. --,
" "\' '""\',.,, .
, " '"'' \l .' .
,.:.}"l\ .-''':
",:b ...
..,,,",'" '.<:1>"" , ..
..
' ..
7.1.2 Cache completamente associativa
r
'(J .....
.
'!::i;lIFt! -: ....
::(f/."' :
. "" ,,,;t. ..

';qt'flJ ,.
.'-'
':':':i'L,"
;o,.,p<.'- _-'
.. "l ."'" ",:'."
-; "." 1'. j-'i'j;,-", ,
- 1;:&'
,,' .. ';-')l ".
-;"';"..
. ... "'
..
",""
."",\1' ":"',
.\..
...
,,',-,,' I'
"".'" ..
',1:,;'" "...... ,
."" "'''-''
. ,(("....
.- ";' 'it '
... .-, ;'.'
)">
.;..",:.1.
, .. ....
:"j'"
('l .' ".,.'"
'. 'i
'
" .' ,.
. ( .. ',," ..
:; ,... "_d,_"
- ': ,.",

:\C?
"iT"' ,...
.' ',",'i', "t'
.or.. .'


.
, ',Ii
.. ''I ,...'Ii... "
inea k
810""0 I
BloC'CO 0
Linea k
MEMORIA
-
UUClI k
...
CACHE
'0
.. J)CCD
n' ,
'IA......J.,Q... .. .,

...
, - ,,;)
"r . -;;L,..,. I I
,.
,
,
=til
JL

-'"-1
-
'S6 Capitola 7
ncontenuto di questa posizione della TAG RAM viene confrontato con il campo
IB dell'indirizzo.
Se il confronto indica uguaglia.nza il date cercato si treva in cache e puo essere
letto direttamente da DATA RAM. Nella schematizzazione di Figura 7.3, Ia parte
bassa dell'indirizzo viene usata per selezionare 1a parola richiesta. La linea hit,
asserita a causa dell'esito positivo del confronto, abilita J'uscita dal multiplexer
della parola selezionata.
Se iJ confronto da. risultato negative la cache non contiene copia del contenuto
della locazione di memoria indirizzata. In questa caso la linea hit risulta di-
sasserita e si innesca un processo di lettura dalla memoria centrale della linea
contenente la locazione indirizzata. D campo IE dell'indirizzo viene copiato alIa
posizione h nella TAG RAM, mentre la linea letta viene copiata nella medesima
. posizione in DATA RAM.
Vale la pena di osservare che, con l'organizzazione di Figura 7.3
1
la ricerca in TAG
e in DATA RAM possono procedere in parallelo. Se il confronto tra I
B
e i1 contenuto
della posizione indirizzata in TAG RAM d. esito positivo, iI segnale di OE (Output
Enable) rende immediatamente disponibile la parola letta. '
La mappatura ctiretta rappresenta la soluzione pili irnmediata alla realizzazione di
'-ma memoria cache. L'inconveniente della mappatura diretta deriva dal fatto che se i
ncampo h dell'inditizzo permette di identificare la posizione della linea in DATA
e in TAG RAM,
Figura 7.2 Schema di principio della cache a mappatura diretta. Tutte Ie linee di una data,
posizione nei bloccbi vengono mappate sulla medesima linea di cache,
\
\
'[
\
I
I
I
\
\
,
I \
"
Linn k
Bloceo 2
\ I
,l
\1
Unea k
'I
I
eloccc n- 1
)
I
)
I I
.
,I
.
l w
Indirizzo del processore
288 Capitolo 7
-

\ -
I.
I.
I-
\
J
I' -
1 -
\
I-
I
\
.I
,
289
La memoria cache
, I
1B
I
IL'll... l
I
-1
T"C RAW
OAr... R.Ol.
---
---
COMPAR.
hitO
or SEt.

COMPAR. ,E sn
"-
BUS DATI
7.1.4 II problema della scrittura

miii
Figura 7.5 Schema di cache assaciativ:a a. due vie. Ciascuna via S1 camporta come una
cache a mappatura diretta. Le due linee hito e hitl abilitano l'uscita della via da in cui si
trova il data.
In.dirino d.l IIroeUlore
Una operazione di scrittura pub determinare un hit 0 un miss esattamente come una
operazione di lettura.
Con una memoria cache associativa a due vie, ciascuna linea della memoria prin-
cipale ha la possibilita. di essere mappata in due differenti linee di cache: alia posizione
h nel b3rI1cO di destra oppure in queUo di sinistra. In caso di miss occorre scegliere
in quale delle due vie debba essere copiata la linea di memoria che viene letta.
Per quanto si riferisce alia velocita. di accesso, a parita. di condizioni, questa orga-
-nizzazione ha prestazioni comparabili con 1a memoria a mappatura diretta. Dell'in-
fluenza dell'organizzazione della cache sulle prestazioni si parla pili diffusamente piu
avanti (CIr. 7.3).
gIl termine anglosasaone e tl-way Jet associatitle cache.
La cache completamente associativa ha un grado di associativita. pari al numero di
di cache. Se il grado di associativita. en si parla di memoria cache a n vie
9
In Figura 7.5 viene mostrato il diagramma a blocchi di una cache 3Ssociativa a
due vie. Si noti che, come nel c..o <Ii Figura 7.31a parte bassa deU'indirizzo seleziona
la paro1a effettivamente indirizzata, mentre Ie due linee hito e hitl abilitano 0 no uno
dei due selettori.

IX 1W
t
Y
,
l
o '"
)
l-
I ,"
I /
, ,
n DATA
0
0
TAG RAM
-
I RAM

-
n
>

0
'"
l
:...
IrL-11,"
1
I /
-
,
-
n'
Read
"
J
hlt/m!ss
.
.
7.1.3 Cache...Earzialmente associat.iva_
,
,
o
L-
8E; invalso il termine colorito di vittima per designare la Iin,ea di cache scelta per e3Sere sostituita
con il contenuto della linea d.i memoria.
BUS DATI
Figura 7.4 Schema di principia di una. cache campletamente assaciativa.
individuare Quale linea sostituire tra le L possibili
8
. Di questa problema si parla
diffusamente piu avantL
La ricerca della linea in DATA RAM puo avviarsi solo dopa che si econc1usa la
ricerca in TAG RAM. I relativi tempi di ricerca non possono essere sovrapposti come
ne] caso della mappatura diretta. Tendenzialmente questa organizzazione comporta
un tempo di accesso piu lungo. A cic si cleve aggiungere 1a maggior complicazione
circuitale e il conseguente maggior costo.
Le cache completamente associative sono molto costose da costruire. Spesso si ricorre
a soluzioni che mediano tra 13 semplicita. della mappatura diretta con la flessibilita
della completa associativita.
Si definisce Grado di AssociativitlLdi una cache il numero di posizioni del catalo 0
esserp conWm.t:a.te CQP il campo I R I ovver<? n e ill lVlduate
_attraverso I'lL. La cache a mappatura diretta ha un grade di associativlt pari a r.

l w
Indirizzo del processore
288 Capitolo 7
-

\ -
I.
I.
I-
\
J
I' -
1 -
\
I-
I
\
.I
,
289
La memoria cache
, I
1B
I
IL'll... l
I
-1
T"C RAW
OAr... R.Ol.
---
---
COMPAR.
hitO
or SEt.

COMPAR. ,E sn
"-
BUS DATI
7.1.4 II problema della scrittura

miii
Figura 7.5 Schema di cache assaciativ:a a. due vie. Ciascuna via S1 camporta come una
cache a mappatura diretta. Le due linee hito e hitl abilitano l'uscita della via da in cui si
trova il data.
In.dirino d.l IIroeUlore
Una operazione di scrittura pub determinare un hit 0 un miss esattamente come una
operazione di lettura.
Con una memoria cache associativa a due vie, ciascuna linea della memoria prin-
cipale ha la possibilita. di essere mappata in due differenti linee di cache: alia posizione
h nel b3rI1cO di destra oppure in queUo di sinistra. In caso di miss occorre scegliere
in quale delle due vie debba essere copiata la linea di memoria che viene letta.
Per quanto si riferisce alia velocita. di accesso, a parita. di condizioni, questa orga-
-nizzazione ha prestazioni comparabili con 1a memoria a mappatura diretta. Dell'in-
fluenza dell'organizzazione della cache sulle prestazioni si parla pili diffusamente piu
avanti (CIr. 7.3).
gIl termine anglosasaone e tl-way Jet associatitle cache.
La cache completamente associativa ha un grado di associativita. pari al numero di
di cache. Se il grado di associativita. en si parla di memoria cache a n vie
9
In Figura 7.5 viene mostrato il diagramma a blocchi di una cache 3Ssociativa a
due vie. Si noti che, come nel c..o <Ii Figura 7.31a parte bassa deU'indirizzo seleziona
la paro1a effettivamente indirizzata, mentre Ie due linee hito e hitl abilitano 0 no uno
dei due selettori.

IX 1W
t
Y
,
l
o '"
)
l-
I ,"
I /
, ,
n DATA
0
0
TAG RAM
-
I RAM

-
n
>

0
'"
l
:...
IrL-11,"
1
I /
-
,
-
n'
Read
"
J
hlt/m!ss
.
.
7.1.3 Cache...Earzialmente associat.iva_
,
,
o
L-
8E; invalso il termine colorito di vittima per designare la Iin,ea di cache scelta per e3Sere sostituita
con il contenuto della linea d.i memoria.
BUS DATI
Figura 7.4 Schema di principia di una. cache campletamente assaciativa.
individuare Quale linea sostituire tra le L possibili
8
. Di questa problema si parla
diffusamente piu avantL
La ricerca della linea in DATA RAM puo avviarsi solo dopa che si econc1usa la
ricerca in TAG RAM. I relativi tempi di ricerca non possono essere sovrapposti come
ne] caso della mappatura diretta. Tendenzialmente questa organizzazione comporta
un tempo di accesso piu lungo. A cic si cleve aggiungere 1a maggior complicazione
circuitale e il conseguente maggior costo.
Le cache completamente associative sono molto costose da costruire. Spesso si ricorre
a soluzioni che mediano tra 13 semplicita. della mappatura diretta con la flessibilita
della completa associativita.
Si definisce Grado di AssociativitlLdi una cache il numero di posizioni del catalo 0
esserp conWm.t:a.te CQP il campo I R I ovver<? n e ill lVlduate
_attraverso I'lL. La cache a mappatura diretta ha un grade di associativlt pari a r.

Si noti che il problema della consistenza tra cache e memoria centrale, discusso
sopra per il caso delle operazioni di scrittura della CPU, si pone anche nel caso degli
aggiornamenti di memoria fatti da processori di I/O 0 da canali DMA. Una
comune consiste nel tenere setto controllo il traffico suI bus di sistema e invalidare
ogni linea della cache che estata aggiornata da dispositivi eli I/O, Tale tecnica edetta
bus snooping 0 tecnica snoopy 10. Di essa si parla nel Paragrafo 7.5,2.
scrittura capitano ogni 5 accessi in memoria: un buffer eli una posizione sarebbe
mediamente sufficiente con una cache 5 volte piu veloce. Si osservi che nel caso
di movimento di grossi blocchi di dati, il buffer di scrittura viene rapidarnente
saturato e la sua presenza diventa ininfluente sillie prestazioni.
Un vantaggio notevole di questa tecnica deriva dal fatto che quando la linea viene
rimpiazzata non si pone il problema di ricepiarla in memoria come nel caso del
write-back descritto qui di seguito. Thttavia, il write-through ha 10 svantaggio
di incrementare it traffi.co sui bus di sistema, perche ciascuna scrittura forza un
trasferimento sul bus. E questo uno dei motivi per cui il metoda non eindicate
nei sistemi a multiprocessori con bus condiviso.
Preferiamo tenere
lOLetteralrnente, it verbo to .snoop significa ficcare il naso (negli affari aJtrui),
la dizione anglosassone.
Al paragrafo precedente si eosservato che in caso di scrittura differita si pone il pro-
blema del tener traccia del fatto che una data linea sia 0 no stata modificata durante

la sua permanenza in cache. E questa. una informazione di stato che deriva dalla par-
ticolare tecnica di gestione della cache, rna essa non e1a sola possibile informazione
di stato delle !inee di cache di cui oceana tener traccia.
E chiaro che dopo !'avvio del sistemail contenuto della cache non ha alcun signi-
ficato. La cache viene riempita mano a mano che i miss determinano il caricamento
,
delle linee dal1a memoria centrale, E dunque necessario che esista, almeno per ci-
, .
ascuna linea, un indicatore di validita. E suffieiente un bit che indichi linea valida
o linea non valida. All 'avvio del sistema tutti gli indicatori di validita. indicheranno
7.1.5 La stato della linea di cache
,
,"
.
,..
.. : La memoria cache 291

-
_.
'. '.'": .
"
>
1,1';11;.;1; _

.. ,', , ,
,.
..
,.,. ,,''''
""'.".",
:';\'1;" ;:. ,,;:,'
I,' -!'"' .' .
, rI r.," " ,
,.r,! .', '.... ,
'I., . ,'", '
\ .. ,''''''; .
... ""'.: .. ,,., '
.".'3' '., .. , ..
:.'::
.... '.1;'-'
':ii,;-',':::
.. ,t.., .;' .. .
, '1
1
'.' , ., ,
:.-,,,'i.,
: ".-',1' ' ..
. ;J_t., .... ,,,,_.,
,"":"" .: ,.",' ..1.."1. ,.-
"'00::, '" ,,; .",1
,"
, ."! "I"'" I I:" '
Scrittura differita In questa caso eprevisto l'a 'ornamento della
.. t .:;J'v:. 0 0 r IV memorIa 1 Slstema a un sec n 0 momento. II
. cat ogo della cache deve tenere traccla e e nee rno . cate dentro la cache
:': s ess3
1
assoclan a Cl na linea un In lcatore odifica il cosid-
'::t,;,::".. d.etto=_.di...rtii!Jt. momento in cm una inea di cache marcata come mo ca a
: viene scelta come vittima di Wl rimpiazzamento, essa viene ricopiata nella cor-
.:/?.:..\ 1. rispondente posizione in memoria di sistema. Se 1a linea non emarcata come
" ;"\il' \ ,,' ,
.7.*' modificata, il controllore di cache passa direttamente aI caricamento della linea
da memoria centrale,
- \":'I>'l .'.
. ,;\;y:;:,:.:,.:. Questa tecnica ha i1 vantaggio di permettere qualunque numero di acCesSl m
t;,;;:"\:::'.' scrittura alIa cache senza ritardare il processore e senza generare traffico sui bus.
.' J' ..,. ,,'
\, '," ",'I'"
""'"'1 " ,.
-.,',' ..,'.
C' . , , ..
'.".1; .,' '.,
'>ff' :':';i' ..

.... I""
-joJ.,
,..","\" '.r" .}.".;
...
, Ii .",,::;., .
.' ,',," "" ..'" '
::: ...
i::: -:
, ,':':"t!::,;' "",
" -,',.
... "
.. '.' " ,.
,I.e,.. :
.
"'0")'.' . '.' '
' .., ',.,.,,' .
'.>"' .'.'"
.
:... .. ",',
.,;!>! .... ' ."i"). ;.,
,:.>....', ".'
,.(,.';;!. ,.,,'. ,
'.. .;;" "."".,.'.,
., :;.-"t, ".;,.'" "
' . ",:,'
l :...
.... ..'.
.,;:!ti ':.
"i '
, ".,
I
,"'",:
, '1
.,.,....:.' .. ; ..."
..'.. " ,--
, :
'l:t "
1'0, .. , "
"./
.',::,

"":.\ ;'.
,
...
:Z..;. .< .'-
t , ' ..
. ' ,

, '... '
, .:,.;, ,
,:,y. ,., --'.
:.. ;;':if- ::"1
.. ,
. ".J' "'.,'
...';.A" 'F'.
,.:>11;, .. _'R
-":l:!ll1 .:'-:"
Assumendo che il fetch delle istruzioni sia equivalente a una 1ettura, si avrebbe
una operazione di scrittura ogni 4 operazioni di lettura, ovvero il 20% del totale
degli accessi alia memoria. Nella pratica Ie operazioni eli scrittura si manifestano
in percentuali piu basse.
A diHerenza delle operazioni .di fetch, per Ie quali, se viene letta la locazione
M i , e altamente probabile cbe l'istruzione successiva sia a.lJa locazione M
i
+
1
,
i riIerimenti ai dati possono essere alquanto sparsi e non e improbabile che la
generica scrittura sia a Wl indirizzo del tutto differente rispetto a queUo di prima.
Miss in scrittura In presenza di miss si pone il problema se portare 0 no la linea
di memoria in cache. Se la linea viene portata in cache si parla eli write allocate., nel
caso contrario si pacla di write non allocate.
Se si esc1udono Ie cache a mappatura diretta, il write-allocate richiede l'indivi.
duazione della linea eli cache in cui verdI. copiata la linea di memoria. Si tratta di
un aspetto fondamentale della gestione della cache; di esso 51 parla nel Paragrafo 7.2.
Con il write non-allocate, una scrittura ha il solo effetto di modificare il contenuto
della locazione di memoria centrale indirizzata, lasciando inalterata la cache.
La tecnica write non-allocate viene spesso preferita. A giustificazione della
preferenza ci sana Ie seguenti fagiani.
Le operazioni di scrittura si verificano con frequenza molta piu ba.'3sa rispetto
alle operazioni eli lettura. Un semplice conto esufficiente a spiegare questa af-
fermazione. Ipotiziamo che il profilo eli esecuzione del nostro programma sia
mediamente composto da:
o la scrittura del contenuto di un registro in memoria.
290 Capitola 7
o un'istruzione di lettura di un data in un registro;
o una operazione tra registri;
-
Hit in scrittura Nel caso di hit si ha un'altra complicazione: ' deve
c..Qntenere Carla dei...4ati-immagaz'Zi .. emoria rinei ale una scrittura in cache
il contenuto d;ea memoria centrale incPDsistente risp...ett;Qa..aue 0 1 cae e
. e riuett:.e:::resec1lZioAe..deI P'P?gr,amma;
Qi sana mo9i ..per la scrittura immediata
(write.through) e la scrittw:a-a:2.<?teriori 0 difIerita Jrite:'baCk c'-copy back. -
-
ScrjUul'a immediata l).Itte Ie scritture che aggiornano la cache vengono effettuate
anche in memoria centrale e eib garantisce la consistenza anclle se a discapito
delle prestazioni, in quanta !'effetto positivo della cache si sente solo in lettura.
Per alleviare questo inconveniente molte architetture prevedono un buffer in serit-
tura che opera per 10 mene alla ste&sa velocita della cache: n buffer di scrittura
elimina il tempo di latenza dovuto alia scrittura in memoria centrale e il proces-
sore puo procedere oltre. Purtroppo il buffer eefficace solo nel caso di scritture
isolate, che consentano 10 svuotamento del buffer nei tempi che intercorropo ....
tra scrittura e scrittura. Determinante risulta il rapporto di velocita
tra la cache e la memoria centrale. Con Ie ipotesi fatte sopra, Ie operazioni di
I
I,
\
\
(

I
I
I
/
I

Si noti che il problema della consistenza tra cache e memoria centrale, discusso
sopra per il caso delle operazioni di scrittura della CPU, si pone anche nel caso degli
aggiornamenti di memoria fatti da processori di I/O 0 da canali DMA. Una
comune consiste nel tenere setto controllo il traffico suI bus di sistema e invalidare
ogni linea della cache che estata aggiornata da dispositivi eli I/O, Tale tecnica edetta
bus snooping 0 tecnica snoopy 10. Di essa si parla nel Paragrafo 7.5,2.
scrittura capitano ogni 5 accessi in memoria: un buffer eli una posizione sarebbe
mediamente sufficiente con una cache 5 volte piu veloce. Si osservi che nel caso
di movimento di grossi blocchi di dati, il buffer di scrittura viene rapidarnente
saturato e la sua presenza diventa ininfluente sillie prestazioni.
Un vantaggio notevole di questa tecnica deriva dal fatto che quando la linea viene
rimpiazzata non si pone il problema di ricepiarla in memoria come nel caso del
write-back descritto qui di seguito. Thttavia, il write-through ha 10 svantaggio
di incrementare it traffi.co sui bus di sistema, perche ciascuna scrittura forza un
trasferimento sul bus. E questo uno dei motivi per cui il metoda non eindicate
nei sistemi a multiprocessori con bus condiviso.
Preferiamo tenere
lOLetteralrnente, it verbo to .snoop significa ficcare il naso (negli affari aJtrui),
la dizione anglosassone.
Al paragrafo precedente si eosservato che in caso di scrittura differita si pone il pro-
blema del tener traccia del fatto che una data linea sia 0 no stata modificata durante

la sua permanenza in cache. E questa. una informazione di stato che deriva dalla par-
ticolare tecnica di gestione della cache, rna essa non e1a sola possibile informazione
di stato delle !inee di cache di cui oceana tener traccia.
E chiaro che dopo !'avvio del sistemail contenuto della cache non ha alcun signi-
ficato. La cache viene riempita mano a mano che i miss determinano il caricamento
,
delle linee dal1a memoria centrale, E dunque necessario che esista, almeno per ci-
, .
ascuna linea, un indicatore di validita. E suffieiente un bit che indichi linea valida
o linea non valida. All 'avvio del sistema tutti gli indicatori di validita. indicheranno
7.1.5 La stato della linea di cache
,
,"
.
,..
.. : La memoria cache 291

-
_.
'. '.'": .
"
>
1,1';11;.;1; _

.. ,', , ,
,.
..
,.,. ,,''''
""'.".",
:';\'1;" ;:. ,,;:,'
I,' -!'"' .' .
, rI r.," " ,
,.r,! .', '.... ,
'I., . ,'", '
\ .. ,''''''; .
... ""'.: .. ,,., '
.".'3' '., .. , ..
:.'::
.... '.1;'-'
':ii,;-',':::
.. ,t.., .;' .. .
, '1
1
'.' , ., ,
:.-,,,'i.,
: ".-',1' ' ..
. ;J_t., .... ,,,,_.,
,"":"" .: ,.",' ..1.."1. ,.-
"'00::, '" ,,; .",1
,"
, ."! "I"'" I I:" '
Scrittura differita In questa caso eprevisto l'a 'ornamento della
.. t .:;J'v:. 0 0 r IV memorIa 1 Slstema a un sec n 0 momento. II
. cat ogo della cache deve tenere traccla e e nee rno . cate dentro la cache
:': s ess3
1
assoclan a Cl na linea un In lcatore odifica il cosid-
'::t,;,::".. d.etto=_.di...rtii!Jt. momento in cm una inea di cache marcata come mo ca a
: viene scelta come vittima di Wl rimpiazzamento, essa viene ricopiata nella cor-
.:/?.:..\ 1. rispondente posizione in memoria di sistema. Se 1a linea non emarcata come
" ;"\il' \ ,,' ,
.7.*' modificata, il controllore di cache passa direttamente aI caricamento della linea
da memoria centrale,
- \":'I>'l .'.
. ,;\;y:;:,:.:,.:. Questa tecnica ha i1 vantaggio di permettere qualunque numero di acCesSl m
t;,;;:"\:::'.' scrittura alIa cache senza ritardare il processore e senza generare traffico sui bus.
.' J' ..,. ,,'
\, '," ",'I'"
""'"'1 " ,.
-.,',' ..,'.
C' . , , ..
'.".1; .,' '.,
'>ff' :':';i' ..

.... I""
-joJ.,
,..","\" '.r" .}.".;
...
, Ii .",,::;., .
.' ,',," "" ..'" '
::: ...
i::: -:
, ,':':"t!::,;' "",
" -,',.
... "
.. '.' " ,.
,I.e,.. :
.
"'0")'.' . '.' '
' .., ',.,.,,' .
'.>"' .'.'"
.
:... .. ",',
.,;!>! .... ' ."i"). ;.,
,:.>....', ".'
,.(,.';;!. ,.,,'. ,
'.. .;;" "."".,.'.,
., :;.-"t, ".;,.'" "
' . ",:,'
l :...
.... ..'.
.,;:!ti ':.
"i '
, ".,
I
,"'",:
, '1
.,.,....:.' .. ; ..."
..'.. " ,--
, :
'l:t "
1'0, .. , "
"./
.',::,

"":.\ ;'.
,
...
:Z..;. .< .'-
t , ' ..
. ' ,

, '... '
, .:,.;, ,
,:,y. ,., --'.
:.. ;;':if- ::"1
.. ,
. ".J' "'.,'
...';.A" 'F'.
,.:>11;, .. _'R
-":l:!ll1 .:'-:"
Assumendo che il fetch delle istruzioni sia equivalente a una 1ettura, si avrebbe
una operazione di scrittura ogni 4 operazioni di lettura, ovvero il 20% del totale
degli accessi alia memoria. Nella pratica Ie operazioni eli scrittura si manifestano
in percentuali piu basse.
A diHerenza delle operazioni .di fetch, per Ie quali, se viene letta la locazione
M i , e altamente probabile cbe l'istruzione successiva sia a.lJa locazione M
i
+
1
,
i riIerimenti ai dati possono essere alquanto sparsi e non e improbabile che la
generica scrittura sia a Wl indirizzo del tutto differente rispetto a queUo di prima.
Miss in scrittura In presenza di miss si pone il problema se portare 0 no la linea
di memoria in cache. Se la linea viene portata in cache si parla eli write allocate., nel
caso contrario si pacla di write non allocate.
Se si esc1udono Ie cache a mappatura diretta, il write-allocate richiede l'indivi.
duazione della linea eli cache in cui verdI. copiata la linea di memoria. Si tratta di
un aspetto fondamentale della gestione della cache; di esso 51 parla nel Paragrafo 7.2.
Con il write non-allocate, una scrittura ha il solo effetto di modificare il contenuto
della locazione di memoria centrale indirizzata, lasciando inalterata la cache.
La tecnica write non-allocate viene spesso preferita. A giustificazione della
preferenza ci sana Ie seguenti fagiani.
Le operazioni di scrittura si verificano con frequenza molta piu ba.'3sa rispetto
alle operazioni eli lettura. Un semplice conto esufficiente a spiegare questa af-
fermazione. Ipotiziamo che il profilo eli esecuzione del nostro programma sia
mediamente composto da:
o la scrittura del contenuto di un registro in memoria.
290 Capitola 7
o un'istruzione di lettura di un data in un registro;
o una operazione tra registri;
-
Hit in scrittura Nel caso di hit si ha un'altra complicazione: ' deve
c..Qntenere Carla dei...4ati-immagaz'Zi .. emoria rinei ale una scrittura in cache
il contenuto d;ea memoria centrale incPDsistente risp...ett;Qa..aue 0 1 cae e
. e riuett:.e:::resec1lZioAe..deI P'P?gr,amma;
Qi sana mo9i ..per la scrittura immediata
(write.through) e la scrittw:a-a:2.<?teriori 0 difIerita Jrite:'baCk c'-copy back. -
-
ScrjUul'a immediata l).Itte Ie scritture che aggiornano la cache vengono effettuate
anche in memoria centrale e eib garantisce la consistenza anclle se a discapito
delle prestazioni, in quanta !'effetto positivo della cache si sente solo in lettura.
Per alleviare questo inconveniente molte architetture prevedono un buffer in serit-
tura che opera per 10 mene alla ste&sa velocita della cache: n buffer di scrittura
elimina il tempo di latenza dovuto alia scrittura in memoria centrale e il proces-
sore puo procedere oltre. Purtroppo il buffer eefficace solo nel caso di scritture
isolate, che consentano 10 svuotamento del buffer nei tempi che intercorropo ....
tra scrittura e scrittura. Determinante risulta il rapporto di velocita
tra la cache e la memoria centrale. Con Ie ipotesi fatte sopra, Ie operazioni di
I
I,
\
\
(

I
I
I
/
I

I
\
I
\
\
,1
\

\
I
l
I
\
12Nel seguito si assume che i bit di validita abbiano valore 1 per lineo valida e 0 per lineo non
valida.
La sostituzione a caso richiederebbe che in occasione di ogni miss venisse generato un
numero a case, compreso tra 0 e N -1. Ovviamente, la generC\Zione del numero a caso
introdurrebbe un'a rete di una certa complessita.. Si puo ovviare a tale cqmplicazione
se si assume che i miss si manifestano in modo casuale rispetto a tutte Ie linee di
7.2.1 Sostituzione a caso
Capitola 7
11 Si noti cbe linea. invalida. equivale a linea vuota,.
292
7.2 Algoritmi di rimpiazzamento delle linee di cache
""/'
." ,'" '
,,,,If-,' .
N:}!.,

:;>.:'."';11.,
r11i!il!;;J:I' ':
"

La memoria cache 293
--------------- ..=:..:===:.===-_-=-=
r.- ''';'',-.: ,:.,,-, -
.'

non n di memoria centrale cleve deterrninare che si tratti di una linea contenente un pezza di codice 0 dati poco frequentati
tl passagglO dell mdlcatore allo stato dl linea vallda
ll
. " ..,..,.,.... . . diG' .. . u1 al 1 .
D tId' - Ii' .' . ..' "m*l dalPesecuzlOoe e programma. 11 algontml LRD rIS tano quanta comp esSl
. uran a p:esenza 1 una nea In cache 81 pub determmare una sltuazlOne di /:,i-';": . e costosi da realizzare.
linea non'plU Corr:e acce.nnato, P,liO capitare che un canale DMA eftettui ,
un III II contenuto di posizioni corrente.mente in ,:<,-j RAND La strategia RAND (Random) rimpiazza in modo casuale. Dati sperimentali
:ache. Le dt cache essere invalidate. La ricerca di un dato .. ...' mostrano che Ie prestazioni non degradano eccessivamente. Del resto, una tecnica
In cache 130 venfica della valldlta del dato. In non basta :L,I-': . di questa genere appare 130 meno sensibile' alIa distribuzione dei riferimenti e, in
11 deve anche tenere .conto d.ella della linea. particolare, a programmi aventi comportamenti patologici. L'algoritmo RAND e
I p:es
7
ntano altro per mvalldare Ie linee di cache. '_."...;..... ' i1 pili semplice cia realizzare.
In un sIstema 1 differentl procesSl sono in esecuzione in tempi diversi..... ; '
Quando un termma 130 sua esecuzione, i1 sistema operativo sceglie un proces- FIFO La strategia FIFO First-In First-Out assume implicitamente un modelio di ese-
so que1h .attlvl .10 in. esecuzione. Evidentemente, il nuovo processo ha un' : cuzione del programma di natura prettamente sequenziale. Un algoritmo FIFO
spazlO de?h di:erso da queUo del proceS50 sostituito. Se il sistema edi media complessita realizzativa.
g.es.tlsce 130.memona Vlrtuale,. mdipend.entemente. dove eposizionata 1a cache, epos- . .. . .. . ... .
slblle 11 processo III ese,cuzlone genen mdirizzi (parzialmente) sovrapposti .' ..'." [HP931. datI prestaz.lOID In funzlone delle
a:quelli da! prece?ente. E necessario rendere invalide tutte Ie linee ..QUI dl ve?-gono.illustrate.alcune
di cache. I con cache IDcorporata prevedone una esplicita istruzione, :;',:',Ii':,<' \, .reahzzaz.lODl de?h algontml. :ruth .51 centator:. n numero del
una Imea In IDgresso al micro che svolge tale funzione. Si puo evitare di in- comblD.ato can 1a .del forDlsce una d:lla
val.ldare tut.ta all'atto della messa in esecuzione di un nuovo processo se tra -. ::.' della necessana ?estlOne 81 fa nfenmento al
Ie di si aggiunge, per ogni linea in cache, l'identita del processo :;,(. caso dl. una cache a. N .vle, di L linee via. . . .
CUI appartlene 130 bnea stessa. In questa caso, 130 ricerc30 in cache di un dato deve . ':tl_>::':'i;; . Gh a1gontml vengono presentatllO nfenmento alia genenca pOSlZlOne (al genenco
tener cont? della linea, confrontando 1'identificatore del processo a .. set) .di cache che vi.ene indi'o:iduata at:traverso campo di I L Alla posizione
essa 1 ?rocesso .in Conseguentemente; un _.;< h 51 trovano le N Itnee. alle N vie cache. I.e Vle.vengono numerate
dl .contesto dl un differente task) non richiede . d
l
& O.a N - 1. e Ie hnee vengono corne I? ,It ,... ,IN-1'
I mvahd;l.ZlOne cil alcuna linea; mfattl, 1nfeflmentl generati dal nuovo processo anche . .n:.. '" c eblsogno dl mettere In eVldenza anche 130 pOSlZlOne di cache Sl usano due pedlcl: li;
nell:eventu.alita che producano un indirizzo gia presente nella TAG RAM per 'effetto 1a di via j ..A o.gni 114; eassociato il bit di validita indicata can Vi;;
dell del processo non danno luogo a hit, in quanta non e'e identita . ... 51 hanno qumdl L x N bIt di vahdita .
t.ra ll?enhficatore del proeesso III esecuzione e l'identificatore di appartenenza della : q'f':':,.. . . . ... . .., . .
lmea ill U:'l'lgoritmo di. rimpiazzamento delle !inee di cache (Cfr. 7.2) porta Pnma. dl enecessano. stabillrel In mlBS pu: non vab?e alia
automattcamente m Ie appartenenti allo spazio degli indirizzi del nuevo . . POSlZlone h, quale VIa verra per 1a linea In me-
Questa. soluzl0ne ha OVVlamente un rnaggior casto, dovuto aHa memoria ag- mona. conto che 130 scelta: ,deve dalla: lOgIca contr?liore
gmntlva necessar.la m.emorizzare per ogni linea di cache, l'identificatore del processo ' rendere la plu. se':Il
plice
plU convemente,
che ha generato 11 nfenmento alIa linea stessa. la una pnontA assumendo per esemplo
, '):".:.7,:,:,1:.;<,' " che verra Implegata 130 1mea ase essa enon vahda, 130 hnea 1 se essa enon valida ed
\'-::'.':;' evalida 130 a, etc.. In tal modo, 1a scelta si effettua attraverso un semplice arbitro
;:\>!::':' di. .. parte che segue si indica come .via prioritaria.la via pili a sinistra
(ClOe, dl mdlce pm basso) tra tutte quelle non valtde.

".'\'u\. :, .' ';,. .
"v.;',"r.. ' . ":'.. "
J''''''!' ;,'1. :.'.... ::,',
",'I),:,.: . c, '.j'
,., ..
"r'.-:',,
.... ,- ...
, ", ,) .. \,: " ' ..
''. \'. ' ,
'I
"' .,
J"fi1)r : ....
""11': ."
.... .'.",::'
:1;'.,.." I.
, ';', ,'.,
, ;/\i"r
, , '" ...
:".:."
. ,\.'. -
, .. '" .
";.,
- lS;:, ...
.;",,:1,., ,
'. . '., ." " ...... "'.' r,.
',--
. 'I..
,,"'. . '
In caso di miss, nelle cache con una associativita superiore a uno, il controllore deve
determinare quale linea cleve essere rimpiazzata con 130 nuova linea proveniente dalla
memoria di sistema. Gli algeritmi fondamentali, dai quali derivano alcune versioni
modificate, si riducono essenzialmente a tre: LRU, FIFO e RAND,
LRU La strategia LRU (Least Recently Use(/) consiste nel rimpiazzare, tra tutte Ie
linee possibili, queila the non estata usata da pili tempo. L'assunzione eche se
da malta tempo non viene fatto riferimento a una linea, c1e un1alta probabilita
I
\
I
\
\
,1
\

\
I
l
I
\
12Nel seguito si assume che i bit di validita abbiano valore 1 per lineo valida e 0 per lineo non
valida.
La sostituzione a caso richiederebbe che in occasione di ogni miss venisse generato un
numero a case, compreso tra 0 e N -1. Ovviamente, la generC\Zione del numero a caso
introdurrebbe un'a rete di una certa complessita.. Si puo ovviare a tale cqmplicazione
se si assume che i miss si manifestano in modo casuale rispetto a tutte Ie linee di
7.2.1 Sostituzione a caso
Capitola 7
11 Si noti cbe linea. invalida. equivale a linea vuota,.
292
7.2 Algoritmi di rimpiazzamento delle linee di cache
""/'
." ,'" '
,,,,If-,' .
N:}!.,

:;>.:'."';11.,
r11i!il!;;J:I' ':
"

La memoria cache 293
--------------- ..=:..:===:.===-_-=-=
r.- ''';'',-.: ,:.,,-, -
.'

non n di memoria centrale cleve deterrninare che si tratti di una linea contenente un pezza di codice 0 dati poco frequentati
tl passagglO dell mdlcatore allo stato dl linea vallda
ll
. " ..,..,.,.... . . diG' .. . u1 al 1 .
D tId' - Ii' .' . ..' "m*l dalPesecuzlOoe e programma. 11 algontml LRD rIS tano quanta comp esSl
. uran a p:esenza 1 una nea In cache 81 pub determmare una sltuazlOne di /:,i-';": . e costosi da realizzare.
linea non'plU Corr:e acce.nnato, P,liO capitare che un canale DMA eftettui ,
un III II contenuto di posizioni corrente.mente in ,:<,-j RAND La strategia RAND (Random) rimpiazza in modo casuale. Dati sperimentali
:ache. Le dt cache essere invalidate. La ricerca di un dato .. ...' mostrano che Ie prestazioni non degradano eccessivamente. Del resto, una tecnica
In cache 130 venfica della valldlta del dato. In non basta :L,I-': . di questa genere appare 130 meno sensibile' alIa distribuzione dei riferimenti e, in
11 deve anche tenere .conto d.ella della linea. particolare, a programmi aventi comportamenti patologici. L'algoritmo RAND e
I p:es
7
ntano altro per mvalldare Ie linee di cache. '_."...;..... ' i1 pili semplice cia realizzare.
In un sIstema 1 differentl procesSl sono in esecuzione in tempi diversi..... ; '
Quando un termma 130 sua esecuzione, i1 sistema operativo sceglie un proces- FIFO La strategia FIFO First-In First-Out assume implicitamente un modelio di ese-
so que1h .attlvl .10 in. esecuzione. Evidentemente, il nuovo processo ha un' : cuzione del programma di natura prettamente sequenziale. Un algoritmo FIFO
spazlO de?h di:erso da queUo del proceS50 sostituito. Se il sistema edi media complessita realizzativa.
g.es.tlsce 130.memona Vlrtuale,. mdipend.entemente. dove eposizionata 1a cache, epos- . .. . .. . ... .
slblle 11 processo III ese,cuzlone genen mdirizzi (parzialmente) sovrapposti .' ..'." [HP931. datI prestaz.lOID In funzlone delle
a:quelli da! prece?ente. E necessario rendere invalide tutte Ie linee ..QUI dl ve?-gono.illustrate.alcune
di cache. I con cache IDcorporata prevedone una esplicita istruzione, :;',:',Ii':,<' \, .reahzzaz.lODl de?h algontml. :ruth .51 centator:. n numero del
una Imea In IDgresso al micro che svolge tale funzione. Si puo evitare di in- comblD.ato can 1a .del forDlsce una d:lla
val.ldare tut.ta all'atto della messa in esecuzione di un nuovo processo se tra -. ::.' della necessana ?estlOne 81 fa nfenmento al
Ie di si aggiunge, per ogni linea in cache, l'identita del processo :;,(. caso dl. una cache a. N .vle, di L linee via. . . .
CUI appartlene 130 bnea stessa. In questa caso, 130 ricerc30 in cache di un dato deve . ':tl_>::':'i;; . Gh a1gontml vengono presentatllO nfenmento alia genenca pOSlZlOne (al genenco
tener cont? della linea, confrontando 1'identificatore del processo a .. set) .di cache che vi.ene indi'o:iduata at:traverso campo di I L Alla posizione
essa 1 ?rocesso .in Conseguentemente; un _.;< h 51 trovano le N Itnee. alle N vie cache. I.e Vle.vengono numerate
dl .contesto dl un differente task) non richiede . d
l
& O.a N - 1. e Ie hnee vengono corne I? ,It ,... ,IN-1'
I mvahd;l.ZlOne cil alcuna linea; mfattl, 1nfeflmentl generati dal nuovo processo anche . .n:.. '" c eblsogno dl mettere In eVldenza anche 130 pOSlZlOne di cache Sl usano due pedlcl: li;
nell:eventu.alita che producano un indirizzo gia presente nella TAG RAM per 'effetto 1a di via j ..A o.gni 114; eassociato il bit di validita indicata can Vi;;
dell del processo non danno luogo a hit, in quanta non e'e identita . ... 51 hanno qumdl L x N bIt di vahdita .
t.ra ll?enhficatore del proeesso III esecuzione e l'identificatore di appartenenza della : q'f':':,.. . . . ... . .., . .
lmea ill U:'l'lgoritmo di. rimpiazzamento delle !inee di cache (Cfr. 7.2) porta Pnma. dl enecessano. stabillre
l
In mlBS pu: non vab?e alia
automattcamente m Ie appartenenti allo spazio degli indirizzi del nuevo . . POSlZlone h, quale VIa verra per 1a linea In me-
Questa. soluzl0ne ha OVVlamente un rnaggior casto, dovuto aHa memoria ag- mona. conto che 130 scelta: ,deve dalla: lOgIca contr?liore
gmntlva necessar.la m.emorizzare per ogni linea di cache, l'identificatore del processo ' rendere la plu. se':Il
plice
plU convemente,
che ha generato 11 nfenmento alIa linea stessa. la una pnontA assumendo per esemplo
, '):".:.7,:,:,1:.;<,' " che verra Implegata 130 1mea ase essa enon vahda, 130 hnea 1 se essa enon valida ed
\'-::'.':;' evalida 130 a, etc.. In tal modo, 1a scelta si effettua attraverso un semplice arbitro
;:\>!::':' di. .. parte che segue si indica come .via prioritaria.la via pili a sinistra
(ClOe, dl mdlce pm basso) tra tutte quelle non valtde.

".'\'u\. :, .' ';,. .
"v.;',"r.. ' . ":'.. "
J''''''!' ;,'1. :.'.... ::,',
",'I),:,.: . c, '.j'
,., ..
"r'.-:',,
.... ,- ...
, ", ,) .. \,: " ' ..
''. \'. ' ,
'I
"' .,
J"fi1)r : ....
""11': ."
.... .'.",::'
:1;'.,.." I.
, ';', ,'.,
, ;/\i"r
, , '" ...
:".:."
. ,\.'. -
, .. '" .
";.,
- lS;:, ...
.;",,:1,., ,
'. . '., ." " ...... "'.' r,.
',--
. 'I..
,,"'. . '
In caso di miss, nelle cache con una associativita superiore a uno, il controllore deve
determinare quale linea cleve essere rimpiazzata con 130 nuova linea proveniente dalla
memoria di sistema. Gli algeritmi fondamentali, dai quali derivano alcune versioni
modificate, si riducono essenzialmente a tre: LRU, FIFO e RAND,
LRU La strategia LRU (Least Recently Use(/) consiste nel rimpiazzare, tra tutte Ie
linee possibili, queila the non estata usata da pili tempo. L'assunzione eche se
da malta tempo non viene fatto riferimento a una linea, c1e un1alta probabilita
295
8
3
f-+
YI\-
La memoria cache
-
8 1 -I I f -I 2 I
\-
........
v
.
]
hclk
LUrI 8
0
h--1 8
1
Metodo dei contatori per linea Un modo per la lista consiste neWas-
sociare permanentemente a ciascuna linea un contatore e utilizzarlo per tener traccia
dell'ordine di riferimento della relativa linea.
Per meglio chiarire si esamina iI comportamento della cache
l
per una data sequen-
za di eventi (hit, miss, invalidazioni), con Pausilio della Tabella 7.1. In questa tabella
l
sulla terza colonna si riportano i 4 contatori, Co, G
l
, C
z
, C
3
, relativi aIle 4linee della
generica posizione It di cache; sulla quarta colonna si riportano i corrispondenti bit
di validita.. La seconda colonna riporta Pevento ehe, a partire dalla configurazione
dei contatori e dei bit di validita della riga precedente, porta alIa configurazione della
riga su c;ui eriportato l'evento stesso.
Seguiamo l'evoluzione dei 4 contatori a partire d.alla condizione iniziale corris-
pondente alia riga O.
I valori dei contatori della prima riga di Tabella 7.1 indicano che II ela linea cui
estato fatto riferimento pili di recente, mentre 1
2
equella che ha avuto il riferimento
si passa a questa configurazione:
13 a2
La propagazione verso destra econtrollata facendo passare hclk attraverso una
serie di porte che ne abilitano il passaggio in base al risuitato del confronto tra il
-numero che viene inserito e queUo contenuto nel contatore.
Nell'ipotesi di validita di tutte Ie linee, il caso del miss ebanale. Si tratta infatti
di presentare in ingresso a So l'uscita di S3 e di far scorrere a destra 80, 51 e 82.
Le variazioni aUo schema di Figura 7.6 per tener conto del miss sono imme-
diate. Pili complicato etener conto della validita delle !inee. A tale prop08ito si veda
PEsercizio 7.8.
0132
Figura 7.6 Realizzazione dello stack LRD. La schema considera solo il caso di hit e non Hene
canto della validita. delle linee. 11 segnale hclck (hit clock) rappresenta l'impulso che deriva
dall'avvenuto hit. It numero d'ordine della via su cui si emanifestato 10 hit erappresentato
da j.
Lo schema mostra che al registro So viene presentato in ingresso il nUffiero d'or-
dine della via che ha determinato hit. Lo stack va aggiornato portando in So il numero
di via j su cui si eavuto hit e spostando verso destra la parte di stack a sinistra del
- posta che conteneva j. Per esempio, se si ha hit su Io quando la configurazione dello
, stack e
,
Hit:
Miss:
7.2.2 Rimpiazzamenti con a1goritmi LRU
294 Capitolo 7
Metoda dello stack LRU Lo stack relativo a ciascuna posizione h edi 4 posizioni;
ogni posizione e data da UD registro di 2 bit. I registri possono essere collegati in
cascata, secondo 10 schema di principio in Figura 7.6, tracciato per il solo caso deWhit
e assumendo ehe tutte Ie linee siano sempre valide.
La tecnica LRU richiede chel per ogni posizione h di caebe
J
venga tenuta una lista
ordinata dei riferimenti. In testa alIa lista ci sara sempre la linea riferita pili di recente,
in fondo quella riferita meno eli recente
14
.
La realizzazione della lista richiede, in generale
l
N posti in grade di tener traccia
dell'identita. delle siDgole !iDee. In pratica ogni posto corrisponde a un contatore
modulo N. Complessivamente, si hanno L x N contatori; ciascun contatore richiede
un numero di bit pari all'intero superiore di In N 15.
Qui di seguito vengono presentati due algoritmi. Per ragioni di chiarezza, si fa
riferimento a una cache a 4 vie.
. t'i
'I -,.
cache. La generazione del numero casuale si basa quindi nel tenere un cantatore,
unico per tutta cache, .modulo N ogni volta in cui c'e un miss.
n contatore m questlOne Vlene mdicato can C. )::1
Poiche la sostituzione ea casol non si cleve tenere memoria dei riferimenti prece- .
denti. Dunque, in caso d.i hit,' non enecessaria fare alcunche. "411
In caso d.i miss
13
J la vittima viene anzitutta scelta tra Ie linee non valide; se Ie N
linee alla posizione I sono tutte valide viene selezionata la linea sulla via il cui numero
d'ordine eguag!ia il contatore. n contatore viene quindi aggiornato.
Ne deriva 10 schema di algoritmo sotto riportato (si ricorda che la sostituzione di'
una linea comporta Paffermazione del relativo bit di validita).
,
esistono lioee non valide?
Si: j +- indice della. via prioritaria
No: j +- C;
Sostituzione Ij;
C +- (C + l)modN; VI; +- 1
Statisticamente, se i riferimenti fossero distribuiti casualmente sulle diverse pa-
sizioni, il precedente algoritmo sarebbe del tutto casuale. Per il principia di localita.
la sostituzione non avviene con processo del tutto casuale.
13Qui e nel seguito, a. meno the non venga espress3mente detto il contrario non si distingue il
miss d.i scrittura. da. queUo di lettura. Tendenzialmente si assume che la scrittura sia del tipo write
non-allocate e che, quindi, it miss in scrittura sia del tutto ininBuente. Nel ca.so in cui la scrittura
sia del tipo write-aJJoca.te; it miss di scrittura ha 10 stesso effetto del miss di lett.ura..
uIn lett.eratura questa lista viene denotata come stack LRD, anche -se non e propriamente uno
stack.
l:lNel caso di cadle a 2 vie la lista si riduce a un solo elemento di un bit. In totale bastano dunque
L bit.
I
I

"
. I

295
8
3
f-+
YI\-
La memoria cache
-
8 1 -I I f -I 2 I
\-
........
v
.
]
hclk
LUrI 8
0
h--1 8
1
Metodo dei contatori per linea Un modo per la lista consiste neWas-
sociare permanentemente a ciascuna linea un contatore e utilizzarlo per tener traccia
dell'ordine di riferimento della relativa linea.
Per meglio chiarire si esamina iI comportamento della cache
l
per una data sequen-
za di eventi (hit, miss, invalidazioni), con Pausilio della Tabella 7.1. In questa tabella
l
sulla terza colonna si riportano i 4 contatori, Co, G
l
, C
z
, C
3
, relativi aIle 4linee della
generica posizione It di cache; sulla quarta colonna si riportano i corrispondenti bit
di validita.. La seconda colonna riporta Pevento ehe, a partire dalla configurazione
dei contatori e dei bit di validita della riga precedente, porta alIa configurazione della
riga su c;ui eriportato l'evento stesso.
Seguiamo l'evoluzione dei 4 contatori a partire d.alla condizione iniziale corris-
pondente alia riga O.
I valori dei contatori della prima riga di Tabella 7.1 indicano che II ela linea cui
estato fatto riferimento pili di recente, mentre 1
2
equella che ha avuto il riferimento
si passa a questa configurazione:
13 a2
La propagazione verso destra econtrollata facendo passare hclk attraverso una
serie di porte che ne abilitano il passaggio in base al risuitato del confronto tra il
-numero che viene inserito e queUo contenuto nel contatore.
Nell'ipotesi di validita di tutte Ie linee, il caso del miss ebanale. Si tratta infatti
di presentare in ingresso a So l'uscita di S3 e di far scorrere a destra 80, 51 e 82.
Le variazioni aUo schema di Figura 7.6 per tener conto del miss sono imme-
diate. Pili complicato etener conto della validita delle !inee. A tale prop08ito si veda
PEsercizio 7.8.
0132
Figura 7.6 Realizzazione dello stack LRD. La schema considera solo il caso di hit e non Hene
canto della validita. delle linee. 11 segnale hclck (hit clock) rappresenta l'impulso che deriva
dall'avvenuto hit. It numero d'ordine della via su cui si emanifestato 10 hit erappresentato
da j.
Lo schema mostra che al registro So viene presentato in ingresso il nUffiero d'or-
dine della via che ha determinato hit. Lo stack va aggiornato portando in So il numero
di via j su cui si eavuto hit e spostando verso destra la parte di stack a sinistra del
- posta che conteneva j. Per esempio, se si ha hit su Io quando la configurazione dello
, stack e
,
Hit:
Miss:
7.2.2 Rimpiazzamenti con a1goritmi LRU
294 Capitolo 7
Metoda dello stack LRU Lo stack relativo a ciascuna posizione h edi 4 posizioni;
ogni posizione e data da UD registro di 2 bit. I registri possono essere collegati in
cascata, secondo 10 schema di principio in Figura 7.6, tracciato per il solo caso deWhit
e assumendo ehe tutte Ie linee siano sempre valide.
La tecnica LRU richiede chel per ogni posizione h di caebe
J
venga tenuta una lista
ordinata dei riferimenti. In testa alIa lista ci sara sempre la linea riferita pili di recente,
in fondo quella riferita meno eli recente
14
.
La realizzazione della lista richiede, in generale
l
N posti in grade di tener traccia
dell'identita. delle siDgole !iDee. In pratica ogni posto corrisponde a un contatore
modulo N. Complessivamente, si hanno L x N contatori; ciascun contatore richiede
un numero di bit pari all'intero superiore di In N 15.
Qui di seguito vengono presentati due algoritmi. Per ragioni di chiarezza, si fa
riferimento a una cache a 4 vie.
. t'i
'I -,.
cache. La generazione del numero casuale si basa quindi nel tenere un cantatore,
unico per tutta cache, .modulo N ogni volta in cui c'e un miss.
n contatore m questlOne Vlene mdicato can C. )::1
Poiche la sostituzione ea casol non si cleve tenere memoria dei riferimenti prece- .
denti. Dunque, in caso d.i hit,' non enecessaria fare alcunche. "411
In caso d.i miss
13
J la vittima viene anzitutta scelta tra Ie linee non valide; se Ie N
linee alla posizione I sono tutte valide viene selezionata la linea sulla via il cui numero
d'ordine eguag!ia il contatore. n contatore viene quindi aggiornato.
Ne deriva 10 schema di algoritmo sotto riportato (si ricorda che la sostituzione di'
una linea comporta Paffermazione del relativo bit di validita).
,
esistono lioee non valide?
Si: j +- indice della. via prioritaria
No: j +- C;
Sostituzione Ij;
C +- (C + l)modN; VI; +- 1
Statisticamente, se i riferimenti fossero distribuiti casualmente sulle diverse pa-
sizioni, il precedente algoritmo sarebbe del tutto casuale. Per il principia di localita.
la sostituzione non avviene con processo del tutto casuale.
13Qui e nel seguito, a. meno the non venga espress3mente detto il contrario non si distingue il
miss d.i scrittura. da. queUo di lettura. Tendenzialmente si assume che la scrittura sia del tipo write
non-allocate e che, quindi, it miss in scrittura sia del tutto ininBuente. Nel ca.so in cui la scrittura
sia del tipo write-aJJoca.te; it miss di scrittura ha 10 stesso effetto del miss di lett.ura..
uIn lett.eratura questa lista viene denotata come stack LRD, anche -se non e propriamente uno
stack.
l:lNel caso di cadle a 2 vie la lista si riduce a un solo elemento di un bit. In totale bastano dunque
L bit.
I
I

"
. I

'1iit Val.
.
Evento {;o {;l {;, G',
0 condizione iniziale 1 0 3 2 1111
1 hit sulla linea di via 0 0 1 3 2 1111
2 mISS 1 2 0 3 1111
3 invalidazione linea di via 1 1 2 0 3 1011
4 hit sulla linea di via 0 0 2 1 3 1011
5 invalidazione linea di via 3 0 2 1 3 1010
6 llliSS 1 0 2 .3 1110
7 hit sulla linea di via 2 2 1 0 3 1110
8 mISS 3 2 1 0 1111
9 mISS 0 3 2 1 llll
10 mISS 1 0 3 2 1111
'> " 1
litt'
'
,'1-:" '
r; '
;'\,..-.(" .
, -_:I' . La memoria cache 297
296 Capitola 7 .,'
", '""... - )
-' ,"" l':h.(,:
.
..
",' , : -, " .,
-';;,'" '.
Vogliamo ora riscrivere Palgoritmo in modo pili rigoroso. Si indichi eli
'(I - OIL - 1- i = 01 N - 1) il generico contatore presQ dalla matrice di .'
"'t"" .... -, ". I I , , .. , I
contatori C! di L x .N si. indichi con Vii it generico bit di validita preso
dalla matnce V dl pan dunenslOlll. Sl ha:
,l!,'," :,'''' r
,....., ,"
, Hit: j +- numero di via su cui si verifica hit; .
Vi per cui eli < Gfj : eu .- (Cli + l)modNi 1
' .!!,:.i'J:.}:, ,,' , C
IJ
f- 0
.... "
7:.,
'. . Miss: esistono linee vuote?
Si: J' .- via prioritaria; I
"",, ""."l.'
" . No: j.f- i tale per cui eli = N -1;. j
,. ;'lit::;.:: " \/1. tale per Cill eli < e
l
;: Cli f- (C
li
+ l)modNI
......, '".
C ' +- 0' ..
....,"'.,. , ,""'" '." I,
,', ....,',.,. '." \
Tabella 7.1 Esempio eli politica LRU per una cache a 4 vie. Aguiornamento dei contatori Vij f- 1
0' ,.' 'I' "
relativi aile 4 !inee in posizione h. Uevento si manifesta a partire nella coodizione della 1'. . .
riga precedente rispetto a quella su cui l'eveoto eriportato e determina la condizione della . U aI 't d'" t d LRU L'algon'tmo LRU sopra mo
. . .:: :?! '.. }..";f;f'. n gar! rno 1 rlmplazzamen 0 .pseu 0 -
nga stess.. . '"'' .,".., - , Ri h' d 'f' 1 ' t to ' rt 1 .. d'
. : strato e alquanto costoso. c le m tl CO,r: a rI e una ce a ogIca.l \
. contornoi cio si traduce nelPoccupazlone dl spazlO sull mtegrato della CPU.
. . .'" Vogliamo ora mostrare un algoritmo che realizza una politica pseudo LRU. Ci
piiJ lantana nel tempo. L'hit sulla via 0 ha I'effetto di portare a 0 il relatIvo " .riferiamo aHa'tecnica usata dai progettisti Intel per 1a cache interna della CPU 486 e
e a 1 il contatore della via 1, i restanti due contatori restano invariati. A partlre dei modelli successivi[Int91j. \
questa condizione, un miss determina la situazione di riga 2. Come si vede, estata ' n486 ha una cache interna associativa a 4 vie. Ogni via contiene 2 kbyte. Le .
sostituita 1a linea usata meno di recente e tutti i contatori sono stati aggiornati.'.:::"Jjfi'11 ,linee sono di 16 byte, per un totale di 128 linee per via. In scrittura viene seguita 1a
L'invalidazione di h e il successivo hit su lo portano alla situazione di riga 4. ,t,. ';11 politica write-through/write non-allocate, conseguentemente Ie operazioni di scrittura
n miss quando !e Ii.nee ?elle :rie 1 e 3 sono non .;jf , aggiornano cache s?lo caso di hit. di scritt.ura. .. . . . \
l'.ass':lnto dl nmplazzare la linea sulla via dl mmore tra: non vIen: ::fut'J::,.-:', gestlOne del .Sl appoggta a soli bit per anzlche a 8 bIt .
1
2
se l3 equella. usata d:t recente, .e SI ottlene 1a sltuazlOne per come sarebbe nchles.to .dal quattro contaton aIgontmo 1 I
6. La tabella nporta Ie modlfiche denvantl da un hIt su l2 e da due succeSSlVI .. JIfi -: .tre ?It (B
o
, 8
1
e 80;0-0 btt LRU servono Qll di pecisione.
miss. ESSI OgOi volta che 51 ?a .hIt (In lettura 0 scnttura)
... un miSS m lettura, In accordo alle regole dl declSlone sotto esposte (con lo,lthh St \
Uesarne della sequenza illustrata fornisce Ie seguenti indicazioni. indicano Ie linee nella generica posizione ILl relative aile quattro vie). -
.('<?;i'I'iffi'
1. In caso di hit si tratta semplicemente di aggiornare i B
o
= 0 indica che Pultirno accesso e state alla linea 12 0 alla linea 13; B
o
= 1
indica che l'ultimo accesso estato aIle linea 1
0
0 alia linea h; I
incrementando i contatori di valore piu basso di quello della linea su cui si :,' B 'd' ch 1 1 l' I ' 'll Ii I' B l' d' ..
h 1 h
't ' 1 = 0 In lca e, tra 0 e 1, U tlmo accesso stato a a nea 1, . I = ill Ica
,a 0 l' ,'..... '" "'RJ".
, . che, tra lo e iI, t'u1timo accesso estato alIa linea lo;
azzerando quest'ultimo contatore. }J/; B = 0 indica che tra [ e l l'ultimo accesso estato alIa linea l,' B, ::::: 1 indica I
'j.,'i\Q; 2 ,2 3,
. . '. ' che, tra he l31 l'ultimo accesso estato alta linea [2;
2. In caso dl mISS Ie cose non sana mol to dIVerse. 81 deve pero tener conto della
possibilitil che ci siano una 0 pili linee vuote, Si deve quindi: '..:;:l1Ji :[E'1>' L'algoritmo di decisione e di aggiornamento dei bit LRU viene illustrate in Figura 1
. 7.7, In riferimento al caso della sostltuzlOne (miss dl lettura)..
selezionare la prima linea non valida 0) in mancanza, la linea can il contatore In Tabella si illustra il della LRl! ip riferimento aHa
U uaJe aN-I' stessa. seguenza. di Tabella 7.1. 81 puo venficare che ill Questa <4501 a causa delle
g 1 .'. :r.t:;&''t,.:, invalidazioni) 1a. sequenza di uso delle linee eesattamente 1a stessa fino ali'evento 9
incluso. Nel caso de:
bit di validita. ".. (Tabella 7.1),
10
pseudo LRU sostituisce 1a linea l2 (Tabella 7.2).
"
'1iit Val.
.
Evento {;o {;l {;, G',
0 condizione iniziale 1 0 3 2 1111
1
hit sulla linea di via 0 0 1 3 2 1111
2 mISS 1 2 0 3 1111
3 invalidazione linea di via 1 1 2 0 3 1011
4 hit sulla linea di via 0 0 2 1 3 1011
5 invalidazione linea di via 3 0 2 1 3 1010
6 llliSS 1 0 2 .3 1110
7 hit sulla linea di via 2 2 1 0 3 1110
8 mISS 3 2 1 0 1111
9 mISS 0 3 2 1 llll
10 mISS 1 0 3 2 1111
'> " 1
litt'
'
,'1-:" '
r; '
;'\,..-.(" .
, -_:I' . La memoria cache 297
296 Capitola 7 .,'
", '""... - )
-' ,"" l':h.(,:
.
..
",' , : -, " .,
-';;,'" '.
Vogliamo ora riscrivere Palgoritmo in modo pili rigoroso. Si indichi eli
'(I - OIL - 1- i = 01 N - 1) il generico contatore presQ dalla matrice di .'
"'t"" .... -, ". I I , , .. , I
contatori C! di L x .N si. indichi con Vii it generico bit di validita preso
dalla matnce V dl pan dunenslOlll. Sl ha:
,l!,'," :,'''' r
,....., ,"
, Hit: j +- numero di via su cui si verifica hit; .
Vi per cui eli < G
fj
: eu .- (Cli + l)modNi 1
' .!!,:.i'J:.}:, ,,' , C
IJ
f- 0
.... "
7:.,
'. . Miss: esistono linee vuote?
Si: J' .- via prioritaria; I
"",, ""."l.'
" . No: j.f- i tale per cui eli = N -1;. j
,. ;'lit::;.:: " \/1. tale per Cill eli < e
l
;: Cli f- (C
li
+ l)modNI
......, '".
C ' +- 0' ..
....,"'.,. , ,""'" '." I,
,', ....,',.,. '." \
Tabella 7.1 Esempio eli politica LRU per una cache a 4 vie. Aguiornamento dei contatori Vij f- 1
0' ,.' 'I' "
relativi aile 4 !inee in posizione h. Uevento si manifesta a partire nella coodizione della 1'. . .
riga precedente rispetto a quella su cui l'eveoto eriportato e determina la condizione della . U aI 't d'" t d LRU L'algon'tmo LRU sopra mo
. . .:: :?! '.. }..";f;f'. n gar! rno 1 rlmplazzamen 0 .pseu 0 -
nga stess.. . '"'' .,".., - , Ri h' d 'f' 1 ' t to ' rt 1 .. d'
. : strato e alquanto costoso. c le m tl CO,r: a rI e una ce a ogIca.l \
. contornoi cio si traduce nelPoccupazlone dl spazlO sull mtegrato della CPU.
. . .'" Vogliamo ora mostrare un algoritmo che realizza una politica pseudo LRU. Ci
piiJ lantana nel tempo. L'hit sulla via 0 ha I'effetto di portare a 0 il relatIvo " .riferiamo aHa'tecnica usata dai progettisti Intel per 1a cache interna della CPU 486 e
e a 1 il contatore della via 1, i restanti due contatori restano invariati. A partlre dei modelli successivi[Int91j. \
questa condizione, un miss determina la situazione di riga 2. Come si vede, estata ' n486 ha una cache interna associativa a 4 vie. Ogni via contiene 2 kbyte. Le .
sostituita 1a linea usata meno di recente e tutti i contatori sono stati aggiornati.'.:::"Jjfi'11 ,linee sono di 16 byte, per un totale di 128 linee per via. In scrittura viene seguita 1a
L'invalidazione di h e il successivo hit su lo portano alla situazione di riga 4. ,t,. ';11 politica write-through/write non-allocate, conseguentemente Ie operazioni di scrittura
n miss quando !e Ii.nee ?elle :rie 1 e 3 sono non .;jf , aggiornano cache s?lo caso di hit. di scritt.ura. .. . . . \
l'.ass':lnto dl nmplazzare la linea sulla via dl mmore tra: non vIen: ::fut'J::,.-:', gestlOne del .Sl appoggta a soli bit per anzlche a 8 bIt .
1
2
se l3 equella. usata d:t recente, .e SI ottlene 1a sltuazlOne per come sarebbe nchles.to .dal quattro contaton aIgontmo 1 I
6. La tabella nporta Ie modlfiche denvantl da un hIt su l2 e da due succeSSlVI .. JIfi -: .tre ?It (B
o
, 8
1
e 80;0-0 btt LRU servono Qll di pecisione.
miss. ESSI OgOi volta che 51 ?a .hIt (In lettura 0 scnttura)
... un miSS m lettura, In accordo alle regole dl declSlone sotto esposte (con lo,lthh St \
Uesarne della sequenza illustrata fornisce Ie seguenti indicazioni. indicano Ie linee nella generica posizione ILl relative aile quattro vie). -
.('<?;i'I'iffi'
1. In caso di hit si tratta semplicemente di aggiornare i B
o
= 0 indica che Pultirno accesso e state alla linea 12 0 alla linea 13; B
o
= 1
indica che l'ultimo accesso estato aIle linea 1
0
0 alia linea h; I
incrementando i contatori di valore piu basso di quello della linea su cui si :,' B 'd' ch 1 1 l' I ' 'll Ii I' B l' d' ..
h 1 h
't ' 1 = 0 In lca e, tra 0 e 1, U tlmo accesso stato a a nea 1, . I = ill Ica
,a 0 l' ,'..... '" "'RJ".
, . che, tra lo e iI, t'u1timo accesso estato alIa linea lo;
azzerando quest'ultimo contatore. }J/; B = 0 indica che tra [ e l l'ultimo accesso estato alIa linea l,' B, ::::: 1 indica I
'j.,'i\Q; 2 ,2 3,
. . '. ' che, tra he l31 l'ultimo accesso estato alta linea [2;
2. In caso dl mISS Ie cose non sana mol to dIVerse. 81 deve pero tener conto della
possibilitil che ci siano una 0 pili linee vuote, Si deve quindi: '..:;:l1Ji :[E'1>' L'algoritmo di decisione e di aggiornamento dei bit LRU viene illustrate in Figura 1
. 7.7, In riferimento al caso della sostltuzlOne (miss dl lettura)..
selezionare la prima linea non valida 0) in mancanza
,
la linea can il contatore In Tabella si illustra il della LRl! ip riferimento aHa
U uaJe aN-I' stessa. seguenza. di Tabella 7.1. 81 puo venficare che ill Questa <4501 a causa delle
g 1 .'. :r.t:;&''t,.:, invalidazioni) 1a. sequenza di uso delle linee eesattamente 1a stessa fino ali'evento 9
incluso. Nel caso de:
bit di validita. ".. (Tabella 7.1),
10
pseudo LRU sostituisce 1a linea l2 (Tabella 7.2).
"
- \
299 La memoria cache

esistono linee vuote?


Si: C f-- via prioritaria;
sostituzione della riga in colonna C;
C<-C+l
Miss:
B
o
B, 'lj, Bit VaL
0
condizione iniziaJe
1 a 0
1111
1
hit sulla linea di via 0
1 1 0
1111
2 miss a 1 1 1111
3
invalidazione linea di via 1
0 1 1
1011
4 hit sulla linea. di via 0 1 1 1
1011
5
invalidazione linea di via 3 1 1 1 1010
6 reuss 1 a 1 1110
7 hit sulla linea di via 2
a a 1 1110
8 reuss a a a 1111
9 miss 1 1 a
1111
10 mISS 0 1 1 1111
/ Tulle Ie UNEE
No
Sosliluire linea
\ del SET valide?
non valida
Si
S1: 10 e 11 usale
No: 12 e 13 usale
mene recenlemenle
meno recenlemenle
80 0'
Si
81
No
Si
B2 01
No
'" O?
- Sosliluire
Sosliluire
Sostilulre
Sosliluire
linea 10
linea II
linea 12
linea 13
80:- 1
80:=- I
80:= 0
80: ... a
81:= 1
81:- a
82:- I
82:- 0
Capitolo 7
7.2.3 La tecnica FIFO
La tecnica FIFO cleve solo tenere conto dell'ordine di ingresso delle linee in cache.
Si supponga per un momento ehe tutte Ie Hnee siano valide. Per tener traccia
lell'arcline Iii ingresso basta un solo cantatare C, per ciascun set, che conti modulo N,
'I contatore viene inizializzato col valore della via su cui deve avvenire Ia sostituzione.
SuI miss la'nuova linea viene copiata nella via individuata da C, n eontatore viene
quindi inccementato.
Si consideri ora il case in cui tutte 1e linee di un set siano invalidate. L'algoritmo
sostituisce ordinatamente Ie linee non valide e si porta nella condizione sopra descritta,
L'a1garitmo edunque II seguente (ovviarnente II caso di hit eirrllevante),
298

.'
.\"il.i.", ,
I
',:"", " - ,
,#,,' r
>:':;-; r<., )\':""': _'
'. 1'" ". ' ,
""', <', 'j,:II'\ ,. ., - .,.. .
,-:.j,<. WI""<i.'t'
," '.'h.

Dmotivo della fatto che pseudo LRU opera
secondo un albero d.i declslone bmano: un mlSS che sostltUlsce in una delle due vie di
i bit in modo che un immediato, miss .....
nel blocchi di d,estra) m,dipeD?entemente da! fatto che questa seconda sostituzione ,(."
I1:0n Sla. d,all. effettlVQ Per si supponga che tutte Ie linee "" .
valide e ?te gli ultllll1. tutti hit a tutte Ie linee in: At ..
pOSlzlone fL. In questo eriline. 10,ll,h,l3. SI venfica factlmente che 10 stato dei
LRU e000. Infatti, II primo aindica che l'ultimo riferimento estata fatta aile ,.
1, d t n dO' d' h I ,,0,11 '-""r'
a es ra. secon 0 ill lea eel ha avuto un riferimento dopo 1
0
; il terzo 0
lD,dlca 1
3
ha un riferizr.1ento.dopo h. Si supponga O'ra che seguano due miss. .. '
Lalgotltmo sostltwsee 10 suI prImo miss e aggiorna i bit LRU a 110 il prossimo miss
t
' t" I' d' I ..... .
por ecd, a 50S ltwre '2 mvece I 1.
"1:.,'
'.1::.:......
...
.. Tabella 7.2 Esempio di politica pseudo LRD per una. cache a 4. vie. Aggiornamento dei bit
di LRU. E stata presa Ia stessa sequenza di eventi (e la stessa condizione usa.ta per
"./:S! 10 studio della politica LRD (efr. 7.1). L'evento si ma.nifesta a partire nella condizione della
precedente rispetto a quella su cui l'evento eriportato e determina la condizione della
.::....-(i ':ilil-'- "g' ,tessa.
.\.. . '"
'. ,-

.
'r:1;'1 'w'" , '.
'::TS ..
-R<:\"
' ..-..if .,. .... -_.".
.i.ff!"
.:"'';;;; .;::.........11..,"
-.. "N.Diiji
.=: i'
../1:,'1: ..' ....'
,s, _. ,." ,
"''''-''
, :fi't:t..c ,
'; ':" ..."
.' :>->', . .. ,:..
.. ,,' '-,l\;"(
c., "',"., i ''', ,f , ,
,,:,. " .",' ....
..... , I."
I, ,,:-<t.i-l'! '11" .:", "
., iI"a. ",
.. . Nel caso in cui venga invalidata una generica linea, il precedente algoritmo de-
una di C che ,non pili a un algoritmo FIFO.
}luso. delta llll:a .non valIda la.:>C13 C a. alia. VIa che segue
F' 7 7 Sch d ll'aJ' . .. /'";j}.": ceSSlva alIa linea SOshtUlta. Non edetto che questa Sla Ia bnea entrata per pnma 10
.e ,gontmo deCISI?ne pseudo LRU. Nel caso in cui venga sostituita cache.
una linea non vali?a, linea, bit LRU modificati in modo da riflettere . . ... , . . .. .
colloro la linea usata. II bit LRU vengono aggJornati alIo stesso modo in caso di hit. Vale ?eDa .dl che 1a ehe una linea. Sia lDvalldata,
almena Del slsteml a smgola CP U1 e un evento molto PIll Improbabile che tutta la
cache sia invalidata. Infatti, l'invalidazione di una singola linea esolo conseguente
,a operazioni di .1/0. ehe a corrispon.dente in
. memona. Questa eventuahta. Viene dt norma eVltata cial sistema operatlvo, che nserva
per Ie operazioni di I/O delle specifiche aree di memoria e che definisce tali aree come
i.... non cacheable, impedendone la copia in cache.
'''J'1fI:l,r.T'( .
In conclusione I'algoritmo sopra presentato, sebbene dia risultato non corretto in
.. caso di invalidazione casuale di qualche linea di cache, eda preferirsi a un eventuale
' che tenga canto dell'ordine di delle linee in cache.
:,:.... InfattI, per un tale algontmo occorrerebbe un contatore per linea e la sua comples-
sita sarebbe dello stesso ordine di quell a deIPalgoritmo LRU" con contatori vista in
precedenza. . . ,. .
' . Un modo per reahzzare l'algontmo FIFO e costrwre una memona TAG operante
I? FIFC?, aggiornata sui miss, in modo che essa identifi'chi irnmediatamente la
.,' Imea plU staglonata.
. .
"E!i4
,r, '.,
.'f"J,1

. "",:to", , , .,,,
f ' '.
rJ .' I ...
\
I
\
I
I
I
I
I
.
-

- \
299 La memoria cache

esistono linee vuote?


Si: C f-- via prioritaria;
sostituzione della riga in colonna C;
C<-C+l
Miss:
B
o
B, 'lj, Bit VaL
0
condizione iniziaJe
1 a 0
1111
1
hit sulla linea di via 0
1 1 0
1111
2 miss a 1 1 1111
3
invalidazione linea di via 1
0 1 1
1011
4 hit sulla linea. di via 0 1 1 1
1011
5
invalidazione linea di via 3 1 1 1 1010
6 reuss 1 a 1 1110
7 hit sulla linea di via 2
a a 1 1110
8 reuss a a a 1111
9 miss 1 1 a
1111
10 mISS 0 1 1 1111
/ Tulle Ie UNEE
No
Sosliluire linea
\ del SET valide?
non valida
Si
S1: 10 e 11 usale
No: 12 e 13 usale
mene recenlemenle
meno recenlemenle
80 0'
Si
81
No
Si
B2 01
No
'" O?
- Sosliluire
Sosliluire
Sostilulre
Sosliluire
linea 10
linea II
linea 12
linea 13
80:- 1
80:=- I
80:= 0
80: ... a
81:= 1
81:- a
82:- I
82:- 0
Capitolo 7
7.2.3 La tecnica FIFO
La tecnica FIFO cleve solo tenere conto dell'ordine di ingresso delle linee in cache.
Si supponga per un momento ehe tutte Ie Hnee siano valide. Per tener traccia
lell'arcline Iii ingresso basta un solo cantatare C, per ciascun set, che conti modulo N,
'I contatore viene inizializzato col valore della via su cui deve avvenire Ia sostituzione.
SuI miss la'nuova linea viene copiata nella via individuata da C, n eontatore viene
quindi inccementato.
Si consideri ora il case in cui tutte 1e linee di un set siano invalidate. L'algoritmo
sostituisce ordinatamente Ie linee non valide e si porta nella condizione sopra descritta,
L'a1garitmo edunque II seguente (ovviarnente II caso di hit eirrllevante),
298

.'
.\"il.i.", ,
I
',:"", " - ,
,#,,' r
>:':;-; r<., )\':""': _'
'. 1'" ". ' ,
""', <', 'j,:II'\ ,. ., - .,.. .
,-:.j,<. WI""<i.'t'
," '.'h.

Dmotivo della fatto che pseudo LRU opera
secondo un albero d.i declslone bmano: un mlSS che sostltUlsce in una delle due vie di
i bit in modo che un immediato, miss .....
nel blocchi di d,estra) m,dipeD?entemente da! fatto che questa seconda sostituzione ,(."
I1:0n Sla. d,all. effettlVQ Per si supponga che tutte Ie linee "" .
valide e ?te gli ultllll1. tutti hit a tutte Ie linee in: At ..
pOSlzlone fL. In questo eriline. 10,ll,h,l3. SI venfica factlmente che 10 stato dei
LRU e000. Infatti, II primo aindica che l'ultimo riferimento estata fatta aile ,.
1, d t n dO' d' h I ,,0,11 '-""r'
a es ra. secon 0 ill lea eel ha avuto un riferimento dopo 1
0
; il terzo 0
lD,dlca 1
3
ha un riferizr.1ento.dopo h. Si supponga O'ra che seguano due miss. .. '
Lalgotltmo sostltwsee 10 suI prImo miss e aggiorna i bit LRU a 110 il prossimo miss
t
' t" I' d' I ..... .
por ecd, a 50S ltwre '2 mvece I 1.
"1:.,'
'.1::.:......
...
.. Tabella 7.2 Esempio di politica pseudo LRD per una. cache a 4. vie. Aggiornamento dei bit
di LRU. E stata presa Ia stessa sequenza di eventi (e la stessa condizione usa.ta per
"./:S! 10 studio della politica LRD (efr. 7.1). L'evento si ma.nifesta a partire nella condizione della
precedente rispetto a quella su cui l'evento eriportato e determina la condizione della
.::....-(i ':ilil-'- "g' ,tessa.
.\.. . '"
'. ,-

.
'r:1;'1 'w'" , '.
'::TS ..
-R<:\"
' ..-..if .,. .... -_.".
.i.ff!"
.:"'';;;; .;::.........11..,"
-.. "N.Diiji
.=: i'
../1:,'1: ..' ....'
,s, _. ,." ,
"''''-''
, :fi't:t..c ,
'; ':" ..."
.' :>->', . .. ,:..
.. ,,' '-,l\;"(
c., "',"., i ''', ,f , ,
,,:,. " .",' ....
..... , I."
I, ,,:-<t.i-l'! '11" .:", "
., iI"a. ",
.. . Nel caso in cui venga invalidata una generica linea, il precedente algoritmo de-
una di C che ,non pili a un algoritmo FIFO.
}luso. delta llll:a .non valIda la.:>C13 C a. alia. VIa che segue
F' 7 7 Sch d ll'aJ' . .. /'";j}.": ceSSlva alIa linea SOshtUlta. Non edetto che questa Sla Ia bnea entrata per pnma 10
.e ,gontmo deCISI?ne pseudo LRU. Nel caso in cui venga sostituita cache.
una linea non vali?a, linea, bit LRU modificati in modo da riflettere . . ... , . . .. .
colloro la linea usata. II bit LRU vengono aggJornati alIo stesso modo in caso di hit. Vale ?eDa .dl che 1a ehe una linea. Sia lDvalldata,
almena Del slsteml a smgola CP U1 e un evento molto PIll Improbabile che tutta la
cache sia invalidata. Infatti, l'invalidazione di una singola linea esolo conseguente
,a operazioni di .1/0. ehe a corrispon.dente in
. memona. Questa eventuahta. Viene dt norma eVltata cial sistema operatlvo, che nserva
per Ie operazioni di I/O delle specifiche aree di memoria e che definisce tali aree come
i.... non cacheable, impedendone la copia in cache.
'''J'1fI:l,r.T'( .
In conclusione I'algoritmo sopra presentato, sebbene dia risultato non corretto in
.. caso di invalidazione casuale di qualche linea di cache, eda preferirsi a un eventuale
' che tenga canto dell'ordine di delle linee in cache.
:,:.... InfattI, per un tale algontmo occorrerebbe un contatore per linea e la sua comples-
sita sarebbe dello stesso ordine di quell a deIPalgoritmo LRU" con contatori vista in
precedenza. . . ,. .
' . Un modo per reahzzare l'algontmo FIFO e costrwre una memona TAG operante
I? FIFC?, aggiornata sui miss, in modo che essa identifi'chi irnmediatamente la
.,' Imea plU staglonata.
. .
"E!i4
,r, '.,
.'f"J,1

. "",:to", , , .,,,
f ' '.
rJ .' I ...
\
I
\
I
I
I
I
I
.
-

I'
I.
I
I..
I
I
\
I
I
I
I .
\
J
I.
I
I .
1
]
I
(7.4)
.. ,:1' .,., , ' ,
,",.",. "..,,"1, '.: ' .-,' ";.1.' ).,
Miss di tipo obbligatorio (Compu.lsory). Detti anche cold-start miss, si verificano
quando viene fatto riferimento a un particolare bloeco:per.'la prima'.'voI:ta",,\
In uno studio sulle memorie cache [Hil87J estato proposto un modello intuitivo per
capire it ,n,: fC9rI!e:
e", a causa delle iniziali in lingua: inglese (vedi sotto). In risuitati dello stu'dio sono
riportati in Figura 7,8 illustra i tre tipi di miss (la figura ha qualitativo e non
rappresenta i dati reali 'di un sis't:ema: ben definito)!' [' "tre' tipi di 'riliss' 500'0:' .' ,': .;

, '-
:' ,... ,
I . "
,
' ...
.. ;, I ,
,. " .
, " "
. ,
tM tempo medio di accesso alIa memoriaj
dove:
dove:
,.;:' .. :

;;J,:r;:' '

-.;. ,j.""
,
,', '.;Ii
. .tlt< e'.1'.
3QQ '; !, _._ .. e... .. , , i l ", < c, La memoria; .'301
::-);1
,

7 3 A . r' t .. . .. . ... '. ... JIi' "W"'",
. .. ....".. -.', . .. ntlmero media di cieli di clock per ,decodificare ed eseguire ,1
: ",',::.-." _,r, .' ,'-" . . . ': : ,'. .
La pr:5tazioni una' tache e f;equenza;del.c!ock di macehina,. :.' : ,': ,': ';";;,'::::"': .
mento aperto..ll semphc'e modelIo usato:,q'Ul sotto e.utlle a d3:Xe una mdlcazlone :,.... ;" 'I"' ' . . . "",.";.', ,. .. ' .... .. , .:.i.
guadagno IIiedidbttenuto con la cache; ; ,<:' f ;:1 n:: '''''.'1 ."i,;.';':', :.' Si indichi can Neil numero di deli irnpiegati dalla CPU per leggere in memoria
Designamo 'con te if tempo media cli atceSso a:Ua ,memoria in pres'enza di con N
w
eit numero degli eventuali stati di attes3 richiesti dalla memoria principale.
te puC- essere espresso come:: ' ::,i ' i!: " ",:! " ..:, i' .' ':!n' 'assenza di cache, il tempo med,io di accesso alia memoria edato da:
. -, e ',' .
""I : ., t c..ht'+mt '(71)";' ","".\"'" . N+N
c c p . -"1' .' - w
" . . '. ,., ',:'::<' t -
'" It .. I "," 'I,'" ,-' .,',",:f M - f
,;;, '. '. ,. '''" "
, , " -':;'("'i-' :W."",,':1' ':
..'. \."I$.\<Il I . r,
h tasso di hitj , :' ! ' " ',i:,' ;', ',' Sootituendo in 7.3 e in 7.2 si ottiene:
. , : , ," " ';" f
d
""'(' '--1 h) .. ,. ....., ....,.. .. ..... (7.5)
m tasso 1 mISS m = - ; '_.... :: N +N +n
.".' W (".2:
tc tempo'di aceess6 alla ca:che,' cornprensivo;.del' tempo 11 massimo delle prestazioni si ha per Nw = 0 e N = 1 ovvero quando la memoria
t
: ., 'e' "s"o"m"m' "a
l
"de'I"t' e'm; :d': :;'\ 't':" 'd"'U';o '.. ,. t .' l.l J:<:?)1t letta in un solo ciclo di clock
l6
. Come gia. osservato in precedenza i moderni
p . "'.. . vn j .' po 1 a enza e a.memona e'e '.lif, . . fr ' I d d' -bil il rifi .
. '1 t1del terilp6' necessariO-'a lin'ea' in cache. "';",':" .,\.: I '. .;, ,"\"",: " mlcroprocessor,l a. una COSl a ta a ren ere unPOSSl e ve carSI
'\' di questa condlzlone con le_ rnem<:!le DRAM,
Vequazione 7.1, fornisce i criteri per l'ottirnizzazione di una memoria cache In presenza di cache tM = te. Una cache ben progettata deve non solo ave!e
consiste di quattro aspetti: , un tc che permetta l'accesso in un cicio di clock in caso di hit, rna anche un tc
r , sufficientemente basso. La 7.1 indica che te dipende non solo dalla velocita della
1) massimizzare la probabilita di trovare un'rifedmento alla"mernoriia direttamente cache, rna aiIche da m e da t
p
. 5u due fortemente
nella cache (massimizzazione del tasso. di,ihit); " ..-' dimensiohe; la, ".:."; ,: : '.' ';
. .,. . I :'; .', f!' ,'. I' "l! .:' ' .., ' '.',' ,.' . IF: ' nmodello precedenoo non pub eSSere utiltzzato per dimens[onare'una cache. Nella
2) iJ tempo necess.anh.o per accedere a nella cache pratica industriale, per it progetto della cache si ricorre normalmente alia simulazione.
. (ffilll1mlZZazlOne del tempo dl It) . . "", ,,,.,,t, Ii . . 'ch d II
' .o.... A tale SCOPO.f leggere come ,state n.lte car:att.ens.tl e.. e a
. -.,,1 ,=".., ," 'd 1'486' tc' 901' .. ' , . ,. . . "',' ," .... .. ... ' .
0) '" ']'t ddt . ('" . did' I' cacue e ta
'\J, qytl..Q un e tempo l,pen", lzza- ',' . .ii" ,I. . .,'.", . '._;, t .. , :,;:! "" ";".<,,. ,i, I' .'. :,.;;.l!,., . ;',q':' ...:
,
'zlone)' . , ..
. . ,. '" "... . ... '. , . " '. .. ., , .-.. "'1"'.' '''''_ '" , " ","
,,' .. , .. ,.'/"." ",.'H'. :":'.' ., .... '.' " '.,: "'1' .. "".:2<""1"'1' .... , . " ' ,'.'1,',.. .: ".' ";' ,"1. ", .. :1",;., .. \"" "" ",'
. '. .. '"'' ,'" ,. .
, ,.. , I ","
J) a: 't'.'3.i cau.'se di fallimerito aila ,.;' ,";i: , .. ,.!.
t. "mtilti'processdri 0 iri'sisterni con'piu livelIidi'cache..:'.1_ . ,'" I' .. " "',.;: '.;.1,", . '. "",.1:,.: .1-:1 .. -"
'.' " .'" '" .
"i.. .
, ....'i;')",:;\j :,' .. '1(/' :,:: ;:!'-"" ,,'1 :.; \". ";' " ". ".' ,,.
Vogliam
O
, ora,Clu.a,ntifiSNe: prestaziQni. di, un
, Vn,.popolare .lUd,"e: deUe ,e ;1 coslddet,to MIPS (Crr.2..4.2). .;6!{.'
Indicando con.Tpi il.tempD"'1I1edio nchiesto per I eseCUZlOne completatdl un'lstruzlOne
(fetch decodi:fica/esecuzione) ,misur:ato,in .microseclDndi
l
sir ha: . ".. ':'1 , H' .,: ';;'; ,
. . 11' . "iift:.l-,... .
. " I '. :" .j '" :,.;' .':. :" '''/'', I: ';"" ',.j ...
r = . (7 2\ ':'" I' ".,,;... 1
.\ I,' T- "::!'.',' '.' i; . '1'.:;' ..,'.,;' '.. .,/f:. ,., .
, 'f '_'H'.- <
pl .. 'J". ;,' . ,
" ' , " "I" , . , . " ,,' ,'.' ." "".-'.".-,;
t" ", ,,' , ... '.; .. .. ' ,,, ,,>,i,r,I':., ""/i.".'.',,_.,'.,', ,"':'...
'. ;: .,. .. " '" "'. ' .,i' .. : ." ;. '.,
acceSSl .. J1HWrQq?:, ,::.:ft.;' 2. Mlss capa:lta 51 ha un di tutte Ie vo.lte. ill _cli!
I n:' "',; j ,;: ,n6n, e m ,grado dl contenere, rifenmentl:
,'" ., ..... ", ., -" ..... , ,;"n'("'2: , . ,. .'" "1"" .,,' .. ; ':'''',' ':1 .,'::' 1., .. :".;1.,":;),; .'",
.:' ",I, :J",,'.,,,,, '''. 1,IJ,iT':-tM-t'-:....-....\' '."1"'. "'-1; ... "'.
p. - f . .; .,. , , .'-, , I"' "i '., .' i" ",
;':', , '. "', ".: ... '., '.' . '.'".,' .,: ... ,.. ". : ,.'
, , "";,',', I 1 " .. ,,:' . ' . ,. ''', " _ "',' ,
'.f":\{' "'. ' , , , '..... .,., ,.',.' "', '. .. ;. ,.,,1 ...'
.; ".: ';:-, '\ ;.:0[;,;:;': , ' N; 'l'; e. .; Un d,i de,l
;:" ,:,'.' . ' L a.n.ahsl precedente e perche
,. , .. , " '. ,,'I ': i" e dl esecuzlOoe siano strettamente sequenzlah. In dI pIpeline, SI N+ne:i: =
, .. .. ," .... ',,";i!'.I' : 1, dunque un solo stato di a.ttesa-dimezzer\:ibbe h:l :'prestazioni'!d'el' processore:';: '.,:;, ::. 1,1:' l;.i .
.. ') .' '::-.,.
'.',.: , ...",. :\.
-;."',' .:1
I'
I.
I
I..
I
I
\
I
I
I
I .
\
J
I.
I
I .
1
]
I
(7.4)
.. ,:1' .,., , ' ,
,",.",. "..,,"1, '.: ' .-,' ";.1.' ).,
Miss di tipo obbligatorio (Compu.lsory). Detti anche cold-start miss, si verificano
quando viene fatto riferimento a un particolare bloeco:per.'la prima'.'voI:ta",,\
In uno studio sulle memorie cache [Hil87J estato proposto un modello intuitivo per
capire it ,n,: fC9rI!e:
e", a causa delle iniziali in lingua: inglese (vedi sotto). In risuitati dello stu'dio sono
riportati in Figura 7,8 illustra i tre tipi di miss (la figura ha qualitativo e non
rappresenta i dati reali 'di un sis't:ema: ben definito)!' [' "tre' tipi di 'riliss' 500'0:' .' ,': .;

, '-
:' ,... ,
I . "
,
' ...
.. ;, I ,
,. " .
, " "
. ,
tM tempo medio di accesso alIa memoriaj
dove:
dove:
,.;:' .. :

;;J,:r;:' '

-.;. ,j.""
,
,', '.;Ii
. .tlt< e'.1'.
3QQ '; !, _._ .. e... .. , , i l ", < c, La memoria; .'301
::-);1
,

7 3 A . r' t .. . .. . ... '. ... JIi' "W"'",
. .. ....".. -.', . .. ntlmero media di cieli di clock per ,decodificare ed eseguire ,1
: ",',::.-." _,r, .' ,'-" . . . ': : ,'. .
La pr:5tazioni una' tache e f;equenza;del.c!ock di macehina,. :.' : ,': ,': ';";;,'::::"': .
mento aperto..ll semphc'e modelIo usato:,q'Ul sotto e.utlle a d3:Xe una mdlcazlone :,.... ;" 'I"' ' . . . "",.";.', ,. .. ' .... .. , .:.i.
guadagno IIiedidbttenuto con la cache; ; ,<:' f ;:1 n:: '''''.'1 ."i,;.';':', :.' Si indichi can Neil numero di deli irnpiegati dalla CPU per leggere in memoria
Designamo 'con te if tempo media cli atceSso a:Ua ,memoria in pres'enza di con N
w
eit numero degli eventuali stati di attes3 richiesti dalla memoria principale.
te puC- essere espresso come:: ' ::,i ' i!: " ",:! " ..:, i' .' ':!n' 'assenza di cache, il tempo med,io di accesso alia memoria edato da:
. -, e ',' .
""I : ., t c..ht'+mt '(71)";' ","".\"'" . N+N
c c p . -"1' .' - w
" . . '. ,., ',:'::<' t -
'" It .. I "," 'I,'" ,-' .,',",:f M - f
,;;, '. '. ,. '''" "
, , " -':;'("'i-' :W."",,':1' ':
..'. \."I$.\<Il I . r,
h tasso di hitj , :' ! ' " ',i:,' ;', ',' Sootituendo in 7.3 e in 7.2 si ottiene:
. , : , ," " ';" f
d
""'(' '--1 h) .. ,. ....., ....,.. .. ..... (7.5)
m tasso 1 mISS m = - ; '_.... :: N +N +n
.".' W (".2:
tc tempo'di aceess6 alla ca:che,' cornprensivo;.del' tempo 11 massimo delle prestazioni si ha per Nw = 0 e N = 1 ovvero quando la memoria
t
: ., 'e' "s"o"m"m' "a
l
"de'I"t' e'm; :d': :;'\ 't':" 'd"'U';o '.. ,. t .' l.l J:<:?)1t letta in un solo ciclo di clock
l6
. Come gia. osservato in precedenza i moderni
p . "'.. . vn j .' po 1 a enza e a.memona e'e '.lif, . . fr ' I d d' -bil il rifi .
. '1 t1del terilp6' necessariO-'a lin'ea' in cache. "';",':" .,\.: I '. .;, ,"\"",: " mlcroprocessor,l a. una COSl a ta a ren ere unPOSSl e ve carSI
'\' di questa condlzlone con le_ rnem<:!le DRAM,
Vequazione 7.1, fornisce i criteri per l'ottirnizzazione di una memoria cache In presenza di cache tM = te. Una cache ben progettata deve non solo ave!e
consiste di quattro aspetti: , un tc che permetta l'accesso in un cicio di clock in caso di hit, rna anche un tc
r , sufficientemente basso. La 7.1 indica che te dipende non solo dalla velocita della
1) massimizzare la probabilita di trovare un'rifedmento alla"mernoriia direttamente cache, rna aiIche da m e da t
p
. 5u due fortemente
nella cache (massimizzazione del tasso. di,ihit); " ..-' dimensiohe; la, ".:."; ,: : '.' ';
. .,. . I :'; .', f!' ,'. I' "l! .:' ' .., ' '.',' ,.' . IF: ' nmodello precedenoo non pub eSSere utiltzzato per dimens[onare'una cache. Nella
2) iJ tempo necess.anh.o per accedere a nella cache pratica industriale, per it progetto della cache si ricorre normalmente alia simulazione.
. (ffilll1mlZZazlOne del tempo dl It) . . "", ,,,.,,t, Ii . . 'ch d II
' .o.... A tale SCOPO.f leggere come ,state n.lte car:att.ens.tl e.. e a
. -.,,1 ,=".., ," 'd 1'486' tc' 901' .. ' , . ,. . . "',' ," .... .. ... ' .
0) '" ']'t ddt . ('" . did' I' cacue e ta
'\J, qytl..Q un e tempo l,pen", lzza- ',' . .ii" ,I. . .,'.", . '._;, t .. , :,;:! "" ";".<,,. ,i, I' .'. :,.;;.l!,., . ;',q':' ...:
,
'zlone)' . , ..
. . ,. '" "... . ... '. , . " '. .. ., , .-.. "'1"'.' '''''_ '" , " ","
,,' .. , .. ,.'/"." ",.'H'. :":'.' ., .... '.' " '.,: "'1' .. "".:2<""1"'1' .... , . " ' ,'.'1,',.. .: ".' ";' ,"1. ", .. :1",;., .. \"" "" ",'
. '. .. '"'' ,'" ,. .
, ,.. , I ","
J) a: 't'.'3.i cau.'se di fallimerito aila ,.;' ,";i: , .. ,.!.
t. "mtilti'processdri 0 iri'sisterni con'piu livelIidi'cache..:'.1_ . ,'" I' .. " "',.;: '.;.1,", . '. "",.1:,.: .1-:1 .. -"
'.' " .'" '" .
"i.. .
, ....'i;')",:;\j :,' .. '1(/' :,:: ;:!'-"" ,,'1 :.; \". ";' " ". ".' ,,.
Vogliam
O
, ora,Clu.a,ntifiSNe: prestaziQni. di, un
, Vn,.popolare .lUd,"e: deUe ,e ;1 coslddet,to MIPS (Crr.2..4.2). .;6!{.'
Indicando con.Tpi il.tempD"'1I1edio nchiesto per I eseCUZlOne completatdl un'lstruzlOne
(fetch decodi:fica/esecuzione) ,misur:ato,in .microseclDndi
l
sir ha: . ".. ':'1 , H' .,: ';;'; ,
. . 11' . "iift:.l-,... .
. " I '. :" .j '" :,.;' .':. :" '''/'', I: ';"" ',.j ...
r = . (7 2\ ':'" I' ".,,;... 1
.\ I,' T- "::!'.',' '.' i; . '1'.:;' ..,'.,;' '.. .,/f:. ,., .
, 'f '_'H'.- <
pl .. 'J". ;,' . ,
" ' , " "I" , . , . " ,,' ,'.' ." "".-'.".-,;
t" ", ,,' , ... '.; .. .. ' ,,, ,,>,i,r,I':., ""/i.".'.',,_.,'.,', ,"':'...
'. ;: .,. .. " '" "'. ' .,i' .. : ." ;. '.,
acceSSl .. J1HWrQq?:, ,::.:ft.;' 2. Mlss capa:lta 51 ha un di tutte Ie vo.lte. ill _cli!
I n:' "',; j ,;: ,n6n, e m ,grado dl contenere, rifenmentl:
,'" ., ..... ", ., -" ..... , ,;"n'("'2: , . ,. .'" "1"" .,,' .. ; ':'''',' ':1 .,'::' 1., .. :".;1.,":;),; .'",
.:' ",I, :J",,'.,,,,, '''. 1,IJ,iT':-tM-t'-:....-....\' '."1"'. "'-1; ... "'.
p. - f . .; .,. , , .'-, , I"' "i '., .' i" ",
;':', , '. "', ".: ... '., '.' . '.'".,' .,: ... ,.. ". : ,.'
, , "";,',', I 1 " .. ,,:' . ' . ,. ''', " _ "',' ,
'.f":\{' "'. ' , , , '..... .,., ,.',.' "', '. .. ;. ,.,,1 ...'
.; ".: ';:-, '\ ;.:0[;,;:;': , ' N; 'l'; e. .; Un d,i de,l
;:" ,:,'.' . ' L a.n.ahsl precedente e perche
,. , .. , " '. ,,'I ': i" e dl esecuzlOoe siano strettamente sequenzlah. In dI pIpeline, SI N+ne:i: =
, .. .. ," .... ',,";i!'.I' : 1, dunque un solo stato di a.ttesa-dimezzer\:ibbe h:l :'prestazioni'!d'el' processore:';: '.,:;, ::. 1,1:' l;.i .
.. ') .' '::-.,.
'.',.: , ...",. :\.
-;."',' .:1
303 La memoria cache
7.4.3 Associativita
La linea rappresenta l'unita. di informazione che viene trasferita in cache dalla memo-
ria.
All'aumentare delle dimensiani della linea aumenta la capacita della cache di fruire
della localita spaziale, rna diminuisce il nurnero di linee che possono essere contem-
poraneamente allocate in cache, riducendo 1a probabilita di trovare 1a stessa linea in
tempi successivi (diminuisce la locatita temporate). Tale fenomeno estato approfondi-
tamente studiato in [Smi87). In Figura 7.9 vengono riportati i risultati della studio
17
.
Nel punto in cui, a un incremento della dimension-e della linea, corrisponde un incre-
mento del tasso di miss i due effetti si bilanciano: il valore di linea corrispondente e
queUo ottimale.
Generalmente Ie prestazioni migliorano quando 8i aumenta 1a dimensioni deUa
linea, perche 'aumenta la probabilita che il processore richieda dati gia contenuti nella
cache. Purtroppo, come 1a dimensione della linea incrementa, i1 ritardo introdotto cial
prelevamento dalla memoria principa1e 51 fa sentire e aumenta al probabilita di prele-
yare dati inutili (per esempio codice non eseguito, dati a cui non si fa riferimento). In
conclusione, 130 5celta della dimen5ione della linea cansiste nel trovare un cornpromesso
tra un alto he un basso t
p
. Valori t,ipici della dimensione dllinea sono: 16,32,64, 0
128 byte.
1750no sta.ti considera.te cache unifica.te, solo istruzioni e solo da.ti. Per questa aspetto si veda. piu
. ava.nti.
La Figura 7.8 indica che 1a crescita del grado di associativita migliora Ie prestazioni
della cache. Intuitivamente 130 cosa efacile cia spiegare: can l'aumentare del grado di
associativita. dirninuiscono i confiitti trale linee alia stessa posiz1one relativa. In attre
parole, una maggior associativita riduce m a causa della maggior flessibilita. di mappa-
tura automatica delle linee nella cache. D'aItra parte, at diminuire dell'a.ssociativita.
si riduce il tempo necessario a stabilire se lao linea ein cache, in quanta la relativa
logica diventa pili semplice. PilI alto eit grade d.i associativita. piu ecomplessa 1a
logica di selezione.
Due argomenti vengoDo presentati contra le cache mappate direttamente: '
7.4,2 Dimensione della linea
E evidente che a dimensioni maggiori della cache corrisponde una probabilita. mag-
giore di reperirvi l'informazione cercata. Questo fatto eben. evidenziato dalla Figu-
ra 7.8. Col passare deg.li anni Ie dimensioni delle cache sono andate aumentando. Se
agli inizi degU anni '90 130 dimensione della cache era di pochi kbyte, gia nella seconda
meta della decade, memorie di oltre 1 Mbyte erano diventate normali.
7.401 Dimensione della cache
128 64
(KB)
a 2 vie
16 32
delle cache
Conflitlo a 8 vie
Conflitto a 4 vie
Conflitto a 1 via
4 8
Dirnensione
2
3. Mis$ d.i conflitto (Conflict, Collision). Se la cache ecompletamente associativa
la probabilita eli un miss di conflitto epraticamente zero. Se 1a strategia di piaz-
zamento delle linee ea mappatura diretta 0 set associativ3, vi saranno fallimenti
dovuti ai conftitti, a causa delle linee che devono essere scartate e recuperate.
7.4 Elementi che influenzano Ie prestazioni
In prima approssimazione, i parametri che hanno influenza su m sono:
a) 130 dimensione della cache;
b) la dimensione della linea;
c) il grade d.i associativita..
Tuttavia, altri aspetti intervengono nel determinare le prestazioni della cache tra
cui: Palgoritmo di rimpiazzamento delle lineej l'eventuale precaricamento; 13 scrit-
twa in memoria centrale (write-through/copy-back)i il fatto che lao cache sia divi-
sa 0 unificata; l'esistenza di piu livelli; il posizionamento della cache (cache fisic30
o virtuale)j 130 multiprogrammazione; Ie operazioni di I/O; l'ambiente (monoproees-
sorelmultiprocessore).
Alcum di questi aspetti vengono discussi qui di seguito.
Si noti che cambiando i parametri della cache puo cambiare i1 tipo di miss di
un determinato riferimento dj memoria. Per esempio aumentare 1a dimensione della
,
linea puo cambiare un miss eli tipo obbligatorio in un miss di conflitto. E evidente
che, a differenza dei miss d.i capacita, eliminabili con elevate dimensioni della cache,
i miss eli tipo obbligatorio risulteranno sempre presenti.
Figura 7.8 Tasso di miss in funzioDe della dimensione della cache, secondo il modeUa delle
3 C. Le curve si intendono tracciate per la stessa. dimensione della linea.
302 Capitola 7
\
I
I
I
1 20%
I
~
167-
14%
Miss rate
127.
a seconda
del tipo di
107-
falliInento
87-
67-
47-
2%
07-
1
I
I
303 La memoria cache
7.4.3 Associativita
La linea rappresenta l'unita. di informazione che viene trasferita in cache dalla memo-
ria.
All'aumentare delle dimensiani della linea aumenta la capacita della cache di fruire
della localita spaziale, rna diminuisce il nurnero di linee che possono essere contem-
poraneamente allocate in cache, riducendo 1a probabilita di trovare 1a stessa linea in
tempi successivi (diminuisce la locatita temporate). Tale fenomeno estato approfondi-
tamente studiato in [Smi87). In Figura 7.9 vengono riportati i risultati della studio
17
.
Nel punto in cui, a un incremento della dimension-e della linea, corrisponde un incre-
mento del tasso di miss i due effetti si bilanciano: il valore di linea corrispondente e
queUo ottimale.
Generalmente Ie prestazioni migliorano quando 8i aumenta 1a dimensioni deUa
linea, perche 'aumenta la probabilita che il processore richieda dati gia contenuti nella
cache. Purtroppo, come 1a dimensione della linea incrementa, i1 ritardo introdotto cial
prelevamento dalla memoria principa1e 51 fa sentire e aumenta al probabilita di prele-
yare dati inutili (per esempio codice non eseguito, dati a cui non si fa riferimento). In
conclusione, 130 5celta della dimen5ione della linea cansiste nel trovare un cornpromesso
tra un alto he un basso t
p
. Valori t,ipici della dimensione dllinea sono: 16,32,64, 0
128 byte.
1750no sta.ti considera.te cache unifica.te, solo istruzioni e solo da.ti. Per questa aspetto si veda. piu
. ava.nti.
La Figura 7.8 indica che 1a crescita del grado di associativita migliora Ie prestazioni
della cache. Intuitivamente 130 cosa efacile cia spiegare: can l'aumentare del grado di
associativita. dirninuiscono i confiitti trale linee alia stessa posiz1one relativa. In attre
parole, una maggior associativita riduce m a causa della maggior flessibilita. di mappa-
tura automatica delle linee nella cache. D'aItra parte, at diminuire dell'a.ssociativita.
si riduce il tempo necessario a stabilire se lao linea ein cache, in quanta la relativa
logica diventa pili semplice. PilI alto eit grade d.i associativita. piu ecomplessa 1a
logica di selezione.
Due argomenti vengoDo presentati contra le cache mappate direttamente: '
7.4,2 Dimensione della linea
E evidente che a dimensioni maggiori della cache corrisponde una probabilita. mag-
giore di reperirvi l'informazione cercata. Questo fatto eben. evidenziato dalla Figu-
ra 7.8. Col passare deg.li anni Ie dimensioni delle cache sono andate aumentando. Se
agli inizi degU anni '90 130 dimensione della cache era di pochi kbyte, gia nella seconda
meta della decade, memorie di oltre 1 Mbyte erano diventate normali.
7.401 Dimensione della cache
128 64
(KB)
a 2 vie
16 32
delle cache
Conflitlo a 8 vie
Conflitto a 4 vie
Conflitto a 1 via
4 8
Dirnensione
2
3. Mis$ d.i conflitto (Conflict, Collision). Se la cache ecompletamente associativa
la probabilita eli un miss di conflitto epraticamente zero. Se 1a strategia di piaz-
zamento delle linee ea mappatura diretta 0 set associativ3, vi saranno fallimenti
dovuti ai conftitti, a causa delle linee che devono essere scartate e recuperate.
7.4 Elementi che influenzano Ie prestazioni
In prima approssimazione, i parametri che hanno influenza su m sono:
a) 130 dimensione della cache;
b) la dimensione della linea;
c) il grade d.i associativita..
Tuttavia, altri aspetti intervengono nel determinare le prestazioni della cache tra
cui: Palgoritmo di rimpiazzamento delle lineej l'eventuale precaricamento; 13 scrit-
twa in memoria centrale (write-through/copy-back)i il fatto che lao cache sia divi-
sa 0 unificata; l'esistenza di piu livelli; il posizionamento della cache (cache fisic30
o virtuale)j 130 multiprogrammazione; Ie operazioni di I/O; l'ambiente (monoproees-
sorelmultiprocessore).
Alcum di questi aspetti vengono discussi qui di seguito.
Si noti che cambiando i parametri della cache puo cambiare i1 tipo di miss di
un determinato riferimento dj memoria. Per esempio aumentare 1a dimensione della
,
linea puo cambiare un miss eli tipo obbligatorio in un miss di conflitto. E evidente
che, a differenza dei miss d.i capacita, eliminabili con elevate dimensioni della cache,
i miss eli tipo obbligatorio risulteranno sempre presenti.
Figura 7.8 Tasso di miss in funzioDe della dimensione della cache, secondo il modeUa delle
3 C. Le curve si intendono tracciate per la stessa. dimensione della linea.
302 Capitola 7
\
I
I
I
1 20%
I
~
167-
14%
Miss rate
127.
a seconda
del tipo di
107-
falliInento
87-
67-
47-
2%
07-
1
I
I
\
I
I
I
I
I
I
I
I
\
I
I
1
I
I
1
I
1
una
305
,. ;, .,. - .'"
.' '. _.d. ...
1: ; d' I
.,: .
. . ,
q. .t a .
"
I 1" f.; :!
La memoria cache:,
,a).a ,parita di' dimensioni 130 oache mapp:ata. direttam.ellte fla;-un -k minore,di
cache'assodatiyai' .1.,'.\",,, ':::' I: . t" : ' .. : . ;,."11. ,',t.; .,; ":' '.i .-::;:. !
18Con il termine di trash'ing si denota un fenomeno ehe puo manifestarsi in pres-eriz.-a"di"uso
sf clli'I' .. $i' d!
'mlss e' the ;ra.: parola indlnztata' sis. lal :prima' di una: line'a} in: iCoIitrdntire- 'di "cache 'foroisee
il "della' patola,' :e, prosegue''Con/j ,prelev.amentil successivi. .Si"supponga, di 'essen! .sfortu'nat\
.. N.I!
abbia fin ito i1 prelevamento per accedere alia. a
In casi particolarmente sfortunati la cache pub diriiinWre Ie ptesta:zioIii' dfH 'sistema: \ La:: sind-r6ine
pp'l(ution,.jnquiname:nto della.,mem.or-ia inutiU.per:il ptQCe8S0re.
f,
.9-3:
che' 'la' 'Utlhnl effitienteh1'ente: fn' p,anlcolare 'nfen:ilito a 'Sisteriii '<Ii ((Od) della'eacp:e,
esempio per forzare iI mantenim'ehtO"di" ceftelIIiee eontenenti una; pattedi ;codice: 'p'lnlcolu-rneith
critka. Consideriamo iI caso dassico del prodotto di due matrici: ci sono tre loop annidati, due
esplorano righe e eolonne, il terzo opera il prodotto 8calare. Nel GaSO di matrid partkolannente
grandi, iI continuo apuzolamento della memoria puo portare a. dellesituazioni in-cui il codice dei
l.iienecallicat0' e- seancato, da.na pel' far pos\o a,1'd:ati-,c.he pdi noni l'iutillizati.
In, queeti >(!.asi ,e molto meglio ploccare nella 'cache,tutto n.codice:relativo:a.i tre loop_ .Per'applicaZicini
in tempo, reale, 'dove- e Ia- risposta del' programma deve'essere di tipo <l.eterministico" la possibitita.
di ,ttashfng. deve eseere assoluta:rnente'esclusa, bloccando 'di'cache'che devono'essere'sempre
presenti. ., '.
b) La cache mappata direttamente eprona al trashing's,
nprimo argomento esenz'altro vero, rna diventa rapidamente irrilevante a11'au-
mentare delle dimensioni della cache. I L3iEigwa 7
cole dimensioni Ie cache mappate direttamente hanno h sensibilmente 'pili basso di
cache associative a 2,408 vie e che 1a differenza tende ad annullarsi col crescere della
dimeliSione ,deUa,.cariliiL In' [HiI88} Wen" mostrato,come;! per Una 'cache: di ,8,kbyte; Ja
differenza fra una cache mappata direttamente e una associativa..a,2".v.ie:e delPordine
,3%.. Ja aliI' 0,5%",. ,,;,' ,;
.f'L1I1, p."ql.che. i,ridot\l temp,i 4.\ ,ri\a.rdp
inerenti aile cache mappate direttamente <ri, ..
del selettore di blocco) producono una cache pili veloce (minore to") e) sostanzialmente,
'con 10 stesso h di quelle associative.
Per quanta si riferisce al trashing
l9
, questo puo manifestarsi in presenza di pro-
... 1,i ,!r:i, ...4j
..?:
linee, oe nsulta una attlvita di contmuQ cadcame.I,1tq PQl?izio.ne .dl. qu:be.
\,""" .. ' '"., ... ..J' .... "".''1')'' ."
q:}nt,9 it t.rasferimento di una lin,ea iichled'comunque' piu' tempo
della di" 'parbla:'di memoria fiSilitate Jssere
prestiiZionl'i! '<Ii iii a'hebbero tache:
Per ditnerlsiorii' oj: 'caclle 'rilevanti: la prooabiUt!' the; lSi; tnanifesti! uW evenlo' e' c051
;'.' .'.;. ,,,; .. ,;., ",; i",J .; .. -, ..,: ...: 1:-,
. ,:'i' A fa-yore' delle cache: .mappate dirett-amente v.engono pre:Sentati.-.i ;seguenti argo-
, .,
men..,: .t' l . J '. I. ';l! '.' ":",,:'. " '11..1' .. ; ';,.' ', . , 1. ;;:' j" ::;,'n , :'.
, . .
.. ,. ','. .
;'!.' ill .:. '!
.... . _".; """",::;;' ..'h
: J.j ;j/ 'i:Ptei-h'pc}'(ii': 1tc} e: i"ilferi6'ie .perl"I 'e'tii:riinkiid,iie' i.deil.a: :t'!i"S"opta;; i:'
':'.' :',' I,' "'.; ,"'. ,'.;" ' , .'.+ ;1 .: '.: ' .. ;' : .. ,j .,' ': ",' .; b ;),'. L .. '"
. .
" ...
;.');:.!
" ,
.';' 1
"
"
,
": I'
,- ".
" i', !
_I 1
, " ,

...
_. \',.1
'., k
... '.\
,:, ":-1":
,.' ".
",:(..:
";" '"
.1,:<....",
, .,
. ,. \ .
.t, .p'"'"
0< '.'
. " i I .
,:1 :!
'. : ". : : .
'.r;',-", "::'"
. "

'"

':.oM1
'"'
.1,",::,,
"f.. -

-;- .,' i;, i
1',_: ,;
, '. "
I
" ,," ""' ... ,. '",., ,.,,"!!"" , 1",.,.> "1
I ",
,':,j)J;'I': \' i \.,'.I},::: .;:!:':'i
,", .....
1.,/"- _'.. ,...'.... ,' ..
;. ,,' \1 "::,1:',) ,,,,,,
i. .... 1'; i,,!, ;.'",i,.
,- ....
'>
2 ... ,2 ',"
(Byte)
,
...2 ..
.. .'
'. :

.2
'. ... i ' : - , ' "
]2
" - I' I. ',";';"'";$4:'
;;:::. ,I
. '.j, ,
,
2
i,
Dimensione della linea
--

I)''''.,....,i-".''I- J2 ' .., 32: U
,
2
..
F ...' ' .. Hi l. CO".''"'' "j , 'h";!-
. . . ...
., ;
" ,
"
i'
"
..
:0-91. "
;.,'.- ;'1; :1: " .. llJ . '.; .,';
. . I
1 .. ;.' ;,' .. ' .. ).; .,! ;';, .:
,
O"Cf1: ::;'::;::",ri..:' 'j:H':,'.'
:'., ),' .)3:' .. ,.., I ,':,. ll;la ., ,r.!.;!
J21A .
., .... ,.,
i'!. '$ ...... l' ',I;' .. l,'. ... n.
.,A .2: '; 4, 'n,,2 .:;; .. :2,; "/'1 .'.'\.,,r;;: 1./1(":;,
, ,1.,. ,1''''''1
'Oimensio'ne"deha"l'ine'a .,/ '.,r. ;:'
'" .,' Jl,
050 F ::::::::-..... i, u u " l
. ,':
,.0.
1
,9
0_05
. ,
,
,,"
,. .; .
" ,
., . .
,",'
.'

"
;';' ,t.:!
, ..
" .
"
,
'"

,
,

-"CI'l'"
010
' 1"''0'''- ,.i.l ...
0.01
,,'0' : 0,05,

..... ;l'IS, _,,;,,'1':< ,.

, "
. ," .11"
1:-':,",-0
' .., '
., . \: I
'l '
,
i'.'" ,",
. : -.
.' .:
... ';'.' ; ..
,.
.,
, : ,', i
" ..
Capitolo tJ
, ,
.. , , '
! , (.
! i : ! .
"'r
, .. '",.
'.' '
'. ., , .
, , I :' ",., ..
,
,.. ,
, '. , J
':,1
,d' ,; ;, . ,;,
,,
. .! . :. ':' ,.
, i '.'
.,.,.
. , ! I ',: I'
"
I 1.,.,;1 ,.
I
J
'3 I. '. '7 . ' ,
2,<,2',,2 ,,2, 2, .2
Oimensione della linea (Byte)
Figura 7.9 Tasso di fallimenti in funzione della. dimensione della linea per differenti dimen
sioni complessive deUa cache. Le tre figure si riferiscono rispettivamente at caso della cache
unifiyata, della cache di sole istruzioni e della cache di soli dati. Si' noti'-che di
.m'oito piccola cresdt'a: 'della dtro:ensione iih" ,:" .
:, "'.\l
;- ,',:
: ;
,j 11,,:'.
, , I:
'd," ,

50
t
,," - I < , '.
. .. ,\ .. ,.. ..,.1',
s::: ,'." ...... \.. ,
; :::---:::::---- ,
E
:::::-;::::. ::: "'. 1 ,
.. , :p .....,.; ;:,;i:;;., . ;,' ... I :-:' ." ',,' ..... :. :,,', .,'
, . 0.10 ;,., """,'. ,.'1'.';'
,;, '" ,!I.,.IoJI '_'., ".'. ,
"
.. , ." ::.,,..,O!..... OS d .. ii,. '';'1 :.,;.
" '. .,." "(II'" u.. . . .
" . , ", .' .... '"'''' .. 1''' ,,,
,", '''" .. -,,. :, ., ". ""',._""'" , .....
"". ,., '". "'. .. '., . -
I , .. ,r:-,.!.' .. , ., , I,. : \,1'" .,f '." ":;li.; . :,'1 . ',
\, .. .' .. .,.),", ':.l,';';:;' ,. , . ,.0- , lIlt
'j ".;:
-
"j I: .;;/; i' . .pO.oO:.E' ..
; ' !
..
. ,
'"

\
I
I
I
I
I
I
I
I
\
I
I
1
I
I
1
I
1
una
305
,. ;, .,. - .'"
.' '. _.d. ...
1: ; d' I
.,: .
. . ,
q. .t a .
"
I 1" f.; :!
La memoria cache:,
,a).a ,parita di' dimensioni 130 oache mapp:ata. direttam.ellte fla;-un -k minore,di
cache'assodatiyai' .1.,'.\",,, ':::' I: . t" : ' .. : . ;,."11. ,',t.; .,; ":' '.i .-::;:. !
18Con il termine di trash'ing si denota un fenomeno ehe puo manifestarsi in pres-eriz.-a"di"uso
sf clli'I' .. $i' d!
'mlss e' the ;ra.: parola indlnztata' sis. lal :prima' di una: line'a} in: iCoIitrdntire- 'di "cache 'foroisee
il "della' patola,' :e, prosegue''Con/j ,prelev.amentil successivi. .Si"supponga, di 'essen! .sfortu'nat\
.. N.I!
abbia fin ito i1 prelevamento per accedere alia. a
In casi particolarmente sfortunati la cache pub diriiinWre Ie ptesta:zioIii' dfH 'sistema: \ La:: sind-r6ine
pp'l(ution,.jnquiname:nto della.,mem.or-ia inutiU.per:il ptQCe8S0re.
f,
.9-3:
che' 'la' 'Utlhnl effitienteh1'ente: fn' p,anlcolare 'nfen:ilito a 'Sisteriii '<Ii ((Od) della'eacp:e,
esempio per forzare iI mantenim'ehtO"di" ceftelIIiee eontenenti una; pattedi ;codice: 'p'lnlcolu-rneith
critka. Consideriamo iI caso dassico del prodotto di due matrici: ci sono tre loop annidati, due
esplorano righe e eolonne, il terzo opera il prodotto 8calare. Nel GaSO di matrid partkolannente
grandi, iI continuo apuzolamento della memoria puo portare a. dellesituazioni in-cui il codice dei
l.iienecallicat0' e- seancato, da.na pel' far pos\o a,1'd:ati-,c.he pdi noni l'iutillizati.
In, queeti >(!.asi ,e molto meglio ploccare nella 'cache,tutto n.codice:relativo:a.i tre loop_ .Per'applicaZicini
in tempo, reale, 'dove- e Ia- risposta del' programma deve'essere di tipo <l.eterministico" la possibitita.
di ,ttashfng. deve eseere assoluta:rnente'esclusa, bloccando 'di'cache'che devono'essere'sempre
presenti. ., '.
b) La cache mappata direttamente eprona al trashing's,
nprimo argomento esenz'altro vero, rna diventa rapidamente irrilevante a11'au-
mentare delle dimensioni della cache. I L3iEigwa 7
cole dimensioni Ie cache mappate direttamente hanno h sensibilmente 'pili basso di
cache associative a 2,408 vie e che 1a differenza tende ad annullarsi col crescere della
dimeliSione ,deUa,.cariliiL In' [HiI88} Wen" mostrato,come;! per Una 'cache: di ,8,kbyte; Ja
differenza fra una cache mappata direttamente e una associativa..a,2".v.ie:e delPordine
,3%.. Ja aliI' 0,5%",. ,,;,' ,;
.f'L1I1, p."ql.che. i,ridot\l temp,i 4.\ ,ri\a.rdp
inerenti aile cache mappate direttamente <ri, ..
del selettore di blocco) producono una cache pili veloce (minore to") e) sostanzialmente,
'con 10 stesso h di quelle associative.
Per quanta si riferisce al trashing
l9
, questo puo manifestarsi in presenza di pro-
... 1,i ,!r:i, ...4j
..?:
linee, oe nsulta una attlvita di contmuQ cadcame.I,1tq PQl?izio.ne .dl. qu:be.
\,""" .. ' '"., ... ..J' .... "".''1')'' ."
q:}nt,9 it t.rasferimento di una lin,ea iichled'comunque' piu' tempo
della di" 'parbla:'di memoria fiSilitate Jssere
prestiiZionl'i! '<Ii iii a'hebbero tache:
Per ditnerlsiorii' oj: 'caclle 'rilevanti: la prooabiUt!' the; lSi; tnanifesti! uW evenlo' e' c051
;'.' .'.;. ,,,; .. ,;., ",; i",J .; .. -, ..,: ...: 1:-,
. ,:'i' A fa-yore' delle cache: .mappate dirett-amente v.engono pre:Sentati.-.i ;seguenti argo-
, .,
men..,: .t' l . J '. I. ';l! '.' ":",,:'. " '11..1' .. ; ';,.' ', . , 1. ;;:' j" ::;,'n , :'.
, . .
.. ,. ','. .
;'!.' ill .:. '!
.... . _".; """",::;;' ..'h
: J.j ;j/ 'i:Ptei-h'pc}'(ii': 1tc} e: i"ilferi6'ie .perl"I 'e'tii:riinkiid,iie' i.deil.a: :t'!i"S"opta;; i:'
':'.' :',' I,' "'.; ,"'. ,'.;" ' , .'.+ ;1 .: '.: ' .. ;' : .. ,j .,' ': ",' .; b ;),'. L .. '"
. .
" ...
;.');:.!
" ,
.';' 1
"
"
,
": I'
,- ".
" i', !
_I 1
, " ,

...
_. \',.1
'., k
... '.\
,:, ":-1":
,.' ".
",:(..:
";" '"
.1,:<....",
, .,
. ,. \ .
.t, .p'"'"
0< '.'
. " i I .
,:1 :!
'. : ". : : .
'.r;',-", "::'"
. "

'"

':.oM1
'"'
.1,",::,,
"f.. -

-;- .,' i;, i
1',_: ,;
, '. "
I
" ,," ""' ... ,. '",., ,.,,"!!"" , 1",.,.> "1
I ",
,':,j)J;'I': \' i \.,'.I},::: .;:!:':'i
,", .....
1.,/"- _'.. ,...'.... ,' ..
;. ,,' \1 "::,1:',) ,,,,,,
i. .... 1'; i,,!, ;.'",i,.
,- ....
'>
2 ... ,2 ',"
(Byte)
,
...2 ..
.. .'
'. :

.2
'. ... i ' : - , ' "
]2
" - I' I. ',";';"'";$4:'
;;:::. ,I
. '.j, ,
,
2
i,
Dimensione della linea
--

I)''''.,....,i-".''I- J2 ' .., 32: U
,
2
..
F ...' ' .. Hi l. CO".''"'' "j , 'h";!-
. . . ...
., ;
" ,
"
i'
"
..
:0-91. "
;.,'.- ;'1; :1: " .. llJ . '.; .,';
. . I
1 .. ;.' ;,' .. ' .. ).; .,! ;';, .:
,
O"Cf1: ::;'::;::",ri..:' 'j:H':,'.'
:'., ),' .)3:' .. ,.., I ,':,. ll;la ., ,r.!.;!
J21A .
., .... ,.,
i'!. '$ ...... l' ',I;' .. l,'. ... n.
.,A .2: '; 4, 'n,,2 .:;; .. :2,; "/'1 .'.'\.,,r;;: 1./1(":;,
, ,1.,. ,1''''''1
'Oimensio'ne"deha"l'ine'a .,/ '.,r. ;:'
'" .,' Jl,
050 F ::::::::-..... i, u u " l
. ,':
,.0.
1
,9
0_05
. ,
,
,,"
,. .; .
" ,
., . .
,",'
.'

"
;';' ,t.:!
, ..
" .
"
,
'"

,
,

-"CI'l'"
010
' 1"''0'''- ,.i.l ...
0.01
,,'0' : 0,05,

..... ;l'IS, _,,;,,'1':< ,.

, "
. ," .11"
1:-':,",-0
' .., '
., . \: I
'l '
,
i'.'" ,",
. : -.
.' .:
... ';'.' ; ..
,.
.,
, : ,', i
" ..
Capitolo tJ
, ,
.. , , '
! , (.
! i : ! .
"'r
, .. '",.
'.' '
'. ., , .
, , I :' ",., ..
,
,.. ,
, '. , J
':,1
,d' ,; ;, . ,;,
,,
. .! . :. ':' ,.
, i '.'
.,.,.
. , ! I ',: I'
"
I 1.,.,;1 ,.
I
J
'3 I. '. '7 . ' ,
2,<,2',,2 ,,2, 2, .2
Oimensione della linea (Byte)
Figura 7.9 Tasso di fallimenti in funzione della. dimensione della linea per differenti dimen
sioni complessive deUa cache. Le tre figure si riferiscono rispettivamente at caso della cache
unifiyata, della cache di sole istruzioni e della cache di soli dati. Si' noti'-che di
.m'oito piccola cresdt'a: 'della dtro:ensione iih" ,:" .
:, "'.\l
;- ,',:
: ;
,j 11,,:'.
, , I:
'd," ,

50
t
,," - I < , '.
. .. ,\ .. ,.. ..,.1',
s::: ,'." ...... \.. ,
; :::---:::::---- ,
E
:::::-;::::. ::: "'. 1 ,
.. , :p .....,.; ;:,;i:;;., . ;,' ... I :-:' ." ',,' ..... :. :,,', .,'
, . 0.10 ;,., """,'. ,.'1'.';'
,;, '" ,!I.,.IoJI '_'., ".'. ,
"
.. , ." ::.,,..,O!..... OS d .. ii,. '';'1 :.,;.
" '. .,." "(II'" u.. . . .
" . , ", .' .... '"'''' .. 1''' ,,,
,", '''" .. -,,. :, ., ". ""',._""'" , .....
"". ,., '". "'. .. '., . -
I , .. ,r:-,.!.' .. , ., , I,. : \,1'" .,f '." ":;li.; . :,'1 . ',
\, .. .' .. .,.),", ':.l,';';:;' ,. , . ,.0- , lIlt
'j ".;:
-
"j I: .;;/; i' . .pO.oO:.E' ..
; ' !
..
. ,
'"

Delle due tecniche write-through e write-back si e parlato in precedenza. Ambedue
pregi e difetti. In caso di write-back, Ie scritture vengono effettuate alla
velocita della cache, e scritture multiple nella cache richiedono una sola scrittura nel
Hvello inferiore della memoria. Le operazioni di scrittura non sono dirette verso la
221 progettisti Intel, all 'atto della presentazione del 486 avevano SQ5tenuto la validita. della. soluzione
unificata [Cra90}.
23Quesl.O eil problema. che si e presentato a.i progettisti Intel nel passare al Pentium. n Pentium
doveva essere compatibile con le preeedenti macchine dal punto di vista del software. E quindi
posaibile che su Pentium vengano fatti eseguire programmi automodificanti, scritti per modelli di
CPU precedenti. Dunque estato necessario inventare dei trucchi per fare in modo che in presenza
di eodice automodificante la CPU funzionasse Meora.
24 Cib richiede la presenza di una di pipeline, in modo che mentre 10 stadia di fetch preleva il
proasimo codice dalla cache iatruzioni, la cache da.ti PUQ essere letta. 0 scritta da altri stacH della
pipeline. 10 aitre parole, i conflitti tra accessi at dati e alle istruzioni vengono praticamente eliminati.
,
"" ..
memoria centrale
Cache divisa 0 unificata
7.4.6 Aggiornamento della
ii-p;>,- .,
.

La. memoria cache 307
,:J:,..,,,t;'f..,
.' -
..,: .
.
' .
w'" .
. 7 4 5
..,. '. , .,
. "'1'" .. :",.,
. I",'"
In origine 1a cache era unica. Negli negli anni recenti sono apparsi molti sistemi con
cache separate per dati e istruzionL Tanto per restare in Wl ambito molto diffuse,
queUo dell'architettura Intel 8086: il micro 486 ha una cache unificata1il Pentium e i
modelli successivi hanno una cache istruzioni e una cache dati
22
. Tra gli argomenti a
vantaggio 0 a svantaggio della divisioneJunificazione ci sonG i seguenti.
. Sernbra evidente the gli accessi relativi alle istruzioni abbiano un alto grado di
localita. Dunque, prevedere una cache per sole istruzioni dovrebbe alzare il valore del
,\:' relativo h (i dati sperimentali confermano solo parzialmente questa assunto).
La divisione reode il progetto della cache delle istruzioni piu semplice, perche il
contenuto della cache istruzioni viene. modi.ficato (e una cache d.i so.la le.ttura .da
parte della CPU). Naturalmente, se 1 compllaton tollerano programml.cUl econsentlto
di modificare il coctice, allora nascono dei problemi di consistenza: l'eventuale modifica
..,: di una essere ricoI)osciuta dell'esecuzi.one dell1istruzione 23.
_,'\' . Tra 1 fatton che mfluenzano Ie prestazlODl della CPU Cl sono la larghezza dl banda
-i e il tempo di accesso alIa cache. Entrambi possooo essere migliorati can 1a cache
, . divisa. La larghezza di banda raddoppia con una cache divisa, perche epossibile in
'<:(,10 contemporaneita il fetch e la lettura/scrittura eli un dato
24
.
La suddivisione pUD portare a un uso inefficiente della cache stessa, in quanto
la di memoria occupata dai e dalle istruzioni varia frequentement.e
I' all'mterno del programma. Una cache umficata tende a sfruttare megho Ie sue n-
,. sorse limitate potendo adattarsi dinamicamente tra dati e istruzioni. Questo [atto e
:. confermato dai risultati di alcuni studi sperimentali, che mostrano come una cache
" .unificata di dimensioni pari alla somma delle dirnensioni delle due cache separate
'.' abbia superiori.. ... ,. ., .
J.n FIgura 7..9 sono stat! 1 nsultatl dl s.ull'influenza .della dl:
della h.nea della cache. 81 notmo Ie dIflerenze tra 11 caso dl
..,.. cache umficata, lstruzloOl e dati.
'I'
"'''' '","'. :t'>t. ,.(
., ..", it.

"' d., .
- ,. ;0 <; -

..
";.", " ,'.' .
...-. . " ., ....
; ".'.' 1 'I'i"-';."'
_";, '"', i..',... .
, ,,':;j'l! :';""'..':;::'
.j':>',":"-:

' .........
,
d:"'''.
"..:;-;....:::n,
.';' ,;: ,;>:,:
.' ""'r, ',
';I"l' .
-,'"
.
.. , ..
;- '..':
,""ill
, '. ,.'r-,;:
'. \ '-;...' .
..
. ,'Ii' '."" "
, ".
, .. .. "."
" .. j, ''" '.
.;': ;1':.:" ".."
,., . l>' ..,'" "
"""':01' -,'.
,'
;':..' t .. , .., ;; .
, " 'j '.,'..' ',' ,
"1
.,."" ..
; ':ti'..r,t-,
'<,'$' Il"l.,-." - '
. ,.
-'-";", ""'Wii""'j,':'l"
-, '1 ".''oil'. . T', _ .
non enecessaria la logica per il rimpiazzamento in cache, essendoci corrispon-
denza diretta fra le linee della cache e queUe della. memoria principale.
200vviamente gli algoritmi di sOlltituzione non in gioco se la. cache ea. mappatura diretta.
2lCuri06amente, aleuni esperimenti di svariati anni addietro [Smi87J mostrano ehe 1a sostituzione
easuale producte generalmente un h maggiore che LRU. Si tratta perc> di dati relativamente vee-
chi (1983), riferiti a dirnensioni di cache piccole rispetto agli standard attuali e ad architetture
tra.Iil.ontate.
Prelievo della linea L'algoritmo standard di caricamenta della cache prevede che
una linea sia caricata solo quando essa eeffettivamente ricb.iesta. Si parla, in tal caso,
di cancamento su richiesta (demand fetching).
Una tecnica specifica per Ie cache eil precaricarnento (pre/etch) della linea. Te-
nuta conto del principia di localita spaziale, un miss BU una qualWlque linea reode
altamente probabile un miss sulla linea seguente. Si puo usare questo concetto per
anticipare la cache prelevando, oItre alla linea di cache richiesta, anche la successiva.
Ci sono clue possibili Si tratta di progettare un controllore che
legga anche la linea successiva. (oItre a quella richiesta) e la memorizzi in un buffer
in attesa della richiesta effettiv3j oppure che trasferisca direttamente in cache la linea
successiva. Entrambi i metodi richiedono un controllore eli memoria pili complesso e
un sistema d.i contrello degli indirizzi che dia la precedeoza agli indirizzi effettivamente
richiesti. In altre parole, se il processore richiede uno specifieD indirizzo non si deve
iniziare il cielo eli prefetch, per evitare inutile traffico suI bus e cieli di attesa suI
,
processore.
n precaricamento dinamico sequenziale pub dimezzare il tasso di miss [Smi82].
e'e chi ha stimato addirittur3 una riduzione del 75-80%. 8i tratta di vantaggi si-
gnificativi, anche se questo metodo necessita, per essere efficace, di una
dimensione della cache: il precaricamento aumenta drammaticamente l'inquinarp.ento
(informazioni entro la linea non utilizzate).
Nel caso di cache secondarie, siccome il loro h e relativarnente basso (dal 50
al 90%), l'inquinamento derivante puo considerarsi innocuo: e possibile ottenere i1
precaricamento con un minimo aumeDto della complessita del controllore, stabilendo
una dimensione della linea maggiore nella cache secondaria.
I principali a1goritmi di rimpiazzarnento (LRD, Random e FIFO) sono stati discussi
in precedenza (efr. 7.2)20
LJalgoritmo LRU sembra queUo capace di fornire migliori prestazioni
21
. Di fatto
Ie odierne maccbine con cache non mappata direttamente impiegano 1a tecnica LRU
o sue semplificazioni, Bil cache a 2, 4 0 8 vie.
7.4.4 Algoritmi di rimpiazzamento
306 Capitolo 7
\
\
\
(
\
I
\
\
\
\
\
I
I
\
Delle due tecniche write-through e write-back si e parlato in precedenza. Ambedue
pregi e difetti. In caso di write-back, Ie scritture vengono effettuate alla
velocita della cache, e scritture multiple nella cache richiedono una sola scrittura nel
Hvello inferiore della memoria. Le operazioni di scrittura non sono dirette verso la
221 progettisti Intel, all 'atto della presentazione del 486 avevano SQ5tenuto la validita. della. soluzione
unificata [Cra90}.
23Quesl.O eil problema. che si e presentato a.i progettisti Intel nel passare al Pentium. n Pentium
doveva essere compatibile con le preeedenti macchine dal punto di vista del software. E quindi
posaibile che su Pentium vengano fatti eseguire programmi automodificanti, scritti per modelli di
CPU precedenti. Dunque estato necessario inventare dei trucchi per fare in modo che in presenza
di eodice automodificante la CPU funzionasse Meora.
24 Cib richiede la presenza di una di pipeline, in modo che mentre 10 stadia di fetch preleva il
proasimo codice dalla cache iatruzioni, la cache da.ti PUQ essere letta. 0 scritta da altri stacH della
pipeline. 10 aitre parole, i conflitti tra accessi at dati e alle istruzioni vengono praticamente eliminati.
,
"" ..
memoria centrale
Cache divisa 0 unificata
7.4.6 Aggiornamento della
ii-p;>,- .,
.

La. memoria cache 307
,:J:,..,,,t;'f..,
.' -
..,: .
.
' .
w'" .
. 7 4 5
..,. '. , .,
. "'1'" .. :",.,
. I",'"
In origine 1a cache era unica. Negli negli anni recenti sono apparsi molti sistemi con
cache separate per dati e istruzionL Tanto per restare in Wl ambito molto diffuse,
queUo dell'architettura Intel 8086: il micro 486 ha una cache unificata1il Pentium e i
modelli successivi hanno una cache istruzioni e una cache dati
22
. Tra gli argomenti a
vantaggio 0 a svantaggio della divisioneJunificazione ci sonG i seguenti.
. Sernbra evidente the gli accessi relativi alle istruzioni abbiano un alto grado di
localita. Dunque, prevedere una cache per sole istruzioni dovrebbe alzare il valore del
,\:' relativo h (i dati sperimentali confermano solo parzialmente questa assunto).
La divisione reode il progetto della cache delle istruzioni piu semplice, perche il
contenuto della cache istruzioni viene. modi.ficato (e una cache d.i so.la le.ttura .da
parte della CPU). Naturalmente, se 1 compllaton tollerano programml.cUl econsentlto
di modificare il coctice, allora nascono dei problemi di consistenza: l'eventuale modifica
..,: di una essere ricoI)osciuta dell'esecuzi.one dell1istruzione 23.
_,'\' . Tra 1 fatton che mfluenzano Ie prestazlODl della CPU Cl sono la larghezza dl banda
-i e il tempo di accesso alIa cache. Entrambi possooo essere migliorati can 1a cache
, . divisa. La larghezza di banda raddoppia con una cache divisa, perche epossibile in
'<:(,10 contemporaneita il fetch e la lettura/scrittura eli un dato
24
.
La suddivisione pUD portare a un uso inefficiente della cache stessa, in quanto
la di memoria occupata dai e dalle istruzioni varia frequentement.e
I' all'mterno del programma. Una cache umficata tende a sfruttare megho Ie sue n-
,. sorse limitate potendo adattarsi dinamicamente tra dati e istruzioni. Questo [atto e
:. confermato dai risultati di alcuni studi sperimentali, che mostrano come una cache
" .unificata di dimensioni pari alla somma delle dirnensioni delle due cache separate
'.' abbia superiori.. ... ,. ., .
J.n FIgura 7..9 sono stat! 1 nsultatl dl s.ull'influenza .della dl:
della h.nea della cache. 81 notmo Ie dIflerenze tra 11 caso dl
..,.. cache umficata, lstruzloOl e dati.
'I'
"'''' '","'. :t'>t. ,.(
., ..", it.

"' d., .
- ,. ;0 <; -

..
";.", " ,'.' .
...-. . " ., ....
; ".'.' 1 'I'i"-';."'
_";, '"', i..',... .
, ,,':;j'l! :';""'..':;::'
.j':>',":"-:

' .........
,
d:"'''.
"..:;-;....:::n,
.';' ,;: ,;>:,:
.' ""'r, ',
';I"l' .
-,'"
.
.. , ..
;- '..':
,""ill
, '. ,.'r-,;:
'. \ '-;...' .
..
. ,'Ii' '."" "
, ".
, .. .. "."
" .. j, ''" '.
.;': ;1':.:" ".."
,., . l>' ..,'" "
"""':01' -,'.
,'
;':..' t .. , .., ;; .
, " 'j '.,'..' ',' ,
"1
.,."" ..
; ':ti'..r,t-,
'<,'$' Il"l.,-." - '
. ,.
-'-";", ""'Wii""'j,':'l"
-, '1 ".''oil'. . T', _ .
non enecessaria la logica per il rimpiazzamento in cache, essendoci corrispon-
denza diretta fra le linee della cache e queUe della. memoria principale.
200vviamente gli algoritmi di sOlltituzione non in gioco se la. cache ea. mappatura diretta.
2lCuri06amente, aleuni esperimenti di svariati anni addietro [Smi87J mostrano ehe 1a sostituzione
easuale producte generalmente un h maggiore che LRU. Si tratta perc> di dati relativamente vee-
chi (1983), riferiti a dirnensioni di cache piccole rispetto agli standard attuali e ad architetture
tra.Iil.ontate.
Prelievo della linea L'algoritmo standard di caricamenta della cache prevede che
una linea sia caricata solo quando essa eeffettivamente ricb.iesta. Si parla, in tal caso,
di cancamento su richiesta (demand fetching).
Una tecnica specifica per Ie cache eil precaricarnento (pre/etch) della linea. Te-
nuta conto del principia di localita spaziale, un miss BU una qualWlque linea reode
altamente probabile un miss sulla linea seguente. Si puo usare questo concetto per
anticipare la cache prelevando, oItre alla linea di cache richiesta, anche la successiva.
Ci sono clue possibili Si tratta di progettare un controllore che
legga anche la linea successiva. (oItre a quella richiesta) e la memorizzi in un buffer
in attesa della richiesta effettiv3j oppure che trasferisca direttamente in cache la linea
successiva. Entrambi i metodi richiedono un controllore eli memoria pili complesso e
un sistema d.i contrello degli indirizzi che dia la precedeoza agli indirizzi effettivamente
richiesti. In altre parole, se il processore richiede uno specifieD indirizzo non si deve
iniziare il cielo eli prefetch, per evitare inutile traffico suI bus e cieli di attesa suI
,
processore.
n precaricamento dinamico sequenziale pub dimezzare il tasso di miss [Smi82].
e'e chi ha stimato addirittur3 una riduzione del 75-80%. 8i tratta di vantaggi si-
gnificativi, anche se questo metodo necessita, per essere efficace, di una
dimensione della cache: il precaricamento aumenta drammaticamente l'inquinarp.ento
(informazioni entro la linea non utilizzate).
Nel caso di cache secondarie, siccome il loro h e relativarnente basso (dal 50
al 90%), l'inquinamento derivante puo considerarsi innocuo: e possibile ottenere i1
precaricamento con un minimo aumeDto della complessita del controllore, stabilendo
una dimensione della linea maggiore nella cache secondaria.
I principali a1goritmi di rimpiazzarnento (LRD, Random e FIFO) sono stati discussi
in precedenza (efr. 7.2)20
LJalgoritmo LRU sembra queUo capace di fornire migliori prestazioni
21
. Di fatto
Ie odierne maccbine con cache non mappata direttamente impiegano 1a tecnica LRU
o sue semplificazioni, Bil cache a 2, 4 0 8 vie.
7.4.4 Algoritmi di rimpiazzamento
306 Capitolo 7
\
\
\
(
\
I
\
\
\
\
\
I
I
\

-
.
).

1.
I-
I
I .
\
I .
1-
\ .
1
\
1.
1
I
1
1
Cache virtu-ale. La cache e posta tra 1a CPU e I'hardware di traduzione degli

generato dalla Cp.U,.;Se il:dato,appartiene:.a:una!linea,(nello spado deglidndirizzi'
.:' "j ..
,':,,: <al,l9- fisiC:Gl
:r, ,;, \ e,
.i ,;nuestQ.schema... ,. ".1 ,," ." .. , .. i.,",.; '. '.':', ......, ..." :'".:. "",:"",_
,.,.'.''l1.'' ,.' .... , .. , ..... ,.".,"" .. J.' "'. " .... ' . , .. " ..' .:0' 'I} "". ''''J ,"
. -
.,
,., ,.,. ,
,: ,". " : ' ... ; ,.
, ,,I . " < .
Primo liv. econdo liv.
Dimensione della lineal(lfyte1J I: t r:: ( I ; "IJi. A (!
Hil lime (deli di clock) normalmente 1 4 - 10
, gi 710,*,),
8-32 ,
:0:' ' I,!,':,:
3% .
. ;'\ ""':'<1 ,',,'
J).. llJlell,sion
e
A.lIa " " .
' "25 '-"." oi,.:

. 1,.p .,,,...,
. ..... ' . '.
,.
.

r- :1'-'"

"I ,-,. ' ,"
,..
- ,
..':< "c"
__3:.0:.9:.
. . "';r, '
__ --C- ,. '.,S: . ,,'. ",'
- , - .,..
'1.:;-' ., h'i"cl-l',',
, .' '"
j;y I"['."'!:' .' ..
- " < .". ... t tela combinazione del tempo di accesso al secondo livello infenore e del
1a pohtIca usa,dl-.una :banda pet3same .?lU .ed. e men re :cessario a trasferire il blocco.dal Iivello sottostante. t
1a
memoria centrale).
perclO convemente nel caso di ambient! cil lavoro multlproeessore per ndurre 11 traffico . tempo n d' fall' I' d II h di d I' II ' !S' urato suile
. . . I ., d II I . I f '11' . II I.. ..,:,;.. , nvalore del tasso limen tea cae e secon 0 lve 0 t:: m
tra processpn,e memona. COgI,P . e a Fl. .1 pgp.l, YP . cJ.\.Q .:',';. :;P-,4!P}.";;' ,,' . . " b""
......,., .. ". ''"' "'t" " , ,." "'il '"1'''''1''''' .. '. I. '1' ,I."..:;,,:.. ,'chieste che f.lhscono I accesso aHa cache di pnmo hveilo. Per eVltare am IgUII. Sl
una..J.iP.,ea.dl cadlg,vtene ,C9P- e,I,lU C?iln.me,m9Ha, :;Al' ,r . .. .... ' ..' ..... - . .. .... -,
';.".J: , "d' ,! "".,. ...1, .. '1' "'i'tt' :. !'d"ll 'll' .. , .' \ " ',' \;., '.'.,' 'I' .,' ... ! "'J;.";' '. ',.dottano Qumdll seguentl ternum:
se ill prece" Elnza. c e stata una sen ura. su. que a. nea,. , . . ." }it. . ."kl;i!,"'
, .. ' :.. ,.'; t ;' . )Ita: !rb:lea' Hi 'sehr da" >"atiZ t . . . .. ..
,. -'. C..., :e- g .. 'J.' ,P
d
, "' .p
t
'" .. ,'; 'J']: 1 ..,., "'J "Pd"''''I'] ,,'." tasso di fallimentt locale: numero del falhmentl relatIvo al secondo livello dl cache
cedente. tecruca I g"J"ag jre I, per S. a Goerenza, el a 1 -, ", .., d I' . . all'" -. I' II ( . d )
. II 'a.ch' 'T";: . : :. '. ." .:. ""II" ;" ' -,:' .' . 'Ii" :,' .. .'!;: ":'C'''l: l.' . diviso per il numero totale eg I acCesSI .b stesso lye 0 cornspon e a m2
ne.;f c ,: .. Iv .. -'''' ", i : .. _. -'.
... . t": per il numero
',h: I .. ! .. : " : '. .
" .1 '.; ',. ,;, ''I'':.' , .... .'" ., "; ,".";.. q'Ji. :rl";"::. In :';"' .. ;!.,"j', .. n concetto di gerarchla dl memona lmpijca che la della cache di
7
7 C . ,', "Ii' (;.;:.'., It'I'" II '1. . , . , '. . " ".' ,,', : ' , .--. , i':' ,i'" , I' ". ':', secondo Hvello deve essere pi u. vrande di quella 'della'cache di primo Uvello.
. ac e'illli I'lve 0 "... ' 1' , , , , " ". , .. ,. ". -, I '. .,I:,..,....:'.. . 0"', ..
..... .. . ,. ,.. . . '. . ..'" .;: .. '''' .. , . ,_ ,.... I . , .. ' ..,.., u'" --;- , ,., " ,'., . '-' . Se la differenza di dimensidrie e' niCtOIa. 'it lasso' dffalliirieritt sara. alto: la cache
'., .". '.' .., . ' .", ' . '.,' '. ..' .. , .. , .' ",..... " 1'1"1..'\0;, " ' ". ..' '1
,." '. ,i .', "...., ,i' ,; ... 'I' .:. 'f'" I '.:'. "I .r "." .:: ." ',11,\ . ,." ;:, ". dfsecoiJdo livello deve avere"dimensidni vitihe qu.elle 'ill' :Una: centrale:'Se',
::'::
. .;;",.., 'una cache a un solo hvello della stessa .. ';" .. : ',. ...' ;: I, ., . ,
9
j
:,:' ..' la p:oprietd di dei multipli
1
la una
dt un programma. .. '::: '0 i;, '-.:' r!' ' :;'1.' j'! " ;:',";i fi ., '.''''"i ":' """:':" 'f'll) cache dl secondo II.vello contlene anche tutti I datI presentl nella cache dl pnmo hvello
n bl 1>' . II I d ." ad' d' libert'" d I . I . e'. ", -,' ,". . J' .
, , . ',!-. . poso. 0 Q.1 ,: gr.. .,.'" .f!'lll:' e; CIO f;" , iJ:\ ,'j':,"i ,;, 'I .'f ;' :;.;d ,;, . ';l::.:f i': " " II: .. / I' ",) i,,r,'. , "1:";.;
illtrqq F ... /9:i. '. ,. __

'.1:' ':." ,', . il. ',.:r .. '., ,.
. r
a
p
e
l.I.a:.
7
.;1: } .. secqndo
Chla?i memone.pe.r ca.che e hvello..1 '"j ',_ :,';:",,[Ji; ....'!, .j,:!." .. " J'.'lj.',1. i!!'I"I".' .,'1'" ., :' ,J,',;! . r,;;:,. ,:'!
La dw= .. lr:. f,-;q
zif .. ii'. >alla;cachedis"I'qn\lo ,yengQnq, c",cJ>e di,p,lIl)o,
Ulllcamente sulla dl failunento della "-';":' .,.! ".; .. 9i ..
, d I I d" menla. ' ' . . '. I . . . .
. .. ' e asso 1 mISS au .,.;. \I, .....i.:." 11, .;. ::,'" c..;},::: ;,.
, ..\i;';l'1-...i.1'; ..., 1 _ <
'. :1'.1'::1 . j.:i;'I" !.>lit', "'li !,:., .., i"\"',,! ':. ,,;::"::' .', ",;,':.j' ;:.-,,'1 .... ,. ,,In ',,-.1.' '1:.' ::1
--,.., "
.\ ;.;;',iii,I;I.,/ i,r.' i,!.' !:
.. ,.'.' n .' '.. ,,; r.,.,..' ." '." "'.' ,. . .. ,.,. '''.' .' ... t ..... ,
I .L ....')'.'l;l jJi ,\'';!!;I<I,i 1:.':'.1' '.', ... j:. ." ,:::..,.{,;:
. . Nei sistemi a memoria virtuale si pone un altro problema: il
': I,) .. CaChelI'ispetto..a:lla- Unit;.l?llIi.ita,dictra:duzione.degli iindi-
:. .... ., . .:' " ,r Figiira'7..l0. mostra Ie' due altemative,nel:-pbsizienamento
TabelIa ... deUa,cachei"" 11.'.. .. "d '.';'"';'\>1', "Ird '/,Ii, ,.; '."(-,';.' .. "". 'j """:',L(!:r:.";11 1;'
[ due casi hanno Ie seguenti " ... ',,:' .,.. ;,';,1":',';.' "':,
.. . . _. .. _ _'. . .
, . . , . . ,--,\';;;1, fo-.t-."
" .',,"i.,':i ), 1.',\'" ".,j', '."'l'.; '_: .:.,"W ft,,:.:.,,;,.
. .' . . '-'." . ".;;. ,
",. Ristriviarno-1a 'follmula cite lega, il ternpO' 'medio alla.. . '
deld?ppio Be' i ',si. ;." '., .,:: "
'.. .' .. '.. l' ""h'x t +ht-'x (h "xT+m ':Ii't)'" ,. ...' "(7'6)' ..
",.;, ...:,.".,'.,." ... ",,9:.::-:- li.,yt P'";,,,'II': '"",: ..,:; :'.'\
.".:'- il i1t:::'
.. %:'
secondo,liveUo, .comprer:tde anche il trasferimento,da,questo.ljv;ello
'

-
.
).

1.
I-
I
I .
\
I .
1-
\ .
1
\
1.
1
I
1
1
Cache virtu-ale. La cache e posta tra 1a CPU e I'hardware di traduzione degli

generato dalla Cp.U,.;Se il:dato,appartiene:.a:una!linea,(nello spado deglidndirizzi'
.:' "j ..
,':,,: <al,l9- fisiC:Gl
:r, ,;, \ e,
.i ,;nuestQ.schema... ,. ".1 ,," ." .. , .. i.,",.; '. '.':', ......, ..." :'".:. "",:"",_
,.,.'.''l1.'' ,.' .... , .. , ..... ,.".,"" .. J.' "'. " .... ' . , .. " ..' .:0' 'I} "". ''''J ,"
. -
.,
,., ,.,. ,
,: ,". " : ' ... ; ,.
, ,,I . " < .
Primo liv. econdo liv.
Dimensione della lineal(lfyte1J I: t r:: ( I ; "IJi. A (!
Hil lime (deli di clock) normalmente 1 4 - 10
, gi 710,*,),
8-32 ,
:0:' ' I,!,':,:
3% .
. ;'\ ""':'<1 ,',,'
J).. llJlell,sion
e
A.lIa " " .
' "25 '-"." oi,.:

. 1,.p .,,,...,
. ..... ' . '.
,.
.

r- :1'-'"

"I ,-,. ' ,"
,..
- ,
..':< "c"
__3:.0:.9:.
. . "';r, '
__ --C- ,. '.,S: . ,,'. ",'
- , - .,..
'1.:;-' ., h'i"cl-l',',
, .' '"
j;y I"['."'!:' .' ..
- " < .". ... t tela combinazione del tempo di accesso al secondo livello infenore e del
1a pohtIca usa,dl-.una :banda pet3same .?lU .ed. e men re :cessario a trasferire il blocco.dal Iivello sottostante. t
1a
memoria centrale).
perclO convemente nel caso di ambient! cil lavoro multlproeessore per ndurre 11 traffico . tempo n d' fall' I' d II h di d I' II ' !S' urato suile
. . . I ., d II I . I f '11' . II I.. ..,:,;.. , nvalore del tasso limen tea cae e secon 0 lve 0 t:: m
tra processpn,e memona. COgI,P . e a Fl. .1 pgp.l, YP . cJ.\.Q .:',';. :;P-,4!P}.";;' ,,' . . " b""
......,., .. ". ''"' "'t" " , ,." "'il '"1'''''1''''' .. '. I. '1' ,I."..:;,,:.. ,'chieste che f.lhscono I accesso aHa cache di pnmo hveilo. Per eVltare am IgUII. Sl
una..J.iP.,ea.dl cadlg,vtene ,C9P- e,I,lU C?iln.me,m9Ha, :;Al' ,r . .. .... ' ..' ..... - . .. .... -,
';.".J: , "d' ,! "".,. ...1, .. '1' "'i'tt' :. !'d"ll 'll' .. , .' \ " ',' \;., '.'.,' 'I' .,' ... ! "'J;.";' '. ',.dottano Qumdll seguentl ternum:
se ill prece" Elnza. c e stata una sen ura. su. que a. nea,. , . . ." }it. . ."kl;i!,"'
, .. ' :.. ,.'; t ;' . )Ita: !rb:lea' Hi 'sehr da" >"atiZ t . . . .. ..
,. -'. C..., :e- g .. 'J.' ,P
d
, "' .p
t
'" .. ,'; 'J']: 1 ..,., "'J "Pd"''''I'] ,,'." tasso di fallimentt locale: numero del falhmentl relatIvo al secondo livello dl cache
cedente. tecruca I g"J"ag jre I, per S. a Goerenza, el a 1 -, ", .., d I' . . all'" -. I' II ( . d )
. II 'a.ch' 'T";: . : :. '. ." .:. ""II" ;" ' -,:' .' . 'Ii" :,' .. .'!;: ":'C'''l: l.' . diviso per il numero totale eg I acCesSI .b stesso lye 0 cornspon e a m2
ne.;f c ,: .. Iv .. -'''' ", i : .. _. -'.
... . t": per il numero
',h: I .. ! .. : " : '. .
" .1 '.; ',. ,;, ''I'':.' , .... .'" ., "; ,".";.. q'Ji. :rl";"::. In :';"' .. ;!.,"j', .. n concetto di gerarchla dl memona lmpijca che la della cache di
7
7 C . ,', "Ii' (;.;:.'., It'I'" II '1. . , . , '. . " ".' ,,', : ' , .--. , i':' ,i'" , I' ". ':', secondo Hvello deve essere pi u. vrande di quella 'della'cache di primo Uvello.
. ac e'illli I'lve 0 "... ' 1' , , , , " ". , .. ,. ". -, I '. .,I:,..,....:'.. . 0"', ..
..... .. . ,. ,.. . . '. . ..'" .;: .. '''' .. , . ,_ ,.... I . , .. ' ..,.., u'" --;- , ,., " ,'., . '-' . Se la differenza di dimensidrie e' niCtOIa. 'it lasso' dffalliirieritt sara. alto: la cache
'., .". '.' .., . ' .", ' . '.,' '. ..' .. , .. , .' ",..... " 1'1"1..'\0;, " ' ". ..' '1
,." '. ,i .', "...., ,i' ,; ... 'I' .:. 'f'" I '.:'. "I .r "." .:: ." ',11,\ . ,." ;:, ". dfsecoiJdo livello deve avere"dimensidni vitihe qu.elle 'ill' :Una: centrale:'Se',
::'::
. .;;",.., 'una cache a un solo hvello della stessa .. ';" .. : ',. ...' ;: I, ., . ,
9
j
:,:' ..' la p:oprietd di dei multipli
1
la una
dt un programma. .. '::: '0 i;, '-.:' r!' ' :;'1.' j'! " ;:',";i fi ., '.''''"i ":' """:':" 'f'll) cache dl secondo II.vello contlene anche tutti I datI presentl nella cache dl pnmo hvello
n bl 1>' . II I d ." ad' d' libert'" d I . I . e'. ", -,' ,". . J' .
, , . ',!-. . poso. 0 Q.1 ,: gr.. .,.'" .f!'lll:' e; CIO f;" , iJ:\ ,'j':,"i ,;, 'I .'f ;' :;.;d ,;, . ';l::.:f i': " " II: .. / I' ",) i,,r,'. , "1:";.;
illtrqq F ... /9:i. '. ,. __

'.1:' ':." ,', . il. ',.:r .. '., ,.
. r
a
p
e
l.I.a:.
7
.;1: } .. secqndo
Chla?i memone.pe.r ca.che e hvello..1 '"j ',_ :,';:",,[Ji; ....'!, .j,:!." .. " J'.'lj.',1. i!!'I"I".' .,'1'" ., :' ,J,',;! . r,;;:,. ,:'!
La dw= .. lr:. f,-;q
zif .. ii'. >alla;cachedis"I'qn\lo ,yengQnq, c",cJ>e di,p,lIl)o,
Ulllcamente sulla dl failunento della "-';":' .,.! ".; .. 9i ..
, d I I d" menla. ' ' . . '. I . . . .
. .. ' e asso 1 mISS au .,.;. \I, .....i.:." 11, .;. ::,'" c..;},::: ;,.
, ..\i;';l'1-...i.1'; ..., 1 _ <
'. :1'.1'::1 . j.:i;'I" !.>lit', "'li !,:., .., i"\"',,! ':. ,,;::"::' .', ",;,':.j' ;:.-,,'1 .... ,. ,,In ',,-.1.' '1:.' ::1
--,.., "
.\ ;.;;',iii,I;I.,/ i,r.' i,!.' !:
.. ,.'.' n .' '.. ,,; r.,.,..' ." '." "'.' ,. . .. ,.,. '''.' .' ... t ..... ,
I .L ....')'.'l;l jJi ,\'';!!;I<I,i 1:.':'.1' '.', ... j:. ." ,:::..,.{,;:
. . Nei sistemi a memoria virtuale si pone un altro problema: il
': I,) .. CaChelI'ispetto..a:lla- Unit;.l?llIi.ita,dictra:duzione.degli iindi-
:. .... ., . .:' " ,r Figiira'7..l0. mostra Ie' due altemative,nel:-pbsizienamento
TabelIa ... deUa,cachei"" 11.'.. .. "d '.';'"';'\>1', "Ird '/,Ii, ,.; '."(-,';.' .. "". 'j """:',L(!:r:.";11 1;'
[ due casi hanno Ie seguenti " ... ',,:' .,.. ;,';,1":',';.' "':,
.. . . _. .. _ _'. . .
, . . , . . ,--,\';;;1, fo-.t-."
" .',,"i.,':i ), 1.',\'" ".,j', '."'l'.; '_: .:.,"W ft,,:.:.,,;,.
. .' . . '-'." . ".;;. ,
",. Ristriviarno-1a 'follmula cite lega, il ternpO' 'medio alla.. . '
deld?ppio Be' i ',si. ;." '., .,:: "
'.. .' .. '.. l' ""h'x t +ht-'x (h "xT+m ':Ii't)'" ,. ...' "(7'6)' ..
",.;, ...:,.".,'.,." ... ",,9:.::-:- li.,yt P'";,,,'II': '"",: ..,:; :'.'\
.".:'- il i1t:::'
.. %:'
secondo,liveUo, .comprer:tde anche il trasferimento,da,questo.ljv;ello
'
Un'altra soluzione, leggermente piu efficiente ma piu costosa, equella della cache
vlrtuale rnulticontesto. In questa caso, a ogni linea di cache e associata una
informazione in piu, attraverso un campo chiarnato process tag. All'atto della
ricerca in cache, l'identificatore del processo in esecuzione viene confrontato con
il tag di processo, Solo se il confronto indica identita lao corrispondente)inea di
cache viene considerata come appartenente al processo in esecuzioIl. In caso
contrario, si ha un miss, Questa soluzione eadottata nei [Hei93].
zione. Questa soluzione e adottata per 1a cache dei microprocessori Intel 486 e
, '
sUCCeSSIVl.
Un modo per ottenere elevate prestazioni consiste nel realiizare sistemi di elabora-
multi'processore, costituiti cioe dall'unione di piu CPU, possibilmente ill costo
contenuto, coll.egate tra lora attraverso una rete di interconnessione.
Anche i sistemi distribuiti sono da considerare, in seDSO lato, come dei sistemi
mUltiprocessore, anche se essi rientrano nella categoria dei sistemi lascamente accop-
Memoria
Cenlrale
Memoria
Cenlrale
lndirizl
MMU
rell!i
CPU
lndirtzi
virtuali
CACHE
Bus dali
CPU
lndirizi Indirizi
virtuali
MMU
reali
CACHE
Bus dati
Capitolo 7
La soluzione comunemente impiegata consiste nell'invaJidare (flush) la cache non
appena c'e un cambiamento di contesto (task switch); questa operazione puo
essere automatica oppure lasciata at sistema operativo; in questa caso il set di
istruzioni della macchina dovra. prevedere una apposita istruzione di invalida-
215Non si trascuri questa aspetto esso incide p08itivamente suI tempo di vita atteso di un
sistema, ossia. lao finestra. temporale entro lao quale il sistema e competitivo.


.&:/., La. memoria cache 311
". - '
']J "i
J .. '.
.- .
'
,
.
l!r)' ."1' 1'1,
',1!Ii!i":",' ,
',.
II.'
' '.

" ..
. """ -
. ..

." . -,_ ..,11:.".
" , '..
.,.,. . \'''-;' ...

'.'''' J.".
",'.,. I)..
. ":",-
.- i

:o'lfi',;., 'i
.. "e"'"
I" "Ii:,.',>, .
I;' ...
.
:,,"" .. ;-
:-...
,
.'::'T'il: ,.,
","_w ,.,,\,.
'"
," "W'
':-:, ':,1,')' : .. i
i':l
,. 'i .' '
,Jt 7.4.9 Multiprogrammazione '.'
','''' I' '
.. " .. , /

Figura 7.10 Posiziona.mento della cache. Nello schema in alto la cache eposta a valle della' yn che suI tasso di:.rrl.iss ela frequenza con. cui un
tra.duzione degli indirizzi e dunque 1a ricerca in cache avviene attraverso gli indirizzi fisicij m eseCUZlOne VIene cambIat? 0, 11 valore del. tempo medlo t:a due.cambl
nello schema in basso la cache eposta a monte deUa traduzione e dunque 1a ricerca viene di processo (Q). L'effetto dl Q suI tasso dl I111SS non efacl1mente valutab1le e. dlpende
effettuata in base agli indirizzi virtuali. ,<}1Wi in particolare.cial. di lavoro e .dalla dimensiQne della cache. Si notare che 1a
dt mISS dl cache a feD:0men? "wcremento
. . . ,... ", ,'''idimensione della cache .se il di total:
presente In non dl fare :lcorso al n:ecca,1llsmo dl tradu dal fatto che per.cache ,dI 11 di attnbUlbile a
Zlone, ill quanto esSD 51 :ende disporubile entro 11 tempo d1 della cache.-., diversi daJla .e elev,:"to, 11 BU,O' .lncremento provacato dal
[HP93}. I microproces50rI Sun SPARG [Sun87] hanna 180 cache Vlrtuale. ,.. di processo m esecuzlOne epiccolo III terffillll relat1Vl. .1'\ ,
. , . . '. ., ," : "., . -Alcuni risultati sperimentali riguardanti la dipendenza delle
Ie b.anno del pro e del contro. Le cache fislche sono PlU \cac?e' dalla stati presentati .in [SG8.3]., Si .tratta dl
semplic.I
1
b.anno COst1 PllI e hanna un favorevole rapporto tramlte sInmlaz!one dalle tracce dl di ?l
InoItre non Cl sO,ao a ne present1 . tlPO au delle sene IBM 360/370. I nsultati sono nportatl lD
D'al.tra parte, e che le cach: .sono gran lunga. Pill 7.11. . . . , ... . .
uno hit eli .una cache consente dl. nsparrmare .' .Per dl Q molto basSI (1?0, 1000) la cache vlene. condiVls.a tra tuttI 1 pro-
?ell. presentano 11 dell a.mblgUlta negli ceSSI attlvl e un Vlene nuovamente ill eseCUZlOne, una elevata
mdirlZZl discusso qUI eli segwtol il coslddetto address ahasmg. . percentuale delle mformazlom precedentl eancora presente nella cache; per Q molto
In un sistema a memoria virtuale, 10 stesso indirizw virtualel puo appartenere elevat"i (100.000, 250.000) un programma, quando viene posta di nuovo in esecuzione,
a una di ?i indirizzi, a processi. Evid:ntemente" t:ova una vuota rispetto al .set d.i lavero, rna iJ periodo .eli :secuzione
n::essano. accertarsl che il ferruto dalla ill . dl un ..,;.?;_ e lungo da permetter.e e da
mdirizzo 10gIcoi appartenga effettlvamente alIa SpazlO deglI llldlIlZZl del processo In ; vantaggio dalla mtera cache; per valorI dt Q mtermedi 51 ha una SltuazlOne III CUi Clas-
esecuzione. . . .. , . . . . .. .' CUll processo viene a dall'intera
. .ovvIare alla determilll una Sl.tuazlOoe .per CUI Vlene generato" .cachel.la quale cont1ene POChI nfenmentl relatlvl a1 processo dt CUI emlzIata la nuova
un che un hit ill rna la lmea '.' esecuzlOne.
ta portata ill cache u-? dlfferente processo che era m eseCUZlOne In
precedenza
,
sene possibili due SOIUZlODl. :<:f;'l! .
", >"l?, 7 5 S' , it' d 11 1
lsteml a mu lprocessore: coerenza e a cae Ie
',., "Miff.v", ,'..
. ' '1"1.,,1',."
L.(I. ,:"".:y,:,1
.' ..
, .u, : .......... '
i!" '., ."
. . :
' ..
',u," ,,",
.
. (:.." ..
"'""["1"""
.. ,
. '.

,'"
. 11";':1;
I,
"
. ", .... ..
",
310
I
I
I
I
\
I
\
I
\
I
I
I
I
,
-
Un'altra soluzione, leggermente piu efficiente ma piu costosa, equella della cache
vlrtuale rnulticontesto. In questa caso, a ogni linea di cache e associata una
informazione in piu, attraverso un campo chiarnato process tag. All'atto della
ricerca in cache, l'identificatore del processo in esecuzione viene confrontato con
il tag di processo, Solo se il confronto indica identita lao corrispondente)inea di
cache viene considerata come appartenente al processo in esecuzioIl. In caso
contrario, si ha un miss, Questa soluzione eadottata nei [Hei93].
zione. Questa soluzione e adottata per 1a cache dei microprocessori Intel 486 e
, '
sUCCeSSIVl.
Un modo per ottenere elevate prestazioni consiste nel realiizare sistemi di elabora-
multi'processore, costituiti cioe dall'unione di piu CPU, possibilmente ill costo
contenuto, coll.egate tra lora attraverso una rete di interconnessione.
Anche i sistemi distribuiti sono da considerare, in seDSO lato, come dei sistemi
mUltiprocessore, anche se essi rientrano nella categoria dei sistemi lascamente accop-
Memoria
Cenlrale
Memoria
Cenlrale
lndirizl
MMU
rell!i
CPU
lndirtzi
virtuali
CACHE
Bus dali
CPU
lndirizi Indirizi
virtuali
MMU
reali
CACHE
Bus dati
Capitolo 7
La soluzione comunemente impiegata consiste nell'invaJidare (flush) la cache non
appena c'e un cambiamento di contesto (task switch); questa operazione puo
essere automatica oppure lasciata at sistema operativo; in questa caso il set di
istruzioni della macchina dovra. prevedere una apposita istruzione di invalida-
215Non si trascuri questa aspetto esso incide p08itivamente suI tempo di vita atteso di un
sistema, ossia. lao finestra. temporale entro lao quale il sistema e competitivo.


.&:/., La. memoria cache 311
". - '
']J "i
J .. '.
.- .
'
,
.
l!r)' ."1' 1'1,
',1!Ii!i":",' ,
',.
II.'
' '.

" ..
. """ -
. ..

." . -,_ ..,11:.".
" , '..
.,.,. . \'''-;' ...

'.'''' J.".
",'.,. I)..
. ":",-
.- i

:o'lfi',;., 'i
.. "e"'"
I" "Ii:,.',>, .
I;' ...
.
:,,"" .. ;-
:-...
,
.'::'T'il: ,.,
","_w ,.,,\,.
'"
," "W'
':-:, ':,1,')' : .. i
i':l
,. 'i .' '
,Jt 7.4.9 Multiprogrammazione '.'
','''' I' '
.. " .. , /

Figura 7.10 Posiziona.mento della cache. Nello schema in alto la cache eposta a valle della' yn che suI tasso di:.rrl.iss ela frequenza con. cui un
tra.duzione degli indirizzi e dunque 1a ricerca in cache avviene attraverso gli indirizzi fisicij m eseCUZlOne VIene cambIat? 0, 11 valore del. tempo medlo t:a due.cambl
nello schema in basso la cache eposta a monte deUa traduzione e dunque 1a ricerca viene di processo (Q). L'effetto dl Q suI tasso dl I111SS non efacl1mente valutab1le e. dlpende
effettuata in base agli indirizzi virtuali. ,<}1Wi in particolare.cial. di lavoro e .dalla dimensiQne della cache. Si notare che 1a
dt mISS dl cache a feD:0men? "wcremento
. . . ,... ", ,'''idimensione della cache .se il di total:
presente In non dl fare :lcorso al n:ecca,1llsmo dl tradu dal fatto che per.cache ,dI 11 di attnbUlbile a
Zlone, ill quanto esSD 51 :ende disporubile entro 11 tempo d1 della cache.-., diversi daJla .e elev,:"to, 11 BU,O' .lncremento provacato dal
[HP93}. I microproces50rI Sun SPARG [Sun87] hanna 180 cache Vlrtuale. ,.. di processo m esecuzlOne epiccolo III terffillll relat1Vl. .1'\ ,
. , . . '. ., ," : "., . -Alcuni risultati sperimentali riguardanti la dipendenza delle
Ie b.anno del pro e del contro. Le cache fislche sono PlU \cac?e' dalla stati presentati .in [SG8.3]., Si .tratta dl
semplic.I
1
b.anno COst1 PllI e hanna un favorevole rapporto tramlte sInmlaz!one dalle tracce dl di ?l
InoItre non Cl sO,ao a ne present1 . tlPO au delle sene IBM 360/370. I nsultati sono nportatl lD
D'al.tra parte, e che le cach: .sono gran lunga. Pill 7.11. . . . , ... . .
uno hit eli .una cache consente dl. nsparrmare .' .Per dl Q molto basSI (1?0, 1000) la cache vlene. condiVls.a tra tuttI 1 pro-
?ell. presentano 11 dell a.mblgUlta negli ceSSI attlvl e un Vlene nuovamente ill eseCUZlOne, una elevata
mdirlZZl discusso qUI eli segwtol il coslddetto address ahasmg. . percentuale delle mformazlom precedentl eancora presente nella cache; per Q molto
In un sistema a memoria virtuale, 10 stesso indirizw virtualel puo appartenere elevat"i (100.000, 250.000) un programma, quando viene posta di nuovo in esecuzione,
a una di ?i indirizzi, a processi. Evid:ntemente" t:ova una vuota rispetto al .set d.i lavero, rna iJ periodo .eli :secuzione
n::essano. accertarsl che il ferruto dalla ill . dl un ..,;.?;_ e lungo da permetter.e e da
mdirizzo 10gIcoi appartenga effettlvamente alIa SpazlO deglI llldlIlZZl del processo In ; vantaggio dalla mtera cache; per valorI dt Q mtermedi 51 ha una SltuazlOne III CUi Clas-
esecuzione. . . .. , . . . . .. .' CUll processo viene a dall'intera
. .ovvIare alla determilll una Sl.tuazlOoe .per CUI Vlene generato" .cachel.la quale cont1ene POChI nfenmentl relatlvl a1 processo dt CUI emlzIata la nuova
un che un hit ill rna la lmea '.' esecuzlOne.
ta portata ill cache u-? dlfferente processo che era m eseCUZlOne In
precedenza
,
sene possibili due SOIUZlODl. :<:f;'l! .
", >"l?, 7 5 S' , it' d 11 1
lsteml a mu lprocessore: coerenza e a cae Ie
',., "Miff.v", ,'..
. ' '1"1.,,1',."
L.(I. ,:"".:y,:,1
.' ..
, .u, : .......... '
i!" '., ."
. . :
' ..
',u," ,,",
.
. (:.." ..
"'""["1"""
.. ,
. '.

,'"
. 11";':1;
I,
"
. ", .... ..
",
310
I
I
I
I
\
I
\
I
\
I
I
I
I
,
-

].

\
J .
I.
) .
1
I
\
\
\
\
1
1
I
1
'I
,
;! .,.
,
.......,
.. , .
,
. .I, ..
I. ,
l. .. ",1
M.
_J c. I
.
t Po I
...
F
"
\ I
'i,,1t ..,,.: ... ,,,'
. , .
1'.:,."','-
':.1 '"
,
e-
" .
,
..
C, . I
I .
lOP .1 P, I .
.. --s=-_... ... _, ..-,
_.
" .
' 7. '.'.
Rite'df"fn)lereonnessi9ne
, '1" ' .... " . '.
. J: \
1 "
..
': .. ,':'."",
.. ,:.,,1' ..
e-
M, M,
. ,
,
e
- ," .
." ,:, .
"
,',," ",
,.
It' ""- . " t_


.' t_'
....
La memo'ria'cache 313
..!l!)'r.,. " ' .
"'--''''',''.,.,. --

I .' ." .
".;" .. " ....
.
, e di pilotare
26
. seguito faremo riferimento a sistemi
.._ inoltre che 1singole abbiano una cache privata, come nello
lt
4
dl Flgura7.12. .
r:;; - , . -

'
,<,t,.-,

0-,_'
,. "i,!!' t" ;
, .. - ....
, ,,\i.-. .
, :'t" c.

..".
"',,'/.'
I .t"
o ....: '1_ ....
" '
:I),\':\' ,'I . " _, .>0
...:
It. 0,0. ,d'li),. :

'" 1', .'1"("
i"'\j("';':drt ,,).,,:
'" t>" "", ;
- "',,",' .
.' ..... ,
P'h"l;,'.,: "
.""illi!;' .,. , .

,!I.,:'.:.hit;;l, '" ','.
... " ""1' -,'
" ', .
."1r,':':6 ,'I;;, '.'1 .... :' :""'I! ".
..r... '

".' '
IV. ,.,.....,

.
-.
I' .

'. I I I I I
.... . .. " .' , .. " " .
t,' " ';.", ,: ""'.'\,1';";' _<'. llGI
'i:t2' .4i' .Sp'($ii,;""i"!,ciii"MJi/i.
.' Pi, P::l, ". P" sonole CPU, dbt;'ate 'Cl3Scutia:' di"una :t>.rdpna Ml', moduli
meD;tre eun process?re di mgresso usclta, esemplo un canale
dl trasfenrE; tJ:'?- la. memona e lestenlO.. ... :.
e; .' I' ., 1 ,
I 1
'1',':.' . ", . "." ' ,.,'.
."",,,,,.'"'' ',.'1' '.",.: :,' ' ... ! .I;.'
. .' 1

1.l1t 't"" "......- .. ,... '. .,.. , .. " ....
. i
),,". , .

-'--- . .,' , ''''-''._''


" ,... I ' :
,. .
, ...,\; .., !. 1 ,.".'.; :.','..: '.. '.
,r.. ... ;
11 ..,. .. , .. .... r . '.- .." -
. ,,":ii". ' . ' I
I. .....- - . __.. .,-... . "- _ ' -'-'._. ,.-----.-... --.----- _ .._.-
se, .. ?P:U. e.m- eli
copla agglOrnata del datl, dal :pr.ocessore che 11 ha
l 'prodot'ti;('Ii fattfo'cntnrdato.puo..trovarsi in piu di
una cache ed e conseguente a tre SltuazlOnt [DS88]:
d;
t '.",,:i;:'::'\' .. .1..'" , .J . ,. ',...
1 d" . d"'" ,. \'. '" \L ..., .. ,.(I ,,'.
a 1 . el i, ".' .' . .. " '"
(J"':\(J \'J' '. ; .. ,.-,,'.:, " . ' "',,' ')': .... .', : -'\1. Hi'PI ...",,:,.;:,,1'-" ,.'1.'
.. , ,., . '. .' . .-
di'f/(j: . :1:".".' :,,>., .::. ,":' '.n."i:';"! .J:,"');:.. , : ''''.;::.
Ill; ,.P. III ,. I, ' ..!",.'! ,. ,; ,,: "'):'.(:.:1 ',j . ,.. ':I,' .:. : ...." .. :,' 1
'. .' ... ' .. .
I:; '!', ':"""',':\.:'."., . ,:; / .';1"""
f ...1 "', ", .
c) mlgIiaZ10n1 dl proE:essl. .... ;/ '.:.': r,' 'I, ',.' '01 ,':" iI;,' ":',,:, '.":"':; ",.,,',':"!." L'
"fjj ,
,.<'
.
Le tre situazioni possono essere analizzate considerando un sistema composto di
soli con loro cache l?c3:li, che la. principale.
Stano P
t
e P2 1 proe-esson e :x: una vanabile contenuta Ln memOrta pnnclpale e nelle
Assumiamo che la iniziale sia coerente, come quella illustrata
m 7.13
1
, 9le a '. . . z,., ,.
":'i ):1' ..;;1:,;;,)., ,,' __ ..... ::. ,". (," .': 1.. ,,,...... 1<.; .:.)(;'.'
\.:. "';; '.; :/ :.;. "'.; ,;,':,,'1' " >lIt .',' ;:"':"j, ,,' "if ... :,::', ,,':, ..... ' . ',' ,'. .'

'Wi:"'l: :' ,'20 sarro" I sisteini" "qiiaii fa "eli;


,'. ' ..
complessa: .1;;\\;',"1 i: .j": ,'::'.dl i;'. :.,.i ,;".:r) :1!",/;:: .\11 ':',Hl'r, :>:,/
I .":

-
w
,
'.,
. ,
"1 ,
" .!
.! 'I
64
" ,
tr-o
" : ., ..
",,
di set,.
,
." "
0 ... 10QOQO
. ',' , " .. " ,
i' " .
Numero
del' tempo 'medio
di proce""o
,!'
" .' '
. -. , , ' . ,
0_ 10000
a - 'Volore
comb;
!. ,,:,..,;
O_JOOO
. ,
,.
,.,' ".;'
/' "'. '.'
'":
', ..
'. ,.. /.

0-250000
, .
,/,0.-'00',.,
Q-l000
.. ' ..
I
; i
"
,
...
'1", ';
"*:. "
0.010
0.005
0.100
'0:050
',:1 :,:\
.

.2
-- , "' 0 "
,
... .'
.,
, I .
... .
,
.',
"
( .:

, .'
312' Ca.pitolo,l7: ." .. ' . " ;
..
,
, j
'. ,'.,

,.'

".. ',.
r

,

.
;, "-':\11
,. ,

..n


. .1!1
..:

"::<J,
"r ..:' ".
'. ,',

, '\-I"",'


"., ,t'
:'.:!}t:
,''":ri/.n
......!:!\
.. 'l'j,'-
'-':':.1'
-' ",.'.", '. ,.
'I""""!.'''"''''''''", , ' I .. ".-,...,'
; , .. ,'.,., ,!,
Oimensione dello cache byte ' .

....,
",,",
.iO'" .:' "\"': 20000"" :' '.1 1;40000,; ,;'," ':;)"60000' I '. , .
Figura' '7''-11' TaSso' di 'nllsS 'interv,alli' di' Q
millisecondi)' tra:cce ri'caVate- da: progranimi' scie'ritifici;' ) f', \.' ',' "": ; j-
. .. .. .;!..:: ... ,." .. :i l . . ;,.. .\i ,..
,
. .,
. " ." , '., .. , .. ' .. , ' .. I.' _ . . ,. ".' ',','" _.. ,;or,;:.
,!,. J .. \."' , "" l" .. _ " . . ..' '."'", {.,.-tt:w
.,,' ..' ,'; . . . .;", ,." .' .,:.! "':', ': ..
piati c,osti.tui.ti da :fisic.a;.mente
rete.e scambio,di messaggi.. i'.,.:,:'" , j' ;,;:" .,,: . : ,"
. .'"l''f@
)n ,si '&i a
..p.epa.
-:- .s.e !l9J:li ad<hnttUI:a medeslIpa p.la:stra - 1Jn
lo,'t:?:
numero e'elevato). In questo caso 1 dilferen'tt processotl accedono alia


dall'altro di delle prestazio'ri! df
,IT
ratiC"am.e te .6bbli t 'ri6:::DeI, rest6.' i delle t"bor ehti', oitiIio
1
:
1?, .,,'i i ';!' .!:.{' , .;f:.r""'?'l()I!!:"H;lit.B";I;iii":
S<iI:, .. ,; Pt;9.2 ,E;.
zJi"t'rale infer .. 'iohi con 'nut" 'helle"divefs cacne"e' u-eUe.contenute.'D:enamEfm'OrHf
:: ,. c, liJl ":"';1. t,;': ';!t';:! ;;:!'i
cen rdo-le. . . .. " .... ,.. , . I I," '\J\ ..',r-"
f ;""., ..... " .:.:: .1:,' :,(\ ... ,''',' i :'i' ,:,j;;;'..-; :H;""J::':"J\'J "1'(", ;.; -'Ii
.' .., .'
Negli anni recenti eernersa l'architettura a rnultiprocessori simrnetrica ('SMP)!'SP
intende una struttura priva di relazioni master/slave, in cui tutti i processori sono a li- ':,
vello paritetico e possono eseguire sia il sistema operativo che i programmi applicativi ..
qRe;sti; i Ali l ':;:,*',;
assieme da componenti specificamente progettatl per rendere il loro runzlOnamento
coere:p.t,e e. ri&petto at nU!Ilero di processod presenti. Questa orga.ruzza:,
zione' der PE!isonal Cotnputer ad' ...
alte ;p' p'OSSbno ttrovati{2.14!#rtcilvolt',ffino.:a: 8 CPtJf" ,-' :.ji In;;;l :l;!,;'.,
,. ,I ,.
it:''':';!:l II i; '.J' ':;;" t'C")"h'ii, .. ';'.; t'.l[ ':!"ijt:;;!',o"l .1rfi;tU.:!:)}
:; t ::)JUna:'-caratteristiea di, questi dli j-ntere6,nnessione ei semplice-
mente '. un' ',bus"sul. ,quale tutti i ir;pmcessori I sono, ooUegati' e che tutti" sono.'in gr-.a;dti. di. . );i
, .i-.lii
"
.If

].

\
J .
I.
) .
1
I
\
\
\
\
1
1
I
1
'I
,
;! .,.
,
.......,
.. , .
,
. .I, ..
I. ,
l. .. ",1
M.
_J c. I
.
t Po I
...
F
"
\ I
'i,,1t ..,,.: ... ,,,'
. , .
1'.:,."','-
':.1 '"
,
e-
" .
,
..
C, . I
I .
lOP .1 P, I .
.. --s=-_... ... _, ..-,
_.
" .
' 7. '.'.
Rite'df"fn)lereonnessi9ne
, '1" ' .... " . '.
. J: \
1 "
..
': .. ,':'."",
.. ,:.,,1' ..
e-
M, M,
. ,
,
e
- ," .
." ,:, .
"
,',," ",
,.
It' ""- . " t_


.' t_'
....
La memo'ria'cache 313
..!l!)'r.,. " ' .
"'--''''',''.,.,. --

I .' ." .
".;" .. " ....
.
, e di pilotare
26
. seguito faremo riferimento a sistemi
.._ inoltre che 1singole abbiano una cache privata, come nello
lt
4
dl Flgura7.12. .
r:;; - , . -

'
,<,t,.-,

0-,_'
,. "i,!!' t" ;
, .. - ....
, ,,\i.-. .
, :'t" c.

..".
"',,'/.'
I .t"
o ....: '1_ ....
" '
:I),\':\' ,'I . " _, .>0
...:
It. 0,0. ,d'li),. :

'" 1', .'1"("
i"'\j("';':drt ,,).,,:
'" t>" "", ;
- "',,",' .
.' ..... ,
P'h"l;,'.,: "
.""illi!;' .,. , .

,!I.,:'.:.hit;;l, '" ','.
... " ""1' -,'
" ', .
."1r,':':6 ,'I;;, '.'1 .... :' :""'I! ".
..r... '

".' '
IV. ,.,.....,

.
-.
I' .

'. I I I I I
.... . .. " .' , .. " " .
t,' " ';.", ,: ""'.'\,1';";' _<'. llGI
'i:t2' .4i' .Sp'($ii,;""i"!,ciii"MJi/i.
.' Pi, P::l, ". P" sonole CPU, dbt;'ate 'Cl3Scutia:' di"una :t>.rdpna Ml', moduli
meD;tre eun process?re di mgresso usclta, esemplo un canale
dl trasfenrE; tJ:'?- la. memona e lestenlO.. ... :.
e; .' I' ., 1 ,
I 1
'1',':.' . ", . "." ' ,.,'.
."",,,,,.'"'' ',.'1' '.",.: :,' ' ... ! .I;.'
. .' 1

1.l1t 't"" "......- .. ,... '. .,.. , .. " ....
. i
),,". , .

-'--- . .,' , ''''-''._''


" ,... I ' :
,. .
, ...,\; .., !. 1 ,.".'.; :.','..: '.. '.
,r.. ... ;
11 ..,. .. , .. .... r . '.- .." -
. ,,":ii". ' . ' I
I. .....- - . __.. .,-... . "- _ ' -'-'._. ,.-----.-... --.----- _ .._.-
se, .. ?P:U. e.m- eli
copla agglOrnata del datl, dal :pr.ocessore che 11 ha
l 'prodot'ti;('Ii fattfo'cntnrdato.puo..trovarsi in piu di
una cache ed e conseguente a tre SltuazlOnt [DS88]:
d;
t '.",,:i;:'::'\' .. .1..'" , .J . ,. ',...
1 d" . d"'" ,. \'. '" \L ..., .. ,.(I ,,'.
a 1 . el i, ".' .' . .. " '"
(J"':\(J \'J' '. ; .. ,.-,,'.:, " . ' "',,' ')': .... .', : -'\1. Hi'PI ...",,:,.;:,,1'-" ,.'1.'
.. , ,., . '. .' . .-
di'f/(j: . :1:".".' :,,>., .::. ,":' '.n."i:';"! .J:,"');:.. , : ''''.;::.
Ill; ,.P. III ,. I, ' ..!",.'! ,. ,; ,,: "'):'.(:.:1 ',j . ,.. ':I,' .:. : ...." .. :,' 1
'. .' ... ' .. .
I:; '!', ':"""',':\.:'."., . ,:; / .';1"""
f ...1 "', ", .
c) mlgIiaZ10n1 dl proE:essl. .... ;/ '.:.': r,' 'I, ',.' '01 ,':" iI;,' ":',,:, '.":"':; ",.,,',':"!." L'
"fjj ,
,.<'
.
Le tre situazioni possono essere analizzate considerando un sistema composto di
soli con loro cache l?c3:li, che la. principale.
Stano P
t
e P2 1 proe-esson e :x: una vanabile contenuta Ln memOrta pnnclpale e nelle
Assumiamo che la iniziale sia coerente, come quella illustrata
m 7.13
1
, 9le a '. . . z,., ,.
":'i ):1' ..;;1:,;;,)., ,,' __ ..... ::. ,". (," .': 1.. ,,,...... 1<.; .:.)(;'.'
\.:. "';; '.; :/ :.;. "'.; ,;,':,,'1' " >lIt .',' ;:"':"j, ,,' "if ... :,::', ,,':, ..... ' . ',' ,'. .'

'Wi:"'l: :' ,'20 sarro" I sisteini" "qiiaii fa "eli;


,'. ' ..
complessa: .1;;\\;',"1 i: .j": ,'::'.dl i;'. :.,.i ,;".:r) :1!",/;:: .\11 ':',Hl'r, :>:,/
I .":

-
w
,
'.,
. ,
"1 ,
" .!
.! 'I
64
" ,
tr-o
" : ., ..
",,
di set,.
,
." "
0 ... 10QOQO
. ',' , " .. " ,
i' " .
Numero
del' tempo 'medio
di proce""o
,!'
" .' '
. -. , , ' . ,
0_ 10000
a - 'Volore
comb;
!. ,,:,..,;
O_JOOO
. ,
,.
,.,' ".;'
/' "'. '.'
'":
', ..
'. ,.. /.

0-250000
, .
,/,0.-'00',.,
Q-l000
.. ' ..
I
; i
"
,
...
'1", ';
"*:. "
0.010
0.005
0.100
'0:050
',:1 :,:\
.

.2
-- , "' 0 "
,
... .'
.,
, I .
... .
,
.',
"
( .:

, .'
312' Ca.pitolo,l7: ." .. ' . " ;
..
,
, j
'. ,'.,

,.'

".. ',.
r

,

.
;, "-':\11
,. ,

..n


. .1!1
..:

"::<J,
"r ..:' ".
'. ,',

, '\-I"",'


"., ,t'
:'.:!}t:
,''":ri/.n
......!:!\
.. 'l'j,'-
'-':':.1'
-' ",.'.", '. ,.
'I""""!.'''"''''''''", , ' I .. ".-,...,'
; , .. ,'.,., ,!,
Oimensione dello cache byte ' .

....,
",,",
.iO'" .:' "\"': 20000"" :' '.1 1;40000,; ,;'," ':;)"60000' I '. , .
Figura' '7''-11' TaSso' di 'nllsS 'interv,alli' di' Q
millisecondi)' tra:cce ri'caVate- da: progranimi' scie'ritifici;' ) f', \.' ',' "": ; j-
. .. .. .;!..:: ... ,." .. :i l . . ;,.. .\i ,..
,
. .,
. " ." , '., .. , .. ' .. , ' .. I.' _ . . ,. ".' ',','" _.. ,;or,;:.
,!,. J .. \."' , "" l" .. _ " . . ..' '."'", {.,.-tt:w
.,,' ..' ,'; . . . .;", ,." .' .,:.! "':', ': ..
piati c,osti.tui.ti da :fisic.a;.mente
rete.e scambio,di messaggi.. i'.,.:,:'" , j' ;,;:" .,,: . : ,"
. .'"l''f@
)n ,si '&i a
..p.epa.
-:- .s.e !l9J:li ad<hnttUI:a medeslIpa p.la:stra - 1Jn
lo,'t:?:
numero e'elevato). In questo caso 1 dilferen'tt processotl accedono alia


dall'altro di delle prestazio'ri! df
,IT
ratiC"am.e te .6bbli t 'ri6:::DeI, rest6.' i delle t"bor ehti', oitiIio
1
:
1?, .,,'i i ';!' .!:.{' , .;f:.r""'?'l()I!!:"H;lit.B";I;iii":
S<iI:, .. ,; Pt;9.2 ,E;.
zJi"t'rale infer .. 'iohi con 'nut" 'helle"divefs cacne"e' u-eUe.contenute.'D:enamEfm'OrHf
:: ,. c, liJl ":"';1. t,;': ';!t';:! ;;:!'i
cen rdo-le. . . .. " .... ,.. , . I I," '\J\ ..',r-"
f ;""., ..... " .:.:: .1:,' :,(\ ... ,''',' i :'i' ,:,j;;;'..-; :H;""J::':"J\'J "1'(", ;.; -'Ii
.' .., .'
Negli anni recenti eernersa l'architettura a rnultiprocessori simrnetrica ('SMP)!'SP
intende una struttura priva di relazioni master/slave, in cui tutti i processori sono a li- ':,
vello paritetico e possono eseguire sia il sistema operativo che i programmi applicativi ..
qRe;sti; i Ali l ':;:,*',;
assieme da componenti specificamente progettatl per rendere il loro runzlOnamento
coere:p.t,e e. ri&petto at nU!Ilero di processod presenti. Questa orga.ruzza:,
zione' der PE!isonal Cotnputer ad' ...
alte ;p' p'OSSbno ttrovati{2.14!#rtcilvolt',ffino.:a: 8 CPtJf" ,-' :.ji In;;;l :l;!,;'.,
,. ,I ,.
it:''':';!:l II i; '.J' ':;;" t'C")"h'ii, .. ';'.; t'.l[ ':!"ijt:;;!',o"l .1rfi;tU.:!:)}
:; t ::)JUna:'-caratteristiea di, questi dli j-ntere6,nnessione ei semplice-
mente '. un' ',bus"sul. ,quale tutti i ir;pmcessori I sono, ooUegati' e che tutti" sono.'in gr-.a;dti. di. . );i
, .i-.lii
"
.If
Figura 7,15 ]ncoerenza dovuta. a operazioni di I/O. Nel caso di scrittura. in memoria cen-
trale da parte di lOP (assegnamento a. x del valore 6) si verifica incoerenza tra i livelli
gerarchici. Nel caso b) - 130 politica di gestione e write-back - Pi ha modificato :z;, e lOP
preleva un date obsoleto,
315
moria
ndivi9fl
La. memoria. cache
P, CPU
A P,
X=18
Cache
X=L4
I I
I

Memoria
Condivisa
P, CPU P,

Cache
X=14
T
lOP
X=14
!d,
Co
b) Leltura da parte di IOP di dato
modificalo da P1 (wrile-back)
moria
ndivisa
P, CPU P,
I
X'="14
Cache
X=14
I
I
I

!d,
lOP
Co
:a) Siluazione iniziale: it processo A b) n processo A e migrato su P2
. su P1 ha modificato X nella cui cache non c'i) X
Figura 7.16 Incoerenza per migrazione dei processi con politica write-back. A siuistra il
processo Ache esegue su PI ha aggiornato 130 cache (ma non e aggioniata 1a memoria
centrale), Successivamente il processo A si sposta su e la variabile x che non si
trova nella cache di questa secondo processore. La. lettura avviene dalla memoria centrale
the pero contiene un valore obsoleto.
'a) Scrittura in memoria centrale
da parle di lOP
A P,
P,
I
T
,

Cache
, ,
I
I
.
I
X-14
Migrazione dei processi Nei sistemi a multiprocessore i processi vengono spesso
atti migrare al di bilanciare it carico di 1avoro del sistema. Dalla migrazione pUG
,nascere incoerenza, come illustrato in Figura 7.16 per il case della scrittura differita
'e in Figura 7.17 per il case della scrittura immediata.
P, P,
X=lB X=14
I I
I
X=14
P, P,
X-14 X-14
I I
I

P, P,

X-14
I I
X-IB
Memoria
Condivi.sa
Operazioni di ingresso/uscita Si produce incoerenza anche quando un dispositi-
vo eli I/O carica un valore nella memoria principal.e, oppure quando preleva dal1a me-
moria principale e 1a politica di scrittura edi tipo write-back e 1a cache ha aggiornato,
rna non capiato un blocce linea, La situazione eschematizzata in Figura7.15
a) Write-through b) Write-back
Figura 7.14 Situazione dopo che PI ha aggiornato. il valore della variabile:z;. Ne1 primo
caso, essendo 1a memoria principale immediatamente aggiornata assieme aHa. cache locale
di PI, l'incoerenza sussiste solamente nello stesso liveUo gerarchico di memoria, cioe tra
Ie cache. Ne1 secondo Carol I'incoerenza sussiste anche tra livelli adiacenti eli memoria, in
quanto 1a memoria principale non contiene la versione aggiornata di tutte Ie variabili.
Condivisione dei dati Suppaniamo ora che) a partire dal1a situazione coerente
di Figura 7.13, PI aggiorni la variabile x assegnando1e il valore 18. A seconda della
modalita di gestione si Ie situazioni incoerenti di Figura 7.14

..
r,....n,
" ..'w""
,,,.
"",. ""
,
1
"
"
.:':.'ry'!,l';
i,'l. ...'II):,
'J

,,'Co"'. ,','
II ..; ..
,

',' ';
..
....
"\ .." ,','
I""""
,
'.',
.' """'1";.',0" ",

. \ ....

"'I' ....' I"
.. :.'
"',' ... .. " II ...
!'. .' 1
.. ';"fJ
, ";\?li,', .:.
,. I,"'" " i,'" .':,'.
, > ",,._ . '"
"'I-j' '...
'yi'.
"'"i'T
",....'. :
Figura 7.13 Situazione inizia.le: ambedue i processori hanna caricato in cache la variabi1e
x e c'e coerenza sia tra liveUi di memoria adiacenti (cache-memoril'lt prindpaIe) sia. Ie due .:'!I\' ,.
cache. . '._h :It,. , ..
, . ,""", "...-',. ' ..
'(-t
J
'

"1'':'01 ,.;", .. '
.. :
.,.,L't' ,

".', )"1"''''",

...
j'.'.' c- ,," l .. r,; ..
, ' . .
,,:.;p: \.r, "',"
\ .'t\.",\<-,; .
,;;,,--"
:r<",'""", ' ..
"!",
:It"
:
'.' '.
,"." ,.. ,."
'.J'" <" ,
," 't! ",'''' .. ,r '"
'. " . 'i"'l';j.,,\:....
'." ..
'.'" 'I" 'I" .. '
.' ... rr \1 ,'"
.. f "ll:"< '
",...' ,..
"',,.,.. ,.
.. ,
:.
, . ."'., .
't" \' - , :\; ",
"
''''''I't''' ..
:;;'1fi .
'l;lli
l"
,
, ..
"(', ,l' t
PI
!.'.. ,;.
Jj:.l.!-,:":Ioi
... .'
'i"""
I ,'"
'.'

."
r ,
, ,. ,", .
, ..... 1
,. , I ,hI" ,.

.

'

, "'1"'"
't
""'"

.... ,
.' .. ,".' .
< -'s""") ,..
;.
.
'rJ"".... '.,
I.. ...
, .
..:y:; ' '
; i:.,
....'. ,

''',
.'
" ",
.. ,
'.3'ft-" . ....., ....
I'. (u
".. .
,'Ito".': '''''('<'- .,
::..
-".' .
,.

,
".J-' ,"
- ,. '
, 1 .,',1".1 .
I
. ....'
. '" ,,' ','. ,

'
.'
", lri?-,.'' ,

"
: J;,,'-'
314 Capitola 7
\
I
J
I
I
\
(
(
I
l
I
I

Figura 7,15 ]ncoerenza dovuta. a operazioni di I/O. Nel caso di scrittura. in memoria cen-
trale da parte di lOP (assegnamento a. x del valore 6) si verifica incoerenza tra i livelli
gerarchici. Nel caso b) - 130 politica di gestione e write-back - Pi ha modificato :z;, e lOP
preleva un date obsoleto,
315
moria
ndivi9fl
La. memoria. cache
P, CPU
A P,
X=18
Cache
X=L4
I I
I

Memoria
Condivisa
P, CPU P,

Cache
X=14
T
lOP
X=14
!d,
Co
b) Leltura da parte di IOP di dato
modificalo da P1 (wrile-back)
moria
ndivisa
P, CPU P,
I
X'="14
Cache
X=14
I
I
I

!d,
lOP
Co
:a) Siluazione iniziale: it processo A b) n processo A e migrato su P2
. su P1 ha modificato X nella cui cache non c'i) X
Figura 7.16 Incoerenza per migrazione dei processi con politica write-back. A siuistra il
processo Ache esegue su PI ha aggiornato 130 cache (ma non e aggioniata 1a memoria
centrale), Successivamente il processo A si sposta su e la variabile x che non si
trova nella cache di questa secondo processore. La. lettura avviene dalla memoria centrale
the pero contiene un valore obsoleto.
'a) Scrittura in memoria centrale
da parle di lOP
A P,
P,
I
T
,

Cache
, ,
I
I
.
I
X-14
Migrazione dei processi Nei sistemi a multiprocessore i processi vengono spesso
atti migrare al di bilanciare it carico di 1avoro del sistema. Dalla migrazione pUG
,nascere incoerenza, come illustrato in Figura 7.16 per il case della scrittura differita
'e in Figura 7.17 per il case della scrittura immediata.
P, P,
X=lB X=14
I I
I
X=14
P, P,
X-14 X-14
I I
I

P, P,

X-14
I I
X-IB
Memoria
Condivi.sa
Operazioni di ingresso/uscita Si produce incoerenza anche quando un dispositi-
vo eli I/O carica un valore nella memoria principal.e, oppure quando preleva dal1a me-
moria principale e 1a politica di scrittura edi tipo write-back e 1a cache ha aggiornato,
rna non capiato un blocce linea, La situazione eschematizzata in Figura7.15
a) Write-through b) Write-back
Figura 7.14 Situazione dopo che PI ha aggiornato. il valore della variabile:z;. Ne1 primo
caso, essendo 1a memoria principale immediatamente aggiornata assieme aHa. cache locale
di PI, l'incoerenza sussiste solamente nello stesso liveUo gerarchico di memoria, cioe tra
Ie cache. Ne1 secondo Carol I'incoerenza sussiste anche tra livelli adiacenti eli memoria, in
quanto 1a memoria principale non contiene la versione aggiornata di tutte Ie variabili.
Condivisione dei dati Suppaniamo ora che) a partire dal1a situazione coerente
di Figura 7.13, PI aggiorni la variabile x assegnando1e il valore 18. A seconda della
modalita di gestione si Ie situazioni incoerenti di Figura 7.14

..
r,....n,
" ..'w""
,,,.
"",. ""
,
1
"
"
.:':.'ry'!,l';
i,'l. ...'II):,
'J

,,'Co"'. ,','
II ..; ..
,

',' ';
..
....
"\ .." ,','
I""""
,
'.',
.' """'1";.',0" ",

. \ ....

"'I' ....' I"
.. :.'
"',' ... .. " II ...
!'. .' 1
.. ';"fJ
, ";\?li,', .:.
,. I,"'" " i,'" .':,'.
, > ",,._ . '"
"'I-j' '...
'yi'.
"'"i'T
",....'. :
Figura 7.13 Situazione inizia.le: ambedue i processori hanna caricato in cache la variabi1e
x e c'e coerenza sia tra liveUi di memoria adiacenti (cache-memoril'lt prindpaIe) sia. Ie due .:'!I\' ,.
cache. . '._h :It,. , ..
, . ,""", "...-',. ' ..
'(-t
J
'

"1'':'01 ,.;", .. '
.. :
.,.,L't' ,

".', )"1"''''",

...
j'.'.' c- ,," l .. r,; ..
, ' . .
,,:.;p: \.r, "',"
\ .'t\.",\<-,; .
,;;,,--"
:r<",'""", ' ..
"!",
:It"
:
'.' '.
,"." ,.. ,."
'.J'" <" ,
," 't! ",'''' .. ,r '"
'. " . 'i"'l';j.,,\:....
'." ..
'.'" 'I" 'I" .. '
.' ... rr \1 ,'"
.. f "ll:"< '
",...' ,..
"',,.,.. ,.
.. ,
:.
, . ."'., .
't" \' - , :\; ",
"
''''''I't''' ..
:;;'1fi .
'l;lli
l"
,
, ..
"(', ,l' t
PI
!.'.. ,;.
Jj:.l.!-,:":Ioi
... .'
'i"""
I ,'"
'.'

."
r ,
, ,. ,", .
, ..... 1
,. , I ,hI" ,.

.

'

, "'1"'"
't
""'"

.... ,
.' .. ,".' .
< -'s""") ,..
;.
.
'rJ"".... '.,
I.. ...
, .
..:y:; ' '
; i:.,
....'. ,

''',
.'
" ",
.. ,
'.3'ft-" . ....., ....
I'. (u
".. .
,'Ito".': '''''('<'- .,
::..
-".' .
,.

,
".J-' ,"
- ,. '
, 1 .,',1".1 .
I
. ....'
. '" ,,' ','. ,

'
.'
", lri?-,.'' ,

"
: J;,,'-'
314 Capitola 7
\
I
J
I
I
\
(
(
I
l
I
I

I
I
1
).
1
I
1
I
I
I
I
I
1
I
1
1

.J ., _.,
Memoria
Condivisa) \
,
,
:'iliA Pa:
CPU
--; .. '... -, ..
'I ,:-;:"'18,
. -.,. ,
'... .... ........,
"-
I
Pi
x=rB 'I., e,cache",,I.. X=14 J. ,." ,
.! .".,' :"1,'.1.'
i.''''. dr.-..:"
,
", ... -.--
.1,. .._ .'.,
._. - .,
I
P,
,
Memoria

,'.' .
.... - -_..
CPU .. ,'j
"
ill r.X
X
-
18
r ,.,
PI''
I ,:: j:a,cb,e... ,'.,
A
r-L,
Capitolo ,7.-" ';" ,:,1
..... u.__ .' ._.'
"".-,:.''; ''': !
a) iniziale: il processo A
r
e,I," ,
. .
;<" .';
-v' - ,1>." .w
,.:
:.:,"
La memoiia:cacb:e".' 31'7'
> ;
!Tl'""",,,,.],, '."
,
..
" _;j,c:,."
i:t"....,,C., .'
.
Iii b' . t
e
.' - U I' . di . ali d .' .
'Prolaco ,asatl su .un c.a awgo' n cata 0go "tlene"tracoa' qu . a;..1" sono In
t; "quali,cache Per ciascuna linea catalogata.sr tienememoda del. suo 'stato:
. m> valiqa;: se e' stata modificata, Q'mrecc.}. :neatal0ga eunicG;'
..... ,;:fnonriaUnenteTealizzato,iri.fotrila dishibuita) rn!modo cheiIlichieste di.informazionL'
siano indirizzaie'amemor,ie diversendum:indo cosl-Lcorifiittr; Intbgni 'caso,
It" I"" - I' ...
"!i", ,1Iinlor-rnazl0oe, re a. rva a.UDa-. mea Vlene' mantenuta' ill 'una so a pOS1Z10ne_ ' : .,1.
Protocolli'dl questa ti:po'son6 USa.fJ prefetibilriiente per slste'irii cori
mero di processori, quando eimpossibile che questi possano condividere un'unico
"...:, .. ers:re .
H:; ," i .; .. " I:. :i,. 'I \ j,
.'- tit .Le 'infor-maz.ioo.i rneces$arie aJ .controllo. della,cacbe SP00. proporzipnali al .. numero'.
," ' . li . II ... 'I' ..
"d1: Dee .nre!3ent1:ne a.I)1emona: pnnC1pa e;.. . . " . .-:\ .' 'Ill "." ...,":''- ..,: .,.:
.... 'i: .T.,. , . Yo .. '.
..
- ...(non a1 bIt d.l necessape f!.l C,a.Clle e
, .
-::. '.Il" ", I ",,! .;:, ",;.' laIle' smgole 0 aJ.la n'remona centrale' vengono' tlpbrtad!1 . r
.. . '.. '." ':':l':I;i:elati,vi 'controllori, .il ..
7-5. 2 Protocolh per 11 mantenlmento della coerenza ':I ;!'cne' 'sui bus'e, se 'sl verific:ano: C?odiiioiii
'* ." [(1".'(' ;effe'ttu'atlO' le aiiop,f richieste :dal protocolIO" (per il 'loto'
. -. . '''l''c'c'''''l j2m,lii.,- "'-'t'''''' : N'"o!.."L,.'il ., d" ,..:,., .... ",.
ImecaIiisrni the cOhBehtbl:10 "dr,manteh-etEda coerenza-?ond chi:aIIlati -..' .'. ,'c;:ontenuto/;'in rno o.,,"J'Ie 'Slstema I memona . .....' ,. ' '. ..
di coeteii2a;:delle ;cathe,':' I.""; :.,> ':!:' ::.:1 ill'.:',';:': t : i ::.; '.',::'! i .: !,; .., i.; i,. ""1: 'j
" " : prilii-i' ptmocdlli
i
sohb" stafi 'rl:lat.izzati!tn "hdrowarei :l"e' .. qi neUe ". .", '.. r<;': ,..' ';. '.
anche verso soluzioni software, ,:, "trlbStrato"cnelit! . .. "....: ....'., ..." ,"" :,' '.: ..... " " ::' .. :.. :.,.: :, ..,.' .",":, ."....., ." ..". :
un prot?collo dalle. caratteristiche del sistema. .. 'l)y-s/ .
1 protocolh hardware Sla quelh software possono presentare prestazlOnl mlghon . . ..
seconda del carico di lavore, per i1: ,m.. .
. .'. II' ft I d .. '.' d I . 'ed', ,vengo.no'pure prodotti dlSpOSltlV1 per II man\ellllIlento (Ielle cadie esterne.
, NellamaggIorpartedelprotocolsoware,e eC1St0n1;nguar0 eazlom lcoe',"ll 't"h" ',,'.,,',," """ l' .. e"' .. dl'o"lli!', .. \ """1'
: . .' , II" . I d"!' .,.,,/ e a'paxe'c eseb'Uecl'occuperemoescuslvath nte prot ct> snoopy:':' " "
s?np basano sul ne 1. .. ""! ' .:.: i i '. 1 '. .' 1<:. . I,.' . !.;.:.,. 1 .; ;.; .: I, ." .. (, . ;'.! .,:, . I>.. ! ". " .:
.J\'
tra processon, nducendo pohtlche: a mvahdazlOne (wnte-mvahdate); e (b) scnttura a
coerenza Fa.use. ; - j . . (wnte-update).
In: geoer81e, 1 protocolli SOftware sono pm semphcl da realizzare e, molt. '" .' ." _I'''' '1'" .- ....".r., ,,' ....:-:'
d
....--_'-_'t e... .. ....L.- .._'-'" h d .. e I-e,-o'\" '_"_.e"'=e" ' . t,",e.*, SCTlttura amvalidazlOoe Quando una CPU senve fdeRa PfopHa e'ilclI'e pnVllta Ie
1essl necessl 1;110 ape e U-l un suppo! ar ware, a comp esst a 1, dJ.e suppo! t: so- I' ., I
. mdlto iiiii\9
re
della logic. richiest. dai pr.otocoUi escl\iSivamente artre cache che, leggendo bus 1mdmzzo del dato In corso di modifica, scoprono

8.u:r;nebtare It "rriod\fi: ' :' :' ":.,:LJ ptiyat?'1 'qte',ne' ,cl1p):a W.tq
care drasticamenteu.:prGtoctIillo;. cosa che mvece e molto ,nel ,protocolh s,tU ,," :;; . '. '. ,::: :"1'
h
ar.-:l :::u: . , . ' . " ", ,"'-i ';,,,,, ..11' .. '" .. !,.J'l( """, . ., j,.! .', .... ,,,, ,hI.' h(,'::.,.!I' ..
" . ... ,,' .. ' .. ' :'1, <";:1' , 0;::' J " " l r.'", '),X . :.". :'" . " '.'W;,l' """ ... ll propagaziope.de,ll,a ,.di
i\pl'otocolh .. :blo'cchi 'come condivisi '0' privati' (iocaUL in theI
.. -::::1' "ftii 'una cache write-through per i dati condivisi (propa azione alle altre cache\ e come
st'azlOhl soprattutto
l
-perslstermcongrande'quant1Ui dl'datl candlvls1, perche trattano .. I <. . ',': _.- --_.' - ' _- _.. ZL . ,:..
1a dinamicamente, riconoscendo in tempo t'e'aIe' Ie tbi!'diiioni"di' violaZ"idne::
J
.,,: c:t
e
: ...,;:. .1 .
, . .,. . .. , 1 C e a pOllta ve .. a 'trio to',pesil-P (:1 ,l,I'ff"uenti'
Nel segUlto CI occuperemo escluSlvamente del protocolh hardware. QUestl pos- . '1 .'. ,:. '" ,,,. " "1:" " , "." ., ')1 ':
sono essere raggruppati secondo due classi: (a) protocolli basati su un catalogo (0 Ii> ,C,Of!
) () II
' d1ffenta e.vantagglOsa proprIO ne!)(}as0 dl.frequentl
directory . e b protoco 1 snoopy. " .\: '. '
1
, . ,\, ,\I. to"
:'-"
.,.,.,;'. ,.
.. ' . . ..
316
I
I
1
).
1
I
1
I
I
I
I
I
1
I
1
1

.J ., _.,
Memoria
Condivisa) \
,
,
:'iliA Pa:
CPU
--; .. '... -, ..
'I ,:-;:"'18,
. -.,. ,
'... .... ........,
"-
I
Pi
x=rB 'I., e,cache",,I.. X=14 J. ,." ,
.! .".,' :"1,'.1.'
i.''''. dr.-..:"
,
", ... -.--
.1,. .._ .'.,
._. - .,
I
P,
,
Memoria

,'.' .
.... - -_..
CPU .. ,'j
"
ill r.X
X
-
18
r ,.,
PI''
I ,:: j:a,cb,e... ,'.,
A
r-L,
Capitolo ,7.-" ';" ,:,1
..... u.__ .' ._.'
"".-,:.''; ''': !
a) iniziale: il processo A
r
e,I," ,
. .
;<" .';
-v' -
,1>." .w
,.:
:.:,"
La memoiia:cacb:e".' 31'7'
> ;
!Tl'""",,,,.],, '."
,
..
" _;j,c:,."
i:t"....,,C., .'
.
Iii b' . t
e
.' - U I' . di . ali d .' .
'Prolaco ,asatl su .un c.a awgo' n cata 0go "tlene"tracoa' qu . a;..1" sono In
t; "quali,cache Per ciascuna linea catalogata.sr tienememoda del. suo 'stato:
. m> valiqa;: se e' stata modificata, Q'mrecc.}. :neatal0ga eunicG;'
..... ,;:fnonriaUnenteTealizzato,iri.fotrila dishibuita) rn!modo cheiIlichieste di.informazionL'
siano indirizzaie'amemor,ie diversendum:indo cosl-Lcorifiittr; Intbgni 'caso,
It" I"" - I' ...
"!i", ,1Iinlor-rnazl0oe, re a. rva a.UDa-. mea Vlene' mantenuta' ill 'una so a pOS1Z10ne_ ' : .,1.
Protocolli'dl questa ti:po'son6 USa.fJ prefetibilriiente per slste'irii cori
mero di processori, quando eimpossibile che questi possano condividere un'unico
"...:, .. ers:re .
H:; ," i .; .. " I:. :i,. 'I \ j,
.'- tit .Le 'infor-maz.ioo.i rneces$arie aJ .controllo. della,cacbe SP00. proporzipnali al .. numero'.
," ' . li . II ... 'I' ..
"d1: Dee .nre!3ent1:ne a.I)1emona: pnnC1pa e;.. . . " . .-:\ .' 'Ill "." ...,":''- ..,: .,.:
.... 'i: .T.,. , . Yo .. '.
..
- ...(non a1 bIt d.l necessape f!.l C,a.Clle e
, .
-::. '.Il" ", I ",,! .;:, ",;.' laIle' smgole 0 aJ.la n'remona centrale' vengono' tlpbrtad!1 . r
.. . '.. '." ':':l':I;i:elati,vi 'controllori, .il ..
7-5. 2 Protocolh per 11 mantenlmento della coerenza ':I ;!'cne' 'sui bus'e, se 'sl verific:ano: C?odiiioiii
'* ." [(1".'(' ;effe'ttu'atlO' le aiiop,f richieste :dal protocolIO" (per il 'loto'
. -. . '''l''c'c'''''l j2m,lii.,- "'-'t'''''' : N'"o!.."L,.'il ., d" ,..:,., .... ",.
ImecaIiisrni the cOhBehtbl:10 "dr,manteh-etEda coerenza-?ond chi:aIIlati -..' .'. ,'c;:ontenuto/;'in rno o.,,"J'Ie 'Slstema I memona . .....' ,. ' '. ..
di coeteii2a;:delle ;cathe,':' I.""; :.,> ':!:' ::.:1 ill'.:',';:': t : i ::.; '.',::'! i .: !,; .., i.; i,. ""1: 'j
" " : prilii-i' ptmocdlli
i
sohb" stafi 'rl:lat.izzati!tn "hdrowarei :l"e' .. qi neUe ". .", '.. r<;': ,..' ';. '.
anche verso soluzioni software, ,:, "trlbStrato"cnelit! . .. "....: ....'., ..." ,"" :,' '.: ..... " " ::' .. :.. :.,.: :, ..,.' .",":, ."....., ." ..". :
un prot?collo dalle. caratteristiche del sistema. .. 'l)y-s/ .
1 protocolh hardware Sla quelh software possono presentare prestazlOnl mlghon . . ..
seconda del carico di lavore, per i1: ,m.. .
. .'. II' ft I d .. '.' d I . 'ed', ,vengo.no'pure prodotti dlSpOSltlV1 per II man\ellllIlento (Ielle cadie esterne.
, NellamaggIorpartedelprotocolsoware,e eC1St0n1;nguar0 eazlom lcoe',"ll 't"h" ',,'.,,',," """ l' .. e"' .. dl'o"lli!', .. \ """1'
: . .' , II" . I d"!' .,.,,/ e a'paxe'c eseb'Uecl'occuperemoescuslvath nte prot ct> snoopy:':' " "
s?np basano sul ne 1. .. ""! ' .:.: i i '. 1 '. .' 1<:. . I,.' . !.;.:.,. 1 .; ;.; .: I, ." .. (, . ;'.! .,:, . I>.. ! ". " .:
.J\'
tra processon, nducendo pohtlche: a mvahdazlOne (wnte-mvahdate); e (b) scnttura a
coerenza Fa.use. ; - j . . (wnte-update).
In: geoer81e, 1 protocolli SOftware sono pm semphcl da realizzare e
,
molt. '" .' ." _I'''' '1'" .- ....".r., ,,' ....:-:'
d
....--_'-_'t e... .. ....L.- .._'-'" h d .. e I-e,-o'\" '_"_.e"'=e" ' . t,",e.*, SCTlttura amvalidazlOoe Quando una CPU senve fdeRa PfopHa e'ilclI'e pnVllta Ie
1essl necessl 1;110 ape e U-l un suppo! ar ware, a comp esst a 1, dJ.e suppo! t: so- I' ., I
. mdlto iiiii\9
re
della logic. richiest. dai pr.otocoUi escl\iSivamente artre cache che, leggendo bus 1mdmzzo del dato In corso di modifica, scoprono

8.u:r;nebtare It "rriod\fi: ' :' :' ":.,:LJ ptiyat?'1 'qte',ne' ,cl1p):a W.tq
care drasticamenteu.:prGtoctIillo;. cosa che mvece e molto ,nel ,protocolh s,tU ,," :;; . '. '. ,::: :"1'
h
ar.-:l :::u: . , . ' . " ", ,"'-i ';,,,,, ..11' .. '" .. !,.J'l( """, . ., j,.! .', .... ,,,, ,hI.' h(,'::.,.!I' ..
" . ... ,,' .. ' .. ' :'1, <";:1' , 0;::' J " " l r.'", '),X . :.". :'" . " '.'W;,l' """ ... ll propagaziope.de,ll,a ,.di
i\pl'otocolh .. :blo'cchi 'come condivisi '0' privati' (iocaUL in theI
.. -::::1' "ftii 'una cache write-through per i dati condivisi (propa azione alle altre cache\ e come
st'azlOhl soprattutto
l
-perslstermcongrande'quant1Ui dl'datl candlvls1, perche trattano .. I <. . ',': _.- --_.' - ' _- _.. ZL . ,:..
1a dinamicamente, riconoscendo in tempo t'e'aIe' Ie tbi!'diiioni"di' violaZ"idne::
J
.,,: c:t
e
: ...,;:. .1 .
, . .,. . .. , 1 C e a pOllta ve .. a 'trio to',pesil-P (:1 ,l,I'ff"uenti'
Nel segUlto CI occuperemo escluSlvamente del protocolh hardware. QUestl pos- . '1 .'. ,:. '" ,,,. " "1:" " , "." ., ')1 ':
sono essere raggruppati secondo due classi: (a) protocolli basati su un catalogo (0 Ii> ,C,Of!
) ()
II
' d1ffenta e.vantagglOsa proprIO ne!)(}as0 dl.frequentl
directory . e b protoco 1 snoopy. " .\: '. '
1
, . ,\, ,\I. to"
:'-"
.,.,.,;'. ,.
.. ' . . ..
316
I
319 La memoria cache
Capitola 7
7.5.3 Protocolli snoopy
318
.. ,

I
'
; ".','
H;i.""
;h .
.
'l.fi' ,.
,
"
I:'/:'l>;l.:
.Si Dati che le presuppongono che quando una cache viene :': . .. .., .. ., .
'. sul bus Ie informazioni relative27 e che tutte Ie cache (e la sequenza lacah, Vlene segnale cli. lUvabd,azlOne per. la. Imea.
, centrale) il bus in modo da pater intraprendere ,scopo ?ell dl limltare 1.1 numero acCesSl a:
1
bus,
Ie partlcolare, per 11 caso dell'invalidazione con gestione delle cache a access
1
superflUl, quelh ebe scntture locah ..Queste
scnttura diffenta
l
il processore ebe tentasse di leggere la variab'lle I'n co d" d"fi ./, possono essere considerate adattive
l
ill quanto cercaJlO dl modificare 11 meccaIllsmo dl
d
. rso 1 rna 1 ca ' d d" d 't' I"""
eve essere mterdetto momentaneamente dalPeseguire la I tt fi ch 1 ach ' coere
nza
a secon a el atl osserva 1 per ottenere e prestazlODi ottlme.
contenente i valori aggiornati non sia stata copiata in e ace"" ," Pren.deremo in considerazione i seguenti protocolli:
',':!':'.' - wnte-through'
\!.Jl:".,. , '
';"i r. lr.l.. '\ b k:
c,. - wn e- ac ,
Efficienza In termini di efficienza un protocollo a invalidazione e' dl" norma superl"o-' - write-once'
, .'''' . "'I""""''' '
reI quanta l'invalidazione sono eliminati i accessi per gli aggiornamenti -MESI.
locali. AI contrano
l
con un protocollo a propagazlOne delle rnodifiche
l
tutte Ie volte
che la cache viene modificata si ha.un al bus,. per propagare la modifica a . ., ...'. " .
Ie ebe ne hanno una capla. Clb e del tutta lllutile se i dati non verranno ',Protocollo snoopy a lovahdazlOne c?n scnttura Immedlata E il Plu semphce
usatl se intermedie. :. prot?collo S.DOOPY coerenza. e ottenuta dalla politica ?i
. . Cepero una CUI I argomenti perdono moddi.che fatte m cache vengono nportate l.lIlmedlatamente m
E il easo vanablli smerolllzzazlOne. A tltolo dl esempio si pub considerare un .. memona .. ' . .
semaforo d.i mutua escluslOne per l'accesso a una comune area dati nsemalo . .,' ,A'li' .. .'. ,In un certo lstante una hnea dl cache pub trovarSI nello stato valido 0 non valida
. . . . ro Vlene . ( d t' d t' . t')
vanabile comune _ chiamiamola mutex _ che n processi su r quan 0 lene a 1.000 agglOrna 1. ,. .
different! processon leggono e modifiean028. Con il meceanismo a invalidazione
,
ogni " " . 1 proeeSS?rl ct:
e
la possono x dalla propna
un 0 esce dalla eritica aggiorna 1a variabile IDutex e. pnvata se linea e Quando Pi. Xl tutti 1 P; conteogono x
qwneli SI ba la trllBIlllSSlOne del comando eli invalidazione alle altre cache (della ffivolidano 10 cornspondente Imea, Nel e..o m cw P; debba succesSl\'ilmente leggere
Co.nseguentemente i processi ?he sugli- altri n -1 processori sono x, memona centrale
l
nportando qUllldi nella propna cache pnvata la
m fase dl devono Quando l'n-esirno relatIva 11Oe3 , ..'
proeessore ncluede 1agglornamento della vanabile di deve eonten--' , . Il passagglo dallo stato non valido allo stato valido 51 ha anche quando un pro-
dere il nel peggiore, con n _ 2 e JU,mero dei transiti suI ': lha la no?, valida non ha m:
ea
effett.ua una
cresce crrca come n . In altre parole la teclllca a IDvahdazlOne presenta un pessimo :,;'*"2" scnttura. 10perazlOne Vlene esegwta sulla memona prmClpale, 13 linea agglOrnata
in pr-esenza di variabili di sincronizzazione poiche fo'rza i processori 3' viene caricata nella relativa cache (write-allocate) e vengono invalidate Ie eventua
chiedere volta la variabile condivisa, con eonseguente 'tendenza saturare it bus... li altre each,e. La del meccanismo, ein Figura 7.18 (la
:"-1 a delle rnod?i
che
ernigliore in questo CasO, h dl partenza.e quella dl 7.13). . '
m 11 valore agglOrnato della variabile, evitando," :l,H:, unpone un ,ca:nco .sul bus
l
special.mente In ?resenza
qwndi gil acCesS1 alla memona centrale. . :;::t.,r ", moltl processon. Se e vero ehe Ie opera.z10111 di scnttura sono relRlvamente rnfrequentl,
./{' .,iJ:L: 'e anche vero che se si hanno piu processori , esse possono portare via una buona
del ei sono alcune complicazioni rela,tive per
.. esemplO 8-1 buffer dl scnttura di CUi sono dotate Ie moderne CPU per veloclzzare Ie
. 'r:(.-r.tr;;" pperazioni di scrittura immediata: 1a presenza di queste memorie di transito pone un
" ''''-', ",'%<,," It' bl d"
. . . . .. . . . u enore pro ema I coerenza.
van protocolli snoopy differenzlatl tra lora dalla politica di scrittura e da '::., ,
quella dr mantenimento della coerenza. ',
. . due politiche permette di le per '. i - sn.oopy a invalidazione con scrittura In
tIPl dl canco eli lavoro ed e per questa che sona statl propostl del protocolh ehe .. ".J;.41,l>!i (Ste88] gb statl del protocollo sono tre: 10 stato non valido (mV) nmane rnalterato
sia Paggiornamento llinvalidazione i,n modo essi iniziano ; .ris,petto. al protocollo precedente mentre queUa valida vierre suddiviso in due stati
senvendo e propagando Ie modifiche, rna quando e osservata 0 prevlsta una lunga " chlamat1 RO e RW: .
,
21 .' , . RO (read only): 130 copia pub essere solamente letta
I controllor! delle cache e del bus hanna un fUDzlonamento coordina.to: poiche la
modlfica della cache camporta 1a. presentazione dell'informazione sui bus, solo una cache alia volta. RW (read write): la copia pub essere anehe scritta oltre che letta
pub effettuare un cido di scrittura, ,
28S
pet
ta alla sottostante base hardware - il repertorio di istruzioni - e aile primitive di ';',::-\, L . 1 1 (RO) d 11 lin
""ftw g".n',"r. I' t '"t' d 11' '" d" 1 I' . e cople a so a ettura e a stessa ea possono essere lette localmente dai
"" _"'........ a omlCl .. e e operazlonl I ettura scnttura. ,,,Yo . . ch I' .,. . .
",." processon e e pOSSledono e sono coerent. con la copla ill memona princlpale.
....,.
....'r.o- .
''';'''1--;''


\
I
I.
(
I
I
\
\
\
I
,
-
-
I
319 La memoria cache
Capitola 7
7.5.3 Protocolli snoopy
318
.. ,

I
'
; ".','
H;i.""
;h .
.
'l.fi' ,.
,
"
I:'/:'l>;l.:
.Si Dati che le presuppongono che quando una cache viene :': . .. .., .. ., .
'. sul bus Ie informazioni relative27 e che tutte Ie cache (e la sequenza lacah, Vlene segnale cli. lUvabd,azlOne per. la. Imea.
, centrale) il bus in modo da pater intraprendere ,scopo ?ell dl limltare 1.1 numero acCesSl a:
1
bus,
Ie partlcolare, per 11 caso dell'invalidazione con gestione delle cache a access
1
superflUl, quelh ebe scntture locah ..Queste
scnttura diffenta
l
il processore ebe tentasse di leggere la variab'lle I'n co d" d"fi ./, possono essere considerate adattive
l
ill quanto cercaJlO dl modificare 11 meccaIllsmo dl
d
. rso 1 rna 1 ca ' d d" d 't' I"""
eve essere mterdetto momentaneamente dalPeseguire la I tt fi ch 1 ach ' coere
nza
a secon a el atl osserva 1 per ottenere e prestazlODi ottlme.
contenente i valori aggiornati non sia stata copiata in e ace"" ," Pren.deremo in considerazione i seguenti protocolli:
',':!':'.' - wnte-through'
\!.Jl:".,. , '
';"i r. lr.l.. '\ b k:
c,. - wn e- ac ,
Efficienza In termini di efficienza un protocollo a invalidazione e' dl" norma superl"o-' - write-once'
, .'''' . "'I""""''' '
reI quanta l'invalidazione sono eliminati i accessi per gli aggiornamenti -MESI.
locali. AI contrano
l
con un protocollo a propagazlOne delle rnodifiche
l
tutte Ie volte
che la cache viene modificata si ha.un al bus,. per propagare la modifica a . ., ...'. " .
Ie ebe ne hanno una capla. Clb e del tutta lllutile se i dati non verranno ',Protocollo snoopy a lovahdazlOne c?n scnttura Immedlata E il Plu semphce
usatl se intermedie. :. prot?collo S.DOOPY coerenza. e ottenuta dalla politica ?i
. . Cepero una CUI I argomenti perdono moddi.che fatte m cache vengono nportate l.lIlmedlatamente m
E il easo vanablli smerolllzzazlOne. A tltolo dl esempio si pub considerare un .. memona .. ' . .
semaforo d.i mutua escluslOne per l'accesso a una comune area dati nsemalo . .,' ,A'li' .. .'. ,In un certo lstante una hnea dl cache pub trovarSI nello stato valido 0 non valida
. . . . ro Vlene . ( d t' d t' . t')
vanabile comune _ chiamiamola mutex _ che n processi su r quan 0 lene a 1.000 agglOrna 1. ,. .
different! processon leggono e modifiean028. Con il meceanismo a invalidazione
,
ogni " " . 1 proeeSS?rl ct:
e
la possono x dalla propna
un 0 esce dalla eritica aggiorna 1a variabile IDutex e. pnvata se linea e Quando Pi. Xl tutti 1 P; conteogono x
qwneli SI ba la trllBIlllSSlOne del comando eli invalidazione alle altre cache (della ffivolidano 10 cornspondente Imea, Nel e..o m cw P; debba succesSl\'ilmente leggere
Co.nseguentemente i processi ?he sugli- altri n -1 processori sono x, memona centrale
l
nportando qUllldi nella propna cache pnvata la
m fase dl devono Quando l'n-esirno relatIva 11Oe3 , ..'
proeessore ncluede 1agglornamento della vanabile di deve eonten--' , . Il passagglo dallo stato non valido allo stato valido 51 ha anche quando un pro-
dere il nel peggiore, con n _ 2 e JU,mero dei transiti suI ': lha la no?, valida non ha m:
ea
effett.ua una
cresce crrca come n . In altre parole la teclllca a IDvahdazlOne presenta un pessimo :,;'*"2" scnttura. 10perazlOne Vlene esegwta sulla memona prmClpale, 13 linea agglOrnata
in pr-esenza di variabili di sincronizzazione poiche fo'rza i processori 3' viene caricata nella relativa cache (write-allocate) e vengono invalidate Ie eventua
chiedere volta la variabile condivisa, con eonseguente 'tendenza saturare it bus... li altre each,e. La del meccanismo, ein Figura 7.18 (la
:"-1 a delle rnod?i
che
ernigliore in questo CasO, h dl partenza.e quella dl 7.13). . '
m 11 valore agglOrnato della variabile, evitando," :l,H:, unpone un ,ca:nco .sul bus
l
special.mente In ?resenza
qwndi gil acCesS1 alla memona centrale. . :;::t.,r ", moltl processon. Se e vero ehe Ie opera.z10111 di scnttura sono relRlvamente rnfrequentl,
./{' .,iJ:L: 'e anche vero che se si hanno piu processori , esse possono portare via una buona
del ei sono alcune complicazioni rela,tive per
.. esemplO 8-1 buffer dl scnttura di CUi sono dotate Ie moderne CPU per veloclzzare Ie
. 'r:(.-r.tr;;" pperazioni di scrittura immediata: 1a presenza di queste memorie di transito pone un
" ''''-', ",'%<,," It' bl d"
. . . . .. . . . u enore pro ema I coerenza.
van protocolli snoopy differenzlatl tra lora dalla politica di scrittura e da '::., ,
quella dr mantenimento della coerenza. ',
. . due politiche permette di le per '. i - sn.oopy a invalidazione con scrittura In
tIPl dl canco eli lavoro ed e per questa che sona statl propostl del protocolh ehe .. ".J;.41,l>!i (Ste88] gb statl del protocollo sono tre: 10 stato non valido (mV) nmane rnalterato
sia Paggiornamento llinvalidazione i,n modo essi iniziano ; .ris,petto. al protocollo precedente mentre queUa valida vierre suddiviso in due stati
senvendo e propagando Ie modifiche, rna quando e osservata 0 prevlsta una lunga " chlamat1 RO e RW: .
,
21 .' , . RO (read only): 130 copia pub essere solamente letta
I controllor! delle cache e del bus hanna un fUDzlonamento coordina.to: poiche la
modlfica della cache camporta 1a. presentazione dell'informazione sui bus, solo una cache alia volta. RW (read write): la copia pub essere anehe scritta oltre che letta
pub effettuare un cido di scrittura, ,
28S
pet
ta alla sottostante base hardware - il repertorio di istruzioni - e aile primitive di ';',::-\, L . 1 1 (RO) d 11 lin
""ftw g".n',"r. I' t '"t' d 11' '" d" 1 I' . e cople a so a ettura e a stessa ea possono essere lette localmente dai
"" _"'........ a omlCl .. e e operazlonl I ettura scnttura. ,,,Yo . . ch I' .,. . .
",." processon e e pOSSledono e sono coerent. con la copla ill memona princlpale.
....,.
....'r.o- .
''';'''1--;''


\
I
I.
(
I
I
\
\
\
I
,
-
-
)
1
1
1
\
I
1
,
I
)
\
I
1
1
\
I
I
I
'.'-:';:".
.. , ,
'
'.j
,
,
; ., .
.. , -.
'.' ...,... ':
.'.)
, '
, . "
, . ,
,

.J _"."
'u
P,
P, P
... ,
,
. . ..
,'
, ..., ..,

, .... I " ..... , " .
\
,he
" [NY
iNV'
, -

..

" \
,
:, I,,,, \
; ,
'. .J
.
,
-
c
Ca'
, .
..
"
'... ..
1:::."
, _... .-


.....'f;;":.
-.;J'l:"...
1olI:1I'1 '
',7;1',':1'
....... ..
'.
1'1,;11.-,.- ..
..
:aih,if/ ' La 321:
...f .....
,_
...:,'

'
, , . 1 . ".,
,. .. "
.."
I.!".ll(i:-.h';y-, ..
.
.','
. .
.'.
.. !i'... .
',. ,. ,.,.
'''",1..: .
' .. ,. 0" ",
,l,,'" '1:1,1;-.,', , '
"c .
..
"1,,1,',., ,"
',' ;',.-<i, ",,
II .. ..
'I
"'" ..
t ......::;., ..

. . '_... .. , ._, .... . '._' . , ',....
i!-:i.i"'1' .' . , .' , .
11I{'i:;>1\,t..'.... !,".'. ' Metnona: .. ,_,.1 .. J.... .. ,:"J
i ,', .._,.. ;d. - C di' ,,, .. ,.\v.".'
, , ,I ' on VlSl1 .,., .,.,'
O-F' .,. '/:;,,' ..' .j.;. , ' .....
.. 1. _... '.'-:-r--' ,. "!t
'F' ,'g'ura a ':invalidaztone- con scrittura differita;J
oa
-condiZroue---di-p8.rtell2a: e
,. '
tin sistema. di,JD,etppria: cneretftt = 14 nelle cache e,.ip... 'cehtt"aJe', con Ie copie
in cache. mostra it risultato :f
da
' parte di
P,'. La lmea nella cach--e-di --Pr 'Passata aIlo stato RW.


, .!r, . . . .
'Ora; ,..1 :. !:. I :'i'.;.pJ lc; :.1
- copia in c.ache.del blocco non e'coerente con quella contenente 1a versione
plU agglornata del datI.
-la memoria
"e non e Ci 'tlOssono '
RES - una.;
,,:, d.a.lIa .. con n;emona
.... tlene 1a (il pnmo agglOrnamento'm et;eallzzato
' can :..'- ..._. . ". .... i...... .... ----..
:.-./'f, 7...' .. ei_". ,. - - _ ...,
'." ! :' ... o' ! I
.' DRT .. st=a.iii mJdi6cata pili di una copia con i
1'9,1
10 quanta l'aggtbmament0g"della, memona <.tvlflemf'S:ola:mente--:m,corrlsp-ondenza
.
plp.cco;.. :. .:', ,.' , : .: '., ..:: .," f: ,'.' . 'll' ".' !. (. '\ l' 1
.. , ..." '(' ,.' ' . . ,,'
:'r.,.!I ',:1",'. ').. ):l" '} ., ",\.il".!"" ". .s ".111 ',: ..
nprotocollo usa,.una;..p.ol-itic.a.,di,gestione peL':U
.mentre i gestiti. politica write-back. (il.blocco
',f,r'lytene scntto m memona nella fase di sostltuzlOne se SI trova nella stato DRT). Rispetto
Ji'R:al case precedente, viene ridott", HIraflitol ,bus,phe, ton,tinui
agglOrnamentl della ti',ldea., e, quella'i:che; ,nnO,( &, 'aggI0tnamento
avere in memoria l'ultirna copia dei dati, mentre q\lando..sono
MGt
'riI6'rnento "ella' sl\!itrt,(iibiig
i
'''lbtc'b'' '&ip''0'the 'sono
.", =;,.. I bO . l--' ..... I-' . , .
.f" . 1, ,I.,'. t'\,,,,.'II\' ..
attl gIl agglOrnamenti localmente. :., -,: '" ": " "".".'.' . 1:\,' '.,'.. .... I. <..
.;t ... '!i'
).t:;Y.-Tl... : t:r ;! tcqn-
a, alIa
A ,U,ifial,e qge,ta
>'4 ::isequenza dl eventr ..... .. . I 'f'
'. 1

. P1leggex(nonpresenteinC1)j .. _ _._ __ _'_
'x ;.' '.' il; ; I .:-,;, .. :, ";;'.. \ .. ",
"""",. , c",:;
",,7:>;';'..:. .",. ".
,.;:'tty" .

,
..
'.'" --.\, ,
, .
.f ',,, ..
:. \',
; , ; .. '
,;\
. ' ;!
,. . '
, , ' , : .1 "
t,
, , '. I . .
"P
" R ,.
' : ,I,'. , ' a. .
,"
,::li.:' 'J '" ./. ).,: " '. '. ,. ;
, 'I- I
' "'. , 1; .. ,".;" , ' ,... .. '.
,
':i" "1
,
,! 1;,,1:.
,
,j; '[;.1.1,: "!.
,
X'"';18, .I:D-val. , :. ,
,'
" .. r .. ".:
'\ .. '
,
'\
,
\
X-18
Capitolo: 7..""
billb'Ja: rdji'ti}) J:j btic"el:':J: 'Fli1 I
'1#' 'qlJa!nto' i:omoir&i' 'v'diWig\;id,W\lr8tofciill"":
irWa'lida-ii'one 'diitf..l..'BJwrite:''Uiroug' 'li'e . oadt [S.GS:3j;':' .\'.1., I,; 'j:"'."':: ..\(: lJ. '.; 'I'):,li;,n "
V "'" ,"" ., ,.. ,.
: " ..... .'..,.. '
Ne1 protocolio write-once gli stati deUa copia nella cache del pr'6cessore'P?dhiha:
genericalinea sono4, ..'i': ":'i".';:; 1.:;11; )}!Jl.,';",'
, ,

I"
29Yale solo la cEle th
'
entre'I'iA'ee di' <ii 0\vJ
c;aso bit),. .fUemoria .:,Lo. memoria
ceiltrale'Den"1l mcu egpholtiO'-etl! II nConosCIU-tti slkYatttavef'SO'II protocolio'dl''Cotrent;a.',4.' I .:,j, .
30n p-dmQrmultiprocessore__adiutili;zare questo Itipoldi ,protocollo 'fu! it:Synapse 'N-filL {""" I
, .. ,..t,'.'-
"A:il 1;1

U', .. ll.: i! .:.,' .... H[I;'I
.. !,,;!l'f.
",".,'. " .. ,i
r;;', ... 11., .. ' . ,,: ' ,. " .. "
. , . '. .. .. , .... ; . I .oj .;;:, .. ,."
'.1' ,);,." . ,,: ,., ." cp.'"
..." 1.'1"'''' '" .; \' t' .. /1. [;
.' ,.p".:
', ... ,
,.. '. . , ,',',
, "
Figura 7.1.8 Protocollo a invalidazione con scrittUX'i\ immediata.. La.
e un sistema. eli memoria coerente con, x = 14 sia neUe cache che in memoria. centrale.
figura mostra i.1 .?ell'aggiornamellto di x da Pl ..La. scritta !lInva!''' sta a.
itioldar'e"crre' e:sta:'ta iD:;;aLldat'cH.FHft..eaitdtifen.ente'i':' '\ ,I.', ,;; I ...':.i f, d ;; ('-t' I'" I' ..i;, '.. ,n tCJ l ..
l' , ", ., , '.. ,,', I .
iJ ",:" i'",: .'." .. ' .: ' .. ;.,.:,
. .. . . " ;: '
,I, .. t,! ...... . ,:1;' ,'I, ,-;1,,\ .;,; ;:.\. '.: :rJ!.u';i1.'- ,I
, ..'
Quando un processore (diciamo PI) scrive nella propria cache, la:,linea:ppsSa
stat'o RW"e ,le, alcl'e' copie vengono invalidat,e;"LQstato-RW,corrispEmde:alla- situaiione
in cui nell'intero sistema esiste un'unica copia'aggi0Eqat'a :del bio.ceQ;
the !ha: effettuato -lao ;sed S'i oJl(j)ti, tal memor!3.0 centrale
incO,enentel e.quindi' se uno ,qua.!unque ,tra! Ehl leggesse ":St)l
verebberoiun !valore E" I necessaria cnet in .preSenza! 'di;'I;lr1 ,tale 'tentativl!rdf'
lettura 1a;cacihe d.i' Pi)' r'tc\boS'cendo' c.be viene' 1etto'un ;dato cli cui: essa 's61a. ha:-Ia- copia. .)6rj
giusta, comandi una transazione di sospensiooe della lettura, copi:la\lirrea ;:.f;!'
I quindj:.iilasci ;Ia. sospensione, della, lettura da
La: rJinea RWi seguito' a..
.. e,-RW, :la' tieL processore',:Pr,passa: nello: ig'1iat(j:
IN"I" quando uri :altto; processote' (Pi}; oontenut6' Idella.>propda Se
Pi sostltuisc'e 'ta"propria:;copi,a;; ;13" Unea' viene prim'a:. copiata. in, lnemoria.! centrale
poi vengono invalidate tutte Ie!iestanthibpie in
l
tache;, :DaUa 'cbnaizi0ne
l
di' linea: i n'On:,
v.alida' si .paBsa inveoi stati iRW 'e -RO" rispettivamente:, :QUfihdo il'"proeessqre Pi ,":"?$.
, I I lin ' " .'" "."",
scrlve' .0; egge! ai' ea:.:::1; .'11. ,... ,- .:" J! ' ". ,I, ., ,', ""}" '.. ; ... j',,,' 'i" ..... 1 ..;"'il"a.l ; :.,)lU;,
".Jl.l iI!Ja sepaItazione delln in -due 'Stati'"distfutifctmsente'di fldurte,Utfaffic6
, .!''\<''
su'llbllS: Ii1fattt' le.eperazioni)fcli scnttuta 'e 'effiittllate;iteHo:
statG;'RW;; "non 'intplicano'.{tin!va;lidaiione,delle:cop'ie';del bt0'dCO' n'eHe altr.e ..
'i!; . meccani'srno"e-i'ri
i
, 19; (la' icb'tidiiiohe: ldf
equella coerente di Figura7 13) '.: \,: ,I'."' .-:: i!, hl '1 ,j',Il .. Hi . ,; ;',ilH
. . '.'"

, ,U':'
320;
)
1
1
1
\
I
1
,
I
)
\
I
1
1
\
I
I
I
'.'-:';:".
.. , ,
'
'.j
,
,
; ., .
.. , -.
'.' ...,... ':
.'.)
, '
, . "
, . ,
,

.J _"."
'u
P,
P, P
... ,
,
. . ..
,'
,
..., ..,

, .... I " ..... , " .
\
,he
" [NY
iNV'
,
-

..

" \
,
:, I,,,,
\
; ,
'. .J
.
,
-
c
Ca'
, .
..
"
'... ..
1:::."
, _... .-


.....'f;;":.
-.;J'l:"...
1olI:1I'1 '
',7;1',':1'
....... ..
'.
1'1,;11.-,.- ..
..
:aih,if/ ' La 321:
...f .....
,_
...:,'

'
, , . 1 . ".,
,. .. "
.."
I.!".ll(i:-.h';y-, ..
.
.','
. .
.'.
.. !i'... .
',. ,. ,.,.
'''",1..: .
' .. ,. 0" ",
,l,,'" '1:1,1;-.,', , '
"c .
..
"1,,1,',., ,"
',' ;',.-<i, ",,
II .. ..
'I
"'" ..
t ......::;., ..

. . '_... .. , ._, .... . '._' . , ',....
i!-:i.i"'1' .' . , .' , .
11I{'i:;>1\,t..'.... !,".'. ' Metnona: .. ,_,.1 .. J.... .. ,:"J
i ,', .._,.. ;d. - C di' ,,, .. ,.\v.".'
, , ,I ' on VlSl1 .,., .,.,'
O-F' .,. '/:;,,' ..' .j.;. , ' .....
.. 1. _... '.'-:-r--' ,. "!t
'F' ,'g'ura a ':invalidaztone- con scrittura differita;J
oa
-condiZroue---di-p8.rtell2a: e
,. '
tin sistema. di,JD,etppria: cneretftt = 14 nelle cache e,.ip... 'cehtt"aJe', con Ie copie
in cache. mostra it risultato :f
da
' parte di
P,'. La lmea nella cach--e-di --Pr 'Passata aIlo stato RW.


, .!r, . . . .
'Ora; ,..1 :. !:. I :'i'.;.pJ lc; :.1
- copia in c.ache.del blocco non e'coerente con quella contenente 1a versione
plU agglornata del datI.
-la memoria
"e non e Ci 'tlOssono '
RES - una.;
,,:, d.a.lIa .. con n;emona
.... tlene 1a (il pnmo agglOrnamento'm et;eallzzato
' can :..'- ..._. . ". .... i...... .... ----..
:.-./'f, 7...' .. ei_". ,. - - _ ...,
'." ! :' ... o' ! I
.' DRT .. st=a.iii mJdi6cata pili di una copia con i
1'9,1
10 quanta l'aggtbmament0g"della, memona <.tvlflemf'S:ola:mente--:m,corrlsp-ondenza
.
plp.cco;.. :. .:', ,.' , : .: '., ..:: .," f: ,'.' . 'll' ".' !. (. '\ l' 1
.. , ..." '(' ,.' ' . . ,,'
:'r.,.!I ',:1",'. ').. ):l" '} ., ",\.il".!"" ". .s ".111 ',: ..
nprotocollo usa,.una;..p.ol-itic.a.,di,gestione peL':U
.mentre i gestiti. politica write-back. (il.blocco
',f,r'lytene scntto m memona nella fase di sostltuzlOne se SI trova nella stato DRT). Rispetto
Ji'R:al case precedente, viene ridott", HIraflitol ,bus,phe, ton,tinui
agglOrnamentl della ti',ldea., e, quella'i:che; ,nnO,( &, 'aggI0tnamento
avere in memoria l'ultirna copia dei dati, mentre q\lando..sono
MGt
'riI6'rnento "ella' sl\!itrt,(iibiig
i
'''lbtc'b'' '&ip''0'the 'sono
.", =;,.. I bO . l--' ..... I-' . , .
.f" . 1, ,I.,'. t'\,,,,.'II\' ..
attl gIl agglOrnamenti localmente. :., -,: '" ": " "".".'.' . 1:\,' '.,'.. .... I. <..
.;t ... '!i'
).t:;Y.-Tl... : t:r ;! tcqn-
a, alIa
A ,U,ifial,e qge,ta
>'4 ::isequenza dl eventr ..... .. . I 'f'
'. 1

. P1leggex(nonpresenteinC1)j .. _ _._ __ _'_
'x ;.' '.' il; ; I .:-,;, .. :, ";;'.. \ .. ",
"""",. , c",:;
",,7:>;';'..:. .",. ".
,.;:'tty" .

,
..
'.'" --.\, ,
, .
.f ',,, ..
:. \',
; , ; .. '
,;\
. ' ;!
,. . '
, , ' , : .1 "
t,
, , '. I . .
"P
" R ,.
' : ,I,'. , ' a. .
,"
,::li.:' 'J
'" ./. ).,: " '. '. ,. ;
, 'I- I
' "'. ,
1; .. ,".;"
, ' ,... .. '.
,
':i" "1
,
,! 1;,,1:.
,
,j; '[;.1.1,: "!.
,
X'"';18,
.I:D-val. , :. ,
,'
" .. r .. ".:
'\ .. '
,
'\
,
\
X-18
Capitolo: 7..""
billb'Ja: rdji'ti}) J:j btic"el:':J: 'Fli1 I
'1#' 'qlJa!nto' i:omoir&i' 'v'diWig\;id,W\lr8tofciill"":
irWa'lida-ii'one 'diitf..l..'BJwrite:''Uiroug' 'li'e . oadt [S.GS:3j;':' .\'.1., I,; 'j:"'."':: ..\(: lJ. '.; 'I'):,li;,n "
V "'" ,"" ., ,.. ,.
: " ..... .'..,.. '
Ne1 protocolio write-once gli stati deUa copia nella cache del pr'6cessore'P?dhiha:
genericalinea sono4, ..'i': ":'i".';:; 1.:;11; )}!Jl.,';",'
, ,

I"
29Yale solo la cEle th
'
entre'I'iA'ee di' <ii 0\vJ
c;aso bit),. .fUemoria .:,Lo. memoria
ceiltrale'Den"1l mcu egpholtiO'-etl! II nConosCIU-tti slkYatttavef'SO'II protocolio'dl''Cotrent;a.',4.' I .:,j, .
30n p-dmQrmultiprocessore__adiutili;zare questo Itipoldi ,protocollo 'fu! it:Synapse 'N-filL {""" I
, .. ,..t,'.'-
"A:il 1;1

U', .. ll.: i! .:.,' .... H[I;'I
.. !,,;!l'f.
",".,'. " .. ,i
r;;', ... 11., .. ' . ,,: ' ,. " .. "
. , . '.
.. .. , ....
; . I .oj .;;:, .. ,."
'.1' ,);,." . ,,: ,., ." cp.'"
..." 1.'1"'''' '" .; \' t' .. /1. [;
.' ,.p".:
', ... ,
,.. '. . , ,',',
, "
Figura 7.1.8 Protocollo a invalidazione con scrittUX'i\ immediata.. La.
e un sistema. eli memoria coerente con, x = 14 sia neUe cache che in memoria. centrale.
figura mostra i.1 .?ell'aggiornamellto di x da Pl ..La. scritta !lInva!''' sta a.
itioldar'e"crre' e:sta:'ta iD:;;aLldat'cH.FHft..eaitdtifen.ente'i':' '\ ,I.', ,;; I ...':.i f, d ;; ('-t' I'" I' ..i;, '.. ,n tCJ l ..
l' , ", ., , '.. ,,', I .
iJ ",:" i'",: .'." .. ' .: ' .. ;.,.:,
. .. . . " ;: '
,I, .. t,! ...... . ,:1;' ,'I, ,-;1,,\ .;,; ;:.\. '.: :rJ!.u';i1.'- ,I
, ..'
Quando un processore (diciamo PI) scrive nella propria cache, la:,linea:ppsSa
stat'o RW"e ,le, alcl'e' copie vengono invalidat,e;"LQstato-RW,corrispEmde:alla- situaiione
in cui nell'intero sistema esiste un'unica copia'aggi0Eqat'a :del bio.ceQ;
the !ha: effettuato -lao ;sed S'i oJl(j)ti, tal memor!3.0 centrale
incO,enentel e.quindi' se uno ,qua.!unque ,tra! Ehl leggesse ":St)l
verebberoiun !valore E" I necessaria cnet in .preSenza! 'di;'I;lr1 ,tale 'tentativl!rdf'
lettura 1a;cacihe d.i' Pi)' r'tc\boS'cendo' c.be viene' 1etto'un ;dato cli cui: essa 's61a. ha:-Ia- copia. .)6rj
giusta, comandi una transazione di sospensiooe della lettura, copi:la\lirrea ;:.f;!'
I quindj:.iilasci ;Ia. sospensione, della, lettura da
La: rJinea RWi seguito' a..
.. e,-RW, :la' tieL processore',:Pr,passa: nello: ig'1iat(j:
IN"I" quando uri :altto; processote' (Pi}; oontenut6' Idella.>propda Se
Pi sostltuisc'e 'ta"propria:;copi,a;; ;13" Unea' viene prim'a:. copiata. in, lnemoria.! centrale
poi vengono invalidate tutte Ie!iestanthibpie in
l
tache;, :DaUa 'cbnaizi0ne
l
di' linea: i n'On:,
v.alida' si .paBsa inveoi stati iRW 'e -RO" rispettivamente:, :QUfihdo il'"proeessqre Pi ,":"?$.
, I I lin ' " .'" "."",
scrlve' .0; egge! ai' ea:.:::1; .'11. ,... ,- .:" J! ' ". ,I, ., ,', ""}" '.. ; ... j',,,' 'i" ..... 1 ..;"'il"a.l ; :.,)lU;,
".Jl.l iI!Ja sepaItazione delln in -due 'Stati'"distfutifctmsente'di fldurte,Utfaffic6
, .!''\<''
su'llbllS: Ii1fattt' le.eperazioni)fcli scnttuta 'e 'effiittllate;iteHo:
statG;'RW;; "non 'intplicano'.{tin!va;lidaiione,delle:cop'ie';del bt0'dCO' n'eHe altr.e ..
'i!; . meccani'srno"e-i'ri
i
, 19; (la' icb'tidiiiohe: ldf
equella coerente di Figura7 13) '.: \,: ,I'."' .-:: i!, hl '1 ,j',Il .. Hi . ,; ;',ilH
. . '.'"

, ,U':'
320;
Ri (miss)
Ri
Ri
Wi
Inv
..... ------
/ '
Ri
Wi
............ Ri ......
'- /
I
In\l- ...... ...... ......
nv / '- /
X
/ '-
// '-
/ '-
...... R' ......
) '-
Wi (miss
. "
P, p. p.
I I I
lche
X-20 X-IO X-3O
'AL
""
AL
.
X=-30
Wemoria
Condhisll
P,
P. P.
I
I
L
lche
X=20
X"'10
...
X..,20
Wemoria.
Condivi311
c
c
c
c
2) Pi modifieo X per 10. Tollo.
Capitolo 7
ndiagramma degli stati eriportato in figura 7.21-
La coerenza viene mantenuta con due gruppi di comandi
GIi archi a tratto continuo rappresentano i comandi lanciati dal processore locale
Pi in riferimento alIa generica linea di cache. e Wi indicano rispettivamente
un'operazione di lettura 0 di scrittura di Pii
1) PI leue X (Rea.d Wiss)
P,
P. P.
I I
I
Il.che
X-30 X-l0
...
X_20
Jlemorio.
Condivisa
P, p.
P.
I
I
I

X*lO X=-10
'AL

X-1O
Wemoria
CondivUll
1) P, legge x;
La Figura 7.20 illustra il contenuto delle cache che segue agli eventi.
CP
... , -
.. ,.
" ..
..

";0';';"
,1."._,.
"", <,'
I" ."-
'"'.
,Ir.jl
"l""h" ,',
'"
..."
_..
:.',: .
-r'
,: '


i Ji1"""l:!' .
0 ,
.. '..
:;,/
"
" ...
,1,,<;,.: -
i;<.\, tijf:::"
. ":- .ll,.,- ,
::e
I
".'.,"'
"
i'r,,!;;'t"":
I
'it'''' 'e ",..
'" - .',
lrt"::,. ',' '.
;.y
'
..
,
., .... -" 'J
.'
;t-ll..-?1tv', " '
':

Wi
7.21 Diagramma degli stati del protocollo snoopy Wl'ite-once. L'arco marcato Rt 0
'Wi proveniente dall'esterno indica I'assenza della linea in cache e quindi i1 suo caricamento
'WiW
t
;,)., dalla. memoria 0 dana cache di un pr.ocessore remoto. linea
puC> avveDlre da un qualunque stata, carrlSpondentemente 51 deve ntenere che Cl Sla
un ax,co su , II diagramma mostra I,e bus! a la
genenca wdicazlOne dl mvahdazlOne. Per esemplO, nel caso lD cw una linea 51 trovl nella
'..!,.? DRT e si abbia un miss in scrittura che porta a sostituire la linea il
:,mostra solo Parco che dall'esterno porta. alia stato DRTi non mostra l'azlOne dl Copl<l.tura
della linea stessa e l'eventuale invalidazione deUa linea. prima del caricamento della. uuova.
questa proposito si veda l'Esercizio 7.19.
. ","
.... , . "
,f,.:, '", "
3) Pl lIIcrin nuoTamenle X. ('Wrile Hil) 4) P3 1egge X (Read Wise)

Figura 1.20 Protocollo write-once. Evoluzione del contenuto e deUo stato delle cache a . ... ..
di una di ,La condizione di eche x sia nella. cache di P2 e In se.gulto alla o. dI un bloeeo da parte del processore
che il suo stato Sla valido (e qumdi coerente con Ia memona centrale). (Pl) possono venfiCarSI 1seguentl eventl.
...' ':,< '" , .
. :j>t'''.--. Questo evento si ha quando Pi legge una linea che non si trova nella
" ca<:he, 0 che si trova nello stato INV: il bus, .i vari P
j
0
. dIverso da 1) vengono a eonoscenza del.l'operazlOne In corso. Se non CI sono cople
DRT nelle cache dei vari P
j
aHora la memoria principale ha una copia coerente
'.' del bloceo. In caso contrario il processore P
j
che contiene la copia DRT as5erisce
. un che la di Pi e la A
. l ..i';it!."} .'. . agglOrnata II segnale eli ImblZlone entu3to e Pi legge II dato aggIornato. In ogru
" ...". . . .. caso 10 state risultante della linea e VAL.
Le lmee I coma,ndl, daJ 'processon Pj da . .. ..,
Pi e 05servatl da quest'ultun0
31
Rj e W
j
llld1cano nspettlvamente Pi agglOrna una lmea che 51 trova nella sua cache Se 1a copla e
di lettura 0 di scrittura da parte di un Pj; Inv
32
eil comando di irtvalidazione nello state DRT 0 RES l'operazione viene eseguita localmente e 10 stato ri5ultante
(della linea) trasmesso da un Pj' . :. .. eDRT, Se 10 stat? e VAL allora inviato il segnale di invalidazione
aIle altre cache e V1ene agglornata la memOrIa centrale,. che resta coerente rispetto
. . '. .. . ., " ," a questa cache; 10 stato risultante eRES.
di 31 0vv:amente e5S1 mtesl come nfentl alla stessa hnea. dl cache e nlevatl attrayerso II meccailismo _., . .. .
. .' . .. . Wnte-Mlss p. agg10rna una lmea che 51 non trova nella propna cache 0 the enello
L'esposlzlOne e semph6cata. nspetto a (SG83]. dove sono previstl un e un ... - t t !NV' L I' . I t dall 'taI ( I . ..
invalidate. ' '\:," '. sao . a mea Vlene pre eva a a memona cen r e se e In ormazlODl
, ..:,..
.
, !c:
c
c
322
\
I
\
I
-
-
\
(
\
I
-, \
"
I
I
I
1
Ri (miss)
Ri
Ri
Wi
Inv
..... ------
/ '
Ri
Wi
............ Ri ......
'- /
I
In\l- ...... ...... ......
nv / '- /
X
/ '-
// '-
/ '-
...... R' ......
) '-
Wi (miss
. "
P, p. p.
I I I
lche
X-20 X-IO X-3O
'AL
""
AL
.
X=-30
Wemoria
Condhisll
P,
P. P.
I
I
L
lche
X=20
X"'10
...
X..,20
Wemoria.
Condivi311
c
c
c
c
2) Pi modifieo X per 10. Tollo.
Capitolo 7
ndiagramma degli stati eriportato in figura 7.21-
La coerenza viene mantenuta con due gruppi di comandi
GIi archi a tratto continuo rappresentano i comandi lanciati dal processore locale
Pi in riferimento alIa generica linea di cache. e Wi indicano rispettivamente
un'operazione di lettura 0 di scrittura di Pii
1) PI leue X (Rea.d Wiss)
P,
P. P.
I I
I
Il.che
X-30 X-l0
...
X_20
Jlemorio.
Condivisa
P, p.
P.
I
I
I

X*lO X=-10
'AL

X-1O
Wemoria
CondivUll
1) P, legge x;
La Figura 7.20 illustra il contenuto delle cache che segue agli eventi.
CP
... , -
.. ,.
" ..
..

";0';';"
,1."._,.
"", <,'
I" ."-
'"'.
,Ir.jl
"l""h" ,',
'"
..."
_..
:.',: .
-r'
,: '


i Ji1"""l:!' .
0 ,
.. '..
:;,/
"
" ...
,1,,<;,.: -
i;<.\, tijf:::"
. ":- .ll,.,- ,
::e
I
".'.,"'
"
i'r,,!;;'t"":
I
'it'''' 'e ",..
'" - .',
lrt"::,. ',' '.
;.y
'
..
,
., .... -" 'J
.'
;t-ll..-?1tv', " '
':

Wi
7.21 Diagramma degli stati del protocollo snoopy Wl'ite-once. L'arco marcato Rt 0
'Wi proveniente dall'esterno indica I'assenza della linea in cache e quindi i1 suo caricamento
'WiW
t
;,)., dalla. memoria 0 dana cache di un pr.ocessore remoto. linea
puC> avveDlre da un qualunque stata, carrlSpondentemente 51 deve ntenere che Cl Sla
un ax,co su , II diagramma mostra I,e bus! a la
genenca wdicazlOne dl mvahdazlOne. Per esemplO, nel caso lD cw una linea 51 trovl nella
'..!,.? DRT e si abbia un miss in scrittura che porta a sostituire la linea il
:,mostra solo Parco che dall'esterno porta. alia stato DRTi non mostra l'azlOne dl Copl<l.tura
della linea stessa e l'eventuale invalidazione deUa linea. prima del caricamento della. uuova.
questa proposito si veda l'Esercizio 7.19.
. ","
.... , . "
,f,.:, '", "
3) Pl lIIcrin nuoTamenle X. ('Wrile Hil) 4) P3 1egge X (Read Wise)

Figura 1.20 Protocollo write-once. Evoluzione del contenuto e deUo stato delle cache a . ... ..
di una di ,La condizione di eche x sia nella. cache di P2 e In se.gulto alla o. dI un bloeeo da parte del processore
che il suo stato Sla valido (e qumdi coerente con Ia memona centrale). (Pl) possono venfiCarSI 1seguentl eventl.
...' ':,< '" , .
. :j>t'''.--. Questo evento si ha quando Pi legge una linea che non si trova nella
" ca<:he, 0 che si trova nello stato INV: il bus, .i vari P
j
0
. dIverso da 1) vengono a eonoscenza del.l'operazlOne In corso. Se non CI sono cople
DRT nelle cache dei vari P
j
aHora la memoria principale ha una copia coerente
'.' del bloceo. In caso contrario il processore P
j
che contiene la copia DRT as5erisce
. un che la di Pi e la A
. l ..i';it!."} .'. . agglOrnata II segnale eli ImblZlone entu3to e Pi legge II dato aggIornato. In ogru
" ...". . . .. caso 10 state risultante della linea e VAL.
Le lmee I coma,ndl, daJ 'processon Pj da . .. ..,
Pi e 05servatl da quest'ultun0
31
Rj e W
j
llld1cano nspettlvamente Pi agglOrna una lmea che 51 trova nella sua cache Se 1a copla e
di lettura 0 di scrittura da parte di un Pj; Inv
32
eil comando di irtvalidazione nello state DRT 0 RES l'operazione viene eseguita localmente e 10 stato ri5ultante
(della linea) trasmesso da un Pj' . :. .. eDRT, Se 10 stat? e VAL allora inviato il segnale di invalidazione
aIle altre cache e V1ene agglornata la memOrIa centrale,. che resta coerente rispetto
. . '. .. . ., " ," a questa cache; 10 stato risultante eRES.
di 31 0vv:amente e5S1 mtesl come nfentl alla stessa hnea. dl cache e nlevatl attrayerso II meccailismo _., . .. .
. .' . .. . Wnte-Mlss p. agg10rna una lmea che 51 non trova nella propna cache 0 the enello
L'esposlzlOne e semph6cata. nspetto a (SG83]. dove sono previstl un e un ... - t t !NV' L I' . I t dall 'taI ( I . ..
invalidate. ' '\:," '. sao . a mea Vlene pre eva a a memona cen r e se e In ormazlODl
, ..:,..
.
, !c:
c
c
322
\
I
\
I
-
-
\
(
\
I
-, \
"
I
I
I
1
",. "
'.
.; " .

-..
<, ,
, ":',
" I .'" '
,,"..
32li Ca'pitolo It!:;",,,, <:\1' La memoria cadt6\
,;;;; .
. i, I">;,' ,"- .
':' ,.
'!iI!j,I:.I' ." .
",,,-' '1-'-""'"
. !'t, "r..,' ';
.-. .. r,r
in essa contenute sono coerenti), oppure dalla cache remota che la contiene in iMI\,', modificato M. In luogodellastato:RES .c'e 10 stata Ej eS8o:tndica semplicemente eb:e
stato Trasferita la linea nella propria cache, Pi asserisce il comando .Ja.;copia:corrispondente,e coeremte:con,la,memoria!e che -si:trova esclusivamente' nella
di Inv gli .a1tri e quindi procede ad ca.eheconsjderata.: .,-, . .... ..", h. . " '.', .,:: ,.;
locailllente II Lo nsultante e quello DRT. , " pro16t,oU;' !>;lESI e i'erh\?tlvi
Read-Hlt Pi legge localmente un blocco che contlene mformaz,om agglOrnate (quindic,i!' h'\" tl dla.gramll)adl ,(,22 e del 0ESI ,P,dwerPQ
si pub trovare nellostato DRT VAL a RES). Questa operazione non comporta . 601. n protocollo m modaltta. wnte-back. .. .
,. J .'}.'4 .. ;.. :.11::', '.: "., .. . ':' .':, ... l ,J" :". '.;;'.;i! ti I" ::'
una tr.anSlZlone di stato. compre.ncle're iLdiagramma'di Figura1.22j bisogna.telier,.:ptesente die:iil pre-
SWAP' (sostituzione) Se,la copia della linea sottoposta a sostituzione si trova laovecchia viena inva:lidata,e in se nelle. st.ato
stato DRT viene aggiornata la memoria principale, Se 10 stato invece eVAL, INV.' ;::.. ,M:.- Dld:onsegllenza.tuttOlavv11:me come se la nuo.v.a.Unea partlSse cOffiunque daUo stato
I .. :: .. :r "" I" ' . " . .'
o RES non enecessariQ aggiornare 1a memoria. ".. --,'";,, ..', ',', ,.\. ,! ,,,.... '.' ' .':"'.' .. : " .' ..... ":' ." ,':: i;\j:, ",:.
. ,-.,v "IJ'li'
." . '.' . .. "". "":"" i' ".,', ,.,:;, '1' ,.',; '" :' ,:'1\:' .", . ,.,.'.':
Protocollo MESI MESI e ::,.":' ,.". '; I "';, " '" ,,' :i:l' ,;:":::.' : ...
gamente usato nelle mode-me CPU, In particolare essa...viene. usatp . farniglia. ",) T,'!<r" , ... 1i'- " . SI'lR. ! j . 6!h.. L. 11-)(1' " ,.-":.j l.!
P t
' P t' P d' I t I II f '1' P P d' MI'" ! ...... . RI'l_S' - 1'1:"00 I'>is5', ShOf"e<r
en mID e en lum- ro I n e ,.come pu!e armg ower l a. ., :.1::1 ... '::' '. :',; ,.'".: "I Rt:o.d.miss,; Exdu5lve'''; ',.,..
n protocollo MES! prevede 1 segtleDtl 4 statl (due bIt) per la linea dl . r .:,; ' .' ." ." , . ' .;, . . S .' I. r ::: "1:
I
.
t
," .: " .: ,1.. ,
'I :. "'r' , .. I' " . , .. ' .', . , 'I /.''''' ""'1 :':1' , \.In - IJrlte'Mlss
. . .., ".'" 'j,. " ., ' '. '. ,." ." ',' .... I,;,'" . _ ' t ,n',... ":" ,... .. :.... . _. 1 .. (.I: .. ,)1:,: " ". " .: I' :ShR:=. :Snoop hit, 1)0-0. :Sledd . ,-
non Ie cne'ridh11e'coereIrte' RI'lE ,\ '. ., , ,.qn flo .. :
,'ill .. " 'n" . al ," ""d tt'I "'t' 'L; .,1, d'" l'\Jlll'", .
: "memOrIa 'l,fmClp e,' essen 0 's a a tlscn ta; 'la 'cepId c6tnsporr ent-e nt'U1l:;::mOr:la ;\"W . '1 ,.', ;.; .'; ' ..... 'q ,'. .. ", ,I, .
,<,. .' . ,I., , " ..... .' '.' . .:'::';'::., ........ "f : .. : ;,' "'.'
.. 'la'toa'I .. : ".,>I
f
'f t..,J,I, .. ,,',,'i1l."'l'-"A.. hlJ hI,,!' CD-'C'h'U 'fHl
1
\ ., .,
I, ? " t .. 'm-i ft, " 'j I " : ',:". : " " \" . 'CD- :s .. e:r' ,:; , ;: I":,:
,.1/1'; .. qe,. , I : ..Id .,r "" .. ,:' i; '!' \..:. ., ' ...-: . . '.; ' .1. ,'.: l', ;. ,
, . .<11 ... ',. . : ;,. . .." '. .,.. , . . - [nvolldote tf"Cln o..ctrO!1
..! .. l.. ,.. "l, i,' ... ...... ,.. ,"';(i. .... ,. ,'.,." , ..\.I.h .', '\"E' .. ", .,.0., .. :" .. ,..., .
. , ;'.... i"", (''''''..,... IV,. .' . """":"$';' ..... ' 'C"" .. ,,,:',",.;'"
'." .. 1' . " '.1, ':"'" .,,,.' " ", .. ,.",.. ", , . ' ' .'. .R}); , =Reo..d-wl-th-{n,;:e1:-.to-.l"Iodlj:'
'k' Ie' cache . "; f" J,. d" 1 :',;:;' ll' '.: j .' '1J:, j :'.... , , ,.;.;:,'. ; '::: ':<1 .: i",; ; .:: l', . :', '::.-; i; i, I;, 1-,' f ;' .r
cioe non e modificata. Una lettura lascia la linea nello stato; ..', \. :Ii';i ,';' .;.: ,1"',I:l ..' ": ",: ... ;, :,: .:." .:, ".' ',' ... "; !.' 't : .' ":'; . '.' ." :'1.', {,.
eventuale scnttura la porta nello stato M, senza generare acceSSl alIa ..... " 1 . I. " .J , ,l .., ... :., " I,:H
centrale. 7.22 Dlagramma di stato nel MESI: n np.orta Ie, tra.nsazlOnl
, che 51 svolgono sui bus. In presenza dl mISS, 13, vec(;lu3 lmea .vle,ne anzltutt;o mvalidata. e
.1 S:' Ia pre'senl}e ancHe
i
In';alt'rs 'ca2h'e'"ed Eh:ber'ent'e:'c6n 'ia. s'e istato 'M; copiata. 'ih..riteih'oria:. Si -n'Oti' t&':Scrrt'tui"a.
Una linea in stato S viene letta da:l
l
su6' .
II .. . L 'tt . . l I' , t t M. bbl' '1 mdltlzza ,Ia. medeslma: linea', In lettura: 0' scnttura (eventl ShR eShW): .
;M..,! .. ....", ,).! :'1' .. :. " 'I ", .. I.:, ::; .!. =" ,'":, ,,' ,.,' ,l!i -:,.,.1" -': ;./ ,:":"':;
:' . .:. ':;'. ",j .. :"" .,', .:: . ,.;.:' '.' .... ,.;.,., .. , 1'.:<' .... ',1:' .. : ,-,.:
. " . , . I . . "'.. fI[.l:v.:lv .
.rndiCa. 'cbe' )l
a
. 'fVillcfa;. ui{fuiss'che ,;!. d, .. .: ; ., ":. d '.;:;' ..: ,'. ' : 1;' .. 1: .; ,," ,::' ..:; '. , . , .. 1 L .1:' ... ') . :,,; /
. Yi 'Si-notirto i eventi re!'atrvi 'airattiVii-a 'hit '&,0.4)
's; se I" (!}f!iU la ,':f.: e ShW (Snoop h,t on a WNte ovvero Snoop Read-w,th"nftn't'focmodifil)! 'fu quest.
.JI lmea 51 porta: 'lh statl),I.'E:' L::i's;cntttira' 'S.U' lin blpcc;'C)1 p,orta' mvece"nello "it 11. termme hIt 51 al nconOSClmento d1 un'operazione fatta 0
:,1',;', st1.to M: l' ,: :.;' il I ..:'/-; , .\ ",.":.' ':;; -; ,.;,:, .,..\;,: ,!i; ,!. i i; ,:.':e .. da: .-caehf '&, cui. 'c!:e 'c6pfa
'
tdrlsiderata:ilfilal6i
! r. I .'. :' ,,' , . : 1,::, III !",: ,.,": :,', '.; \.,,0.,; , .. 'parolei ShR! tih
.\ I')}' e. ,1,J,9 cia un1altra cache alia copia della linea (non indica cle hit sulla cache che effettivamente
ten.ta 1a lettura). Allo stesso ShW indica che la cache eonsidetata:oSserva una
scnttura s,:lla che e.at Interno: In scrittura
.n!rll,?ptat.O :>.-.;jfi;' nRoendha It amfesta come lettura con mtenzi'one di modmcare (Snoop
, I . ... . ,:.j,;!' -Il,;:i"r.., .. a -un -m en - o-rno IJ!I
. \:J,:.'( ,':!"> ,I! ;1(I' .. i'.1 J_ ..:, .. ,. . ,'" ,.. - .. , ._ ,_ _
... .i.? P'?SSibiljU., ,"
51 'deve la;'-ic3:che- Ip.: ..
trasferlsca;,ln' memor:ta: la,llnea,m ogg-etto'/ dt\ dove Pf,Ja.Jpuo"prelevate: '!'" .-. S 0 E). L evento Rm...E (Read mlss
J
ExclUSIVe corrisponcle 31 un.miss, di' lettur.a
,-"" . ....
1
J
\
I
t
I
\
1'
I
1
\
)
\
I
) ,
1
\
,
1
",. "
'.
.; " .

-..
<, ,
, ":',
" I .'" '
,,"..
32li Ca'pitolo It!:;",,,, <:\1' La memoria cadt6\
,;;;; .
. i, I">;,' ,"- .
':' ,.
'!iI!j,I:.I' ." .
",,,-' '1-'-""'"
. !'t, "r..,' ';
.-. .. r,r
in essa contenute sono coerenti), oppure dalla cache remota che la contiene in iMI\,', modificato M. In luogodellastato:RES .c'e 10 stata Ej eS8o:tndica semplicemente eb:e
stato Trasferita la linea nella propria cache, Pi asserisce il comando .Ja.;copia:corrispondente,e coeremte:con,la,memoria!e che -si:trova esclusivamente' nella
di Inv gli .a1tri e quindi procede ad ca.eheconsjderata.: .,-, . .... ..", h. . " '.', .,:: ,.;
locailllente II Lo nsultante e quello DRT. , " pro16t,oU;' !>;lESI e i'erh\?tlvi
Read-Hlt Pi legge localmente un blocco che contlene mformaz,om agglOrnate (quindic,i!' h'\" tl dla.gramll)adl ,(,22 e del 0ESI ,P,dwerPQ
si pub trovare nellostato DRT VAL a RES). Questa operazione non comporta . 601. n protocollo m modaltta. wnte-back. .. .
,. J .'}.'4 .. ;.. :.11::', '.: "., .. . ':' .':, ... l ,J" :". '.;;'.;i! ti I" ::'
una tr.anSlZlone di stato. compre.ncle're iLdiagramma'di Figura1.22j bisogna.telier,.:ptesente die:iil pre-
SWAP' (sostituzione) Se,la copia della linea sottoposta a sostituzione si trova laovecchia viena inva:lidata,e in se nelle. st.ato
stato DRT viene aggiornata la memoria principale, Se 10 stato invece eVAL, INV.' ;::.. ,M:.- Dld:onsegllenza.tuttOlavv11:me come se la nuo.v.a.Unea partlSse cOffiunque daUo stato
I .. :: .. :r "" I" ' . " . .'
o RES non enecessariQ aggiornare 1a memoria. ".. --,'";,, ..', ',', ,.\. ,! ,,,.... '.' ' .':"'.' .. : " .' ..... ":' ." ,':: i;\j:, ",:.
. ,-.,v "IJ'li'
." . '.' . .. "". "":"" i' ".,', ,.,:;, '1' ,.',; '" :' ,:'1\:' .", . ,.,.'.':
Protocollo MESI MESI e ::,.":' ,.". '; I "';, " '" ,,' :i:l' ,;:":::.' : ...
gamente usato nelle mode-me CPU, In particolare essa...viene. usatp . farniglia. ",) T,'!<r" , ... 1i'- " . SI'lR. ! j . 6!h.. L. 11-)(1' " ,.-":.j l.!
P t
' P t' P d' I t I II f '1' P P d' MI'" ! ...... . RI'l_S' - 1'1:"00 I'>is5', ShOf"e<r
en mID e en lum- ro I n e ,.come pu!e armg ower l a. ., :.1::1 ... '::' '. :',; ,.'".: "I Rt:o.d.miss,; Exdu5lve'''; ',.,..
n protocollo MES! prevede 1 segtleDtl 4 statl (due bIt) per la linea dl . r .:,; ' .' ." ." , . ' .;, . . S .' I. r ::: "1:
I
.
t
," .: " .: ,1.. ,
'I :. "'r' , .. I' " . , .. ' .', . , 'I /.''''' ""'1 :':1' , \.In - IJrlte'Mlss
. . .., ".'" 'j,. " ., ' '. '. ,." ." ',' .... I,;,'" . _ ' t ,n',... ":" ,... .. :.... . _. 1 .. (.I: .. ,)1:,: " ". " .: I' :ShR:=. :Snoop hit, 1)0-0. :Sledd . ,-
non Ie cne'ridh11e'coereIrte' RI'lE ,\ '. ., , ,.qn flo .. :
,'ill .. " 'n" . al ," ""d tt'I "'t' 'L; .,1, d'" l'\Jlll'", .
: "memOrIa 'l,fmClp e,' essen 0 's a a tlscn ta; 'la 'cepId c6tnsporr ent-e nt'U1l:;::mOr:la ;\"W . '1 ,.', ;.; .'; ' ..... 'q ,'. .. ", ,I, .
,<,. .' . ,I., , " ..... .' '.' . .:'::';'::., ........ "f : .. : ;,' "'.'
.. 'la'toa'I .. : ".,>I
f
'f t..,J,I, .. ,,',,'i1l."'l'-"A.. hlJ hI,,!' CD-'C'h'U 'fHl
1
\ ., .,
I, ? " t .. 'm-i ft, " 'j I " : ',:". : " " \" . 'CD- :s .. e:r' ,:; , ;: I":,:
,.1/1'; .. qe,. , I : ..Id .,r "" .. ,:' i; '!' \..:. ., ' ...-: . . '.; ' .1. ,'.: l', ;. ,
, . .<11 ... ',. . : ;,. . .." '. .,.. , . . - [nvolldote tf"Cln o..ctrO!1
..! .. l.. ,.. "l, i,' ... ...... ,.. ,"';(i. .... ,. ,'.,." , ..\.I.h .', '\"E' .. ", .,.0., .. :" .. ,..., .
. , ;'.... i"", (''''''..,... IV,. .' . """":"$';' ..... ' 'C"" .. ,,,:',",.;'"
'." .. 1' . " '.1, ':"'" .,,,.' " ", .. ,.",.. ", , . ' ' .'. .R}); , =Reo..d-wl-th-{n,;:e1:-.to-.l"Iodlj:'
'k' Ie' cache . "; f" J,. d" 1 :',;:;' ll' '.: j .' '1J:, j :'.... , , ,.;.;:,'. ; '::: ':<1 .: i",; ; .:: l', . :', '::.-; i; i, I;, 1-,' f ;' .r
cioe non e modificata. Una lettura lascia la linea nello stato; ..', \. :Ii';i ,';' .;.: ,1"',I:l ..' ": ",: ... ;, :,: .:." .:, ".' ',' ... "; !.' 't : .' ":'; . '.' ." :'1.', {,.
eventuale scnttura la porta nello stato M, senza generare acceSSl alIa ..... " 1 . I. " .J , ,l .., ... :., " I,:H
centrale. 7.22 Dlagramma di stato nel MESI: n np.orta Ie, tra.nsazlOnl
, che 51 svolgono sui bus. In presenza dl mISS, 13, vec(;lu3 lmea .vle,ne anzltutt;o mvalidata. e
.1 S:' Ia pre'senl}e ancHe
i
In';alt'rs 'ca2h'e'"ed Eh:ber'ent'e:'c6n 'ia. s'e istato 'M; copiata. 'ih..riteih'oria:. Si -n'Oti' t&':Scrrt'tui"a.
Una linea in stato S viene letta da:l
l
su6' .
II .. . L 'tt . . l I' , t t M. bbl' '1 mdltlzza ,Ia. medeslma: linea', In lettura: 0' scnttura (eventl ShR eShW): .
;M..,! .. ....", ,).! :'1' .. :. " 'I ", .. I.:, ::; .!. =" ,'":, ,,' ,.,' ,l!i -:,.,.1" -': ;./ ,:":"':;
:' . .:. ':;'. ",j .. :"" .,', .:: . ,.;.:' '.' .... ,.;.,., .. , 1'.:<' .... ',1:' .. : ,-,.:
. " . , . I . . "'.. fI[.l:v.:lv .
.rndiCa. 'cbe' )l
a
. 'fVillcfa;. ui{fuiss'che ,;!. d, .. .: ; ., ":. d '.;:;' ..: ,'. ' : 1;' .. 1: .; ,," ,::' ..:; '. , . , .. 1 L .1:' ... ') . :,,; /
. Yi 'Si-notirto i eventi re!'atrvi 'airattiVii-a 'hit '&,0.4)
's; se I" (!}f!iU la ,':f.: e ShW (Snoop h,t on a WNte ovvero Snoop Read-w,th"nftn't'focmodifil)! 'fu quest.
.JI lmea 51 porta: 'lh statl),I.'E:' L::i's;cntttira' 'S.U' lin blpcc;'C)1 p,orta' mvece"nello "it 11. termme hIt 51 al nconOSClmento d1 un'operazione fatta 0
:,1',;', st1.to M: l' ,: :.;' il I ..:'/-; , .\ ",.":.' ':;; -; ,.;,:, .,..\;,: ,!i; ,!. i i; ,:.':e .. da: .-caehf '&, cui. 'c!:e 'c6pfa
'
tdrlsiderata:ilfilal6i
! r. I .'. :' ,,' , . : 1,::, III !",: ,.,": :,', '.; \.,,0.,; , .. 'parolei ShR! tih
.\ I')}' e. ,1,J,9 cia un1altra cache alia copia della linea (non indica cle hit sulla cache che effettivamente
ten.ta 1a lettura). Allo stesso ShW indica che la cache eonsidetata:oSserva una
scnttura s,:lla che e.at Interno: In scrittura
.n!rll,?ptat.O :>.-.;jfi;' nRoendha It amfesta come lettura con mtenzi'one di modmcare (Snoop
, I . ... . ,:.j,;!' -Il,;:i"r.., .. a -un -m en - o-rno IJ!I
. \:J,:.'( ,':!"> ,I! ;1(I' .. i'.1 J_ ..:, .. ,. . ,'" ,.. - .. , ._ ,_ _
... .i.? P'?SSibiljU., ,"
51 'deve la;'-i
c
3:che- Ip.: ..
trasferlsca;,ln' memor:ta: la,llnea,m ogg-etto'/ dt\ dove Pf,Ja.Jpuo"prelevate: '!'" .-. S 0 E). L evento Rm...E (Read mlss
J
ExclUSIVe corrisponcle 31 un.miss, di' lettur.a
,-"" . ....
1
J
\
I
t
I
\
1'
I
1
\
)
\
I
) ,
1
\
,
1
Linea in stato M:
a) 1a cache A tenta 1a letturaj
b) la c""he B ""serisce il segnale ARTRY e il segnale SRI (Shared Indicator).
La transazione di A viene annullata e tutti i dispositivi sui bus si ritirano
dal bus per un periodo di clock;
c) La cache B acquisisce il bus e capia la linea in memoria centrale. La
linea in cache B viene portata in stato E, perche per il momento e la sola
copia in cache;
d) la cache A richiede di nuovo 1a linea a1 sistema. La cache B asserisce
SRI',
f) la transazione si completa con Ache 1egge dalla memoria; con A e B che
portano la lora copia in stato S,
Linea in stato E: in questa caso B non asserisce ARTRY1 rna solo SRI e 1a
transazione procede come al punto f).
La memoria cache 327
.
Esercizio 7.3 Si facciano delle ragionevoli assunzioni sui tempi di 1ettura e eli scrit-
tUfa, sia in memoria principale che in cache) di una parola e d.i una linea. In quali
condizioni di carico (distribuzione dei riferimenti in memoria) la tecnica write-through
presenta migliori prestazioni della tecnica write-back.? Si assuma che la CPU non
abbia partico1ari accorgirnenti come, per esempio, i write buffer.
Linea in stato M:
a) La cache A tenta 1a lettura;
b) la cache B asserisce il segnale HITM e assume il ruolo di fornitore della
linea;
c) La cache A acquisisce la linea dal1a cache B. Contemporaneamente anche
la memoria centrale acquisisce la linea (per non penalizzare 10 svalgimen-
to dell'operazione, il controllore della memoria centrale deve essere in
grade di catturare i dati e scriverli in un secondo tempo in DRAM);
d) sia A elle B portano la linea in stato S.
Linea in stato E: in questo caso B asserisce IDT. Per il resto ie case
procedono come sopra, rna non ha luogo 1a scrittura in memoria centrale.
Esel"cizio 7.1 Illustrare 1a clifferenza tra cache fisica e cache virtuale.
Esercizio 7.2 1a differenza tra gestione write-allocate e write-nan-allocate
della cache.
7.6 Esercizi
Trasferimento da cache a cache La condizione di partenza ela stessa: la cache
B contiene il dato aggiornato, in stato MoE, e la cache A teota la lettura.
340vviamente, il faUO di rilevare la presenza della medesima linea in altre cache elegata all'attivita
di snooping. In presenza di un miss di lettura, Ie cache che hanno a1 loro interno Ia. linea indirizza.ta
asseriscono un segna.le in risposta alla cache che sta tentando lettura, in modo da inforrnarla the
copia si trova al loro interno.
.\j;,:
..
Itc; . :'

-mlfH,:-"
:
3:::2:::6:---=C:::.o.p.::it:::o.::l0:...c
7
';' ' I' 'f7,,';'..
.. ,... l ..... .\ .
", .. .
.). . ...
... , "l:j'o,C:--'
" ".. '
:',....' 'j:],l.:',,.'
che invece non rileva la presenza della stessa linea in altre cache
34
.
Una,linea; che si trova in state S, si accorge che un'altra sta leggendo
linea, (evento ShR Snoop. hit on non. cambia stato, mentre 1a
linea che 81 teova 1D stato E e osserva il medeSlffiO evento 51 cleve portare in stato ,:, '
La stesso evento ShR, osservato da una linea che si trova in stato M, porta la linea in
Si ma anche 130 scrittura della in memoria centrale
push), ill modo che l'altra cache possa averne copla agglOrnata. .'
. state I li?ea porta 5, E 0 M .a seconda del che si
nspettlvamente: un illlSS di lettura m presenza dl almeno una capla della linea In ;
altre cachej un miss eli 1ettura e nessuna copia della linea in altre cache; un miss dl .. .
scrittlITa.. Nei due casi s.i un caricamento .linea. Nel terzo .
caso, 1a linea Vlene letta e qumdi modificata. Questo evento e mdlcato all'esterno ..
come Read-with-intent-to-modijy; esso dice che ein corso eli 1ettura una linea
. ell tal lin ' . d' t t . . l;h..
memona e e e ea sarG unme la amen e agglOrnata. _<..
.In ShW. di un hit eli 0 di un "
COD mtenzlOne eli modificare) la linea vlene comunque mvahdata se non 10 egla.. ,'"::;.'.)' ":
L'evento Wh porta la linea in stato M se non c'e gia, rna se 1a linea si trovava
nello stato S, oecorre .transazione di inval.idazione sul bus per permettere I, ..
cache che ne hanno. di passare stato I., . .
Vale la pena di agglUngere alcune mfonnazlOlll suI modo m CUl 11 PowerPC ges-
tisce il bus. E previsto a tale scopo il segnale GBL, pilotato dalla CPU the al ...
mot:nento emaster, avente la funzione di indicare aile altre CPU che la transazione
corrente cleve essere osservata. Se queste ultime riconoscono che l'indirizzo sui bus'
a una linea al ,interno, .Ie. cache secondo il pro-.:,:::?':.
di FIgura 7.22. cVltare che l'attlVlta di STI?OP OCCUpl banda, 1
arclritettura prevede che il segnale GBL venga assento solo per Ie hnee appartenentl
a pagine marcate come globali e non a tutto 10 spazio (virtuale) degli indirizzi.
,,!' iii'
....Ii
. \l :{Jtj.-,::;.,,-
Nel protocollo un miss. deterrnina il "
mento dalla memona centrale. Nel case lD CUi questa Sla non coerente, Vlene pnma
effettuata la copia dall, cache che contiene il dato aggiornato e quindi eseguita 1a j
lettura. Nel Pentium II Ie cose si svolgono in altro modo: il trasfetimento avviene ...
direttamente dalla cache il dato modificato richiedente. '.,
. .Nella 51 fa confron.to tra modalita. come
il caso In cw una nconosca i1 tentatIvo dl1eggere una Imea contenuta
al suo roterno (Snooped Read HIt)
Trasferimento da memoria a cache La conelizione di partenza equesta: 1a cache ",
B contiene il data aggiornato, in stato MoE, e la cache A tenta ra lettura.
.?'l,,:;O:'''' .
.1.f:JJ.'" "...
, ..
',..

,,:'-;Y,r, Il
.. .'.", ..
J,.'i::'" .. '
....1..... '
,:;1'I:1.!rr.;/.

,.

,..",'J .. ..
, :''';'(.''f "V' ',.
. ';'-'rc ',.
','" :",.-.,:''"
.. '" .
,.,." ... ,"'"'.. .
'H..k!: . '<;i<',."
'.''i",l;,'L,' .:';"
,.. , "'\'I: ,. '<:-"
":!:i:
T
I
I
1
(
\
J
I
I
\
\
\
I
I
I

Linea in stato M:
a) 1a cache A tenta 1a letturaj
b) la c""he B ""serisce il segnale ARTRY e il segnale SRI (Shared Indicator).
La transazione di A viene annullata e tutti i dispositivi sui bus si ritirano
dal bus per un periodo di clock;
c) La cache B acquisisce il bus e capia la linea in memoria centrale. La
linea in cache B viene portata in stato E, perche per il momento e la sola
copia in cache;
d) la cache A richiede di nuovo 1a linea a1 sistema. La cache B asserisce
SRI',
f) la transazione si completa con Ache 1egge dalla memoria; con A e B che
portano la lora copia in stato S,
Linea in stato E: in questa caso B non asserisce ARTRY1 rna solo SRI e 1a
transazione procede come al punto f).
La memoria cache 327
.
Esercizio 7.3 Si facciano delle ragionevoli assunzioni sui tempi di 1ettura e eli scrit-
tUfa, sia in memoria principale che in cache) di una parola e d.i una linea. In quali
condizioni di carico (distribuzione dei riferimenti in memoria) la tecnica write-through
presenta migliori prestazioni della tecnica write-back.? Si assuma che la CPU non
abbia partico1ari accorgirnenti come, per esempio, i write buffer.
Linea in stato M:
a) La cache A tenta 1a lettura;
b) la cache B asserisce il segnale HITM e assume il ruolo di fornitore della
linea;
c) La cache A acquisisce la linea dal1a cache B. Contemporaneamente anche
la memoria centrale acquisisce la linea (per non penalizzare 10 svalgimen-
to dell'operazione, il controllore della memoria centrale deve essere in
grade di catturare i dati e scriverli in un secondo tempo in DRAM);
d) sia A elle B portano la linea in stato S.
Linea in stato E: in questo caso B asserisce IDT. Per il resto ie case
procedono come sopra, rna non ha luogo 1a scrittura in memoria centrale.
Esel"cizio 7.1 Illustrare 1a clifferenza tra cache fisica e cache virtuale.
Esercizio 7.2 1a differenza tra gestione write-allocate e write-nan-allocate
della cache.
7.6 Esercizi
Trasferimento da cache a cache La condizione di partenza ela stessa: la cache
B contiene il dato aggiornato, in stato MoE, e la cache A teota la lettura.
340vviamente, il faUO di rilevare la presenza della medesima linea in altre cache elegata all'attivita
di snooping. In presenza di un miss di lettura, Ie cache che hanno a1 loro interno Ia. linea indirizza.ta
asseriscono un segna.le in risposta alla cache che sta tentando lettura, in modo da inforrnarla the
copia si trova al loro interno.
.\j;,:
..
Itc; . :'

-mlfH,:-"
:
3:::2:::6:---=C:::.o.p.::it:::o.::l0:...c
7
';' ' I' 'f7,,';'..
.. ,... l ..... .\ .
", .. .
.). . ...
... , "l:j'o,C:--'
" ".. '
:',....' 'j:],l.:',,.'
che invece non rileva la presenza della stessa linea in altre cache
34
.
Una,linea; che si trova in state S, si accorge che un'altra sta leggendo
linea, (evento ShR Snoop. hit on non. cambia stato, mentre 1a
linea che 81 teova 1D stato E e osserva il medeSlffiO evento 51 cleve portare in stato ,:, '
La stesso evento ShR, osservato da una linea che si trova in stato M, porta la linea in
Si ma anche 130 scrittura della in memoria centrale
push), ill modo che l'altra cache possa averne copla agglOrnata. .'
. state I li?ea porta 5, E 0 M .a seconda del che si
nspettlvamente: un illlSS di lettura m presenza dl almeno una capla della linea In ;
altre cachej un miss eli 1ettura e nessuna copia della linea in altre cache; un miss dl .. .
scrittlITa.. Nei due casi s.i un caricamento .linea. Nel terzo .
caso, 1a linea Vlene letta e qumdi modificata. Questo evento e mdlcato all'esterno ..
come Read-with-intent-to-modijy; esso dice che ein corso eli 1ettura una linea
. ell tal lin ' . d' t t . . l;h..
memona e e e ea sarG unme la amen e agglOrnata. _<..
.In ShW. di un hit eli 0 di un "
COD mtenzlOne eli modificare) la linea vlene comunque mvahdata se non 10 egla.. ,'"::;.'.)' ":
L'evento Wh porta la linea in stato M se non c'e gia, rna se 1a linea si trovava
nello stato S, oecorre .transazione di inval.idazione sul bus per permettere I, ..
cache che ne hanno. di passare stato I., . .
Vale la pena di agglUngere alcune mfonnazlOlll suI modo m CUl 11 PowerPC ges-
tisce il bus. E previsto a tale scopo il segnale GBL, pilotato dalla CPU the al ...
mot:nento emaster, avente la funzione di indicare aile altre CPU che la transazione
corrente cleve essere osservata. Se queste ultime riconoscono che l'indirizzo sui bus'
a una linea al ,interno, .Ie. cache secondo il pro-.:,:::?':.
di FIgura 7.22. cVltare che l'attlVlta di STI?OP OCCUpl banda, 1
arclritettura prevede che il segnale GBL venga assento solo per Ie hnee appartenentl
a pagine marcate come globali e non a tutto 10 spazio (virtuale) degli indirizzi.
,,!' iii'
....Ii
. \l :{Jtj.-,::;.,,-
Nel protocollo un miss. deterrnina il "
mento dalla memona centrale. Nel case lD CUi questa Sla non coerente, Vlene pnma
effettuata la copia dall, cache che contiene il dato aggiornato e quindi eseguita 1a j
lettura. Nel Pentium II Ie cose si svolgono in altro modo: il trasfetimento avviene ...
direttamente dalla cache il dato modificato richiedente. '.,
. .Nella 51 fa confron.to tra modalita. come
il caso In cw una nconosca i1 tentatIvo dl1eggere una Imea contenuta
al suo roterno (Snooped Read HIt)
Trasferimento da memoria a cache La conelizione di partenza equesta: 1a cache ",
B contiene il data aggiornato, in stato MoE, e la cache A tenta ra lettura.
.?'l,,:;O:'''' .
.1.f:JJ.'" "...
, ..
',..

,,:'-;Y,r, Il
.. .'.", ..
J,.'i::'" .. '
....1..... '
,:;1'I:1.!rr.;/.

,.

,..",'J .. ..
, :''';'(.''f "V' ',.
. ';'-'rc ',.
','" :",.-.,:''"
.. '" .
,.,." ... ,"'"'.. .
'H..k!: . '<;i<',."
'.''i",l;,'L,' .:';"
,.. , "'\'I: ,. '<:-"
":!:i:
T
I
I
1
(
\
J
I
I
\
\
\
I
I
I

I
I
1'
\
\
I
,
1
\
\
I
I
)
I
I
1
)
329 La memoria,cache'
M; M; Mj Ho; H1i M; M; Hz; M; M; IOi H
t
; H
3
.
Gapitolo:.7..,
Esercizio 7.7 8i progetti una memoria cache di 256kbyte (parte DATI), a 2 vie e
!inee di 32 byte (8 parole d.i 32 bit). Si assuma che la macchina generi indirizzi di 32
bit, che vengano sempre indirizzate di 32 bit e che i byte entro la parol a vengano
identificati attraverso i 4segnali BE3,BE3,BEl,BEO, carrispondenti alla decodifica dei
due bit meno significativi dell'indirizzo. IS.! .n'"'}':"'. t \
Si dispooe di. integrati SRAM byte.. wide di 2K, 4K, 8K, 16K, 32K, 64 kbyte,
Gli integrati, oltre jagli' ,8 piediniJ. re"latiri al 'dato .e"acne<;essarir piE!61irii '"di ,indiriz20
1
questi piedini; CS(Chip Select), RD e WR (Write). ...
'e asseritb Ii mein:oria' effettua l'operazione riChiesta da'queUo'dei rHrfanetiti dtfe
asserito. ' II;, . j,i:"!!,
, "Si"sce!g3\l-o,; gli per Ja, ,p;;rte PJ.'rle. p,er.,la.,parte, 'r,'\<;l,.,jn.,JIlodO,;dj1.
piu impiegaj), mjniJlJ,o. di
pita 9i Q.umero li :,: .. ,!',;;: .
J ... ,.,1: ';' I;' ,,:. ":":J'! \;
8i tracci Io schema i coUegamenti dei. di mempt.1a,.
,9.1':



"
r {.j . '.',
. ,MY!:!'!
.... "
, , ",j ,I! ft.
'
.'
"m" ,
:. ..,
,.." ",.', , ,r.. .' . , , . I' '2 " d' 'di
E
. . .oS' . ,...... . . al ' d' 226 Mb . ',I;." . EserclzlO -7..8'"l!l; data'una caChe dl capaClta c,omp esSl-Ya; pan,a 5 u.yte; a ue:.vle::'
serClZIO 7.4 1 suppongaehe la memoPLallnnClp e Sla 1 yte, COn parole dl . l'c ""1".,.:. 8:Kyt' L I' di 8 I (32'b't) Gli,' diriz' "(di '[')
32
"b't' 'di' , '32 b't 'D ' "I t tt d [" d" , h d N', .',Y':."','" 12, e CIa8CUna, ' e Inee sana ' 'paro e U> e. 1 ,.' .m z,' paro a
. I em \ ura. egl.lnlnZZI.perunacace a dt' "o't'31'2dlb d 1':_..1:-' . L'al 't di' "," . t'
. .- . b D "} I" ,:to" 'ye.ngqno: a LSUl':1 ,ft ...ft.,. e, us eg1.J.I.l.WCIZZI'. '. gGnmOi ,nmplazzameno,-c.
256kbyte,a8vle,Conhneed164 yte.; etermrnaret: numerocompesslvodl bit di :;'::M. U L'al 't 'b 11'" di t't" '" ' .... " ,; .'O,' 'f; .. ',.
TAG' .. ," .. 1. "" .. , ., .;.. ,,;: '; ,'. ..' LR gOr! rno 51 asa SU Irnplego con a ... :,.', ..... " .. , ., , , .. ,..... , ... ,.,
... '", ,'" .;, " '" .., "" .. ,\L'tf;4I'Ctt;,:,
.. ' " , ".., ,'..,c':': di bIt compless,vo.'(per l'mtera' cache) 'nchiesto' llen"contaton 'LRU;'(3) -la' rete-ill
EserclzlO 7,5 SI consldermo queste quattro orgamzZaZlOnI dI' cache,' (a) cache a . .. ' ". . t 'd ' c' t' t " (I" 't d" t' ,', t d' II .' ,; 11'
" .', '. ". i: " , " '. , .,' :, ,. . "aggtotnamen 0 el' on a,orl e . eve. ener con 0 e a'conuu,la .. "do' non
mappatura. duetta: dl 1:6 linee, can lrnee dl una parola, (b) cache a mappatura dlretta '.n:J..., .1,11;:" , "al'd't" 'd' 11' ... 1"'[") ,"'" I . 'I ..... , ., .. " " ,. '''',' ... I, ",",.. '. ,"'1 ". ,.
, . ,".' ,,', ':;:.'.:, I 14' e e-sln,go 0;:: lnee .'."" '" '" '.., . ,.. ", .." , ,., "' .
4 .con.line.e..eli 4 c) each: a.2 linee di una .:. :v Per' quanta si al punta (3) ;., si' 'sliggeriBce ill .iai
parola, dimensl(!)ne GompleSslva 16 parole, pohttca:dI sostltuzlOne tRU, (d) cache set ", .. ... /R t d 'JI' ft ' , , I I' , d' t t '
.. . .. .. . . . . :". et ese el 1 - a 1m Ie atl er a. rea IZ'l.aZIOn el can a on. ,.... ., . _
a 2 Vie, dl 4 parole,dlmenslOne,cornplesslva16 parole, pohtlca" .. ' "1:1'; >;! '. ,.:p.' ;.1 ..".'.'< 'I, j. : .... :,'., .. \).; I;i": ::L. -:;/,
: . . I \.. .. , ''j'9 1i+r'\\I,,]'';' .(.1 .. ,. ':b" l:d.. t:32'b..t.. W'31!'D'O),1.,! lli ..
. "; ,.!., .. ,:' ,",' . '.' '.' ;.'."1. '.,.:;'.1... . ,.I:lO'ercl;c,lo ... vncacolaorli!con us al.a 1 - enera 'InalnZZIl
81 conSIder! questa sequenza dl nfeqmentt dl parola): . r' i ':b! '11\I']'" \-' ../ 'd" ...;d';1f L A'3' l' "'p':::!: i 'd( . &.:; ".1 .,... gli"o ,: :!
, ... , "', "", ' , Jr. .' ':,'tl,}" yo;:: s e tnt:: 1 III Irl:GZu -. erm .. J,,:eo,I:u.n,a
1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17, '_ parola vengono lmplegate Ie quattro linee BE3, BE2, BEl e BEO, " .. , "' .. " ,,','.
" ',' '.','.1,: ," I:, T,. :',1 ',:' ;.'J,' ,', "'" .f,' ':'.. .. Qi.vug}e I'ollttuire I.coIl'lin-.
, . ,.'. , " " '. .. ..;,,' ..N ; ' .. , . , 1 _' __ .. __
Pet. qiiattr? . ..Pe:r ltPyte,;
vuate, 51 deternum l'effetto dI CIascun nferunento (hit 0 mISS) e II r,I'A..O i
finale della cache, " . . ,;,.)l!;'iILI';!:{r,,:; ,0 ,: GQA I'IIl<!ivWJ13ZlpuMlel,q;Hilie,qmh
, .,' , , ",1 pangono 1 van campI e 51 determlID 11
'Esercizio17..6;Si cOIisiClerintYIe dJe" di tache Ie la'seqtienzA. di riferi- .. ,parte DATI e la parte TAG schematizzanda la lora dislocaZione. 8i disegnino tutti
.menU . . . . . ' .. risulti'
a) Cache a '4 vie," linee idl2, parole, dlIDenslone complessnra':parr a: 32 parole. Riferi- . .. . nello
J
:spa2;1p! deglii.tndltlzZl
l
della cache.e 81 dla' Ylene
, '. . . . . "''''1'''''\'''' "I b d t' P 1" ., d' 11 . t =A"" ' ' .. d ch il li lil
. ... :'i:,:,:, 1:.;)[ .... ;, I".,, ". ".' ,.'.j:" .. '; ,'"I,', ,.. ,."""'J:' ,. costrUltal us at. er
j
.,gr,mtegrat1l. e a"par ei.. ean et '!:tag 0.'\
2',4, 8;" 1Q; 20', 6',' 19j 48, 9, '42, 11; 4, 43; '44, 2, 5; '39, 3'4; '36; '6;.12; i4; 'IS, 28, 9. <II taglio git,lst,9 e minim.9, rr:a. all'uso).. .' . ... '_ . ._.
b) a ;4 vie" Iineeill ,4 parole,' dimensibrie 'complessiva 'parj' a. 32 -parole. Riferi- ,', 'Ttiiiieat6 'con 'Vi' :Pip'dica.t'ore (U!
j I '. ' :iit\. ,.: I' I '.. . \ .. ,' ..[,' ,.' .'.,. ""'"11 ", ,I.".
mentl: '1."':' .. .. , .:."""',. ..zazlane.;' ".' "':,,,,,,'"..-.(,,,,,""1
2,. 8, 20",6
1
19, 48, .3?, r
8
,.! 9. . .,-. _,' ..
.. cP:
e
ta.. .!Wtk .L,a:
LRU e che m presenza di pm linee vuote alia stessa pOSIZlOne, SUI mlSS
l
venga nemplta ':'\;}"{\?' dl vahdlta dl Imea. Sl dlsegru 10 schema del generico CS (aup Select) della parte
linea via pill a sinistra d! marcare "h" 0 co.n :q.. ... < :.5 [ ,;,itl!'l.,:.,:-:
clascun nfenmento a secanda che Sla hIt a mlSS; nportare a parte I contenutl finalr .. A
delle cache (TAG), $fJPP?H.g"" J.i,n,ea,
bus degh eel mdmzzo de.lla hnea da ;. :.:': .. ,:J, ::':'i' k '"ii.
;;':,,">''':. Per semphclta, escludendo la dornanda dell'ulttmo punto, SI consldenno soltanto
,,,,,',,,. . [. " d'l'
e:operaZ10lli.lettuIa., ' ..,',.;. .',Ii .. (.: I': (:t
"0"- "-'1,,--'-"" , ..
\ ',-,".. '. .
..\;.,',! r,!A .. " ,;.,<:, :'. " . Il!:.. : ." .JI,: " _ ';' .. :Ji.!;,.'" i: ,.;'.' . ...: .i: ',. '.:,'!i '.. !:l:h;'l, i:l;.':
... 'I.", .. '.
l,",:,' Con tifetimento,aU'.aUgoritmo,pscudoJt.RU:p.er La
0,;.';' ,;j';;" della CPU 486.. 'CfI:"J.2,12)"si ',iporti,',lo ,stato, \lei,bitdil
o
',B,eB
2
! e"dei,bit di Yalidita
,?;fr: VOIVIIV2,V3 a seguito di ciascun evento a partire dalia candizione iniziale data (in
di presenza di piu linee non valide, viene utilizzata la linea non valida
, :,:: pm a Slll15tra ,
Condizione iniziaIe:
.,,..,,, ".... ', ..
:'::, a) tutte Ie linee di una generica posiziane sono valide (Vi = 0; 'Vi);
. .. , ' b) B' - 0
.'" j" .. 1-
."!$E Sequenza di eventi (M sta per miss, Hi sta per hit sulla linea di via'i, Ii sta per
d'"'' ,." , Id )
tnva i azione della linea di via i :
, ",!:,,. ',' ,,l. "
,. ":,':/:'::""",. '
',,:\>: . , .... '
:';\;:i,! "" I. .. : .
""i:' . ,t
'':;:'','" '.. .. ,
. 'I:' "', '.: ,'.,..t\_ , ,."
" ..
, ,,"
'328
,
I
I
1'
\
\
I
,
1
\
\
I
I
)
I
I
1
)
329 La memoria,cache'
M; M; Mj H
o
; H1i M; M; Hz; M; M; IOi H
t
; H
3
.
Gapitolo:.7..,
Esercizio 7.7 8i progetti una memoria cache di 256kbyte (parte DATI), a 2 vie e
!inee di 32 byte (8 parole d.i 32 bit). Si assuma che la macchina generi indirizzi di 32
bit, che vengano sempre indirizzate di 32 bit e che i byte entro la parol a vengano
identificati attraverso i 4segnali BE3,BE3,BEl,BEO, carrispondenti alla decodifica dei
due bit meno significativi dell'indirizzo. IS.! .n'"'}':"'. t \
Si dispooe di. integrati SRAM byte.. wide di 2K, 4K, 8K, 16K, 32K, 64 kbyte,
Gli integrati, oltre jagli' ,8 piediniJ. re"latiri al 'dato .e"acne<;essarir piE!61irii '"di ,indiriz20
1
questi piedini; CS(Chip Select), RD e WR (Write). ...
'e asseritb Ii mein:oria' effettua l'operazione riChiesta da'queUo'dei rHrfanetiti dtfe
asserito. ' II;, . j,i:"!!,
, "Si"sce!g3\l-o,; gli per Ja, ,p;;rte PJ.'rle. p,er.,la.,parte, 'r,'\<;l,.,jn.,JIlodO,;dj1.
piu impiegaj), mjniJlJ,o. di
pita 9i Q.umero li :,: .. ,!',;;: .
J ... ,.,1: ';' I;' ,,:. ":":J'! \;
8i tracci Io schema i coUegamenti dei. di mempt.1a,.
,9.1':



"
r {.j . '.',
. ,MY!:!'!
.... "
, , ",j ,I! ft.
'
.'
"m" ,
:. ..,
,.." ",.', , ,r.. .' . , , . I' '2 " d' 'di
E
. . .oS' . ,...... . . al ' d' 226 Mb . ',I;." . EserclzlO -7..8'"l!l; data'una caChe dl capaClta c,omp esSl-Ya; pan,a 5 u.yte; a ue:.vle::'
serClZIO 7.4 1 suppongaehe la memoPLallnnClp e Sla 1 yte, COn parole dl . l'c ""1".,.:. 8:Kyt' L I' di 8 I (32'b't) Gli,' diriz' "(di '[')
32
"b't' 'di' , '32 b't 'D ' "I t tt d [" d" , h d N', .',Y':."','" 12, e CIa8CUna, ' e Inee sana ' 'paro e U> e. 1 ,.' .m z,' paro a
. I em \ ura. egl.lnlnZZI.perunacace a dt' "o't'31'2dlb d 1':_..1:-' . L'al 't di' "," . t'
. .- . b D "} I" ,:to" 'ye.ngqno: a LSUl':1 ,ft ...ft.,. e, us eg1.J.I.l.WCIZZI'. '. gGnmOi ,nmplazzameno,-c.
256kbyte,a8vle,Conhneed164 yte.; etermrnaret: numerocompesslvodl bit di :;'::M. U L'al 't 'b 11'" di t't" '" ' .... " ,; .'O,' 'f; .. ',.
TAG' .. ," .. 1. "" .. , ., .;.. ,,;: '; ,'. ..' LR gOr! rno 51 asa SU Irnplego con a ... :,.', ..... " .. , ., , , .. ,..... , ... ,.,
... '", ,'" .;, " '" .., "" .. ,\L'tf;4I'Ctt;,:,
.. ' " , ".., ,'..,c':': di bIt compless,vo.'(per l'mtera' cache) 'nchiesto' llen"contaton 'LRU;'(3) -la' rete-ill
EserclzlO 7,5 SI consldermo queste quattro orgamzZaZlOnI dI' cache,' (a) cache a . .. ' ". . t 'd ' c' t' t " (I" 't d" t' ,', t d' II .' ,; 11'
" .', '. ". i: " , " '. , .,' :, ,. . "aggtotnamen 0 el' on a,orl e . eve. ener con 0 e a'conuu,la .. "do' non
mappatura. duetta: dl 1:6 linee, can lrnee dl una parola, (b) cache a mappatura dlretta '.n:J..., .1,11;:" , "al'd't" 'd' 11' ... 1"'[") ,"'" I . 'I ..... , ., .. " " ,. '''',' ... I, ",",.. '. ,"'1 ". ,.
, . ,".' ,,', ':;:.'.:, I 14' e e-sln,go 0;:: lnee .'."" '" '" '.., . ,.. ", .." , ,., "' .
4 .con.line.e..eli 4 c) each: a.2 linee di una .:. :v Per' quanta si al punta (3) ;., si' 'sliggeriBce ill .iai
parola, dimensl(!)ne GompleSslva 16 parole, pohttca:dI sostltuzlOne tRU, (d) cache set ", .. ... /R t d 'JI' ft ' , , I I' , d' t t '
.. . .. .. . . . . :". et ese el 1 - a 1m Ie atl er a. rea IZ'l.aZIOn el can a on. ,.... ., . _
a 2 Vie, dl 4 parole,dlmenslOne,cornplesslva16 parole, pohtlca" .. ' "1:1'; >;! '. ,.:p.' ;.1 ..".'.'< 'I, j. : .... :,'., .. \).; I;i": ::L. -:;/,
: . . I \.. .. , ''j'9 1i+r'\\I,,]'';' .(.1 .. ,. ':b" l:d.. t:32'b..t.. W'31!'D'O),1.,! lli ..
. "; ,.!., .. ,:' ,",' . '.' '.' ;.'."1. '.,.:;'.1... . ,.I:lO'ercl;c,lo ... vncacolaorli!con us al.a 1 - enera 'InalnZZIl
81 conSIder! questa sequenza dl nfeqmentt dl parola): . r' i ':b! '11\I']'" \-' ../ 'd" ...;d';1f L A'3' l' "'p':::!: i 'd( . &.:; ".1 .,... gli"o ,: :!
, ... , "', "", ' , Jr. .' ':,'tl,}" yo;:: s e tnt:: 1 III Irl:GZu -. erm .. J,,:eo,I:u.n,a
1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17, '_ parola vengono lmplegate Ie quattro linee BE3, BE2, BEl e BEO, " .. , "' .. " ,,','.
" ',' '.','.1,: ," I:, T,. :',1 ',:' ;.'J,' ,', "'" .f,' ':'.. .. Qi.vug}e I'ollttuire I.coIl'lin-.
, . ,.'. , " " '. .. ..;,,' ..N ; ' .. , . , 1 _' __ .. __
Pet. qiiattr? . ..Pe:r ltPyte,;
vuate, 51 deternum l'effetto dI CIascun nferunento (hit 0 mISS) e II r,I'A..O i
finale della cache, " . . ,;,.)l!;'iILI';!:{r,,:; ,0 ,: GQA I'IIl<!ivWJ13ZlpuMlel,q;Hilie,qmh
, .,' , , ",1 pangono 1 van campI e 51 determlID 11
'Esercizio17..6;Si cOIisiClerintYIe dJe" di tache Ie la'seqtienzA. di riferi- .. ,parte DATI e la parte TAG schematizzanda la lora dislocaZione. 8i disegnino tutti
.menU . . . . . ' .. risulti'
a) Cache a '4 vie," linee idl2, parole, dlIDenslone complessnra':parr a: 32 parole. Riferi- . .. . nello
J
:spa2;1p! deglii.tndltlzZl
l
della cache.e 81 dla' Ylene
, '. . . . . "''''1'''''\'''' "I b d t' P 1" ., d' 11 . t =A"" ' ' .. d ch il li lil
. ... :'i:,:,:, 1:.;)[ .... ;, I".,, ". ".' ,.'.j:" .. '; ,'"I,', ,.. ,."""'J:' ,. costrUltal us at. er
j
.,gr,mtegrat1l. e a"par ei.. ean et '!:tag 0.'\
2',4, 8;" 1Q; 20', 6',' 19j 48, 9, '42, 11; 4, 43; '44, 2, 5; '39, 3'4; '36; '6;.12; i4; 'IS, 28, 9. <II taglio git,lst,9 e minim.9, rr:a. all'uso).. .' . ... '_ . ._.
b) a ;4 vie" Iineeill ,4 parole,' dimensibrie 'complessiva 'parj' a. 32 -parole. Riferi- ,', 'Ttiiiieat6 'con 'Vi' :Pip'dica.t'ore (U!
j I '. ' :iit\. ,.: I' I '.. . \ .. ,' ..[,' ,.' .'.,. ""'"11 ", ,I.".
mentl: '1."':' .. .. , .:."""',. ..zazlane.;' ".' "':,,,,,,'"..-.(,,,,,""1
2,. 8, 20",6
1
19, 48, .3?, r
8
,.! 9. . .,-. _,' ..
.. cP:
e
ta.. .!Wtk .L,a:
LRU e che m presenza di pm linee vuote alia stessa pOSIZlOne, SUI mlSS
l
venga nemplta ':'\;}"{\?' dl vahdlta dl Imea. Sl dlsegru 10 schema del generico CS (aup Select) della parte
linea via pill a sinistra d! marcare "h" 0 co.n :q.. ... < :.5 [ ,;,itl!'l.,:.,:-:
clascun nfenmento a secanda che Sla hIt a mlSS; nportare a parte I contenutl finalr .. A
delle cache (TAG), $fJPP?H.g"" J.i,n,ea,
bus degh eel mdmzzo de.lla hnea da ;. :.:': .. ,:J, ::':'i' k '"ii.
;;':,,">''':. Per semphclta, escludendo la dornanda dell'ulttmo punto, SI consldenno soltanto
,,,,,',,,. . [. " d'l'
e:operaZ10lli.lettuIa., ' ..,',.;. .',Ii .. (.: I': (:t
"0"- "-'1,,--'-"" , ..
\ ',-,".. '. .
..\;.,',! r,!A .. " ,;.,<:, :'. " . Il!:.. : ." .JI,: " _ ';' .. :Ji.!;,.'" i: ,.;'.' . ...: .i: ',. '.:,'!i '.. !:l:h;'l, i:l;.':
... 'I.", .. '.
l,",:,' Con tifetimento,aU'.aUgoritmo,pscudoJt.RU:p.er La
0,;.';' ,;j';;" della CPU 486.. 'CfI:"J.2,12)"si ',iporti,',lo ,stato, \lei,bitdil
o
',B,eB
2
! e"dei,bit di Yalidita
,?;fr: VOIVIIV2,V3 a seguito di ciascun evento a partire dalia candizione iniziale data (in
di presenza di piu linee non valide, viene utilizzata la linea non valida
, :,:: pm a Slll15tra ,
Condizione iniziaIe:
.,,..,,, ".... ', ..
:'::, a) tutte Ie linee di una generica posiziane sono valide (Vi = 0; 'Vi);
. .. , ' b) B' - 0
.'" j" .. 1-
."!$E Sequenza di eventi (M sta per miss, Hi sta per hit sulla linea di via'i, Ii sta per
d'"'' ,." , Id )
tnva i azione della linea di via i :
, ",!:,,. ',' ,,l. "
,. ":,':/:'::""",. '
',,:\>: . , .... '
:';\;:i,! "" I. .. : .
""i:' . ,t
'':;:'','" '.. .. ,
. 'I:' "', '.:
,'.,..t\_ , ,."
" ..
, ,,"
'328
,

I I
8
La memoria virtuale
8.1 Introduzione
Nei sistemi privi di memoria virtuale, l'esecuzione di un programma di dimenaione
superiore a quella della memoria centrale richiede alcuni adatta.menti , riconducibili a
",
I: \::
i!:".'i:.,....,.
","!4, _.:
" ...
- ..
*-"...
!,J-/[i2;:'
.

,t-t<'{f{.,:'
... ,
.:';:;t!.t. "
" .'. '-- .'
','
'
>,'

," ..:.,. ,.' "
:, ....,:,;J, .i' ...
:
'i'I.'.-;C;:' :
"1.":;. '
'!t'j:.,:,..,.-.,
-'." '.' ... ,

..x't-..!.:.' :.
.w"";"::. j .
I. >
\'{.;':. :\' .
.". ,-".,. .
0'1'" .
, .j,-""'.' ,';'.' .
"''J!',l ",ii"'"

",f!.i" ."".
iN',;'" .. ;".....
.. ... 1.:,.., .
'J .
.:. ril
:.
estata introdotta di p:ogrammi di
supenore a quelle della fis1ca. La vlrtuale Sl. e
negh anru sessanta, quando) per motlvi dl costo, la memona centrale del calco1aton
era necessariamente di dimensioni ridotte, tali da risultare spesso insufficienti rispetto
alJloccupazione richiesta dai prograrnmi. .
S:t}:;: Altra motivazione ela protezione, ovverol'insieme dei meccanismi che consentono
l'esecuzione di processi concorrenti , evitando che indebiti indirizzamenti da parte di un
processo danneggino i eli altr.i La.. mem?ria virtuale c.ostituisce
. base natural.e su CUi I. dl protczlOne, 10 <,luanto ogm
Vlene d1 un, .d1 p.rotetto. 51 no.tl
..?,. che la creazlone dl tantl Spazl d1 mdlI1zzamento nchiede grandi quantlta di memona
,.' e ripropone la ID<?tivazione per la gestione de,lla memoria virtu.ale.. ,
:ifiV\.".. Allo sta:o della tecnolog1a, buona parte della della memona e
: affidata a umta. dette MMJ) (Memory Management Umt). Queste) con l'affinarsl delle
VLSI
,
vengono nella stessa ?PU. La MMU
11 sul quale 51 apPoggIa II SIstema Operat1vo (SO) per la gestlOne
:-;:<__ complesslva del Sistema.
, ".,

""1';'1':'11
,. Dal vertiginoso aumento della capacita e dalla continua riduzione dei costi delle me--
morie DRAM ci 5i poteva aspettare la scomparsa della memoria virtuale. In passato,
. non pochi autori si sono lanciati in previsioni secondo cui ogni proces50re avrebbe
avuto tutta la memoria e) di, .la sareb?e
,. scomparsa 0 comunque confinata ill apphcaz10111 speclah, t1po baal dl datI d1 grandls-
" sime dimensioni. Tali previsioni per il momento non 5i sono avverate, anche perche,
';'t,i almeno negli ultimi dieci anoi, il tasso di incremento aunuo nelle esigenze medie del
.-;. software quanta a risorse di macchina -tra cui in particolare la memoria- estato
.J , .'
del 35%, contro un tasso medio di aumento delle risorse stesse per unita
.... dl costo del 18%.
- ",,' \:. ",' ".', '
'." .*. c.,I " .
'1 '-' "1.
',".:t..;tl
-,
'.. II'''' ."..., .
,--,.-"
",.",,""",'.

:

rl.>-",}'

, '<i"\, ,
i:,:.'.'-
.. ," ,.-,.,
.. ,.' ,
,r' -,",,'1'"0'-1,
," '\:' . :V;ll;,:.:.'-'
"
. i "
'.

Esercizio 7.14 In riferimento all'algoritmo LRD descritto al Paragraio7.2.2 e basa-


to sui contatori, si 5tabilisca come devono e5sere inizializzati i contatori. Si tenga
presente che l'inizializzazione deve determinare la situazione di cache vuota, ovvero
Ie linee devono essere tutte invalidate. Se tutti i contatori vengono inizializzati a 0
1
l'algoritmo presentato opera correttamente?
Esercizio 7.15 8i supponga di avere una cache associativa a due vie e si assuma che
i rimpiazzamenti vengano effettuati secondo la tecnica LRU. 8i delinei l'algoritmo per
questo caso particolare e si progetti la logica che 10 realizza.
Esercizio 7.16 8i consideri 1'algoritmo pseudo LRU del Paragrafo 7.2.2. 8i dica sotto
quali coodizioni l'a1goritmo da. risultato diverse ri5petto allo LRU.
Esercizio 7.17 In riferimento all'algoritmo pseudo LRU del Paragraf07.2.2
,
5i pro-
getti la rete coriispondente alla logica di decisione e di aggiornamento dei bit LRU.
Esercizio 7.18 In riferimento al protocollo di coerenza snoopy a invalidaziQne con
scrittura differita, 5i tracci il diagra.rnma di stato della generica linea di cache seguendo
Ie convenzioni e 10 stile del diagrarnma di Figura 7.22, in modo da illustrare Ie attivita
che si svolgono sui bus.
Esercizio 7.19 8i consideri il protocollo snoopy write-once per 1a coerenza della
cache (pagina 320 e seguenti). Si ridisegni il eliagrammaeli stato eli Figura 7.21 secondo
10 stile del diagrarnma eli Figura 7.22, in modo da illustrare Ie attivita che si svolgono
suI bus. Si facciano Ie 5te5se ipotesi che sono state fatte in Figura 7.22.
Esercizio 7.12 Si consideri una cache associativa a 4 vie numerate da 0 a 3. Si
disegni la rete che in riferimento alIa generica posizione IL. in presenza di piu linee
non valide seleziona quella di Dumero d'ordine piu basso. La rete cleve fomire BU 2
bit 1a codifica del numero di via selezionata.
330 Capitola 7
Esercizio 7.13 In riferimento alla Figura 7.6 si aggiunga 1a parte di logica che pre.
senta come j, il DurnerD della via BU chi si eavuto. hit, oppure il contenuto di Sa in caso
di miss e linee valide
,
oppure il numero della via prioritaria non valida, Si supponga
che la cache sia a 4 vie.
EseJ;'cizio 7.11 Si eosservato che l'algoritmo di sostituzione descritto al Paragrafo
7.2.1 DOD opera in modo del tutto casuale. Discutere se, in certe situazioni e per brevi
periodi, l'algoritmo puo avere un comportamento deterministico. Indicare in questa
caso qllal ePordine eli sostituzione.
I
I
I
I
l
I
\
I
I

I
I \

.J

I I
8
La memoria virtuale
8.1 Introduzione
Nei sistemi privi di memoria virtuale, l'esecuzione di un programma di dimenaione
superiore a quella della memoria centrale richiede alcuni adatta.menti , riconducibili a
",
I: \::
i!:".'i:.,....,.
","!4, _.:
" ...
- ..
*-"...
!,J-/[i2;:'
.

,t-t<'{f{.,:'
... ,
.:';:;t!.t. "
" .'. '-- .'
','
'
>,'

," ..:.,. ,.' "
:, ....,:,;J, .i' ...
:
'i'I.'.-;C;:' :
"1.":;. '
'!t'j:.,:,..,.-.,
-'." '.' ... ,

..x't-..!.:.' :.
.w"";"::. j .
I. >
\'{.;':. :\' .
.". ,-".,. .
0'1'" .
, .j,-""'.' ,';'.' .
"''J!',l ",ii"'"

",f!.i" ."".
iN',;'" .. ;".....
.. ... 1.:,.., .
'J .
.:. ril
:.
estata introdotta di p:ogrammi di
supenore a quelle della fis1ca. La vlrtuale Sl. e
negh anru sessanta, quando) per motlvi dl costo, la memona centrale del calco1aton
era necessariamente di dimensioni ridotte, tali da risultare spesso insufficienti rispetto
alJloccupazione richiesta dai prograrnmi. .
S:t}:;: Altra motivazione ela protezione, ovverol'insieme dei meccanismi che consentono
l'esecuzione di processi concorrenti , evitando che indebiti indirizzamenti da parte di un
processo danneggino i eli altr.i La.. mem?ria virtuale c.ostituisce
. base natural.e su CUi I. dl protczlOne, 10 <,luanto ogm
Vlene d1 un, .d1 p.rotetto. 51 no.tl
..?,. che la creazlone dl tantl Spazl d1 mdlI1zzamento nchiede grandi quantlta di memona
,.' e ripropone la ID<?tivazione per la gestione de,lla memoria virtu.ale.. ,
:ifiV\.".. Allo sta:o della tecnolog1a, buona parte della della memona e
: affidata a umta. dette MMJ) (Memory Management Umt). Queste) con l'affinarsl delle
VLSI
,
vengono nella stessa ?PU. La MMU
11 sul quale 51 apPoggIa II SIstema Operat1vo (SO) per la gestlOne
:-;:<__ complesslva del Sistema.
, ".,

""1';'1':'11
,. Dal vertiginoso aumento della capacita e dalla continua riduzione dei costi delle me--
morie DRAM ci 5i poteva aspettare la scomparsa della memoria virtuale. In passato,
. non pochi autori si sono lanciati in previsioni secondo cui ogni proces50re avrebbe
avuto tutta la memoria e) di, .la sareb?e
,. scomparsa 0 comunque confinata ill apphcaz10111 speclah, t1po baal dl datI d1 grandls-
" sime dimensioni. Tali previsioni per il momento non 5i sono avverate, anche perche,
';'t,i almeno negli ultimi dieci anoi, il tasso di incremento aunuo nelle esigenze medie del
.-;. software quanta a risorse di macchina -tra cui in particolare la memoria- estato
.J , .'
del 35%, contro un tasso medio di aumento delle risorse stesse per unita
.... dl costo del 18%.
- ",,' \:. ",' ".', '
'." .*. c.,I " .
'1 '-' "1.
',".:t..;tl
-,
'.. II'''' ."..., .
,--,.-"
",.",,""",'.

:

rl.>-",}'

, '<i"\, ,
i:,:.'.'-
.. ," ,.-,.,
.. ,.' ,
,r' -,",,'1'"0'-1,
," '\:' . :V;ll;,:.:.'-'
"
. i "
'.

Esercizio 7.14 In riferimento all'algoritmo LRD descritto al Paragraio7.2.2 e basa-


to sui contatori, si 5tabilisca come devono e5sere inizializzati i contatori. Si tenga
presente che l'inizializzazione deve determinare la situazione di cache vuota, ovvero
Ie linee devono essere tutte invalidate. Se tutti i contatori vengono inizializzati a 0
1
l'algoritmo presentato opera correttamente?
Esercizio 7.15 8i supponga di avere una cache associativa a due vie e si assuma che
i rimpiazzamenti vengano effettuati secondo la tecnica LRU. 8i delinei l'algoritmo per
questo caso particolare e si progetti la logica che 10 realizza.
Esercizio 7.16 8i consideri 1'algoritmo pseudo LRU del Paragrafo 7.2.2. 8i dica sotto
quali coodizioni l'a1goritmo da. risultato diverse ri5petto allo LRU.
Esercizio 7.17 In riferimento all'algoritmo pseudo LRU del Paragraf07.2.2
,
5i pro-
getti la rete coriispondente alla logica di decisione e di aggiornamento dei bit LRU.
Esercizio 7.18 In riferimento al protocollo di coerenza snoopy a invalidaziQne con
scrittura differita, 5i tracci il diagra.rnma di stato della generica linea di cache seguendo
Ie convenzioni e 10 stile del diagrarnma di Figura 7.22, in modo da illustrare Ie attivita
che si svolgono sui bus.
Esercizio 7.19 8i consideri il protocollo snoopy write-once per 1a coerenza della
cache (pagina 320 e seguenti). Si ridisegni il eliagrammaeli stato eli Figura 7.21 secondo
10 stile del diagrarnma eli Figura 7.22, in modo da illustrare Ie attivita che si svolgono
suI bus. Si facciano Ie 5te5se ipotesi che sono state fatte in Figura 7.22.
Esercizio 7.12 Si consideri una cache associativa a 4 vie numerate da 0 a 3. Si
disegni la rete che in riferimento alIa generica posizione IL. in presenza di piu linee
non valide seleziona quella di Dumero d'ordine piu basso. La rete cleve fomire BU 2
bit 1a codifica del numero di via selezionata.
330 Capitola 7
Esercizio 7.13 In riferimento alla Figura 7.6 si aggiunga 1a parte di logica che pre.
senta come j, il DurnerD della via BU chi si eavuto. hit, oppure il contenuto di Sa in caso
di miss e linee valide
,
oppure il numero della via prioritaria non valida, Si supponga
che la cache sia a 4 vie.
EseJ;'cizio 7.11 Si eosservato che l'algoritmo di sostituzione descritto al Paragrafo
7.2.1 DOD opera in modo del tutto casuale. Discutere se, in certe situazioni e per brevi
periodi, l'algoritmo puo avere un comportamento deterministico. Indicare in questa
caso qllal ePordine eli sostituzione.
I
I
I
I
l
I
\
I
I

I
I \

.J
I
1
I

I
\
\\ .
I.
1
\
!

1
I
1
)
333
(8.1)
MEMORIA
Ogni membra <Ii M
1
indirl:z:zo
di
memoria
La memoria virtuale
Dl TRADUZI0NE
f:V->MU0
tabella
T
V
11 i I
V
indiriz:zo
d.
programma
j.. MECCANISMO
CPU
Una funzione di mappatura 0 di traduzione degli in:dirizzi, che, a ogni istante di
tempo, mappa un indirizzo v E V su M:
La spazio di memoria, indicato c,on M = {O,l,2,... ,m -I},
costituisce un indirizzo fisico,
Figura 8.1 Meccanismo di traduzione degli indirizzi. L'indirizzo tJ generato darla CPU
viene tradotto nell'indirizzo fisico i. L'indirizzo tJ identifica un oggetto neUo spazio degli
indirizzi del programma; l'indirizzo i identifica 130 posizione in cui l'oggetto estato caricato
in memoria centrale.
Ca.pitolo 8
L
1 Atitolo di curiosita storica vale la pena di ricordare cbe, agli albori della. tecnologia dei calcolatori,
venivano costruiti sistemi di elaborazione con memorie centrali di poche migliaia di posizioni e
l'esecuzione dei programmi pot-eva. procedere solo can it meccanismo degli overlay. Ancora negli
anni sessanta e per la prima parte degli anni settanta, la memoria tipica di up mini calcolatore nOll
superava le 3'2 k parole; i mainframe avevano memorie inferiori aile cent.omila parole
,.f,'
IT' ..
$-,"'- -
;.... .
.

-,... . ,- ,
0;
""i'Ij,
fll:....l
,
:,,;/- -, ' ..
',.,r.>:..;.,.-
"

I
f
'.\' , "'..,:
,e'" '.,. , Ii Ii d' dall b" d -
segments. Viene inoltre usato un terZ? se . c e . a com lOazlOne el
,.;::;,1'" due consistente nell'impiegare segmentl e dlV1dere questl m pagme [FM87], [JM98bj,
','.. -,:,.;. -,. ,
[JM98a], [M,M90],
'" Per trattare la memoria virtuale conviene rifarsi a queste tre astrazioni.
r, ... .:,f" '
Pa:'so ve,ngono memonzzafi i-,: di . " La spazio degli indirizzi del programma P, indicato con V . {VO,Vl ,. , _,vn;-d- Gli
POl lettl dal pasSl che seguono. Una tlplca .dt indirizzi generati dal programma vengono detti indinzzl VlrtUali, avvero rn.dinzzl
do .questo schema e da ?ompilaton e tra:ctutton: gh .. . . logici.
sohtamente operano III due pasSI (it pnmo passo costrUlsce la tavola del slmboli,
it secondo genera il codice), mentre i compilatori possono prevedere pili di due I. ,'..")';:;;,;th"" ...
passi, a seconda del grado di ottimizzaziane che mirana a raggiungere. "'.
."'-"
. '" -.., . '''''1;.", ' .
.. I. .
2. Strutturare it programma iuarti, dette overlay, e stabilire preliminarmente a.lli!Ji __ :",
parti saranno presenti memoria e cui ,
r I cancate 10 tern 1 success}v} dalla m mona sa 10 ,
cia. nco r a ,In questa casa ne,l de! ; 'i.',' ,
programma Ie opportune lstruzlOm p:r dare modo allmker ,di. "'.
overlay al momento opportuno. Ovviamente esempre posslbIle che Sl nchleda la ," , La funzlOne f e defimta come.
creazione di file di appoggio per contenere i dati generati nel corso dell'esecuzione . { " all" dir' - 'M all I ' ,
del pro aroma , _ 1. se all'lstante t l'oggetto III lZZO v 5,1 trova m a ocazlOne t-
gr . . f(v,t) - 0 se all'istante t l'oggetto all'indirizzo v non si trova in M
Con Ie tecniche sopra descritte la responsabilita dell'adattamento del programma ." . , ' . . .
ai limiti della memoria lasciata al Esse non, '. ". In prat1c1, tra 11 processore e 130 Vlene.lDte.rposto
consentono alcuna portabihta.: II programma compllato e suddlVISO 10 Job step 0 .. per r.nappare V SU, M, corne schematlZzato lD Figura .8.1 . 1
overlay per la macchina X richiede il riposizionamentq delle istruzioni che determinano ,: dl v non .SI centrale (esso ?eve ill
dei differenti passi 0 il carica-mento dei differenti overlay e la necessaria auslhana); 11 all una condlZlone (detta df fault),
ricompilazione, per poterlo eseguire sulla maccruna Y con minor capacita di memorial, '" il slStema, a tnterr,ompe.re 1 programma P, ache 1ou,etto
, a memoria consentono r mi i1 cui s .. dl mdmzzo v non Vlene cancato In memona, con 11 conseguente agglOrnamento dl f,
d S &ZIO e a mona fislca, rna In modo de tutta traspa,:, 'I '.
.roJte ai pr grammatore neve preoccuparsl e a dimension ':"..p, ',..
del progr,amma, essendo solo capaci,ta. di
1a macchma e non dal1a dimenSlOne della memOria effettIvamente dlspomblle. Dl
i portabili, senza alcun intervento, su macchine ..
dIfferentl capaclta dl memona [Den70]. [Den71]. . ..;<
La gestione della memoria virtuale si rira al principio localita. spaziale e .'
rale, principio che suggerisce di tenere in memoria centrale solo Ie parti di programma ::;;f/..:U:';
che sono prossime - spazialmente e ternporalmente - all'istruzione in esecuzione e ai ::,;-l@';...
dati event:ralmente E previsto che, vengono automatica-
mente cancate Ie partI di programma non presentI In memOrta centrale, prelevandole :
dalla memoria di livello inferiore, i discbi, dove risiedono in modo permanente.
Cia comporta un'apportuna suddivisione del programma in blocchi. Esistono due '.
scherni fondamentali: it primo si basa sull'impiego di blocchi di memoria di dimensione )i}J[it i;;r:f:t.':'.
fissa, detti pagine, it secondo sull'impiego di blocchi di dimensione variabile, detti
':>'hf.",",

. ..,.'..,"
.....,.. '. '
",i
"":Jl:"" .'" 'r
-',,", ",' ,,':,,:.,
">.
':
,{,+;:'jf :. ,; ... ,'
'fJ"

., :"",iQ' ..:!I. :.
,,1 ,'" .,..... .'
,'"... .t'.
332
due tecniche fondamentali,
I
1
I

I
\
\\ .
I.
1
\
!

1
I
1
)
333
(8.1)
MEMORIA
Ogni membra <Ii M
1
indirl:z:zo
di
memoria
La memoria virtuale
Dl TRADUZI0NE
f:V->MU0
tabella
T
V
11 i I
V
indiriz:zo
d.
programma
j.. MECCANISMO
CPU
Una funzione di mappatura 0 di traduzione degli in:dirizzi, che, a ogni istante di
tempo, mappa un indirizzo v E V su M:
La spazio di memoria, indicato c,on M = {O,l,2,... ,m -I},
costituisce un indirizzo fisico,
Figura 8.1 Meccanismo di traduzione degli indirizzi. L'indirizzo tJ generato darla CPU
viene tradotto nell'indirizzo fisico i. L'indirizzo tJ identifica un oggetto neUo spazio degli
indirizzi del programma; l'indirizzo i identifica 130 posizione in cui l'oggetto estato caricato
in memoria centrale.
Ca.pitolo 8
L
1 Atitolo di curiosita storica vale la pena di ricordare cbe, agli albori della. tecnologia dei calcolatori,
venivano costruiti sistemi di elaborazione con memorie centrali di poche migliaia di posizioni e
l'esecuzione dei programmi pot-eva. procedere solo can it meccanismo degli overlay. Ancora negli
anni sessanta e per la prima parte degli anni settanta, la memoria tipica di up mini calcolatore nOll
superava le 3'2 k parole; i mainframe avevano memorie inferiori aile cent.omila parole
,.f,'
IT' ..
$-,"'- -
;.... .
.

-,... . ,- ,
0;
""i'Ij,
fll:....l
,
:,,;/- -, ' ..
',.,r.>:..;.,.-
"

I
f
'.\' , "'..,:
,e'" '.,. , Ii Ii d' dall b" d -
segments. Viene inoltre usato un terZ? se . c e . a com lOazlOne el
,.;::;,1'" due consistente nell'impiegare segmentl e dlV1dere questl m pagme [FM87], [JM98bj,
','.. -,:,.;. -,. ,
[JM98a], [M,M90],
'" Per trattare la memoria virtuale conviene rifarsi a queste tre astrazioni.
r, ... .:,f" '
Pa:'so ve,ngono memonzzafi i-,: di . " La spazio degli indirizzi del programma P, indicato con V . {VO,Vl ,. , _,vn;-d- Gli
POl lettl dal pasSl che seguono. Una tlplca .dt indirizzi generati dal programma vengono detti indinzzl VlrtUali, avvero rn.dinzzl
do .questo schema e da ?ompilaton e tra:ctutton: gh .. . . logici.
sohtamente operano III due pasSI (it pnmo passo costrUlsce la tavola del slmboli,
it secondo genera il codice), mentre i compilatori possono prevedere pili di due I. ,'..")';:;;,;th"" ...
passi, a seconda del grado di ottimizzaziane che mirana a raggiungere. "'.
."'-"
. '" -.., . '''''1;.", ' .
.. I. .
2. Strutturare it programma iuarti, dette overlay, e stabilire preliminarmente a.lli!Ji __ :",
parti saranno presenti memoria e cui ,
r I cancate 10 tern 1 success}v} dalla m mona sa 10 ,
cia. nco r a ,In questa casa ne,l de! ; 'i.',' ,
programma Ie opportune lstruzlOm p:r dare modo allmker ,di. "'.
overlay al momento opportuno. Ovviamente esempre posslbIle che Sl nchleda la ," , La funzlOne f e defimta come.
creazione di file di appoggio per contenere i dati generati nel corso dell'esecuzione . { " all" dir' - 'M all I ' ,
del pro aroma , _ 1. se all'lstante t l'oggetto III lZZO v 5,1 trova m a ocazlOne t-
gr . . f(v,t) - 0 se all'istante t l'oggetto all'indirizzo v non si trova in M
Con Ie tecniche sopra descritte la responsabilita dell'adattamento del programma ." . , ' . . .
ai limiti della memoria lasciata al Esse non, '. ". In prat1c1, tra 11 processore e 130 Vlene.lDte.rposto
consentono alcuna portabihta.: II programma compllato e suddlVISO 10 Job step 0 .. per r.nappare V SU, M, corne schematlZzato lD Figura .8.1 . 1
overlay per la macchina X richiede il riposizionamentq delle istruzioni che determinano ,: dl v non .SI centrale (esso ?eve ill
dei differenti passi 0 il carica-mento dei differenti overlay e la necessaria auslhana); 11 all una condlZlone (detta df fault),
ricompilazione, per poterlo eseguire sulla maccruna Y con minor capacita di memorial, '" il slStema, a tnterr,ompe.re 1 programma P, ache 1ou,etto
, a memoria consentono r mi i1 cui s .. dl mdmzzo v non Vlene cancato In memona, con 11 conseguente agglOrnamento dl f,
d S &ZIO e a mona fislca, rna In modo de tutta traspa,:, 'I '.
.roJte ai pr grammatore neve preoccuparsl e a dimension ':"..p, ',..
del progr,amma, essendo solo capaci,ta. di
1a macchma e non dal1a dimenSlOne della memOria effettIvamente dlspomblle. Dl
i portabili, senza alcun intervento, su macchine ..
dIfferentl capaclta dl memona [Den70]. [Den71]. . ..;<
La gestione della memoria virtuale si rira al principio localita. spaziale e .'
rale, principio che suggerisce di tenere in memoria centrale solo Ie parti di programma ::;;f/..:U:';
che sono prossime - spazialmente e ternporalmente - all'istruzione in esecuzione e ai ::,;-l@';...
dati event:ralmente E previsto che, vengono automatica-
mente cancate Ie partI di programma non presentI In memOrta centrale, prelevandole :
dalla memoria di livello inferiore, i discbi, dove risiedono in modo permanente.
Cia comporta un'apportuna suddivisione del programma in blocchi. Esistono due '.
scherni fondamentali: it primo si basa sull'impiego di blocchi di memoria di dimensione )i}J[it i;;r:f:t.':'.
fissa, detti pagine, it secondo sull'impiego di blocchi di dimensione variabile, detti
':>'h
f
.",",

. ..,.'..,"
.....,.. '. '
",i
"":Jl:"" .'" 'r
-',,", ",' ,,':,,:.,
">.
':
,{,+;:'jf :. ,; ... ,'
'fJ"

., :"",iQ' ..:!I. :.
,,1 ,'" .,..... .'
,'"... .t'.
332
due tecniche fondamentali,
SPAZIO
DI
MEMORlA
/
Paalna
lisle.. 0
PO

Paalna
t\>lle .. 1
Pi
V
Pallna
Hille... 2
P2
PaalnD.
lillie.. 3
P3
Paain..
hsielL 4
P4
Paalna
Iisiea 5
Paal na
rblcfl 8
Paaln"
nste... 7
SPAZIO
DEGLl
INDIRI2Z1
Un campo (A) che indica se la pagina estata indirizzata.
Di soli to questa campo edi WI bit. n suo stato viep.e periodicarnente letto dal
sistema operativo e riazcerato. In tal modo il sistema operativo puc tenere 1a
statistica dei riferimenti alle singole pagine e utilizzare tale statistica per decidere
quale pagina sacrificare Del caso in cui, in presenza di un page fault tutte Ie
pagine di memoria siano occupate. La scelta della pagina deve essere basata. su
una politica di nmpiazzamento. Una politica molto usata equella denominata
Capitola 8
2Un processo e un'entita dinamica corrispondente a una attivita ch.e 5i svolge nel tempo e pub
corrispondere all'esecuzione di uno 0 piu programmi in successione temporale, come, pure, da. uno
stesso programma. pUll derivare I'esecuzione di pili processi. II concetto di processo e piil adegua.to
di quello di programma a descrivere la dinamica di sistemi in cui si svolgono attiviU. in parallelo,
334
'.
'Rh
,R',;;

La memoria virtuale 335
';"""" '
..".." ..
i. /.1:,; ': '
, i'."- _
-'-, .'
,'-"1 "", ffi >'J" "

. .E imp0r.tante che 10 spazio degli V eindipendente dalle
Slom e da ?gnl alt,ra assunzlOll: In alt.re parole, ha solo VlSlone
V, virtualmente ilhnutato. n p:atlco edetermmato dalla capacita.'
di mdirizzamento della CPUI ovvero dalJa dimenslOne della memoria ausiliaria. < -, .Iilt' .
'='1'1'/":<''''' , .
.' !f"
Come osservato, motivazione per la memoria virtuale ela protezione
tra processl.ctask) ....
In un sistema a proCesSI concorrentI, SI pone II problema dl fomire al program- '.,1
quale non compaia 1a nozione di condivisione della memoria
e 51 nchlede che il slDgolo prpcesso non venga danneggiato dall'esecuzione degli altri '(it
processi attivi in memoria. A tal fine, il sistema deve simulare uno spazio di indi- '
rizzamento virtuale per ciascun task, in modo che il task veda un proprio spazio
tutto per se. Gli spazi di ond.e
eVltare che un processo SpazlO degli dl altn Figura 8.2 Sche.ma del m.eee:mi5llio di della. virtu<!,le p.a.gin.ata..
Dovrebbe perc essere consentlto llmplego ill comune (sharing) dl eventuah Identlcl istante di t.empo III memona S1 t.rova un sottomSleme dell'mSJeme delle pagIne, ill CUI e lOgl-
tratti di codice da parte di pili processi, in modo da evitare inutile spreco di memoria..,.. .. camente il S.e viene generato un indirizzo corrispondente a. uD: bloceo
.'. :': ,presente In memona. 51. ha un fault: Esso scatena una sequenza
:,' ' il cui effetto e memona il cornsp,ondente blocco daUa memona dt massa,
8 2 S
t . d" . . ..;;;<,.'.:,. Lo scheD1:a mette eVldenza che, delle cmque pagme POI PI, P2, P3 e P4, solo P.I non e
. IS eml 1 pagloazlone presente III memona. centrale. PO, P2, P3 e P4 sono mappate su aree non necessanamente
.'."'::IOl!' .
cootlgue.
". 'U'jj' ,I, '
Can la paginazione 10 spazio degJi indirizzi viene suddiviso in sotto-unita. di dimensione .:
fissa, chiamate pagine logiche. La memoria fisica viene a sua volta vista come '1" d' , d II 'fi ' 'd t L" d" fi' , tt to te
. ... ... . ....... . ;i,t\\..:.,., m lnzzO e a pagma sica cornspon en e. III IIlZZ0 SICO 0 enu conca-
In un numero di pagme fislche (page frames) della stessa dunenslone delle pagme ". . d I' t t ' I" d' , fi' d' U ' ltd
10
'ch L 'loch t 11 'fi ' h ; .-I"" ;1\. " nan 0 0 splazzamen 0 en ro pagma con In lTIZZO SICO e a pagma pre eva 0 a
gI e. e pagme ogI e vengono mappa e BU e pagme SIC e. . :.PMT
In Figura8.2 viene schematizzato il meccanismo della memoria virtuale in riferi--.. ":' .. ,.... ' U' d 'tt d" t' I t I" dir' d 11 .. fi'
t all
. . . - n escn are 1 pagilla non con lene so amen e lD lZZO e a paglDa Sica,
men 0 a a lDazlOne. ,'. '.'\\ .L'\;..., . .. ....... ..
p g m.a anche una sene dl mformazlOlll utili .alla della memOria, 10
il compilatore traduce il programma in uno spazio di indirizzi virtuali lineare, _.'.;;W' sono raccolte campo .Prot . possono.essere dIverse
(praticamente) illimitato; . ,.)1:' m numero da Sistema a SIstema. Per il Sl aile
componentl Plu comunemente usate che comprendono Ie seguentl informazlom.
'1 U b't (P) h d' I " t ' '
. " . n Ice Ice se a pagma l;: 0 no presen e 10 memona.
Ovvi motivi di efficienza suggeriscono che Ie pagine siano della stessa dimensione .. ," Facendo riferirnento alia Figura8.3
1
il descrittore della pagina Pi conterra Pin-
dei blocchi trasferiti da disco (ovvero dei multipli osottomultipli). ,}1" dicazione che la pagina non ein memoria. In questo caso, tutti i rimanenti bit
Ai .fini della traduzione
l
un viene cOffi.e com- di Essi pos:ono essere utilizzati per contenere
posta dl due campI che contengono nspettlVamente i1 numero della pagma lOgJ.ca e 10 l'mdlflzzo della pagma loglca sulla memona dl massa.
scostameoto entro pagina, come schematizzato in Figura 8.3. La traduzione avviene . .. Quando viene generato un indirizzo interno a una pagina non presente in memo-
attraverso una tabella di mappatura delle pagine, indicata nel seguito come PMT (da ria centrale, si ha un page fault: un'interruzione che viene raccolta dal sistema
Page-Map Table)} che fornisce, in corrispondenza di ciascun numero di pagina logica operativo che provvede a1 caricamento della p'agina dalla memoria secondaria e
(VPN, Virtual Page Number), il numero di pagina fisica (RPN), ovvero l'indirizzo all'aggiornarnento del bit di presenza.
prima pagina nella memoria numero di pagina .;.;\:j:.
lOgIca usato come mdlce m PMT. Un elemento dl PMT Vlene denotato com 2.
PTE (da Page Table Element); esso costituisce un descrittore di pagina e contiene
.
'.. ::'\t: .
..
" .'d):. '
'I' ''Jl.' -
, ,.
.'
.,

".. 't'
';;,1
:v' t .
"
.,,.,
'1,;"
'. :":.:; .j;' .1!:. t
." ..
,.. /' "
I
\
(
\
\
\
J
I
I
\
I
1
I
)

,
,
SPAZIO
DI
MEMORlA
/
Paalna
lisle.. 0
PO

Paalna
t\>lle .. 1
Pi
V
Pallna
Hille... 2
P2
PaalnD.
lillie.. 3
P3
Paain..
hsielL 4
P4
Paalna
Iisiea 5
Paal na
rblcfl 8
Paaln"
nste... 7
SPAZIO
DEGLl
INDIRI2Z1
Un campo (A) che indica se la pagina estata indirizzata.
Di soli to questa campo edi WI bit. n suo stato viep.e periodicarnente letto dal
sistema operativo e riazcerato. In tal modo il sistema operativo puc tenere 1a
statistica dei riferimenti alle singole pagine e utilizzare tale statistica per decidere
quale pagina sacrificare Del caso in cui, in presenza di un page fault tutte Ie
pagine di memoria siano occupate. La scelta della pagina deve essere basata. su
una politica di nmpiazzamento. Una politica molto usata equella denominata
Capitola 8
2Un processo e un'entita dinamica corrispondente a una attivita ch.e 5i svolge nel tempo e pub
corrispondere all'esecuzione di uno 0 piu programmi in successione temporale, come, pure, da. uno
stesso programma. pUll derivare I'esecuzione di pili processi. II concetto di processo e piil adegua.to
di quello di programma a descrivere la dinamica di sistemi in cui si svolgono attiviU. in parallelo,
334
'.
'Rh
,R',;;

La memoria virtuale 335
';"""" '
..".." ..
i. /.1:,; ': '
, i'."- _
-'-, .'
,'-"1 "", ffi >'J" "

. .E imp0r.tante che 10 spazio degli V eindipendente dalle
Slom e da ?gnl alt,ra assunzlOll: In alt.re parole, ha solo VlSlone
V, virtualmente ilhnutato. n p:atlco edetermmato dalla capacita.'
di mdirizzamento della CPUI ovvero dalJa dimenslOne della memoria ausiliaria. < -, .Iilt' .
'='1'1'/":<''''' , .
.' !f"
Come osservato, motivazione per la memoria virtuale ela protezione
tra processl.ctask) ....
In un sistema a proCesSI concorrentI, SI pone II problema dl fomire al program- '.,1
quale non compaia 1a nozione di condivisione della memoria
e 51 nchlede che il slDgolo prpcesso non venga danneggiato dall'esecuzione degli altri '(it
processi attivi in memoria. A tal fine, il sistema deve simulare uno spazio di indi- '
rizzamento virtuale per ciascun task, in modo che il task veda un proprio spazio
tutto per se. Gli spazi di ond.e
eVltare che un processo SpazlO degli dl altn Figura 8.2 Sche.ma del m.eee:mi5llio di della. virtu<!,le p.a.gin.ata..
Dovrebbe perc essere consentlto llmplego ill comune (sharing) dl eventuah Identlcl istante di t.empo III memona S1 t.rova un sottomSleme dell'mSJeme delle pagIne, ill CUI e lOgl-
tratti di codice da parte di pili processi, in modo da evitare inutile spreco di memoria..,.. .. camente il S.e viene generato un indirizzo corrispondente a. uD: bloceo
.'. :': ,presente In memona. 51. ha un fault: Esso scatena una sequenza
:,' ' il cui effetto e memona il cornsp,ondente blocco daUa memona dt massa,
8 2 S
t . d" . . ..;;;<,.'.:,. Lo scheD1:a mette eVldenza che, delle cmque pagme POI PI, P2, P3 e P4, solo P.I non e
. IS eml 1 pagloazlone presente III memona. centrale. PO, P2, P3 e P4 sono mappate su aree non necessanamente
.'."'::IOl!' .
cootlgue.
". 'U'jj' ,I, '
Can la paginazione 10 spazio degJi indirizzi viene suddiviso in sotto-unita. di dimensione .:
fissa, chiamate pagine logiche. La memoria fisica viene a sua volta vista come '1" d' , d II 'fi ' 'd t L" d" fi' , tt to te
. ... ... . ....... . ;i,t\\..:.,., m lnzzO e a pagma sica cornspon en e. III IIlZZ0 SICO 0 enu conca-
In un numero di pagme fislche (page frames) della stessa dunenslone delle pagme ". . d I' t t ' I" d' , fi' d' U ' ltd
10
'ch L 'loch t 11 'fi ' h ; .-I"" ;1\. " nan 0 0 splazzamen 0 en ro pagma con In lTIZZO SICO e a pagma pre eva 0 a
gI e. e pagme ogI e vengono mappa e BU e pagme SIC e. . :.PMT
In Figura8.2 viene schematizzato il meccanismo della memoria virtuale in riferi--.. ":' .. ,.... ' U' d 'tt d" t' I t I" dir' d 11 .. fi'
t all
. . . - n escn are 1 pagilla non con lene so amen e lD lZZO e a paglDa Sica,
men 0 a a lDazlOne. ,'. '.'\\ .L'\;..., . .. ....... ..
p g m.a anche una sene dl mformazlOlll utili .alla della memOria, 10
il compilatore traduce il programma in uno spazio di indirizzi virtuali lineare, _.'.;;W' sono raccolte campo .Prot . possono.essere dIverse
(praticamente) illimitato; . ,.)1:' m numero da Sistema a SIstema. Per il Sl aile
componentl Plu comunemente usate che comprendono Ie seguentl informazlom.
'1 U b't (P) h d' I " t ' '
. " . n Ice Ice se a pagma l;: 0 no presen e 10 memona.
Ovvi motivi di efficienza suggeriscono che Ie pagine siano della stessa dimensione .. ," Facendo riferirnento alia Figura8.3
1
il descrittore della pagina Pi conterra Pin-
dei blocchi trasferiti da disco (ovvero dei multipli osottomultipli). ,}1" dicazione che la pagina non ein memoria. In questo caso, tutti i rimanenti bit
Ai .fini della traduzione
l
un viene cOffi.e com- di Essi pos:ono essere utilizzati per contenere
posta dl due campI che contengono nspettlVamente i1 numero della pagma lOgJ.ca e 10 l'mdlflzzo della pagma loglca sulla memona dl massa.
scostameoto entro pagina, come schematizzato in Figura 8.3. La traduzione avviene . .. Quando viene generato un indirizzo interno a una pagina non presente in memo-
attraverso una tabella di mappatura delle pagine, indicata nel seguito come PMT (da ria centrale, si ha un page fault: un'interruzione che viene raccolta dal sistema
Page-Map Table)} che fornisce, in corrispondenza di ciascun numero di pagina logica operativo che provvede a1 caricamento della p'agina dalla memoria secondaria e
(VPN, Virtual Page Number), il numero di pagina fisica (RPN), ovvero l'indirizzo all'aggiornarnento del bit di presenza.
prima pagina nella memoria numero di pagina .;.;\:j:.
lOgIca usato come mdlce m PMT. Un elemento dl PMT Vlene denotato com 2.
PTE (da Page Table Element); esso costituisce un descrittore di pagina e contiene
.
'.. ::'\t: .
..
" .'d):. '
'I' ''Jl.' -
, ,.
.'
.,

".. 't'
';;,1
:v' t .
"
.,,.,
'1,;"
'. :":.:; .j;' .1!:. t
." ..
,.. /' "
I
\
(
\
\
\
J
I
I
\
I
1
I
)

,
,
)
!
1
I
\
J
\
i
I
I
\
I
I
,
I
I
)
b) il tempo di effettivo trasferimento del blocco di dati.
a) il tempo di latenz.a per posizionare la testina di lettura suI primo data del
blocco che viene letto
4
i
L si di rna atura delle a' e eclirettamente propor-
zio mero' dunque c'e un minor spreco . me.m.oria con pagme pili
grandi. Per il medesimo mottvo, e pagme gran (favoriscono U!iPiup"iccofOTtB
(Cfr. 8.2.2).
Eo evidente che il peso del tempo di latenza erelativamente minore con pagine
di grandi dimensioni.
1 meccanismi di protezione sono di per se un motivo per la memoria virtuale e
verranno discussi ampiamente nel seguito.
Le pagine di grande d' . fie introducono u 0 dl memoria dovu-
COSI etta frammentazione interna, ovvero alle parti di non usate.
SCcBnsideIi un in cui ciascu rocesso estru urato in tre segmentl co:
dice, dati e stack). Mediamente l'ultima pagina di ciascun segmento risultera per
meta vuota, con uno spreco complessivo di 1,5 pagine (per processo). Si intuisce
che can le dimensioni attuali delle memorie centra.li il problema. non ba grande
rilevanza, anche se nel sistema sono attivi svariati processi. Per esempio: assu-
mendo pagine di 4 kbyte, una memoria di 64 Mbyte e 40 processi attivi, 10 spreco
sarebbe pari a 1,5 x 4 x 40 = 240kbyte, pari alJo 0,4% della memoria centrale.
Se si ammette che il sistema consenta la condlvisione tra processi di procedure
e dati, allora, poiche tutte Ie procedure contenute in una certa pagina hanno
gli stessi diritti di accesso, procedure con diritti diversi devono essere siste-
mate in pagine diverse (allimite un procedura a pagina), con ulteriore, possibile
frammentazione interna,
Indlrluo ""Ileo
H. di PrWNi
Spl.u"-"'-en\"
10C;"o N nella ",In"
RP
,
lnlfirizzo
PMT

JA5{ Proy II, dl,
nile. R N)
V

,ccV
N. dl p".loa
!pl,,:z;:cnto
p
,
M
(RPM) 0011" In..
lndlrluo
4. Un' campo (ACC) che identifica i diritti di accesso.
Sono da prevedere dei mecca.i:tismi di proteziene e di centrella degli accessi all'in-
formazione contenuta ,nelle pagine. Per esempio, cleve essere pessibile definire
una pagina come non scrivibile dai normali prograrnmi di utentej oppure che una
pagina edi pertinenza e.sclusiva di un dato processo, mentre un'altra puo essere
letta da tutti i processi.
'/ "'"
")(
.
w" .
;,"
"I' .' ,
:
SS6 C
't 1 8 !Qf.if.?
apl 00 il
'iIjjJ'"'''''',.. '. t.. , .
't'. '" .; --.
.",.... " ,
'.iii' "',
"II
"r; 'I' .
':"':':. .
,..", ..-

.\.,
-. '" '"
"',"
,f."'. '.'

... , ",$ . ".
I" .-'
",,,,,. '1',' ",
.,)t 8,2.1 Dimensione della pagina

scelta della dimensione delia pagina non ebanale per via delle seguenti considera-
." &! .. . .
":-:,L:.l4: i :, ZlOnl.
.. , "I'" .,
'; ':'
- ".'
Una pagina grande tende a sfruttare meglio Ie caratteristiche dei magnetici
,
,,,\:i>'it'f: infatti il tempo richiesto per trasferire una pagina dalla memoria dl massa
3
edato
',....... . .
", dd et
, ' j a ue compon n I:
. ';',;'7,- ",:, , .
, ' .., flll'" '", ,
.!f ...
, . .
;, ..,7_,;,.'
" .; . ;:,.
. ",,,f'
'"''':'/'''
Figura 8.3 ,un indirizzo in indirizzo fisico 1a. tabella di '.
patura delle pagme. L'mdlnZzo della tabella di mappatura delle pagIne (PMT) econtenuto, "pl;;.,
in un apposito registrc di CPU, qui indicato come RP (Root Pointer), La parte alta . '.
ri.zzo fcroisee .10 scostame?-ta in P":'iT; Un in PMT (:T:e), oltre a1 numero : _,
dl pag,ma fistca,. conbene .&n:che (11 campo C?D, Prot, da ... 11 ,"
protezlOue), cornspondentl at campt qUI esemphficatl can P, A, M e ACC, dl CUI 51 parla .. i .. , ..
testa. . :, ',. }ti:;i ' ,
\ ,'I"q;;t,.
-1',1', [1',,'(, '
" ,,,<;t ".,I.;l." . ',.'
' ...... , I",' . '
. ...
Used),. che preve?e della
da pm tempo. Dl questa e dl altre tecDlche dl nmp13zzamento SI parla pm avantl
(Cfr S8 6 2)
. :':!;;;;' .
. .. .
.. .1.."11'''':)1''''' '
3. Un bit (M) che indica se la pagina estata modificata. , ..
E evidente se durante.la permanenza in memoria centrale .i1' ifk1t\'i-'
suo contenuto e stato operaztolll dt enecessarIo,
cO?la nella dt 8, tratta dunque
di coplare in memona mass.a il della che '. ':
usata per un'altra pagma 10gIca. Se mvece 1a pagma non e stata modtficata, It
in stessa ::ornice una differente pagina logica,
10 ausihana. '. ;' ..
d1 avvenuta Vlene messo a 0 quando ecancata
m centra}e e VIene a su quella pagma vie.ne
una. scnttura. n operativo deCIde m base a questo se la e 0 no da ":;:i:t
coplare sulla memona dt massa.
. ". :til
,lJI: .. '
'.',0;. ;
, .{'.".
,";',.'
", , 'f,' , ",
,.,,:, 'J' ',' ,
;jt'. . . 3Si ipotizza., anche lle cia non e necessario, che Ie pagine abbiano la stessa dimensione dei blocchi
",<;;. .... )-, d' I' f . 11 . d' chi
secon 0 CUI memorlzzata in ormazlone su e memone a 18 I.
" < 4A sua volta questa tempo e la somma del tempo richiesto a posi2ionare 1a temina sulla tra.ccia '
" (.1eek time) e del tempo cbe intercorTe daJ momenta in cui la testina ha ra.ggiunto la posizione in
:,:.. sensa e il momento in cui p,a.'lsa il primo a. data del blacco sotta la te8tinaj mediamente,
, quest'ultima COmponente temporale corrisponde al tempo di una llemirotazione dell'a1bero del disco.
. .,.. .
. ?,_ ,7,,:;
. ,-,I 1 ,"
.
)
!
1
I
\
J
\
i
I
I
\
I
I
,
I
I
)
b) il tempo di effettivo trasferimento del blocco di dati.
a) il tempo di latenz.a per posizionare la testina di lettura suI primo data del
blocco che viene letto
4
i
L si di rna atura delle a' e eclirettamente propor-
zio mero' dunque c'e un minor spreco . me.m.oria con pagme pili
grandi. Per il medesimo mottvo, e pagme gran (favoriscono U!iPiup"iccofOTtB
(Cfr. 8.2.2).
Eo evidente che il peso del tempo di latenza erelativamente minore con pagine
di grandi dimensioni.
1 meccanismi di protezione sono di per se un motivo per la memoria virtuale e
verranno discussi ampiamente nel seguito.
Le pagine di grande d' . fie introducono u 0 dl memoria dovu-
COSI etta frammentazione interna, ovvero alle parti di non usate.
SCcBnsideIi un in cui ciascu rocesso estru urato in tre segmentl co:
dice, dati e stack). Mediamente l'ultima pagina di ciascun segmento risultera per
meta vuota, con uno spreco complessivo di 1,5 pagine (per processo). Si intuisce
che can le dimensioni attuali delle memorie centra.li il problema. non ba grande
rilevanza, anche se nel sistema sono attivi svariati processi. Per esempio: assu-
mendo pagine di 4 kbyte, una memoria di 64 Mbyte e 40 processi attivi, 10 spreco
sarebbe pari a 1,5 x 4 x 40 = 240kbyte, pari alJo 0,4% della memoria centrale.
Se si ammette che il sistema consenta la condlvisione tra processi di procedure
e dati, allora, poiche tutte Ie procedure contenute in una certa pagina hanno
gli stessi diritti di accesso, procedure con diritti diversi devono essere siste-
mate in pagine diverse (allimite un procedura a pagina), con ulteriore, possibile
frammentazione interna,
Indlrluo ""Ileo
H. di PrWNi
Spl.u"-"'-en\"
10C;"o N nella ",In"
RP
,
lnlfirizzo
PMT

JA5{ Proy II, dl,
nile. R N)
V

,ccV
N. dl p".loa
!pl,,:z;:cnto
p
,
M
(RPM) 0011" In..
lndlrluo
4. Un' campo (ACC) che identifica i diritti di accesso.
Sono da prevedere dei mecca.i:tismi di proteziene e di centrella degli accessi all'in-
formazione contenuta ,nelle pagine. Per esempio, cleve essere pessibile definire
una pagina come non scrivibile dai normali prograrnmi di utentej oppure che una
pagina edi pertinenza e.sclusiva di un dato processo, mentre un'altra puo essere
letta da tutti i processi.
'/ "'"
")(
.
w" .
;,"
"I' .' ,
:
SS6 C
't 1 8 !Qf.if.?
apl 00 il
'iIjjJ'"'''''',.. '. t.. , .
't'. '" .; --.
.",.... " ,
'.iii' "',
"II
"r; 'I' .
':"':':. .
,..", ..-

.\.,
-. '" '"
"',"
,f."'. '.'

... , ",$ . ".
I" .-'
",,,,,. '1',' ",
.,)t 8,2.1 Dimensione della pagina

scelta della dimensione delia pagina non ebanale per via delle seguenti considera-
." &! .. . .
":-:,L:.l4: i :, ZlOnl.
.. , "I'" .,
'; ':'
- ".'
Una pagina grande tende a sfruttare meglio Ie caratteristiche dei magnetici
,
,,,\:i>'it'f: infatti il tempo richiesto per trasferire una pagina dalla memoria dl massa
3
edato
',....... . .
", dd et
, ' j a ue compon n I:
. ';',;'7,- ",:, , .
, ' .., flll'" '", ,
.!f ...
, . .
;, ..,7_,;,.'
" .; . ;:,.
. ",,,f'
'"''':'/'''
Figura 8.3 ,un indirizzo in indirizzo fisico 1a. tabella di '.
patura delle pagme. L'mdlnZzo della tabella di mappatura delle pagIne (PMT) econtenuto, "pl;;.,
in un apposito registrc di CPU, qui indicato come RP (Root Pointer), La parte alta . '.
ri.zzo fcroisee .10 scostame?-ta in P":'iT; Un in PMT (:T:e), oltre a1 numero : _,
dl pag,ma fistca,. conbene .&n:che (11 campo C?D, Prot, da ... 11 ,"
protezlOue), cornspondentl at campt qUI esemphficatl can P, A, M e ACC, dl CUI 51 parla .. i .. , ..
testa. . :, ',. }ti:;i ' ,
\ ,'I"q;;t,.
-1',1', [1',,'(, '
" ,,,<;t ".,I.;l." . ',.'
' ...... , I",' . '
. ...
Used),. che preve?e della
da pm tempo. Dl questa e dl altre tecDlche dl nmp13zzamento SI parla pm avantl
(Cfr S8 6 2)
. :':!;;;;' .
. .. .
.. .1.."11'''':)1''''' '
3. Un bit (M) che indica se la pagina estata modificata. , ..
E evidente se durante.la permanenza in memoria centrale .i1' ifk1t\'i-'
suo contenuto e stato operaztolll dt enecessarIo,
cO?la nella dt 8, tratta dunque
di coplare in memona mass.a il della che '. ':
usata per un'altra pagma 10gIca. Se mvece 1a pagma non e stata modtficata, It
in stessa ::ornice una differente pagina logica,
10 ausihana. '. ;' ..
d1 avvenuta Vlene messo a 0 quando ecancata
m centra}e e VIene a su quella pagma vie.ne
una. scnttura. n operativo deCIde m base a questo se la e 0 no da ":;:i:t
coplare sulla memona dt massa.
. ". :til
,lJI: .. '
'.',0;. ;
, .{'.".
,";',.'
", , 'f,' , ",
,.,,:, 'J' ',' ,
;jt'. . . 3Si ipotizza., anche lle cia non e necessario, che Ie pagine abbiano la stessa dimensione dei blocchi
",<;;. .... )-, d' I' f . 11 . d' chi
secon 0 CUI memorlzzata in ormazlone su e memone a 18 I.
" < 4A sua volta questa tempo e la somma del tempo richiesto a posi2ionare 1a temina sulla tra.ccia '
" (.1eek time) e del tempo cbe intercorTe daJ momenta in cui la testina ha ra.ggiunto la posizione in
:,:.. sensa e il momento in cui p,a.'lsa il primo a. data del blacco sotta la te8tinaj mediamente,
, quest'ultima COmponente temporale corrisponde al tempo di una llemirotazione dell'a1bero del disco.
. .,.. .
. ?,_ ,7,,:;
. ,-,I 1 ,"
.
- I I
-, \
\ f
numero pagina logica 11 PROT. [BJ nurnero pagina fisica I
TAG DATO
'.
, "'I
\
---------
Capitolo 8
Dimensione di pagina 512 - 8192 byte
Tempo di hit 1 - 10 dcli di ClOCK
Pen . zazione di tault
100.000 - 600.000 citli di clock
Tempo di accesso
100.000 - 500.000 dcli 'di clock
Tempo di trasferimento
10.000 - 100.000 cicli di clock
Tasso di miss
0,00001:70 - 0,00170
Dimensione della memoria e;entrale
4 Mbyte - 2 LiDyte
5Ancbe Ie memorie di massa banno subito i necessari adeguamenti e spesso rendono disponibili
comandi che pennettono di trasferire blocchi di esattamente 4 kbyte.
6In pratica la parte DATO del TL:B corrisponde al conteDuto del descrittore di pagina in PMT
8.2.2 II Translation Lookaside Buffer
La traduzione degli indirizzi attiaverso la PMT ha Peffetto di degradare le prestazioni.
Per esempio, con la PMT di Figura B.3, il numero degli accessi alla memoria 5i rad-
doppia, Net caso di PMT gerarchica (CfL 8,2-4), ogni livelJo nella gerarchia tabellare
introduce un accesso alIa memoria con conseguente degradazione delle prestazioni.
In altre parole, l'interposizione della PMT ha, come minimo, l'effetto eli ridurre di
almeno il 50% la larghezza di banda della memoria. Si tratta di un prezzo troppo alto
che puC> essere evitato, con il semplice impiego di una cache associativa, denominata
Transla ion-Lookaside Bu er TLB , in cui si immagazzinano i descrittori di pagina
usati di recente. vviamente, anc e il TLB ha il suo fondamento nel principio di .
localita. Trattandosi di una (piccola) cache, la ricerca in TLB e, tipicamente
1
pili
veloce di un ordine di grandezza rispetto a un accesso in memoria.
n generico formato di una posizione in TLB eschematizzato in Figura8.4: 1a
parte TAG con"tiene il numero della pagina logica, mentre la parte DATO contiene
il numero della pagina fisica
1
i bit relativi alia protezione, l'indicatore di pagina mo
dilicata ecc.
6
. Questi indicatori devono essere congruenti can quelli della PMT. Se,
.
""i'"
'
,_.,.1-.'
!t".,.
,;,id7!:J' '".: La memoria virtuale 339
.,.,'1,.',..-'
-m"k'r;;;.i "
..;,.;..,.
.. I,h. _.
'I', r;ti',,,:,. .
" W"""
'\!J!
"
J. ','..-'1-
,,11:;1;,-" .
.. ,

, 'Ij;t""

,
, ,,, 1;"'_
, '-1

,.. ,!(,- '-.'
'oil;,;;;"}'.',
.
.. ' Figura 8.4 Formato di un eJemento in TLB. V eit bit di validita, PROT e il campo dei
diritti di accesso, M e l'indicatore di pagina modificata. Potrebbero essere presenti altri
campi oltre, a qu.elli indicati; in particolare nel TAG esser,ci un campo dedicato a
. . ... . . .. ... .. .' : contenere l'ldentlflcatore del processo che sta generando I'mdinzzo, ill modo da poter tenere
Tabe.lla 8.1 del. para:netn a. paglna 5eparati gli spazi dei proce5si (5i veda anche l'osservazione a pagina 342, a conclusione del
tao 81 questl con 1 delle 81 osservi che I'alto ,<-, Para.grafo 8.2.3.
numero eli c1cli di clock persl a segwto di un fault gtushfica l'esecuzlone da. parte del sistema
operativo di complessi algoritmi di rimpiazzamento e di gestione della memoria,
.per pagina m?dificata
1
il bit che in.dica z:nodifica deve
essere assentoj nella pOSlZlOne m TLB che nel descnttore dl pagma m PMT.
Molti 80no atti in passato del.la dimensione delle pagine . In di page che la e caricata in
sulle .prestazlolll del [GTB73]. Nel corso degh stata una progressiva .:'lene C?strUlto.11 rel.atlvo descnttore m PMT; Ie che a costrmre
cres?ta.. Mentre a:nDl era normaJe una pagma dl 512 0 1024 byte, negli ; II dl us.ate per cost.rllIre UD, III TLB. I
anill novanta la dimenslone prefenta e4-8 kbyte
5
. . . ceSSIVI nfenmentl alia pagma SODa nsoltl attraverso II TLB. E posslblle che la pagma,
In molti casi la MMU ein grado di gestire pagine di differenti dimensioni. Per pur restando in memoria, non venga indirizzata per lungo tempo. In questa caso e
esempio la ein di gestire pagine, da 256 byte fino a 1a relativa P?sizione in TLB un'altra pagina.. Un
32kbyte (oVVlamente Ie dimenslOlli mtermedle sono sempre potenze del nuovo nferunento alIa pagma precedente deternuna un ffilSS ill TLB e la costruzlOne
Vale .la di. .Ia da [HP93], dove sono riportati i .. di un nuovo con i dati gia. ,disponibili il in PMT.
parametn quantltatlv1 carattenstlCI della memona paginata. ' -;:/,Y:;r.l . Vale la pena dl osservare che 1 TLB hanno dlmensIOlll contenute entro poche
... ,:. decine di posizioni; per esempio il Intel 80486 ha un TLB di 32 po-
.)-::!f sizioni, organizzato come una cache associativa a 4 vie. La dimensione TLB e
dunque inferiore di qualche ordine eli grandezza rispetto alia dirnensione della cache
'interna della medesima CPU. La ragione delle piccole dimensioni del TLB deriva da
,:'>4', considerazioni pro.babilistiche: l'elemento in TLB relativo a una pagina viene
.... .. ,,\., '
la viene. per la prima volta 0 quando, pur
:; " 1a In la: e.stata ?s,ata per
zata Plu dl recente. In 9gm casa, il prU1clplO di localita suggensce che 1 nfenmentl
. successivi a.qu:llo che la di elemento in TLB saranno, con
..... ':.:;\ alta probab1hta, nella stessa pagma 0 In pagme contlgue.
: A titolo di esempi6, si assuma una di pagina di 4 kbyte e istruzioni
, ," di 32 b.it.. Si co?sideri .una .un linea:e -
clcll 0 saltl .-. e assuma che I?nma esegulta 1 questa pagma
alIa poslzlon.e 0. AHora 1 10?3 attrave:-so
"ti,Jiti
"
11 medeslmo elemento m rr:LB..Se POI che 1 dal
'. contenuto nella nostra pagma SIano eSSI 5tessl III una medeSlma pagm3, ecca che Sl
i; richiede solo un secondo elemento in TLB fintantoche centrollo resta in pagina.
In riferimento al 486, che. ha pagine di 4k?yte e un TLB eli 32.posizioni, si ha che
. un programma non supenore a 128 kbyte Vlene totalmente descntto attraverso Ie 32
. l:1?,;:;.. posizioni del TLB
7
. In queste condizioni, la generica pagina di progr;;l.mma
1
una volta
caricata, resta in memoria finche dura l'esecuzione del programma stesso. Assumendo

.
..' si fa l'iP?tesi .che il pr.ogramma stia in 32 pagine, ovvero che il codice Don sia
frantumato In un numero di pagme superlore a 32.
,..,,/)' ,
.. .
. ";" , 1
.' .-"1',." \:I..
..''i!7.... ' .....
.' ..
" '. "
338
\
I
\
I
I
I
I
I
\
\
I

..
-
-
-
-
-
-
-
- I I
-, \
\ f
numero pagina logica 11 PROT. [BJ nurnero pagina fisica I
TAG DATO
'.
, "'I
\
---------
Capitolo 8
Dimensione di pagina 512 - 8192 byte
Tempo di hit 1 - 10 dcli di ClOCK
Pen . zazione di tault
100.000 - 600.000 citli di clock
Tempo di accesso
100.000 - 500.000 dcli 'di clock
Tempo di trasferimento
10.000 - 100.000 cicli di clock
Tasso di miss
0,00001:70 - 0,00170
Dimensione della memoria e;entrale
4 Mbyte - 2 LiDyte
5Ancbe Ie memorie di massa banno subito i necessari adeguamenti e spesso rendono disponibili
comandi che pennettono di trasferire blocchi di esattamente 4 kbyte.
6In pratica la parte DATO del TL:B corrisponde al conteDuto del descrittore di pagina in PMT
8.2.2 II Translation Lookaside Buffer
La traduzione degli indirizzi attiaverso la PMT ha Peffetto di degradare le prestazioni.
Per esempio, con la PMT di Figura B.3, il numero degli accessi alla memoria 5i rad-
doppia, Net caso di PMT gerarchica (CfL 8,2-4), ogni livelJo nella gerarchia tabellare
introduce un accesso alIa memoria con conseguente degradazione delle prestazioni.
In altre parole, l'interposizione della PMT ha, come minimo, l'effetto eli ridurre di
almeno il 50% la larghezza di banda della memoria. Si tratta di un prezzo troppo alto
che puC> essere evitato, con il semplice impiego di una cache associativa, denominata
Transla ion-Lookaside Bu er TLB , in cui si immagazzinano i descrittori di pagina
usati di recente. vviamente, anc e il TLB ha il suo fondamento nel principio di .
localita. Trattandosi di una (piccola) cache, la ricerca in TLB e, tipicamente
1
pili
veloce di un ordine di grandezza rispetto a un accesso in memoria.
n generico formato di una posizione in TLB eschematizzato in Figura8.4: 1a
parte TAG con"tiene il numero della pagina logica, mentre la parte DATO contiene
il numero della pagina fisica
1
i bit relativi alia protezione, l'indicatore di pagina mo
dilicata ecc.
6
. Questi indicatori devono essere congruenti can quelli della PMT. Se,
.
""i'"
'
,_.,.1-.'
!t".,.
,;,id7!:J' '".: La memoria virtuale 339
.,.,'1,.',..-'
-m"k'r;;;.i "
..;,.;..,.
.. I,h. _.
'I', r;ti',,,:,. .
" W"""
'\!J!
"
J. ','..-'1-
,,11:;1;,-" .
.. ,

, 'Ij;t""

,
, ,,, 1;"'_
, '-1

,.. ,!(,- '-.'
'oil;,;;;"}'.',
.
.. ' Figura 8.4 Formato di un eJemento in TLB. V eit bit di validita, PROT e il campo dei
diritti di accesso, M e l'indicatore di pagina modificata. Potrebbero essere presenti altri
campi oltre, a qu.elli indicati; in particolare nel TAG esser,ci un campo dedicato a
. . ... . . .. ... .. .' : contenere l'ldentlflcatore del processo che sta generando I'mdinzzo, ill modo da poter tenere
Tabe.lla 8.1 del. para:netn a. paglna 5eparati gli spazi dei proce5si (5i veda anche l'osservazione a pagina 342, a conclusione del
tao 81 questl con 1 delle 81 osservi che I'alto ,<-, Para.grafo 8.2.3.
numero eli c1cli di clock persl a segwto di un fault gtushfica l'esecuzlone da. parte del sistema
operativo di complessi algoritmi di rimpiazzamento e di gestione della memoria,
.per pagina m?dificata
1
il bit che in.dica z:nodifica deve
essere assentoj nella pOSlZlOne m TLB che nel descnttore dl pagma m PMT.
Molti 80no atti in passato del.la dimensione delle pagine . In di page che la e caricata in
sulle .prestazlolll del [GTB73]. Nel corso degh stata una progressiva .:'lene C?strUlto.11 rel.atlvo descnttore m PMT; Ie che a costrmre
cres?ta.. Mentre a:nDl era normaJe una pagma dl 512 0 1024 byte, negli ; II dl us.ate per cost.rllIre UD, III TLB. I
anill novanta la dimenslone prefenta e4-8 kbyte
5
. . . ceSSIVI nfenmentl alia pagma SODa nsoltl attraverso II TLB. E posslblle che la pagma,
In molti casi la MMU ein grado di gestire pagine di differenti dimensioni. Per pur restando in memoria, non venga indirizzata per lungo tempo. In questa caso e
esempio la ein di gestire pagine, da 256 byte fino a 1a relativa P?sizione in TLB un'altra pagina.. Un
32kbyte (oVVlamente Ie dimenslOlli mtermedle sono sempre potenze del nuovo nferunento alIa pagma precedente deternuna un ffilSS ill TLB e la costruzlOne
Vale .la di. .Ia da [HP93], dove sono riportati i .. di un nuovo con i dati gia. ,disponibili il in PMT.
parametn quantltatlv1 carattenstlCI della memona paginata. ' -;:/,Y:;r.l . Vale la pena dl osservare che 1 TLB hanno dlmensIOlll contenute entro poche
... ,:. decine di posizioni; per esempio il Intel 80486 ha un TLB di 32 po-
.)-::!f sizioni, organizzato come una cache associativa a 4 vie. La dimensione TLB e
dunque inferiore di qualche ordine eli grandezza rispetto alia dirnensione della cache
'interna della medesima CPU. La ragione delle piccole dimensioni del TLB deriva da
,:'>4', considerazioni pro.babilistiche: l'elemento in TLB relativo a una pagina viene
.... .. ,,\., '
la viene. per la prima volta 0 quando, pur
:; " 1a In la: e.stata ?s,ata per
zata Plu dl recente. In 9gm casa, il prU1clplO di localita suggensce che 1 nfenmentl
. successivi a.qu:llo che la di elemento in TLB saranno, con
..... ':.:;\ alta probab1hta, nella stessa pagma 0 In pagme contlgue.
: A titolo di esempi6, si assuma una di pagina di 4 kbyte e istruzioni
, ," di 32 b.it.. Si co?sideri .una .un linea:e -
clcll 0 saltl .-. e assuma che I?nma esegulta 1 questa pagma
alIa poslzlon.e 0. AHora 1 10?3 attrave:-so
"ti,Jiti
"
11 medeslmo elemento m rr:LB..Se POI che 1 dal
'. contenuto nella nostra pagma SIano eSSI 5tessl III una medeSlma pagm3, ecca che Sl
i; richiede solo un secondo elemento in TLB fintantoche centrollo resta in pagina.
In riferimento al 486, che. ha pagine di 4k?yte e un TLB eli 32.posizioni, si ha che
. un programma non supenore a 128 kbyte Vlene totalmente descntto attraverso Ie 32
. l:1?,;:;.. posizioni del TLB
7
. In queste condizioni, la generica pagina di progr;;l.mma
1
una volta
caricata, resta in memoria finche dura l'esecuzione del programma stesso. Assumendo

.
..' si fa l'iP?tesi .che il pr.ogramma stia in 32 pagine, ovvero che il codice Don sia
frantumato In un numero di pagme superlore a 32.
,..,,/)' ,
.. .
. ";" , 1
.' .-"1',." \:I..
..''i!7.... ' .....
.' ..
" '. "
338
\
I
\
I
I
I
I
I
\
\
I

..
-
-
-
-
-
-
-
Tabella 8.2 Va.lori tipici dei parametri caratteristici dei TLB.
Dimensione eli un elemento 4 -"Fbyte
Tempo di hit 1 ciclo di clock
Penalizzazione di miss 10-30 cicli di clock
Tasso di miss 10,1%-1%
Dimensione 32 - 8192 byte

J
1
) .

\
I .
,
J .
I
I
l .
'.
1
!
I
1.
1.
I
. -
...

.
"'):1:-'
340 Ca.pitolo 8 '. La. memoria virtuale 341

"," . '
,.: ,-
.
..
,-",:;.. .X,I- ,j , ,.
la politica demand paging (efr. 8.6.2), una pagina determina un miss in TLB al -a ciascun un'area di memoria per queste L'area.in
indirizzamento (cui segue un page fault che ne determina il caricamento) j i riferimenti ,: '. viene denommata Task Control !Jlock (TeB) .. TCB e l'msleme
successivi fanna sempre hit in TLB. di stato del processo lisate dal sistema operatIVQ per tenere ttaccla dello stato di
esecuzione del processo stesso, Quando di un task viene sospesa, tutte Ie
..:inforrnazioni relative aIlo state del che servono alIa successiva riattivazione
'.. vengono copiate in TeB. Queste in1ormazioni vengono pertanto copiate da TCB nei
di CPU all'atto della Si ?ot.i una queste esicurament.e
I ...i{"', ,.- valore Program Counter, ma ancbe tutti 1 regJstn di macchma devono essere coplatl
" in TCB della del processo, in questa arrivare in
,,; '. (1! del tutto aslIlcrono e 1 regtstn possono, per esemplo contenere valon appena calcolatl
: Ie variabili, rna non aneora assegnati (cioe non ancora "registrati" in memoria).
..::' '" ''''''_ Per 1a attivazione processi si usa. iI. termine di cambiament? di
'f contesto. La logIca dl CPU pub formre un supporto mJDlrno 0 completo alla gestlOne
del car:nbiamento di In ogni. caso per gestire il it
. . .. . . ... . un a clascu.n e ma.,ntIene alcune. hste:..
La TabeUa8.2, tratta da [HP93] formsee datI quantltatlvl carattenstlci SUI TLB. 'i"r' :'lista' del proeessl pronh (ewe quelli ehe sono m grado dt esegurre), quella del processl
, in attesa di qualche evento ecc. Per costruire Ie Hste si impiegano puntat_ori
. che vengono eontenuti entro i TCB (in pratica Ie liste sono liste di TeB). $empre nel
8.2.3 GestlOne della tabella .....,,,,1Ji,. si trova I'identificatore'.
..('... ,.,.. .'
L ...
E giunto it momenta di affrontare direttamente Ie problematiche relative aHa gestione" .. " . .. .
della tabella. Cominciamo col riehiamare rapidissimamente alcuni eoncetti relativi ai Memoria e In un slstema multItasking, deve
sistemi a processi eoncorrenti (aleune delle questioni sotto esposte vengono riprese nel .' ,P0ssede!e un proprIO separato da degh altn La
capitolo dedicato alta protezione). .separazlOne della SpazlO degh mdmzzl dl Clascun processo puo essere ottenuta In due
... '. ',modi diversi: .
J!i:.r.l''':-
,."..
Sistemi a processi concorrenti L'esecuzione apparentemente simultanea di piu . 1. prevedendo una tabella di traduzione per eiascun proesso. E questa la so-
applicazioni viene detta multitasking. Si parla anche di sistema a processi concorrenti; luzione piu usuale ed eusata, per esempio, nell'architettura 68000 Motorola e
La coneorrenza viene ripartendo la CPU tra. i differenti proeessi, in modo che !iit.fi:':;:.. , nell'architettura x86 Intel.
tutto avvenga come se vi fossero tanti elaboratori quanti sono i proeessi in .
'. Si usa il termine eli 'processo So per denominare attivita per il siste.ma e the gli degli
81 evolve nel tempo, cornspondente aU esecuzlOne dt un programma (0 pm prqgramml) ...; mdmZZl virtuah del smgeh processl SIano del sottom:neIDl della SpazlO virtuale
su di un sistema di elaborazione. n concetto di proeesso evidenzia l'aspetto'dinamico 'YNf' del sistema, in modo che ai processi possano essere assegnati spazi virtuali non
dell'elaborazione, in all'aspetto statico, rappreseotato dal testa .. sovrapposti. Questa soluzione eusata oell'architettura PowerPC e di essa si parla
programma. In qIodo un pa' pm formale un processo p e rappresentato dalla e.oPPla nel Paragrafo 8.10.
(P,S) dove P eun programma e S e10 state raggiunto dalPelaborazione. In 00 dato ... . .
momento 10 stato S erappresentato dall'insieme dei valori assunti dalle vaiiabili di. Facendo riferimento alIa soluzione a), vediamo come un sistema operativo po-
che daUo stato del processore cui ii. e in esecuzione. trebbe la vi:tuale. . . .
Le vanablli dl programma fanno parte dello SpazlO degh lOdmzzI del POlche a ogm e una sua 1 TCB dovranno eontene:e il
del processo), mentre 10 state del proeessore edata dal contenuto del SUOt regtstrt . aHa relatlva tabella, lD modI? che ogm volta che un clato processo vtene
(generici registri di macchina, PSW ecc.). , TF.;t>,:; " nattlvato it puntatore in- questione possa essere eopiato in RP (Cfr. 8.3). Dccorre poi
Tn un sistema multitasking la CPU viene a5segnata in tempi diversi a task diversi stabilire come,vengono tenute 1e tabelle in memoria. La PMT descritta in precedenza
(per semplicita si assuma the 1a macchina sia monoprocessore). vuol dire.che euna tabella piatta e quindi deve essere prevista per essa tutto 10 spazio che pub
dei task deve essere sospesa e ri.pr.esa all'occorrenza. La sospenslOne ::;1@;'
puo dal fatto che i1 processe non ha pe.r 11 da fare (perche, . "''">$.; 8 , ' .. . " ..
per esempio sta attendendo 11 completamento dl un'operazlOne dl mgresse) oppure '" .... J',;.. Nell a.rchltettura Intel, 1a loglca. dl CPU (a partlre dal 286) gestLSce direttamente 11 camblamento
). ..,. .) . .. d' m 0 delcontesto (Cfr.9.4).
perche (e questa 11 case del slsterru e. termmato 11 1 te . p . :' 9L'ident.lficatore pub essere un semplice oumero d'ordine, rna pub anche eMere un qualunque altro
assegnatogli. Nel sospendere un processe e necessano tutte Ie informazione assegnata univocamente a ciascun proce5SO (nell'architettura Intella. funzione
ehe servono a farlo ripartire come se niente fosse aceaduto. A tal a.c;SOClare .. .. , dl Identlficatore e svolta da un ulettore Cfr. 9.4).
.., . :..
\".,.\1; .... ,'
Tabella 8.2 Va.lori tipici dei parametri caratteristici dei TLB.
Dimensione eli un elemento 4 -"Fbyte
Tempo di hit 1 ciclo di clock
Penalizzazione di miss 10-30 cicli di clock
Tasso di miss 10,1%-1%
Dimensione 32 - 8192 byte

J
1
) .

\
I .
,
J .
I
I
l .
'.
1
!
I
1.
1.
I
. -
...

.
"'):1:-'
340 Ca.pitolo 8 '. La. memoria virtuale 341

"," . '
,.: ,-
.
..
,-",:;.. .X,I- ,j , ,.
la politica demand paging (efr. 8.6.2), una pagina determina un miss in TLB al -a ciascun un'area di memoria per queste L'area.in
indirizzamento (cui segue un page fault che ne determina il caricamento) j i riferimenti ,: '. viene denommata Task Control !Jlock (TeB) .. TCB e l'msleme
successivi fanna sempre hit in TLB. di stato del processo lisate dal sistema operatIVQ per tenere ttaccla dello stato di
esecuzione del processo stesso, Quando di un task viene sospesa, tutte Ie
..:inforrnazioni relative aIlo state del che servono alIa successiva riattivazione
'.. vengono copiate in TeB. Queste in1ormazioni vengono pertanto copiate da TCB nei
di CPU all'atto della Si ?ot.i una queste esicurament.e
I ...i{"', ,.- valore Program Counter, ma ancbe tutti 1 regJstn di macchma devono essere coplatl
" in TCB della del processo, in questa arrivare in
,,; '. (1! del tutto aslIlcrono e 1 regtstn possono, per esemplo contenere valon appena calcolatl
: Ie variabili, rna non aneora assegnati (cioe non ancora "registrati" in memoria).
..::' '" ''''''_ Per 1a attivazione processi si usa. iI. termine di cambiament? di
'f contesto. La logIca dl CPU pub formre un supporto mJDlrno 0 completo alla gestlOne
del car:nbiamento di In ogni. caso per gestire il it
. . .. . . ... . un a clascu.n e ma.,ntIene alcune. hste:..
La TabeUa8.2, tratta da [HP93] formsee datI quantltatlvl carattenstlci SUI TLB. 'i"r' :'lista' del proeessl pronh (ewe quelli ehe sono m grado dt esegurre), quella del processl
, in attesa di qualche evento ecc. Per costruire Ie Hste si impiegano puntat_ori
. che vengono eontenuti entro i TCB (in pratica Ie liste sono liste di TeB). $empre nel
8.2.3 GestlOne della tabella .....,,,,1Ji,. si trova I'identificatore'.
..('... ,.,.. .'
L ...
E giunto it momenta di affrontare direttamente Ie problematiche relative aHa gestione" .. " . .. .
della tabella. Cominciamo col riehiamare rapidissimamente alcuni eoncetti relativi ai Memoria e In un slstema multItasking, deve
sistemi a processi eoncorrenti (aleune delle questioni sotto esposte vengono riprese nel .' ,P0ssede!e un proprIO separato da degh altn La
capitolo dedicato alta protezione). .separazlOne della SpazlO degh mdmzzl dl Clascun processo puo essere ottenuta In due
... '. ',modi diversi: .
J!i:.r.l''':-
,."..
Sistemi a processi concorrenti L'esecuzione apparentemente simultanea di piu . 1. prevedendo una tabella di traduzione per eiascun proesso. E questa la so-
applicazioni viene detta multitasking. Si parla anche di sistema a processi concorrenti; luzione piu usuale ed eusata, per esempio, nell'architettura 68000 Motorola e
La coneorrenza viene ripartendo la CPU tra. i differenti proeessi, in modo che !iit.fi:':;:.. , nell'architettura x86 Intel.
tutto avvenga come se vi fossero tanti elaboratori quanti sono i proeessi in .
'. Si usa il termine eli 'processo So per denominare attivita per il siste.ma e the gli degli
81 evolve nel tempo, cornspondente aU esecuzlOne dt un programma (0 pm prqgramml) ...; mdmZZl virtuah del smgeh processl SIano del sottom:neIDl della SpazlO virtuale
su di un sistema di elaborazione. n concetto di proeesso evidenzia l'aspetto'dinamico 'YNf' del sistema, in modo che ai processi possano essere assegnati spazi virtuali non
dell'elaborazione, in all'aspetto statico, rappreseotato dal testa .. sovrapposti. Questa soluzione eusata oell'architettura PowerPC e di essa si parla
programma. In qIodo un pa' pm formale un processo p e rappresentato dalla e.oPPla nel Paragrafo 8.10.
(P,S) dove P eun programma e S e10 state raggiunto dalPelaborazione. In 00 dato ... . .
momento 10 stato S erappresentato dall'insieme dei valori assunti dalle vaiiabili di. Facendo riferimento alIa soluzione a), vediamo come un sistema operativo po-
che daUo stato del processore cui ii. e in esecuzione. trebbe la vi:tuale. . . .
Le vanablli dl programma fanno parte dello SpazlO degh lOdmzzI del POlche a ogm e una sua 1 TCB dovranno eontene:e il
del processo), mentre 10 state del proeessore edata dal contenuto del SUOt regtstrt . aHa relatlva tabella, lD modI? che ogm volta che un clato processo vtene
(generici registri di macchina, PSW ecc.). , TF.;t>,:; " nattlvato it puntatore in- questione possa essere eopiato in RP (Cfr. 8.3). Dccorre poi
Tn un sistema multitasking la CPU viene a5segnata in tempi diversi a task diversi stabilire come,vengono tenute 1e tabelle in memoria. La PMT descritta in precedenza
(per semplicita si assuma the 1a macchina sia monoprocessore). vuol dire.che euna tabella piatta e quindi deve essere prevista per essa tutto 10 spazio che pub
dei task deve essere sospesa e ri.pr.esa all'occorrenza. La sospenslOne ::;1@;'
puo dal fatto che i1 processe non ha pe.r 11 da fare (perche, . "''">$.; 8 , ' .. . " ..
per esempio sta attendendo 11 completamento dl un'operazlOne dl mgresse) oppure '" .... J',;.. Nell a.rchltettura Intel, 1a loglca. dl CPU (a partlre dal 286) gestLSce direttamente 11 camblamento
). ..,. .) . .. d' m 0 delcontesto (Cfr.9.4).
perche (e questa 11 case del slsterru e. termmato 11 1 te . p . :' 9L'ident.lficatore pub essere un semplice oumero d'ordine, rna pub anche eMere un qualunque altro
assegnatogli. Nel sospendere un processe e necessano tutte Ie informazione assegnata univocamente a ciascun proce5SO (nell'architettura Intella. funzione
ehe servono a farlo ripartire come se niente fosse aceaduto. A tal a.c;SOClare .. .. , dl Identlficatore e svolta da un ulettore Cfr. 9.4).
.., . :..
\".,.\1; .... ,'

3
2
o
,
,
Spazio
Virluale
dl pi
La memoria virtua.le 343
o
CJ
GJ
File System
GJ
o
Memoria Fisica
0

t

'Sistema
"

Operativo 0

c
-

PMT pI

0
,
I '
-
- '
l-
I
--.
I
Allre PMT
.

0
0
\.
P&.ginfl. 50
"

.-'

,.

"

yaslna 230
-
1a difficolta a mantenere uno spazio di memoria conti guo in uno spazio nece9sa-
riamente virtuale e quindi paginato.
10 spreco di memoria che essa comportaj

E facile verificare ehe 1a tabella puo diventare enorme. Si consideri per esempio
una maGchina clie genera indirizzi virtuall a 32 bit e pagine d.i 4 kbyte. Il campo dello
scostamento entro pagina edi 12 bit, mentre il numero di .pagina edato attraverso
i restanti 20 bit. In altri termini si richiederebbe una PMT di 2
20
. == 1M posizioni.
Ipotizzando che ogni posizione richieda 4 byte (1 per indicare 10 stato della pagina e
3 per il numero di pagina fisica), si avrebbe una tabella di 4 Mbyte. E questo senza
aneora aver occupato alcuna pagina. Un tale spreeo di memoria einaccettabile, anche
percbe si ripeterebbe per ogni processo.
Una tabella delle pagine piatta come quella fino a ora considerata ealquanto proble-
matica da gestire per due motivi:
8.2.4 Tabella delle pagine gerarchica
Figura 8.5 Scbematoizzazione dello stato della memoria gestita secondo Ie ipotesi sempli-
ficative fatte nel testo. II processo PI ba fatto rjferimento aBe due sole pagine virtua.li 0 e
1 (inizialmente estata caricata solo Ia. pagina 0); per esse sono state assegnate Ie pagine
fisiche 50 e 230. Lo spazio virtua.le e quello degli indirizzi logici prodotti da e
tinkerj euno spazio lineare, che cODvenzionalmente inizia da O. Ogni pagina Iogica si trava
sui disco gestita dal File System (un componente principale del sistema operativo). Ai lui
dell'allocazione delle pagine fisiche a-i processi i1 sistema operativo deve (per 10 menD) tenere
traccia di quali sono Ie pagine Iibere.

' ..
.'.
lOOvviamente anche questa. e un'ipotesi irrea.listica..
llSi pa.rla. eli lista. perche ela. struttura. da.ti intuitivamente piu adeguata. in questa contesto. In
pra.tica il SO pub ricorrere ad altre strutture di appoggio per tener tra.ccia delle 'pagine Jibere, in
modo Don dissimile rispetto'a quello usato per tener traccia dell'occupazione dei settori e dei cluster
au disco.
,. -
,,",','

C
'IB
342 aplto 0
."':0:;
":'i
<;;'f;:'
,::!>'
.
occupare. E facilmente intuibile che cia porta a uno spreco eccessivo di memoria:
tra. poco abbandoneremo questa ipotesi. Peron momento 13 manteniamo per ragioni
di esposizione, facendo finta che la memoria sia illimitata. .
Possiamo ipotizzare che la memoria fisica sia divisa in due parti: 13 prima
usata per contenere il sistema operativo al completo
lO
I 130 seconda parte usata per
i. processi. .Possiamo an.che che la parte contene?te il sistema
ala. non pagmata e che Sla tanto amp13 da contenere al suo mterno tutte Ie posslbili
PMT. All'atto della partenza <Ii un processo tutti i PTE della relativa PMT devono :;i';\jti
componente P a a mano virtuali vengono:,
mdinzzate Vlene assegnata una pagma fislca e reso vahdo 11 cornspondente pTE. Per .:
una fisica il operativo deve ,una lista delle pagine"
libere
11
, ill modo che} ill presenza. di un page fault, 1a pagma fiSica venga presa dalla.
lista, senza dover rimpiazzare alcuna delle pagine giil. impegnate (per questi aspetti si
veda il Paragrafo 8.6). Un esemplO ch,arlra quanto detto. . ..
Si. suppong8o che all'atto dell'avvio del processo PI 180 lista delle pagine libere
questa. ',,'


. "t:jl....
Lista delle pagine libere: 50,230,20,21,179,40,41,43,1030, .. :.\}iii'

-" H'lt.;
, ";.l;".
,
Supponiamo che alla partenza del processo il sistema operativo allochi solo la'
pagina virtuale in ... . . .
assegnata la pagina fisica 50. Supponiamo che dal1a pagina virtuale 0 il controllo
passi alla pagina 2 generando un page fault. Supponendo che dalla lista delle pagine
libere non siano state estratte 0 aggiunte altre pagine, al processo verra assegnata la
pagina fisica 230. Se ora un altro processo in esecuzione genera un altro fault a esso
verra assegnata la pagina 20. In Figura 8.5 viene data una schernatizzazione della
stata della PMT del pracesso PI dopa che gli estat.a allocata 180 pagina 230.
Le ipotesi Catte in precedenza sono esageratamente irrealistiche. In particolare
non ha sensa considerare un sistema operativo rnonolitico, non paginato, contenente"
at suo interno tutte Ie PMT. n paragrafo seguente iUustra soluzioni pili realistiche.
Un'ultima osservazione. discutere il TLB (si veda in particolare la Figura8.4),
si eosservato che il campo TAG potrebbe contenere l'identificatore del processo ehe
genera it riferimenta. Cib serve a tenere separati gli spazi virtuali eli praceSsi distinti.
Alternativamente si puo evitare il campo TAG in TLB, rna, in tal caso, enecessaria che
il sistema operativo (0 180 logica stessa di macchina) provveda a invalidare il contenuto
di TLB quando c'e un cambiamento di contesto, altrimenti si avrebbero erronei hit
tutte Ie volte che il processo subentrato genera un indirizzo uguale a uno generato in
precedenza dal processo sospeso e aucora presente in TLB.
\
\
)
I
I
I
I

!
\
I

I
-
, \
-
: I I
.,
I \

3
2
o
,
,
Spazio
Virluale
dl pi
La memoria virtua.le 343
o
CJ
GJ
File System
GJ
o
Memoria Fisica
0

t

'Sistema
"

Operativo 0

c
-

PMT pI

0
,
I '
-
- '
l-
I
--.
I
Allre PMT
.

0
0
\.
P&.ginfl. 50
"

.-'

,.

"

yaslna 230
-
1a difficolta a mantenere uno spazio di memoria conti guo in uno spazio nece9sa-
riamente virtuale e quindi paginato.
10 spreco di memoria che essa comportaj

E facile verificare ehe 1a tabella puo diventare enorme. Si consideri per esempio
una maGchina clie genera indirizzi virtuall a 32 bit e pagine d.i 4 kbyte. Il campo dello
scostamento entro pagina edi 12 bit, mentre il numero di .pagina edato attraverso
i restanti 20 bit. In altri termini si richiederebbe una PMT di 2
20
. == 1M posizioni.
Ipotizzando che ogni posizione richieda 4 byte (1 per indicare 10 stato della pagina e
3 per il numero di pagina fisica), si avrebbe una tabella di 4 Mbyte. E questo senza
aneora aver occupato alcuna pagina. Un tale spreeo di memoria einaccettabile, anche
percbe si ripeterebbe per ogni processo.
Una tabella delle pagine piatta come quella fino a ora considerata ealquanto proble-
matica da gestire per due motivi:
8.2.4 Tabella delle pagine gerarchica
Figura 8.5 Scbematoizzazione dello stato della memoria gestita secondo Ie ipotesi sempli-
ficative fatte nel testo. II processo PI ba fatto rjferimento aBe due sole pagine virtua.li 0 e
1 (inizialmente estata caricata solo Ia. pagina 0); per esse sono state assegnate Ie pagine
fisiche 50 e 230. Lo spazio virtua.le e quello degli indirizzi logici prodotti da e
tinkerj euno spazio lineare, che cODvenzionalmente inizia da O. Ogni pagina Iogica si trava
sui disco gestita dal File System (un componente principale del sistema operativo). Ai lui
dell'allocazione delle pagine fisiche a-i processi i1 sistema operativo deve (per 10 menD) tenere
traccia di quali sono Ie pagine Iibere.

' ..
.'.
lOOvviamente anche questa. e un'ipotesi irrea.listica..
llSi pa.rla. eli lista. perche ela. struttura. da.ti intuitivamente piu adeguata. in questa contesto. In
pra.tica il SO pub ricorrere ad altre strutture di appoggio per tener tra.ccia delle 'pagine Jibere, in
modo Don dissimile rispetto'a quello usato per tener traccia dell'occupazione dei settori e dei cluster
au disco.
,. -
,,",','

C
'IB
342 aplto 0
."':0:;
":'i
<;;'f;:'
,::!>'
.
occupare. E facilmente intuibile che cia porta a uno spreco eccessivo di memoria:
tra. poco abbandoneremo questa ipotesi. Peron momento 13 manteniamo per ragioni
di esposizione, facendo finta che la memoria sia illimitata. .
Possiamo ipotizzare che la memoria fisica sia divisa in due parti: 13 prima
usata per contenere il sistema operativo al completo
lO
I 130 seconda parte usata per
i. processi. .Possiamo an.che che la parte contene?te il sistema
ala. non pagmata e che Sla tanto amp13 da contenere al suo mterno tutte Ie posslbili
PMT. All'atto della partenza <Ii un processo tutti i PTE della relativa PMT devono :;i';\jti
componente P a a mano virtuali vengono:,
mdinzzate Vlene assegnata una pagma fislca e reso vahdo 11 cornspondente pTE. Per .:
una fisica il operativo deve ,una lista delle pagine"
libere
11
, ill modo che} ill presenza. di un page fault, 1a pagma fiSica venga presa dalla.
lista, senza dover rimpiazzare alcuna delle pagine giil. impegnate (per questi aspetti si
veda il Paragrafo 8.6). Un esemplO ch,arlra quanto detto. . ..
Si. suppong8o che all'atto dell'avvio del processo PI 180 lista delle pagine libere
questa. ',,'


. "t:jl....
Lista delle pagine libere: 50,230,20,21,179,40,41,43,1030, .. :.\}iii'

-" H'lt.;
, ";.l;".
,
Supponiamo che alla partenza del processo il sistema operativo allochi solo la'
pagina virtuale in ... . . .
assegnata la pagina fisica 50. Supponiamo che dal1a pagina virtuale 0 il controllo
passi alla pagina 2 generando un page fault. Supponendo che dalla lista delle pagine
libere non siano state estratte 0 aggiunte altre pagine, al processo verra assegnata la
pagina fisica 230. Se ora un altro processo in esecuzione genera un altro fault a esso
verra assegnata la pagina 20. In Figura 8.5 viene data una schernatizzazione della
stata della PMT del pracesso PI dopa che gli estat.a allocata 180 pagina 230.
Le ipotesi Catte in precedenza sono esageratamente irrealistiche. In particolare
non ha sensa considerare un sistema operativo rnonolitico, non paginato, contenente"
at suo interno tutte Ie PMT. n paragrafo seguente iUustra soluzioni pili realistiche.
Un'ultima osservazione. discutere il TLB (si veda in particolare la Figura8.4),
si eosservato che il campo TAG potrebbe contenere l'identificatore del processo ehe
genera it riferimenta. Cib serve a tenere separati gli spazi virtuali eli praceSsi distinti.
Alternativamente si puo evitare il campo TAG in TLB, rna, in tal caso, enecessaria che
il sistema operativo (0 180 logica stessa di macchina) provveda a invalidare il contenuto
di TLB quando c'e un cambiamento di contesto, altrimenti si avrebbero erronei hit
tutte Ie volte che il processo subentrato genera un indirizzo uguale a uno generato in
precedenza dal processo sospeso e aucora presente in TLB.
\
\
)
I
I
I
I

!
\
I

I
-
, \
-
: I I
.,
I \
Figura 8.6 Schema di traduzione degli indirizzi con di descrittori di pagina. orga-
ninatoe gerarch.icamente. La PMT risultante euna struttura ad albero, in questo caso a. due
livelli. RP eun registro di CPU che forniscc l'indirizzo della tabella di primo Hvello.
naturale e che in memoria centrale si richiede che sia presente 180 sola tabella di primo
livello e, per 10 meno, una tabella di secondo ,liveHo - quella che descrive Ie pagine
cui il programma sta correnternente facendo riferimento. La struttura a due livelli
consente la gestione a spazio di indirizzamento sparso tipica dei sistemi UNIX.
La struttura a livelli consente di far ITonte alia richiesta di memoria in modo
adattativo rispetto al susseguirsi dei In particolare si pub immaginare
che all'avvio di un processo vengano allocate 1a tabella di primo livello e una di
secondo livello per descrivere le poche pagine caricate aI' momento del1'avvio. Con
l'eseeuzione del programma puo capitare che occorra allocare nuove tabelle di secondo
liveHo. Cio avviene in modo naturale: quando oecorre una nuova tabella di
Uvello basta allocare una pagina tisica e inserire i1 relativo descrittore nella tabella
di primo livello. Durante 1a normale esecuzione memoria conterra} senza nesaun
ordine predefinito, sia Ie pagine di programma, sia Ie pagine corrispondenti ai vari
alberi di traduzione. Lo stesso sistema operativo risulta facilmente p80ginabilej Ie
relative pagine e il corrispondente albero di traduzione entrano a far parte del pool
344 Capitolo 8
t,::\:\.
,.'

.. .
'-'a"
, "
-::'1
Ovviamente non e necessaria cbe la PMT abbia la dimensione massima. n sistema
operativo potrebbe gestire tabelle di pagina di dimensioni limitate, purche sufficienti a
coprire 10 spazio degli indirizzi virtuali dei vari processi. Nel nostro ca.so, ipotizzando .:51
che 10 spazio degli indirizzi di un singolo processo venga artificialmente limitato a . )'#
8 Mbyte, si avrebbero 4096 pagine per Ie quali occorrerebbe una PMT di 16 kbyte, :di!F'
corrispondente a110 0,2% della memoria. .. :I{;;i
'.'
Si pone comunque un problema non banale: la PMT deve, a sua volta, essere
paginata 0 puo essere un blocco contiguo di memoria fisica? In precedenza si e ipo-
tiz:?ato che quest'ultima fosse la soluzione, rna si tratta di una soluzione artificiosa
in quanta la memoria epaginata e} quindi, enaturale che anche gli indirizzi generati
dal sistema operativo quando manipola la PMT siano soggetti aI meccanismo della
traduzione
12
. In altri termini, emeglio prevedere che anche la PMT sia paginata. "'J'
. 'to'"
Per i motivi ora discussi} la PMT viene normalmente strutturata in forma di
gerarchia di tabelle, come illustrato in Figura8.6 dove si ha una PMT a due livelli.
ncampo de11'indirizzo logico dedicato alPindividuazione della pagina eora sud-
diviso in due parti: 180 parte di primo Hvello e la parte di secondo livello. La parte
eli primo liveUo viene interpret80ta come numero d'ordine di un descrittore entro Ia
tabella di primo HveHo. Questa descrittore fornisce la base di una tabella di secondo
livello, dove econtenuto il descrittore di pagina individuato attraverso if campo di
secondo livel1o, che, a sua volta, fornisce 180 base della pagina fisica.
In altre parole, una tabella gerarchica costituisce una struttura ad albero (albero
di . .La Figura,8.6 indica che. i1 RP e1.a
?vvero II puntat?re alia di pnmo hvello, neUe Cut. pOSlZlom
1 puntaton alle tabeHe dl secondo UveHo. La MMU eresponsabile della navlgazlOne
attraverso i differenti livelli fino alIa pagina fisica. Sembrerebbe naturale che Ie tabelle ..
fossero tutte della stessa dimensione, indipendentemente cial livello a cui si trovano,
e pari alia dimensione della pagina, in modo che, dai punto di vista dell'allocazione
della memoria, non ci debba essere differenza tra allocare pagine fisiche e tabeHe
costituenti PMT. Tuttavia alcune architetture prevedono 1a possibilita. di avere tabelle
di differenti dimensioni ai diversi livelli
13
.
La struttura ad albero riduce 10 spreco di memoria. Per rendersene conto si faccia
ancora riferimento a una memoria a 32 bit} indirizzi su 32 bit, pagine di 4 kbyte e
tabella a due livelli. Si assuma inoltre che i due campi relativi a1 primo e secondo
livello siano di pari dimensione (10 bit). La tabella di livello superiore permette di
descrivere 1024 tabelle di livello inferiore, ciascuna delle quali, a sua volta} permette di
descrivere 1024 pagine corrispondenti a uno spazio (ma.ssimo) di 4 Mbyte. Pertanto}
un programma che non supera questa dimensione viene descritto da una pagina di
descrittori (la tabella di secondo Hvello) e da una sola posizione nella tabella di primo
livello.
Risulta evidente che i programmi normaH (quanto a dimensione e grade di di-
spersione) possono essere descritti attraverso poche posizioni nella tabella di primo
livello e dal corrispondente nUIDero di tabelle di secondo Hvello. II vantaggio prin-
cipale consiste comunque nel fatto che la tabella risulta paginata in modo del tutto
12Un ben noto schema di traduzione che usa tabelle piatte e la memoria virtuale dei sistemi VAX,
ampiamente descritta in [HP93]. Essa. prevedeva che ciascun processo avesse una sua PMT plana,
presa neUo spazio virtuale del sistema operativo.
13Si veda piu avanti 1a descrizione della memoria virtuale della CPU 68030.
".
La memoria virtuale
RP I"..... I
Memoria centrale
lndiri:zzo virluale
T..lo.l1.. d.I ""..ppal..... eli 11_110
,
u ....Uo I U....llo I .. !'lo
..... ,n.

II..... l.b. 1I_110 II
'\"
T.b.. lt.. d.I ....pp.,...... dl l1... uo II
4

,
a.... d .. ll. p.,lGa

Pel-gina fisica
1I\<lI.-1UO 11.100
345
1
I
!
.
\
\
,
I
I
1
)
\
1
\
I .

l
J
Figura 8.6 Schema di traduzione degli indirizzi con di descrittori di pagina. orga-
ninatoe gerarch.icamente. La PMT risultante euna struttura ad albero, in questo caso a. due
livelli. RP eun registro di CPU che forniscc l'indirizzo della tabella di primo Hvello.
naturale e che in memoria centrale si richiede che sia presente 180 sola tabella di primo
livello e, per 10 meno, una tabella di secondo ,liveHo - quella che descrive Ie pagine
cui il programma sta correnternente facendo riferimento. La struttura a due livelli
consente la gestione a spazio di indirizzamento sparso tipica dei sistemi UNIX.
La struttura a livelli consente di far ITonte alia richiesta di memoria in modo
adattativo rispetto al susseguirsi dei In particolare si pub immaginare
che all'avvio di un processo vengano allocate 1a tabella di primo livello e una di
secondo livello per descrivere le poche pagine caricate aI' momento del1'avvio. Con
l'eseeuzione del programma puo capitare che occorra allocare nuove tabelle di secondo
liveHo. Cio avviene in modo naturale: quando oecorre una nuova tabella di
Uvello basta allocare una pagina tisica e inserire i1 relativo descrittore nella tabella
di primo livello. Durante 1a normale esecuzione memoria conterra} senza nesaun
ordine predefinito, sia Ie pagine di programma, sia Ie pagine corrispondenti ai vari
alberi di traduzione. Lo stesso sistema operativo risulta facilmente p80ginabilej Ie
relative pagine e il corrispondente albero di traduzione entrano a far parte del pool
344 Capitolo 8
t,::\:\.
,.'

.. .
'-'a"
, "
-::'1
Ovviamente non e necessaria cbe la PMT abbia la dimensione massima. n sistema
operativo potrebbe gestire tabelle di pagina di dimensioni limitate, purche sufficienti a
coprire 10 spazio degli indirizzi virtuali dei vari processi. Nel nostro ca.so, ipotizzando .:51
che 10 spazio degli indirizzi di un singolo processo venga artificialmente limitato a . )'#
8 Mbyte, si avrebbero 4096 pagine per Ie quali occorrerebbe una PMT di 16 kbyte, :di!F'
corrispondente a110 0,2% della memoria. .. :I{;;i
'.'
Si pone comunque un problema non banale: la PMT deve, a sua volta, essere
paginata 0 puo essere un blocco contiguo di memoria fisica? In precedenza si e ipo-
tiz:?ato che quest'ultima fosse la soluzione, rna si tratta di una soluzione artificiosa
in quanta la memoria epaginata e} quindi, enaturale che anche gli indirizzi generati
dal sistema operativo quando manipola la PMT siano soggetti aI meccanismo della
traduzione
12
. In altri termini, emeglio prevedere che anche la PMT sia paginata. "'J'
. 'to'"
Per i motivi ora discussi} la PMT viene normalmente strutturata in forma di
gerarchia di tabelle, come illustrato in Figura8.6 dove si ha una PMT a due livelli.
ncampo de11'indirizzo logico dedicato alPindividuazione della pagina eora sud-
diviso in due parti: 180 parte di primo Hvello e la parte di secondo livello. La parte
eli primo liveUo viene interpret80ta come numero d'ordine di un descrittore entro Ia
tabella di primo HveHo. Questa descrittore fornisce la base di una tabella di secondo
livello, dove econtenuto il descrittore di pagina individuato attraverso if campo di
secondo livel1o, che, a sua volta, fornisce 180 base della pagina fisica.
In altre parole, una tabella gerarchica costituisce una struttura ad albero (albero
di . .La Figura,8.6 indica che. i1 RP e1.a
?vvero II puntat?re alia di pnmo hvello, neUe Cut. pOSlZlom
1 puntaton alle tabeHe dl secondo UveHo. La MMU eresponsabile della navlgazlOne
attraverso i differenti livelli fino alIa pagina fisica. Sembrerebbe naturale che Ie tabelle ..
fossero tutte della stessa dimensione, indipendentemente cial livello a cui si trovano,
e pari alia dimensione della pagina, in modo che, dai punto di vista dell'allocazione
della memoria, non ci debba essere differenza tra allocare pagine fisiche e tabeHe
costituenti PMT. Tuttavia alcune architetture prevedono 1a possibilita. di avere tabelle
di differenti dimensioni ai diversi livelli
13
.
La struttura ad albero riduce 10 spreco di memoria. Per rendersene conto si faccia
ancora riferimento a una memoria a 32 bit} indirizzi su 32 bit, pagine di 4 kbyte e
tabella a due livelli. Si assuma inoltre che i due campi relativi a1 primo e secondo
livello siano di pari dimensione (10 bit). La tabella di livello superiore permette di
descrivere 1024 tabelle di livello inferiore, ciascuna delle quali, a sua volta} permette di
descrivere 1024 pagine corrispondenti a uno spazio (ma.ssimo) di 4 Mbyte. Pertanto}
un programma che non supera questa dimensione viene descritto da una pagina di
descrittori (la tabella di secondo Hvello) e da una sola posizione nella tabella di primo
livello.
Risulta evidente che i programmi normaH (quanto a dimensione e grade di di-
spersione) possono essere descritti attraverso poche posizioni nella tabella di primo
livello e dal corrispondente nUIDero di tabelle di secondo Hvello. II vantaggio prin-
cipale consiste comunque nel fatto che la tabella risulta paginata in modo del tutto
12Un ben noto schema di traduzione che usa tabelle piatte e la memoria virtuale dei sistemi VAX,
ampiamente descritta in [HP93]. Essa. prevedeva che ciascun processo avesse una sua PMT plana,
presa neUo spazio virtuale del sistema operativo.
13Si veda piu avanti 1a descrizione della memoria virtuale della CPU 68030.
".
La memoria virtuale
RP I"..... I
Memoria
centrale
lndiri:zzo
virluale
T..lo.l1.. d.I ""..ppal..... eli 11_110
,
u ....Uo I U....llo I .. !'lo
..... ,n.

II..... l.b. 1I_110 II
'\"
T.b.. lt.. d.I ....pp.,...... dl l1... uo II
4

,

a.... d .. ll. p.,lGa

Pel-gina fisica
1I\<lI.-1UO 11.100
345
1
I
!
.
\
\
,
I
I
1
)
\
1
\
I .

l
J
bit, Qvvero si
h(k) e la somma bit a bit di due sottoinsiemi <Ii k ognuno di r
esegue 1a somma modulo 2 (XOR) tra i due sottoinsiemi,
", '
'k:'
,
,,'I'. '.

__ a:-
v
.:.ir::,:::tu:al,:::e_-=3:,:4:.:,7
-
..'..
)ii,j':,: ;
" ,.' .
<"' " Per via della relazione 1:1 tra PTE e pagine fisiche, se i1 campo VPN del PTE in
x contiene it nUIDera YI all?ra 130 y e pagina
fisica x. In altre parole, nella traduzlOoe dl un mdinzzo VlItuale, 81 ha se i1 PTE
selezionato dalla funzione h(VPN) contiene un numero (di pagina virtuale) uguale a
VPNi si ha fault in. caso cantracio. di cbiavi (il valore massim? di
VPN) malta supenore aJ DUIDero dl elementI In IPT, se k
i
e k
j
sono due genenche
con ki i- kj , epossibile che si abbia
J' .
h(k
i
) = h(k;)
che due (0 piu) VPN vadano a collidere sulla medesima posizione della IPT,
lj(;Wi;;rn.' 1,1.,,) " ,
:,ltJ:1i:"t\i;l- .", '.
"1h)'J,!r" ".'
L d'fi h h
,3.1 a co 1 ca as
da altre tecniche di ricerca piu castose, quali 1a scansione completa
0 la ncerca bmana, la tecmca hash tenta dl ncavare dlrettamente dalla cruave dl
la rnassima quantita possibile di informazione circa la posizione dell'elemento
[Luc72], [Knu70], Una funziane hash davrehhe, da un lata ridurre al minima
c?llisioni, dall',altro essere piu Esistono diversi modi per
It,j1,/reallzzare 1a funzlOne hash della ch,ave k; ne elenchlama brevemente alcune[Luc72],
!t1'!;v;,..':' a) h(k) eun sottainsieme di r hit di k;
"b) h(k) eresto della divisione tra la chiave e iI numero delle posizioni della tabella
15
;

"",'

.. c)
: ,t,l-.
"
,,, .., '
"
',' ":.
La soluzione del punto a) ha il pregio della semplicita., tuttavia non assicura una
buona distribuzione dei valori degli indicij quella del punto b) ebuona da! punto di
della degli indici
l
ha di!etto di essere lenta a causa
.. ;:-,q.lylslOnej la soluzlOne del punto c). ha 11 preglO dl essere poco onerosa punta dl
.,vista del calcolo e di generare una distribuzione uniforme degli indici
16
, E questa la
'.tecnica usata nell'architettura PowerPC (Figura8.43),

-,. '
.
',,.,""",,< ,;.,
''I
8.3,2 Gestione della tabella IPT ,
;(lfb: L:organizzazione di Figura8.7 epoco 6essibile e safIre di un problem" paiche un da-
to VPN non pub che finire in una sola, ben determinata posizione, se un programma
i ;:w, '., -,.-,
(l' _.-w,.-

"" .ISSi not.i che se R. e del 2 si ricade nel caso precedente, infatti il resto della division!!
, __ k/2'" COrrlspone agh ultlml n bit dl k.
L6La distribuzione deriva. dal fatto ch.e tabella di veriU,
XOR presenta. due zen e due UnI come nsultato. Se per esemplO Sl vuole mappare uno Spa.z1O dl 256
: . posizioni su uno di 16, la funzione bash pub essere ottenuta come XQR dei 4 bit piu significativi
con i 4 menD significativi del numero dato, Per la proprieta dell'operazione, gli iodici prodotti sono
.J::' . equamente su tutte le p08izioni. questa godooo gLi operatori
.. AND e OR che, mvece, tendooo ad accumulare gh mdlct su alcune paslzlon..
:,l:,.. . '."'!",'
"':'("H; \,
J)' _ oj.i!""" ,.
,.,1Ii"
,.'" ,Yo ";
'.,' V.":'_
, . -
Memoria Fisicll.
Palin.. lltllca 0
P.. gln.. tisle.. 1

.
,
1
Pallina IUle.. R- t
1
o
R-
l:t=l
IPT
0 Prot, 'PN
b
1 Prot.
VPN
.
,
nJNZIONE,
I,
""SN
Prol.
'PN
,
,
R-I Prot.
'PH
VPN
Capitolo 8
a) ha un numera di elementi pari al nurnew delle pagine fisiche;
140vviamente ci saranno parti speciali del sistema operativo che non potranco essere paginate (si
veda il Paragrafo 8,6.3). .
Figura 8.7 Tavola delle pagine invertita (IPT). La tavola presenta un numero di PTE
pari aI numero di pagine fisiche R. I PTE contengono (oltre alle informazioni relative alla.
protezione della pagina) il numero di pagina virtuale (VPN), L'indicizzazione in IPT efatta
attraverso una funzione hash che produce un indice h, compreso tra 0 e R - 1, per ogni VPN
(la chiave k). Dunque un data VPN pub trovarsi solo in una ben definita posizione,
comune eli pagine eli memoria
14
, A tale proposito si veda I'Esercizio8.L
8.3 Tabella delle pagine invert ita
..

,,' "'W
ll
:\i' l'
" ,
'.'
",:1.",
''"'. '1'
,
, 1,;1 1'-,
..").'i:
. ...?>.i

'"\'r-t'''
'\1: '
.. 'J
.. bJol
", 11'. _,j
" ,r'1il"
E gia. stato osservato che la PMT pub diventare eccessivamente ampia. Un modo per
conteneme la dimensione consiste nell'organizzare la tabella delle pagine in forma di
"tahella invertita" [JM98a], Schematicamente una tabella di pagine invertita (IPT)!At
P
resenta queste caratteristiche: .
.. 'I'' '"
:

",:1 ';,,:\1;
.. "" \'1'
, "", 1
b) ogni PTE contiene non il numero di pagina fisica (RPN), rna il numero di pagina
".l,I.;1'
virtuale (VPN); , , '",,;1.
'','I'l' , '.' ',,' 'J
,,", 'I
c) l'indicizzazione entro la tabella eottenuta attraverso una funzione hash.
, ;I(..
""1
In Figura8,? viene illustrata 1a struttura della e il meccanismo di traduzione
dell'indirizzo. La chiave di ricerca eVPN e 1a funzione hash produce un1associazione
tra i VPN e Ie posizioni in lPT. 'n,
, '.,
.' ,:Ill...
j
,_.
"
,,' ,1
.".
-, .... '0;.'
<.,

.
,
,,"
,
.. .' I
._,'f. :
. -j!;',.
...
.. '" . t,
'" i'i,
"
, :;:l.1
'liei''''
, (.

..,,;
, I'
":'\'
'J\l
," '''I!
-jt1t
I
'C
':'lll'
, 'I
,
!
.',,'.
",Ii,
..
".,i\!!
,...

346
\
I
I
I
1
\
I
I
I
\
\
, I
'. I
,
: \
. I \

bit, Qvvero si
h(k) e la somma bit a bit di due sottoinsiemi <Ii k ognuno di r
esegue 1a somma modulo 2 (XOR) tra i due sottoinsiemi,
", '
'k:'
,
,,'I'. '.

__ a:-
v
.:.ir::,:::tu:al,:::e_-=3:,:4:.:,7
-
..'..
)ii,j':,: ;
" ,.' .
<"' " Per via della relazione 1:1 tra PTE e pagine fisiche, se i1 campo VPN del PTE in
x contiene it nUIDera YI all?ra 130 y e pagina
fisica x. In altre parole, nella traduzlOoe dl un mdinzzo VlItuale, 81 ha se i1 PTE
selezionato dalla funzione h(VPN) contiene un numero (di pagina virtuale) uguale a
VPNi si ha fault in. caso cantracio. di cbiavi (il valore massim? di
VPN) malta supenore aJ DUIDero dl elementI In IPT, se k
i
e k
j
sono due genenche
con ki i- kj , epossibile che si abbia
J' .
h(k
i
) = h(k;)
che due (0 piu) VPN vadano a collidere sulla medesima posizione della IPT,
lj(;Wi;;rn.' 1,1.,,) " ,
:,ltJ:1i:"t\i;l- .", '.
"1h)'J,!r" ".'
L d'fi h h
,3.1 a co 1 ca as
da altre tecniche di ricerca piu castose, quali 1a scansione completa
0 la ncerca bmana, la tecmca hash tenta dl ncavare dlrettamente dalla cruave dl
la rnassima quantita possibile di informazione circa la posizione dell'elemento
[Luc72], [Knu70], Una funziane hash davrehhe, da un lata ridurre al minima
c?llisioni, dall',altro essere piu Esistono diversi modi per
It,j1,/reallzzare 1a funzlOne hash della ch,ave k; ne elenchlama brevemente alcune[Luc72],
!t1'!;v;,..':' a) h(k) eun sottainsieme di r hit di k;
"b) h(k) eresto della divisione tra la chiave e iI numero delle posizioni della tabella
15
;

"",'

.. c)
: ,t,l-.
"
,,, .., '
"
',' ":.
La soluzione del punto a) ha il pregio della semplicita., tuttavia non assicura una
buona distribuzione dei valori degli indicij quella del punto b) ebuona da! punto di
della degli indici
l
ha di!etto di essere lenta a causa
.. ;:-,q.lylslOnej la soluzlOne del punto c). ha 11 preglO dl essere poco onerosa punta dl
.,vista del calcolo e di generare una distribuzione uniforme degli indici
16
, E questa la
'.tecnica usata nell'architettura PowerPC (Figura8.43),

-,. '
.
',,.,""",,< ,;.,
''I
8.3,2 Gestione della tabella IPT ,
;(lfb: L:organizzazione di Figura8.7 epoco 6essibile e safIre di un problem" paiche un da-
to VPN non pub che finire in una sola, ben determinata posizione, se un programma
i ;:w, '., -,.-,
(l' _.-w,.-

"" .ISSi not.i che se R. e del 2 si ricade nel caso precedente, infatti il resto della division!!
, __ k/2'" COrrlspone agh ultlml n bit dl k.
L6La distribuzione deriva. dal fatto ch.e tabella di veriU,
XOR presenta. due zen e due UnI come nsultato. Se per esemplO Sl vuole mappare uno Spa.z1O dl 256
: . posizioni su uno di 16, la funzione bash pub essere ottenuta come XQR dei 4 bit piu significativi
con i 4 menD significativi del numero dato, Per la proprieta dell'operazione, gli iodici prodotti sono
.J::' . equamente su tutte le p08izioni. questa godooo gLi operatori
.. AND e OR che, mvece, tendooo ad accumulare gh mdlct su alcune paslzlon..
:,l:,.. . '."'!",'
"':'("H; \,
J)' _ oj.i!""" ,.
,.,1Ii"
,.'" ,Yo ";
'.,' V.":'_
, . -
Memoria Fisicll.
Palin.. lltllca 0
P.. gln.. tisle.. 1

.
,
1
Pallina IUle.. R- t
1
o
R-
l:t=l
IPT
0 Prot, 'PN
b
1 Prot.
VPN
.
,
nJNZIONE,
I,
""SN
Prol.
'PN
,
,
R-I Prot.
'PH
VPN
Capitolo 8
a) ha un numera di elementi pari al nurnew delle pagine fisiche;
140vviamente ci saranno parti speciali del sistema operativo che non potranco essere paginate (si
veda il Paragrafo 8,6.3). .
Figura 8.7 Tavola delle pagine invertita (IPT). La tavola presenta un numero di PTE
pari aI numero di pagine fisiche R. I PTE contengono (oltre alle informazioni relative alla.
protezione della pagina) il numero di pagina virtuale (VPN), L'indicizzazione in IPT efatta
attraverso una funzione hash che produce un indice h, compreso tra 0 e R - 1, per ogni VPN
(la chiave k). Dunque un data VPN pub trovarsi solo in una ben definita posizione,
comune eli pagine eli memoria
14
, A tale proposito si veda I'Esercizio8.L
8.3 Tabella delle pagine invert ita
..

,,' "'W
ll
:\i' l'
" ,
'.'
",:1.",
''"'. '1'
,
, 1,;1 1'-,
..").'i:
. ...?>.i

'"\'r-t'''
'\1: '
.. 'J
.. bJol
", 11'. _,j
" ,r'1il"
E gia. stato osservato che la PMT pub diventare eccessivamente ampia. Un modo per
conteneme la dimensione consiste nell'organizzare la tabella delle pagine in forma di
"tahella invertita" [JM98a], Schematicamente una tabella di pagine invertita (IPT)!At
P
resenta queste caratteristiche: .
.. 'I'' '"
:

",:1 ';,,:\1;
.. "" \'1'
, "", 1
b) ogni PTE contiene non il numero di pagina fisica (RPN), rna il numero di pagina
".l,I.;1'
virtuale (VPN); , , '",,;1.
'','I'l' , '.' ',,' 'J
,,", 'I
c) l'indicizzazione entro la tabella eottenuta attraverso una funzione hash.
, ;I(..
""1
In Figura8,? viene illustrata 1a struttura della e il meccanismo di traduzione
dell'indirizzo. La chiave di ricerca eVPN e 1a funzione hash produce un1associazione
tra i VPN e Ie posizioni in lPT. 'n,
, '.,
.' ,:Ill...
j
,_.
"
,,' ,1
.".
-, .... '0;.'
<.,

.
,
,,"
,
.. .' I
._,'f. :
. -j!;',.
...
.. '" . t,
'" i'i,
"
, :;:l.1
'liei''''
, (.

..,,;
, I'
":'\'
'J\l
," '''I!
-jt1t
I
'C
':'lll'
, 'I
,
!
.',,'.
",Ii,
..
".,i\!!
,...

346
\
I
I
I
1
\
I
I
I
\
\
, I
'. I
,
: \
. I \

I'
\
,
I
I
)
]
\
I
1
I
\
1
l
l
\
1
349
39
8
37
o
5
48
8
24
4
4
96
8
La memoria virtuale
70
o
2
66
6
61
1
1
37
o
13
3
3
24
4
60
o
o
70
o
61
1
13
3
60
o
VPN
h
RPN
VPN
h
il quarto riferimento eaneora O} rna la p05izione 0 eoccupata: occorre trovare
una posizione libera. Si ipotizza ehe 1a ricerea venga fatta col metoda della
scansione lineare (Figura 8.8), per cui viene presa la posizione 2
19
I cbe viene
messa nella lista originantesi in 0; cia richiede gli assegnamenti IPT[0],LINKf-2
e IPT[2j,LINKf- P;
3) i1 riferimento a.lla pagina virtuale 24 si mappa sulla.posizione 4} non ancora usata}
mentre 1a'pagina virtuale 37 fa generare allcora 0 aHa funzione hash: questa volta
la rieere'a lineare restituisce 5 e la tista che inizia in 0 si allunga con questa nuovo
elemento. A questa punto la situazione equesta (la terza riga riporta la pagina
fisica usata):
Seguiamo 10 svolgimento dei riferimenti:
1) it primo
l
il secondo e il terzo riferimento generano tre indici differenti (0, 3 e
1), per cui vengono oecupati i tre eorrispondenti PTE} facendo serivere in essi i
relativi VPN e ponendo tf> nei campi LINK;
lSSi Doti che qUe5tll. a88unzione e ll.lquanto teorica, infatti per generare n primo riferimento it
programma deve avere almena una pagina in memoria. E compito del siste.ma operativo avviare
il programma caricando in memoria centrale un numero rag1onevole di pagine iniziali e passare il
cantrollo a1 punta di entrata. Dal punto di vista del nostro studio si tratt30 di aspetti irrileva.nti (a
parte Ie complica.zioni pratiche).
19La scansione \ineare e effettuata con Ill. regota di esaminare 130 posizione ([h(k) +jJmodRJ),
incrementando j fino a. che non viene trovata una p08izione libera.
'.
IPT
0
h
,
Prot. Y.PNz

FuNZION(
,
HASH
Prot.
VPN)(
LlNK

k Pro1:.
VPN
y
LINK
l-

,
VPN
Capitolo8
a) detennina Quale pagina fisica utilizzare (quindi Quale p05izione occupare);
17n problema delle collisioni si pone comunque con Ie tabelle hash, indipendentemente da.1 principio
di localita: se si vogliono tenere jn tabella piiI elementi che 1a funzione hash mapperebbe sulla ste5sa
p08izione, e necessario costruire strutture a lista all'interno della tabella, in modo da trovare tali
elementi nella lista che inizia dalla p08izione di mappatura.
348
,_ "oil'.

, .


"I., ...:
"""i"lI:,C,.
.'.". r)<.!i ll., ,
"'i'l! ',J. "'-"\. :'
."
.\'1.:1 '
, ,
ci'";.!!
0'1, .'''.
' ..'
,"',
"'of, "
,. ..
'.';1.:.,
volta un fault. Occorre un rimedio, ancbe perche it principia di localita. di posizione h.
tenere in memoria Ie pagine piu frequentemente indirizzate
17
. Si cleve percio rinun- c a a chiarito piu avanti se 130 pagina fisica utilizzata era in uso (ovvero se il
ciare. ad i .VP:t:'l solo nelle posizioni ha.c;h, e .. roccupata)1 si cleve teder conto del fatto che 1a vm:ua1e essa allocata
10 BVlluppo dl liste III .. La schema m Flgura8.8. 51 fJf-,tt:::- poteva trovarsi a sua volta in una lista. In tal case di deve: (1)
eorda?o bene C.OD !a dinarmca della memona vutuale,.m quanto Ie ..1:;:. rima di tutto aggiornare questa lista, escludendo da essa il PTE mdiVlduato; (2)
a non possono essere oe:u?ate vantagglOsamente. d-:u descntt07'l delle Y ie are i1 PTE. come detto in precedenza. .
pagIne spesso rifente. In altre parole) Cl SI aspetta un processo dl tIpo adattatlvo che lmp g
porta ad avere in IPT un certo numero di liste, corrispondenti alle pagine pill spesso . _. .
indirizzate da1 programma. : ...: Un di esemt;>io rieorso a un esemplO numenco per illustrare alcum
.. , problerru nella gestIone dl 1PT. . ... . .
Ammettiamo di avere una IPT di 10 POSlZlOru comspondente a una memona
.>,!' . fisica di 10 pau1ne. Supponiamo che 10 spazio virtuale sia di 100 pagine e che 1a
0" , { 99} {O 9}
'funzione hash faecia da "imbuto" 10:1, ovvero riporti il campo 0... su ... .
. Partiamo dalla IPT vuota (e quindi anehe dalla memoria fisica vuota
18
) e assumiamo
che il programma generi la sequenza di riferimenti (VPN) sotto riportata e che la
... fS2-"./;'.' funzione hash produca la sequenza pure riportata.
. . '-" r.il.:.' .... ,
..... .. ,.. 1,
...lir,,j'- .',. , .
.'" ,jiJ1ii1' 1',:'",. '.' .
,. ",,,:f,<i! ('''''''.(''
',,. .. ,,'
-, I"" . ',: ' ...
'" :.
, ','.,
.."',,', . "",.'
','-' ... ",j ...
. ,
h" ,"'"
.. , ... ...
. .
....\II,!:>"
.. i" .. "
'.'
:'\'\wf .
."*"
Figura 8.8 Formazione di liste eli PTE nella tabella della pagine invertita. La funzione hash 2)
trasforma VPN in h. Ai fini Qella formazione delle liste ogni PTE contiene un puntatore ..:
(LINK). La figura mostra una lista di tre pagine virtuali (x, y e z)j cui VPN si mappano
sullo stesso h. n pallino scuro denota uil campo puntatore vuoto ovvero la nne della... . ..
La enata n.el modo seguente: IPT vuota: si epresentata la pagina
virtua1e x; 11 suo descnttore estato costrUIto ill pOSlzlOne h con II campo LINK posto a <I
(vuoto); successivamente si epresentata la pagina y e, non essendo libera la posizione hI e
stata presa la posizi'one k can una tecnica di scansione linearej il relativo PTE stato messo :' >/1, ",
in a seguire .que!1o lnfiIl;e si epresentata 1a pagina Z che e sistemata nella
poslzlone 1 (fo.rruta dalla ncerca hneare che h.a deborclato oltre la mlsura della tabella) e .
accodata alIa bsta. til;,".: .
.. i ,.
,;,,-!'i ij{.;lf/?;'
.. .' . ,'
" '
:....
In riferimento alla Figura8.B, si ha hit quando IPT[h].VPN=VPNj in caso,contra.-- '.?,{t"
rio oecorre seguire la catena fino al tennine. Si ha miss 5e viene raggiunto {'ultimo, .:
elemento in lista senza che sia trovato il VPN. L'algoritrno che tratta it miss funziona
. ., .. ' ..,.'
, t d ";"'"1iSl ''';.11'1 ,',
m ques 0 rna 0: .
.' .."'i'
.-:..'-.. Y.,',
N. '. .. ,><.

':'l
.-.", ....
...
, "0 ,;'-
.... ..
"c,.')'''', .
..,-.",'R '"
... .. ,'-'".

i> '1'
3::' , . '.
"i-o', ,.
" ;1"-'"
i' :
," "
1,1- t. '-.,t .;
"

I'
\
,
I
I
)
]
\
I
1
I
\
1
l
l
\
1
349
39
8
37
o
5
48
8
24
4
4
96
8
La memoria virtuale
70
o
2
66
6
61
1
1
37
o
13
3
3
24
4
60
o
o
70
o
61
1
13
3
60
o
VPN
h
RPN
VPN
h
il quarto riferimento eaneora O} rna la p05izione 0 eoccupata: occorre trovare
una posizione libera. Si ipotizza ehe 1a ricerea venga fatta col metoda della
scansione lineare (Figura 8.8), per cui viene presa la posizione 2
19
I cbe viene
messa nella lista originantesi in 0; cia richiede gli assegnamenti IPT[0],LINKf-2
e IPT[2j,LINKf- P;
3) i1 riferimento a.lla pagina virtuale 24 si mappa sulla.posizione 4} non ancora usata}
mentre 1a'pagina virtuale 37 fa generare allcora 0 aHa funzione hash: questa volta
la rieere'a lineare restituisce 5 e la tista che inizia in 0 si allunga con questa nuovo
elemento. A questa punto la situazione equesta (la terza riga riporta la pagina
fisica usata):
Seguiamo 10 svolgimento dei riferimenti:
1) it primo
l
il secondo e il terzo riferimento generano tre indici differenti (0, 3 e
1), per cui vengono oecupati i tre eorrispondenti PTE} facendo serivere in essi i
relativi VPN e ponendo tf> nei campi LINK;
lSSi Doti che qUe5tll. a88unzione e ll.lquanto teorica, infatti per generare n primo riferimento it
programma deve avere almena una pagina in memoria. E compito del siste.ma operativo avviare
il programma caricando in memoria centrale un numero rag1onevole di pagine iniziali e passare il
cantrollo a1 punta di entrata. Dal punto di vista del nostro studio si tratt30 di aspetti irrileva.nti (a
parte Ie complica.zioni pratiche).
19La scansione \ineare e effettuata con Ill. regota di esaminare 130 posizione ([h(k) +jJmodRJ),
incrementando j fino a. che non viene trovata una p08izione libera.
'.
IPT
0
h
,
Prot. Y.PNz

FuNZION(
,
HASH
Prot.
VPN)(
LlNK

k Pro1:.
VPN
y
LINK
l-

,
VPN
Capitolo8
a) detennina Quale pagina fisica utilizzare (quindi Quale p05izione occupare);
17n problema delle collisioni si pone comunque con Ie tabelle hash, indipendentemente da.1 principio
di localita: se si vogliono tenere jn tabella piiI elementi che 1a funzione hash mapperebbe sulla ste5sa
p08izione, e necessario costruire strutture a lista all'interno della tabella, in modo da trovare tali
elementi nella lista che inizia dalla p08izione di mappatura.
348
,_ "oil'.

, .


"I., ...:
"""i"lI:,C,.
.'.". r)<.!i ll., ,
"'i'l! ',J. "'-"\. :'
."
.\'1.:1 '
, ,
ci'";.!!
0'1, .'''.
' ..'
,"',
"'of, "
,. ..
'.';1.:.,
volta un fault. Occorre un rimedio, ancbe perche it principia di localita. di posizione h.
tenere in memoria Ie pagine piu frequentemente indirizzate
17
. Si cleve percio rinun- c a a chiarito piu avanti se 130 pagina fisica utilizzata era in uso (ovvero se il
ciare. ad i .VP:t:'l solo nelle posizioni ha.c;h, e .. roccupata)1 si cleve teder conto del fatto che 1a vm:ua1e essa allocata
10 BVlluppo dl liste III .. La schema m Flgura8.8. 51 fJf-,tt:::- poteva trovarsi a sua volta in una lista. In tal case di deve: (1)
eorda?o bene C.OD !a dinarmca della memona vutuale,.m quanto Ie ..1:;:. rima di tutto aggiornare questa lista, escludendo da essa il PTE mdiVlduato; (2)
a non possono essere oe:u?ate vantagglOsamente. d-:u descntt07'l delle Y ie are i1 PTE. come detto in precedenza. .
pagIne spesso rifente. In altre parole) Cl SI aspetta un processo dl tIpo adattatlvo che lmp g
porta ad avere in IPT un certo numero di liste, corrispondenti alle pagine pill spesso . _. .
indirizzate da1 programma. : ...: Un di esemt;>io rieorso a un esemplO numenco per illustrare alcum
.. , problerru nella gestIone dl 1PT. . ... . .
Ammettiamo di avere una IPT di 10 POSlZlOru comspondente a una memona
.>,!' . fisica di 10 pau1ne. Supponiamo che 10 spazio virtuale sia di 100 pagine e che 1a
0" , { 99} {O 9}
'funzione hash faecia da "imbuto" 10:1, ovvero riporti il campo 0... su ... .
. Partiamo dalla IPT vuota (e quindi anehe dalla memoria fisica vuota
18
) e assumiamo
che il programma generi la sequenza di riferimenti (VPN) sotto riportata e che la
... fS2-"./;'.' funzione hash produca la sequenza pure riportata.
. . '-" r.il.:.' .... ,
..... .. ,.. 1,
...lir,,j'- .',. , .
.'" ,jiJ1ii1' 1',:'",. '.' .
,. ",,,:f,<i! ('''''''.(''
',,. .. ,,'
-, I"" . ',: ' ...
'" :.
, ','.,
.."',,', . "",.'
','-' ... ",j ...
. ,
h" ,"'"
.. , ... ...
. .
....\II,!:>"
.. i" .. "
'.'
:'\'\wf .
."*"
Figura 8.8 Formazione di liste eli PTE nella tabella della pagine invertita. La funzione hash 2)
trasforma VPN in h. Ai fini Qella formazione delle liste ogni PTE contiene un puntatore ..:
(LINK). La figura mostra una lista di tre pagine virtuali (x, y e z)j cui VPN si mappano
sullo stesso h. n pallino scuro denota uil campo puntatore vuoto ovvero la nne della... . ..
La enata n.el modo seguente: IPT vuota: si epresentata la pagina
virtua1e x; 11 suo descnttore estato costrUIto ill pOSlzlOne h con II campo LINK posto a <I
(vuoto); successivamente si epresentata la pagina y e, non essendo libera la posizione hI e
stata presa la posizi'one k can una tecnica di scansione linearej il relativo PTE stato messo :' >/1, ",
in a seguire .que!1o lnfiIl;e si epresentata 1a pagina Z che e sistemata nella
poslzlone 1 (fo.rruta dalla ncerca hneare che h.a deborclato oltre la mlsura della tabella) e .
accodata alIa bsta. til;,".: .
.. i ,.
,;,,-!'i ij{.;lf/?;'
.. .' . ,'
" '
:....
In riferimento alla Figura8.B, si ha hit quando IPT[h].VPN=VPNj in caso,contra.-- '.?,{t"
rio oecorre seguire la catena fino al tennine. Si ha miss 5e viene raggiunto {'ultimo, .:
elemento in lista senza che sia trovato il VPN. L'algoritrno che tratta it miss funziona
. ., .. ' ..,.'
, t d ";"'"1iSl ''';.11'1 ,',
m ques 0 rna 0: .
.' .."'i'
.-:..'-.. Y.,',
N. '. .. ,><.

':'l
.-.", ....
...
, "0 ,;'-
.... ..
"c,.')'''', .
..,-.",'R '"
... .. ,'-'".

i> '1'
3::' , . '.
"i-o', ,.
" ;1"-'"
i' :
," "
1,1- t. '-.,t .;
"

.. I \
.., I
60
2
e.
0
70 5 I-'
13
0
,
2'
I
;
37
0 ..>/
,
66
0
,
39
0
""'
3 96 9
,
.e 7 ./
che non ha senso allungare la lista che passa per 9; bisogna fare iniziare una. nuova lista da 9, con
cio rinunciando a tenere la. pagina 48 (5i veda l'Esercizio 8.11) .
22Se la pagina virtua.le 61 e stata modifica.ta., e necessario che il contenuto della. pagina fisica 1
venga copia.to in memoria. di masSa sulla pagina 61, prima di cancare la DUOVa. pagina virtuale,
60 2
61

70 5
K
13
0
24 0
'7
0
66 0
,g
0
=)) I
96
a
o
1
2
,

5
6
7
7
6 6.
8,' 9,
8. 6.
6. 5.
o. 4.
4. 2,
o. 1.
1.
,.
3.
0,
o.
60, 13, 61, 70, 24, 37, 66, 96, 48, 39
h
vPN
RPN
.
'.':;, ':!:-,

L .. tuale 351
<'1 I .. ......::....__
_'.; ....l. .. _ _'
r;
}.1
,:,f.' ,;J!''; ",' ,
4) ulteriori riferimenti (66 e 96) generano indici di PTE non aneora llsati (6, tenesse .solo delle della usa?"do la 4 per
':';,1 :" '-, la. pagina vlrtuale 84, runplazzando 1a pagma 24. Dl norma 51 prefensce segurre una
'' .. ,".,." LRU (Cf 8 6 2)
5) il prossimo riferimento (48) genera aneara l'indice 8. Essendo la osizione DCC '4 - ... . _, .,. .
pata la scansione della tabella trova 13 pas,z,o e 9 lb. P
t
, ,,, Per mettere matte la gestlOne LRU e necessano che il SIstema operatIve tenga
. ' n I era, ques a Vlene meSSa ,/. \. (. LRU) . d I'd d I . AI t d'
In coda alia lista che parte da 8 (per il momento ta lista f d 'una lista 1a hsta per ncer are or me eg I acCes5l. memen 0 I un page
pagine: la 96 e la 48); ques con Iene ue fault, il sistema operative riardina 1a lista, in modo da tener. dei
. . . " . avu.tisi tra il fault e c?rrente. Con la tabella mvertlta convlene the
6) il rifenm.ento alia virtuale 39 generare dl nuovo 8. La 5cansione I.a}l,sta LRU. Sla realI, .
tabella nporta la pOSIZlone 7
20
che fimsce col chiudere la lista che si origina in :.- ,,'- 11 nordmamento lista LRy al gene-
.. ,..., pagma vutuale 84 produca 1a lista LRU nportata a SlDlstra In Flgura8,lO.
La sltuazlone dopa 1 10 rifenmentl e quella illustrata in Figura8.9. ,
' '
","I:, IPT IPT
",-" ,-'
0 -60.--- 2 0
1 &1 x
. .
, ',,' - 2 70 5 2
..., ..
. 84 rUNZION( 4 _ 3 13 3
',"'._ HASH
. ':;':;i'"; -' .'
,,',,- ,'" '. -.
. !tl:ii!."'.".....
..,t.'.1' :';", ""
., , .- ,
.r 'ft"",,-:,
, ,,;it '
""\11'
I
I

9 48 7 .:,!"'i1"
. , :1,,,,,. "lX>'\""- ".'
8:9 A sinistra. viene la., sequenza di .10 i h e I
pagme fislche allocate. A destra r.lp,0:tata. la. SltuazlOne In IPT dopo l'ultimo _,_ '-'-'-''-l...'-J.-''--.'-''-J..':-:-''-''''-l-''-J-'-
Avendo condizlone llliziale di tabella vuota, i 10 riferimenti (a pagine:;,;Jl. ..:' _-:_ LRU . . ,.
hann? tuttI un page fault cd e stata. per essi alloc3ota una. pagin30 .. I:, Figura 8.10 dl un page fault.; A slDlStra c e, 10 de.lla 1FT al m9mento
fislC.a. A daUa di figura, se .i1 rimanesse sempre in queste 10 I., fault; La lista e che ,nsulta dopo che e stata rJordmata tener del
pagme nOD. plU fault e la traduzlone dell'indirizzo procederebbe attraverso la ,I/,%},;.i", rifenmentl aile pagrne mtercorSl tra il e corrente fault. La LRU dlce che
IPT (noD 51, tlene .oVVlamente conto della presenza del TLB). In alcuni casi, per esempio con }:if,; 130 fisica da, e,la 1. il campo .LINK alIa poslzlOne 4 l!l vuoto, la
VPN=39, Sl ha hit dopo a.ver percorso parte della relativa.lista.. della. solo tl SU,O agglOrnamento 1ll modo da puntare a 1. A
.":lene 1a Sltuazlone a conclusione del trattamento del fault,
Fino a questa punta estato considerato solo il caso di, dover sistemare un PTE in ::1: ..' La lista di Figura8.10 inizia con il numero della pagina fisica riferita pi" in Ii< nel
una vuota..Se. II arnva la tabella e piena, occorre identificare tempo (quella da usare) e termma con 1,1 numero p1.U recente.
(VIrtuale) Vlttuna, m modo da Impiegare la pagina fisica da essa occupata:W' .notiche la lista LRU ediversa dalla stnngs. dell'ordme eli al!ocazlOne dl FlguraB.9; Cl()
e il in IPT. per la nuova pagina virtuale. Cio comporta un certo indica che l'esecuzione de,l programma ha la 1 come quella riferita piu in Ia.
aggravlO nella gestlOne delle liste. Wl1.y:;.;;,:., nel tempo. La lista termma comunque con 1a pagma 7 che, per essere stata sceIta sui
A titoIo di che ora.il programma indirizzi 1a pagina virtuale . (queUo re1ativo alia virtua1e 39), ,e certamente riferita
numero e che il TlSpettlvo valore hash Sla 4. La pagina 84 non e in memoria, I tra 1 due ultlIDl fault. Guardando 1a lista 51 vede ehe nell evoluzlOne del programma
31 ha page fault) rna questa volta non ci sono pili posizioni libere in IPT. n la pagina 6 estata. indirizzata piu di reeente delle pagine 8 e 9, mentre le pagine 8, 2,
SIstema operativo deve Quale pagina scegliere come vittima da sacrificare per 4,' 5 e 3 hanno avuta riferime,nti pili prossimi della. 9. , '
fare posto alia nuova pagma . Potrebbe es5ere arlottata una regola di sostituzione ');." "': La lista. LRU che 11 contenuto della pagma fislca 1 e a
'. -_della pagina 84
22
. Agglornata 1a IPT, come nella parte destra dl FIguraB.IO, pnma
-:<,1,('" .-
;,S?;fi;{.""-;
'. ','-
r,
.". , ..... .

. ...... (';j,.q ,.' " ,

'/'1
""1
, j' '. 'il:,,"':' .
..\ , ,"W
o
"" ,
I '::1 .
2In questa caso la acansione deborda illimite basso della tabella e riparte dall'alto fino a trovare
la 7.
21Si deve osservare che la gestione delle Hste ba qualche complicazione anche nel CaBO in cui non
ci sia. da effettuare la sostituzione di pagina. Riferendoci alia sequenza. dei primi 10 riferimenti, si
supponga che 1a funzione hash generi per il decimo riferimento l'indice 9 anzicM 1'8: efacile verificare
\
\
I
I
\
I
I
!
1
I
I
\
, I

..
..
..
.. I \
.., I
60
2
e.
0
70 5 I-'
13
0
,
2'
I
;
37
0 ..>/
,
66
0
,
39
0
""'
3 96 9
,
.e 7 ./
che non ha senso allungare la lista che passa per 9; bisogna fare iniziare una. nuova lista da 9, con
cio rinunciando a tenere la. pagina 48 (5i veda l'Esercizio 8.11) .
22Se la pagina virtua.le 61 e stata modifica.ta., e necessario che il contenuto della. pagina fisica 1
venga copia.to in memoria. di masSa sulla pagina 61, prima di cancare la DUOVa. pagina virtuale,
60 2
61

70 5
K
13
0
24 0
'7
0
66 0
,g
0
=)) I
96
a
o
1
2
,

5
6
7
7
6 6.
8,' 9,
8. 6.
6. 5.
o. 4.
4. 2,
o. 1.
1.
,.
3.
0,
o.
60, 13, 61, 70, 24, 37, 66, 96, 48, 39
h
vPN
RPN
.
'.':;, ':!:-,

L .. tuale 351
<'1 I .. ......::....__
_'.; ....l. .. _ _'
r;
}.1
,:,f.' ,;J!''; ",' ,
4) ulteriori riferimenti (66 e 96) generano indici di PTE non aneora llsati (6, tenesse .solo delle della usa?"do la 4 per
':';,1 :" '-, la. pagina vlrtuale 84, runplazzando 1a pagma 24. Dl norma 51 prefensce segurre una
'' .. ,".,." LRU (Cf 8 6 2)
5) il prossimo riferimento (48) genera aneara l'indice 8. Essendo la osizione DCC '4 - ... . _, .,. .
pata la scansione della tabella trova 13 pas,z,o e 9 lb. P
t
, ,,, Per mettere matte la gestlOne LRU e necessano che il SIstema operatIve tenga
. ' n I era, ques a Vlene meSSa ,/. \. (. LRU) . d I'd d I . AI t d'
In coda alia lista che parte da 8 (per il momento ta lista f d 'una lista 1a hsta per ncer are or me eg I acCes5l. memen 0 I un page
pagine: la 96 e la 48); ques con Iene ue fault, il sistema operative riardina 1a lista, in modo da tener. dei
. . . " . avu.tisi tra il fault e c?rrente. Con la tabella mvertlta convlene the
6) il rifenm.ento alia virtuale 39 generare dl nuovo 8. La 5cansione I.a}l,sta LRU. Sla realI, .
tabella nporta la pOSIZlone 7
20
che fimsce col chiudere la lista che si origina in :.- ,,'- 11 nordmamento lista LRy al gene-
.. ,..., pagma vutuale 84 produca 1a lista LRU nportata a SlDlstra In Flgura8,lO.
La sltuazlone dopa 1 10 rifenmentl e quella illustrata in Figura8.9. ,
' '
","I:, IPT IPT
",-" ,-'
0 -60.--- 2 0
1 &1 x
. .
, ',,' - 2 70 5 2
..., ..
. 84 rUNZION( 4 _ 3 13 3
',"'._ HASH
. ':;':;i'"; -' .'
,,',,- ,'" '. -.
. !tl:ii!."'.".....
..,t.'.1' :';", ""
., , .- ,
.r 'ft"",,-:,
, ,,;it '
""\11'
I
I

9 48 7 .:,!"'i1"
. , :1,,,,,. "lX>'\""- ".'
8:9 A sinistra. viene la., sequenza di .10 i h e I
pagme fislche allocate. A destra r.lp,0:tata. la. SltuazlOne In IPT dopo l'ultimo _,_ '-'-'-''-l...'-J.-''--.'-''-J..':-:-''-''''-l-''-J-'-
Avendo condizlone llliziale di tabella vuota, i 10 riferimenti (a pagine:;,;Jl. ..:' _-:_ LRU . . ,.
hann? tuttI un page fault cd e stata. per essi alloc3ota una. pagin30 .. I:, Figura 8.10 dl un page fault.; A slDlStra c e, 10 de.lla 1FT al m9mento
fislC.a. A daUa di figura, se .i1 rimanesse sempre in queste 10 I., fault; La lista e che ,nsulta dopo che e stata rJordmata tener del
pagme nOD. plU fault e la traduzlone dell'indirizzo procederebbe attraverso la ,I/,%},;.i", rifenmentl aile pagrne mtercorSl tra il e corrente fault. La LRU dlce che
IPT (noD 51, tlene .oVVlamente conto della presenza del TLB). In alcuni casi, per esempio con }:if,; 130 fisica da, e,la 1. il campo .LINK alIa poslzlOne 4 l!l vuoto, la
VPN=39, Sl ha hit dopo a.ver percorso parte della relativa.lista.. della. solo tl SU,O agglOrnamento 1ll modo da puntare a 1. A
.":lene 1a Sltuazlone a conclusione del trattamento del fault,
Fino a questa punta estato considerato solo il caso di, dover sistemare un PTE in ::1: ..' La lista di Figura8.10 inizia con il numero della pagina fisica riferita pi" in Ii< nel
una vuota..Se. II arnva la tabella e piena, occorre identificare tempo (quella da usare) e termma con 1,1 numero p1.U recente.
(VIrtuale) Vlttuna, m modo da Impiegare la pagina fisica da essa occupata:W' .notiche la lista LRU ediversa dalla stnngs. dell'ordme eli al!ocazlOne dl FlguraB.9; Cl()
e il in IPT. per la nuova pagina virtuale. Cio comporta un certo indica che l'esecuzione de,l programma ha la 1 come quella riferita piu in Ia.
aggravlO nella gestlOne delle liste. Wl1.y:;.;;,:., nel tempo. La lista termma comunque con 1a pagma 7 che, per essere stata sceIta sui
A titoIo di che ora.il programma indirizzi 1a pagina virtuale . (queUo re1ativo alia virtua1e 39), ,e certamente riferita
numero e che il TlSpettlvo valore hash Sla 4. La pagina 84 non e in memoria, I tra 1 due ultlIDl fault. Guardando 1a lista 51 vede ehe nell evoluzlOne del programma
31 ha page fault) rna questa volta non ci sono pili posizioni libere in IPT. n la pagina 6 estata. indirizzata piu di reeente delle pagine 8 e 9, mentre le pagine 8, 2,
SIstema operativo deve Quale pagina scegliere come vittima da sacrificare per 4,' 5 e 3 hanno avuta riferime,nti pili prossimi della. 9. , '
fare posto alia nuova pagma . Potrebbe es5ere arlottata una regola di sostituzione ');." "': La lista. LRU che 11 contenuto della pagma fislca 1 e a
'. -_della pagina 84
22
. Agglornata 1a IPT, come nella parte destra dl FIguraB.IO, pnma
-:<,1,('" .-
;,S?;fi;{.""-;
'. ','-
r,
.". , ..... .

. ...... (';j,.q ,.' " ,

'/'1
""1
, j' '. 'il:,,"':' .
..\ , ,"W
o
"" ,
I '::1 .
2In questa caso la acansione deborda illimite basso della tabella e riparte dall'alto fino a trovare
la 7.
21Si deve osservare che la gestione delle Hste ba qualche complicazione anche nel CaBO in cui non
ci sia. da effettuare la sostituzione di pagina. Riferendoci alia sequenza. dei primi 10 riferimenti, si
supponga che 1a funzione hash generi per il decimo riferimento l'indice 9 anzicM 1'8: efacile verificare
\
\
I
I
\
I
I
!
1
I
I
\
, I

..
..
..
I.
t
)
! .
)
)
I

(
\
\
t
I
(
!
1
I
I
La memoria virtuale 353
c.;e-:......------------====-=:::.:..--'-'-'.
i!f!.I1 . ,
r' .
contelluto nell'elemellto da escludere".
,,!,;:;J,' 10,','
0 piu 1PT? . Si e visto che nel caso della PMT conviene avere una
..<di traduzione per claseun processo. Nel easo della IPT non e questa la soluzlOne
conveniente: a e ad avere tabelle .con
di elementl pan al numero di pagme fislChe
25
j se a ClasCun processo Vlene
"",r,w' IPT . 1 eli 1 t' t" I'
, q,:esta nsu ta me amente mo to vuo 3, ":1 quan 0 lIDplega so 0 1
relatlvl aIle da! stesso. ill.ustrato nel Paragrafo
nel PowerPC 51 neorre alia soluzlOne del punta 2 dl pagma 341.
"
'
7,
II problema delle catene troppo lunghe
,.':,.i;:f .... -
i .. -,__-" - -
tabel.la invertita puo accadere dover una lunga puntatori
VPN con delle prestazlOIll. Ancbe s:
macchma e dotata dI TLB, per CUI la naVlgazIOne In IPT ha luogo solo quando 11
n?n fornisee la traduzione, e che Ie. non
adisffiIBura (nel nostro modello e teoneamente pOBslblle ehe 51 forml una lista ehe
,IF!; .cia aC,eadere quand? BU una posizione si mappano un
dl mdmzzI.V1rtuah pan di ill tabella). .
. -: Un modo per ndurre la posslbilita di espanslOne delle eatene cons1ste nel mettere
tabella, con funzione di "espansione
n
della gamma dei valori hash. La tabella
iI, di Hash 4n0or Table (HAT). Essa altro ehe
fih1lprovvedere un livello dl mdinzzamento mdiretto, secondo 10 schema.di Flgura8.12.
n rieorso a chia.:isee la della HAT. Supponiamo
ill.. t;ll'l{i0;,fll. avere un masSlmo dt 16 pagme virtUall e 4 pagme fislcbe. La IPT cleve avere
4. Una funzione hash gli indi.ei
VPN sullo stesso elemento lD 1FT. E dunque posslblle che Ie llste In lPT
a a 4 ele.menti, tutta. Se ora si una
lunga 8 POS1Z10Dl, una funzlone hash equilibrata mapped, al maBSlIIlO due VPN
stesse elemento di HAT. Dunque Ie liste in IPT non potranno essere mai piu
cl';-':;J;Lllnghe di 2. In sintesi, la lunghezza ,"?assima delle liste inversamente proporzionale
/'o'ii!'*';Ula lungbezza della HAT. NelJ'arehltettura Power" Vlene usata una tabella HAT
;( '.' ,
" _
.. -;0'::::--,--,---,------::----
inoltre da.. coosidera,:-e i.1 problema. Si al caso. dl Figu:a. 8.11 e si
ora ill. hata ,mdlc.hl che e5sere sostltUlta Ill. vtrtuale 8 aDZlche
9. Se I'elemento 8 vlene hsta che da 3, togliend:,lo (8,9,7), Ill. hsta
(9,7) avrebbe Ill. poslzlone dl partenza ID 9, mentre Ie pagtne V1rtUali In essa contenute
, :{.1ULl$:;:)" mappano in 8. In altre parole, se l'elemento da sostituire e il primo di una lunga piu di
:;;1' Ill. sua e i.l suo in un'a.ltra list.a PD.:ta Cib ,impone
non sostltuzlOne del pnmo elemento dl una. catena lunga PIU di uno. Ma comporta tl dover
, 'I. ae un elemento ii primo della !ista.. A tale scopo si hanno due alternatlV1!l: (a.) aggiungere
'it speciale marcamento, oppure (b) organizzare Ill. lista con puntatori in avant! e all'indletro. Nel
si illustra un esempio di memoria gestita con tabella di pagine invertita (quella del PowerPC)
in modo da minimizzare il carico dovuto alia. scansione delle li8te.
_5Parlando del PowerPC si vedra. che in numero di elementi in IPT pub essere in rea.lta. proponio-
,it;'ilH';) '. J,lale (non pari) a1 numero dl pagine, rna secondo un coefficiente di proporzion&lita. molto basso (cioe
. )
, ....
architettura e stata introdotta dall'rBM a fine anni ottanta e ba fatto da progenitrice
il!t'!i!Gif)L_ ,dell archltettura PowerPC.

,
9
I
IPT
60
-
e.
70
13

TI
66
".
-
..
63
IPT
.0 2
r-..
S.

70
,
13
2' I
./
37

66

39

"
96 9
'S
7
o
, I
913J4121816J710 1:511
2
63
1
rUNZIDNE
HASH S

7
S
9
-...'
;;[!
':'''''',ill

-"
3-"52=----=C:.:a"p:.:'.t.::oI.::o:.:8C-
.
.
: ..
'< '
. i '

,,'I, ,
di restituire il cantralla ai programmi oecorre aggiornare anche la lista LRU
1 in coda
23
. AlIa ripartenza del programma verra aneora generato il riferimento
pagina virtual.. 84 e Ia funzione hasb dara h=4, essendo IPT[4J.VPN;i84, la lista,che.:}t!
parte poslzlone. 4 verra percorsa fino trovare 84 nel PTE 10 POSIZlone 1.,
In FIgura 8.11 VIane trattato un caso PIll complesso del precedente. La pagma 63
determina un fault alla posizione 3 (da 3 non parte alcuna lista). Questa volta la
LRU indica che deve essere sacrificata la pagina in posizione 9 (Ia 48), rna la pagina
48 inserita in. una Iista, qu:ella che inizia dalla posizione 8. E dunque necessaria:
aggIOrnare la lista che contlene l'elemento 9, escludendo Felemento stesso dalla
(Rer cui8 deve finire col puntarea 7) ; (ii) utilizzare il PTE 9 per tellere
(111) agglOrnare la hsta che UllZla ill 3 ponendo m coda l'elemento 9,
;,
....
-, , _ ..

-,;
., "
'.-- '!J
, ,"".
, ..
;, ..u;;'1
, "" ..""'"
"" , l, "!r;'l
, ,'.
';lli!'" I
'ir{'ll '
,
j

, "".:.:.'i,:.,
'\'.-",
.:-

-
,ii;?{-
.
",
, ,.W.,'.
'- l}
8 6 7 0 :5 I 9
..
Us'to. LRU Lls'to LRU ':
, ,I'!'
Figura 8.11 Questo page fault segue queUo della figura. precedente. 'Ita i due fault i
rimenti h.anno la Ii,sta LRU: son,o state indirizzate 1a pagina 0 e la, 5,
ora sono m coda alla hsta, assiCme alIa pagm& 1 che eertamente ha avuto un nfenmento pet:
aver determinate il fault precedente, La pagina viriuale 63 non e in memoria:
LRU determina la sostituzione della pagina virtnaIe in 9 (la 48). L'aggiornamento della
richiede l'aggiornamento di due liste: quella che si originava in 8, da cui viene sottratto
e quella cbe si. ongina in 3, che ora COD. in coda.
Per.1'agglOrnamento la hsta cleve essere percorsa dall'mlZIO (Ia POS1Zlone dl JnlZIO edata da!.
codlce hash de1Pelemento da escludere),
.::;,,:t.ij --',
. "',..
"'.,:T-.l!"i1;
'.,;If.."
.'."":iIi
caso mostra che da u:>D solo lista in cui si
una pagma
,
rna anche quella da CUI la pagma nmplazzata Vlene esclusa. La LRU
fornisee il PTE da usare
,
rna, se questo non ei1 primo della lista
,
Hsuo aggiornament6'
richiede ehe 5i risalga all'elemento che 10 precede. A tal fine, oecorre percorrere la
lista in cui si trova l'elemento da escludere (essa parte dana posizione eorrispondente..
al suo eodice hash) e aggiomare il puntatore contenuto nell'elemento ehe precede con

'.-
ii?
- -- ,
23E necessario cbe Ill. pagina 1 yenga mesaa in coda. in quanto il controllo tomera. a un programma
diverso da quello cbe ha generato il page fault; queat'ultimo potrebbe, a sua volta, generare un pas;e
fa.ult e au di esso non deve essere usatala pagina L Alternativamente, Ill. pagina 1 pub venire escluaa.
dalla Hsta LRD per tutto it tempo richiesto per il caricamento della pagina 84 e inserita in fQndo alia,
, " ',.; ..
Hsta al termine del carlcamento stesso ..'loj-
... ,,;
, ..
', ..
,
,1, ';1/.
I.
t
)
! .
)
)
I

(
\
\
t
I
(
!
1
I
I
La memoria virtuale 353
c.;e-:......------------====-=:::.:..--'-'-'.
i!f!.I1 . ,
r' .
contelluto nell'elemellto da escludere".
,,!,;:;J,' 10,','
0 piu 1PT? . Si e visto che nel caso della PMT conviene avere una
..<di traduzione per claseun processo. Nel easo della IPT non e questa la soluzlOne
conveniente: a e ad avere tabelle .con
di elementl pan al numero di pagme fislChe
25
j se a ClasCun processo Vlene
"",r,w' IPT . 1 eli 1 t' t" I'
, q,:esta nsu ta me amente mo to vuo 3, ":1 quan 0 lIDplega so 0 1
relatlvl aIle da! stesso. ill.ustrato nel Paragrafo
nel PowerPC 51 neorre alia soluzlOne del punta 2 dl pagma 341.
"
'
7,
II problema delle catene troppo lunghe
,.':,.i;:f .... -
i .. -,__-" - -
tabel.la invertita puo accadere dover una lunga puntatori
VPN con delle prestazlOIll. Ancbe s:
macchma e dotata dI TLB, per CUI la naVlgazIOne In IPT ha luogo solo quando 11
n?n fornisee la traduzione, e che Ie. non
adisffiIBura (nel nostro modello e teoneamente pOBslblle ehe 51 forml una lista ehe
,IF!; .cia aC,eadere quand? BU una posizione si mappano un
dl mdmzzI.V1rtuah pan di ill tabella). .
. -: Un modo per ndurre la posslbilita di espanslOne delle eatene cons1ste nel mettere
tabella, con funzione di "espansione
n
della gamma dei valori hash. La tabella
iI, di Hash 4n0or Table (HAT). Essa altro ehe
fih1lprovvedere un livello dl mdinzzamento mdiretto, secondo 10 schema.di Flgura8.12.
n rieorso a chia.:isee la della HAT. Supponiamo
ill.. t;ll'l{i0;,fll. avere un masSlmo dt 16 pagme virtUall e 4 pagme fislcbe. La IPT cleve avere
4. Una funzione hash gli indi.ei
VPN sullo stesso elemento lD 1FT. E dunque posslblle che Ie llste In lPT
a a 4 ele.menti, tutta. Se ora si una
lunga 8 POS1Z10Dl, una funzlone hash equilibrata mapped, al maBSlIIlO due VPN
stesse elemento di HAT. Dunque Ie liste in IPT non potranno essere mai piu
cl';-':;J;Lllnghe di 2. In sintesi, la lunghezza ,"?assima delle liste inversamente proporzionale
/'o'ii!'*';Ula lungbezza della HAT. NelJ'arehltettura Power" Vlene usata una tabella HAT
;( '.' ,
" _
.. -;0'::::--,--,---,------::----
inoltre da.. coosidera,:-e i.1 problema. Si al caso. dl Figu:a. 8.11 e si
ora ill. hata ,mdlc.hl che e5sere sostltUlta Ill. vtrtuale 8 aDZlche
9. Se I'elemento 8 vlene hsta che da 3, togliend:,lo (8,9,7), Ill. hsta
(9,7) avrebbe Ill. poslzlone dl partenza ID 9, mentre Ie pagtne V1rtUali In essa contenute
, :{.1ULl$:;:)" mappano in 8. In altre parole, se l'elemento da sostituire e il primo di una lunga piu di
:;;1' Ill. sua e i.l suo in un'a.ltra list.a PD.:ta Cib ,impone
non sostltuzlOne del pnmo elemento dl una. catena lunga PIU di uno. Ma comporta tl dover
, 'I. ae un elemento ii primo della !ista.. A tale scopo si hanno due alternatlV1!l: (a.) aggiungere
'it speciale marcamento, oppure (b) organizzare Ill. lista con puntatori in avant! e all'indletro. Nel
si illustra un esempio di memoria gestita con tabella di pagine invertita (quella del PowerPC)
in modo da minimizzare il carico dovuto alia. scansione delle li8te.
_5Parlando del PowerPC si vedra. che in numero di elementi in IPT pub essere in rea.lta. proponio-
,it;'ilH';) '. J,lale (non pari) a1 numero dl pagine, rna secondo un coefficiente di proporzion&lita. molto basso (cioe
. )
, ....
architettura e stata introdotta dall'rBM a fine anni ottanta e ba fatto da progenitrice
il!t'!i!Gif)L_ ,dell archltettura PowerPC.

,
9
I
IPT
60
-
e.
70
13

TI
66
".
-
..
63
IPT
.0 2
r-..
S.

70
,
13
2' I
./
37

66

39

"
96 9
'S
7
o
, I
913J4121816J710 1:511
2
63
1
rUNZIDNE
HASH S

7
S
9
-...'
;;[!
':'''''',ill

-"
3-"52=----=C:.:a"p:.:'.t.::oI.::o:.:8C-
.
.
: ..
'< '
. i '

,,'I, ,
di restituire il cantralla ai programmi oecorre aggiornare anche la lista LRU
1 in coda
23
. AlIa ripartenza del programma verra aneora generato il riferimento
pagina virtual.. 84 e Ia funzione hasb dara h=4, essendo IPT[4J.VPN;i84, la lista,che.:}t!
parte poslzlone. 4 verra percorsa fino trovare 84 nel PTE 10 POSIZlone 1.,
In FIgura 8.11 VIane trattato un caso PIll complesso del precedente. La pagma 63
determina un fault alla posizione 3 (da 3 non parte alcuna lista). Questa volta la
LRU indica che deve essere sacrificata la pagina in posizione 9 (Ia 48), rna la pagina
48 inserita in. una Iista, qu:ella che inizia dalla posizione 8. E dunque necessaria:
aggIOrnare la lista che contlene l'elemento 9, escludendo Felemento stesso dalla
(Rer cui8 deve finire col puntarea 7) ; (ii) utilizzare il PTE 9 per tellere
(111) agglOrnare la hsta che UllZla ill 3 ponendo m coda l'elemento 9,
;,
....
-, , _ ..

-,;
., "
'.-- '!J
, ,"".
, ..
;, ..u;;'1
, "" ..""'"
"" , l, "!r;'l
, ,'.
';lli!'" I
'ir{'ll '
,
j

, "".:.:.'i,:.,
'\'.-",
.:-

-
,ii;?{-
.
",
, ,.W.,'.
'- l}
8 6 7 0 :5 I 9
..
Us'to. LRU Lls'to LRU ':
, ,I'!'
Figura 8.11 Questo page fault segue queUo della figura. precedente. 'Ita i due fault i
rimenti h.anno la Ii,sta LRU: son,o state indirizzate 1a pagina 0 e la, 5,
ora sono m coda alla hsta, assiCme alIa pagm& 1 che eertamente ha avuto un nfenmento pet:
aver determinate il fault precedente, La pagina viriuale 63 non e in memoria:
LRU determina la sostituzione della pagina virtnaIe in 9 (la 48). L'aggiornamento della
richiede l'aggiornamento di due liste: quella che si originava in 8, da cui viene sottratto
e quella cbe si. ongina in 3, che ora COD. in coda.
Per.1'agglOrnamento la hsta cleve essere percorsa dall'mlZIO (Ia POS1Zlone dl JnlZIO edata da!.
codlce hash de1Pelemento da escludere),
.::;,,:t.ij --',
. "',..
"'.,:T-.l!"i1;
'.,;If.."
.'."":iIi
caso mostra che da u:>D solo lista in cui si
una pagma
,
rna anche quella da CUI la pagma nmplazzata Vlene esclusa. La LRU
fornisee il PTE da usare
,
rna, se questo non ei1 primo della lista
,
Hsuo aggiornament6'
richiede ehe 5i risalga all'elemento che 10 precede. A tal fine, oecorre percorrere la
lista in cui si trova l'elemento da escludere (essa parte dana posizione eorrispondente..
al suo eodice hash) e aggiomare il puntatore contenuto nell'elemento ehe precede con

'.-
ii?
- -- ,
23E necessario cbe Ill. pagina 1 yenga mesaa in coda. in quanto il controllo tomera. a un programma
diverso da quello cbe ha generato il page fault; queat'ultimo potrebbe, a sua volta, generare un pas;e
fa.ult e au di esso non deve essere usatala pagina L Alternativamente, Ill. pagina 1 pub venire escluaa.
dalla Hsta LRD per tutto it tempo richiesto per il caricamento della pagina 84 e inserita in fQndo alia,
, " ',.; ..
Hsta al termine del carlcamento stesso ..'loj-
... ,,;
, ..
', ..
,
,1, ';1/.
p
IFT
..0
I 6'
f-
k
)
97
,

o
"
PTEO
IiAT
11321 32
o r'-----,
N I I
75
r-
... -
P1CGO
'N
r"",:rlon. HASH
VPNI RPN
,
,
,

, ,
,
P1EGn

v
Capitolo 8
..0 r::-::::::::::::l
97 FUNztONE _I
HASH
354
.>.;
i'("}"
'IV ...-
.-
.-, ....-.
:__ La. memoria virtuale 355
;
ti:I1l:i11:!>i\ '
III'Jii,,=
.' ,.,
; ."
Figura8.8, la HPT e piu rigida, il meccanismo di scansione eestremamente piu
.efficiente
26
. 81 notl che la HTP equlvale m un certa senso alIa fuslOne della 1PT con
"'W,;v. . la HAT.
Durante Ie fasi in cui una lista cresce essa si sviluppa cia sinistra verso destra.
Naturalmente ogni PTE cleve presentare un campo che indica se eS50 evalida 0 no,
Qvvero se esso e0 no in lista. Cio consente, durante la dinamica del funzionamento, d.i
esc1udere un PTE da una lista semplicemente agenda su questa indicatore (in questa
sensa la HPT mescola i concetti tabella invertita con quelli di tabella diretta).
Un ulteriore vantaggio di questa organizzazione della HPT edovuto aHa conti-
guita dei PTE all'interno della memoria, in quanto, in fase di scansione delle liste! cio
comporta un :eloce ricalcolo del prossirno PTE. ..
,In dl page faul.t e r:ga pI.ena, da escludere dalla nga Vlene sele-
\t: 'zionato III base alIa tecruca dt gestlOne del nmplazzamento (LRU).
",.g ....... -'" -
:if,i;"':" .. :
" '>l"''''
hi JK:,',;:l'::;. ,"
..,-'
La segmentazione
I ,*',,,","
,,,,,,, <":. -

".,.'"
'." '" ."....
Can la segmentazione 10 spazio degli indirizzi di un programma viene in

che rappresentano parti di programma logicamente correlate tra loro. La seg


corrispollde aHa naturale del codice e d.egli dell'ela:
borazlOne. Can la Ii raggruppa, In segmentl separatl
e secondo la propna convemenza, partl dl programma che hanno una comune
__ tazione. La suddivisione pili ovvia equella che prevede uno 0 pili segmenti di codice,
-di -dati e di stack.
_La dimensione dei segmenti non efissa, corrispondendo alIa suddivisione dello
spazio virtuale secondo la convenienza del programmatore (e del compilatore). Un
segmento puo quindi avere qualu.nque dimensione in dipendenza scornposizione
del. da byte) co.rrispon,denti a una pIccola
a. dl ffilghaJa. dl byte, a mter? I aHa
' dlmenslOne sono semphcemente dovutI at hffiltl fiSlCl nelF mdirizzamenta del SIstema,
.. Normalrnente la dimensione massima di un segmento e perlomeDo di un ordine di
....<)l" grandezza superiore alia dimensione tipica della pagina
27
.
. Si deve qui rimarcare che, al contrario dei segmenti! Ie pagine hanna dimensione
..'-. natura del dettata cia pure
Fi ura 8.13 Or aniz . '. . ,raglom dl efficlenza cit gestlone della memona e del trasfenrnentI dl I/O.
L gfu . g .IPT che S1 sviluppano sempre sulla stessa riga. '" In un sistema segrnentato! un indirizzo logico si compone di due parti:
L: .nzlOn.e hash for.DlSce di una riga dl PTE. Una riga di PTE equivale a una lista.. 'I: ,
aLden,a hst,a enecessariamen.te.limitata da! numero di PTE contenuti a) it selettore del segmentoj
. a rIga lD a nga vlene da Slll15tra a destra. Mancando una relazione
diretta tra la . .... ,iJ Il,t'{ J!"."
che RPN. pOSl2lOne del PTE e Ie pag1ne fislche) 11 genenco PTE deve contenere sia VPN ' . b) 10 scostamento all1interno del segmento.
... _La traduzione delPindirizzo avviene secondo (0 schema di FiguraB.14.
Nella tabella HPT (da Hasbed Page Table) di Figura8.13le liste 5i costruiscono . 1.'fit/;
sulle .nghe, blSOgnO. dl La dimensione della' riga rappresenta 1a di. - sono contigui!. i1 salta dalPuno all'a.ltro 'richiede se:mplicemente l'aggiornamento
n:ensl?ne massuna delle L mdlce hash viene ora preso come indiCe di riga. La ". - mdinzzo con una quantltA fissa., . .
rIga Vlene percorsa da r:llntstra a destra. Si ha miss se nes d . PTE t' '1 .. .... ,;, . n della CPU 80286 puo fino.a.64kbyte, mentre I1 CPU 80386
VPN. In caso di hit il PTE D "j eli' fi con lene 1. "'/ puo arnvare a 4Gbytes, II 386 e I modelh SUCCesS1VI prevedono anche 1a pagma2aone, a valle della.
ormsce 1 numero pagma SICa. Rispetto alIa. IPT dl I. "- segmenta.zione, con pagine di 4kbyte.
... ,.
.... .. 'W;.
< ,"', ':i.'"l
.
I
1
It
I
\
I
I
I
I
I
I
I I
I \

p
IFT
..0
I 6'
f-
k
)
97
,

o
"
PTEO
IiAT
11321 32
o r'-----,
N I I
75
r-
... -
P1CGO
'N
r"",:rlon. HASH
VPNI RPN
,
,
,

, ,
,
P1EGn

v
Capitolo 8
..0 r::-::::::::::::l
97 FUNztONE _I
HASH
354
.>.;
i'("}"
'IV ...-
.-
.-, ....-.
:__ La. memoria virtuale 355
;
ti:I1l:i11:!>i\ '
III'Jii,,=
.' ,.,
; ."
Figura8.8, la HPT e piu rigida, il meccanismo di scansione eestremamente piu
.efficiente
26
. 81 notl che la HTP equlvale m un certa senso alIa fuslOne della 1PT con
"'W,;v. . la HAT.
Durante Ie fasi in cui una lista cresce essa si sviluppa cia sinistra verso destra.
Naturalmente ogni PTE cleve presentare un campo che indica se eS50 evalida 0 no,
Qvvero se esso e0 no in lista. Cio consente, durante la dinamica del funzionamento, d.i
esc1udere un PTE da una lista semplicemente agenda su questa indicatore (in questa
sensa la HPT mescola i concetti tabella invertita con quelli di tabella diretta).
Un ulteriore vantaggio di questa organizzazione della HPT edovuto aHa conti-
guita dei PTE all'interno della memoria, in quanto, in fase di scansione delle liste! cio
comporta un :eloce ricalcolo del prossirno PTE. ..
,In dl page faul.t e r:ga pI.ena, da escludere dalla nga Vlene sele-
\t: 'zionato III base alIa tecruca dt gestlOne del nmplazzamento (LRU).
",.g ....... -'" -
:if,i;"':" .. :
" '>l"''''
hi JK:,',;:l'::;. ,"
..,-'
La segmentazione
I ,*',,,","
,,,,,,, <":. -

".,.'"
'." '" ."....
Can la segmentazione 10 spazio degli indirizzi di un programma viene in

che rappresentano parti di programma logicamente correlate tra loro. La seg


corrispollde aHa naturale del codice e d.egli dell'ela:
borazlOne. Can la Ii raggruppa, In segmentl separatl
e secondo la propna convemenza, partl dl programma che hanno una comune
__ tazione. La suddivisione pili ovvia equella che prevede uno 0 pili segmenti di codice,
-di -dati e di stack.
_La dimensione dei segmenti non efissa, corrispondendo alIa suddivisione dello
spazio virtuale secondo la convenienza del programmatore (e del compilatore). Un
segmento puo quindi avere qualu.nque dimensione in dipendenza scornposizione
del. da byte) co.rrispon,denti a una pIccola
a. dl ffilghaJa. dl byte, a mter? I aHa
' dlmenslOne sono semphcemente dovutI at hffiltl fiSlCl nelF mdirizzamenta del SIstema,
.. Normalrnente la dimensione massima di un segmento e perlomeDo di un ordine di
....<)l" grandezza superiore alia dimensione tipica della pagina
27
.
. Si deve qui rimarcare che, al contrario dei segmenti! Ie pagine hanna dimensione
..'-. natura del dettata cia pure
Fi ura 8.13 Or aniz . '. . ,raglom dl efficlenza cit gestlone della memona e del trasfenrnentI dl I/O.
L gfu . g .IPT che S1 sviluppano sempre sulla stessa riga. '" In un sistema segrnentato! un indirizzo logico si compone di due parti:
L: .nzlOn.e hash for.DlSce di una riga dl PTE. Una riga di PTE equivale a una lista.. 'I: ,
aLden,a hst,a enecessariamen.te.limitata da! numero di PTE contenuti a) it selettore del segmentoj
. a rIga lD a nga vlene da Slll15tra a destra. Mancando una relazione
diretta tra la . .... ,iJ Il,t'{ J!"."
che RPN. pOSl2lOne del PTE e Ie pag1ne fislche) 11 genenco PTE deve contenere sia VPN ' . b) 10 scostamento all1interno del segmento.
... _La traduzione delPindirizzo avviene secondo (0 schema di FiguraB.14.
Nella tabella HPT (da Hasbed Page Table) di Figura8.13le liste 5i costruiscono . 1.'fit/;
sulle .nghe, blSOgnO. dl La dimensione della' riga rappresenta 1a di. - sono contigui!. i1 salta dalPuno all'a.ltro 'richiede se:mplicemente l'aggiornamento
n:ensl?ne massuna delle L mdlce hash viene ora preso come indiCe di riga. La ". - mdinzzo con una quantltA fissa., . .
rIga Vlene percorsa da r:llntstra a destra. Si ha miss se nes d . PTE t' '1 .. .... ,;, . n della CPU 80286 puo fino.a.64kbyte, mentre I1 CPU 80386
VPN. In caso di hit il PTE D "j eli' fi con lene 1. "'/ puo arnvare a 4Gbytes, II 386 e I modelh SUCCesS1VI prevedono anche 1a pagma2aone, a valle della.
ormsce 1 numero pagma SICa. Rispetto alIa. IPT dl I. "- segmenta.zione, con pagine di 4kbyte.
... ,.
.... .. 'W;.
< ,"', ':i.'"l
.
I
1
It
I
\
I
I
I
I
I
I
I I
I \

)
I
]-
)

I _
I
I
\ .
\
I
l
I .
I
) .
Approfondimenti sulla gestione della memoria
virtuale
.
'Ie ,
...
. La memoria. virtuale 357
..


','". Anche 1a segmentazione puo dare luogo a spreco di memoria, infatti i segmenti
regioni contigue di lunghezza variabile di memoria centrale. Dopa un certo
num
ero
di a.11ocazioni-deallocazioni si formano zone di memoria non utilizzate tra
e segmento, che tr?ppo per
;essere usate, anche se la somma degh Spazl non utlhzzatl potrebbe nsultare cosplcua.
nfenomeno viene detta frammentazione esterna e rappresenta uno degli inconvenienti
n dell.a eseguito
r4.';?i;J, dal sistema operatlvo, e una soluzlOne sconslgliata per il suo alto casto tn termlID di
.. tempo spreeato e di complieazioni aggiuntive.
, .
,
'11
1
""',\,'1'"
.
Segmentazione e paginazione
architetture combinano i due scherni di traduzione degli indirizzi, cercando
sfruttarne Ie caratteristiche rnigliori:
;li ,,1:t:i'1
.... . .
:':.:'. la segmentazione per suddividere eODvenientemente il programma in base alIa
l
'lo1!'h:-f!""t '
. "sua struttura nello spazio virluale;
., \'11:\1" '
La paginazione per garantire una efficiente gestione della memoria e per eliminare
..., la esterna - OVVlamente ncompare 1a frammentazlOne mterna.
.. PiiI avanti viene descritta in dettaglio la gestione della memoria segmentata e
del ffilcroprocesson Intel 80386 e suCCesSlVl.
- .
:
.... ,
It
il

.'1I "t", 8 6

,0jl'>I:.',., .
.. ...,;:' ,
1'.... .'
" ' I .
. ' ..
','
.... '-'
parte ehe p:ecede, si espesso del sistema del suo intervent.o in
.-.:,-.: cornspondenza dl un page fault, della gestlOne della pagmazlOne e della segmentazlone
ecc. Egiunto il momenta di approfondire alcune delle questioni finora toccate appena
di passaggio.
! ,
1\1',,1.. ..'
'......... ,".''''
... .
"','
. . . .
ii
ff
;\!".,:,8.6.1 GestlOue della pagmazlOue e della segmeutazlOue

.. ,...
Quando la CPU genera un indirizzo che determina un page fault 0 un segment fault?8
si ha una sequenza di operazioni come quella satta riportata, .
'.,
,';..
" . 1sSi ricorda. cbe un fa.ult a!tro non! che una interruzione (Del gergo della materia si preferisce
parlare di eccezione) interna, causata dalla. MMU che non trova. in memorial'informazione indirizzata
.(nell? spazio degli indirizzi logici). L'interruzio.ne viene raccolta dal sistema operativo, attraverso il
..suo mternJpt ovvero attraverso 10. speclfico page/'egment fault handler. Risulta evidente cbe
questa parte dl slstema opera.tivo deve risiedere permanentemente in memoria centrale. Di questo si
parla piu diffusamente nel Paragrafo 8.6.3.

Indirizzo virluale
S<'lleltor<'l di
Seolllamenlo
,,"' ..;.., ento
c{):> Indiri:zzo n.leo
Loca'Zlone
.... , ........... ''','''.'-,''
..... , ..
De"crtttore dl
BlIse seamento
S.

l
Segmento
',.J,'
. '::'",
,. ".'"",1"'
'. ,'<"#
,\,!It';l
, -Ii i!.i!'
356 Capitola 8 \..


"'\"1::'"
-:'".If

'ir.!1

. ,."

.... ';;' k;;;.
,":&-...:
"J'"

,..:?,:
.': ,-.1):::;,
: ....
-J:<, _.
, .', -"c."
"
:, b
J
".:
:
" -.,!",'
':,>A'F
:/:,:::tJi,.
.. '''''

"'_Im,-
_, N""
.' . .'.) ..;
," -
Tabella dei '.,'
..;;...


... ?11t.5r.,
Figura 8.14 Meccanismo di traduzione degli indirizzi logici in indirizzi fisici nei
segmentati. L'identificatore 0 selettore di segmento punta a un elemento (descrittore di'
segmento) alPinteroo d.i una tabella.. ndescrittore di segmento, fornjsce l'indirizZQ di base.r1.
del che>. aIlo scostamento cia Pindirizzo fisico.. II di
contlene mformazlOfil Circa la lunghezza del segroento stesso e orca t dintti d\ accesso. . : .
., ......


" ,,..,.).1):,

Dal punto di vista delle operazioni di I/O la segmentazione edi per se meno
dente della paginazione. La perdita di efficienza edovuta al fatto che viene trasferito
un iotero segmento 180 cui dimensione risulta in genere del tutto scorrelata
alia dimensione trasferiti dalle I/O. .
In realta, la mmare efficlenza della segmentazlOne emltIgata da questl due fatton:',{%,,;ri:
....
' <;..
;.'..
un segmento contiene generalmente codice strett80mente autoreferenzi8ole; Ie
razioni intersegmento sana abbastanza rare, corrispondendo a cambiarnenti
cantesto di esecuzione e dunque 1a probabilita. di restare entro il segmento
, , ,.:"'t>!it,,,'l;
e tendenzlalmente e1evata;
, .' ..,. f<--
, ..1-"1''''
moIte applicazioni usano i tre soli segmenti di cadice, dati e stack: un linke'r:'fi", _
"intelJigente" I in grade di effettuare l'impacchettamento di pili funzioni. in
unico segmento di codice, ridurra. Ie operazioni di I/O relative al codice 801 solo
caricamento (ancorche pesante) deU'intero segmento.
Dal punta di vista della protezione la segmentazione esuperiore aHa
in quanta essa segue i criteri naturali di separazione dei differenti moduli di
rna. Per stesso segmentazione fCl:cilita 1'uso in .comune (sharing) delle
stesso codlce .da dl pm procedure. . .:'
Un1ultenore differenza rlspetto alia pagmazlOne e180 scarnparsa del TLB, sostt'
",,'.J,
tuito da un numero ridotto di registri di cache. Per fissare Ie idee, se
che 1a nostra macchina preveda che in un data momenta siano attivi at massima
segmenti (codice, dati e stack), per la natura della segrnentazione, esufficiente te:-
nere i selettori dei segmenti in tre distinti registri e associare a ciascuno di essi un
registro ill cache (in pratica un'estensione del registro stesso) che punti alla base
segmento in memoria. In pratica, si tratterebbe d.i una sorta di determinlstico,
con tante posizioni quanti sono i segmenti gestiti dalla macchina. E questa il modo
di funzionare della memoria segmentata dei sistemi Intel dal.286 in poi.
,-'.-'lt1lF.:,
)
I
]-
)

I _
I
I
\ .
\
I
l
I .
I
) .
Approfondimenti sulla gestione della memoria
virtuale
.
'Ie ,
...
. La memoria. virtuale 357
..


','". Anche 1a segmentazione puo dare luogo a spreco di memoria, infatti i segmenti
regioni contigue di lunghezza variabile di memoria centrale. Dopa un certo
num
ero
di a.11ocazioni-deallocazioni si formano zone di memoria non utilizzate tra
e segmento, che tr?ppo per
;essere usate, anche se la somma degh Spazl non utlhzzatl potrebbe nsultare cosplcua.
nfenomeno viene detta frammentazione esterna e rappresenta uno degli inconvenienti
n dell.a eseguito
r4.';?i;J, dal sistema operatlvo, e una soluzlOne sconslgliata per il suo alto casto tn termlID di
.. tempo spreeato e di complieazioni aggiuntive.
, .
,
'11
1
""',\,'1'"
.
Segmentazione e paginazione
architetture combinano i due scherni di traduzione degli indirizzi, cercando
sfruttarne Ie caratteristiche rnigliori:
;li ,,1:t:i'1
.... . .
:':.:'. la segmentazione per suddividere eODvenientemente il programma in base alIa
l
'lo1!'h:-f!""t '
. "sua struttura nello spazio virluale;
., \'11:\1" '
La paginazione per garantire una efficiente gestione della memoria e per eliminare
..., la esterna - OVVlamente ncompare 1a frammentazlOne mterna.
.. PiiI avanti viene descritta in dettaglio la gestione della memoria segmentata e
del ffilcroprocesson Intel 80386 e suCCesSlVl.
- .
:
.... ,
It
il

.'1I "t", 8 6

,0jl'>I:.',., .
.. ...,;:' ,
1'.... .'
" ' I .
. ' ..
','
.... '-'
parte ehe p:ecede, si espesso del sistema del suo intervent.o in
.-.:,-.: cornspondenza dl un page fault, della gestlOne della pagmazlOne e della segmentazlone
ecc. Egiunto il momenta di approfondire alcune delle questioni finora toccate appena
di passaggio.
! ,
1\1',,1.. ..'
'......... ,".''''
... .
"','
. . . .
ii
ff
;\!".,:,8.6.1 GestlOue della pagmazlOue e della segmeutazlOue

.. ,...
Quando la CPU genera un indirizzo che determina un page fault 0 un segment fault?8
si ha una sequenza di operazioni come quella satta riportata, .
'.,
,';..
" . 1sSi ricorda. cbe un fa.ult a!tro non! che una interruzione (Del gergo della materia si preferisce
parlare di eccezione) interna, causata dalla. MMU che non trova. in memorial'informazione indirizzata
.(nell? spazio degli indirizzi logici). L'interruzio.ne viene raccolta dal sistema operativo, attraverso il
..suo mternJpt ovvero attraverso 10. speclfico page/'egment fault handler. Risulta evidente cbe
questa parte dl slstema opera.tivo deve risiedere permanentemente in memoria centrale. Di questo si
parla piu diffusamente nel Paragrafo 8.6.3.

Indirizzo virluale
S<'lleltor<'l di
Seolllamenlo
,,"' ..;.., ento
c{):> Indiri:zzo n.leo
Loca'Zlone
.... , ........... ''','''.'-,''
..... , ..
De"crtttore dl
BlIse seamento
S.

l
Segmento
',.J,'
. '::'",
,. ".'"",1"'
'. ,'<"#
,\,!It';l
, -Ii i!.i!'
356 Capitola 8 \..


"'\"1::'"
-:'".If

'ir.!1

. ,."

.... ';;' k;;;.
,":&-...:
"J'"

,..:?,:
.': ,-.1):::;,
: ....
-J:<, _.
, .', -"c."
"
:, b
J
".:
:
" -.,!",'
':,>A'F
:/:,:::tJi,.
.. '''''

"'_Im,-
_, N""
.' . .'.) ..;
," -
Tabella dei '.,'
..;;...


... ?11t.5r.,
Figura 8.14 Meccanismo di traduzione degli indirizzi logici in indirizzi fisici nei
segmentati. L'identificatore 0 selettore di segmento punta a un elemento (descrittore di'
segmento) alPinteroo d.i una tabella.. ndescrittore di segmento, fornjsce l'indirizZQ di base.r1.
del che>. aIlo scostamento cia Pindirizzo fisico.. II di
contlene mformazlOfil Circa la lunghezza del segroento stesso e orca t dintti d\ accesso. . : .
., ......


" ,,..,.).1):,

Dal punto di vista delle operazioni di I/O la segmentazione edi per se meno
dente della paginazione. La perdita di efficienza edovuta al fatto che viene trasferito
un iotero segmento 180 cui dimensione risulta in genere del tutto scorrelata
alia dimensione trasferiti dalle I/O. .
In realta, la mmare efficlenza della segmentazlOne emltIgata da questl due fatton:',{%,,;ri:
....
' <;..
;.'..
un segmento contiene generalmente codice strett80mente autoreferenzi8ole; Ie
razioni intersegmento sana abbastanza rare, corrispondendo a cambiarnenti
cantesto di esecuzione e dunque 1a probabilita. di restare entro il segmento
, , ,.:"'t>!it,,,'l;
e tendenzlalmente e1evata;
, .' ..,. f<--
, ..1-"1''''
moIte applicazioni usano i tre soli segmenti di cadice, dati e stack: un linke'r:'fi", _
"intelJigente" I in grade di effettuare l'impacchettamento di pili funzioni. in
unico segmento di codice, ridurra. Ie operazioni di I/O relative al codice 801 solo
caricamento (ancorche pesante) deU'intero segmento.
Dal punta di vista della protezione la segmentazione esuperiore aHa
in quanta essa segue i criteri naturali di separazione dei differenti moduli di
rna. Per stesso segmentazione fCl:cilita 1'uso in .comune (sharing) delle
stesso codlce .da dl pm procedure. . .:'
Un1ultenore differenza rlspetto alia pagmazlOne e180 scarnparsa del TLB, sostt'
",,'.J,
tuito da un numero ridotto di registri di cache. Per fissare Ie idee, se
che 1a nostra macchina preveda che in un data momenta siano attivi at massima
segmenti (codice, dati e stack), per la natura della segrnentazione, esufficiente te:-
nere i selettori dei segmenti in tre distinti registri e associare a ciascuno di essi un
registro ill cache (in pratica un'estensione del registro stesso) che punti alla base
segmento in memoria. In pratica, si tratterebbe d.i una sorta di determinlstico,
con tante posizioni quanti sono i segmenti gestiti dalla macchina. E questa il modo
di funzionare della memoria segmentata dei sistemi Intel dal.286 in poi.
,-'.-'lt1lF.:,
Risulta evidente che la eospicuita. del tempo richiesto per il completo trattamento
del fault giustifica Peseeuzione da parte del sistema operativo eli algoritmi anche
, molto elabor-ati per 1a gestione della memoria virtuale
32

I
1
I
\
f
I
f
I \
I
I
I
\
I I
358 Capitola 8
..,'


,"':Iii'
'I ,.
,!. I
1. A seguito del fault, il sistema operativo cleve determinare la posizione della
gina logica sulla memoria di massa. E stato dette che tale posizione puo essere
data attraverso la PMT stessa. Ovviamente, affinche cib :possa accadere, e
cessario che la re1ativa sia stata scritta PMT
del processo che ha causato II fault, A tale scopo, e necessano stablhre delle ',.m
convenzioni per il per illinker e per i programmi di gestione
locazione della memoria d.i massa, in modo tale che all'atto del caricamento
programma (ovvero all'avvio di un data processo), sia possibile ricostruire l'allo- :,Allii
cazione delle pagine au disco e inizializzare opportunamente la PMT. Se la PMT.SS
e paginata elo gerarchica, i contenuti delle varie pagine vengono
scritti alratto del caricamento.
'''-'''
. .
La soluzione d.i tenere nelle posizioni d.i PMT l'indirizzo su memoria di
delle pagine nOD presenti in memoria centrale sembra quella pili naturale, in
quanta uniforma il trattamento delle pagine non presenti a quello delle
presenti. Non etuttavia obbligatorio scrivere in PMT l'indirizzo delle
non presenti
,
infatti il sistema operative (anche per scrivere questi indirizzi
PMT al]'atto dell'avvio del processo) deve comunque individuare Ie posizioni
pagine sulla memoria d.i massa attraverso Ie informazioni relative
dello diSC0
29
. n degli indirizzi disco per Ie pagine non.
presentl comporta un maggIor lavoro alJlatto dell'avvlo del programma e' una
risposta piu rapida in caso di fault. '.
\
, J'"
ii',': ,il'!;
2. Affinche la pagina possa essere caricata enecessaria che sia disponibile una pagina :
fisica libera. E percio necessario che iI sistema operativo gestisca attraverso
lista l'insieme delle paglie vuote. Si pub decidere che tale lista non venga rnai
del nel senso. ch.e, se il nume:o di in lista. s.cende a.l
sotto eli un limite prefissato, il sIstema operativo scarIca alcune pagme presentl \1!Yi:
in memoria e allunga 1a lista con Ie corrispondenti pagine fisiche. '
.
In ogni casc, epossibile che per caricare la nuova pagina occorra scegliere
vittima tra Ie presenti. Come, accennato in precedenza, ci sono diversi criteri per
130 scelta. Di essi si parla pili approfonditamente nel Paragrafo 8.6.2. 5e la pagina.
vittim30 estata modific3ota a])ora, prima di caricare nella corrispondente pagina
fisica la nuova pagina cia disco, e necessario copiare su disco il contenuto
pagina vittima.

'" "
3. Complesslvamente il trattamento dl un fault comporta tempJ alquanto lunghl - SI ::;;t';,
la. Ovviamente,. non ha nessun sosp,ende.re
dl macchina lIJ,.attesa -che 1a pagma 0 segmento siano statl carlcatl e 11 processo "
implicato possa progreCllre can la prossima istruzione, La cosa piu naturale e
sospendere l'esecuzione del processo che ha determinato il page fault, metterlo in
una lista dei processi in stato eli attesa (del verificarsi di un evento
30
), passando
in esecuzione un processo nello state di pronto.



29lnformazioni di questo gene-;e devono comunque essere tenute .daJ sistema. operativO,
indipendentemente dalJa memoria virtuale. ' "'<'!1
301n questa caso l'evento atteso eI'avvenuto caricamento della pagina indirizzata "<'f"

"I
.'" '
, ,<'1,
'-
'1.'1'.:, '

m'" , 359
La memona e
__-----------------------.::::.c='---------

f
i
...
"',,"1....

!i;";,.", " .,

.
rM:_.. ..!, ,-
.
.
"
..... ,
,',
'. .
{i5:{"g:\; 4. Quando la pagina estata caricata
33
, il sistema operativo ha la responsabilita. di
',".: aggiornare la PMT. Uinserimento in TLB edi solita un compito della logica della
PU
. '_ C .
Si faccia attenzione al. fatto :he un. page(segment fault
:,'_ -nel mezzo dell'esecuzlOne d1 una lstruZlOne. Per portare tale lstruzlOne a corn-
'. .pimento e necessaria rieostruire 1e condizioni di stato della macchina. La cosa
non etanto semplice quando la macchina opera in pipeline, perche anche altre
istruzioni si trovano a essere parziaLmente eseguite all'atto dell'interruzione. Un
modo 'per il problema consiste nel trattax:e 1a in questa modo:
.. ' (a) Ie IstruZlOnI che precedono quella che ha determmato il fault vengono portate
jL\J;f,.::.!' a termine; (b) l'istruzione che ba determinato il fault e quelle che la seguono in pi-
?eline vengono annullate e viene salvato il PC che ha determinato
II fault.
'.
Nei sistemi con paginazione apiil livelli, o".':ero nei sistemi segmentati e
un fault comporta qualche comphcazlone In pm. Infattl, riferendocl per esemplO aJ
sistemi con tabelle delle pagine multilivello e ipotizzando che 130 tabella di primo Iivello
': sia in memoria, si puc avere .un primo a della. mancanza
di una (pagma cornspondente a una) tabella dl secondo hvello, CUI segue un fault per
della pagina logica. .
;'. Un problema si in quei p:evedono istruzi0!li di
);'imento da memOrIa a memona..Per 1a .8086 prevede lStrUZlOnI
che spostano un(a stnnga dl). da una poslzlone.a :m'.al.traj l,e stesse
dl PUSH e POP prevedono 1a posslbillta che l'operando 8t1a In memona e non
solo nei ne J'operando. sorgente, ne quello ?i destina:zione sono presenti
s.uccede che l'mdmzzamento del pnmo operando detenruna un pnmo fault. Concluso
iI fault, viene di eseguita, generando. un second.o
IstruzlOm dl questa tJpo vengono trattate dlrettamente senza ultenore comph-
..caz!one aUa logica nel specifieo, e
quando l'esecuzlOne dell'lstruzlOne nprende, slala pagma contenente l'lstruzlone
che Ie due paO"ine contenenti operando sorgente e destinazione sia in memoria centrale.
O'
.. f:!;q. ..
8.6.2 Algoritmi di rimpiazzamento
.'
algoritme di rimpiazzamento (replacement policy), eWla regola in base aIle quali,
in di un page fault viene scelta la vittima. Prima di eliscutere gli algoritmi
d.i ,.rimpiazzamento conviene fornire alcuni concetti generali.
:..' ..
',,._ 1hl''''",
-c-
f
-,c-o--,-c-o-C-o--- II d I" d II I'd' h d '
'iit.jl"j\llj:;{,,-': , 1, con I ques a SltuazlOne con que a e nmpla.zzamento e e mee I cae e, ave, mvece,
tutto e fatto In hardware
33La. fine del caricamento e un evento segnalato di solito attraverso un'interruzione al sistema
operatlvo, gencrata dal processo di gestione del trasferimento, Si deve ipotizzare cbe anche qucsto
processo II parte del sistemaoperativo e che e880 esegue in modo asincrono.
.34 Per tale motivo questo genere di istruzioni e detto normally restartable.

" ..'
, ": .'
ilt
l
;

Risulta evidente che la eospicuita. del tempo richiesto per il completo trattamento
del fault giustifica Peseeuzione da parte del sistema operativo eli algoritmi anche
, molto elabor-ati per 1a gestione della memoria virtuale
32

I
1
I
\
f
I
f
I \
I
I
I
\
I I
358 Capitola 8
..,'


,"':Iii'
'I ,.
,!. I
1. A seguito del fault, il sistema operativo cleve determinare la posizione della
gina logica sulla memoria di massa. E stato dette che tale posizione puo essere
data attraverso la PMT stessa. Ovviamente, affinche cib :possa accadere, e
cessario che la re1ativa sia stata scritta PMT
del processo che ha causato II fault, A tale scopo, e necessano stablhre delle ',.m
convenzioni per il per illinker e per i programmi di gestione
locazione della memoria d.i massa, in modo tale che all'atto del caricamento
programma (ovvero all'avvio di un data processo), sia possibile ricostruire l'allo- :,Allii
cazione delle pagine au disco e inizializzare opportunamente la PMT. Se la PMT.SS
e paginata elo gerarchica, i contenuti delle varie pagine vengono
scritti alratto del caricamento.
'''-'''
. .
La soluzione d.i tenere nelle posizioni d.i PMT l'indirizzo su memoria di
delle pagine nOD presenti in memoria centrale sembra quella pili naturale, in
quanta uniforma il trattamento delle pagine non presenti a quello delle
presenti. Non etuttavia obbligatorio scrivere in PMT l'indirizzo delle
non presenti
,
infatti il sistema operative (anche per scrivere questi indirizzi
PMT al]'atto dell'avvio del processo) deve comunque individuare Ie posizioni
pagine sulla memoria d.i massa attraverso Ie informazioni relative
dello diSC0
29
. n degli indirizzi disco per Ie pagine non.
presentl comporta un maggIor lavoro alJlatto dell'avvlo del programma e' una
risposta piu rapida in caso di fault. '.
\
, J'"
ii',': ,il'!;
2. Affinche la pagina possa essere caricata enecessaria che sia disponibile una pagina :
fisica libera. E percio necessario che iI sistema operativo gestisca attraverso
lista l'insieme delle paglie vuote. Si pub decidere che tale lista non venga rnai
del nel senso. ch.e, se il nume:o di in lista. s.cende a.l
sotto eli un limite prefissato, il sIstema operativo scarIca alcune pagme presentl \1!Yi:
in memoria e allunga 1a lista con Ie corrispondenti pagine fisiche. '
.
In ogni casc, epossibile che per caricare la nuova pagina occorra scegliere
vittima tra Ie presenti. Come, accennato in precedenza, ci sono diversi criteri per
130 scelta. Di essi si parla pili approfonditamente nel Paragrafo 8.6.2. 5e la pagina.
vittim30 estata modific3ota a])ora, prima di caricare nella corrispondente pagina
fisica la nuova pagina cia disco, e necessario copiare su disco il contenuto
pagina vittima.

'" "
3. Complesslvamente il trattamento dl un fault comporta tempJ alquanto lunghl - SI ::;;t';,
la. Ovviamente,. non ha nessun sosp,ende.re
dl macchina lIJ,.attesa -che 1a pagma 0 segmento siano statl carlcatl e 11 processo "
implicato possa progreCllre can la prossima istruzione, La cosa piu naturale e
sospendere l'esecuzione del processo che ha determinato il page fault, metterlo in
una lista dei processi in stato eli attesa (del verificarsi di un evento
30
), passando
in esecuzione un processo nello state di pronto.



29lnformazioni di questo gene-;e devono comunque essere tenute .daJ sistema. operativO,
indipendentemente dalJa memoria virtuale. ' "'<'!1
301n questa caso l'evento atteso eI'avvenuto caricamento della pagina indirizzata "<'f"

"I
.'" '
, ,<'1,
'-
'1.'1'.:, '

m'" , 359
La memona e
__-----------------------.::::.c='---------

f
i
...
"',,"1....

!i;";,.", " .,

.
rM:_.. ..!, ,-
.
.
"
..... ,
,',
'. .
{i5:{"g:\; 4. Quando la pagina estata caricata
33
, il sistema operativo ha la responsabilita. di
',".: aggiornare la PMT. Uinserimento in TLB edi solita un compito della logica della
PU
. '_ C .
Si faccia attenzione al. fatto :he un. page(segment fault
:,'_ -nel mezzo dell'esecuzlOne d1 una lstruZlOne. Per portare tale lstruzlOne a corn-
'. .pimento e necessaria rieostruire 1e condizioni di stato della macchina. La cosa
non etanto semplice quando la macchina opera in pipeline, perche anche altre
istruzioni si trovano a essere parziaLmente eseguite all'atto dell'interruzione. Un
modo 'per il problema consiste nel trattax:e 1a in questa modo:
.. ' (a) Ie IstruZlOnI che precedono quella che ha determmato il fault vengono portate
jL\J;f,.::.!' a termine; (b) l'istruzione che ba determinato il fault e quelle che la seguono in pi-
?eline vengono annullate e viene salvato il PC che ha determinato
II fault.
'.
Nei sistemi con paginazione apiil livelli, o".':ero nei sistemi segmentati e
un fault comporta qualche comphcazlone In pm. Infattl, riferendocl per esemplO aJ
sistemi con tabelle delle pagine multilivello e ipotizzando che 130 tabella di primo Iivello
': sia in memoria, si puc avere .un primo a della. mancanza
di una (pagma cornspondente a una) tabella dl secondo hvello, CUI segue un fault per
della pagina logica. .
;'. Un problema si in quei p:evedono istruzi0!li di
);'imento da memOrIa a memona..Per 1a .8086 prevede lStrUZlOnI
che spostano un(a stnnga dl). da una poslzlone.a :m'.al.traj l,e stesse
dl PUSH e POP prevedono 1a posslbillta che l'operando 8t1a In memona e non
solo nei ne J'operando. sorgente, ne quello ?i destina:zione sono presenti
s.uccede che l'mdmzzamento del pnmo operando detenruna un pnmo fault. Concluso
iI fault, viene di eseguita, generando. un second.o
IstruzlOm dl questa tJpo vengono trattate dlrettamente senza ultenore comph-
..caz!one aUa logica nel specifieo, e
quando l'esecuzlOne dell'lstruzlOne nprende, slala pagma contenente l'lstruzlone
che Ie due paO"ine contenenti operando sorgente e destinazione sia in memoria centrale.
O'
.. f:!;q. ..
8.6.2 Algoritmi di rimpiazzamento
.'
algoritme di rimpiazzamento (replacement policy), eWla regola in base aIle quali,
in di un page fault viene scelta la vittima. Prima di eliscutere gli algoritmi
d.i ,.rimpiazzamento conviene fornire alcuni concetti generali.
:..' ..
',,._ 1hl''''",
-c-
f
-,c-o--,-c-o-C-o--- II d I" d II I'd' h d '
'iit.jl"j\llj:;{,,-': , 1, con I ques a SltuazlOne con que a e nmpla.zzamento e e mee I cae e, ave, mvece,
tutto e fatto In hardware
33La. fine del caricamento e un evento segnalato di solito attraverso un'interruzione al sistema
operatlvo, gencrata dal processo di gestione del trasferimento, Si deve ipotizzare cbe anche qucsto
processo II parte del sistemaoperativo e che e880 esegue in modo asincrono.
.34 Per tale motivo questo genere di istruzioni e detto normally restartable.

" ..'
, ": .'
ilt
l
;

\
I

!
I
I
\
\
1
]
,
)
!
I
I
361 La memoria virtuale
3lSGli anglosassoni parlano di reference string.
Capitola 8
Rimpiazzamento della pagina piu stagionata (FIFO). Si tratta di tenere traccia
dell'ordine d1ingresso delle pagine in memoria centrale. La cosa eestremamente sem-
pUce, basta prevedere una lista, it cui eleroento di testa eil numero della pagina fisica
in cui da piu tempo non viene fatta una sostituzione, mentre 1a coda e it numero
della pagina fisica usato per ultima. Al rimpiazzamento Pelemento di testa diventa
queIlo di coda e tutti gli attri vengono mossi di un posta in avanti. Ovviamente non
34.Si osservi che cit> non evero a priori. Diventa vere se il compilatore ha fatto un buon lavoro
di ottimizzazione, strutturando it codice in modo da evitare la fTantumazione. Meglio a.ncora se
compilatore e linker sono costruiti in modo da produrre un codice che favorisca la loca\i,ta spaziale
360
, ". ,\ .
.
'.
'::1'-"1.
.:
1"'"" "

ok
l

, . .
'I". ,",r-.
.. "
;J
' ,\.

:. ,il"'" .. , ' ,
, ..

Anzitutto it rimpiazzamento avviene di norma su richiesta (on demand). Le 'c'e neSSUD motivo per dire che la pagina pili stagionata equella che merita di essere
pagme vengoDo rimpiazzate solo quando c'e necessita. di averle in memoria centrale, . rimpiazzata.
ovvero in presenza di fault. Viene caricata la pagina che ha determinate il fault. - Rimpiazzamento della pagina non usata do piu tempo (LRU). E l'algoritmo classico.
. All di uD: pro,cesso .e possibiIe avere in memoria la sola ,n}:l\\:,,: '. Anche qui.oecorre una rna il suo aggiornamento dei
pagma che contlene Ie pnme IstruZlOnJ del programma} lasciando che i1 caricamento ...'J.X ; .. : riferimentl. In PMT ogm elemento presenta un campo dl! bIt (il bIt A di Flgura8.3),
Alcum 818temi operattVl
1
assumendo che dar.e una pagma sola m fase iniziale parti a j ::;"",': '. elemento. In occaslone dl un fault 0 dl numero predefimto di fault, il siStema
una di fault ?nerosa, c:aricano. .numero iniziale .di pagine
1
nell'as.. " operativo puo legg,ere i bit .di riferimento PMT e aggiornare la lista in
sunZlOne che questo abbas51 11 tasso dl fault mlzlale
34
. Sempre III fase iniziale ,.",:.','::':;. conseguenza. OVVlamente 11 bIt cleve anehe essere nportato a O.
sistema o?erativo potrebbe assegnare a un dato processo un numero di pagine pari a1 <.,( .... " Si noti che alcuni sistemi non hanno una MMU che automaticamente porta a 1
suo worbng set presunto (si veda piu avanti). il bit di riferimento. In tal casola gestione dell'algoritmo grava maggiormente sui
Un'ultima questione si riferisce alia possibilita. per il sistema operativo di rim- software. Nel caso del VAX
1
Parchitettura prevedeva un bit di pagina valida/non-
Ie modo globale 0 globale equeUo che valida per. ciascun di PMT. A pa:rte la denominazio.ne e. a parte fatto
la pagma (0 il tra tutti quelh m memona. Con questa tecnica ]'oc- ehe tale .bIt non .dalla della la
cupazlOne della memona da parte del processo che genera fault tende a creseere. Con sua funz10ne era pratlcamente Identlca a quella del bit A dl Figura8.3. L'algontmo
il rimpiazzamento locale 130 vittima viene scelta tra le pagine assegnate al .. ..: LRU per la macchina VAX viene realizzato in questo modo. A intervalli regolari
1
che genera il fault. E evidente che in questa caso it sistema operativo deve stabilire nel corso del trattamento di un fault., it sistema le?ge il bit di e
c'e massimo DUIDero di pagine ehe viene assegnato a un processo, far crescer:e ./!-"I come nel caso precedente bIt A. conseguenza tuttI 1 bit
I fino a punto e, Pulteriore crescita. A nsultano ?ne o. Se lao pagma SI ha ?el
meno di t.utte Ie pagme che eornspondono al suo massimo
1
.)f"!'*,g,' fatt? che lmdtcatore. e a(mdlcando. pagIna n?n valida). Ma pOlche il btt
nella fase la enecessariamente globale. presente, per II lao p.agma e page fault 51 nso!ve
Alcum degh algontmi dl nmplazzamento sono stati gia discussi in .. t semphcemente nel portare a 1 11 bIt eli vahdlta. In pratlca, I mtervento automatlCO
n,enmen 0 c<," ,,, "l' , d 11 MMU' .. d [ ill . , . di I/O d
aIle cache. I concetti restano gli non verranno ripetuti. Vale ea.. t: SOStltwtO . a a t, non consegue trasLenrnento ,e a
la pe?a dl nmarcare che mentre per Ie cache II nmptazzamento deve essere fatto aUa del blt di vahdtta. VIa software. . .
:eloclta pili alta possibile e quindi deve essere ridotto al minimo per poterlo realizzare sull? base del Set rWSR). n. working set di processo
In nel della. memoria virtuale, di una pagina procede pagme esso usa In. un tempo .4t. PlU .grande e
alia del cil I/O - qualche. ordme dl grandezza superiore rispetto aHa 1mtervallo eODSIderato1pm eovvl.amente 11 set. un
veloclta memona centrale. Come gla. osservato c'e tutto il tempo che ci vuole .. ,4t un processo a:ra. un set. nSIstema te?-endo
per esegmre elaborati algoritmi di individuazione della pagina delle. pagme .usate nel SUCCesSIvl da processo} em grade dl. adattarne 11
. . '. , v:or.king set. m eff:ttlvo. che il delle pagme. un
a caso (RAND). E. la Soluzl0n.e piu ovvia che richiede solo 1a partue da un working set IDlDlmo (per scelta) IDlzlale}
generazlOne di un numero a caso. Se 1 programrTIl non avessero Iocalita e cioe se it workmg set medesuno 51 agglUsta col passare del tempo.
i .programmi non 1a pili a favore memoria .Pe1etta (!'P).. Non e algoritmo reale. La petfet.ta ePef-
vutuale e della gerarchia dl memona in genere, II runplazzamento a caso andrebbe .. fettlva sostltuzlOne <li pagme che CI sarebbe sulla base degli mdirizZl effettlvamente
E se:npre qualehe pubblieazione dove vengono riportati dati sa a 'priori Sara la di tutti gil
banta del nmpiazzamento a caso. Si tratta
J
ovviamente, di dati /'-:',::> genera,tl spazl0 di tenerne traccla} 51 potrebbe costrwre a
nfentI a SltuazlOfil speeialissime. postenon Ia. sequenza ott1ma dl nmplazzamento. D confronto con tale sequenza con
:.,iti, quella dei rimpiazzamenti effettivamente avutisi per effetto della politica in uso euna
misura della bonta. di quest1ultima.
.:::Jii .Come ultima cosa ripar.lare del fatto che Ie pagine mod!ficate richiedono
.. ;':;h,.:, pratlcamente un tempo per II del fault, ':ll quanto, prima
lettu:a nuova pagma! c:e da su memona d.i massa 11 contenuto della
:... . pagma fislca unplegata. Alcum sisterm non effettuano 130 scrittura immediatamente,
rna la differiscono, a tempi marti, usando un buffer per contenere Ie pagine che ancora
,::':;I"f devono essere sentte.
.- "'l ,"'(. ."
J , ,
::t!:"" '.;
i';,,' .;'
': "',
',' .:-- ;;,":'
:'1"" . ,., .\,
<.1f:;
, '.. if,,'
. " .1:1'.' ."", '".

\
I

!
I
I
\
\
1
]
,
)
!
I
I
361 La memoria virtuale
3lSGli anglosassoni parlano di reference string.
Capitola 8
Rimpiazzamento della pagina piu stagionata (FIFO). Si tratta di tenere traccia
dell'ordine d1ingresso delle pagine in memoria centrale. La cosa eestremamente sem-
pUce, basta prevedere una lista, it cui eleroento di testa eil numero della pagina fisica
in cui da piu tempo non viene fatta una sostituzione, mentre 1a coda e it numero
della pagina fisica usato per ultima. Al rimpiazzamento Pelemento di testa diventa
queIlo di coda e tutti gli attri vengono mossi di un posta in avanti. Ovviamente non
34.Si osservi che cit> non evero a priori. Diventa vere se il compilatore ha fatto un buon lavoro
di ottimizzazione, strutturando it codice in modo da evitare la fTantumazione. Meglio a.ncora se
compilatore e linker sono costruiti in modo da produrre un codice che favorisca la loca\i,ta spaziale
360
, ". ,\ .
.
'.
'::1'-"1.
.:
1"'"" "

ok
l

, . .
'I". ,",r-.
.. "
;J
' ,\.

:. ,il"'" .. , ' ,
, ..

Anzitutto it rimpiazzamento avviene di norma su richiesta (on demand). Le 'c'e neSSUD motivo per dire che la pagina pili stagionata equella che merita di essere
pagme vengoDo rimpiazzate solo quando c'e necessita. di averle in memoria centrale, . rimpiazzata.
ovvero in presenza di fault. Viene caricata la pagina che ha determinate il fault. - Rimpiazzamento della pagina non usata do piu tempo (LRU). E l'algoritmo classico.
. All di uD: pro,cesso .e possibiIe avere in memoria la sola ,n}:l\\:,,: '. Anche qui.oecorre una rna il suo aggiornamento dei
pagma che contlene Ie pnme IstruZlOnJ del programma} lasciando che i1 caricamento ...'J.X ; .. : riferimentl. In PMT ogm elemento presenta un campo dl! bIt (il bIt A di Flgura8.3),
Alcum 818temi operattVl
1
assumendo che dar.e una pagma sola m fase iniziale parti a j ::;"",': '. elemento. In occaslone dl un fault 0 dl numero predefimto di fault, il siStema
una di fault ?nerosa, c:aricano. .numero iniziale .di pagine
1
nell'as.. " operativo puo legg,ere i bit .di riferimento PMT e aggiornare la lista in
sunZlOne che questo abbas51 11 tasso dl fault mlzlale
34
. Sempre III fase iniziale ,.",:.','::':;. conseguenza. OVVlamente 11 bIt cleve anehe essere nportato a O.
sistema o?erativo potrebbe assegnare a un dato processo un numero di pagine pari a1 <.,( .... " Si noti che alcuni sistemi non hanno una MMU che automaticamente porta a 1
suo worbng set presunto (si veda piu avanti). il bit di riferimento. In tal casola gestione dell'algoritmo grava maggiormente sui
Un'ultima questione si riferisce alia possibilita. per il sistema operativo di rim- software. Nel caso del VAX
1
Parchitettura prevedeva un bit di pagina valida/non-
Ie modo globale 0 globale equeUo che valida per. ciascun di PMT. A pa:rte la denominazio.ne e. a parte fatto
la pagma (0 il tra tutti quelh m memona. Con questa tecnica ]'oc- ehe tale .bIt non .dalla della la
cupazlOne della memona da parte del processo che genera fault tende a creseere. Con sua funz10ne era pratlcamente Identlca a quella del bit A dl Figura8.3. L'algontmo
il rimpiazzamento locale 130 vittima viene scelta tra le pagine assegnate al .. ..: LRU per la macchina VAX viene realizzato in questo modo. A intervalli regolari
1
che genera il fault. E evidente che in questa caso it sistema operativo deve stabilire nel corso del trattamento di un fault., it sistema le?ge il bit di e
c'e massimo DUIDero di pagine ehe viene assegnato a un processo, far crescer:e ./!-"I come nel caso precedente bIt A. conseguenza tuttI 1 bit
I fino a punto e, Pulteriore crescita. A nsultano ?ne o. Se lao pagma SI ha ?el
meno di t.utte Ie pagme che eornspondono al suo massimo
1
.)f"!'*,g,' fatt? che lmdtcatore. e a(mdlcando. pagIna n?n valida). Ma pOlche il btt
nella fase la enecessariamente globale. presente, per II lao p.agma e page fault 51 nso!ve
Alcum degh algontmi dl nmplazzamento sono stati gia discussi in .. t semphcemente nel portare a 1 11 bIt eli vahdlta. In pratlca, I mtervento automatlCO
n,enmen 0 c<," ,,, "l' , d 11 MMU' .. d [ ill . , . di I/O d
aIle cache. I concetti restano gli non verranno ripetuti. Vale ea.. t: SOStltwtO . a a t, non consegue trasLenrnento ,e a
la pe?a dl nmarcare che mentre per Ie cache II nmptazzamento deve essere fatto aUa del blt di vahdtta. VIa software. . .
:eloclta pili alta possibile e quindi deve essere ridotto al minimo per poterlo realizzare sull? base del Set rWSR). n. working set di processo
In nel della. memoria virtuale, di una pagina procede pagme esso usa In. un tempo .4t. PlU .grande e
alia del cil I/O - qualche. ordme dl grandezza superiore rispetto aHa 1mtervallo eODSIderato1pm eovvl.amente 11 set. un
veloclta memona centrale. Come gla. osservato c'e tutto il tempo che ci vuole .. ,4t un processo a:ra. un set. nSIstema te?-endo
per esegmre elaborati algoritmi di individuazione della pagina delle. pagme .usate nel SUCCesSIvl da processo} em grade dl. adattarne 11
. . '. , v:or.king set. m eff:ttlvo. che il delle pagme. un
a caso (RAND). E. la Soluzl0n.e piu ovvia che richiede solo 1a partue da un working set IDlDlmo (per scelta) IDlzlale}
generazlOne di un numero a caso. Se 1 programrTIl non avessero Iocalita e cioe se it workmg set medesuno 51 agglUsta col passare del tempo.
i .programmi non 1a pili a favore memoria .Pe1etta (!'P).. Non e algoritmo reale. La petfet.ta ePef-
vutuale e della gerarchia dl memona in genere, II runplazzamento a caso andrebbe .. fettlva sostltuzlOne <li pagme che CI sarebbe sulla base degli mdirizZl effettlvamente
E se:npre qualehe pubblieazione dove vengono riportati dati sa a 'priori Sara la di tutti gil
banta del nmpiazzamento a caso. Si tratta
J
ovviamente, di dati /'-:',::> genera,tl spazl0 di tenerne traccla} 51 potrebbe costrwre a
nfentI a SltuazlOfil speeialissime. postenon Ia. sequenza ott1ma dl nmplazzamento. D confronto con tale sequenza con
:.,iti, quella dei rimpiazzamenti effettivamente avutisi per effetto della politica in uso euna
misura della bonta. di quest1ultima.
.:::Jii .Come ultima cosa ripar.lare del fatto che Ie pagine mod!ficate richiedono
.. ;':;h,.:, pratlcamente un tempo per II del fault, ':ll quanto, prima
lettu:a nuova pagma! c:e da su memona d.i massa 11 contenuto della
:... . pagma fislca unplegata. Alcum sisterm non effettuano 130 scrittura immediatamente,
rna la differiscono, a tempi marti, usando un buffer per contenere Ie pagine che ancora
,::':;I"f devono essere sentte.
.- "'l ,"'(. ."
J , ,
::t!:"" '.;
i';,,' .;'
': "',
',' .:-- ;;,":'
:'1"" . ,., .\,
<.1f:;
, '.. if,,'
. " .1:1'.' ."", '".

-
-, \
- I I
del

memona la
Capitolo 8
':;'lI"'"
r;:-',:' .
:1
1
;(; ",
"Il'i ,:
.__-----------'------------CL::::..;.m=e=m=o::ri::.:..v::lr=t"u"."I"e_-,3-,6-,-3 \,;1,1'(,
"1 .'JiII' , ,- ,

",
,,1=:
. Se modificata non viene enecessaria eventuale tabella radice della PMT, la lista delle pagine libere, la lista pagine
v.lttlma.. Se questa emodrficata filllsce nel I a che non 51 treva- in scrittura, tutte le eventuali altre liste e strutture dati di cui necessita 11 slstema
una Vlttuna non modificata. Solo a quel punto ha luogo 11 cancamento della nuova .'.::;i operativo per poter fUDzionare.
pagina. La scrittura delle pagine Bulla memoria eli massa sara gestita in background,
in modo cia occupare, per quanta possibile, i tempi morti nel sistema di I/O delle
pagine. Si capisce che, con questa tecnica risulta molto conveniente disporre di una
list. di pagine libere; la pagina cbe estata ,critta finisce in questa lista. '8.7 Esempio di memoria paginata:
la lista deve sempre contenere Wl nurnero dl pagme superIore a un rnllllmo prefissato, ':f!!r;':.r' 68030
ffilcroprocessore
.'15i;I:11 t -
'l;;ili
8.6.3 Occupazione della memoria virtuale del micro' 68030 costituisce un esempio malto istfl;lttivo di me-
'.1 ,mona pagmata.
Nel momenta in cui una macchina viene avviata
36
, la logica 5i porta in uno stato II dispositivo MC68030 e un microprocessore a 32 bit can arcrutettura di tipo
partenza che non. corrisponde a queUo. di gestione della memoria virtuale" In E appars? nella meta degli anni rnembro della
lare, 5uccede che il Program Counter Vlene portato a puntare a una zona dl ROM dove ... 68000 {CK86], lntrodotta calla Motorola a fine degli anm settanta. n capostlplte
stanno Ie parti di programma cbe ,volgono la funzione di inizializzazione di questa famiglia, il dispositivo MC68000 era una CPU a 16 bit di cui venne .ncbe
sIstema. prodotta una verSlOne, It 68008) con bus .esterno a 8 bIt. Al 68000, segmrono :1 68010,
L'inizializzazione del sistema comporta alcuni test sulle parti della macchina
37
, la 68020, iI 68030 e it 68040. A meta anm novanta 1a Motorola ha II 68060,
vettore delle iI, coman?o di progran:. da anna prima, 1'impegn? di questa industria e rIvolto
mabih, come il controllore delle UlterruZIom (se eslste)1 il cancamento m ' allo sVlluppo del PowerPC, assleme a IBM e Apple. L
dinamica Ie parti di sistema opera.tivo che resteranno residenti, la preparazione delle' tift, non estata comunque del tutto abbapdonata, anche se estata parzlalrnente ndlretta
aree dati e dell'eventuale sta.ck per il sistema operativo stesso. . , il mondo dei micI:ocontrollori. Per quanta si riferisce in particolare al 68030,
. Consideriamo il problema delle parti di sistema operativo che dovranno :iiiil'r',;'questa CPU ha ,uperato la soglia del nuovo secolo e continua a essere presente nei
resldentl lD permanenza m memOrIa. Non Cl rifenamo qUI aJ trattl dl COdIce In Motorola. I1 modelIe dl punta lavora a una frequenza eli 50MHz e Vlene dato
.di gestore d.i livello eseguito. solo .rase (- una capacita elaborativa di 18 M1PS39,.. , .
InlZIahzzazlOne. CI rifenamo alIa parte dl SIstema operatIVQ - la qUasI totalIta - La famiglia 68000
1
oitre a essere stata Implegata nel McIntosh dl Apple, trove,
viene caricata' cia <Usco in fase di avvio, In questa parte SODO compresi i gestori dei ' inizi degli anill ottanta (prima dell'avvento delle maccQine RlSC), largo impiego
fault
38
. . '. unita centrale di workstation operanti sotto it sistema operativQ UNIX. Una delle
.. 11 page. fault handler deve risiedere in centrale. :f,i:t1. :: di tal.e successo fu -
e unpensabile che la sua esecuzlOne, conseguente a un fault, dla luogo a un !illeare e gestlOne della memona vIrtuale ill forma pagmata a plU livelh.
fault che sarebbe irrisolvibile, Conviene manlenere il page fault handler in una zona 11 68030 estato iI primo microprocessore della. serie 68000 a presentare una MMU
di memoria .che non mai usata pagine. che a si \})ti integrata sullo stesso Chip. In pratica, la MMU del 68030 corrisponde, dispositivo
sempre con il meccarusmo della memona virtuale, rna il sIstema operatlvo non usera.:.};:,,' impiegato con il modello precedente
40
OItre alia MMU, 1a CPU mtegra anche
mai una pagina di tale zona come vittima, Alternativamente, la macchina potrebbe,: una cache, divisa in cache istruzioni e cache dati. seppure di dimensioni estremamente
presentare la possibilita. di indirizzare una predefiniia zona di memoria come se non - . .. ridotte. Lo spazio degli indirizzi, sia logici che fisici edi 4 Gbyte. La memoria virtuale
fosse paginata e come se gli indirizzi generaLi dalla CPU fossero indirizzi reali e j?i'{,e gestita secondo 10 schema della paginazione su richiesta (demand paging): 1e pagine
logici. Si veda a tale proposito la memoria virtuale della CPU 68030, descritta pill' di memoria vengono allocate al programma solo al momento in cui si rende necessaria
avanti. . .. lora presenza. Sono previsti due livelli di privilegio, detti livello di SupenJisore e
Nell'are,a del ve.rranno di Utente.
all'atto dell'lDlZlalizz3ZlOne: 1 vetton dl mterruzlOue, 1 geston delle mterrUZlOnl, una 'ilX:::',
.

nella versione seoZ3: MMU. Questa versione, continua ad


36Messa' sotto tensione 0 Reset. , ,. , ' :';::}J"\' . a.ver neJ campo delle embedded, tra cui una molto significativa e quella
3
7
Tipico eil contro110 del buon funzl.onamento delle memone dmamlche, svolte come confronto tra ;, ,:_, laser. .dal Sl.to pnnclpale della Motorola, {http://IlVV,.motorola. e
dato Jette e dato scntto.. ' ' la pagma dedlcata mteramente al 68030 e scancare manuall e documentazlOne teclllCa
38ij essere.anche.m ROM, ovvero essere m dlvanogenere. ....,. .
tratto di cOC:Uce che e passa II alia parte dl slste,ma che 40n era una esterna In grado dl gestl.re ,uno vlrtua.le dl 4 Gbyte. La. ffilsura.
eresponsabI1e della gestlOne di tutto il marchmgegno del nmplazzamento della pagma. ChlameremO '-!,:,.,.l r !:!.;j! ,,' della paglna. era selezloDa.bJie
l
da programma, da. un lDSleme di otto valon che vanDO da 256 byte a.
Questa parte del software di base della macchina fault handler. :\{ :r 32 kbyte [Mot88].
1,,'.#,-' Jr;J;,,:,,':'
:,t,,)/; ..,:
, ':\1" ..." .
.'.
....
362
\
1
I
I
1
\
I
,I
I
" \
i I

\I
-
-
-
-, \
- I I
del

memona la
Capitolo 8
':;'lI"'"
r;:-',:' .
:1
1
;(; ",
"Il'i ,:
.__-----------'------------CL::::..;.m=e=m=o::ri::.:..v::lr=t"u"."I"e_-,3-,6-,-3 \,;1,1'(,
"1 .'JiII' , ,- ,

",
,,1=:
. Se modificata non viene enecessaria eventuale tabella radice della PMT, la lista delle pagine libere, la lista pagine
v.lttlma.. Se questa emodrficata filllsce nel I a che non 51 treva- in scrittura, tutte le eventuali altre liste e strutture dati di cui necessita 11 slstema
una Vlttuna non modificata. Solo a quel punto ha luogo 11 cancamento della nuova .'.::;i operativo per poter fUDzionare.
pagina. La scrittura delle pagine Bulla memoria eli massa sara gestita in background,
in modo cia occupare, per quanta possibile, i tempi morti nel sistema di I/O delle
pagine. Si capisce che, con questa tecnica risulta molto conveniente disporre di una
list. di pagine libere; la pagina cbe estata ,critta finisce in questa lista. '8.7 Esempio di memoria paginata:
la lista deve sempre contenere Wl nurnero dl pagme superIore a un rnllllmo prefissato, ':f!!r;':.r' 68030
ffilcroprocessore
.'15i;I:11 t -
'l;;ili
8.6.3 Occupazione della memoria virtuale del micro' 68030 costituisce un esempio malto istfl;lttivo di me-
'.1 ,mona pagmata.
Nel momenta in cui una macchina viene avviata
36
, la logica 5i porta in uno stato II dispositivo MC68030 e un microprocessore a 32 bit can arcrutettura di tipo
partenza che non. corrisponde a queUo. di gestione della memoria virtuale" In E appars? nella meta degli anni rnembro della
lare, 5uccede che il Program Counter Vlene portato a puntare a una zona dl ROM dove ... 68000 {CK86], lntrodotta calla Motorola a fine degli anm settanta. n capostlplte
stanno Ie parti di programma cbe ,volgono la funzione di inizializzazione di questa famiglia, il dispositivo MC68000 era una CPU a 16 bit di cui venne .ncbe
sIstema. prodotta una verSlOne, It 68008) con bus .esterno a 8 bIt. Al 68000, segmrono :1 68010,
L'inizializzazione del sistema comporta alcuni test sulle parti della macchina
37
, la 68020, iI 68030 e it 68040. A meta anm novanta 1a Motorola ha II 68060,
vettore delle iI, coman?o di progran:. da anna prima, 1'impegn? di questa industria e rIvolto
mabih, come il controllore delle UlterruZIom (se eslste)1 il cancamento m ' allo sVlluppo del PowerPC, assleme a IBM e Apple. L
dinamica Ie parti di sistema opera.tivo che resteranno residenti, la preparazione delle' tift, non estata comunque del tutto abbapdonata, anche se estata parzlalrnente ndlretta
aree dati e dell'eventuale sta.ck per il sistema operativo stesso. . , il mondo dei micI:ocontrollori. Per quanta si riferisce in particolare al 68030,
. Consideriamo il problema delle parti di sistema operativo che dovranno :iiiil'r',;'questa CPU ha ,uperato la soglia del nuovo secolo e continua a essere presente nei
resldentl lD permanenza m memOrIa. Non Cl rifenamo qUI aJ trattl dl COdIce In Motorola. I1 modelIe dl punta lavora a una frequenza eli 50MHz e Vlene dato
.di gestore d.i livello eseguito. solo .rase (- una capacita elaborativa di 18 M1PS39,.. , .
InlZIahzzazlOne. CI rifenamo alIa parte dl SIstema operatIVQ - la qUasI totalIta - La famiglia 68000
1
oitre a essere stata Implegata nel McIntosh dl Apple, trove,
viene caricata' cia <Usco in fase di avvio, In questa parte SODO compresi i gestori dei ' inizi degli anill ottanta (prima dell'avvento delle maccQine RlSC), largo impiego
fault
38
. . '. unita centrale di workstation operanti sotto it sistema operativQ UNIX. Una delle
.. 11 page. fault handler deve risiedere in centrale. :f,i:t1. :: di tal.e successo fu -
e unpensabile che la sua esecuzlOne, conseguente a un fault, dla luogo a un !illeare e gestlOne della memona vIrtuale ill forma pagmata a plU livelh.
fault che sarebbe irrisolvibile, Conviene manlenere il page fault handler in una zona 11 68030 estato iI primo microprocessore della. serie 68000 a presentare una MMU
di memoria .che non mai usata pagine. che a si \})ti integrata sullo stesso Chip. In pratica, la MMU del 68030 corrisponde, dispositivo
sempre con il meccarusmo della memona virtuale, rna il sIstema operatlvo non usera.:.};:,,' impiegato con il modello precedente
40
OItre alia MMU, 1a CPU mtegra anche
mai una pagina di tale zona come vittima, Alternativamente, la macchina potrebbe,: una cache, divisa in cache istruzioni e cache dati. seppure di dimensioni estremamente
presentare la possibilita. di indirizzare una predefiniia zona di memoria come se non - . .. ridotte. Lo spazio degli indirizzi, sia logici che fisici edi 4 Gbyte. La memoria virtuale
fosse paginata e come se gli indirizzi generaLi dalla CPU fossero indirizzi reali e j?i'{,e gestita secondo 10 schema della paginazione su richiesta (demand paging): 1e pagine
logici. Si veda a tale proposito la memoria virtuale della CPU 68030, descritta pill' di memoria vengono allocate al programma solo al momento in cui si rende necessaria
avanti. . .. lora presenza. Sono previsti due livelli di privilegio, detti livello di SupenJisore e
Nell'are,a del ve.rranno di Utente.
all'atto dell'lDlZlalizz3ZlOne: 1 vetton dl mterruzlOue, 1 geston delle mterrUZlOnl, una 'ilX:::',
.

nella versione seoZ3: MMU. Questa versione, continua ad


36Messa' sotto tensione 0 Reset. , ,. , ' :';::}J"\' . a.ver neJ campo delle embedded, tra cui una molto significativa e quella
3
7
Tipico eil contro110 del buon funzl.onamento delle memone dmamlche, svolte come confronto tra ;, ,:_, laser. .dal Sl.to pnnclpale della Motorola, {http://IlVV,.motorola. e
dato Jette e dato scntto.. ' ' la pagma dedlcata mteramente al 68030 e scancare manuall e documentazlOne teclllCa
38ij essere.anche.m ROM, ovvero essere m dlvanogenere. ....,. .
tratto di cOC:Uce che e passa II alia parte dl slste,ma che 40n era una esterna In grado dl gestl.re ,uno vlrtua.le dl 4 Gbyte. La. ffilsura.
eresponsabI1e della gestlOne di tutto il marchmgegno del nmplazzamento della pagma. ChlameremO '-!,:,.,.l r !:!.;j! ,,' della paglna. era selezloDa.bJie
l
da programma, da. un lDSleme di otto valon che vanDO da 256 byte a.
Questa parte del software di base della macchina fault handler. :\{ :r 32 kbyte [Mot88].
1,,'.#,-' Jr;J;,,:,,':'
:,t,,)/; ..,:
, ':\1" ..." .
.'.
....
362
\
1
I
I
1
\
I
,I
I
" \
i I

\I
-
-
-
I
J .
}-
t
) -
I .
I
\
!.
\
I
1
)
l
\
ttrolRttlO
m PACDll
:/DA'l'O
TLBi in caso di ricerca po-
TLB e gestito in modalita
IHDlRI'ZZO LOGICO (VTRTUAJ.t)
1lmtU1101f!
CACHE
ITO, TIl

- TLB
I
"
c
R
a
0
lHSUCCESSO IHSUCCESSO
I
PMT
!HDllUZ10
Dl PAeTHA
Se nessuno dei' confronti precedenti da esito positivo, la ricerca procede in PMT.
La ricerca puc produrre un page fault Be la pagina non epresente in memoria.
In ogni casol una volta che 1a ricerca ecompletata 5enza errore, I'MMU inserisce
nel TLB la coppia indirizzo logico-indirizzo fisico.
L'indirizzo logico (parte alta) viene ricercato in
sitiv3, TLB. fornisce di pagina fisica.
completamente associativa.
I/indirizzo logico viene paragonato con il contenuto eli TTO e TTL Se il risultato
da esito positivo, 'l'indiriz20 logico viene direttamente utilizzato come indirizzo
fisico.
descritti. In caso di operazioni di scrittura, per come e gestita la cache CD, si
rende comunque necessaria la traduzione dell'indirizzo
41
.
La tabella di traduzione degli indirizzi (PMT) estrutturata ad albero. I nodi dell'al-
hero 80no rappre,entati daBe (,otto) tabelle che compongono la PMT..La profondita
rnaSsima possibile dell'albero e pari a 5. In Figura8.17 viene riportata una
DATI
CODA'Dl
.'
WlCROSEQUEH.
ISTRmlOHI
,
CONTROu.o
CI
BUS DEGU
lHDI1IllZ1
iSTRUIIOl'l1
"""
,u,
r II "'
r
BUS _I
!NDlRll1.1
=
UNITA' 01
'-'1
11
Tl.ll I
ESECUZIONE
"-
BUS OEOU
INDIRIZ'Z.1
DEI DATI
CO
Capitolo 8
Due registri, TTO e TTl, detti registri trasparenti.
il TLB - di 22 posizioni;
la cache dati (CD) e la cache istruzioni (CI) - .mbedue di 256 byte;
8.7,1 Traduzione degli indirizzi
,1....
'
,1,0'1;:, '
'.
'.'.,::' ':'
.. ,;. ,
i' Jt:{':' -.. -
,
','" La memoria virtuale 365
-
: -
.
,
It' ',. ,.,
1<;"

""'-''''Jf " ..,, .
",
.,

'. iOO' ,." .. ,.
1
" . , ' '. .
,; .fir.;"":'
..
jf,. 'I-,
"". , I'" "".
) 0"'1\,:"
'..);11 ." "
'.
I '".
:
-,.". ' .. -
il.... J .' " ,".
,;:I.\?r.iii; 'J .. ".
I
, . "
1
i' 'T",w.,. '
I,'
.

,;:w. 'r.'?'
e.. K.:
'" ....,,
'l .., 0'. ,
,:. ;:-
.
."1 e',:r
WI{i
""'"
,', 'h'
,. .., ,-
,Hi!,; ,.,:"
"
--', ''':.t ,f".,:,,
."'. Ji.'$J . IH01RIIIO DI PAGINA
",' 'Figura 8.16 Schema dei quattro passi che costituiscono la traduzione dell'indirizzo logico
!
;, ,
Figura a deIPMC68030. CI. e CD i ".:
la cache c.ache TTO e sana I .due reglStn usatl pe.r lao traduzlOoe
t1"aSpllrente degh mdlrtzzl. TLB e 11 1Tan,,zatlon Looka.nde Buffer. .
" ,,\Ii,
" ." ! .....,'.',
"'- I, \ .. ,"'.,"'\'";
,",' ,'. ::',"

" ".J(, ., 2
"'.''''''!>-''.:', .
'." -.": I"." ....
.. ',,' ,'.....
.' . '':)',,..,,''
,..1:;.'
In Figura8.15 viene mostrata l'organizzazione del 68030, In particolare sono
Ie tre interne alIa CPU che intervengono nella traduzione .. , 3.
vlrtuale a fiS1CO: . . . ,:
.. >
h. ,< ,,>.r,," .
" '
;
. ....
",
'" , ',I, ,v':'",
'-;':.1;1, II ,'4
'Ill' " ".' ;' .
.. '",

." ,....
'iI ... .'
t'll' .1,:"
',.. :,.-
. -'" K ,',
, " ....
, , " "W" ."
. .. '" 'f
.," . 't ilf,l' 1';""
. .
, .'--"r'.' ,',' . I.
'
. nprocesso di traduzione indirizzi ein 4 p.assi, di cui i primi si compiono,,.;:[*..,! .... .. .
III parallelo, entro la CPU e colllvolgono Ie partl 80pra elencate (F.gura8.16). D,.;: ,:' 8,7,2 La tabella dl traduzlOne degh mdlrlZZI
quarto passe consiste nella ricerca nella tabella delle pagine e viene eseguito solo se la .. 1f1: '.
traduzione non essere, attraverso i contenuti delle entita sopra descritte. '
I quattro pa.sSl sono 1 seguentl.
":,f,
, .
. '.;- . I
1. L'indirizzo logico viene ricercato in CI e CD per gli accessi di lettura (fetch di .
un'istruzione 0 lettura d,i un data), le due cache sana di tipo virtuale, . 41 .. . . ..
nel sensa che i TAG sono indirizzi virtuali mentre i DATI sono i corrispondenti . CD opera In wnte e .SI com.unque necessaria 1a traduzlone
. .. . .. . . " , . . I ...' degh mdlflZZl per poter scnvere lD memona. Sugh bit In 8cnttura vlene aggiornata anche 1a cache;
la ncerca cache ha suc.cesso,. non c eblsogno in di miss, 1a cache 8e sta in write allocote, altrimenti (modo
dt traduzlOne e 11 processo 51 conclude, altnmentl procede attraverso 1 pasSI sotto wnte non-allocate) CD non Vlene mteressata dall'operazlOne di scnttura.
"
L'-. '
"",.".. or.
364
-
I
J .
}-
t
) -
I .
I
\
!.
\
I
1
)
l
\
ttrolRttlO
m PACDll
:/DA'l'O
TLBi in caso di ricerca po-
TLB e gestito in modalita
IHDlRI'ZZO LOGICO (VTRTUAJ.t)
1lmtU1101f!
CACHE
ITO, TIl

- TLB
I
"
c
R
a
0
lHSUCCESSO IHSUCCESSO
I
PMT
!HDllUZ10
Dl PAeTHA
Se nessuno dei' confronti precedenti da esito positivo, la ricerca procede in PMT.
La ricerca puc produrre un page fault Be la pagina non epresente in memoria.
In ogni casol una volta che 1a ricerca ecompletata 5enza errore, I'MMU inserisce
nel TLB la coppia indirizzo logico-indirizzo fisico.
L'indirizzo logico (parte alta) viene ricercato in
sitiv3, TLB. fornisce di pagina fisica.
completamente associativa.
I/indirizzo logico viene paragonato con il contenuto eli TTO e TTL Se il risultato
da esito positivo, 'l'indiriz20 logico viene direttamente utilizzato come indirizzo
fisico.
descritti. In caso di operazioni di scrittura, per come e gestita la cache CD, si
rende comunque necessaria la traduzione dell'indirizzo
41
.
La tabella di traduzione degli indirizzi (PMT) estrutturata ad albero. I nodi dell'al-
hero 80no rappre,entati daBe (,otto) tabelle che compongono la PMT..La profondita
rnaSsima possibile dell'albero e pari a 5. In Figura8.17 viene riportata una
DATI
CODA'Dl
.'
WlCROSEQUEH.
ISTRmlOHI
,
CONTROu.o
CI
BUS DEGU
lHDI1IllZ1
iSTRUIIOl'l1
"""
,u,
r II "'
r
BUS _I
!NDlRll1.1
=
UNITA' 01
'-'1
11
Tl.ll I
ESECUZIONE
"-
BUS OEOU
INDIRIZ'Z.1
DEI DATI
CO
Capitolo 8
Due registri, TTO e TTl, detti registri trasparenti.
il TLB - di 22 posizioni;
la cache dati (CD) e la cache istruzioni (CI) - .mbedue di 256 byte;
8.7,1 Traduzione degli indirizzi
,1....
'
,1,0'1;:, '
'.
'.'.,::' ':'
.. ,;. ,
i' Jt:{':' -.. -
,
','" La memoria virtuale 365
-
: -
.
,
It' ',. ,.,
1<;"

""'-''''Jf " ..,, .
",
.,

'. iOO' ,." .. ,.
1
" . , ' '. .
,; .fir.;"":'
..
jf,. 'I-,
"". , I'" "".
) 0"'1\,:"
'..);11 ." "
'.
I '".
:
-,.". ' .. -
il.... J .' " ,".
,;:I.\?r.iii; 'J .. ".
I
, . "
1
i' 'T",w.,. '
I,'
.

,;:w. 'r.'?'
e.. K.:
'" ....,,
'l .., 0'. ,
,:. ;:-
.
."1 e',:r
WI{i
""'"
,', 'h'
,. .., ,-
,Hi!,; ,.,:"
"
--', ''':.t ,f".,:,,
."'. Ji.'$J . IH01RIIIO DI PAGINA
",' 'Figura 8.16 Schema dei quattro passi che costituiscono la traduzione dell'indirizzo logico
!
;, ,
Figura a deIPMC68030. CI. e CD i ".:
la cache c.ache TTO e sana I .due reglStn usatl pe.r lao traduzlOoe
t1"aSpllrente degh mdlrtzzl. TLB e 11 1Tan,,zatlon Looka.nde Buffer. .
" ,,\Ii,
" ." ! .....,'.',
"'- I, \ .. ,"'.,"'\'";
,",' ,'. ::',"

" ".J(, ., 2
"'.''''''!>-''.:', .
'." -.": I"." ....
.. ',,' ,'.....
.' . '':)',,..,,''
,..1:;.'
In Figura8.15 viene mostrata l'organizzazione del 68030, In particolare sono
Ie tre interne alIa CPU che intervengono nella traduzione .. , 3.
vlrtuale a fiS1CO: . . . ,:
.. >
h. ,< ,,>.r,," .
" '
;
. ....
",
'" , ',I, ,v':'",
'-;':.1;1, II ,'4
'Ill' " ".' ;' .
.. '",

." ,....
'iI ... .'
t'll' .1,:"
',.. :,.-
. -'" K ,',
, " ....
, , " "W" ."
. .. '" 'f
.," . 't ilf,l' 1';""
. .
, .'--"r'.' ,',' . I.
'
. nprocesso di traduzione indirizzi ein 4 p.assi, di cui i primi si compiono,,.;:[*..,! .... .. .
III parallelo, entro la CPU e colllvolgono Ie partl 80pra elencate (F.gura8.16). D,.;: ,:' 8,7,2 La tabella dl traduzlOne degh mdlrlZZI
quarto passe consiste nella ricerca nella tabella delle pagine e viene eseguito solo se la .. 1f1: '.
traduzione non essere, attraverso i contenuti delle entita sopra descritte. '
I quattro pa.sSl sono 1 seguentl.
":,f,
, .
. '.;- . I
1. L'indirizzo logico viene ricercato in CI e CD per gli accessi di lettura (fetch di .
un'istruzione 0 lettura d,i un data), le due cache sana di tipo virtuale, . 41 .. . . ..
nel sensa che i TAG sono indirizzi virtuali mentre i DATI sono i corrispondenti . CD opera In wnte e .SI com.unque necessaria 1a traduzlone
. .. . .. . . " , . . I ...' degh mdlflZZl per poter scnvere lD memona. Sugh bit In 8cnttura vlene aggiornata anche 1a cache;
la ncerca cache ha suc.cesso,. non c eblsogno in di miss, 1a cache 8e sta in write allocote, altrimenti (modo
dt traduzlOne e 11 processo 51 conclude, altnmentl procede attraverso 1 pasSI sotto wnte non-allocate) CD non Vlene mteressata dall'operazlOne di scnttura.
"
L'-. '
"",.".. or.
364
Descrlttore di pll.gina
nlIlC.
OFFSET
Tabelle punlatricl
PMT
UVCWl
Slrultura deU'i.ndiri-zzo virluale
I , UYI:U.O I
a
@J1'1_lalclcl CFFSET I
Infine, il descrittore di pagina contenuto nella tabella di pili basso livello, contiene
della pagina fisica, Sommando all'indirizzo della pagina fisiea il conte-
nuto del campo OFFSET, si ottiene l'indirizzo della locazione in memoria.
Un numero di livelli e specifica.to altraversO il registro TC di cui si parla piu estesamente nel
seguito,
1. La tabella radice dell'albero (tabella di livello A)
contenuto del registro RP.
\\l
. :i>, La memoria. virtuale 367
366 CapItola 8 ....
.' ,.,.,. ,r
,.
, .' l' ..' .' .
<;'1:J ,., j.
'e' : "...,,,,,-. ,
1,:-;:'.,-""- '"
":. ',' ",",/-, .
". ",
au 4livelli
42
Come osservato in precedenza (efr. 8.2.4)/ l'organizzazione tabellare a t,:
di in niem?ria solo le parti di PMT utili aHa traduzione degli ,J!.. ..
mdirizzl usatl nell'rntervallo spazlo-temporale corrente. :,:./iJ<.
nnodo radice dell'aJbero epuntato tramite un registro di CPU detto Root
(RP). I nodi foglie dell'albero sana Ie tabelle che contengono i descrittori di pagina ,'"
(fisiea), i puntatori alle pagine fisiche e Ie di neees.sarie per 'j!t;"
la lorD tabelle dette tab:llE! pagma. I nodi che ,51, trovano ,;;m!t "
Delle POSlZI0nI llltermedle della gerarch1a sana COStltUltI dalle tabelle In esse RP
';"'_!l:i!, ;':"(iii;P' ',,-
I."' ',): ,-, r--
'I' ' L-
I progettisti hanno previsto che sia possibile, quando oceorra, evitare di percorrere LA
tutta la gerarchia dell'albero. A tale scopo nelle tabelle puntatrici possono trovarsi >i;/ij- ' uvw.o c
anche dei di ?agina, ovve,ro i, puntatori alle pagine fisiche, Tali .
descntton early ternunatlon, "::;i;i>'
, gerarchica di _ di t.abella L_
degh u:dmzZllogIcl. D dell'lD?lrlzz? 10g1CO III
L mdirizZQ loglcO generate daWuolta dl esecuzlOne, e su 32 bIt, aJ qual! vanno aggiunti ;;1(/
3 bit ulteriori
l
pure generati dalla unita eli esecuzione
l
detti codici di funzione, FC. -,-
FC son? dei della, 68000;
il contesto di. del (11 m CUI, Vlene Istruzione , ","'1C}I(':' . ' ' , "
specificatamentel I COdiCl, Fe mdicano, se 1attuale lIldUlZZO genera- ': Figura 8.17 Schema della struttura ad albero ?ella PM,T. La del dell 1U-
to dall eseCUZlOne del programma appartlene a110 SpazlO del programma utente
l
alIa dirizzo virtuale e determinata da! contenuto di un regtSuo eli macchina denommato Te,
spazio dei dati utente
l
aIlo spazio del programma supervisore, ovvero allo spazio dei registro di contralla della traduziane, Nella schema manca il Hvella corrispandente a.i codici
.. In i codici di funzione,individuano differenti spazi funziane Fe, Tale livella si inserisce tra. RP e illivello A.
dl mdirizzl. SI rntwsce che hanno ruolo molto nella ff.t'
(efr.8.7.5). Per non appesantrre l'esposlZlOne del meccamsmo dl traduzlOne attra- /41. !iftffl
i
, . tt t 'I
verso PMT, la discussione sui codici di funzione viene posposta al paragrafo .. 3. Analogamente al passe appena? enu 0 1
alia protezione, contenuto del campo B dell'mdmzzo 10g1CO, Vlene un nella
d il FC" I' di . , ddi . . I ABC D ;'k;-;il!;' ,,: LL tabella di Hvello B' esso rappresenta la base della succeSSlYa tabella dl hvello C.
.J.J.3Scuran 0 campo ill nzzo t: Stl VISO nel campl , , l , e, '
OFFS.E}T. La dimensione di questi campi non epredefinita, bensl determinata attra- ?'i.1 '-'" . .' . ," ' .
verso il conten\!to del di della traduzione, TC, descritto pili ,1: In modo analogo, si attraversano 1 lIvelli pIll bassI della gerarchia di PMT.
(Crr. 8.7.4). 1 conlenut. de. camp. A, B, C e D rappresentano 10 scostamento ne, ...
rispettivi livelli ?ella PM'!'l ment.re il presente ne! campo. OFFSET fornisce 10 5.
scostamento alllmterno della pagrna fiSlca. n processo d1 tradUZlOne attraverso PMT
esempre illustrato in FiguraS.17. Esso si svolge secondo i seguenti passi:
''''I]' qt !':\>:I!. ... " ,,;..
- ;,," "'. .
Vlene raggi unta mediante - , ' ' , , ,.. , .' .
, Nella deSCnZ1?ne 51 e assunto I tuttI 1 posslblh,
In realta e un nurnero dl lIvelh (?no ,a 0) , Del.
2 S d al t t d
RP il t t d I A d 11" d' . I" -, ":, anche in presenza dl pIll hvelh
l
esempre posslblle trovare descntton early termmatwn
, 0, con eou 0 ,I con eou 0 e campo . e m ,ogleD, , atri '
Vlene Identificato un descnttore entro Ia tabella. n descnttore COS1 selezlOnato eotro le tabelle punt Cl.
punta alla (base della) tabella di livello B, .- -, In Flgura8.18 viene dato un esernpio di PMT a soli Si ehe leo ta-
, 'it. - belle ai diversi livelli possono essere di differente dimenslOne, ClO confensee maggIOre
_ ftessibilita, rna implica che il sistema deve essere in grado di allocare tabelle
4:ln quinto. livello de.riva. d,al cbe in j tre bit del ,Code, (Fe) vanDO : ',,;-":1<);'" di dimensioni differenti da quelle della pagIna,
parte dell'lDdtnzzo un posslbile ultenore livello, nOD mostrato In .. ,-
FIgura 8,17 per semplificare lao trattlOne. . ''- .. '
"Non c'e niente di strano Del non considerare il campo Fe. infatti, sempre attraverso un bit del . Xift..C '
registro Te, e possibile imporre alla MMU di non tenerne conto. Di conseguenza, i prossimi esempi -- ,
corrispondoDo a situazioni del tutto reall.
R\;!i ,'i'I03 .",
'.;-"-'M l't
J
'

.; ."'" '''';
-, .. .
I
\
: \
\
\
\
1\
I
; \
,I
I I
I
I
\ r
Descrlttore di pll.gina
nlIlC.
OFFSET
Tabelle punlatricl
PMT
UVCWl
Slrultura deU'i.ndiri-zzo virluale
I , UYI:U.O I
a
@J1'1_lalclcl CFFSET I
Infine, il descrittore di pagina contenuto nella tabella di pili basso livello, contiene
della pagina fisica, Sommando all'indirizzo della pagina fisiea il conte-
nuto del campo OFFSET, si ottiene l'indirizzo della locazione in memoria.
Un numero di livelli e specifica.to altraversO il registro TC di cui si parla piu estesamente nel
seguito,
1. La tabella radice dell'albero (tabella di livello A)
contenuto del registro RP.
\\l
. :i>, La memoria. virtuale 367
366 CapItola 8 ....
.' ,.,.,. ,r
,.
, .' l' ..' .' .
<;'1:J ,., j.
'e' : "...,,,,,-. ,
1,:-;:'.,-""- '"
":. ',' ",",/-, .
". ",
au 4livelli
42
Come osservato in precedenza (efr. 8.2.4)/ l'organizzazione tabellare a t,:
di in niem?ria solo le parti di PMT utili aHa traduzione degli ,J!.. ..
mdirizzl usatl nell'rntervallo spazlo-temporale corrente. :,:./iJ<.
nnodo radice dell'aJbero epuntato tramite un registro di CPU detto Root
(RP). I nodi foglie dell'albero sana Ie tabelle che contengono i descrittori di pagina ,'"
(fisiea), i puntatori alle pagine fisiche e Ie di neees.sarie per 'j!t;"
la lorD tabelle dette tab:llE! pagma. I nodi che ,51, trovano ,;;m!t "
Delle POSlZI0nI llltermedle della gerarch1a sana COStltUltI dalle tabelle In esse RP
';"'_!l:i!, ;':"(iii;P' ',,-
I."' ',): ,-, r--
'I' ' L-
I progettisti hanno previsto che sia possibile, quando oceorra, evitare di percorrere LA
tutta la gerarchia dell'albero. A tale scopo nelle tabelle puntatrici possono trovarsi >i;/ij- ' uvw.o c
anche dei di ?agina, ovve,ro i, puntatori alle pagine fisiche, Tali .
descntton early ternunatlon, "::;i;i>'
, gerarchica di _ di t.abella L_
degh u:dmzZllogIcl. D dell'lD?lrlzz? 10g1CO III
L mdirizZQ loglcO generate daWuolta dl esecuzlOne, e su 32 bIt, aJ qual! vanno aggiunti ;;1(/
3 bit ulteriori
l
pure generati dalla unita eli esecuzione
l
detti codici di funzione, FC. -,-
FC son? dei della, 68000;
il contesto di. del (11 m CUI, Vlene Istruzione , ","'1C}I(':' . ' ' , "
specificatamentel I COdiCl, Fe mdicano, se 1attuale lIldUlZZO genera- ': Figura 8.17 Schema della struttura ad albero ?ella PM,T. La del dell 1U-
to dall eseCUZlOne del programma appartlene a110 SpazlO del programma utente
l
alIa dirizzo virtuale e determinata da! contenuto di un regtSuo eli macchina denommato Te,
spazio dei dati utente
l
aIlo spazio del programma supervisore, ovvero allo spazio dei registro di contralla della traduziane, Nella schema manca il Hvella corrispandente a.i codici
.. In i codici di funzione,individuano differenti spazi funziane Fe, Tale livella si inserisce tra. RP e illivello A.
dl mdirizzl. SI rntwsce che hanno ruolo molto nella ff.t'
(efr.8.7.5). Per non appesantrre l'esposlZlOne del meccamsmo dl traduzlOne attra- /41. !iftffl
i
, . tt t 'I
verso PMT, la discussione sui codici di funzione viene posposta al paragrafo .. 3. Analogamente al passe appena? enu 0 1
alia protezione, contenuto del campo B dell'mdmzzo 10g1CO, Vlene un nella
d il FC" I' di . , ddi . . I ABC D ;'k;-;il!;' ,,: LL tabella di Hvello B' esso rappresenta la base della succeSSlYa tabella dl hvello C.
.J.J.3Scuran 0 campo ill nzzo t: Stl VISO nel campl , , l , e, '
OFFS.E}T. La dimensione di questi campi non epredefinita, bensl determinata attra- ?'i.1 '-'" . .' . ," ' .
verso il conten\!to del di della traduzione, TC, descritto pili ,1: In modo analogo, si attraversano 1 lIvelli pIll bassI della gerarchia di PMT.
(Crr. 8.7.4). 1 conlenut. de. camp. A, B, C e D rappresentano 10 scostamento ne, ...
rispettivi livelli ?ella PM'!'l ment.re il presente ne! campo. OFFSET fornisce 10 5.
scostamento alllmterno della pagrna fiSlca. n processo d1 tradUZlOne attraverso PMT
esempre illustrato in FiguraS.17. Esso si svolge secondo i seguenti passi:
''''I]' qt !':\>:I!. ... " ,,;..
- ;,," "'. .
Vlene raggi unta mediante - , ' ' , , ,.. , .' .
, Nella deSCnZ1?ne 51 e assunto I tuttI 1 posslblh,
In realta e un nurnero dl lIvelh (?no ,a 0) , Del.
2 S d al t t d
RP il t t d I A d 11" d' . I" -, ":, anche in presenza dl pIll hvelh
l
esempre posslblle trovare descntton early termmatwn
, 0, con eou 0 ,I con eou 0 e campo . e m ,ogleD, , atri '
Vlene Identificato un descnttore entro Ia tabella. n descnttore COS1 selezlOnato eotro le tabelle punt Cl.
punta alla (base della) tabella di livello B, .- -, In Flgura8.18 viene dato un esernpio di PMT a soli Si ehe leo ta-
, 'it. - belle ai diversi livelli possono essere di differente dimenslOne, ClO confensee maggIOre
_ ftessibilita, rna implica che il sistema deve essere in grado di allocare tabelle
4:ln quinto. livello de.riva. d,al cbe in j tre bit del ,Code, (Fe) vanDO : ',,;-":1<);'" di dimensioni differenti da quelle della pagIna,
parte dell'lDdtnzzo un posslbile ultenore livello, nOD mostrato In .. ,-
FIgura 8,17 per semplificare lao trattlOne. . ''- .. '
"Non c'e niente di strano Del non considerare il campo Fe. infatti, sempre attraverso un bit del . Xift..C '
registro Te, e possibile imporre alla MMU di non tenerne conto. Di conseguenza, i prossimi esempi -- ,
corrispondoDo a situazioni del tutto reall.
R\;!i ,'i'I03 .",
'.;-"-'M l't
J
'

.; ."'" '''';
-, .. .
I
\
: \
\
\
\
1\
I
; \
,I
I I
I
I
\ r
f
,
1
I
\
!
1
I
\
t
I

l
I
TABElLA. m
DI
UVEW) B
(PAGlNA NON
PRESENTE)
TABEILA n
DI
UVELLO B
TABEllA 0
DI
UVEW) B
(PAGINA NON
PRESENTE)
:-----l I
I
,
I
,
A B OFFSET
TABELLE DI
L1VElLO A
joooooooo10101 0000000I10! xxxxxxxxxxl
A 6 X
------l I
1,-------,-,_I
J '
trf-.-ll<'IAUOO --

. lNDLRI7.Z0
INGRESSO aOA 11t - 1 INCRESSO
nt 008 DELLA
l1t a ' ' PACLNA
\IT 1""'UDO 1
,
,
1 I I
:-----1 ' I
,
A (12 bit) ,B (10 bit) ,OFFSET (10
1000000001110100000001101 xxxxxxxxxx[
E , X
OOAOl.AOO
Capitola 8
,
,
TABELLA OJ
,
UVEUO A ,
,
--'
,
PUNTATORE ALLA PAGrNA W
INCRESSO OOE:
INCRESSO
006
l
ROOT POINTER
36B
INDIRIZZO
'j'"
Ij'.'
111;;,
__ ,':1. ..
'
', .... -
-
__ ---,:L:a:..m:::e:m::o::rc.:ia:....:vc.:irt:.:.::u:::al:::e:-_3=-6=-9c
,"
-'
Ili'll.m:'.r,,>''-: :--
.


",
U,W "j-".-
:..
DOAD lADa

.. '.:-'
"

'r;:ll;;.!!!.:;;:;-' '


,"" ,,:
':::i;.'i;;",:r: .': RP
'!'!j' /,' (, .- .,
-C=:=:=:::Jt-o
I
,0:;-
, .
",''',,,, "
.'-
r, .. '" ,'.

'
-'
.
"t' li..1 '.
"111-'
"," ';1, _ -
. ' "'n
, .. : .
;"::!;';.Io\
. '.'

'( .:i-I,-, ,).Jhf.,'
1 01,t .. '
,$:",-
c
l
..... - :
-"','" ' . . ,iI/:'lr.! _; .
';"1....."1. " .. .. '
.:',:>J' 'i f:
",It';',.'
. ')1' j.
. .',..J' . I I
< -:: .
. ..:. ?' 7 ,.,:,' . i
TABELLE DI . , tP
1
LrvEll.O B "..
Figura 8.18 Esempio di a.lbero di traduzione. L'a.lbero e a d li lr I . A B Figura 8.19 Esempio di albero di traduzione con tabelle non residenti. L'albero e a due
OFFSET sonG rispettivamente di 12 10 e 10 bit per cui la I'll A
C
":"d
PI
4k'b e .' . Se campo DT del descrittore della tabella. di livello B contien.e il codice- valido si
11 di
. "lIve0 t: 1 yte 1,. , d ' , ' II I 'I 't ,', d d ' ,
que a hvello B di 1kbyte. Pure Ie pagine fisiche 50no di I kb t II t t d I A' etermma un ecceZlOne
,
a a qua e 1 SiS ema operatlvo PUu nspon ere portan 0 m memona
d II
" d' , Y e. can enu 0 e campo 'r \J:;l I;'>.' I dell'alb S" h 'I DT 'di d' I'd '
e m 1rlZZO logico (HOOE), sommato aJ contenuto del root pOI'nter sele ' d 'tt " a parte ero assente. I notl c e se I campo ill ca non va 1 0, 1
II
' ziona un escn ore " , . b' did . . . . dal ' , ,
a Ivello A dell'albero di traduzione, I1 descrittore selezionato punta all b d' t b II ''1;1,' _ restantl It e esCrtttore possono essere lmplegatl ststema operatlvo per memonzzare
eli Hvella B. In questo caso essendo la gerarchia a due soli livelli Ie t ball a5e
d
/ ulnla Sa e an".ll l'indirizzo/la posizione su memoria di massa della tabella (in questa casa) non residente.
1 t b II di ' II . a eel Ive 0 sono::l, 1..
,e a e e pagma.. del campo B (H006) mdividua un descrittore contenente :"1 " it
11 puntatore aHa pagma fislca. . ;'
. Condivisione delle tabelle da parte di piu task Pagine a tabelle puntatrici
. . .'. ' . esse:e condi,?sa collocando i
V:
a1e
.Ia pena eli eSanlmare offerti darla strutturazione a livelli della nell traduZI?ne del task. Le. a nspetto a
PM! 10 alia sua fiesslbllIta. e nguardo al problema della eondivisione : quelh aUe ?agme. consentono aJ. task. di utllizz.are 1area camune can
pagme da parte di piiJ processi. . ::.,;Aii c. permessl .cit protezlOoe dIvers!. .. ... .. .. . ,
. '.. l]tr;L" ,_. In FIgura 8.20 due condlvldono llarea dl metn:0na 1ew mdirizzl sono tradottl
; la a1 hvello tc:sk A pub task
'. B SI. 81 ass.ervI che l'area eondlV1sa e raggmota da mdirizzl IOglcl dlversl per claseuD
non In viene una PMT con \ task.
resldentl, e resldent1 (1a tabella n di livello B). Non e mfatti necessaria che l'intero .-
dl del sia subito presente nella memoria, basta che
In Stano presentl Ie che verranno indirizzate nel ';'1.1, Tipi di descrittori in PMT Per i descrittori sono previsti due tipi di formate:
prossuno futuro. n concetto cornsponde al coslddetto working set del programma lungo e eorto, corrispondenti
l
rispettivamente
,
a 64 bit (due long word) e 32 bit (una
[Den68], [DS72], [8T74], [DS78], ovvero alPin,ieme di pagine che consentono una long word), La disponibilita di due formati damaggiore f1essibUta, In Figura8,21 ,i
eseCUZlOne del programma. In Flgura8.19 V1ene presentato un -albero di ..' nporta come esempio un descnttore dl pagma 10 formato lungo.
traduZlOne solo parzialmente presente in memoria. _ Brevemente, si illustra il significato dei campi,
-,
'.,l.lf;t ';:: ,
'-
f
,
1
I
\
!
1
I
\
t
I

l
I
TABElLA. m
DI
UVEW) B
(PAGlNA NON
PRESENTE)
TABEILA n
DI
UVELLO B
TABEllA 0
DI
UVEW) B
(PAGINA NON
PRESENTE)
:-----l I
I
,
I
,
A B OFFSET
TABELLE DI
L1VElLO A
joooooooo10101 0000000I10! xxxxxxxxxxl
A 6 X
------l I
1,-------,-,_I
J '
trf-.-ll<'IAUOO --

. lNDLRI7.Z0
INGRESSO aOA 11t - 1 INCRESSO
nt 008 DELLA
l1t a ' ' PACLNA
\IT 1""'UDO 1
,
,
1 I I
:-----1 ' I
,
A (12 bit) ,B (10 bit) ,OFFSET (10
1000000001110100000001101 xxxxxxxxxx[
E , X
OOAOl.AOO
Capitola 8
,
,
TABELLA OJ
,
UVEUO A ,
,
--'
,
PUNTATORE ALLA PAGrNA W
INCRESSO OOE:
INCRESSO
006
l
ROOT POINTER
36B
INDIRIZZO
'j'"
Ij'.'
111;;,
__ ,':1. ..
'
', .... -
-
__ ---,:L:a:..m:::e:m::o::rc.:ia:....:vc.:irt:.:.::u:::al:::e:-_3=-6=-9c
,"
-'
Ili'll.m:'.r,,>''-: :--
.


",
U,W "j-".-
:..
DOAD lADa

.. '.:-'
"

'r;:ll;;.!!!.:;;:;-' '


,"" ,,:
':::i;.'i;;",:r: .': RP
'!'!j' /,' (, .- .,
-C=:=:=:::Jt-o
I
,0:;-
, .
",''',,,, "
.'-
r, .. '" ,'.

'
-'
.
"t' li..1 '.
"111-'
"," ';1, _ -
. ' "'n
, .. : .
;"::!;';.Io\
. '.'

'( .:i-I,-, ,).Jhf.,'
1 01,t .. '
,$:",-
c
l
..... - :
-"','" ' . . ,iI/:'lr.! _; .
';"1....."1. " .. .. '
.:',:>J' 'i f:
",It';',.'
. ')1' j.
. .',..J' . I I
< -:: .
. ..:. ?' 7 ,.,:,' . i
TABELLE DI . , tP
1
LrvEll.O B "..
Figura 8.18 Esempio di a.lbero di traduzione. L'a.lbero e a d li lr I . A B Figura 8.19 Esempio di albero di traduzione con tabelle non residenti. L'albero e a due
OFFSET sonG rispettivamente di 12 10 e 10 bit per cui la I'll A
C
":"d
PI
4k'b e .' . Se campo DT del descrittore della tabella. di livello B contien.e il codice- valido si
11 di
. "lIve0 t: 1 yte 1,. , d ' , ' II I 'I 't ,', d d ' ,
que a hvello B di 1kbyte. Pure Ie pagine fisiche 50no di I kb t II t t d I A' etermma un ecceZlOne
,
a a qua e 1 SiS ema operatlvo PUu nspon ere portan 0 m memona
d II
" d' , Y e. can enu 0 e campo 'r \J:;l I;'>.' I dell'alb S" h 'I DT 'di d' I'd '
e m 1rlZZO logico (HOOE), sommato aJ contenuto del root pOI'nter sele ' d 'tt " a parte ero assente. I notl c e se I campo ill ca non va 1 0, 1
II
' ziona un escn ore " , . b' did . . . . dal ' , ,
a Ivello A dell'albero di traduzione, I1 descrittore selezionato punta all b d' t b II ''1;1,' _ restantl It e esCrtttore possono essere lmplegatl ststema operatlvo per memonzzare
eli Hvella B. In questo caso essendo la gerarchia a due soli livelli Ie t ball a5e
d
/ ulnla Sa e an".ll l'indirizzo/la posizione su memoria di massa della tabella (in questa casa) non residente.
1 t b II di ' II . a eel Ive 0 sono::l, 1..
,e a e e pagma.. del campo B (H006) mdividua un descrittore contenente :"1 " it
11 puntatore aHa pagma fislca. . ;'
. Condivisione delle tabelle da parte di piu task Pagine a tabelle puntatrici
. . .'. ' . esse:e condi,?sa collocando i
V:
a1e
.Ia pena eli eSanlmare offerti darla strutturazione a livelli della nell traduZI?ne del task. Le. a nspetto a
PM! 10 alia sua fiesslbllIta. e nguardo al problema della eondivisione : quelh aUe ?agme. consentono aJ. task. di utllizz.are 1area camune can
pagme da parte di piiJ processi. . ::.,;Aii c. permessl .cit protezlOoe dIvers!. .. ... .. .. . ,
. '.. l]tr;L" ,_. In FIgura 8.20 due condlvldono llarea dl metn:0na 1ew mdirizzl sono tradottl
; la a1 hvello tc:sk A pub task
'. B SI. 81 ass.ervI che l'area eondlV1sa e raggmota da mdirizzl IOglcl dlversl per claseuD
non In viene una PMT con \ task.
resldentl, e resldent1 (1a tabella n di livello B). Non e mfatti necessaria che l'intero .-
dl del sia subito presente nella memoria, basta che
In Stano presentl Ie che verranno indirizzate nel ';'1.1, Tipi di descrittori in PMT Per i descrittori sono previsti due tipi di formate:
prossuno futuro. n concetto cornsponde al coslddetto working set del programma lungo e eorto, corrispondenti
l
rispettivamente
,
a 64 bit (due long word) e 32 bit (una
[Den68], [DS72], [8T74], [DS78], ovvero alPin,ieme di pagine che consentono una long word), La disponibilita di due formati damaggiore f1essibUta, In Figura8,21 ,i
eseCUZlOne del programma. In Flgura8.19 V1ene presentato un -albero di ..' nporta come esempio un descnttore dl pagma 10 formato lungo.
traduZlOne solo parzialmente presente in memoria. _ Brevemente, si illustra il significato dei campi,
-,
'.,l.lf;t ';:: ,
'-
371
DATO
Sono previsti 4 differenti
La memoria. viTtuaie
TAG
Descrittori volidi (DT = 2, 3) Si trovano nei nodi posti fra la radice e Ie
terminazioni dell'albero. Essi contengono: il puntatore alia tabella, il limite
relativo all'indice nella tabella, Ie informazioni di stato, inclusive delle in-
formazioni relative aHa protezione. La differenziazione tramite DT riguarda
esclusivamente il formato dei deserittori nella tabella del prossimo livello
(DT = 2 per descritlori corli, DT = 3 per descrittori lunghi),
Descrittori non volidi (DT = 0) P05sono essere presenti a ogni livello del
l'albero di traduzione eeeetto la radice. Se viene ineontrato un deserittore
non valido la ricerca termina e si genera un'eccezione. Per questo motivo)
i campi dei descrittori non validi possono venire impiegati per eontenere
informazioni utili al sistema operativo. In particolare possono indirizzare
la pagina sulla memoria di massa, identificare una pagina 0 un ramo cii
PMT non correntemente in memoria centrale, oppi.ue una parte di PMT
non aneora definita.
Descrittori di pagina (DT = 1) I normali descrittori di pagina' sono conte
nuti neUe tabelle di pagina (terminazioni dell'albero) e forniscono l'indirizzo
della pagina fisica. Sono moitre previsti descrittori di pagina eady termi
nation, COS! detti Rerche contenuti non aL livello pin basso dell'albero di
traduzione, bens! in tabelle intermedie. La ricerca in PMT termina quando
viene ineontrato un descrittore di pagina dell'uno a dell'aItro genere.
DT - Idenlifica il tipo di descritlore (Descriptor Type),
tipi di deserittore e cioe
wp -(Write Protect) Indica 1a protezione in serittura, ovvero che non eeonsentito
at programma. di modificare la. locazione indirizzata.
lNDtRlZZO DEUA
PACINI., FlS!CA
CONDIV[SA 01. A E B
(PROTEZlONE SCRlTIURA
ATTrvATA DAL TASK ,0\)
,
,
:-----l ' I
A B OFFSET
[0000000010101 00000001101 xx:o:xxxxxxl
, , x
31 031 87 D
STATO 1 !tlDIRIZZO 01 PACIIlA _
LI.LLLI.IIIIIIIIII
Capitolo 8
,

,
,
,
,

POSIZION!
00'
'" """"'"
I
I
I I
I
I
TABElll: 01 UVEL.LO TABEll.E DI UVE1LO B
A DEL TASK A DEL TASK A
I
I
POSIZ,06
WP DISASS.
- "
I I
S - Identifica una tabella 0 una pagina cui puo aceedere solo un programma
eseguito a Iivello del supervisore, '
cr . (Cache Inhibit) Inibisce' l'impiego della cache per quella pagina,
parole il contenulo della pagina non etrasportabile in cache,
M - Indica che la pagina e stata modificata.
U - Indica che il descrittore estato raggiunto nel corso di una ricerca. In una:
tabella di descrittori dj pagina, tale bit indica che lao pagina corrispondente al
descrittore estata raggiunta. In una tabella puntatrice einveee posta per indicare
che estato usato il puntatore in esso eontenuto durante la ricerea in tabella.
RP
INDIRIZZO OOAO lAOO
",n,\,-'"
" . \\' ,-,
..
.t\ ',,<-.':"
..

!<'jd'
""."....,c- ,
,""""" "'I'"T..,y", .' ':.

f

.
.. .':
'I 'I\\) "
, .' .

",." ,. .
"-"', ',,' "

'
.. "
<
" r,_._, .. ,
.. " ,.J ... ,.
,',"..,.,........ .
r. .' ,.
'I"""'''''
, ' .f'" ""'
:'l".''' '
. ; r" ....,."
, ,-' ..<,.,
: .
'hJ; .' ,"
" . ,(
'.F .. ",'-,:
,i;oI. v'i"'''a-

,:':'ij, ...' <:> .' c
./rl,(i., ,
.._.n ',.""_'
"'ij' ' ""k

", .,'
;J!t-d;i/.i:.!
/lJ:, ,
. . , ""."''';:\l;.ol;'

,<,!' , . ", - .'. ,
, '" 'I,,''::',j''.i,'''.'',
"" .::,,,. "". '
-:J"i':i:,' ,
,I ,"'1'
-.1''''> . "'f'.""."
...,'. '. ',,>:."JI "
Y'" .' II ........

. !r.I'
. Ii . '
" ..; . l
:,.J.. 1""',!'iE""":'
,..-il] ,:1,",'"
}.:l",.,. -p..".. '
\ I -'./:, , ..
.
"
, i<" "<<4", ' ..
,""'" h .!';),i'!....
':.'!l!.4!:
, )Ji
I I ,
I fABEIl.E Dl UVEL.LO B iJi',:,u :$..'t.';;l,'
, ,,;t/W ritt,) <:.,
TABEIJ.E: Dl UVELLO A DEL TASK B ,:ar.CI .t:-t.1.t.l....
1
DEL TASt<8, :JY; .
Figura 8.20 Esempio di albero di. che usa tabelle .condivise.. punta alia ;
dell'albero del task correntemente lD esecuZlone. I due task A e B condivldono la medeslma . ,.
pagina attraverso i due percorsi indieati. La pagina eprotetta in scrittura per il task A e ..:
non protetta per il task B. :.-
'"
\:i; , '
: -ill_' , ...
. ,'h ..
',';1.;0"1", I .
...7.'ll:- ' __ .. '
:';i"f. 8,7,3 II TLB


11 Translation Lookaside BujJer
45
presenta 22 posizioni eompletamente associative e
,
F
' 8 21 F to dId 'tt <Ii '(f t I ) I t PMT II:;?;'; egestito con polilica (pseudo) LRU, A tal fine per ogni voce viene usalo iI bit di
19ura. onna. e escn are pagma orma 0 ungo. n una s essa possono ,c'., .., . (' , F' ) 1 'all .
essere presenti descrittod lungbi e corti, ma c'e il vineolo cbe all'interno della medesima. ,0:'''"' vahdlta e un altro blt mterno, non mostrato m 19ura8.22 re ahvo a sua stona.
(satto) tabella i descrittori devono essere tutti dello stesso formato. -.'
'- Z8 U U C 2728 25 24 23 0
.., 0' Fe I INDIRlZ20 LaGleo I lm INOlRIZ20 FISICO I
1'" 7',.. P
.. "K'" .
.. ill<' . 'I;
,'l"
."" ,
.;...', '
P!':i: ff
.. Figura 8.22 For-mato di una. voce in TLB.
'.....

: :;),/ ",'
ha TAG l'indirizzo e fisico;
In al
nitre ad alcum bit dl stato (Flgura8.22). A parte I campI di IOdmzzo, 1restantl campI
tre "', ' K'l",' h 'I I' iii
' '-; anno 1 seguen e SIgn cato:
,
-
<ISLa Motorola usa. il termine AdduSI TranslGtion Cache, abbreviato in ATe.
I,.:>, tt:,.. ..
.'"
';;;Il
, ,

370
I
I
I
I
\
I
\
\
\
\
\
,I
1
1 I
.I
371
DATO
Sono previsti 4 differenti
La memoria. viTtuaie
TAG
Descrittori volidi (DT = 2, 3) Si trovano nei nodi posti fra la radice e Ie
terminazioni dell'albero. Essi contengono: il puntatore alia tabella, il limite
relativo all'indice nella tabella, Ie informazioni di stato, inclusive delle in-
formazioni relative aHa protezione. La differenziazione tramite DT riguarda
esclusivamente il formato dei deserittori nella tabella del prossimo livello
(DT = 2 per descritlori corli, DT = 3 per descrittori lunghi),
Descrittori non volidi (DT = 0) P05sono essere presenti a ogni livello del
l'albero di traduzione eeeetto la radice. Se viene ineontrato un deserittore
non valido la ricerca termina e si genera un'eccezione. Per questo motivo)
i campi dei descrittori non validi possono venire impiegati per eontenere
informazioni utili al sistema operativo. In particolare possono indirizzare
la pagina sulla memoria di massa, identificare una pagina 0 un ramo cii
PMT non correntemente in memoria centrale, oppi.ue una parte di PMT
non aneora definita.
Descrittori di pagina (DT = 1) I normali descrittori di pagina' sono conte
nuti neUe tabelle di pagina (terminazioni dell'albero) e forniscono l'indirizzo
della pagina fisica. Sono moitre previsti descrittori di pagina eady termi
nation, COS! detti Rerche contenuti non aL livello pin basso dell'albero di
traduzione, bens! in tabelle intermedie. La ricerca in PMT termina quando
viene ineontrato un descrittore di pagina dell'uno a dell'aItro genere.
DT - Idenlifica il tipo di descritlore (Descriptor Type),
tipi di deserittore e cioe
wp -(Write Protect) Indica 1a protezione in serittura, ovvero che non eeonsentito
at programma. di modificare la. locazione indirizzata.
lNDtRlZZO DEUA
PACINI., FlS!CA
CONDIV[SA 01. A E B
(PROTEZlONE SCRlTIURA
ATTrvATA DAL TASK ,0\)
,
,
:-----l ' I
A B OFFSET
[0000000010101 00000001101 xx:o:xxxxxxl
, , x
31 031 87 D
STATO 1 !tlDIRIZZO 01 PACIIlA _
LI.LLLI.IIIIIIIIII
Capitolo 8
,

,
,
,
,

POSIZION!
00'
'" """"'"
I
I
I I
I
I
TABElll: 01 UVEL.LO TABEll.E DI UVE1LO B
A DEL TASK A DEL TASK A
I
I
POSIZ,06
WP DISASS.
- "
I I
S - Identifica una tabella 0 una pagina cui puo aceedere solo un programma
eseguito a Iivello del supervisore, '
cr . (Cache Inhibit) Inibisce' l'impiego della cache per quella pagina,
parole il contenulo della pagina non etrasportabile in cache,
M - Indica che la pagina e stata modificata.
U - Indica che il descrittore estato raggiunto nel corso di una ricerca. In una:
tabella di descrittori dj pagina, tale bit indica che lao pagina corrispondente al
descrittore estata raggiunta. In una tabella puntatrice einveee posta per indicare
che estato usato il puntatore in esso eontenuto durante la ricerea in tabella.
RP
INDIRIZZO OOAO lAOO
",n,\,-'"
" . \\' ,-,
..
.t\ ',,<-.':"
..

!<'jd'
""."....,c- ,
,""""" "'I'"T..,y", .' ':.

f

.
.. .':
'I 'I\\) "
, .' .

",." ,. .
"-"', ',,' "

'
.. "
<
" r,_._, .. ,
.. " ,.J ... ,.
,',"..,.,........ .
r. .' ,.
'I"""'''''
, ' .f'" ""'
:'l".''' '
. ; r" ....,."
, ,-' ..<,.,
: .
'hJ; .' ,"
" . ,(
'.F .. ",'-,:
,i;oI. v'i"'''a-

,:':'ij, ...' <:> .' c
./rl,(i., ,
.._.n ',.""_'
"'ij' ' ""k

", .,'
;J!t-d;i/.i:.!
/lJ:, ,
. . , ""."''';:\l;.ol;'

,<,!' , . ", - .'. ,
, '" 'I,,''::',j''.i,'''.'',
"" .::,,,. "". '
-:J"i':i:,' ,
,I ,"'1'
-.1''''> . "'f'.""."
...,'. '. ',,>:."JI "
Y'" .' II ........

. !r.I'
. Ii . '
" ..; . l
:,.J.. 1""',!'iE""":'
,..-il] ,:1,",'"
}.:l",.,. -p..".. '
\ I -'./:, , ..
.
"
, i<" "<<4", ' ..
,""'" h .!';),i'!....
':.'!l!.4!:
, )Ji
I I ,
I fABEIl.E Dl UVEL.LO B iJi',:,u :$..'t.';;l,'
, ,,;t/W ritt,) <:.,
TABEIJ.E: Dl UVELLO A DEL TASK B ,:ar.CI .t:-t.1.t.l....
1
DEL TASt<8, :JY; .
Figura 8.20 Esempio di albero di. che usa tabelle .condivise.. punta alia ;
dell'albero del task correntemente lD esecuZlone. I due task A e B condivldono la medeslma . ,.
pagina attraverso i due percorsi indieati. La pagina eprotetta in scrittura per il task A e ..:
non protetta per il task B. :.-
'"
\:i; , '
: -ill_' , ...
. ,'h ..
',';1.;0"1", I .
...7.'ll:- ' __ .. '
:';i"f. 8,7,3 II TLB


11 Translation Lookaside BujJer
45
presenta 22 posizioni eompletamente associative e
,
F
' 8 21 F to dId 'tt <Ii '(f t I ) I t PMT II:;?;'; egestito con polilica (pseudo) LRU, A tal fine per ogni voce viene usalo iI bit di
19ura. onna. e escn are pagma orma 0 ungo. n una s essa possono ,c'., .., . (' , F' ) 1 'all .
essere presenti descrittod lungbi e corti, ma c'e il vineolo cbe all'interno della medesima. ,0:'''"' vahdlta e un altro blt mterno, non mostrato m 19ura8.22 re ahvo a sua stona.
(satto) tabella i descrittori devono essere tutti dello stesso formato. -.'
'- Z8 U U C 2728 25 24 23 0
.., 0' Fe I INDIRlZ20 LaGleo I lm INOlRIZ20 FISICO I
1'" 7',.. P
.. "K'" .
.. ill<' . 'I;
,'l"
."" ,
.;...', '
P!':i: ff
.. Figura 8.22 For-mato di una. voce in TLB.
'.....

: :;),/ ",'
ha TAG l'indirizzo e fisico;
In al
nitre ad alcum bit dl stato (Flgura8.22). A parte I campI di IOdmzzo, 1restantl campI
tre "', ' K'l",' h 'I I' iii
' '-; anno 1 seguen e SIgn cato:
,
-
<ISLa Motorola usa. il termine AdduSI TranslGtion Cache, abbreviato in ATe.
I,.:>, tt:,.. ..
.'"
';;;Il
, ,

370
I
I
I
I
\
I
\
\
\
\
\
,I
1
1 I
.I
\
I
I
I
I
I
I
t
I
I
I
(
I
1
l
I
1 " I N I m ., no ,I m ,1_, __I
il registro di controllo della traduzione (TC), eli 32 bit;
i due registri di traduzione trasparente (TO e Tl), di 32 bitj
due registri Root Pointer (CRP e SRP), 64 bit".
.
I Campo I Bit oi inizio
i Limitazioni
A . 31-=IS'
I aa 1 a 15 bit (minimo 2 se
B 31!STIA
da 0 a 15 bit
C
31ISTIA-TIB
da 0 a 15 bit (ignorato se TIB 0)
D
3I!STIATIBTIC , da 0 a 15 bit (ignorato se TIB 0 TIC Sono 0)
II registro di state di MMU La funzione del registro eintuibile: non vale la pena
di perdersi nella descrizione dei dettagli del suo funzionamento.
Capitolo 8
V - Bit eli validita.
B Errore di bus. Segnala se durante la ricerca in PMT che ha portato alia
costituzione della voce in PMT, estato incontrato un descrittore non valido, una
violazione delliveIlo utente/supervisore 0 una violazione dellimite
46
. nbit viene
asserito anche a causa di un miss in TLB: il miss provoca unJeecezione a cui segue
la ricerca in PMT, a conclusione della quale viene costruita la corrispondente
(nuova) voce in TLB, can B asserito. Aquesto punto la CPU riprova l'accesso
at TLB usando il medesimo indirizzo, generando alleora un'eccezione per via di
B asseritoj a seguito di questa eccezione il sistema operativo azzera B.
8,7.4 Su alcune caratteristiche specifiche della MMU
...
..

)];
:
" ..
,t.Q
Io
,:
,'if'" .. "'-. ,"
"-. La memoria virtuale 373
;1,
,r" 1
- ':
';'1";' i" " \.-:",;:::.1' '.
,. '",.'" ,-'
.. :;;'
. ;'::.l '.:,_
' .. .. ',."'.. '
... _.,' _,,' .. J .'
. ,
:I... .' ':;,J,.:'.' .-.0.
,"\- ..t"l,.,.-
", E '." -.
:I'ill . .....J, .'

"


F .
CI - Inibizione cache. Se asserito, blocca l'attivita. delle cache per questa riferi- If . t dO t 11 d 11 . '
mente alia memoria47. .regls ro I con ro? e a tradU210ne TC E stato dette che la dimensione
' ;Z5<'';;'' delle tabelle e. delle pagme determinata attraverso it registro TC. In Figura8.23
WP - Protezione scrittura. WP easserito se, per questa voce in TLB, C'e almena S1 ; II modo: IS, TLA, TIB, TIC, TID e PS SODa i nomi associati a
uri bit WP asserito nei descrittori percorsi in PMT. , , campi di TCj 1l lora contenuto determina Ie misure dei campi dell'indirizzo logico.
. 'M):.'1,,;l'.
M - .Modifica avvenuta.. a seguito di una scrittura logico
cornspondente alIa POSIZtone In' TLB. Se la CPU tenta una scnttura e trova M "
disasserito in TLB, la voce viene invaHdata e viene dato corso alIa ricerca in '::1211' '. i
PMTI M nel descrittore pagi?a. A punta vien.e una '. r;I I ' I . [ . [ ,I 1------
nuova poslzlone m TLB con M assento. Clo per garantlre che la prIma scnttura L . Po ". tI, 0fr.I:IT I
a una data pagina asserisca M sia in TLB che in PMT, anche quando la posizione 8 23 Cam . dill d I. .. 0
in TLB poteva essere gia. stata ereata per effetto di una precedente operazione di ;.. ;sco. dei campi I, A, B
l
C, De OFFSET
lettura . d . rmma a con enuto I lA, Tm, TIC, TID e PS del registro
. . I <:<>ntro.L1o della tradUzlOne TC. II campo FC viene abilitato attraverso un bit di TC (n
. . . ;.Y,;.' i In figura)j se l'uso di FC non eabilitato il . r 11 d II t b 11 . .. on
81 .notl il dell'mdmzzo l?glcO 24 bi:. ,/', campo A dell'indirizza 10gico; in caso contrario 'la p::o lve 0 e a a e a e dal
dimenslOne dt pagma dl. 256 Per dunenslOm maggton I blt menD slgmficatlvl dt M .. codice funzione.FC. ' p a tabella della struttura emdiClzzata
questa campo vengono 19noratI. ."

:':, 'ir, .,' .
. ..
:":,'.,,!, . " 't::...'-"',':.. ,
'.w.; i :'f:'
'1;."'., .
'tV" ',' -",'
'. I.''; ; i
.', l: .
. '''.' ..<,,!/i,::.......f
. 't"'
e. possibile dare .tutti i del della MMU. Per
esSI lliettore e ffiVltato a leggere 1manuall Motorola e in parttcolare {Mot87].
n modelIo di programmazione della MMU si compone dai registri sotto eleneati.
I registri della MMU possono essere modificati solo dai programmi che eseguono a '
Hvello cii .tal .senso, Ie .istr.uzioni di manipolazione dei registri di i . .
MMU sono dl carattere prlVlleglato. I reglstn della MMU sono: 8.3 VIDcoh per Ie dimensioni dei campi dell'indirizzo
un reglstro dl stato dell'MMU stessa (MMUSR), dl 16 bIt; .
JI .. IS serve a stabilire la dimensione dello spazio deg" In' dirlZ'.,' virt'uali h .
'", '. d t . t 32 IS U C e vlene
chiama questo bit Bus error, percbe quando si genera produce comunque una, .;;j;. ..: 0 come - . Per esempio, se IS=O 10 spazio e massimo (232 byte) s
condizIOne dl errore s.ul . .. . . .:' ;,t,:, ::>.:,: IS-15 (valore massuno assumibile) 10 spazio de Ii indirizz ... 17' e
(e .11 In PMT) e assento, un rlfenmento aHa. pagma. fa assenre g 1 VlrtUali 51 nduce a 2 byte.
la lmea ClOUT, uttllZzablle per IDlblre !'accesso all'eventuale cache esterna. ",
48Come gia accennato, iI 68030, per quanta si riferisce alia. protezione, prevede due stati: 10 stato 49Diversamente da. quanto detto . d I .
bit S) del registro di stato dena maccnina (SR). Si noti che quando il processore viene meMO sotto r oppure per gli accessi in ,tato d' t' t ase. e t t edr.o r. per gh acCessl in stato d.i utente
. . . .. ';}.1".' ". I U en e e In 8 a. 0 I 8upeIVISOre SRP f, . I b '
tenSlOue, 10 stato dlventa autornatlcamente quello dl supervlsore. ,,4
01
traduzlOne a esclU3ivo usa per gli ""c II' d I . - ornlsce a ase dell'a.lbero di
.::-;i'} . -- ......,1 a area e supeIVI80re.
""" I'" '........,,,..-.. _.
312'
\
I
I
I
I
I
I
t
I
I
I
(
I
1
l
I
1 " I N I m ., no ,I m ,1_, __I
il registro di controllo della traduzione (TC), eli 32 bit;
i due registri di traduzione trasparente (TO e Tl), di 32 bitj
due registri Root Pointer (CRP e SRP), 64 bit".
.
I Campo I Bit oi inizio
i Limitazioni
A . 31-=IS'
I aa 1 a 15 bit (minimo 2 se
B 31!STIA
da 0 a 15 bit
C
31ISTIA-TIB
da 0 a 15 bit (ignorato se TIB 0)
D
3I!STIATIBTIC , da 0 a 15 bit (ignorato se TIB 0 TIC Sono 0)
II registro di state di MMU La funzione del registro eintuibile: non vale la pena
di perdersi nella descrizione dei dettagli del suo funzionamento.
Capitolo 8
V - Bit eli validita.
B Errore di bus. Segnala se durante la ricerca in PMT che ha portato alia
costituzione della voce in PMT, estato incontrato un descrittore non valido, una
violazione delliveIlo utente/supervisore 0 una violazione dellimite
46
. nbit viene
asserito anche a causa di un miss in TLB: il miss provoca unJeecezione a cui segue
la ricerca in PMT, a conclusione della quale viene costruita la corrispondente
(nuova) voce in TLB, can B asserito. Aquesto punto la CPU riprova l'accesso
at TLB usando il medesimo indirizzo, generando alleora un'eccezione per via di
B asseritoj a seguito di questa eccezione il sistema operativo azzera B.
8,7.4 Su alcune caratteristiche specifiche della MMU
...
..

)];
:
" ..
,t.Q
Io
,:
,'if'" .. "'-. ,"
"-. La memoria virtuale 373
;1,
,r" 1
- ':
';'1";' i" " \.-:",;:::.1' '.
,. '",.'" ,-'
.. :;;'
. ;'::.l '.:,_
' .. .. ',."'.. '
... _.,' _,,' .. J .'
. ,
:I... .' ':;,J,.:'.' .-.0.
,"\- ..t"l,.,.-
", E '." -.
:I'ill . .....J, .'

"


F .
CI - Inibizione cache. Se asserito, blocca l'attivita. delle cache per questa riferi- If . t dO t 11 d 11 . '
mente alia memoria47. .regls ro I con ro? e a tradU210ne TC E stato dette che la dimensione
' ;Z5<'';;'' delle tabelle e. delle pagme determinata attraverso it registro TC. In Figura8.23
WP - Protezione scrittura. WP easserito se, per questa voce in TLB, C'e almena S1 ; II modo: IS, TLA, TIB, TIC, TID e PS SODa i nomi associati a
uri bit WP asserito nei descrittori percorsi in PMT. , , campi di TCj 1l lora contenuto determina Ie misure dei campi dell'indirizzo logico.
. 'M):.'1,,;l'.
M - .Modifica avvenuta.. a seguito di una scrittura logico
cornspondente alIa POSIZtone In' TLB. Se la CPU tenta una scnttura e trova M "
disasserito in TLB, la voce viene invaHdata e viene dato corso alIa ricerca in '::1211' '. i
PMTI M nel descrittore pagi?a. A punta vien.e una '. r;I I ' I . [ . [ ,I 1------
nuova poslzlone m TLB con M assento. Clo per garantlre che la prIma scnttura L . Po ". tI, 0fr.I:IT I
a una data pagina asserisca M sia in TLB che in PMT, anche quando la posizione 8 23 Cam . dill d I. .. 0
in TLB poteva essere gia. stata ereata per effetto di una precedente operazione di ;.. ;sco. dei campi I, A, B
l
C, De OFFSET
lettura . d . rmma a con enuto I lA, Tm, TIC, TID e PS del registro
. . I <:<>ntro.L1o della tradUzlOne TC. II campo FC viene abilitato attraverso un bit di TC (n
. . . ;.Y,;.' i In figura)j se l'uso di FC non eabilitato il . r 11 d II t b 11 . .. on
81 .notl il dell'mdmzzo l?glcO 24 bi:. ,/', campo A dell'indirizza 10gico; in caso contrario 'la p::o lve 0 e a a e a e dal
dimenslOne dt pagma dl. 256 Per dunenslOm maggton I blt menD slgmficatlvl dt M .. codice funzione.FC. ' p a tabella della struttura emdiClzzata
questa campo vengono 19noratI. ."

:':, 'ir, .,' .
. ..
:":,'.,,!, . " 't::...'-"',':.. ,
'.w.; i :'f:'
'1;."'., .
'tV" ',' -",'
'. I.''; ; i
.', l: .
. '''.' ..<,,!/i,::.......f
. 't"'
e. possibile dare .tutti i del della MMU. Per
esSI lliettore e ffiVltato a leggere 1manuall Motorola e in parttcolare {Mot87].
n modelIo di programmazione della MMU si compone dai registri sotto eleneati.
I registri della MMU possono essere modificati solo dai programmi che eseguono a '
Hvello cii .tal .senso, Ie .istr.uzioni di manipolazione dei registri di i . .
MMU sono dl carattere prlVlleglato. I reglstn della MMU sono: 8.3 VIDcoh per Ie dimensioni dei campi dell'indirizzo
un reglstro dl stato dell'MMU stessa (MMUSR), dl 16 bIt; .
JI .. IS serve a stabilire la dimensione dello spazio deg" In' dirlZ'.,' virt'uali h .
'", '. d t . t 32 IS U C e vlene
chiama questo bit Bus error, percbe quando si genera produce comunque una, .;;j;. ..: 0 come - . Per esempio, se IS=O 10 spazio e massimo (232 byte) s
condizIOne dl errore s.ul . .. . . .:' ;,t,:, ::>.:,: IS-15 (valore massuno assumibile) 10 spazio de Ii indirizz ... 17' e
(e .11 In PMT) e assento, un rlfenmento aHa. pagma. fa assenre g 1 VlrtUali 51 nduce a 2 byte.
la lmea ClOUT, uttllZzablle per IDlblre !'accesso all'eventuale cache esterna. ",
48Come gia accennato, iI 68030, per quanta si riferisce alia. protezione, prevede due stati: 10 stato 49Diversamente da. quanto detto . d I .
bit S) del registro di stato dena maccnina (SR). Si noti che quando il processore viene meMO sotto r oppure per gli accessi in ,tato d' t' t ase. e t t edr.o r. per gh acCessl in stato d.i utente
. . . .. ';}.1".' ". I U en e e In 8 a. 0 I 8upeIVISOre SRP f, . I b '
tenSlOue, 10 stato dlventa autornatlcamente quello dl supervlsore. ,,4
01
traduzlOne a esclU3ivo usa per gli ""c II' d I . - ornlsce a ase dell'a.lbero di
.::-;i'} . -- ......,1 a area e supeIVI80re.
""" I'" '........,,,..-.. _.
312'
1. Abilita.re/disabilitare la traduzione dell'indirizzo. Se la traduzione edisabilitata,
gli indirizzi logici sono usati come indirizzi fisici.
II campo PS determina la dimensione della pagina (da 512 a 32kbyte), Esistono dei
vincoli per TIA, TID, TIC e TID, come indjcato in Tabella. 8.3.
In aggiunta a quanta sapra e a quanta illustrato nella didascalia di Figura 8.23,
il registro TC serve anche aUe funzioni seguenti.
RAMO DELLO SPAZlO PROGRAMMA Dl SUPERVISORE
RAMO CELLO SPAZIO DATI OJ SUPERVISORE
RAMO DEWJ SPAZIO PROGRAldW. D'UTENTE
TABELLA 01
lJ'lEU,.O Fe
RP
La memoria virtuale 375
QueUo di Figura8.24 elo schema pill di protezione. Esiste un1ulteriore
possibilita consistente nel non usare i codici FC e nel costruire (a partire dallivello
A) una tabella che divide i 4Gbyte in quattro aree, secondo 10 schema <Ii Figura8,25.
I bit S e WP vengono usati per definire'le caratteristiche di protezione di cia.scuna
area.
1. (1foN DEmmo. R1SRVA'fO)
2. SPUIO DATt O'UTENTt
3. SPAZIO PR,OGR.uou. D'on:NTI;
!DEFINrrO OA UTEN'l'E.RISERVATO) I I
HON DEroITT'O. RlSBRVATO) .
S. SPAZIO OA.Tt 01 SlfPRVJSORB I
7. SPUtO PROGR.UOtA III suPRVlOOR
S. SI'/..ItO [)t CPU (HOH TRAOOTTO) TABELJ-E D1 UVELLO A
Figura 8.24 Esempio di albero eli traduzione con tabella di livello Fe. Gli elementi di
questa tabella. vengono trovati attraverso il contenuto del campo FC. La presenza della
tabella dipende dal valore di un bit TC (il bit FCL (FUnction Code Lookup)). Essendo
Fe un'estensione dell'indirizzo logica, si rendono disponibili 8 spazi di 4 Gbyte. La spazio
d1indirizzo 4 eriservato per un usa delPutente, 1 e 5 sana riservati dalla Motorola.
RA1IO DELLe SPAZIO DATI O'U7ENTE
,
Fino a questo punto (Figura8.l7 e successive) non si e tenuto conto dei 3 bit Fe}
assumendo che it primo livello della PMT corrispondesse al campo A dell1indirizzo.
In realta, tra RP e 1a tabella d.i hveUa A pub essere opzionalmente presente Wla
tabella di 8 posizioni, indicizzata attraverso Fe. Come e gia stato accennato nel
Paragrafo 8.7.2
1
i codici di funzione sono usati per indicare all'esterno i1 contesto di
macchina entro cui.viene eseguita la corrente istruzionej in particolare essi identificano
gli accessi alia spazio del programma utente} aIlo spazio dei dati utente, allo spazio
,
del programma supervisore e aHo spazio dei dati supervisore. E evidente che i codici
funzione, separando i differenti spazi, devono necessariamente essere considerati nel
contesto della protezione. In Figura8.24 viene riportato un esempio di albero che oe
fa uso.
8,7,5 La protezione
Capitolo 8
2, Abilitare(disabilitare I'uso del registro SRP, Se il registro SRP edisabilitato, sia
gli accessi di utente che di supervisore usano 1a tabella di traduzione definita dal
CRP, In cas<) contrano, gli accessi d'utente usano it CRP mentre gli accessi del
supervisore utilizzano PSRP.
"\1 ;"'"c'> '. '.
, )t',,"<.,
.. ... ..,
<1
h:j
,,", . ..
.,',':r ,.';"-i<i",, ,
. ''; (I' .. "
.,F .1<'---.
. . .-
'I ..
.1':,"":.:'

- t<Ji':l : -

.';.
:IIr.,1I .... ..
,-."',' ."; ,
.. ,...g
'''!:'. .... ;..'
'-1"'-'
';,l' . .
';.e\' ::i:,'J -"
;".\.:...
-. ::- ;"',
..'.. ">.,.
.''';::', '
.,
. ,. .......'
.. .. ", '
-
.. ,..;:!!: ""
,": i:;:;ll ;"
", ":<j,l '.',-'.: ',' 'I:
'''1 ",".
'-::i<-' .
- ... "
'-'f,!;:':'" .,
i,.' ifA!. ,
" .. ..'."'... {, '

.."' ..
""$,a .. ".,
, or.,.,; . .- ." ..
, I ',"," '
'", ,'.""'.'''.,<'
't..
1
!!
'i .
Registri di traduzione trasparente I due registri di 32 bit TTO e TTl servono a <;, .
individuare due blocchi nello spazio degli indirizzi logici che vengono tradotti in modo
trasparente, nel senso che gli indirizzi 10gici in questi blocchi vengono presi ,
indirizzi (senza cantrolla di A tale
campo dI8 bIt di TTO, ,TTl Vlene cOnITontato con Ie hnee A
SI
- A" degh mdinzzl;
III caso di uguaglianza SI ha la traduzlOne trasparente. .
Ognuno dei due registri TTX puo essere ,indipendentemente disabilitato. Una
volta disabilitato, il registro viene ignorato. E possibile stabilire se la traduzione
trasparente si applica solo in lettura, solo in scrittura 0 in ambedue i casi.
. la .domand.a delPutilita di questi registri. Essi con.sentono di :\'t ','
il . d1 .. potrebbero .
usatl per Identificare aree eli memOrIa 11 CU1 contenuto non camb1a (per esemplO, aree,'flli: ".-
corrispondenti at nueleo del sistema operativo), ovvero per mappare in posizioni fisse
<Ii memoria i dispositivi di I/O. '.3,
. .,;."1'
'r fi<' :,:, '
... I':
'. '.',..,.,.....
' ""':-;''!:.i''''.'
; ,.:.-
, \' ""'" ',' .",
I registri root pointer Ci sana due registri di macchina che fungono da puntatori '
alia rwce deU'albero di traduzione: CRP e SRP.
nregistr.o. SRP viene per gli del e pub 0 ,
non utilizzato: estabilita un .(dl un '.
denommato SRE) eli TC. La posslbllita di avere un albero di traduzlone d1 escluslvo .
dominio del supervisore emirata a garantire l'integrita del sistema operativo. Se SRP
eabilitato, CRP punta alia tabella <Ii traduzione del solo spazio d'utente e SRP a ..
quella delle spazlO del snpervlsore, Se SRP non eabilltato, CRP punta alIa ;abella. ,li!!'!\l
da. cw 51 diparton? due cornspondenh aIlo Spa,zlO del task d utente ':;,,1 ,..)
In eseCUZlone e alIo SpazlO
, ......'_. ,,'.' .... ,
Quando un nuovo task viene messo in esecuzione, il sistema operativo scrive in . ':'
CRP il puntatore alIa tabe(la <Ii traduzione del nuovo task, Di norma, it passaggio a 1;;:'.....
una di implica che il del TLB D?O. pili.valido.
tal fine, l'lstruzlOoe che canca CRP prevede opzlOnalmente la posslbihta eli svuotare ,:'-'4J.i j'
TLB completamente, , '!!t,l!.!;;.
, ;',;v "l!b",,"'
" , .. '. "
I"" ..,..",r.'"
!;Q'''' '. '''''',' "
"')' ,I " "J ,
..,
374
\
I
I
\

I
I
I
I I
:I
I l
, \
I
\I
1. Abilita.re/disabilitare la traduzione dell'indirizzo. Se la traduzione edisabilitata,
gli indirizzi logici sono usati come indirizzi fisici.
II campo PS determina la dimensione della pagina (da 512 a 32kbyte), Esistono dei
vincoli per TIA, TID, TIC e TID, come indjcato in Tabella. 8.3.
In aggiunta a quanta sapra e a quanta illustrato nella didascalia di Figura 8.23,
il registro TC serve anche aUe funzioni seguenti.
RAMO DELLO SPAZlO PROGRAMMA Dl SUPERVISORE
RAMO CELLO SPAZIO DATI OJ SUPERVISORE
RAMO DEWJ SPAZIO PROGRAldW. D'UTENTE
TABELLA 01
lJ'lEU,.O Fe
RP
La memoria virtuale 375
QueUo di Figura8.24 elo schema pill di protezione. Esiste un1ulteriore
possibilita consistente nel non usare i codici FC e nel costruire (a partire dallivello
A) una tabella che divide i 4Gbyte in quattro aree, secondo 10 schema <Ii Figura8,25.
I bit S e WP vengono usati per definire'le caratteristiche di protezione di cia.scuna
area.
1. (1foN DEmmo. R1SRVA'fO)
2. SPUIO DATt O'UTENTt
3. SPAZIO PR,OGR.uou. D'on:NTI;
!DEFINrrO OA UTEN'l'E.RISERVATO) I I
HON DEroITT'O. RlSBRVATO) .
S. SPAZIO OA.Tt 01 SlfPRVJSORB I
7. SPUtO PROGR.UOtA III suPRVlOOR
S. SI'/..ItO [)t CPU (HOH TRAOOTTO) TABELJ-E D1 UVELLO A
Figura 8.24 Esempio di albero eli traduzione con tabella di livello Fe. Gli elementi di
questa tabella. vengono trovati attraverso il contenuto del campo FC. La presenza della
tabella dipende dal valore di un bit TC (il bit FCL (FUnction Code Lookup)). Essendo
Fe un'estensione dell'indirizzo logica, si rendono disponibili 8 spazi di 4 Gbyte. La spazio
d1indirizzo 4 eriservato per un usa delPutente, 1 e 5 sana riservati dalla Motorola.
RA1IO DELLe SPAZIO DATI O'U7ENTE
,
Fino a questo punto (Figura8.l7 e successive) non si e tenuto conto dei 3 bit Fe}
assumendo che it primo livello della PMT corrispondesse al campo A dell1indirizzo.
In realta, tra RP e 1a tabella d.i hveUa A pub essere opzionalmente presente Wla
tabella di 8 posizioni, indicizzata attraverso Fe. Come e gia stato accennato nel
Paragrafo 8.7.2
1
i codici di funzione sono usati per indicare all'esterno i1 contesto di
macchina entro cui.viene eseguita la corrente istruzionej in particolare essi identificano
gli accessi alia spazio del programma utente} aIlo spazio dei dati utente, allo spazio
,
del programma supervisore e aHo spazio dei dati supervisore. E evidente che i codici
funzione, separando i differenti spazi, devono necessariamente essere considerati nel
contesto della protezione. In Figura8.24 viene riportato un esempio di albero che oe
fa uso.
8,7,5 La protezione
Capitolo 8
2, Abilitare(disabilitare I'uso del registro SRP, Se il registro SRP edisabilitato, sia
gli accessi di utente che di supervisore usano 1a tabella di traduzione definita dal
CRP, In cas<) contrano, gli accessi d'utente usano it CRP mentre gli accessi del
supervisore utilizzano PSRP.
"\1 ;"'"c'> '. '.
, )t',,"<.,
.. ... ..,
<1
h:j
,,", . ..
.,',':r ,.';"-i<i",, ,
. ''; (I' .. "
.,F .1<'---.
. . .-
'I ..
.1':,"":.:'

- t<Ji':l : -

.';.
:IIr.,1I .... ..
,-."',' ."; ,
.. ,...g
'''!:'. .... ;..'
'-1"'-'
';,l' . .
';.e\' ::i:,'J -"
;".\.:...
-. ::- ;"',
..'.. ">.,.
.''';::', '
.,
. ,. .......'
.. .. ", '
-
.. ,..;:!!: ""
,": i:;:;ll ;"
", ":<j,l '.',-'.: ',' 'I:
'''1 ",".
'-::i<-' .
- ... "
'-'f,!;:':'" .,
i,.' ifA!. ,
" .. ..'."'... {, '

.."' ..
""$,a .. ".,
, or.,.,; . .- ." ..
, I ',"," '
'", ,'.""'.'''.,<'
't..
1
!!
'i .
Registri di traduzione trasparente I due registri di 32 bit TTO e TTl servono a <;, .
individuare due blocchi nello spazio degli indirizzi logici che vengono tradotti in modo
trasparente, nel senso che gli indirizzi 10gici in questi blocchi vengono presi ,
indirizzi (senza cantrolla di A tale
campo dI8 bIt di TTO, ,TTl Vlene cOnITontato con Ie hnee A
SI
- A" degh mdinzzl;
III caso di uguaglianza SI ha la traduzlOne trasparente. .
Ognuno dei due registri TTX puo essere ,indipendentemente disabilitato. Una
volta disabilitato, il registro viene ignorato. E possibile stabilire se la traduzione
trasparente si applica solo in lettura, solo in scrittura 0 in ambedue i casi.
. la .domand.a delPutilita di questi registri. Essi con.sentono di :\'t ','
il . d1 .. potrebbero .
usatl per Identificare aree eli memOrIa 11 CU1 contenuto non camb1a (per esemplO, aree,'flli: ".-
corrispondenti at nueleo del sistema operativo), ovvero per mappare in posizioni fisse
<Ii memoria i dispositivi di I/O. '.3,
. .,;."1'
'r fi<' :,:, '
... I':
'. '.',..,.,.....
' ""':-;''!:.i''''.'
; ,.:.-
, \' ""'" ',' .",
I registri root pointer Ci sana due registri di macchina che fungono da puntatori '
alia rwce deU'albero di traduzione: CRP e SRP.
nregistr.o. SRP viene per gli del e pub 0 ,
non utilizzato: estabilita un .(dl un '.
denommato SRE) eli TC. La posslbllita di avere un albero di traduzlone d1 escluslvo .
dominio del supervisore emirata a garantire l'integrita del sistema operativo. Se SRP
eabilitato, CRP punta alia tabella <Ii traduzione del solo spazio d'utente e SRP a ..
quella delle spazlO del snpervlsore, Se SRP non eabilltato, CRP punta alIa ;abella. ,li!!'!\l
da. cw 51 diparton? due cornspondenh aIlo Spa,zlO del task d utente ':;,,1 ,..)
In eseCUZlone e alIo SpazlO
, ......'_. ,,'.' .... ,
Quando un nuovo task viene messo in esecuzione, il sistema operativo scrive in . ':'
CRP il puntatore alIa tabe(la <Ii traduzione del nuovo task, Di norma, it passaggio a 1;;:'.....
una di implica che il del TLB D?O. pili.valido.
tal fine, l'lstruzlOoe che canca CRP prevede opzlOnalmente la posslbihta eli svuotare ,:'-'4J.i j'
TLB completamente, , '!!t,l!.!;;.
, ;',;v "l!b",,"'
" , .. '. "
I"" ..,..",r.'"
!;Q'''' '. '''''',' "
"')' ,I " "J ,
..,
374
\
I
I
\

I
I
I
I I
:I
I l
, \
I
\I
I

)
I
I

,
l
1
)

t
I
1
I
Esempio di memoria virtuale segmentata:
la memoria virtuale del 286
'ORE
RITTURA.
ORE\UTNTE
'RMiURA
:ORE\UTENTE
RA
RAMO SUPERVISORE
DJ SOLA LETTURA
-
RP
I e-
RAMO
Of LEITURA- S(
3=1. 'KP-I
3-1, wp-o
.
RAllO 3UPERVl:
.
OI SOLA LElTU
s_o liPEl
5.. 0 wp-o
TABELLA DI
RAJ,{O
UVEll..O A-
D[ LE'M'URA SC
Capitolo 8
316
'"',
,rt ".
.-';Fi ;,'"
,If'l'r' '....
.

.-"'ill i""li'l
' La memoria. virtuale 377
,

.
'f\l{x; (' ....
tt"';;",, .
''''l;f'U, ,.,
."
8 8

.' ,
"'''":.i;"j-' ....
-.;1: ',1' ,.
" .
,h"
"'/1;"-"., , ..
"
'il. ""iI." ".
;x,.",.... ,,,oJ
. "'::;1 esempio di memoria virtua.le gestita con la sola segmentazione, viene ora des-
"&1", .. ';' critta I. memoria della CPU 80286 [Int88J. All. data di scriltura di queste p.gine il
- . 286 eorrnai una CPU obsoleta, imperando it Pentium-Pro e i suoi derivati (il Pentium
q'-;,:+.:('t.".JII). Si ritiene tuttavia particolarmente utile illustrare la memoria virtuale del micro
::;;.ji 80286, non solo perche costituisce un esempio di sola segmeotazione
J
rna anche perche
ha determinato condizionato lo sviluppo dei modelli successivi. A partire dal
386, i della 8086 e,. a valle di
: la paglOazlOnej non Sl peso aile per esemplO al
differente grade dl paraUehsmo), la gestlOoe della memona virtuale segmentata resta
.... del 286.
Come gia detto in precedenza, i meeeanismi di proteziooe sana inestrieabilme,nte
p' 8 25 E '. . . D1 UVELLO B .. alIa gestione della memoria virtuale. In particolare, i eontenuti eli aleUDe tabelle
'. semplO di albero. di c?e usa 1 btt S e WP per dlvldere 10 spazio .. '.e di alcuni campi all'interno di queste mescolano informazioni relative alia gestione
dl 4 Gbyte III quattro aree con differentl regole dl a.ccesso -' .. :>;"'1': " .. I .,
. memOrIa vlrtuale con queUe propne della protez.lone. In questa sezlOne Vlene
la gestione memoria del .rimandando al
. .. . capltolo dedlcato alIa protezl0ne Ia descnzlone del relatlVl mecca.rusmJ,
8.7,6 ConslderazlOlll sulla memoria virtuale del micro 68030"r.\\' . .. . '. . .
.. D 286 ha due modahta dl funzlOnamento: 11 modo reale e il modo tnrtuale protetto
(Si veda anche il capitolo espressamente dedicato alParchitettura x86). Gli indirizzi
dati attraverso due componenti di 16 e veD:gano rappresentati con
Quella d 1 " 68030 e " ,. '. ...:.- 1a notazlOf1.e SR: OFFSET, dove SR rappresenta un regIstro di segmento e OFFSET 10
e ffilcroprocessore 1.1n tlPlCO esemplo dl memona v1rtuale pagmata. scostamento entra il segmento.
La MMU gestisce una I.bell. delle pagine strutturat. ger.rchicamente, secondo' ..
un albero the puo presentare a 5 lIvelh dl profondlta, can tabelle di differenti. /i .:'. -, . . .
dimensioni ai differenti livellI' E possl'b'll d fin' d bl h' d' , d'" : '\'... 8.8.1 Indlrlzzamento III modo reale
. , . . e e lIe ue ace I I In InZZI per I qua I .I:i
la tradUZlOne non vlene effettuata. ''', /iiw,.,;''t::.: ..
. , '. ... ' modo reale il contenuto del registro eli segroento (moltiplicato per 16) viene inter-
Uelevato numero di livelli dell'albero di traduzione conferisee estrema flessibilita' j' pretato come base del segmento in memoria. L'indirizzo fisko eottenuto sommandola
al di deIla anche se questa flessibilita viene pagata a1 ::]Zi1:., " con 10 La teenica eli inrurizzarnento edunque quella eli Figura8.26,
prezzo di una mdiffer!2!nte e al prezzo di un elevate) dispendio esattamente ldentIea a quella dell'8086.
potenza elabor.tlv" a causa della nduzlone della banda dell. memoria .''xf: ..
cache vlrtuah (seppure dl dimensione)
1: , .'" '*1'i .
>" .."'. .
. di pr?teziane si basa eS,senzialmente su due livelli, illivello di Jlt. .,. . , . , . . .
e 11 hvella dl superVlsore. Attraverso I codici FC !'organl'zzazl'one h' d II ',' Come Illustrato pm avantI, lD modo vlrtuale protetto
J
il 286 gestlsce uno SpazlO dl
, gerare lea e a:__ rt;; . ',' lIt.; . d'" . 1 Gb b'! . 16 Mb 50' , is'
PMT e l'nso della protezione in scrittura epossibiJe rendere!o sch d' t' ..1.,--..: Ji4 ,';t,.... .. ,m InZZl amplo yte, mappa Ie 1D yte dl memona lea,
" ' em. I pro eZlOne, '<.. . U In t d"" > t"1 d I . d' ' ..
alquanto varlegato. , ,its; ques a rno ddltd. opera Iva, 1 e. regIStro 1 segmento non :nene PlU
. . ;).;JI:,:' lllterpretato base dl un segmento m bensl"come 3elet!0re
Va!e la pena dl ncordare che nel modeno successivo, it micro 68040, anche se i to. n dl segmento entra tabella, la descntton del
criteri. di sono restati sostanzialmente gli stessi
,
l'albero di traduzione epiu ; 1elemento puntato In tabella Vlene detto de3cnttore dl segmento (DS).
m quanta puo al massirno 3 livelli. Inoltre, nel 68040, Ie cache ')}\.'
mterne sono a valle del meecanismb di tradu'o dr' d'" . d' . ..(I;' "'";;;-----------,.-,-
. I d . di' 'ali .' Zl ne eg 1 10 lrtZZI e, qUID 1, vengono .11'""" dimensione della. memoria. fisica e limitata a 16 Mbyte, L'integrata e datato di 24 !inee di
raggtun e a ln nzzi re ' . ',1" 1 k,o,lndJrlzzo.
"
.."", ""
. ",J,r .1:<'
....:llI

)
I
I

,
l
1
)

t
I
1
I
Esempio di memoria virtuale segmentata:
la memoria virtuale del 286
'ORE
RITTURA.
ORE\UTNTE
'RMiURA
:ORE\UTENTE
RA
RAMO SUPERVISORE
DJ SOLA LETTURA
-
RP
I e-
RAMO
Of LEITURA- S(
3=1. 'KP-I
3-1, wp-o
.
RAllO 3UPERVl:
.
OI SOLA LElTU
s_o liPEl
5.. 0 wp-o
TABELLA DI
RAJ,{O
UVEll..O A-
D[ LE'M'URA SC
Capitolo 8
316
'"',
,rt ".
.-';Fi ;,'"
,If'l'r' '....
.

.-"'ill i""li'l
' La memoria. virtuale 377
,

.
'f\l{x; (' ....
tt"';;",, .
''''l;f'U, ,.,
."
8 8

.' ,
"'''":.i;"j-' ....
-.;1: ',1' ,.
" .
,h"
"'/1;"-"., , ..
"
'il. ""iI." ".
;x,.",.... ,,,oJ
. "'::;1 esempio di memoria virtua.le gestita con la sola segmentazione, viene ora des-
"&1", .. ';' critta I. memoria della CPU 80286 [Int88J. All. data di scriltura di queste p.gine il
- . 286 eorrnai una CPU obsoleta, imperando it Pentium-Pro e i suoi derivati (il Pentium
q'-;,:+.:('t.".JII). Si ritiene tuttavia particolarmente utile illustrare la memoria virtuale del micro
::;;.ji 80286, non solo perche costituisce un esempio di sola segmeotazione
J
rna anche perche
ha determinato condizionato lo sviluppo dei modelli successivi. A partire dal
386, i della 8086 e,. a valle di
: la paglOazlOnej non Sl peso aile per esemplO al
differente grade dl paraUehsmo), la gestlOoe della memona virtuale segmentata resta
.... del 286.
Come gia detto in precedenza, i meeeanismi di proteziooe sana inestrieabilme,nte
p' 8 25 E '. . . D1 UVELLO B .. alIa gestione della memoria virtuale. In particolare, i eontenuti eli aleUDe tabelle
'. semplO di albero. di c?e usa 1 btt S e WP per dlvldere 10 spazio .. '.e di alcuni campi all'interno di queste mescolano informazioni relative alia gestione
dl 4 Gbyte III quattro aree con differentl regole dl a.ccesso -' .. :>;"'1': " .. I .,
. memOrIa vlrtuale con queUe propne della protez.lone. In questa sezlOne Vlene
la gestione memoria del .rimandando al
. .. . capltolo dedlcato alIa protezl0ne Ia descnzlone del relatlVl mecca.rusmJ,
8.7,6 ConslderazlOlll sulla memoria virtuale del micro 68030"r.\\' . .. . '. . .
.. D 286 ha due modahta dl funzlOnamento: 11 modo reale e il modo tnrtuale protetto
(Si veda anche il capitolo espressamente dedicato alParchitettura x86). Gli indirizzi
dati attraverso due componenti di 16 e veD:gano rappresentati con
Quella d 1 " 68030 e " ,. '. ...:.- 1a notazlOf1.e SR: OFFSET, dove SR rappresenta un regIstro di segmento e OFFSET 10
e ffilcroprocessore 1.1n tlPlCO esemplo dl memona v1rtuale pagmata. scostamento entra il segmento.
La MMU gestisce una I.bell. delle pagine strutturat. ger.rchicamente, secondo' ..
un albero the puo presentare a 5 lIvelh dl profondlta, can tabelle di differenti. /i .:'. -, . . .
dimensioni ai differenti livellI' E possl'b'll d fin' d bl h' d' , d'" : '\'... 8.8.1 Indlrlzzamento III modo reale
. , . . e e lIe ue ace I I In InZZI per I qua I .I:i
la tradUZlOne non vlene effettuata. ''', /iiw,.,;''t::.: ..
. , '. ... ' modo reale il contenuto del registro eli segroento (moltiplicato per 16) viene inter-
Uelevato numero di livelli dell'albero di traduzione conferisee estrema flessibilita' j' pretato come base del segmento in memoria. L'indirizzo fisko eottenuto sommandola
al di deIla anche se questa flessibilita viene pagata a1 ::]Zi1:., " con 10 La teenica eli inrurizzarnento edunque quella eli Figura8.26,
prezzo di una mdiffer!2!nte e al prezzo di un elevate) dispendio esattamente ldentIea a quella dell'8086.
potenza elabor.tlv" a causa della nduzlone della banda dell. memoria .''xf: ..
cache vlrtuah (seppure dl dimensione)
1: , .'" '*1'i .
>" .."'. .
. di pr?teziane si basa eS,senzialmente su due livelli, illivello di Jlt. .,. . , . , . . .
e 11 hvella dl superVlsore. Attraverso I codici FC !'organl'zzazl'one h' d II ',' Come Illustrato pm avantI, lD modo vlrtuale protetto
J
il 286 gestlsce uno SpazlO dl
, gerare lea e a:__ rt;; . ',' lIt.; . d'" . 1 Gb b'! . 16 Mb 50' , is'
PMT e l'nso della protezione in scrittura epossibiJe rendere!o sch d' t' ..1.,--..: Ji4 ,';t,.... .. ,m InZZl amplo yte, mappa Ie 1D yte dl memona lea,
" ' em. I pro eZlOne, '<.. . U In t d"" > t"1 d I . d' ' ..
alquanto varlegato. , ,its; ques a rno ddltd. opera Iva, 1 e. regIStro 1 segmento non :nene PlU
. . ;).;JI:,:' lllterpretato base dl un segmento m bensl"come 3elet!0re
Va!e la pena dl ncordare che nel modeno successivo, it micro 68040, anche se i to. n dl segmento entra tabella, la descntton del
criteri. di sono restati sostanzialmente gli stessi
,
l'albero di traduzione epiu ; 1elemento puntato In tabella Vlene detto de3cnttore dl segmento (DS).
m quanta puo al massirno 3 livelli. Inoltre, nel 68040, Ie cache ')}\.'
mterne sono a valle del meecanismb di tradu'o dr' d'" . d' . ..(I;' "'";;;-----------,.-,-
. I d . di' 'ali .' Zl ne eg 1 10 lrtZZI e, qUID 1, vengono .11'""" dimensione della. memoria. fisica e limitata a 16 Mbyte, L'integrata e datato di 24 !inee di
raggtun e a ln nzzi re ' . ',1" 1 k,o,lndJrlzzo.
"
.."", ""
. ",J,r .1:<'
....:llI

51Tra i bit di ARB non evidenziati in Figura 8.27 ci !Klno anche quelli the definiscono il tipo di
segrnento. Preferiamo rinviare la lora illustrazione al capitolo dedicato alia. protezione, .avvertendo
che i bit in p08izione 7 e in posizione 0 vengono interpretati come PeA nei descrittori di segmenti
di codice e di segmenti dati, mentre in altri tipi di descrittori banno differente significato,
379
La. memoria. virtuale
zione 11
52
. Se it segmento non epresente-i campi BASE e LIMITE perdo-
no di significato e potrebbero essere usati cial sistema operativo per tenere
l'indirizzo del segmento Bulla memoria di massa
A: Indicatore di avvenuto riferimento. Ogni qual volta viene fatto riferimento
al segmento, il bit A viene automaticamente asserito. Attraverso successive
letture e azzeramenti dei bit A dei descrittori presenti in memoria, il sistema
operativQ puo costruire una statistica di usa dei segmenti e utilizzare tale
statistica come elemento di decisione nell'algoritmo di rimpiazzamento dei
segmenti.

63 "7 3'11 0
ARB I ! BASE , I UM,ITE I
Con il termine di eccezione, nella terminologia. del costruttore, si iotende una. interruzione interna
rilevata. dalla logka della CPU, cOITispondente a una condizione a.nomala di funziona.mento.
cezione viene raccolta dal sistema. operativo che provvede a prendere gli opportuni provved.imenti
,I selettori di segment a II formata del selettore eli segmenta, e cioe il contenuto
dei registri di segmento, eillustrato in Figura8.28. Si notano 3 campi.
Figura 8.21 Formato del descrittore di segmento 80286. I due byte ombreggiati (posizioni
rela.tive 6 e 7, bit 48-63) non vengono utilizzati dal 286 e sono stati previsti per compatibilita.
can i successivi modeUi di CPU 8086. Del byte ARB vengoDo messi in
evidenza. i soli bit 0 e 7. Si tenga presente che I'interpretazione come PeA evalida solo per
i segmenti di codice e dati, non per a.ltri i tipi di segmento (Cfr. 9.2) .
o
o
0000
o
SOMMATORE
(OFFSEt)
"
INDIRIZZO flSleo or 20 BIT
REGISTRO 01 SEGilENTO
0000
"
"
Capitolo 8
n campo BASE eampie 24 bit (2
24
segmento.
378

.'::::':,Ii:'
<'!:h
".",
,.. ':It-
-,


.i;a.
"'fi/,


\. -, .'.;:11:;
, ,Pj;ijl1;


,....
.' :;;:.. ",1"-,
, ,--..
, ......
.
. .,
.. !i
.'.,')
Figura 8.26 Generazione dell'indirizw fisico in mo.do reaJe da parte della CPU 80286.' Ii__
contenuto del registro eli segmento viene interpretato come base, ovvero come indirizzo fisico,
del segmento in memoria..
,
,jl',,",
.. ,
....,
n descrittore di segmento fornisce l'indirizzo di base del segmento. L'iIidirizzo
viene ottenuto sommando 10 scosta.mento aHa base cosl determinata. In
il di traduzione dell'indirizzo 'del 286 equeHo canonico dei sistemi
meota:ti schematizzato in rna: can .la paz:;icolaritA dar,e il selettore d!:,}::SJ.
segmento attraverso un regIStro eli CPU (11 fegtStro d.i segmento Implicato).
Le parti the seguono illustrano nel dettaglio come 10 schema di Figura8.14 si
materializza nell'architettura del 286.
.

"
..
I di Un descrittore di occupa.8
tre campi, denommatl BASE, LIMITE e ARB, e ha II formato dl FIgura8.27. n
significato dei campi equeUo sotto eleneato. .
.t' 11.'.... '
,'\\"1
'@!
= 16 M) e contiene l'itldirizzo di base del ..

',"7""
-- " ..,
>:
n campo LIMITE e ampio 16 bit (2
16
= 64 K) e contiene la dimensione
segmento. La scostamento.dell'indirizzo virtuale avere un ,}'-1J
contenuto entro queUo d.i LIMITE. Dunque, un segmento puo essere al masslmo ,::,.1.f;!
eli 64kbyte e pub essere posizionato ovunque nella spazio di 16 Mbyte.
.
nbyte ARB (Access Right Byte) contiene Ie informazioni che definiscone la
del descrittore e i diritti di accesso a1 segmento stesso. ARB ha una struttura I....
alquanto complessa. Di ARB 5i parla in dettaglie piu avanti (Ofr. 9.2). Per
momento ci interessa ill.ustrare i clue soli bit eviden:z.iati in Figura8.27
51
: .
. . . -
P: Indica se il segmento epresente 0 no in memoria centrale. Ogni riferimento'
ad un segmento non presente in memcria centrale (P=O) determina fleece;
,
1;,.,.
'. r'li(l"
'''' '


_

<' ",,"0
'.

,;'i,,\;

I
\
.I
\
\
I
\
l
I
\
I
. I
1
]
:I
51Tra i bit di ARB non evidenziati in Figura 8.27 ci !Klno anche quelli the definiscono il tipo di
segrnento. Preferiamo rinviare la lora illustrazione al capitolo dedicato alia. protezione, .avvertendo
che i bit in p08izione 7 e in posizione 0 vengono interpretati come PeA nei descrittori di segmenti
di codice e di segmenti dati, mentre in altri tipi di descrittori banno differente significato,
379
La. memoria. virtuale
zione 11
52
. Se it segmento non epresente-i campi BASE e LIMITE perdo-
no di significato e potrebbero essere usati cial sistema operativo per tenere
l'indirizzo del segmento Bulla memoria di massa
A: Indicatore di avvenuto riferimento. Ogni qual volta viene fatto riferimento
al segmento, il bit A viene automaticamente asserito. Attraverso successive
letture e azzeramenti dei bit A dei descrittori presenti in memoria, il sistema
operativQ puo costruire una statistica di usa dei segmenti e utilizzare tale
statistica come elemento di decisione nell'algoritmo di rimpiazzamento dei
segmenti.

63 "7 3'11 0
ARB I ! BASE , I UM,ITE I
Con il termine di eccezione, nella terminologia. del costruttore, si iotende una. interruzione interna
rilevata. dalla logka della CPU, cOITispondente a una condizione a.nomala di funziona.mento.
cezione viene raccolta dal sistema. operativo che provvede a prendere gli opportuni provved.imenti
,I selettori di segment a II formata del selettore eli segmenta, e cioe il contenuto
dei registri di segmento, eillustrato in Figura8.28. Si notano 3 campi.
Figura 8.21 Formato del descrittore di segmento 80286. I due byte ombreggiati (posizioni
rela.tive 6 e 7, bit 48-63) non vengono utilizzati dal 286 e sono stati previsti per compatibilita.
can i successivi modeUi di CPU 8086. Del byte ARB vengoDo messi in
evidenza. i soli bit 0 e 7. Si tenga presente che I'interpretazione come PeA evalida solo per
i segmenti di codice e dati, non per a.ltri i tipi di segmento (Cfr. 9.2) .
o
o
0000
o
SOMMATORE
(OFFSEt)
"
INDIRIZZO flSleo or 20 BIT
REGISTRO 01 SEGilENTO
0000
"
"
Capitolo 8
n campo BASE eampie 24 bit (2
24
segmento.
378

.'::::':,Ii:'
<'!:h
".",
,.. ':It-
-,


.i;a.
"'fi/,


\. -, .'.;:11:;
, ,Pj;ijl1;


,....
.' :;;:.. ",1"-,
, ,--..
, ......
.
. .,
.. !i
.'.,')
Figura 8.26 Generazione dell'indirizw fisico in mo.do reaJe da parte della CPU 80286.' Ii__
contenuto del registro eli segmento viene interpretato come base, ovvero come indirizzo fisico,
del segmento in memoria..
,
,jl',,",
.. ,
....,
n descrittore di segmento fornisce l'indirizzo di base del segmento. L'iIidirizzo
viene ottenuto sommando 10 scosta.mento aHa base cosl determinata. In
il di traduzione dell'indirizzo 'del 286 equeHo canonico dei sistemi
meota:ti schematizzato in rna: can .la paz:;icolaritA dar,e il selettore d!:,}::SJ.
segmento attraverso un regIStro eli CPU (11 fegtStro d.i segmento Implicato).
Le parti the seguono illustrano nel dettaglio come 10 schema di Figura8.14 si
materializza nell'architettura del 286.
.

"
..
I di Un descrittore di occupa.8
tre campi, denommatl BASE, LIMITE e ARB, e ha II formato dl FIgura8.27. n
significato dei campi equeUo sotto eleneato. .
.t' 11.'.... '
,'\\"1
'@!
= 16 M) e contiene l'itldirizzo di base del ..

',"7""
-- " ..,
>:
n campo LIMITE e ampio 16 bit (2
16
= 64 K) e contiene la dimensione
segmento. La scostamento.dell'indirizzo virtuale avere un ,}'-1J
contenuto entro queUo d.i LIMITE. Dunque, un segmento puo essere al masslmo ,::,.1.f;!
eli 64kbyte e pub essere posizionato ovunque nella spazio di 16 Mbyte.
.
nbyte ARB (Access Right Byte) contiene Ie informazioni che definiscone la
del descrittore e i diritti di accesso a1 segmento stesso. ARB ha una struttura I....
alquanto complessa. Di ARB 5i parla in dettaglie piu avanti (Ofr. 9.2). Per
momento ci interessa ill.ustrare i clue soli bit eviden:z.iati in Figura8.27
51
: .
. . . -
P: Indica se il segmento epresente 0 no in memoria centrale. Ogni riferimento'
ad un segmento non presente in memcria centrale (P=O) determina fleece;
,
1;,.,.
'. r'li(l"
'''' '


_

<' ",,"0
'.

,;'i,,\;

I
\
.I
\
\
I
\
l
I
\
I
. I
1
]
:I
I

I
\
t
\
l
!
\
l

,
l
I
t
1 I
-
"
"
."
"
il
c
."
."
"

u
"

"
o
LOT
SEGMENTO
"",",ORIA CPU
INDIRIZZO 1.0G1CO
1 INDICE 111 ISCOSTAWEtnol
J;
, .. ". " ,......... ,.".... _.....
BASE SECW:ENTO

OESCIltn'RE
.
aA31: LOT
.
-
,
,,,'+:'
;
'0 !\,): '".-
",,,.,,..
La memoria virtuale 381

.-
I> -"'I";
II '.'
,>.1<1" . .',
...,

.....
" .--
, ....
ri"':"',,'-,
.".. t,,,... '.... ,
..
t, .", \',.
, ......
{
,," .. ,. ",
::'1, '. "
"'1{l1'!-'."}'or "
' ..,.' ' '
It t.' ',.-

.
;.;oftlt1'.1'J" .'
'!'!,!R'f.I,
I ,. "
.. ""e' ...
,n "T .::J
}(.l
'4','
, ,',"'_ "j'h,


,',
'" '
,..,\;.,"" ,
. j ..v-
.r ''!ill'']'' -
'mi" ,
:;; .,) .,"
" .
,I 'I" :,.,.,'
,.,1, _
, . .' .. .'.
',.,-:
It, ',' .


'''''0' .
, - . .>.
P''dn ",',_' .'
'if,'-"'-'-"
".
[.:.j -'J' ". '.
" .',' ,- ','- . -
"'.j-- -,
1,*, ""." '.
.':. -
8.29 Schema di principia del processo di tracluzione dell'indirizzo. Si assunto
ovvero- che it riferimento sia nella LDT (corrente). n puntatore alIa LOT e data
..,r.; -attraverso un registro di CPU.
i!F1J,,, ..
b,''',,,. :. .
.,.lJ:'J!/A'i .\- '-.

- Per evitare questa penalizzazione, nella CPU 286, a ciascuno dei registri di seg-
I- menta e associato un registro d.i cache (RODS), lisato per contenere il descrittore
3 di segmento individuato da! (selettore contenuto nel) registro di segmento. Si veda
:f Si tratta di registri invisibili a.l software che vengono aggiornati autorna-
r:WN ticamente e usati in modo trasparente dalla CPU. Ogni volta in cui un registro eli
segmento viene caricato con un selettore, il corrispondente descrittore viene automati-
camente caricato nel registro cache associato. Da questa momenta, i succesaivi accessi
che il roedesimo selett.ore non il pasaaggi? la
del descrlttort. Tenuto conto che I segmentl rappresentano suddiV1SlOnt lOgtche
',),", programma, eabbastanza probabile che it selettore cambi molto raramente.
,r, '.- -;: La cache .dei descrittoii di segmento corrisponde al TLB dei sistemi paginatij _per
',1 i. motivi descritti, questa cache si riduce a 4 sole posizioni, pari al numero dei registri
.... segmento.
1"..--, .
,ro ..
Tabelle dei descrittori di segmento
I
l
" ''',,"'','1
1:",''1'1

:" .. Come gia detto in precedenza sono previsti due tipi di tabelle di descrittori di Beg
, x:::mento: GDT e LDT. I due tipi di tabelle hanno dimensione variabile, da un minima
JH dl 8 byte (un desenttore) a 64kbyte (8192 descntton). Le tabelle vengono trattate,
esse sresse, come segmenti
55
.
l''lr I """ ..
'
"Questa archltottu," tratta tutto Ie struttuee dati nello .pario virtuale come segmentl. Anche
. iI TeB di un processo, denominato Task State Segment (TSS) nella terminologia Intel, viene fatto
;"1' .


Capitolo 8
INDlCE - Puntatore in tabella, 13 bit. lndividua uno rra gli 8192 deserittori ehe
possono essere contenuti nella tabella.
--"

TI - Identificatore di tabella (Table Identifier), 1 bit. Stabilisce se it se1ettore :1;M1
identifiea un deserittore in GDT (TI=O) oppure nella LDT corrente (TI=l).

RPL Livello di privilegio (Requestor's/Requestetf". Privilege Lev.eD, 2 bit. For-.:'tl
msce 11 hvello di pnvI1eglO al fini della protezlone (51 veda 11 prOSSlffio capitolo). ,)..
.-,:e.:.:.
,
.J:
2. L'INDICE individua il descrittore entro 1a tabella
54
.
1. n bit T1 del selettore indiea 8e la tabella dausare eGDT 0 LDT.
3. II descrittore fornisce l'indirizzo di base del segmento selezionato. "
, ,
, " ....
4. Uindirizzo fisico eottenuto come somma dell'indir.i.zzo di base con 10
_.... ",.'ri{F
E stato detto in precedenza che 10 spazio di indirizzamento e pari ad 1
seguenti n INPIC.E
dt 13 bIt e con esso 51 mdiVlduano fino a 8192 descntton, Clascuno del quah mdlvldua,.
byte al attrayerso ciascun pr?cesso
uno Spazl.O .dl di 2
1
.. 2
16
, = .2
29
by:e!
pub condlvldere' con altn processl 11 medeslII10 degh mdmzzl. Da qUI denva )l:u1
uno spazio di indirizzamento totale di 2
30
, pari a 1 Gbyte.

'" ..

Cache dei descrittor.i di segmento Come gia osservato, il meccanismo di
patura degli indirizzi logici in indirizzi fisici tramite tabelle di memoria ha l'effetto
ridurre la banda passante della memoria in modo proporzionale al numero di passaggi
indiretti attraverso le tabelle. '
.. ':;ji'
. -' ..,;.it:,.,
,',;"\.;:",
".,
.53Si parla di Rt.qut.stor's quando i segmenti in oggetto Bono quelli di codice che, essendo s<?lo ..
eseguibili, pOSSODO fare esplicita richiesta di privilegio, Si parla di Reque"tt.d per gli altri segmer:'ti, :';,0/1:"
sui qua-Ii si puo agire iIi. lettura e/o scrittura..
noti che INDICE ei1 numero d'ordine del descrittore nella tabella pertinente. Ovviamente, .
giustapponendo a destra di INDlCE tre bit a zero (come bit 2-0) si b30 130 posizione in tabella del
(primo byte del) descrittore. ", ..

,- e'
-:Ii'
-
,".,.... ,
380
I

I
\
t
\
l
!
\
l

,
l
I
t
1 I
-
"
"
."
"
il
c
."
."
"

u
"

"
o
LOT
SEGMENTO
"",",ORIA CPU
INDIRIZZO 1.0G1CO
1 INDICE 111 ISCOSTAWEtnol
J;
, .. ". " ,......... ,.".... _.....
BASE SECW:ENTO

OESCIltn'RE
.
aA31: LOT
.
-
,
,,,'+:'
;
'0 !\,): '".-
",,,.,,..
La memoria virtuale 381

.-
I> -"'I";
II '.'
,>.1<1" . .',
...,

.....
" .--
, ....
ri"':"',,'-,
.".. t,,,... '.... ,
..
t, .", \',.
, ......
{
,," .. ,. ",
::'1, '. "
"'1{l1'!-'."}'or "
' ..,.' ' '
It t.' ',.-

.
;.;oftlt1'.1'J" .'
'!'!,!R'f.I,
I ,. "
.. ""e' ...
,n "T .::J
}(.l
'4','
, ,',"'_ "j'h,


,',
'" '
,..,\;.,"" ,
. j ..v-
.r ''!ill'']'' -
'mi" ,
:;; .,) .,"
" .
,I 'I" :,.,.,'
,.,1, _
, . .' .. .'.
',.,-:
It, ',' .


'''''0' .
, - . .>.
P''dn ",',_' .'
'if,'-"'-'-"
".
[.:.j -'J' ". '.
" .',' ,- ','- . -
"'.j-- -,
1,*, ""." '.
.':. -
8.29 Schema di principia del processo di tracluzione dell'indirizzo. Si assunto
ovvero- che it riferimento sia nella LDT (corrente). n puntatore alIa LOT e data
..,r.; -attraverso un registro di CPU.
i!F1J,,, ..
b,''',,,. :. .
.,.lJ:'J!/A'i .\- '-.

- Per evitare questa penalizzazione, nella CPU 286, a ciascuno dei registri di seg-
I- menta e associato un registro d.i cache (RODS), lisato per contenere il descrittore
3 di segmento individuato da! (selettore contenuto nel) registro di segmento. Si veda
:f Si tratta di registri invisibili a.l software che vengono aggiornati autorna-
r:WN ticamente e usati in modo trasparente dalla CPU. Ogni volta in cui un registro eli
segmento viene caricato con un selettore, il corrispondente descrittore viene automati-
camente caricato nel registro cache associato. Da questa momenta, i succesaivi accessi
che il roedesimo selett.ore non il pasaaggi? la
del descrlttort. Tenuto conto che I segmentl rappresentano suddiV1SlOnt lOgtche
',),", programma, eabbastanza probabile che it selettore cambi molto raramente.
,r, '.- -;: La cache .dei descrittoii di segmento corrisponde al TLB dei sistemi paginatij _per
',1 i. motivi descritti, questa cache si riduce a 4 sole posizioni, pari al numero dei registri
.... segmento.
1"..--, .
,ro ..
Tabelle dei descrittori di segmento
I
l
" ''',,"'','1
1:",''1'1

:" .. Come gia detto in precedenza sono previsti due tipi di tabelle di descrittori di Beg
, x:::mento: GDT e LDT. I due tipi di tabelle hanno dimensione variabile, da un minima
JH dl 8 byte (un desenttore) a 64kbyte (8192 descntton). Le tabelle vengono trattate,
esse sresse, come segmenti
55
.
l''lr I """ ..
'
"Questa archltottu," tratta tutto Ie struttuee dati nello .pario virtuale come segmentl. Anche
. iI TeB di un processo, denominato Task State Segment (TSS) nella terminologia Intel, viene fatto
;"1' .


Capitolo 8
INDlCE - Puntatore in tabella, 13 bit. lndividua uno rra gli 8192 deserittori ehe
possono essere contenuti nella tabella.
--"

TI - Identificatore di tabella (Table Identifier), 1 bit. Stabilisce se it se1ettore :1;M1
identifiea un deserittore in GDT (TI=O) oppure nella LDT corrente (TI=l).

RPL Livello di privilegio (Requestor's/Requestetf". Privilege Lev.eD, 2 bit. For-.:'tl
msce 11 hvello di pnvI1eglO al fini della protezlone (51 veda 11 prOSSlffio capitolo). ,)..
.-,:e.:.:.
,
.J:
2. L'INDICE individua il descrittore entro 1a tabella
54
.
1. n bit T1 del selettore indiea 8e la tabella dausare eGDT 0 LDT.
3. II descrittore fornisce l'indirizzo di base del segmento selezionato. "
, ,
, " ....
4. Uindirizzo fisico eottenuto come somma dell'indir.i.zzo di base con 10
_.... ",.'ri{F
E stato detto in precedenza che 10 spazio di indirizzamento e pari ad 1
seguenti n INPIC.E
dt 13 bIt e con esso 51 mdiVlduano fino a 8192 descntton, Clascuno del quah mdlvldua,.
byte al attrayerso ciascun pr?cesso
uno Spazl.O .dl di 2
1
.. 2
16
, = .2
29
by:e!
pub condlvldere' con altn processl 11 medeslII10 degh mdmzzl. Da qUI denva )l:u1
uno spazio di indirizzamento totale di 2
30
, pari a 1 Gbyte.

'" ..

Cache dei descrittor.i di segmento Come gia osservato, il meccanismo di
patura degli indirizzi logici in indirizzi fisici tramite tabelle di memoria ha l'effetto
ridurre la banda passante della memoria in modo proporzionale al numero di passaggi
indiretti attraverso le tabelle. '
.. ':;ji'
. -' ..,;.it:,.,
,',;"\.;:",
".,
.53Si parla di Rt.qut.stor's quando i segmenti in oggetto Bono quelli di codice che, essendo s<?lo ..
eseguibili, pOSSODO fare esplicita richiesta di privilegio, Si parla di Reque"tt.d per gli altri segmer:'ti, :';,0/1:"
sui qua-Ii si puo agire iIi. lettura e/o scrittura..
noti che INDICE ei1 numero d'ordine del descrittore nella tabella pertinente. Ovviamente, .
giustapponendo a destra di INDlCE tre bit a zero (come bit 2-0) si b30 130 posizione in tabella del
(primo byte del) descrittore. ", ..

,- e'
-:Ii'
-
,".,.... ,
380
383
Memoria
La memoria. virtuale
CPU
LDT
.- 0 .-
",
0
LOT
I U,n,ll. urr I lIou U1T
'I
1) lJ)T
.-
'"
I Un>ll. eDT I
8 ... (;1)1'
GDT
'Jjii'"n;;;:;.
.
if; .. ,...... ,
.....1.\"
',..",,, " ,
.
".
,..


'." ,.,'
i;Jd? .
I
,,;':..,,:., ,;

,'.
)1>' .....\.'l:' ?".. ,
.. ,.
...:....,
i .. " .. '
!
" "
<,
"."'1'- JRt'I"'",\.-
lffit::; LDTR
.
t
I
',lt4l'f?::> .
l,\';' .'
- , .
'Il:I: iI'" ..'
",'
,.' :.L '."
,
" ,'I'" "."
"loo( "
'. A"".,: .
"
,,'
". .. ..-"
;"1"""." . GDTR
,1":Wf.IJ]('", ' .
.. '
i!
, ...
'.
Figura 8.31 Modalita eli a.ccesso a.lle tabelle dei descrittori del 286. Si noti che il registro
.. ::.,' GDTR e effettivo descrittore, con 24 bit pe.! la base e per dimensione.d.ei. segmentoj
LDTR e iDVece un selettore, at Quale e assOClato un regLStro di cache non VlSlbtle da
"gramma. II descrittore di LDT etenuto in GDT. Vistruzione LCDT carica un descrittorej
. I'istruzione LLDT, carica un selettore e il descrittore prelevato dalla posizione di GDT cui
.;i" ' punta il selettore stesso. Si nati che la scelta dei progettisti Intel di realizzare GDTR come
e LDTR selettore non e In.fatti la GDT e e fissa per cui
emegho .avere un. descnttore .da1 lmIDuta.blle,. mentre LDR varia a seconda
ITh-1: .. per CUl.convlene 10 stesso meccamsroo del selettore e della cache del
,descntton usato per! segment!.
..'.
.y -.,
, ').. ..... ..
!; .
aggiornato e con esso viene caricato iI registro di cache, con i1 contenuto del
',: corrispondente descrittore in GDT.
:i
j
).' .Riassumendo, i differeoti criteri che presiedono alia gestione di GDT, LDT sooo 1
.. seguentl.
W: . La GDT edi norma unica. Essa rappresenta la sede 'in cui sono contenuti gli
altri Una volta.caricato attra:erso LGDT, .il
non e pm soggetto a modIfka. La predlsposlzlone dt GDT e i1 cancamento dl
GDTR hanno luogo durante i1 funzionamento in modo reale, prima del passaggio
. a1 modo protetto
58
.
.Le LDT sooo tante quante sono i processi, D selettore LDTR e la relativa cache
"
, . "..'
,t,fI-,',
,
!j ." 58Durante il funzionamento in modo protetto, la tabella non e direttamente visibile a1 program
,fM.:";:'-"" .rnatore anche.:n-e GDT non e un segmento m.emoria virtuale). Si noti che
ne5SUDa 13tru2lOne ut!hzza II reglstro GDTR per accedere alla memorIa, mentre, se un programma
I
I di utent,e di e.seguire privi.legiata che manipola GDTR, la logka della CPU ge-
.. tl, :If-:"';,. nera un e<:cezlOne. E comunque posslblle agglra.re questa ostacolo e accedere alia tabella GDT (per
effettuarvi eventuali modifiche) utili22lUldo la tecoicll. dei 6eymenti editH.
.., L'istrU2ione LGDT ha questa forma.: LGDT memory. AHa posizione memorll deve essere stato
ll.... ',preparato Hdescrittore.
,"
;1'.';' ,.
.'
Capitolo 8
Figura 8.30 Registri di segmento e registri di cache dei descrittori di segmento del 286
<if:

-;"- ,
"

-'*..\:!I

"'1
'11
....

.....
_'p;i;g
"....."..
,. I"
i' ,.r 1",1;
rjl
.....,.,

.'
.

.;,)"


-"'\'1.;",
. ,,<t,
.._,
:'/
.,
,'" '"
..:..



""l1l',
... '';'1l;iH!,
-
-.:
',i.D,
, : ,'j!,-'
Tabella globale dei descrittori, LaGDT ela tabella globale dei descrittori.
va mtesa come 1a tabella che contlene 1descntton consultabill cia ogm processo del
sistema. GDT pub contenere ogni tipo di descrittore, eccetto i descrittori
al servizio delle interruzioni. Si assume the il sistema operativo mantenga un'unica
GDT, nella Quale tiene i descrittori dei segmenti usati dal sistema operativo stesso, i ..
descrittori dei segme.nti eli singoli piu e i
delle LDT oltre che 1 descntton dl segment! comum a Plu process1
56
. '
GDT individuata attraverso un apposito registro di CPU (GDTR) come
matizzato in Figura8,31. Sono disponibili Ie due istruzioni LCD! (Load GDT Register)
e SGDT (Store GDT Register) per caricarejmemorizzare il contenuto di GDTR
57
.
,.

.:' .

Tabella locale dei descrittori Le LDT contengono i descrittori dei segmenti che
fanno parte dello spazio virtuale dei singoli processi. LDT individuata attraverso
un apposito registro di CPU (LDTR). Sono dispooibili Ie due istruziooi LLDT e SLOT "'J;,i(
per caricare/memorizzare il contenuto di LDTR. LDT puo contenere solo descrittori
di segmenti di codice, dati, di stack, di porte di chiamata (call gate) e di porte di
.
(t k t)
"",
. processo as ga e . .,', 'I":'T__.
Di norma un sistema operativo terra. una LDT per ciascun processo: in un
istante di tempo, attraverso LDTR, verra puntata 1a LDT relativa al processo in
esecuzione. Tale tabella viene indicata come 1a LDT corrente. Un segrnento non pub ,;t:$.t
essere iDdirizzato da un processo se il segmento stesso non si trova descritto
LDT corrente 0 nella GDT.
Essendo Ie LDT esse stesse dei segmenti, i relativi descrittori vengono tenuti
in GDT. lnoltre, essendo 1a LDT corrente soggetta a cambiare a causa dell'attiva- .1.}:;;
zionejdisattivazione dei differenti processi, per l'accesso al1e LDT state scelto 10
stesso meccanismo usato per i segmenti. A tale SCOPO, LDTR non e un descrit-
tore, rna un selettore (16 bit) al quale eassociato un registro di cache
Ogni volta in cui i1 process.o in esecuzione cambia (si veda piu avanti), il selettore
C'<i:;ii',
" 'j,"'-',(;;\
.,,=,
";:.' jJi:!
coincidere con un segmento (si veda. il capitola sulla protezione).
noti che la prima. posizione di GDT non e usata e viene faHa. corrispondere a1 segmento nullo, -(:PI;
.. '"
nel che nullo dt;! pun.tatore. .. . " - . .'
5
7
S
1
tratta dl Istru210DJ pnVllegJate. Un'lstru21Ooe pnvlleglata nOD PUQ essere esegUlta da!
programmi di utente. I privilegi rientra.no tra i meccanismi di protezione di cui si parla in seguito. '
.

' ./';
-..
;7,:'<'
'. , ' To:,
.-",.
382
47 40 39 16 15
0
Sel.ltore del SeI;DeDlo eli Codice
.
Se1tltor. dd Seplenl.o DaU
,
Selelloro della Sellllonto S",ck
SeloHo" del Segmento. Ertra
ARB BASE
UMITE
Accessibili da software
Non accessibili da software
\
I
I
i
I
,
: 1
l
I
(
I
I
I \
I
,I
\ I
, ,
383
Memoria
La memoria. virtuale
CPU
LDT
.- 0 .-
",
0
LOT
I U,n,ll. urr I lIou U1T
'I
1) lJ)T
.-
'"
I Un>ll. eDT I
8 ... (;1)1'
GDT
'Jjii'"n;;;:;.
.
if; .. ,...... ,
.....1.\"
',..",,, " ,
.
".
,..


'." ,.,'
i;Jd? .
I
,,;':..,,:., ,;

,'.
)1>' .....\.'l:' ?".. ,
.. ,.
...:....,
i .. " .. '
!
" "
<,
"."'1'- JRt'I"'",\.-
lffit::; LDTR
.
t
I
',lt4l'f?::> .
l,\';' .'
- , .
'Il:I: iI'" ..'
",'
,.' :.L '."
,
" ,'I'" "."
"loo( "
'. A"".,: .
"
,,'
". .. ..-"
;"1"""." . GDTR
,1":Wf.IJ]('", ' .
.. '
i!
, ...
'.
Figura 8.31 Modalita eli a.ccesso a.lle tabelle dei descrittori del 286. Si noti che il registro
.. ::.,' GDTR e effettivo descrittore, con 24 bit pe.! la base e per dimensione.d.ei. segmentoj
LDTR e iDVece un selettore, at Quale e assOClato un regLStro di cache non VlSlbtle da
"gramma. II descrittore di LDT etenuto in GDT. Vistruzione LCDT carica un descrittorej
. I'istruzione LLDT, carica un selettore e il descrittore prelevato dalla posizione di GDT cui
.;i" ' punta il selettore stesso. Si nati che la scelta dei progettisti Intel di realizzare GDTR come
e LDTR selettore non e In.fatti la GDT e e fissa per cui
emegho .avere un. descnttore .da1 lmIDuta.blle,. mentre LDR varia a seconda
ITh-1: .. per CUl.convlene 10 stesso meccamsroo del selettore e della cache del
,descntton usato per! segment!.
..'.
.y -.,
, ').. ..... ..
!; .
aggiornato e con esso viene caricato iI registro di cache, con i1 contenuto del
',: corrispondente descrittore in GDT.
:i
j
).' .Riassumendo, i differeoti criteri che presiedono alia gestione di GDT, LDT sooo 1
.. seguentl.
W: . La GDT edi norma unica. Essa rappresenta la sede 'in cui sono contenuti gli
altri Una volta.caricato attra:erso LGDT, .il
non e pm soggetto a modIfka. La predlsposlzlone dt GDT e i1 cancamento dl
GDTR hanno luogo durante i1 funzionamento in modo reale, prima del passaggio
. a1 modo protetto
58
.
.Le LDT sooo tante quante sono i processi, D selettore LDTR e la relativa cache
"
, . "..'
,t,fI-,',
,
!j ." 58Durante il funzionamento in modo protetto, la tabella non e direttamente visibile a1 program
,fM.:";:'-"" .rnatore anche.:n-e GDT non e un segmento m.emoria virtuale). Si noti che
ne5SUDa 13tru2lOne ut!hzza II reglstro GDTR per accedere alla memorIa, mentre, se un programma
I
I di utent,e di e.seguire privi.legiata che manipola GDTR, la logka della CPU ge-
.. tl, :If-:"';,. nera un e<:cezlOne. E comunque posslblle agglra.re questa ostacolo e accedere alia tabella GDT (per
effettuarvi eventuali modifiche) utili22lUldo la tecoicll. dei 6eymenti editH.
.., L'istrU2ione LGDT ha questa forma.: LGDT memory. AHa posizione memorll deve essere stato
ll.... ',preparato Hdescrittore.
,"
;1'.';' ,.
.'
Capitolo 8
Figura 8.30 Registri di segmento e registri di cache dei descrittori di segmento del 286
<if:

-;"- ,
"

-'*..\:!I

"'1
'11
....

.....
_'p;i;g
"....."..
,. I"
i' ,.r 1",1;
rjl
.....,.,

.'
.

.;,)"


-"'\'1.;",
. ,,<t,
.._,
:'/
.,
,'" '"
..:..



""l1l',
... '';'1l;iH!,
-
-.:
',i.D,
, : ,'j!,-'
Tabella globale dei descrittori, LaGDT ela tabella globale dei descrittori.
va mtesa come 1a tabella che contlene 1descntton consultabill cia ogm processo del
sistema. GDT pub contenere ogni tipo di descrittore, eccetto i descrittori
al servizio delle interruzioni. Si assume the il sistema operativo mantenga un'unica
GDT, nella Quale tiene i descrittori dei segmenti usati dal sistema operativo stesso, i ..
descrittori dei segme.nti eli singoli piu e i
delle LDT oltre che 1 descntton dl segment! comum a Plu process1
56
. '
GDT individuata attraverso un apposito registro di CPU (GDTR) come
matizzato in Figura8,31. Sono disponibili Ie due istruzioni LCD! (Load GDT Register)
e SGDT (Store GDT Register) per caricarejmemorizzare il contenuto di GDTR
57
.
,.

.:' .

Tabella locale dei descrittori Le LDT contengono i descrittori dei segmenti che
fanno parte dello spazio virtuale dei singoli processi. LDT individuata attraverso
un apposito registro di CPU (LDTR). Sono dispooibili Ie due istruziooi LLDT e SLOT "'J;,i(
per caricare/memorizzare il contenuto di LDTR. LDT puo contenere solo descrittori
di segmenti di codice, dati, di stack, di porte di chiamata (call gate) e di porte di
.
(t k t)
"",
. processo as ga e . .,', 'I":'T__.
Di norma un sistema operativo terra. una LDT per ciascun processo: in un
istante di tempo, attraverso LDTR, verra puntata 1a LDT relativa al processo in
esecuzione. Tale tabella viene indicata come 1a LDT corrente. Un segrnento non pub ,;t:$.t
essere iDdirizzato da un processo se il segmento stesso non si trova descritto
LDT corrente 0 nella GDT.
Essendo Ie LDT esse stesse dei segmenti, i relativi descrittori vengono tenuti
in GDT. lnoltre, essendo 1a LDT corrente soggetta a cambiare a causa dell'attiva- .1.}:;;
zionejdisattivazione dei differenti processi, per l'accesso al1e LDT state scelto 10
stesso meccanismo usato per i segmenti. A tale SCOPO, LDTR non e un descrit-
tore, rna un selettore (16 bit) al quale eassociato un registro di cache
Ogni volta in cui i1 process.o in esecuzione cambia (si veda piu avanti), il selettore
C'<i:;ii',
" 'j,"'-',(;;\
.,,=,
";:.' jJi:!
coincidere con un segmento (si veda. il capitola sulla protezione).
noti che la prima. posizione di GDT non e usata e viene faHa. corrispondere a1 segmento nullo, -(:PI;
.. '"
nel che nullo dt;! pun.tatore. .. . " - . .'
5
7
S
1
tratta dl Istru210DJ pnVllegJate. Un'lstru21Ooe pnvlleglata nOD PUQ essere esegUlta da!
programmi di utente. I privilegi rientra.no tra i meccanismi di protezione di cui si parla in seguito. '
.

' ./';
-..
;7,:'<'
'. , ' To:,
.-",.
382
47 40 39 16 15
0
Sel.ltore del SeI;DeDlo eli Codice
.
Se1tltor. dd Seplenl.o DaU
,
Selelloro della Sellllonto S",ck
SeloHo" del Segmento. Ertra
ARB BASE
UMITE
Accessibili da software
Non accessibili da software
\
I
I
i
I
,
: 1
l
I
(
I
I
I \
I
,I
\ I
, ,
8.8.4 Gestione della memoria fisica
Figura 8.32 Ruolo delle tabe1J.e eli descrittori nella. separazione degli spazi di indirizzamen-
to. LDTA, LDTB e LDTC sono rispettivamente Ie tabelle dei descrittori locaIi dei processi
A, i3 e C.
Attraverso 1a LDT il sistema operativo ottiene l'isolamento e 1a protezione tra i
processi; attraverso 1a GDT permette la condivisioile dello stesso segmento cia parte
di piu processi. Questo concetto e illustrato in Figura8.32.
f
\
I
I
l

t
I
r
I
I

(
385
La memoria virtuale
\.--
Ali_
Se,mento
dILl!
Segmento
eodice
ARWL, II
Lellur.. ao Ul_le B
Serltlure. Solo
let-lura
Utente
WAS 01 UN
SEGw:ENTO DA.TI"
A?pl1ca.done EO I I
Sola RW Sl.,teD:la opera-tiTO:
e,... cu:iolJe Letlura au.Uio per la
Sorillura m"sse. a punto
WAS or UN
S:GMENTO COOIC:
Figura 8.33 Alias di un segmento dati 0 codice. La parte mostra un segmento che
viene visto di sola esecuzione dalPapplicazione e come segmento (da.ti) eli lettura/scrittura
da una routin,e del sistema. operativo. La parte bassa mostra. 10 stesso segmento dati visto
come segmento di lettura/scrittura da.11'applicazione A e come 8egmento di sola. lettura
dall'applicazione B.
&OSi noti che un segmento alias pub avere una dimensione differente dat segmento che esso
rappresenta.
Poco sopra estato osservata cbe non essendoci istruzioni Che permettono di indirizzare
direttamente la GDT, LDT, IDT e TSS (questi segmenti vengono gestiti direttamente
dalla.logica CPU, in modo trasparente al programmatore), ,si pone il problema
di come permetterne l'accesso ai programmi, in particolare a1 sistema operativo.
8.8.5 Alias
modifica. Essa jiiscrimina solo i segmenti modificabili da quelli non modificabili e per
questi ultimi impedisce i tentativi di scrittura. NOD e'e quindi bisogno di ricopiarli su
memoria di massa.
..
Proeeuo A
Capitola 8
vengono aggiornati attraverso l'istruzione LLDT, rna anche in modo automatico
come conseguenza del camhiamento del proceaso in esecuzione.
,
I--- S".:do dl lndlrlu.
Sp"210
"
Ind.1rl,.,..",e" to v rluele dl A
loe.. l.
"
A. dlllnilo d .. WTA
Sip.. ,.10
"
Indlrl,.,.unenlo
Sp"210
"
lndlrlt.l<emenlo
vlrluele d,
C
1
vlrluele
dl jB
Spe.l<lo dl indlrl:ne.menlo 'cl
Srce.:zlo dl indlr'h,.e.m.nlo Spado dl lndlrl,.,...rnenlo
local .. dl C. ddlZlJto da LDTC II ob.le, d",Unlto d. GOT loc.le dl

d.llnllo de WT>
Proeeno C
Proeo

;i",f"

,

'.:fI'l
",';,... 11


- ,j" "til
.,. ' ,r" ";<"
'. '..'.

.. . ,.,
..


;)p,r;1

...
,'''':i':''CW'
:,,,/:,...:j!:'
,..

'
. " , ..
.. i ,;/ :r,il
:.. .
'"'l""':
....
.. :','iJIlili',
,
." ., . ,i) ,1
m

....,.J
,... '!'!t,1J' ' ,

.. ,. i;,
,,' ',',
, i:
'No''''

; ..
" -II,
:11
Non edetto che in un dato istante tutti i segmenti di un certa programma siano nella
memoria fisica. Ogni volta in cui viene tentato un riferimento a un segmento non .
.in .(bit P del descrittore a 0), il
cil traduzlOne degli mdirlzz1 genera l'eccezlOne 11, e eonseguentemente mtervlene il..
sis.tema operativo che copia il segmento maneante da memoria di massa a memoria
fislca. ..
,'''' ,
II trasferimento di un segmento da memoria di massa a memoria fisica edunque
su domanda, per il trasferimento di un segmento da memoria fisica a memoria
di massa, quando in memoria fisica non c'e spazio per un nuovo segmento, si tiene
conto della frequenza di utilizzo del segmento stesso mentre ein memoria fisica. La
stima di tale fr.equenza eresa possibile attraverso Pindicatore A nel byte ARB, A viene
automaticamente posta a uno dalla CPU ogni qualvolta il descrittore stesso e caricato
nella parte nascosta di un registro selettore. n bit A pub quindi essere esaminato e
azzerato periodieamente cia! software d.i gestione, che puo cosl stimare la frequenza di
utilizzo del segmento stesso, Vesame eli A comporta qualche complicazione. Infatti,
non ci sono istruzioni che permettano di indirizzare entro Ie tabelle dei descrittori
. .
attraverso GDTR 0 LDTR. E quindi necessaria che per esse vengano previsti dei
segmenti alia!, ovvero dei segmenti dati (pertio esaminahili e modificabili) sovrapposti
agli altri nella spazio fisico. Lo stesso problema si presenta per la modifica della tabella
delle interruziani (IDT) e dei segmenti di stata dei processi (TSS) di cui si parla ne!
proSsimo capitolo.
Naturalmente un segmento che non viene modificato mentre eresidente in me-.'
moria fisica non deve essere ricopiato nella memoria di massa durante le operazioni di
rimpiazzamento. La macchina non tiene pero automaticamente traccia deU'avvenuta
384
8.8.4 Gestione della memoria fisica
Figura 8.32 Ruolo delle tabe1J.e eli descrittori nella. separazione degli spazi di indirizzamen-
to. LDTA, LDTB e LDTC sono rispettivamente Ie tabelle dei descrittori locaIi dei processi
A, i3 e C.
Attraverso 1a LDT il sistema operativo ottiene l'isolamento e 1a protezione tra i
processi; attraverso 1a GDT permette la condivisioile dello stesso segmento cia parte
di piu processi. Questo concetto e illustrato in Figura8.32.
f
\
I
I
l

t
I
r
I
I

(
385
La memoria virtuale
\.--
Ali_
Se,mento
dILl!
Segmento
eodice
ARWL, II
Lellur.. ao Ul_le B
Serltlure. Solo
let-lura
Utente
WAS 01 UN
SEGw:ENTO DA.TI"
A?pl1ca.done EO I I
Sola RW Sl.,teD:la opera-tiTO:
e,... cu:iolJe Letlura au.Uio per la
Sorillura m"sse. a punto
WAS or UN
S:GMENTO COOIC:
Figura 8.33 Alias di un segmento dati 0 codice. La parte mostra un segmento che
viene visto di sola esecuzione dalPapplicazione e come segmento (da.ti) eli lettura/scrittura
da una routin,e del sistema. operativo. La parte bassa mostra. 10 stesso segmento dati visto
come segmento di lettura/scrittura da.11'applicazione A e come 8egmento di sola. lettura
dall'applicazione B.
&OSi noti che un segmento alias pub avere una dimensione differente dat segmento che esso
rappresenta.
Poco sopra estato osservata cbe non essendoci istruzioni Che permettono di indirizzare
direttamente la GDT, LDT, IDT e TSS (questi segmenti vengono gestiti direttamente
dalla.logica CPU, in modo trasparente al programmatore), ,si pone il problema
di come permetterne l'accesso ai programmi, in particolare a1 sistema operativo.
8.8.5 Alias
modifica. Essa jiiscrimina solo i segmenti modificabili da quelli non modificabili e per
questi ultimi impedisce i tentativi di scrittura. NOD e'e quindi bisogno di ricopiarli su
memoria di massa.
..
Proeeuo A
Capitola 8
vengono aggiornati attraverso l'istruzione LLDT, rna anche in modo automatico
come conseguenza del camhiamento del proceaso in esecuzione.
,
I--- S".:do dl lndlrlu.
Sp"210
"
Ind.1rl,.,..",e" to v rluele dl A
loe.. l.
"
A. dlllnilo d .. WTA
Sip.. ,.10
"
Indlrl,.,.unenlo
Sp"210
"
lndlrlt.l<emenlo
vlrluele d,
C
1
vlrluele
dl jB
Spe.l<lo dl indlrl:ne.menlo 'cl
Srce.:zlo dl indlr'h,.e.m.nlo Spado dl lndlrl,.,...rnenlo
local .. dl C. ddlZlJto da LDTC II ob.le, d",Unlto d. GOT loc.le dl

d.llnllo de WT>
Proeeno C
Proeo

;i",f"

,

'.:fI'l
",';,... 11


- ,j" "til
.,. ' ,r" ";<"
'. '..'.

.. . ,.,
..


;)p,r;1

...
,'''':i':''CW'
:,,,/:,...:j!:'
,..

'
. " , ..
.. i ,;/ :r,il
:.. .
'"'l""':
....
.. :','iJIlili',
,
." ., . ,i) ,1
m

....,.J
,... '!'!t,1J' ' ,

.. ,. i;,
,,' ',',
, i:
'No''''

; ..
" -II,
:11
Non edetto che in un dato istante tutti i segmenti di un certa programma siano nella
memoria fisica. Ogni volta in cui viene tentato un riferimento a un segmento non .
.in .(bit P del descrittore a 0), il
cil traduzlOne degli mdirlzz1 genera l'eccezlOne 11, e eonseguentemente mtervlene il..
sis.tema operativo che copia il segmento maneante da memoria di massa a memoria
fislca. ..
,'''' ,
II trasferimento di un segmento da memoria di massa a memoria fisica edunque
su domanda, per il trasferimento di un segmento da memoria fisica a memoria
di massa, quando in memoria fisica non c'e spazio per un nuovo segmento, si tiene
conto della frequenza di utilizzo del segmento stesso mentre ein memoria fisica. La
stima di tale fr.equenza eresa possibile attraverso Pindicatore A nel byte ARB, A viene
automaticamente posta a uno dalla CPU ogni qualvolta il descrittore stesso e caricato
nella parte nascosta di un registro selettore. n bit A pub quindi essere esaminato e
azzerato periodieamente cia! software d.i gestione, che puo cosl stimare la frequenza di
utilizzo del segmento stesso, Vesame eli A comporta qualche complicazione. Infatti,
non ci sono istruzioni che permettano di indirizzare entro Ie tabelle dei descrittori
. .
attraverso GDTR 0 LDTR. E quindi necessaria che per esse vengano previsti dei
segmenti alia!, ovvero dei segmenti dati (pertio esaminahili e modificabili) sovrapposti
agli altri nella spazio fisico. Lo stesso problema si presenta per la modifica della tabella
delle interruziani (IDT) e dei segmenti di stata dei processi (TSS) di cui si parla ne!
proSsimo capitolo.
Naturalmente un segmento che non viene modificato mentre eresidente in me-.'
moria fisica non deve essere ricopiato nella memoria di massa durante le operazioni di
rimpiazzamento. La macchina non tiene pero automaticamente traccia deU'avvenuta
384
386 Ca.pitolo 8
387
MEMORlA
La memoria virtuale
INDIRIZZO LOGICO
Scostamento (Offset)
Selettore
32
INDIRIZZO
INDIRIZZO '.'''
, 16
UNIT'" LlNEARE /
UNIT"-
FISICO
"
d,
/
SEGMENTAZ.
/32 PAGlNAZIONE
'/32" . "
Si noti cbe 1a memoria virtuale lineare ecosl grande che il limite al numero e aile
dimensioni dei segmenti che il sistema puo gestire edato dalla capacita della memoria
di massa. Si puo quindi pensare alIa memoria virtuale lineare come a una risersa
'...... '
. h', .
'1" ." .
,,'II," .
.'
\
, .
"I .f,
,. '.
.
.
... ,
" ' .. "
',''''
'I'" .'
.;.:,
con la componente scostamento, rna nel trattare tale indirizzo come un indirizzo logico,
.,,\'I"" ",' pertinente a una memoria virtuale lineare a cui applicare la tecruca della paginazione.
della memoria virtuale del 386 e
. .' zata 10 Flgura8.35. Esattamente come Del 286, l'mdlrIZZO lOglCO (mdmzzo Vlrtuale)
e attraverso. il selettore di segmento e I? scostamento entre il Si no.ti
lY':i;'.. ::, che 11 selettore dl segmento eaneora a 16 bIt, mentre 10 puo essere Sla
,::-: a'16 che a 32 Sono possibili sia il cui corpo puo
piu 64kbyte, s.la segmentl 11 CUI puo arnvare a 4 Gbyte (2
32
). Nel segulto Cl
:V'.?l: rifenremo escluslvamente a quest'ultlIDo caso.
Essendo 14 (13 piu il bit TI) i bit del selettore con funzione di indice, si ha uno
.. spazio indirizzamento pa:i a 2
46
, ovvero 64 T?rabyte.
',l:tV::.: logico su uno sPal:lO ?l 4 e da.luogo al
... : lmeare, su 32 bIt.. Imeare Vlene qumdl dall'unlta.
....;, 'di prevede pagtne di 4 kbyte e una PMT su due livelll, pur sempre
costltulta da pagllle dl 4 kbyte.


tlu,:r.,,.
I.

,
..
,;.'!rl/!"f' ;

'i'M',' '



, , :"",,"
, ,,";-'
'
....,.. ,.
'
'

"I ,,..
"." rp., ,
.. "'-',
z2
:.'f'-+'1i"'"
-, ,.
""""

:,.' Figura 8.35 Segmentazione e paginazione nella CPU 386 e successive. II meccanismo di
_. gli indirizzi lineari in fisici .. La lineare
e la memoria fislca vengono conslderate come costltUlte da pagme eli 4kbyte. C10 comporta
:'un campo di 12 bit per 10 sC05tamento in pagina. L'indirizzo di pagina (virtuale e fisico) e
.' '. su 20 bit. 11 meccanismo di paginazione pub essere a.ttiva.to 0 disattivato mettendo a loa
a il bit 31 del registro eRa (Control Register 0) di CPU.
;,!f,\ n,t." '.
.'. ". I
",..Ir.,\, '"
,.."." '
.t,I...., .,

-, '",,-, ..
'
.
. :';
" I.""','
'J;;I"'"
I

''l',ln', , .

th, iiI.:.
, '\l)!, ','
61 La dimensione dello scostamento viene fissata attraverso il bit D del descrittore di segmento
- (efr. 8.9.1). La famosa compatibilita. tra. "applicazioni a 16 bit" e "applicazioni a 32 bit" di cui si
ancora a riviste ha qui uno dei 8uoi cardini. Per molto tempo 1a
dena.co,?patlblhta ha. reso dlfficl.le I'avauzamento dei queste
. In partlcolare, II sistema operatlvo OS/2, mtrodotto da IBM negh ann! ottauta, mconteo dJincoltii. e
&conto notevoli ritardi rispetto a Windows di Microsoft proprio pee la questione della compatibilita
'M' . :--. verso il 286.
i
" ,.
'.
" ,." 'I" -,
,.. ....

.' .
"
IDT
-'
LOT GDT
Descrlttore
D
dl LOT
D8;U
AUBs- LOT
Ali lOT
AU GOT
I
&OImmutati sono pure i mecctmismi di commutazione tra processi, la gestione delle inteeruzioni
ecc.
A partire dalia CPU 80386, I'Intel ha introdotto la paginazione a valle della segroen-
tazione. Per motivi di concretezza e per dare al lettore un riferimento certo, la parte
che segue descrive la memoria. virtuale del Pentium, come. da Per Ie differenze
tra i va.ri processori della famiglia 8086, si veda it Capitole dedica.to all'architettura
x86.
La tecnica di segmentazione del 386, eccetto alcune differenze dovute a1
parallelismo a 32 bit) ela. stessa del 286
60
. I modelli successivi gestiscono la memoria
virtuale come il 386.
In precedenza (Cfr. 8.2) si evisto che 1a paginazione si applica a memorie virtuali
lineari, cioe noq articolate in segmenti. La paginazione eutilizzata in tutti processori
tradiziooali. Essa ba i1 vantaggio di non provocare frammentazione della memoria
fisica (a parte la trascurabUe frammentazione interna), rna ha 10 svantaggio di privare'
dei benefici che derivano cial pater disporre di piu segmenti can attributi diversi.
Con la paginazione tutta avviene come se ogni processo avesse una memoria virtuale
costituita cia un umco segJ?ento, parte privata e parte comune ad altri processi.
I processori Intel, dal 386 in poi uniscono, nel funzionarnento in modo protetto, i
vantaggi della memoria virtuale segmentata a quelli della memoria virtuale paginata.
L'idea su cui si basa questa memoria consiste nel non considerare come indirizzo
fisico finale quello ottenuto dall'indirizzo virtuale in accordo aile tecniche relative al
pracessore iAPX 286, doe sommando 1a base del segmento specificata nel descrittore
8.9 Esempio di memoria virtuale segmentata e
paginata: la memoria virtuale del Pentium
Figura 8.;l4 Alias di GDT, LDT e IDT. Per ciascuna. ta.bella estato castruito un segmento
dati alias. La modifica al contenuto del segmento alias equivale alia modilica delle tabelle.
Usando gli alias edunque possibile moflificare GDT, LDT, IDT e TSS, come
illustrato in Figura8.34.
\
(
l
\
I.
(
l
\
, \
:l
\
I
, l
,
\
\

I
I
-

-
-
-
-
..
386 Ca.pitolo 8
387
MEMORlA
La memoria virtuale
INDIRIZZO LOGICO
Scostamento (Offset)
Selettore
32
INDIRIZZO
INDIRIZZO '.'''
, 16
UNIT'" LlNEARE /
UNIT"-
FISICO
"
d,
/
SEGMENTAZ.
/32 PAGlNAZIONE
'/32" . "
Si noti cbe 1a memoria virtuale lineare ecosl grande che il limite al numero e aile
dimensioni dei segmenti che il sistema puo gestire edato dalla capacita della memoria
di massa. Si puo quindi pensare alIa memoria virtuale lineare come a una risersa
'...... '
. h', .
'1" ." .
,,'II," .
.'
\
, .
"I .f,
,. '.
.
.
... ,
" ' .. "
',''''
'I'" .'
.;.:,
con la componente scostamento, rna nel trattare tale indirizzo come un indirizzo logico,
.,,\'I"" ",' pertinente a una memoria virtuale lineare a cui applicare la tecruca della paginazione.
della memoria virtuale del 386 e
. .' zata 10 Flgura8.35. Esattamente come Del 286, l'mdlrIZZO lOglCO (mdmzzo Vlrtuale)
e attraverso. il selettore di segmento e I? scostamento entre il Si no.ti
lY':i;'.. ::, che 11 selettore dl segmento eaneora a 16 bIt, mentre 10 puo essere Sla
,::-: a'16 che a 32 Sono possibili sia il cui corpo puo
piu 64kbyte, s.la segmentl 11 CUI puo arnvare a 4 Gbyte (2
32
). Nel segulto Cl
:V'.?l: rifenremo escluslvamente a quest'ultlIDo caso.
Essendo 14 (13 piu il bit TI) i bit del selettore con funzione di indice, si ha uno
.. spazio indirizzamento pa:i a 2
46
, ovvero 64 T?rabyte.
',l:tV::.: logico su uno sPal:lO ?l 4 e da.luogo al
... : lmeare, su 32 bIt.. Imeare Vlene qumdl dall'unlta.
....;, 'di prevede pagtne di 4 kbyte e una PMT su due livelll, pur sempre
costltulta da pagllle dl 4 kbyte.


tlu,:r.,,.
I.

,
..
,;.'!rl/!"f' ;

'i'M',' '



, , :"",,"
, ,,";-'
'
....,.. ,.
'
'

"I ,,..
"." rp., ,
.. "'-',
z2
:.'f'-+'1i"'"
-, ,.
""""

:,.' Figura 8.35 Segmentazione e paginazione nella CPU 386 e successive. II meccanismo di
_. gli indirizzi lineari in fisici .. La lineare
e la memoria fislca vengono conslderate come costltUlte da pagme eli 4kbyte. C10 comporta
:'un campo di 12 bit per 10 sC05tamento in pagina. L'indirizzo di pagina (virtuale e fisico) e
.' '. su 20 bit. 11 meccanismo di paginazione pub essere a.ttiva.to 0 disattivato mettendo a loa
a il bit 31 del registro eRa (Control Register 0) di CPU.
;,!f,\ n,t." '.
.'. ". I
",..Ir.,\, '"
,.."." '
.t,I...., .,

-, '",,-, ..
'
.
. :';
" I.""','
'J;;I"'"
I

''l',ln', , .

th, iiI.:.
, '\l)!, ','
61 La dimensione dello scostamento viene fissata attraverso il bit D del descrittore di segmento
- (efr. 8.9.1). La famosa compatibilita. tra. "applicazioni a 16 bit" e "applicazioni a 32 bit" di cui si
ancora a riviste ha qui uno dei 8uoi cardini. Per molto tempo 1a
dena.co,?patlblhta ha. reso dlfficl.le I'avauzamento dei queste
. In partlcolare, II sistema operatlvo OS/2, mtrodotto da IBM negh ann! ottauta, mconteo dJincoltii. e
&conto notevoli ritardi rispetto a Windows di Microsoft proprio pee la questione della compatibilita
'M' . :--. verso il 286.
i
" ,.
'.
" ,." 'I" -,
,.. ....

.' .
"
IDT
-'
LOT GDT
Descrlttore
D
dl LOT
D8;U
AUBs- LOT
Ali lOT
AU GOT
I
&OImmutati sono pure i mecctmismi di commutazione tra processi, la gestione delle inteeruzioni
ecc.
A partire dalia CPU 80386, I'Intel ha introdotto la paginazione a valle della segroen-
tazione. Per motivi di concretezza e per dare al lettore un riferimento certo, la parte
che segue descrive la memoria. virtuale del Pentium, come. da Per Ie differenze
tra i va.ri processori della famiglia 8086, si veda it Capitole dedica.to all'architettura
x86.
La tecnica di segmentazione del 386, eccetto alcune differenze dovute a1
parallelismo a 32 bit) ela. stessa del 286
60
. I modelli successivi gestiscono la memoria
virtuale come il 386.
In precedenza (Cfr. 8.2) si evisto che 1a paginazione si applica a memorie virtuali
lineari, cioe noq articolate in segmenti. La paginazione eutilizzata in tutti processori
tradiziooali. Essa ba i1 vantaggio di non provocare frammentazione della memoria
fisica (a parte la trascurabUe frammentazione interna), rna ha 10 svantaggio di privare'
dei benefici che derivano cial pater disporre di piu segmenti can attributi diversi.
Con la paginazione tutta avviene come se ogni processo avesse una memoria virtuale
costituita cia un umco segJ?ento, parte privata e parte comune ad altri processi.
I processori Intel, dal 386 in poi uniscono, nel funzionarnento in modo protetto, i
vantaggi della memoria virtuale segmentata a quelli della memoria virtuale paginata.
L'idea su cui si basa questa memoria consiste nel non considerare come indirizzo
fisico finale quello ottenuto dall'indirizzo virtuale in accordo aile tecniche relative al
pracessore iAPX 286, doe sommando 1a base del segmento specificata nel descrittore
8.9 Esempio di memoria virtuale segmentata e
paginata: la memoria virtuale del Pentium
Figura 8.;l4 Alias di GDT, LDT e IDT. Per ciascuna. ta.bella estato castruito un segmento
dati alias. La modifica al contenuto del segmento alias equivale alia modilica delle tabelle.
Usando gli alias edunque possibile moflificare GDT, LDT, IDT e TSS, come
illustrato in Figura8.34.
\
(
l
\
I.
(
l
\
, \
:l
\
I
, l
,
\
\

I
I
-

-
-
-
-
..
\
-
j .
f
I-
\ -
1-
-
.l
\
l
( ..
1-
I-
\
1-
389
_ ...
La memoria virtual!:!
o 11 21 31
"
lnd1rt:l:so UDelU"e
-{) Direclory
Tabla O!lsel
,
PaKe Directory Pale t&ble
CR3
-4'
I
I C><{?-;..

,
,F.-,f 8 or 32 or 20 ;f
o ARB I BASE I UMITE ' I
I ! I I I I I

Figura 8.36 Formato del descrittore di segmento del 386 e successivi modelli. Si nati che
. it descrittore occupa tutti i 64 bit. I campi BASE e LIMITE qui rappresentati come due
campi di bit contigui , sana in realta. campi sparsi nel descrittore. I bit PeA del campo
ARB hanno identico significato ai corrispondenti nel 286.
Capitola 8
'" .. ill;! .,,",

, ,".
; ",.: c'

!i!iI
' "'!I,f".
,. .., - '.
;,.._, ikt,l\

I" .. ,
_. , ,

"' ..'
,.
-
.. N>,

."X-....
:.

.... ,..
, .,." ".,.' .
" r, __

->\""-'" ,-. )t,O.!\ ..
',..i.'J1.
',., "
','['."'>'1
1
-
.
.........
'I.'.. .<.",,,,,:,,
. ',''J!
. .:.,
,,' ..if '\',\:;";1"", '
.;;: ',';l", ,
.','
-'.,<1
""",' .,.,... .
.' .. :\.". "...

, ,,.,,",, c
.:;,::"' "11,': :','
, " ' ',.a
t
.
.,-". I- ,n-f."." '
..' ,(,'.,.... '
',f- " :/f:'J:i:l'
'..,. '''''1''''' . , ""u"'=,; ",
, ....r,,.,
I' , ,,'
- .. ," , tr, t'"
." t i"'"
. 'f- ..
';:'." ',;,1 "
Vengono ora mostrMe Ie differenze che merita ricordare rispetto aHa c.
286. Sl eVlta .dl dare tutti I dl eVldenza. solo
che c.ornspondono a maggIore. complesslta. 0 dIvers.a del "".;;y..:
campI del descntton. Ancora una volta 51 parla solo degh aspettl relatlvl alIa gestione ./fi 1
della memoria virtuale, entr:ue nel :nerito dei pr?blemi di ,
n formato del genenco descnttore dl segmento Vlene dato III Flgura,8.36. Per .:.",< \ ,,'" .., F' a 8 37 La agi' 1 386 . . L" diriz' lin 32 b't d tt
. if' l' ul . . 4 b' 'd . ". F' 8 36' . ch b ... ' : Igur. p nazlOne ne e SUCCesstVI. ID 20 eare SU I t: pro 0 0
quanto 51 r ensce I tenon It e:'l In . .' 51 e un It, '? :, .. " " di .. La PMT a, liv.elli, cui U, primo edetto Directory.
deve essere necessariamente 0, mentre 11 slgmficato del restanll campi e 11 seguente. . su 32 tabella di hvell?e
. _ (. ,. ..' ::, fislca. L mdirizzo della pagtna fislca che la osplta especifica.t9 d3J 20 bit plU slgnificatlVl
G - Granulanta.. G-O . granulanta. al!ora I eli mlsura della :. .. del CR3 (Control. Registe.r 3) di CPU registro vie;De anche chiamato PDBR:
del segmento e II byte, dunque la dlmenslOne masstrna del segmento e pan a "'iij .,' Page. DIrectory BG3e Reguter).
1 Mbyte. Se G=l (granularita grossa), alIora l'unita. di misura della '\
del segmento ela climensione della pagina, cioe 4 kbyte, e il segmento puo arrivare
cosl a 4 Gbyte (2
20
.x 2
12
). Le delle risiedono di e
D - Ampiezza degli i di codice). Se aBora la. . .. dl .esse e In fisica quando Vlene utlhzzata
lavora can operandI e con lOdlnzzl di 32 bIt. Se D=O, allora gh operan.dl e gh meccamsmo ehlanto eli segu.lto.. . .
indiri'Zzi sono presi su 16 bit; in questo modo viene mantenuta la ,.." ,lli',;::.>.:" La tabella dl pnmo hvello contlene 1024 "descntton di tabella", uno per ogru
con il 286. . , ," . y' ," t.abella mecc.arllsmo di .nel vm:uale
, , \ . III fislco (FIgura 8.38), mterpreta I 10 bIt pm slgwficatlVl dell'mdi-
AVL - n campo (1 bit) e a disposizione del sistema operativo. Potrebbe essere della pagina virtuale come indice, nel catalogo delle pagine, del descrittore della
impiegato, per esempio, per tener traccia dei riferimenti alIa pagina. .. coinvolta (? "tabella delle J?agine n
' .... J:;r,' "". ..-:v bIt meno del descnttore 0 bit P lOdica se la tabella delle pagme corrente
';f[iI',. (P = 1) 0 non e(P = 0) in memoria fisica. Nel caso in cui la tabella delle pagine e
Pagh;tazione Le pagine vengono mantenute mediante una PMT a due livelli. Nella' ,::{If!ll in fisica, i 20 bit pili significativi del deserittore specificano l'indirizzo della
terminologia Intel, la tabella di primo livello viene detta Page Directory (eatalogo pagma fislca che la ospita. In caso contrario si ha un page fault che si manifesta
delle pagine, nel seguito), mentre Ie tabelle di secondo liveHo vengono dette ".:.': come eccezione numero 14. In presenza di fault l'indirizze virtuale lineare che non
di pagina. I vantaggi della struttura a livelli sono stati ampiamente descritti in pre ... estate tradotto viene nel registro CR2 (Control Register .2) interne ai
cedenza (Cfr. 8.2.4). D costruttore ha anche fatto la scelta piu efficace, dando alle processore. SuI page fault il SIstema operativo provvede a portare in memoria fisica
tabelle la stessa dimensione delle pagin:e (4 kbyte). n meccanismo di gestione delle' ... la tabella. delle corrente. .
pagine eillustrato in Figura 8.37. 1 .. _. O.gni tabella delle contiene di pagina", uno per
" ',' . vlrtuale a essa assoClata. nmeccarusmo di pagmazlOne, Del tradurre un mdrrlZzo
'I ,W 'virtuale lineare in indirizzo fisico, interpreta i 10 bit mene significativi delPindirizzo
(I2Un esempio numerico chiarira. meglio: se si suppone che venga prodotto un nuovo segmento da !-: , della a ina virtual l'indice relativament 11 bUd U .
32 kbyte ogni 5 minuti, occorrono altre 15 mesi di lavara ininterrotto prima di aver saturato to spazio , . !lIM:, 'd I'd P g t d II e co.me. I ' A ch' e a a ta .e e e
di 4 Gbyte. .' .,' e escnt ore e a pagtna vlrtua e. n e 10 questo caso II bit meno slgnIficatIvo del
8.. 9.1 La segmentazione del 386 e modelli successivi
388
praticamente infinita
62
.
La memoria fisica pub raggiungere anch'essa 4 Gbyte, in quanto gli fisid
sono aneora a 32 bit. Nella pratica costruttiva, solo una piccola parte della spazio di
memoria fisica epresente in un sistema e quindi solo una piccola parte di memoria
virtuale lineare puo essere sostenuta, in un dato istantc, dalla memoria fisica.
La MMU del 386 e modelli successivi euna delle pili complete e complesse ar-
chitetture esistenti, anche se per molto tempo i produttori di software nori ne hanno
sfruttato tutte Ie possibilitA, impiegando Ie CPU successive al 286, come un 8086
molto veloce, sfruttando pesantemente Ia lora capacita. eli emulare dinamicamente
macehine virtuali 8086.
\
-
j .
f
I-
\ -
1-
-
.l
\
l
( ..
1-
I-
\
1-
389
_ ...
La memoria virtual!:!
o 11 21 31
"
lnd1rt:l:so UDelU"e
-{) Direclory
Tabla O!lsel
,
PaKe Directory Pale t&ble
CR3
-4'
I
I C><{?-;..

,
,F.-,f 8 or 32 or 20 ;f
o ARB I BASE I UMITE ' I
I ! I I I I I

Figura 8.36 Formato del descrittore di segmento del 386 e successivi modelli. Si nati che
. it descrittore occupa tutti i 64 bit. I campi BASE e LIMITE qui rappresentati come due
campi di bit contigui , sana in realta. campi sparsi nel descrittore. I bit PeA del campo
ARB hanno identico significato ai corrispondenti nel 286.
Capitola 8
'" .. ill;! .,,",

, ,".
; ",.: c'

!i!iI
' "'!I,f".
,. .., - '.
;,.._, ikt,l\

I" .. ,
_. , ,

"' ..'
,.
-
.. N>,

."X-....
:.

.... ,..
, .,." ".,.' .
" r, __

->\""-'" ,-. )t,O.!\ ..
',..i.'J1.
',., "
','['."'>'1
1
-
.
.........
'I.'.. .<.",,,,,:,,
. ',''J!
. .:.,
,,' ..if '\',\:;";1"", '
.;;: ',';l", ,
.','
-'.,<1
""",' .,.,... .
.' .. :\.". "...

, ,,.,,",, c
.:;,::"' "11,': :','
, " ' ',.a
t
.
.,-". I- ,n-f."." '
..' ,(,'.,.... '
',f- " :/f:'J:i:l'
'..,. '''''1''''' . , ""u"'=,; ",
, ....r,,.,
I' , ,,'
- .. ," , tr, t'"
." t i"'"
. 'f- ..
';:'." ',;,1 "
Vengono ora mostrMe Ie differenze che merita ricordare rispetto aHa c.
286. Sl eVlta .dl dare tutti I dl eVldenza. solo
che c.ornspondono a maggIore. complesslta. 0 dIvers.a del "".;;y..:
campI del descntton. Ancora una volta 51 parla solo degh aspettl relatlvl alIa gestione ./fi 1
della memoria virtuale, entr:ue nel :nerito dei pr?blemi di ,
n formato del genenco descnttore dl segmento Vlene dato III Flgura,8.36. Per .:.",< \ ,,'" .., F' a 8 37 La agi' 1 386 . . L" diriz' lin 32 b't d tt
. if' l' ul . . 4 b' 'd . ". F' 8 36' . ch b ... ' : Igur. p nazlOne ne e SUCCesstVI. ID 20 eare SU I t: pro 0 0
quanto 51 r ensce I tenon It e:'l In . .' 51 e un It, '? :, .. " " di .. La PMT a, liv.elli, cui U, primo edetto Directory.
deve essere necessariamente 0, mentre 11 slgmficato del restanll campi e 11 seguente. . su 32 tabella di hvell?e
. _ (. ,. ..' ::, fislca. L mdirizzo della pagtna fislca che la osplta especifica.t9 d3J 20 bit plU slgnificatlVl
G - Granulanta.. G-O . granulanta. al!ora I eli mlsura della :. .. del CR3 (Control. Registe.r 3) di CPU registro vie;De anche chiamato PDBR:
del segmento e II byte, dunque la dlmenslOne masstrna del segmento e pan a "'iij .,' Page. DIrectory BG3e Reguter).
1 Mbyte. Se G=l (granularita grossa), alIora l'unita. di misura della '\
del segmento ela climensione della pagina, cioe 4 kbyte, e il segmento puo arrivare
cosl a 4 Gbyte (2
20
.x 2
12
). Le delle risiedono di e
D - Ampiezza degli i di codice). Se aBora la. . .. dl .esse e In fisica quando Vlene utlhzzata
lavora can operandI e con lOdlnzzl di 32 bIt. Se D=O, allora gh operan.dl e gh meccamsmo ehlanto eli segu.lto.. . .
indiri'Zzi sono presi su 16 bit; in questo modo viene mantenuta la ,.." ,lli',;::.>.:" La tabella dl pnmo hvello contlene 1024 "descntton di tabella", uno per ogru
con il 286. . , ," . y' ," t.abella mecc.arllsmo di .nel vm:uale
, , \ . III fislco (FIgura 8.38), mterpreta I 10 bIt pm slgwficatlVl dell'mdi-
AVL - n campo (1 bit) e a disposizione del sistema operativo. Potrebbe essere della pagina virtuale come indice, nel catalogo delle pagine, del descrittore della
impiegato, per esempio, per tener traccia dei riferimenti alIa pagina. .. coinvolta (? "tabella delle J?agine n
' .... J:;r,' "". ..-:v bIt meno del descnttore 0 bit P lOdica se la tabella delle pagme corrente
';f[iI',. (P = 1) 0 non e(P = 0) in memoria fisica. Nel caso in cui la tabella delle pagine e
Pagh;tazione Le pagine vengono mantenute mediante una PMT a due livelli. Nella' ,::{If!ll in fisica, i 20 bit pili significativi del deserittore specificano l'indirizzo della
terminologia Intel, la tabella di primo livello viene detta Page Directory (eatalogo pagma fislca che la ospita. In caso contrario si ha un page fault che si manifesta
delle pagine, nel seguito), mentre Ie tabelle di secondo liveHo vengono dette ".:.': come eccezione numero 14. In presenza di fault l'indirizze virtuale lineare che non
di pagina. I vantaggi della struttura a livelli sono stati ampiamente descritti in pre ... estate tradotto viene nel registro CR2 (Control Register .2) interne ai
cedenza (Cfr. 8.2.4). D costruttore ha anche fatto la scelta piu efficace, dando alle processore. SuI page fault il SIstema operativo provvede a portare in memoria fisica
tabelle la stessa dimensione delle pagin:e (4 kbyte). n meccanismo di gestione delle' ... la tabella. delle corrente. .
pagine eillustrato in Figura 8.37. 1 .. _. O.gni tabella delle contiene di pagina", uno per
" ',' . vlrtuale a essa assoClata. nmeccarusmo di pagmazlOne, Del tradurre un mdrrlZzo
'I ,W 'virtuale lineare in indirizzo fisico, interpreta i 10 bit mene significativi delPindirizzo
(I2Un esempio numerico chiarira. meglio: se si suppone che venga prodotto un nuovo segmento da !-: , della a ina virtual l'indice relativament 11 bUd U .
32 kbyte ogni 5 minuti, occorrono altre 15 mesi di lavara ininterrotto prima di aver saturato to spazio , . !lIM:, 'd I'd P g t d II e co.me. I ' A ch' e a a ta .e e e
di 4 Gbyte. .' .,' e escnt ore e a pagtna vlrtua e. n e 10 questo caso II bit meno slgnIficatIvo del
8.. 9.1 La segmentazione del 386 e modelli successivi
388
praticamente infinita
62
.
La memoria fisica pub raggiungere anch'essa 4 Gbyte, in quanto gli fisid
sono aneora a 32 bit. Nella pratica costruttiva, solo una piccola parte della spazio di
memoria fisica epresente in un sistema e quindi solo una piccola parte di memoria
virtuale lineare puo essere sostenuta, in un dato istantc, dalla memoria fisica.
La MMU del 386 e modelli successivi euna delle pili complete e complesse ar-
chitetture esistenti, anche se per molto tempo i produttori di software nori ne hanno
sfruttato tutte Ie possibilitA, impiegando Ie CPU successive al 286, come un 8086
molto veloce, sfruttando pesantemente Ia lora capacita. eli emulare dinamicamente
macehine virtuali 8086.
La memoria virtuale 391
I bit PCD e PWT svolgono la loro funzione in riferimento alia cache.
PCD - Page-level Cache Disabled. Quando easserito rende non trasferibile nella
cache interna il contenuto della paginaj solo se questo bit edisasserito il control-
lore della cache pub effettuare il trasferimento in cache della linea. indirizzata. Si
noti the la possibilita di rendere 180 memoria non-cacheable eutile se per esempio
sulla pagina emappato parte dello spazio <Ii I/O, n bit PCD evita alia radice I
problemi di coerenz.a tra -memoria centrale e cache.
A - Posta automaticamente a 1 ogni qualvolta la pagina viene utilizzata. A
puo essere esaminato e azzerato periodicamente da! software di gestione, in
modo da stirnare 180 frequenza di utilizzo delle pagine.
D - Indica se la pagina e0 no stata modificata durante la sua permanenza in
memoria fiska. '
P - Indica se 180 pagina e0 no presente in memoria fisica.
A - Viene posta automaticamente a 1 ogni qualvolta viene utilizzata una delle
1024 pagine il cui si trova nella tabella delle 'pagine in oggetto.
D - Se a 1 indica che almeno Wla delle 1024 pagine, associate alIa tabelle delle
pagine individuata dal descrittore in oggetto, estata modificata durante 1a
sua permanenza in memoria fisica.
P -
-
PWT - Page-level Write Through. Quando easserito determina che per quella
pagina deve essere seguita una politica di scrittura immediata in memoria per
ogni scrittura della cache interna
63
. Quando PWT = 0 1a logica di gestione della
cache effettua scritture differite per 180 pagina in questione.
63Questa possibilita. viene data dal Pentium e modelli successivi.
, ,
X 4
10,
3a
INDIRIZZO
VlRTUALE UNEARE
__1__::;
20} 12P
Sco.l.mflnlo del
d crittore daU.
pacme, !Isica
Sco.tamenlo del
d.en.
le,b.U. d.U. p in.
x 4
10,
Numero di
Po.llino. virtuo.le
II.
20,
20,
NULnerO dl
pallmo. nsica
32
o .. 0
N\anero dJ pa.ina t\:llea
eba osplta I.. tabella
I
20J
. . 11 'n
Pa.iDa liSlCe, INDIRlZZO FISICO Scostanlenlo ne .......gl ..
delh. loce1llone "Iente
o _ _
Tab.Ua delle p 1ne
Tabella
CRO
31 12 11 9 e 7 6 5 4 3 2 1 0
I INDIRIZZO PAGINA
Figura 8.39 Formato del descrittore di pagina.
8.9.2 Descrittori di pagina

;r ,.-,
,.::IZ'I
.r,


" .)
..
k'.<efif

i'
:.fSj!

"
, ....

"''-11m':

'-, !.,'",.
'.',' ,!;,"
"I"""
.:.-:.:: r
:'-).<,j' 'f,
.,.
. .' 'I'
'.,J"t"I,
'.1,

,

('".'1;, .


::.I.f.


,
.>.;:', "


", ..
".1. J..<J

,'t''
iiJ
1I.!l:'

, ,]l
. ,. ',- .;;.i:1
..
".:.r.:
I .. ,
""lii'l
''''''''I' '
"',' .
,'r,,',', <,
, , i. ".
A.'
1
. ,., ..,
,',' ,

,".-,:;:.,t;;"
'. ",,'S;

" '
", .; 'i;.,'<j.!

descrittore (P) indica se la pagina virtuale e0 non ein memoria .jisica. nmeccanismo .
del page fault eidentico a queUo sopra descritto, compreso l'uso 'del registro CR2 per
memorizzare l'indirizzo virtuale lineare che ha determinato il fault. " ';.
pr?ce.dura di da ind.iriz:z.o virtuale a indirizzo. fisico
descntta nchiede due acCesSl m memOrIa e comporta qwndl un tempe dl traduzlOne.;
inaccettabilmente lunge. Per ovviare a questa inconveniente, epresente un TLB. n
486 ha un TLB di 32 posizioni;il Pentium ha un TLB separato per istruzioni e
. . ..
' .
'. .,

'.
"
",.,'
,',;(\,',
,,' "N)"
, " },.:"
."',
ndescrittore <Ii tabella <Ii pagina (contenuto nella tabella di alto livello) e i1 descrittore
<Ii pagina (contenuto nella tabella delle pagine) hanno II formato di Figura8,39, 'In
questa sede ci interessano i tre campi AVAIL, P, A e D. -;,..

" ,
'""e,.,,'

,
T. ;',.1'"
....
"
, :10':"'1
'.' '?=1;,
. '" ..
"I ,....
,
..
'/.,.,',
'";\",,
,!)I
WEWOJUA. J"lSICA
Figura 8.38 Traduzione da indirizzo virtuale lineare a indirizzo fisico. Ovviamente
moltiplicazione per quattro corrisponde alio sp08tamento a sinistra di due posizioni.
390 Capitolo 8
l
\
I
I

I
,.
!
(
I
\
\
I
\
j
1
1
.l

-
.'.
La memoria virtuale 391
I bit PCD e PWT svolgono la loro funzione in riferimento alia cache.
PCD - Page-level Cache Disabled. Quando easserito rende non trasferibile nella
cache interna il contenuto della paginaj solo se questo bit edisasserito il control-
lore della cache pub effettuare il trasferimento in cache della linea. indirizzata. Si
noti the la possibilita di rendere 180 memoria non-cacheable eutile se per esempio
sulla pagina emappato parte dello spazio <Ii I/O, n bit PCD evita alia radice I
problemi di coerenz.a tra -memoria centrale e cache.
A - Posta automaticamente a 1 ogni qualvolta la pagina viene utilizzata. A
puo essere esaminato e azzerato periodicamente da! software di gestione, in
modo da stirnare 180 frequenza di utilizzo delle pagine.
D - Indica se la pagina e0 no stata modificata durante la sua permanenza in
memoria fiska. '
P - Indica se 180 pagina e0 no presente in memoria fisica.
A - Viene posta automaticamente a 1 ogni qualvolta viene utilizzata una delle
1024 pagine il cui si trova nella tabella delle 'pagine in oggetto.
D - Se a 1 indica che almeno Wla delle 1024 pagine, associate alIa tabelle delle
pagine individuata dal descrittore in oggetto, estata modificata durante 1a
sua permanenza in memoria fisica.
P -
-
PWT - Page-level Write Through. Quando easserito determina che per quella
pagina deve essere seguita una politica di scrittura immediata in memoria per
ogni scrittura della cache interna
63
. Quando PWT = 0 1a logica di gestione della
cache effettua scritture differite per 180 pagina in questione.
63Questa possibilita. viene data dal Pentium e modelli successivi.
, ,
X 4
10,
3a
INDIRIZZO
VlRTUALE UNEARE
__1__::;
20} 12P
Sco.l.mflnlo del
d crittore daU.
pacme, !Isica
Sco.tamenlo del
d.en.
le,b.U. d.U. p in.
x 4
10,
Numero di
Po.llino. virtuo.le
II.
20,
20,
NULnerO dl
pallmo. nsica
32
o .. 0
N\anero dJ pa.ina t\:llea
eba osplta I.. tabella
I
20J
. . 11 'n
Pa.iDa liSlCe, INDIRlZZO FISICO Scostanlenlo ne .......gl ..
delh. loce1llone "Iente
o _ _
Tab.Ua delle p 1ne
Tabella
CRO
31 12 11 9 e 7 6 5 4 3 2 1 0
I INDIRIZZO PAGINA
Figura 8.39 Formato del descrittore di pagina.
8.9.2 Descrittori di pagina

;r ,.-,
,.::IZ'I
.r,


" .)
..
k'.<efif

i'
:.fSj!

"
, ....

"''-11m':

'-, !.,'",.
'.',' ,!;,"
"I"""
.:.-:.:: r
:'-).<,j' 'f,
.,.
. .' 'I'
'.,J"t"I,
'.1,

,

('".'1;, .


::.I.f.


,
.>.;:', "


", ..
".1. J..<J

,'t''
iiJ
1I.!l:'

, ,]l
. ,. ',- .;;.i:1
..
".:.r.:
I .. ,
""lii'l
''''''''I' '
"',' .
,'r,,',', <,
, , i. ".
A.'
1
. ,., ..,
,',' ,

,".-,:;:.,t;;"
'. ",,'S;

" '
", .; 'i;.,'<j.!

descrittore (P) indica se la pagina virtuale e0 non ein memoria .jisica. nmeccanismo .
del page fault eidentico a queUo sopra descritto, compreso l'uso 'del registro CR2 per
memorizzare l'indirizzo virtuale lineare che ha determinato il fault. " ';.
pr?ce.dura di da ind.iriz:z.o virtuale a indirizzo. fisico
descntta nchiede due acCesSl m memOrIa e comporta qwndl un tempe dl traduzlOne.;
inaccettabilmente lunge. Per ovviare a questa inconveniente, epresente un TLB. n
486 ha un TLB di 32 posizioni;il Pentium ha un TLB separato per istruzioni e
. . ..
' .
'. .,

'.
"
",.,'
,',;(\,',
,,' "N)"
, " },.:"
."',
ndescrittore <Ii tabella <Ii pagina (contenuto nella tabella di alto livello) e i1 descrittore
<Ii pagina (contenuto nella tabella delle pagine) hanno II formato di Figura8,39, 'In
questa sede ci interessano i tre campi AVAIL, P, A e D. -;,..

" ,
'""e,.,,'

,
T. ;',.1'"
....
"
, :10':"'1
'.' '?=1;,
. '" ..
"I ,....
,
..
'/.,.,',
'";\",,
,!)I
WEWOJUA. J"lSICA
Figura 8.38 Traduzione da indirizzo virtuale lineare a indirizzo fisico. Ovviamente
moltiplicazione per quattro corrisponde alio sp08tamento a sinistra di due posizioni.
390 Capitolo 8
l
\
I
I

I
,.
!
(
I
\
\
I
\
j
1
1
.l

-
.'.
392 Ca.pitolo 8
\ -
f

-
-

.
-
I
I
I
l -
1
I-
1
t -
\ .-
I -
I.
'''"
o 34 20 31
Indlrl:u:o rnl'ttlvo \ I I Orrnt I
,
, ' ,
,
"
"
<It


.
"

23 2 3' .0
"
orrnt
",
".
Hit .. fLB
HASH
...,

"
"
"',
Off,..,t
....,.. .
'.'
N"
i:-- :' La memoria virtuale 393

I, ;'Il"""
.
f'V
)" ,-, ,
',j:'iJ.
1
""., ,
',';;.\'.Om" .... " ': .
"""1 ',' '
,;>'i ,1 .
"'I'.(1'''.: ..:,
"tll",'-t: '

.. ..
,,', 'f:i. '
". .. ,"

'
-, ,,.... '
"I''I'" ,"
_ ,,1 I.! '
,I"""'"
:f'. :'. :' . -
_ '1'.-
'''' . II,'

"-'f"" .,.-, .',.
t",":

. :;I't.," .
, !!\ I' ..
", '." . ,'-
1'\'1
':J!lll"""'" '
',"'"
'fI!] ,"' ,
? " , .-,,,
., . \ :'1'\""" "
'" . ',;
,<' ,I -

..';1;,
I , Ni"V',
.
"I 'I"""'"
'II" "W,.'"",

. ,',..
''1\'" ;.. -, -
.,
$ \l I;f'" \ ,
""'-,,,;
'"'i'''''
,'1,,-.'
" , l'"

;' 'j' 1....;",.:" .

..
.-
:' ,'*>,
II
, , "'1'',.

.
,,',
.. '.

.. r; ,
,"" /J"'"

,','..
',,' ...
'j ..
8.41 Schema della. tra.duzione dell'indirizzo nel PowerPC. L'EA (indirizzo effettivo
bit) viene prima trasformato in un indirizzo v,irtua.le a 52 bit, aggiungendo il contenuto
f'Cgi3tro di segmento identificato attraverso i quattro bit phi significativi di EA. La ricerca
. pagina vtene prima effettuata in TLB e, se questa fallisce, in HPT (la versione PowerPC
1PT). In figura la scatola de rappresenta MMU racchiude anche HPTj ovviamente
'i/- tabella si trova in memoria principale. .
'lii" ,.,

'i
.
ti,;:':,';'" Vale la pena di rit?rnare sulla questione della separazione degli spazi di indiriz-
dei processi. E .che it PowerPC .segue metoda .del 2 di
",Jfll pagma 341. A tale scopo l'mdinzzo vlrtuale e'su 52 bit} cornspondentl a una dimen-
, ,r .
;: .. quasi inimmaginabile. 1 programmi generano indirizzi au 32 bit. Questi vengono
in indirizzi di 52 utilizzando il contenuto di un registro di In
un registro di segmento non fa altro .che rilocare un blocco di 2 8 indirizzi
uno spazio complessivo di 2
52
. Poicbe ci sono 16 registri di segmento il processo
indirizzare 16 spazi di 2
28
. nrisultato ecbe se i registri di segmento contengono
adeguati, e possibile mappare gli indirizzi logici generati da ciascun processo
distinti e non sovrapposti di indirizzi virtuali. Si Doti che COSI.
accade mai che venga generato il medesimo indirizzo vUtuale da parte di pili
in quanta gli spazi virtuali dei singoli processi sano effettivamente distinti in

"" "
,.. 'D .,
COOtrlCIl OCLLtSTRUZtCHl:

.,
..

I
,

,. ,.
"
cl<tl

I
"
r,
,
..-

L
,
,+
"
-.
"
..' .

"

3t' ,
Gf'lI <r-Il)
rr.'tNa
I
, ,
8.10 di memori:;t con tabella di pagine ;11
mvertlta: la memOrIa del PowerPC .
'ill"
, .. ,.' "
'," ,
. ".;<" .
Nella famiglia dei microprocessori PowerPC 1a paginazione e a valle della
tazione
64
. La memoria virtuale e gestita da una MMU integrata nel processore che
opera secondo il modello (demand-pageci). .
Nella versione a 32-bit il PowerPC genera un Effective Address (EA) di 32 bit,.-t,c
corrispondenti a uno spazio di 4 Gbyte, che viene trasformato in un
indirizzo virtuale a 52-bit (all'interno della MMU) per poi essere ritrasformato
indirizzo fisico a 32-bit (si eusata la terminologia Motorola): Tutte Ie istruzioni sono
codificate su 32 bit (Ofr. 2.5.1). La divisione della lunghezza dei vari campi all'interno',':':;t,
dei 32 bit non erigida, rna dipende fortemente dal tipo di operazione che
In Figura 8.40 viene mostrato il calcolo dell'indirizzo effettivo (EA) in riferimento
f I d
"'t' _.",
un armata mo to caroune 1 is ruzlone.
,
, ',.
,
""'" ,
''''I;lr,ir





' ..
.N

" ,'!

':\1'"-

L'\'I:i/:'JIJ
'>';',i'C.\



'I'
.. (,'"


,:.X::(l1't',

,
';'l':' i:lI

,,. !:'l'i

.;!' .'
."..
Figura 8.40 Generazione del'EA per un'istruzione del tipo load/store nell'architettura
werPC. Se rA ediverso da 0, il campo d deU'istruzione viene interpretato come
al registro eli U50 generale rA, se rA e uguale a 0 it campo d
mterpretato come mdirlzzo assoluto. ' .


,:;'.cf'!

,'.

',' .'

8.10.1 La 1PT del PowerPC: la HPT . 'SI'-
,
"'''' ,.,
. , ( "
Lo schema generate della traduzione da indirizzo a indirizzo fisko e
in Figura 8.41. Viene irnpiegata una tabella delle pagine nella versione di ..
La,tabella prende il nome di Ha,hed Page Table 0 HPT.:.
.." ..
.,,';
.' .' "l,j "
'F 1.. '"
640ltre a do iI PowerPC puo implemeotare ancbe altri tipi di della memoria ovvero:.
la segmentazione pura, il meccanismo di traduzione a blocchi (BAT). E Inoltre possibile ,Wi,
la traduzione dell'indirizzo, in modo j\oalogo a quanto detto per iI 68030. ';',/il;i:

392 Ca.pitolo 8
\ -
f

-
-

.
-
I
I
I
l -
1
I-
1
t -
\ .-
I -
I.
'''"
o 34 20 31
Indlrl:u:o rnl'ttlvo \ I I Orrnt I
,
, ' ,
,
"
"
<It


.
"

23 2 3' .0
"
orrnt
",
".
Hit .. fLB
HASH
...,

"
"
"',
Off,..,t
....,.. .
'.'
N"
i:-- :' La memoria virtuale 393

I, ;'Il"""
.
f'V
)" ,-, ,
',j:'iJ.
1
""., ,
',';;.\'.Om" .... " ': .
"""1 ',' '
,;>'i ,1 .
"'I'.(1'''.: ..:,
"tll",'-t: '

.. ..
,,', 'f:i. '
". .. ,"

'
-, ,,.... '
"I''I'" ,"
_ ,,1 I.! '
,I"""'"
:f'. :'. :' . -
_ '1'.-
'''' . II,'

"-'f"" .,.-, .',.
t",":

. :;I't.," .
, !!\ I' ..
", '." . ,'-
1'\'1
':J!lll"""'" '
',"'"
'fI!] ,"' ,
? " , .-,,,
., . \ :'1'\""" "
'" . ',;
,<' ,I -

..';1;,
I , Ni"V',
.
"I 'I"""'"
'II" "W,.'"",

. ,',..
''1\'" ;.. -, -
.,
$ \l I;f'" \ ,
""'-,,,;
'"'i'''''
,'1,,-.'
" , l'"

;' 'j' 1....;",.:" .

..
.-
:' ,'*>,
II
, , "'1'',.

.
,,',
.. '.

.. r; ,
,"" /J"'"

,','..
',,' ...
'j ..
8.41 Schema della. tra.duzione dell'indirizzo nel PowerPC. L'EA (indirizzo effettivo
bit) viene prima trasformato in un indirizzo v,irtua.le a 52 bit, aggiungendo il contenuto
f'Cgi3tro di segmento identificato attraverso i quattro bit phi significativi di EA. La ricerca
. pagina vtene prima effettuata in TLB e, se questa fallisce, in HPT (la versione PowerPC
1PT). In figura la scatola de rappresenta MMU racchiude anche HPTj ovviamente
'i/- tabella si trova in memoria principale. .
'lii" ,.,

'i
.
ti,;:':,';'" Vale la pena di rit?rnare sulla questione della separazione degli spazi di indiriz-
dei processi. E .che it PowerPC .segue metoda .del 2 di
",Jfll pagma 341. A tale scopo l'mdinzzo vlrtuale e'su 52 bit} cornspondentl a una dimen-
, ,r .
;: .. quasi inimmaginabile. 1 programmi generano indirizzi au 32 bit. Questi vengono
in indirizzi di 52 utilizzando il contenuto di un registro di In
un registro di segmento non fa altro .che rilocare un blocco di 2 8 indirizzi
uno spazio complessivo di 2
52
. Poicbe ci sono 16 registri di segmento il processo
indirizzare 16 spazi di 2
28
. nrisultato ecbe se i registri di segmento contengono
adeguati, e possibile mappare gli indirizzi logici generati da ciascun processo
distinti e non sovrapposti di indirizzi virtuali. Si Doti che COSI.
accade mai che venga generato il medesimo indirizzo vUtuale da parte di pili
in quanta gli spazi virtuali dei singoli processi sano effettivamente distinti in

"" "
,.. 'D .,
COOtrlCIl OCLLtSTRUZtCHl:

.,
..

I
,

,. ,.
"
cl<tl

I
"
r,
,
..-

L
,
,+
"
-.
"
..' .

"

3t' ,
Gf'lI <r-Il)
rr.'tNa
I
, ,
8.10 di memori:;t con tabella di pagine ;11
mvertlta: la memOrIa del PowerPC .
'ill"
, .. ,.' "
'," ,
. ".;<" .
Nella famiglia dei microprocessori PowerPC 1a paginazione e a valle della
tazione
64
. La memoria virtuale e gestita da una MMU integrata nel processore che
opera secondo il modello (demand-pageci). .
Nella versione a 32-bit il PowerPC genera un Effective Address (EA) di 32 bit,.-t,c
corrispondenti a uno spazio di 4 Gbyte, che viene trasformato in un
indirizzo virtuale a 52-bit (all'interno della MMU) per poi essere ritrasformato
indirizzo fisico a 32-bit (si eusata la terminologia Motorola): Tutte Ie istruzioni sono
codificate su 32 bit (Ofr. 2.5.1). La divisione della lunghezza dei vari campi all'interno',':':;t,
dei 32 bit non erigida, rna dipende fortemente dal tipo di operazione che
In Figura 8.40 viene mostrato il calcolo dell'indirizzo effettivo (EA) in riferimento
f I d
"'t' _.",
un armata mo to caroune 1 is ruzlone.
,
, ',.
,
""'" ,
''''I;lr,ir





' ..
.N

" ,'!

':\1'"-

L'\'I:i/:'JIJ
'>';',i'C.\



'I'
.. (,'"


,:.X::(l1't',

,
';'l':' i:lI

,,. !:'l'i

.;!' .'
."..
Figura 8.40 Generazione del'EA per un'istruzione del tipo load/store nell'architettura
werPC. Se rA ediverso da 0, il campo d deU'istruzione viene interpretato come
al registro eli U50 generale rA, se rA e uguale a 0 it campo d
mterpretato come mdirlzzo assoluto. ' .


,:;'.cf'!

,'.

',' .'

8.10.1 La 1PT del PowerPC: la HPT . 'SI'-
,
"'''' ,.,
. , ( "
Lo schema generate della traduzione da indirizzo a indirizzo fisko e
in Figura 8.41. Viene irnpiegata una tabella delle pagine nella versione di ..
La,tabella prende il nome di Ha,hed Page Table 0 HPT.:.
.." ..
.,,';
.' .' "l,j "
'F 1.. '"
640ltre a do iI PowerPC puo implemeotare ancbe altri tipi di della memoria ovvero:.
la segmentazione pura, il meccanismo di traduzione a blocchi (BAT). E Inoltre possibile ,Wi,
la traduzione dell'indirizzo, in modo j\oalogo a quanto detto per iI 68030. ';',/il;i:

L'organizzazione di HPT elimina un problema clovuto alIa IPT in riferimento aHa
condivisione della memoria da parte eli pili processi concorrenti, Con la IPT affinche

N""...o I'GO"'. Vl,.t ....l. (V'PNl


Of'",t
Indl,.lzzo VI.. tuGle
<ll BIt)
,
.
o 0 0 0
(I' BIt)
,


.,.
"

run:ll...... t40.,h <XDRl


HPT
.----
.", "
I'TEO
B Jyt.
.
Pl[(i(l
,

"
, ,
''''
....
,
... . --_._-----
,
I
,
1'1[G

Kl.. I' I'ttG 64


"
2.25 U
"
v v'"
"
N.......o dl (IlPN)

..
20 lIT
"

"'-ro d F>.gmR.o.t. Will


C,TS(T
,
.. . _.._-- ._- --
.'
., ,..
,il,"

!,tlh';' I 9
'. . La memoria virtua e 3 5
,

:;t-!rt',"Jr. ,".
'"r", , '," ..
.1" ' .1 'J
.
jl nurnero minima di gruppi di PTE epari a 2(26-12-1) = 2
13
ovvero alIa meta. del
numero di pagine fisiche (2
14
). Essendo ogni singolo PTE eli 8 byte, la tabella delle
..-pagine. occupa 8*. 8* = 524.288 byte oYVero circa 500 kbyte. Si confrontino questi
.. numer! con quelh datI a suo tempo per la PMT.
. La schema della dell'indirizzo ein Figura8.43. Si nati che un a.ccesso
pub portare all'esame di due liste (quando 1a prima non contiene l'elemento cercato).
.
';",: .
\l!!l.o!'1f,ll,,_ ,':
.
'l:"ll {:ii='-" ",
,.-.. "."
,,,.:z.:.; '.. ':' .. J9 40 :)1
.\: .
" ''''''h: "
,', !Jl(;<....
'
1\ ,,,,,.'.

,"
;
I:! ..
'"
\ll1i<,., .'

.-:' "

31 2S 26
o I
- .
V
YPN
Nune.-o dl <RPN)
R C
pp
<20 BIt)
PTEO
I 64 By"tes i
TABELLA DELLE PAGINE (HPJ)

PTEGO I L t:l D Ui' ''-
\lo.lore hQ
Capitolo 8
65Se a. prima. vista. questo risulta.t.o sembra dubbio, in rea.llfl. non 10 e: i progettisti del PowerPC
"consigliano" Questa numero di PTE perche banno ipotizzato che, in medi4, quaUro programmi
diversi possano eondividere la stessa pagina fisica (si veda piu avanti) seuza determinare alcun page
fault,
"':.-f!""
:n"'"
.q '/
"
..
,
"',1 '
,,', '>',
r' . j,l.l,,\llll

';
:.",,,,,,

't,,-- ", ,
,," 7. "
, ."
-,,'j ...,,:' '.
':' "\
:.j, n..
Figura 8.42 Orga.nizzazione della HPT nel PowerPC, Un PTE contiene anche il numero cli'
pagina. fisica (campo RPN)'a cui si riferisce i1 VPN. Ogni riga costituisce una lista di PTE. .. 1,
La lunghezza di una. lista e dunque limitata a 8. All'interno del PTE si trovano ulteriari, .-
campi, dedicati alIa protezione (PP) e aHa Ustoria" (bit R,C), II campo V rappresenta la
validita.''o:l.'.':?J;I"
,

". ,,": .,.;,>\.
"l:'.ll:":"i'J
, .," ",11
.-", ","
,<' ".,S';:
La tabella eorganizzata in gruppi di 8 PTE [lBM94b] [IBM94a]; un PTE occupa
8 byte. La dimensione d.i HPT non evincolata al numero di pagine fisiche; essa eun.
multiplo eli 2, mentre Pindirizzo di partenza della tabella cleve essere multiple della
sua dimensione.
D numero dei gruppi in HPT escelto con il solito compromesso tra quante pagine
virtuali si vuele mappare contemporaneamente e, quanta memoria <'sprecare
lJ
per 1a
HPT. la dimensione minima per la tabella e64 kbyte (2
10
PTE di 64 byte). Viene
consigliato un numero minimo pari alla meta del numero di pagine fisiche: con 1024
pagine fisiche, il numero eli gruppi risulterebbe 512 equivaJenti a 4 PTE per pagina
fisica
65
. In un sistema dotato di 64 Mbyte di memoria centrale e pagine di 4 kbyte,
394
l
\
\
\
(
I
,I
I
\
I
I
\
l
, \

-
- :
-
-
-
-
-
L'organizzazione di HPT elimina un problema clovuto alIa IPT in riferimento aHa
condivisione della memoria da parte eli pili processi concorrenti, Con la IPT affinche

N""...o I'GO"'. Vl,.t ....l. (V'PNl


Of'",t
Indl,.lzzo VI.. tuGle
<ll BIt)
,
.
o 0 0 0
(I' BIt)
,


.,.
"

run:ll...... t40.,h <XDRl


HPT
.----
.", "
I'TEO
B Jyt.
.
Pl[(i(l
,

"
, ,
''''
....
,
... . --_._-----
,
I
,
1'1[G

Kl.. I' I'ttG 64


"
2.25 U
"
v v'"
"
N.......o dl (IlPN)

..
20 lIT
"

"'-ro d F>.gmR.o.t. Will


C,TS(T
,
.. . _.._-- ._- --
.'
., ,..
,il,"

!,tlh';' I 9
'. . La memoria virtua e 3 5
,

:;t-!rt',"Jr. ,".
'"r", , '," ..
.1" ' .1 'J
.
jl nurnero minima di gruppi di PTE epari a 2(26-12-1) = 2
13
ovvero alIa meta. del
numero di pagine fisiche (2
14
). Essendo ogni singolo PTE eli 8 byte, la tabella delle
..-pagine. occupa 8*. 8* = 524.288 byte oYVero circa 500 kbyte. Si confrontino questi
.. numer! con quelh datI a suo tempo per la PMT.
. La schema della dell'indirizzo ein Figura8.43. Si nati che un a.ccesso
pub portare all'esame di due liste (quando 1a prima non contiene l'elemento cercato).
.
';",: .
\l!!l.o!'1f,ll,,_ ,':
.
'l:"ll {:ii='-" ",
,.-.. "."
,,,.:z.:.; '.. ':' .. J9 40 :)1
.\: .
" ''''''h: "
,', !Jl(;<....
'
1\ ,,,,,.'.

,"
;
I:! ..
'"
\ll1i<,., .'

.-:' "

31 2S 26
o I
- .
V
YPN
Nune.-o dl <RPN)
R C
pp
<20 BIt)
PTEO
I 64 By"tes i
TABELLA DELLE PAGINE (HPJ)

PTEGO I L t:l D Ui' ''-
\lo.lore hQ
Capitolo 8
65Se a. prima. vista. questo risulta.t.o sembra dubbio, in rea.llfl. non 10 e: i progettisti del PowerPC
"consigliano" Questa numero di PTE perche banno ipotizzato che, in medi4, quaUro programmi
diversi possano eondividere la stessa pagina fisica (si veda piu avanti) seuza determinare alcun page
fault,
"':.-f!""
:n"'"
.q '/
"
..
,
"',1 '
,,', '>',
r' . j,l.l,,\llll

';
:.",,,,,,

't,,-- ", ,
,," 7. "
, ."
-,,'j ...,,:' '.
':' "\
:.j, n..
Figura 8.42 Orga.nizzazione della HPT nel PowerPC, Un PTE contiene anche il numero cli'
pagina. fisica (campo RPN)'a cui si riferisce i1 VPN. Ogni riga costituisce una lista di PTE. .. 1,
La lunghezza di una. lista e dunque limitata a 8. All'interno del PTE si trovano ulteriari, .-
campi, dedicati alIa protezione (PP) e aHa Ustoria" (bit R,C), II campo V rappresenta la
validita.''o:l.'.':?J;I"
,

". ,,": .,.;,>\.
"l:'.ll:":"i'J
, .," ",11
.-", ","
,<' ".,S';:
La tabella eorganizzata in gruppi di 8 PTE [lBM94b] [IBM94a]; un PTE occupa
8 byte. La dimensione d.i HPT non evincolata al numero di pagine fisiche; essa eun.
multiplo eli 2, mentre Pindirizzo di partenza della tabella cleve essere multiple della
sua dimensione.
D numero dei gruppi in HPT escelto con il solito compromesso tra quante pagine
virtuali si vuele mappare contemporaneamente e, quanta memoria <'sprecare
lJ
per 1a
HPT. la dimensione minima per la tabella e64 kbyte (2
10
PTE di 64 byte). Viene
consigliato un numero minimo pari alla meta del numero di pagine fisiche: con 1024
pagine fisiche, il numero eli gruppi risulterebbe 512 equivaJenti a 4 PTE per pagina
fisica
65
. In un sistema dotato di 64 Mbyte di memoria centrale e pagine di 4 kbyte,
394
l
\
\
\
(
I
,I
I
\
I
I
\
l
, \

-
- :
-
-
-
-
-
"
-
-
f -
-
-
I-
I-
}-
r-
f
I-
!-
(
t
1--
\ -
I
I, -
3n La memoria .
: ,' : t
,
.:. ".
, -
..
,
"
, "HPT
. '"... '-
i: ':','" f;'TFf? '
,. ,.. f'. "
, 'PfEO
. . I '
26
,
,
,
' ..'
-,
V
VPNA
-
RPN 100

QPe
" ..
.,,",'"'"
..
........ '
"
.1-
f"'" .
r= Ii>-.'


'
:--,'tl,Lll .:,




"f!',' ,,1.

q'
',. ,., . >
"
'
"Ja.. dimensione di tutti i campi: Si..detrmini' quanto:valeil numerp "cgmplessivo, di,bit
- . . .
"" ,.' 'ch' t' 1 aI' , d 1TLB ' ", "" , ' "
'.';:"';".-',' "'_,.: :.",. "'::,; ..
_"71".--,:,:,. ., ' ': ,".; . n.lk:
I
:: ''A'valle dei
.- f("l ,. ,. ,. . 'I" \ ...... <' "'f! .1
1
"1r"'" d' 256kb I'd' 32 b
HCVf'NA)-30 , .. ',- .' .j, '" " , I.. diretta 1 yte e 1 .yte. . . ..". "
H<VPNBf=-SS" .. :.: ", ';.":;r::. ;;, .... ,',.:l'l', ..
,," < : ,. '-' ..', " '" .. ,"'.' ., ,,' :,!; I'; '.'- - ';'.. :; "" .. '. dl, tuttI 1 campi. yale 11 ..
Ii, ','" la reaUzzazione'della :parte TAG;dellaca:che, tenend();..anche. bIt;df"validlta?
::!::::::t::t: .r,,:
.':'I':?,i\l;Il:T.:'! "':r . .., ". .
Bytu , ..';', Eserciz"io.' Un. su'
.,' ,... ,..... -" ..... '.. ,- -', bit:.. pagm'e' SOITo 8R. La 211vellL Per.il. SI:
o I .-- ,"" 3\ :.. 12-bit pili significativi"dell'lDdmzz9. U elemento
... .. .. F1 ..... '.. , J ':.,'::' - ,'.. l' .. della a:).
", ..." la:tabeUa dl 'hvello'supenore con 11 formato assunto-,? b) d.i quant1- blt:e, fatt?
R?N .. 100. . R 0 PP dell'indirizzo virtilale relativ0 ,alIa tabella di livello:'inferiore?" c) 'q''uailt6 e':gr'ande: Hi
.............. ,
." '. .' ; :.. . .. d) avrebbe
Figura 8.44 ... TLB?" , ... .. " , ... , . . .' ." .. '._ .1.\, __
pagina virtuale che genera Pindice. 30, mentre il processo B: genera I'indice a' : ",', ...' ;. . ,. . : . .,.' .'. " ,.. ,.' '. ...: '" , 1. "'.
due gruppi distinti di PTE. I PTE possono .. Mica, Esercizio 8:"'7' Un dati a 32: bit, (D31-DO)" gl1;
..... :... ".:_. .. - ,. di parala (4, byte) sulle di A31-A2. 81 vuole costrwre ,una
'.,. c virtuale pagmat3, con pagme fislche dt 1 kbyte e con tabella delle pagme a 3 lIvelli.
8.11 . " : .. La tabella di prim? Hvello (livello piu alto) contenere 128 la
. ; . , , ; :. ... ,. ..,.... di livello intermedio deve contenere 256 POSIZlOnI. La tabella dl pnmo livello Vlene
Esercizio 8.1 Si supporrga 'cbe lr: PM'r Sla a due hvelh. Sl_considen un SIstema con individuata attraverso il registro RP.
due processi pI e parnre con memoria completamente sgombra e ;-;lq Si disegni la struttura dell'indirizzo virtuale, il formato dei PTE contenuti nelle tabelle
si ipotizzi che a11'a:\rvio di un processq operativo Ie .. ai diversi livelli, il meccanismo eli traduzione degli indirizzi. Si supponga che Ie tabelle
Dopo che i due ha sequenza .del di primo e di secondo Hvello diventino di 512 posizioni. Come cambia la struttura
pagina (si 11 pedice mdlca d, dell'indirizzo.
processo che ha ongihata-ll nfentnent.b): 'i;lf " 'Il. '
21 22 5 ';::f.]i:\, 8.8 8i una con dati a 16 bit a.24 bit.
,'.- ...: .... , ' .... '.. 2, 2, 1 .. " La macchma e dotata dt memOrIa virtuale paglOata e genera rndirizZl virtuah su 30
Ispirandosi .. si tr.acci uno stato bit. Le (fisiche e sono 8 .. La tabella e
memoria e si djsea-n;'la confi@razlOne dal due alben dl traduzlOne. 'I,?.ti: su due lIvelh. La tabella dt secondo hvello e dl 4 kbyte. L mdinzzo della tabella di
, '. " .... - ..}._...R . . . primo Uvello econtenuto nel registro PTM. .
.. presenta Si richiede: il formato dell'indirizzo virtuale, con 1a dimensiane dei differenti campi; il
iildirizzi.:Yu:tu31i ,s\L36_b\t;, (.b) pagin
e
di j6 kbyte; (. c) indinzZI fiSlCI dl 32 bit, Un formato di un elemento della tabella di primo livello, can la dimensione e il significato
elemento dellatabella'delle: pagine deve contenere i seguenti campi riferiti alIa pagina: :li, ;'1. dei differenti campi' il formato di un e1emento della tabella di secondo livello can la
f1; 'r::ii<" e ca.I?Pi; l.a dimensione in byte della tabella di
a'3,.2... '; ' ... .. '. " .':' ,,', ,,;' .,;" '_.:.' ... i : . prnno livello
,
11 numero dl bit mInImO per il reglstro PTM.
Si 'dis,egrindsCheilla-della ttilduzlOuedeg,li mdmzzl;' mdlcandp la'd1lnenslOne cii tuttI \_, 'El,!,
i"'cahlt:5i", esi VaH.iH 'quliiitcf occtlp'i ';1:7, ;:2,';" Esercizio 8.9 Si consideri la memoria virtua1e segmentata della famiglia '86 (per
, '1" '.-; 1.-',"1.'" '.' ,." , "f>... , . :'. , " '+r$ .. .. \ti;,;:'." comodita 8i faccia riferimento al 386 0 at 486).
Eserclz10 .8:3 Splegare ( .dunenSlOnl di .eleme,ntl (8, .,.'1;.t,:: Si in riferimento .alIa segmentazione: la .schematizzazione
32.. ). Posslbtlmente se oe dia una splegazlOne dl carattere probabiltstlco. 81 assuman ,', ,: zamentOj 11 meccanismo dt tradUZIone e 1e tabelle che mtervengono nella traduzlOne
pagine di 4 kbyte e parole di 4 byte. . .I. , dell'indirizzo,
.'... :).>:,',....' ,::., 'J. ';" : .. ';: .: ". ". :'.:- ., ,;'.. !':- :.-: ".... <, "'. . '. Supponendo che all'indirizzo CSO: IPO venga eseguita l'istruzione JMP extraseg, che
'EserclZlo8.4 tit ,8,2:
p
res,ell
ta
,u
n
,TLIlIi: :1't \. 'fa passare alIa poSizione extraseg, di un differente seg,mento (.CSx: lPx), illustrare: 10
due VIe, ..64 .. .0, t 1! stato dei registri di interesse prima e dopo .l'esecuzione dell'iBtrozione; quel che ac-
md1I1ZZQ, .. bJt ..yab.dlta, carle in CPU per effetto delPesecuzione dell'lstruzione nel caso in cui il segmenta che
Si disegni 10 schema del TLB, comprenslVO della parte che 'rIconpsce:J " 'J:"
"'e ..
",:,\\',

"
-
-
f -
-
-
I-
I-
}-
r-
f
I-
!-
(
t
1--
\ -
I
I, -
3n La memoria .
: ,' : t
,
.:. ".
, -
..
,
"
, "HPT
. '"... '-
i: ':','" f;'TFf? '
,. ,.. f'. "
, 'PfEO
. . I '
26
,
,
,
' ..'
-,
V
VPNA
-
RPN 100

QPe
" ..
.,,",'"'"
..
........ '
"
.1-
f"'" .
r= Ii>-.'


'
:--,'tl,Lll .:,




"f!',' ,,1.

q'
',. ,., . >
"
'
"Ja.. dimensione di tutti i campi: Si..detrmini' quanto:valeil numerp "cgmplessivo, di,bit
- . . .
"" ,.' 'ch' t' 1 aI' , d 1TLB ' ", "" , ' "
'.';:"';".-',' "'_,.: :.",. "'::,; ..
_"71".--,:,:,. ., ' ': ,".; . n.lk:
I
:: ''A'valle dei
.- f("l ,. ,. ,. . 'I" \ ...... <' "'f! .1
1
"1r"'" d' 256kb I'd' 32 b
HCVf'NA)-30 , .. ',- .' .j, '" " , I.. diretta 1 yte e 1 .yte. . . ..". "
H<VPNBf=-SS" .. :.: ", ';.":;r::. ;;, .... ,',.:l'l', ..
,," < : ,. '-' ..', " '" .. ,"'.' ., ,,' :,!; I'; '.'- - ';'.. :; "" .. '. dl, tuttI 1 campi. yale 11 ..
Ii, ','" la reaUzzazione'della :parte TAG;dellaca:che, tenend();..anche. bIt;df"validlta?
::!::::::t::t: .r,,:
.':'I':?,i\l;Il:T.:'! "':r . .., ". .
Bytu , ..';', Eserciz"io.' Un. su'
.,' ,... ,..... -" ..... '.. ,- -', bit:.. pagm'e' SOITo 8R. La 211vellL Per.il. SI:
o I .-- ,"" 3\ :.. 12-bit pili significativi"dell'lDdmzz9. U elemento
... .. .. F1 ..... '.. , J ':.,'::' - ,'.. l' .. della a:).
", ..." la:tabeUa dl 'hvello'supenore con 11 formato assunto-,? b) d.i quant1- blt:e, fatt?
R?N .. 100. . R 0 PP dell'indirizzo virtilale relativ0 ,alIa tabella di livello:'inferiore?" c) 'q''uailt6 e':gr'ande: Hi
.............. ,
." '. .' ; :.. . .. d) avrebbe
Figura 8.44 ... TLB?" , ... .. " , ... , . . .' ." .. '._ .1.\, __
pagina virtuale che genera Pindice. 30, mentre il processo B: genera I'indice a' : ",', ...' ;. . ,. . : . .,.' .'. " ,.. ,.' '. ...: '" , 1. "'.
due gruppi distinti di PTE. I PTE possono .. Mica, Esercizio 8:"'7' Un dati a 32: bit, (D31-DO)" gl1;
..... :... ".:_. .. - ,. di parala (4, byte) sulle di A31-A2. 81 vuole costrwre ,una
'.,. c virtuale pagmat3, con pagme fislche dt 1 kbyte e con tabella delle pagme a 3 lIvelli.
8.11 . " : .. La tabella di prim? Hvello (livello piu alto) contenere 128 la
. ; . , , ; :. ... ,. ..,.... di livello intermedio deve contenere 256 POSIZlOnI. La tabella dl pnmo livello Vlene
Esercizio 8.1 Si supporrga 'cbe lr: PM'r Sla a due hvelh. Sl_considen un SIstema con individuata attraverso il registro RP.
due processi pI e parnre con memoria completamente sgombra e ;-;lq Si disegni la struttura dell'indirizzo virtuale, il formato dei PTE contenuti nelle tabelle
si ipotizzi che a11'a:\rvio di un processq operativo Ie .. ai diversi livelli, il meccanismo eli traduzione degli indirizzi. Si supponga che Ie tabelle
Dopo che i due ha sequenza .del di primo e di secondo Hvello diventino di 512 posizioni. Come cambia la struttura
pagina (si 11 pedice mdlca d, dell'indirizzo.
processo che ha ongihata-ll nfentnent.b): 'i;lf " 'Il. '
21 22 5 ';::f.]i:\, 8.8 8i una con dati a 16 bit a.24 bit.
,'.- ...: .... , ' .... '.. 2, 2, 1 .. " La macchma e dotata dt memOrIa virtuale paglOata e genera rndirizZl virtuah su 30
Ispirandosi .. si tr.acci uno stato bit. Le (fisiche e sono 8 .. La tabella e
memoria e si djsea-n;'la confi@razlOne dal due alben dl traduzlOne. 'I,?.ti: su due lIvelh. La tabella dt secondo hvello e dl 4 kbyte. L mdinzzo della tabella di
, '. " .... - ..}._...R . . . primo Uvello econtenuto nel registro PTM. .
.. presenta Si richiede: il formato dell'indirizzo virtuale, con 1a dimensiane dei differenti campi; il
iildirizzi.:Yu:tu31i ,s\L36_b\t;, (.b) pagin
e
di j6 kbyte; (. c) indinzZI fiSlCI dl 32 bit, Un formato di un elemento della tabella di primo livello, can la dimensione e il significato
elemento dellatabella'delle: pagine deve contenere i seguenti campi riferiti alIa pagina: :li, ;'1. dei differenti campi' il formato di un e1emento della tabella di secondo livello can la
f1; 'r::ii<" e ca.I?Pi; l.a dimensione in byte della tabella di
a'3,.2... '; ' ... .. '. " .':' ,,', ,,;' .,;" '_.:.' ... i : . prnno livello
,
11 numero dl bit mInImO per il reglstro PTM.
Si 'dis,egrindsCheilla-della ttilduzlOuedeg,li mdmzzl;' mdlcandp la'd1lnenslOne cii tuttI \_, 'El,!,
i"'cahlt:5i", esi VaH.iH 'quliiitcf occtlp'i ';1:7, ;:2,';" Esercizio 8.9 Si consideri la memoria virtua1e segmentata della famiglia '86 (per
, '1" '.-; 1.-',"1.'" '.' ,." , "f>... , . :'. , " '+r$ .. .. \ti;,;:'." comodita 8i faccia riferimento al 386 0 at 486).
Eserclz10 .8:3 Splegare ( .dunenSlOnl di .eleme,ntl (8, .,.'1;.t,:: Si in riferimento .alIa segmentazione: la .schematizzazione
32.. ). Posslbtlmente se oe dia una splegazlOne dl carattere probabiltstlco. 81 assuman ,', ,: zamentOj 11 meccanismo dt tradUZIone e 1e tabelle che mtervengono nella traduzlOne
pagine di 4 kbyte e parole di 4 byte. . .I. , dell'indirizzo,
.'... :).>:,',....' ,::., 'J. ';" : .. ';: .: ". ". :'.:- ., ,;'.. !':- :.-: ".... <, "'. . '. Supponendo che all'indirizzo CSO: IPO venga eseguita l'istruzione JMP extraseg, che
'EserclZlo8.4 tit ,8,2:
p
res,ell
ta
,u
n
,TLIlIi: :1't \. 'fa passare alIa poSizione extraseg, di un differente seg,mento (.CSx: lPx), illustrare: 10
due VIe, ..64 .. .0, t 1! stato dei registri di interesse prima e dopo .l'esecuzione dell'iBtrozione; quel che ac-
md1I1ZZQ, .. bJt ..yab.dlta, carle in CPU per effetto delPesecuzione dell'lstruzione nel caso in cui il segmenta che
Si disegni 10 schema del TLB, comprenslVO della parte che 'rIconpsce:J " 'J:"
"'e ..
",:,\\',

I
- , I
-
-
-
-
-
"
"

l
I
\
/(
\
I
\
\
,l
, l
I,
\
\
"'1:''''
';1",
,l;:;:..
. .1\.
398 Capitola 8 .
.
. II" -
,: ,'1';[";':'
.
contiene extraseg epresente in memoria; quel che accade in CPU per effetto dell'ese- .v. .' 9
cuzione dell'istruzione nel casa in cui il segmento che gmtiene extraseg non epresente '
in memoria. Per Quest'ultimo caso
,
indicare la modalita secondo cui la logica della I'
CPU 8i a.ccorge del segment-fault. . :. ,
, ,. , .,.,..
Esercizio 8.10 In riferimento al rimpiazzamento delle pagine con tecnica LRU
J
5i La protezione
lin.ei .l'al?oritn:o sistema i bit aggiorna 1a statistica
del rifenmentl, decIde quale pagma sostitUlre, azzera I bIt dl presenza. .
Esercizio 8.11 Si faccia riferimento aHa Figura8.9 e alla sequenza di riferimenti. ivL ...
81 supponga perc che 1 Dume:} dl pagma e 96 S1 mappmo ' ';
ambedue In .5. accade. se l.a terrruna 1.Il 5. a:Ilungata: con,
due elementl presl tra quelli ancora liben (11 6 e 11 7) per Ie due pagme ill questIOne,' .
(8i suggerisce di considerare il caso in cui la posizione 5 entri a far parte dell'altra :' ..... ,
lista rispetto all'attuale e cbe non ci sia una lista che parte cia 5 stesso). .
". .. ,.' ." ",
Esercizio 8.12 In relazione all'Esercizio 8.11, supponendo di considerare il caso in
non si ha ovvero. che ci pagine. fisiche disponibili .
51 metta a punto una tecmca eli gestlOne delle liste cbe eVIti mconsJstenze. '.
; . " ,
. "i'i' - "',
' ',';
.
'"1 .', i ,.v, .J .. '. . . . . . . .
lJ;I a concorrentI. e che ,gh .In
molto schematlcl: del rpeccamsUll per .1llipedlre "
che un dato processo .acceda 10 m?do mcontrollat.o alio SpazlO d.i d.i un altro
':':'::W"i", . processo. Per esemplo, non deve essere consent1to che un processo scnva nell' area
- dati di un secondo 0 peggio aucora the scriva in una zona di memoria in cui risiede il
codice 'eseguito da un altro. Si puo immaginare che ogni processo operi in un proprio
spaz.
io
virtuale degli e separato.da .queUo processi. Can 1a
gestlone della memona V-Irtuale 51 mappa 10 SpazlO vrrtuale dl Clascun processo neUo
spazio fisico di memoria disponibile.
. ,:'" In generale la g:stione della :ientra i compiti .
. '; NelPespletamento d1 questa funZlOne esso 5J appoggla sulle funzlOnahta cbe 1a loglca
/- di CPU rende di5ponibili.
.Nel caso x86 (a partire dal 28.6 in avanti) di CPl!
';:&:,:. formsce un efficace e sofistIcato supporto per 1a protezlOne e per gestlOne del process!.
Non si commette errore 5e si afferma che Ie soluzioni adottate in questa architettura
sono quanta di piu raffinato sia stato proposto a livello industriale. Per questa motivo,
; che segue la protezione e 1a .gestione
rifenmento all'architettura x86, Vengono pruna amphatI alcum concettJ relativi al
descrittori gia introdotti nel capitolo dedicato aHa memoria virtuale. Prima di passare
della protezlOne Vlene fa:tto un .rapldo a:ccenno alla trattazlOne delle
... mterrUZlODl ill modo prQtetto e alIa gestlOne del process1-
Ii!1C\.)..
',.;,.,W;., .
.. ." . ' '.,.
,- -
," " ..
., $"""io
9.1 La protezione nei sistemi Intel
.
,::i1\t1 9uando.la CPU in modo protetto i rneccanismi di protezione operano sia a
>{- hvello dJ segmentl che di pagine, n modo protetto corrisponde in buona sostanza a
.' ,r}) " , :._
,of.' 1Hl._,.
, '; 't<c:
;$;',
:' IS'&{ .r"
I
- , I
-
-
-
-
-
"
"

l
I
\
/(
\
I
\
\
,l
, l
I,
\
\
"'1:''''
';1",
,l;:;:..
. .1\.
398 Capitola 8 .
.
. II" -
,: ,'1';[";':'
.
contiene extraseg epresente in memoria; quel che accade in CPU per effetto dell'ese- .v. .' 9
cuzione dell'istruzione nel casa in cui il segmento che gmtiene extraseg non epresente '
in memoria. Per Quest'ultimo caso
,
indicare la modalita secondo cui la logica della I'
CPU 8i a.ccorge del segment-fault. . :. ,
, ,. , .,.,..
Esercizio 8.10 In riferimento al rimpiazzamento delle pagine con tecnica LRU
J
5i La protezione
lin.ei .l'al?oritn:o sistema i bit aggiorna 1a statistica
del rifenmentl, decIde quale pagma sostitUlre, azzera I bIt dl presenza. .
Esercizio 8.11 Si faccia riferimento aHa Figura8.9 e alla sequenza di riferimenti. ivL ...
81 supponga perc che 1 Dume:} dl pagma e 96 S1 mappmo ' ';
ambedue In .5. accade. se l.a terrruna 1.Il 5. a:Ilungata: con,
due elementl presl tra quelli ancora liben (11 6 e 11 7) per Ie due pagme ill questIOne,' .
(8i suggerisce di considerare il caso in cui la posizione 5 entri a far parte dell'altra :' ..... ,
lista rispetto all'attuale e cbe non ci sia una lista che parte cia 5 stesso). .
". .. ,.' ." ",
Esercizio 8.12 In relazione all'Esercizio 8.11, supponendo di considerare il caso in
non si ha ovvero. che ci pagine. fisiche disponibili .
51 metta a punto una tecmca eli gestlOne delle liste cbe eVIti mconsJstenze. '.
; . " ,
. "i'i' - "',
' ',';
.
'"1 .', i ,.v, .J .. '. . . . . . . .
lJ;I a concorrentI. e che ,gh .In
molto schematlcl: del rpeccamsUll per .1llipedlre "
che un dato processo .acceda 10 m?do mcontrollat.o alio SpazlO d.i d.i un altro
':':'::W"i", . processo. Per esemplo, non deve essere consent1to che un processo scnva nell' area
- dati di un secondo 0 peggio aucora the scriva in una zona di memoria in cui risiede il
codice 'eseguito da un altro. Si puo immaginare che ogni processo operi in un proprio
spaz.
io
virtuale degli e separato.da .queUo processi. Can 1a
gestlone della memona V-Irtuale 51 mappa 10 SpazlO vrrtuale dl Clascun processo neUo
spazio fisico di memoria disponibile.
. ,:'" In generale la g:stione della :ientra i compiti .
. '; NelPespletamento d1 questa funZlOne esso 5J appoggla sulle funzlOnahta cbe 1a loglca
/- di CPU rende di5ponibili.
.Nel caso x86 (a partire dal 28.6 in avanti) di CPl!
';:&:,:. formsce un efficace e sofistIcato supporto per 1a protezlOne e per gestlOne del process!.
Non si commette errore 5e si afferma che Ie soluzioni adottate in questa architettura
sono quanta di piu raffinato sia stato proposto a livello industriale. Per questa motivo,
; che segue la protezione e 1a .gestione
rifenmento all'architettura x86, Vengono pruna amphatI alcum concettJ relativi al
descrittori gia introdotti nel capitolo dedicato aHa memoria virtuale. Prima di passare
della protezlOne Vlene fa:tto un .rapldo a:ccenno alla trattazlOne delle
... mterrUZlODl ill modo prQtetto e alIa gestlOne del process1-
Ii!1C\.)..
',.;,.,W;., .
.. ." . ' '.,.
,- -
," " ..
., $"""io
9.1 La protezione nei sistemi Intel
.
,::i1\t1 9uando.la CPU in modo protetto i rneccanismi di protezione operano sia a
>{- hvello dJ segmentl che di pagine, n modo protetto corrisponde in buona sostanza a
.' ,r}) " , :._
,of.' 1Hl._,.
, '; 't<c:
;$;',
:' IS'&{ .r"
-
-

-
.
"
-
-
-
-
-

I-
I
I"
t -
I-
I

r -
I
401 La pt:Qtezio;ne
2Quando si parla di segmenti dati si intende ricomprendervi anche i segmenti d1 stack.
9.2.1 Desctittori di seg'ffiE!llti di codice e di datj.{S=l)
I ..... " r. '.,
, .. ,: .'. "",1 :." '. ,. '1':, 'C! .": "';.,.:\'11... " : ..r..
", ," .... " " .. "'"
del 'byteARB e riport'aloin Figura AS!. e ,gjaparlat6 ill
Capitola sulla memoria virtuale. . ... , . . ", . "
Capitolo 9
lUna volta abiLitati i meccanisnli protezione o.onpossono ess,ere Ijisabilitati (nqn c'eimodo
riporta.re PG a 0, mentre PE pub: e:ssere: cib' ha.; i'effeitd' iii =rjp0na.re fa fnaechirta
r
in
modo reale, facendola funzionare come un 8086. Si veda il capitolo dedicato a1l'architettura Intel).
C'e 1<;1 p,i a. i. iI
privilegio Ore iIi patina: (portando'a: O:i1 oit WP di 'CRO'e 1 i 'bit 0/5 e RjyJ'nei'PTE
dell'e .pagine ad' ambedue i' liv'eUj} (Figuta;8.39). , ':i '. :,,' .. ' .' ': .' -: . :.,:',: ,! i .1,; !:'.I\ ':; ,
m
l
:-"
,
....
!l\;tX.;
.
"I;
... - .
-", "
' .


,,:', ,W"
II ,. , .,
il'''''''
,.. .
,
l ... '
che rende attuale 1a gestione della, memoria Come. detto in altre _ I descrittori oecup'Mo sempre 8 byte (nel 286 due bYte non sana usati). I for-
libro, alPatto della messa sotto tenslOne 1a macchma esegue ill modo reale, elOe 'mati sono diversi a secoJ:!,da. deU'entita La :p.atura delPentita e, quindi
,
del
come se fosse un 8086 (fatte le.ovvie differenze aHe misure d:i registri. -descrittore by1;e
ecc.) e la gestione della memona vlrtuale e della protezlone a essa assoclata sono it contenuto di ARB solo per quanto era rilevante ai fini della gestione della segrrien-
a1 modo protetto si ottiene semplicemente portando a 1 it tazione della memoria virtuale. Lo studio dei meccaIDsmi di protezione richiede che
bit .. .. .. si entri nel dettagli? dena struttura d.i Cia sara fatto,nella segue.
segmentl. II meccamsmo di protezlOne di pagma vlene ablhtato solo se eablhtata la ... La struttura di ARB ealquanto mtncata
,
anche perche alcum campi non hanna
paginazione e cio si ottiene portando a 1il bit PG del medesimo registro OROI. ...:. significato ela IOIio,ir),terpretazione dipende:da,altri Campi
Quando SODa attivi i meccanismi di protezione, ogni accesso alla memoria viene signif1caoo. univoco sono Lcampi.:ppL. e:.S. (Figura.9.1).. lh:ampo.P, (Bit) 'ha
controllato al fine di garantire che esso non viola Ie regole protezione. I controlli significato(quasi'univoco..:' , ":: ;". ,::', '.".' .".:" ': 'j'.' _':.:
vengono.eseguiti che inizi il ?iclo di memoria e,. in caso.di violaziqne.del.le ',::,: .. :':', ;'/" I.;"" " J'!";. ..... . .. .::." :" ,:.:; ...... ,.:
regole dl SI genera .. !l oVVlamente In 7 4. 0' ". '1/ ,.\',' " ,- ."':,
parallelo nspetto aUa traduzlone dellmdlrlZZO e qwndl non produce penahzzazlOne GDfL! . .
nelle prestazioni della CPU. . . .. '; .': i'. ' ... ' ;r' <
Prima di poter passare a descrivere i di enecessario 9.1 del byte ARB. I campi'DPL e.S P
profondire il di nel ca?ltolo dedlcato alia i: ha. dl prcse.nt:/non per S . ovvero dl
virtuale era relatlvo solo al segment! dl meI11ona. L'archltettura Intel prevede un altra :."c ?,!Hf:::'.:':. p,er "S.,...O.. , .. bit lQ, .. ..... ,:' "-,- ,"
classe di descrittori, quelli relativi a Uoggetti" di sistema, la cui c?mprensione ene.ces- . ;:', ;,_!. .,' ' ; ..' ;' -<" I,. '. ,1:--, ". ., 'I' _. .. '
saria ai fini della comprensione dei meccanismi di protezione. E questa I'occaslOne "':''''', "!. , " .:. !'. ., " :,. '. ,
per riesaminare il.meccanismo alle e. al1.e .;1-: .,," ,,;, ",',' -', .' I .'''' .':.
ti nel ,;U ..dl .. d,l '.. ,. ... <'
\" m, ' ,,f,. n CatrtPO PE!e(Descrjp,tor Level) (b1,t 5-6) ,PUo.""sllIDere qpattrovalori
tap,ella del vettop dl ill, {issa, a: RfU:tI.re :/i,{'. " . ,rhe rappfesentan
o
i diritti. di aWentita descriita . ,
Q !'Ii memoria,' Nej, "1"('. ,y ."" " ," ,',,',',",' ,',;
Jpterrji.i.orl:, II S (System) (bit 4), discrimina i descrittori in grandi classij piu
, :", preclsamente: " : . ' . ' ..:., ,1 ";, ,.
I? alta; <iTI ,task.. : SJ d}, . .. ':'.. '. .', ',. "',; ;
I' archltettura' Intel gestlsce automatlcamente la commutaz)one tra proe,essl, "'.:'.'... s ':0 'd .:,' Ott'> '. d '.. '. t' d',- t '1. --I ,' . 't't- ,'. '. "d;; rt"" '. "
,.,' ,.,. I" '. ,,,,,' :"',." ',.'!, ' " - =: on 1 segt:P;en I I SIS ema e.uescn on I po e.
e ri pristinando Ie informazioni 91. sta,to.. La. geJ?tlOoe natdW4Ie del dnfenta, " ", ;';.'. '<: ;"., " : .'" :',.' ,.'.: :.',.," .> ',': ,'. " ;, :.. '. :i. ' .. , .,'. ". ,(
...1:;.' ',;1. :,'" '.' :.' :'.';': ".-, :':>.: ;;".:,,' . n (?it 7) ha quasi senso. che eli
;;"",;,,,.,,,,, I ;:r Nel
. '. :". . I.: .. ,. , " .1,:,:. ;:.:: (S .1).,
9.2 T descriUori e' la' lo;rofunzlOne ' ,'. " '." .,"'" \J:'. memOrIa
,,_.. ,,- .': I', ,:l: I .. "", _'!' .. : "., :_" .' I) ., '\'.',' ", ',', . , . . ,\1". '." ::: ,,', . ','., "_.;;:"
e, .. '. JnqltFe
,
: @ per le due classi di descrittori individuate da S. .
,<;h!3.. glOCQ ";?;\fr".;; , . _ _ _, _ ,
dipassaggiodelcontrollo. :"':,)'" !.," ",.,' :,1... ,.":, f",;" -
400
-
-

-
.
"
-
-
-
-
-

I-
I
I"
t -
I-
I

r -
I
401 La pt:Qtezio;ne
2Quando si parla di segmenti dati si intende ricomprendervi anche i segmenti d1 stack.
9.2.1 Desctittori di seg'ffiE!llti di codice e di datj.{S=l)
I ..... " r. '.,
, .. ,: .'. "",1 :." '. ,. '1':, 'C! .": "';.,.:\'11... " : ..r..
", ," .... " " .. "'"
del 'byteARB e riport'aloin Figura AS!. e ,gjaparlat6 ill
Capitola sulla memoria virtuale. . ... , . . ", . "
Capitolo 9
lUna volta abiLitati i meccanisnli protezione o.onpossono ess,ere Ijisabilitati (nqn c'eimodo
riporta.re PG a 0, mentre PE pub: e:ssere: cib' ha.; i'effeitd' iii =rjp0na.re fa fnaechirta
r
in
modo reale, facendola funzionare come un 8086. Si veda il capitolo dedicato a1l'architettura Intel).
C'e 1<;1 p,i a. i. iI
privilegio Ore iIi patina: (portando'a: O:i1 oit WP di 'CRO'e 1 i 'bit 0/5 e RjyJ'nei'PTE
dell'e .pagine ad' ambedue i' liv'eUj} (Figuta;8.39). , ':i '. :,,' .. ' .' ': .' -: . :.,:',: ,! i .1,; !:'.I\ ':; ,
m
l
:-"
,
....
!l\;tX.;
.
"I;
... - .
-", "
' .


,,:', ,W"
II ,. , .,
il'''''''
,.. .
,
l ... '
che rende attuale 1a gestione della, memoria Come. detto in altre _ I descrittori oecup'Mo sempre 8 byte (nel 286 due bYte non sana usati). I for-
libro, alPatto della messa sotto tenslOne 1a macchma esegue ill modo reale, elOe 'mati sono diversi a secoJ:!,da. deU'entita La :p.atura delPentita e, quindi
,
del
come se fosse un 8086 (fatte le.ovvie differenze aHe misure d:i registri. -descrittore by1;e
ecc.) e la gestione della memona vlrtuale e della protezlone a essa assoclata sono it contenuto di ARB solo per quanto era rilevante ai fini della gestione della segrrien-
a1 modo protetto si ottiene semplicemente portando a 1 it tazione della memoria virtuale. Lo studio dei meccaIDsmi di protezione richiede che
bit .. .. .. si entri nel dettagli? dena struttura d.i Cia sara fatto,nella segue.
segmentl. II meccamsmo di protezlOne di pagma vlene ablhtato solo se eablhtata la ... La struttura di ARB ealquanto mtncata
,
anche perche alcum campi non hanna
paginazione e cio si ottiene portando a 1il bit PG del medesimo registro OROI. ...:. significato ela IOIio,ir),terpretazione dipende:da,altri Campi
Quando SODa attivi i meccanismi di protezione, ogni accesso alla memoria viene signif1caoo. univoco sono Lcampi.:ppL. e:.S. (Figura.9.1).. lh:ampo.P, (Bit) 'ha
controllato al fine di garantire che esso non viola Ie regole protezione. I controlli significato(quasi'univoco..:' , ":: ;". ,::', '.".' .".:" ': 'j'.' _':.:
vengono.eseguiti che inizi il ?iclo di memoria e,. in caso.di violaziqne.del.le ',::,: .. :':', ;'/" I.;"" " J'!";. ..... . .. .::." :" ,:.:; ...... ,.:
regole dl SI genera .. !l oVVlamente In 7 4. 0' ". '1/ ,.\',' " ,- ."':,
parallelo nspetto aUa traduzlone dellmdlrlZZO e qwndl non produce penahzzazlOne GDfL! . .
nelle prestazioni della CPU. . . .. '; .': i'. ' ... ' ;r' <
Prima di poter passare a descrivere i di enecessario 9.1 del byte ARB. I campi'DPL e.S P
profondire il di nel ca?ltolo dedlcato alia i: ha. dl prcse.nt:/non per S . ovvero dl
virtuale era relatlvo solo al segment! dl meI11ona. L'archltettura Intel prevede un altra :."c ?,!Hf:::'.:':. p,er "S.,...O.. , .. bit lQ, .. ..... ,:' "-,- ,"
classe di descrittori, quelli relativi a Uoggetti" di sistema, la cui c?mprensione ene.ces- . ;:', ;,_!. .,' ' ; ..' ;' -<" I,. '. ,1:--, ". ., 'I' _. .. '
saria ai fini della comprensione dei meccanismi di protezione. E questa I'occaslOne "':''''', "!. , " .:. !'. ., " :,. '. ,
per riesaminare il.meccanismo alle e. al1.e .;1-: .,," ,,;, ",',' -', .' I .'''' .':.
ti nel ,;U ..dl .. d,l '.. ,. ... <'
\" m, ' ,,f,. n CatrtPO PE!e(Descrjp,tor Level) (b1,t 5-6) ,PUo.""sllIDere qpattrovalori
tap,ella del vettop dl ill, {issa, a: RfU:tI.re :/i,{'. " . ,rhe rappfesentan
o
i diritti. di aWentita descriita . ,
Q !'Ii memoria,' Nej, "1"('. ,y ."" " ," ,',,',',",' ,',;
Jpterrji.i.orl:, II S (System) (bit 4), discrimina i descrittori in grandi classij piu
, :", preclsamente: " : . ' . ' ..:., ,1 ";, ,.
I? alta; <iTI ,task.. : SJ d}, . .. ':'.. '. .', ',. "',; ;
I' archltettura' Intel gestlsce automatlcamente la commutaz)one tra proe,essl, "'.:'.'... s ':0 'd .:,' Ott'> '. d '.. '. t' d',- t '1. --I ,' . 't't- ,'. '. "d;; rt"" '. "
,.,' ,.,. I" '. ,,,,,' :"',." ',.'!, ' " - =: on 1 segt:P;en I I SIS ema e.uescn on I po e.
e ri pristinando Ie informazioni 91. sta,to.. La. geJ?tlOoe natdW4Ie del dnfenta, " ", ;';.'. '<: ;"., " : .'" :',.' ,.'.: :.',.," .> ',': ,'. " ;, :.. '. :i. ' .. , .,'. ". ,(
...1:;.' ',;1. :,'" '.' :.' :'.';': ".-, :':>.: ;;".:,,' . n (?it 7) ha quasi senso. che eli
;;"",;,,,.,,,,, I ;:r Nel
. '. :". . I.: .. ,. , " .1,:,:. ;:.:: (S .1).,
9.2 T descriUori e' la' lo;rofunzlOne ' ,'. " '." .,"'" \J:'. memOrIa
,,_.. ,,- .': I', ,:l: I .. "", _'!' .. : "., :_" .' I) ., '\'.',' ", ',', . , . . ,\1". '." ::: ,,', . ','., "_.;;:"
e, .. '. JnqltFe
,
: @ per le due classi di descrittori individuate da S. .
,<;h!3.. glOCQ ";?;\fr".;; , . _ _ _, _ ,
dipassaggiodelcontrollo. :"':,)'" !.," ",.,' :,1... ,.":, f",;" -
400
-
, \
\
Figura 9.2
-
I
-
I
,
402 Capitola 9

o NOD usato
1 Segmento di state di task (TSS) dispocibile (a 16 bit)
2 Tavola (segmento) dei descrittori locale (LDT)
.
3 Segmento di ,tato di task (TSS) occupato (a 16 bit)
4 Porta di chiamata (a 16 bit)
5 Porta di proceaso
6 Porta di interruzione (a 16 bit)
7 Porta di trappola (a 16 bit)
8 Riservato
9 . Segmento di ,tato di task (TSS) di,pocibile (a 32 bit)
10 Riservato
11 Segmento di stato di task (TSS) occupato (a 32 bit)
12 Porta di chiamata (a 32 bit)
13 Riservato
14
Porta di interruzione (a 32 bit)
15 Porta di trappola (a 32 bit)
3Si ricordi che Ie maccbine successive al 286 possono operare a 32 0 16 bit.
4 Si tenga conto che i segmenti di sistema devono essere aempre presenti nella memoria fisica, dato
che sono ,manipolati direttamente dallalogica di CPU,
."
,
La protezione 403
Tabella 9.1 Codifica del campo TYPE del byte ARB per i descrittori di sistema.
IP IDfLI 0 I I
Figura 9.4 Formato del byte ARB per.j descrittori eli sistema.
Nel caso dei descrittori di sistemail formate di ARB diventa queUo d.i Figura 9.4.
Come si vede il campo TYPE eora di 4bit. La Tabella9.! elenca i possibili descrittori.
Quelli a 16 bit sono per compatibilitA col 286
3
. Nel seguito faremo implicitamente
riferimento a descrittori per macchine a 32 bit (per esempio, si faccia riferimento a
[Int93]).
Essenzialmente ci souo due categorie di descrittori, quelli che descrivono un ef-
fettivo segmento di sistema (LDT 0 TSS) e quelli che rappresentano Ie cosiddette
porte. Per entrambi i tipi d.i descrittori di sistema, se il bit P vale 0 il'segmento viene
considerato non valido e ogni accesso provoca'l'eccezione 11 4.
9.2.2 Descrittori di sistema (5=0)
!E=O!ED I w I
IE= 11 c I R I
IpjDfLI I jAI
Formato del byte.ARB per i di codice e di dati (e stack).
SEGMENT] DATI (E=O)
Gli altri due bit vengono indicati come WeED.
R - Permesso eli lettura. Se questo bit edisasserito
1
il relativo segmento di
codice pub essere eseguito, rna non letto. Si noti che non e consentita 1a
scrittura in un segmento di codice; ogni tentativo di scrittura in un segmen-
to di codice detemUn3 l'eccezione 0.13 (eccezione di generica violazione di
protezione) .
C - Bit di conformita. Stabilisce se un segmento puo essere condiviso da
programmi situati a livelli di privilegio diversi da DPL (si veda. piu avanti).
W - Bit eli autorizzazione alIa. scrittura. Se asserito ebe e consentito
modificare il contenuto del segmentoj in casa contraria econsentita la sola
Iettura. .
ED - Expansion Direction. Indicatore della direzione di espansione. Solita
mente un segmento da.ti cresce verso indirizzi piil alti, mentre un segmento
stack cresce all'opposto. Se ED=O la direzione di espansione everso gli in-
dirizzi piu alti; in questo caso 13 componente scostamento cleiPindirizzo cleve
essere minore 0 uguale al LIMITE del segmento. In caso contrario (ED=l)
10 scostamento deve easere superiore al LIMITE del segmento.
,
SEGMENT] Dl COD]CE (E=1)
Gli altri due bit vengono indicati come R e C.
Figura 9.3 Interpretazione del campo TYPE per scgmenti codice e dati. Per i segmenti
eseguibili (E=l), gli attri due bit sono indicati come R e Cj per i segmenti .non eseguibili
(E:::::O), gli altri due bit sono indicati come ED e W.
n campo TYPE (3 bit) identifica 1a natura del segmento e ie operazioni consen-
tite. Piil precisamente 1a natura del segmento edeterminata da! bit E. I segmenti
di codice (segmenti eseguibili) hanno E=l, mentre i segmenti dati presentano E=O.
L'interpretazione degli altri due bit del campo TYPE dipende dal valore di E, come
schematizzato in Figura9.3.
j
I
[
(
!

I
\
1
J
I
I

.
-
-

-
-
, \
\
Figura 9.2
-
I
-
I
,
402 Capitola 9

o NOD usato
1 Segmento di state di task (TSS) dispocibile (a 16 bit)
2 Tavola (segmento) dei descrittori locale (LDT)
.
3 Segmento di ,tato di task (TSS) occupato (a 16 bit)
4 Porta di chiamata (a 16 bit)
5 Porta di proceaso
6 Porta di interruzione (a 16 bit)
7 Porta di trappola (a 16 bit)
8 Riservato
9 . Segmento di ,tato di task (TSS) di,pocibile (a 32 bit)
10 Riservato
11 Segmento di stato di task (TSS) occupato (a 32 bit)
12 Porta di chiamata (a 32 bit)
13 Riservato
14
Porta di interruzione (a 32 bit)
15 Porta di trappola (a 32 bit)
3Si ricordi che Ie maccbine successive al 286 possono operare a 32 0 16 bit.
4 Si tenga conto che i segmenti di sistema devono essere aempre presenti nella memoria fisica, dato
che sono ,manipolati direttamente dallalogica di CPU,
."
,
La protezione 403
Tabella 9.1 Codifica del campo TYPE del byte ARB per i descrittori di sistema.
IP IDfLI 0 I I
Figura 9.4 Formato del byte ARB per.j descrittori eli sistema.
Nel caso dei descrittori di sistemail formate di ARB diventa queUo d.i Figura 9.4.
Come si vede il campo TYPE eora di 4bit. La Tabella9.! elenca i possibili descrittori.
Quelli a 16 bit sono per compatibilitA col 286
3
. Nel seguito faremo implicitamente
riferimento a descrittori per macchine a 32 bit (per esempio, si faccia riferimento a
[Int93]).
Essenzialmente ci souo due categorie di descrittori, quelli che descrivono un ef-
fettivo segmento di sistema (LDT 0 TSS) e quelli che rappresentano Ie cosiddette
porte. Per entrambi i tipi d.i descrittori di sistema, se il bit P vale 0 il'segmento viene
considerato non valido e ogni accesso provoca'l'eccezione 11 4.
9.2.2 Descrittori di sistema (5=0)
!E=O!ED I w I
IE= 11 c I R I
IpjDfLI I jAI
Formato del byte.ARB per i di codice e di dati (e stack).
SEGMENT] DATI (E=O)
Gli altri due bit vengono indicati come WeED.
R - Permesso eli lettura. Se questo bit edisasserito
1
il relativo segmento di
codice pub essere eseguito, rna non letto. Si noti che non e consentita 1a
scrittura in un segmento di codice; ogni tentativo di scrittura in un segmen-
to di codice detemUn3 l'eccezione 0.13 (eccezione di generica violazione di
protezione) .
C - Bit di conformita. Stabilisce se un segmento puo essere condiviso da
programmi situati a livelli di privilegio diversi da DPL (si veda. piu avanti).
W - Bit eli autorizzazione alIa. scrittura. Se asserito ebe e consentito
modificare il contenuto del segmentoj in casa contraria econsentita la sola
Iettura. .
ED - Expansion Direction. Indicatore della direzione di espansione. Solita
mente un segmento da.ti cresce verso indirizzi piil alti, mentre un segmento
stack cresce all'opposto. Se ED=O la direzione di espansione everso gli in-
dirizzi piu alti; in questo caso 13 componente scostamento cleiPindirizzo cleve
essere minore 0 uguale al LIMITE del segmento. In caso contrario (ED=l)
10 scostamento deve easere superiore al LIMITE del segmento.
,
SEGMENT] Dl COD]CE (E=1)
Gli altri due bit vengono indicati come R e C.
Figura 9.3 Interpretazione del campo TYPE per scgmenti codice e dati. Per i segmenti
eseguibili (E=l), gli attri due bit sono indicati come R e Cj per i segmenti .non eseguibili
(E:::::O), gli altri due bit sono indicati come ED e W.
n campo TYPE (3 bit) identifica 1a natura del segmento e ie operazioni consen-
tite. Piil precisamente 1a natura del segmento edeterminata da! bit E. I segmenti
di codice (segmenti eseguibili) hanno E=l, mentre i segmenti dati presentano E=O.
L'interpretazione degli altri due bit del campo TYPE dipende dal valore di E, come
schematizzato in Figura9.3.
j
I
[
(
!

I
\
1
J
I
I

.
-
-

-
-
-

-
-
-
\ .
-
-
--
I
I-
I-
I-
I
J-
,
r..
1-
)--
f_.
1--
.
,.
..
., .-
.
'; .

. ,
'. . .
. ", "
..
I '"
. ,
" ..
..
..
. ..
.,
,
,
. , .
.,,, .
.
, ,e, .,
ral;lelia 9:2' i.i-lcune *86.
.. I,...... , .....,
.,
, " ... '
...
Porte di trllppola
Porta di interr-udone
. dl ehlamala
,
1;
Offset. (15:0)
"
, ,
'.,"
'.
"
3' 311
311 3tl, 31
.."
ARB S.l"!. ,'.,m.
.,
.,
Capitato 9
Otbet (:31:16)
"
"
--
_.
Offset (31:16) ARB DWe Selett. Sej(m. Off.!ieC (l
.'
..

.. ... ., ...., .;-.' ,:,:.,', '.,
, '.' , ..
83 47 3U 311I 31 'II ','. ". IT'
.wa:
..
Figura 9.5 FOl'm'atQ' delle parle' {386' e:.succesaivi)., Ije, partij.tra.tteggiate varina ignorate.
,', i .. ,::,j" .';-'- '.-:.' ',i'.; .. ' ,. :,,,:,.]',1'. ,'"
. '. '
" '
Le porte di chiamata vengono usate ,w c:eintrollo effettuati tramite
l'istruzione CALL. Esse preved6hO"i un 'campo(DWC) iinpie'gato come :contatore del
numero di parole che 130 logica ddl:a: CPU' d-eve 'copiarei'autdIriaticamente dallo stack
della procedura chiamante alia stack chiamato
5
. ,.:". ; '. :" : -.
Le porte e"di 'trapp61avengon6 usate'pef'll saito ai sottoprograrnmi
di interruzione. 'J' ;.:';: .,'
Le potte' di' proeessO' servono per- la. iprocessi. : La porta di
processo, oItre ad ARB, contiene solo descrittore del TSS
del processo indirizzato, Un descrittore di TSS deVe"obbligatoriameilte risiedere in
GDT. ..; '.... ',;: ..... f:; ,:'; . :!
,,.if:... :.
., ...
. ,.jP':':'
-:';!\ ,
.,;,- , '
:-..jtl . :. "
'-' . 1'o,L',-,
. '"! r, La protezione 405
.
",'i:llt, ':: -

"">.:;11
Di LDT si eparlato al paragraio.sulla:lilemoria'virtuale:del.286; di.'tSS..edel di a.lcunUermini. '.. . .... .....
descrittore si parla al Paragrafo 9.4.1. Qui di seguito vengono presentati i nell'accezione generale del 'Un
formatl dee,porte. ! _.: ..:: to lflt'errompe,.la .I;l.om.pale :eseCUZlOD,e. del. programma.. IIi: 'Sens,o pi,!:' l'1S.tretto,
;. . : ' " . ' : . .' '. :' '. ; .. : . ." J ". Uf!.r
vento
da
Le po:rte Le .. son9, ,degli speclali.. desqlttOI:I dt. If. scopo eguello '{;:,'fJCrl; .,! :.'..Un. ecceZlone emvece ,1.!-:n evento 'smerona:, cornspondente,aI verificarsl di 'certe
. il .. : un '. .cli. 'Un. di:
mdlrlzzamento mdlretto (tramIte il selettore cbe punta a. un descnttore nella .qo.vuta : ".::;;r. deterrp.mata: da .un page-joult,.oidal tentatrvo dF :esegwre.come Dp-eraztoneun rodice
.. ,", ..
.erU l,<;optrolh CiI verrannQ . dar processore, qualLrCOndiZ10D1: anomale -di : .nloro.
pili avanti, opp.ot'tuna.. ' ',. '. ' .' " .. : ' :'. "'.; .. Ol cli, sistema deputati al
q)"?i .. :,}jt ..
(3) dl trappola; (4) dl processo. IT formato delle porte enportatd lD Figura g:5. 1. l'ecce'''one pl;ojJtarn,
dLfferenZlaZlOne edata attraverso il campo TYPE dl ARB, come da Tabella 9,1. .':; 'i.f/ rna che pU0 'avere di
. ; ... .' ',.Jr;-. za temparale con 1 programrru. In questa senso Ie coslddette mterruzlOID software,
G :it : :IijT, .vapno
;,1. "'!.i'" t" .
.. ... ,1' . programma e
,''Ii:Y,:':\'',''.
. .... ' ..... ', .. '.,
",,,., ';"',' .. " .. ' , ' " "
,.' I.'.' . ,,>' .. '. " ......'., ,'.
.... '" .
.,,' ." ...
9.3.1 La tabella dei descrittori di interruzione
,'" .
v:;"",','' ,;,;;;.',. ,1..' :':" .. "'i ':"., .. :,.,.," ...\.'
.1, n di in 'modO' pr'otetto, e
l
funzio-
namento 10 modo reale [Int931. .'" ", " '., .... '.
.una IDT Table),
._ '." dl. mte:,FuzIone: I .descntton cJ;te rou-
I. .. tIDe. dr ,serVlZIO d-elle. .ogtll-' mterrUZIone 'usata 'dal' sistema' .. deve avere il
descnttore 10 IDT. . ""- ,:.
.'" x 86 prevede fino a .di 256 I primi 32
. t?n. In Tabella;9..2
. . nporta II cdl: pnme ,3'2 : Se Sl l}jnterl'u-
;':/;: ZlOne NM! S?rtO come eccezlODl: P.er e pe:
. una..9-esonzlOne det:t;agllata del.slgruficato'.delle
del'C0Struttore {lnt93t-: .. , j' ." '. " ,_ I ,:' " ,;' ' .: .-' ' .....
_...."',' ',4. .'
,;,'':1:1.:1 ,;'.' ., ,,' . ,
,":01i;1.. t:" '.",' ._.': .,' :!, ,; ... , .... ," /.. " ;: .. >f. ".' .,: '".,
...:.'i:"" ., ' , , .,' . . ., .. . . . .. .' .
,'r, i\ i' .""'" ".. ',. , .. ,'. " ,,:',
-:"J,' '1':""","" N V n' .
;I&;'f!c": >,' .', ' .. ,i, .ettare .... . '" .... ""'. ;'. ',,- .... :.
.,... .,,,. 0 IT... 0
.. ,', i'"' ., i'. '. ., .. '1:-L>IYlSlone.p'er/ ,..' .': ".'
.",.'. "". . '. ". '.' b'" . '. ". '.- .,
':; '.. ..1 .. , De ugger., .' , . '..'
. .i ',:, ,..... J.. 6' ' Codice '1. .. .... .,'. ,.'
' 10 TSS non valido
11 Segmento non
9.3 Trattamento dellei'nterruzioni'in modo , , ),2 Vi
o
lazione lim,iti stack
' ,k&\i' . . . 13 ,VlOlazlOne protezlone
Prima di a della protezione occo.rre spen.dere t.ratta- . '", ." , da non usare)
mento delle mterrUZlOlll ill modo protetto. Convlene anzltutto [lchiamare.l slgmficato :.: Ig11L': ...,.'., . ..... .' . .
" 'I.' ",,' .'. ,.".,'" " ..
. ' ,'... . ," ,. ,;' j; ."-1, V",
.'.'.' . ."
5Anche questo a.i fini .. . ",
". J'!Ig,

"',"' . \ .,;.
":.,..!' 'i
404
-
-

-
-
-
\ .
-
-
--
I
I-
I-
I-
I
J-
,
r..
1-
)--
f_.
1--
.
,.
..
., .-
.
'; .

. ,
'. . .
. ", "
..
I '"
. ,
" ..
..
..
. ..
.,
,
,
. , .
.,,, .
.
, ,e, .,
ral;lelia 9:2' i.i-lcune *86.
.. I,...... , .....,
.,
, " ... '
...
Porte di trllppola
Porta di interr-udone
. dl ehlamala
,
1;
Offset. (15:0)
"
, ,
'.,"
'.
"
3' 311
311 3tl, 31
.."
ARB S.l"!. ,'.,m.
.,
.,
Capitato 9
Otbet (:31:16)
"
"
--
_.
Offset (31:16) ARB DWe Selett. Sej(m. Off.!ieC (l
.'
..

.. ... ., ...., .;-.' ,:,:.,', '.,
, '.' , ..
83 47 3U 311I 31 'II ','. ". IT'
.wa:
..
Figura 9.5 FOl'm'atQ' delle parle' {386' e:.succesaivi)., Ije, partij.tra.tteggiate varina ignorate.
,', i .. ,::,j" .';-'- '.-:.' ',i'.; .. ' ,. :,,,:,.]',1'. ,'"
. '. '
" '
Le porte di chiamata vengono usate ,w c:eintrollo effettuati tramite
l'istruzione CALL. Esse preved6hO"i un 'campo(DWC) iinpie'gato come :contatore del
numero di parole che 130 logica ddl:a: CPU' d-eve 'copiarei'autdIriaticamente dallo stack
della procedura chiamante alia stack chiamato
5
. ,.:". ; '. :" : -.
Le porte e"di 'trapp61avengon6 usate'pef'll saito ai sottoprograrnmi
di interruzione. 'J' ;.:';: .,'
Le potte' di' proeessO' servono per- la. iprocessi. : La porta di
processo, oItre ad ARB, contiene solo descrittore del TSS
del processo indirizzato, Un descrittore di TSS deVe"obbligatoriameilte risiedere in
GDT. ..; '.... ',;: ..... f:; ,:'; . :!
,,.if:... :.
., ...
. ,.jP':':'
-:';!\ ,
.,;,- , '
:-..jtl . :. "
'-' . 1'o,L',-,
. '"! r, La protezione 405
.
",'i:llt, ':: -

"">.:;11
Di LDT si eparlato al paragraio.sulla:lilemoria'virtuale:del.286; di.'tSS..edel di a.lcunUermini. '.. . .... .....
descrittore si parla al Paragrafo 9.4.1. Qui di seguito vengono presentati i nell'accezione generale del 'Un
formatl dee,porte. ! _.: ..:: to lflt'errompe,.la .I;l.om.pale :eseCUZlOD,e. del. programma.. IIi: 'Sens,o pi,!:' l'1S.tretto,
;. . : ' " . ' : . .' '. :' '. ; .. : . ." J ". Uf!.r
vento
da
Le po:rte Le .. son9, ,degli speclali.. desqlttOI:I dt. If. scopo eguello '{;:,'fJCrl; .,! :.'..Un. ecceZlone emvece ,1.!-:n evento 'smerona:, cornspondente,aI verificarsl di 'certe
. il .. : un '. .cli. 'Un. di:
mdlrlzzamento mdlretto (tramIte il selettore cbe punta a. un descnttore nella .qo.vuta : ".::;;r. deterrp.mata: da .un page-joult,.oidal tentatrvo dF :esegwre.come Dp-eraztoneun rodice
.. ,", ..
.erU l,<;optrolh CiI verrannQ . dar processore, qualLrCOndiZ10D1: anomale -di : .nloro.
pili avanti, opp.ot'tuna.. ' ',. '. ' .' " .. : ' :'. "'.; .. Ol cli, sistema deputati al
q)"?i .. :,}jt ..
(3) dl trappola; (4) dl processo. IT formato delle porte enportatd lD Figura g:5. 1. l'ecce'''one pl;ojJtarn,
dLfferenZlaZlOne edata attraverso il campo TYPE dl ARB, come da Tabella 9,1. .':; 'i.f/ rna che pU0 'avere di
. ; ... .' ',.Jr;-. za temparale con 1 programrru. In questa senso Ie coslddette mterruzlOID software,
G :it : :IijT, .vapno
;,1. "'!.i'" t" .
.. ... ,1' . programma e
,''Ii:Y,:':\'',''.
. .... ' ..... ', .. '.,
",,,., ';"',' .. " .. ' , ' " "
,.' I.'.' . ,,>' .. '. " ......'., ,'.
.... '" .
.,,' ." ...
9.3.1 La tabella dei descrittori di interruzione
,'" .
v:;"",','' ,;,;;;.',. ,1..' :':" .. "'i ':"., .. :,.,.," ...\.'
.1, n di in 'modO' pr'otetto, e
l
funzio-
namento 10 modo reale [Int931. .'" ", " '., .... '.
.una IDT Table),
._ '." dl. mte:,FuzIone: I .descntton cJ;te rou-
I. .. tIDe. dr ,serVlZIO d-elle. .ogtll-' mterrUZIone 'usata 'dal' sistema' .. deve avere il
descnttore 10 IDT. . ""- ,:.
.'" x 86 prevede fino a .di 256 I primi 32
. t?n. In Tabella;9..2
. . nporta II cdl: pnme ,3'2 : Se Sl l}jnterl'u-
;':/;: ZlOne NM! S?rtO come eccezlODl: P.er e pe:
. una..9-esonzlOne det:t;agllata del.slgruficato'.delle
del'C0Struttore {lnt93t-: .. , j' ." '. " ,_ I ,:' " ,;' ' .: .-' ' .....
_...."',' ',4. .'
,;,'':1:1.:1 ,;'.' ., ,,' . ,
,":01i;1.. t:" '.",' ._.': .,' :!, ,; ... , .... ," /.. " ;: .. >f. ".' .,: '".,
...:.'i:"" ., ' , , .,' . . ., .. . . . .. .' .
,'r, i\ i' .""'" ".. ',. , .. ,'. " ,,:',
-:"J,' '1':""","" N V n' .
;I&;'f!c": >,' .', ' .. ,i, .ettare .... . '" .... ""'. ;'. ',,- .... :.
.,... .,,,. 0 IT... 0
.. ,', i'"' ., i'. '. ., .. '1:-L>IYlSlone.p'er/ ,..' .': ".'
.",.'. "". . '. ". '.' b'" . '. ". '.- .,
':; '.. ..1 .. , De ugger., .' , . '..'
. .i ',:, ,..... J.. 6' ' Codice '1. .. .... .,'. ,.'
' 10 TSS non valido
11 Segmento non
9.3 Trattamento dellei'nterruzioni'in modo , , ),2 Vi
o
lazione lim,iti stack
' ,k&\i' . . . 13 ,VlOlazlOne protezlone
Prima di a della protezione occo.rre spen.dere t.ratta- . '", ." , da non usare)
mento delle mterrUZlOlll ill modo protetto. Convlene anzltutto [lchiamare.l slgmficato :.: Ig11L': ...,.'., . ..... .' . .
" 'I.' ",,' .'. ,.".,'" " ..
. ' ,'... . ," ,. ,;' j; ."-1, V",
.'.'.' . ."
5Anche questo a.i fini .. . ",
". J'!Ig,

"',"' . \ .,;.
":.,..!' 'i
404
Nel p ~ r e alia procedura d.i gestione dell'interruzione, la logica di CPU controlla
che vengano rispettati i mecca.nismi di protezione (si veda piu avanti).
1. n vettore eli interruzione viene usato come indice in IDT per individuare la porta
a8$0ciata all'interruzione.
3. L'indirizzo della procedura di interruzione viene ottenuto sommando all'indirizzo
di base del segmento contenuto nel descrittore 10 scostamento contenuto nella
porta.
407
La protezione
9La. logica di CPU gestisce la. commuta.zione tra processi in modo molto efficiente. Basti pensa.re
the con una CPU 286 a 8 MHz, la cornmuta.zione richiede solo 2L f.JS e che con il 486 a 25 MHz il
tempo di commutazione edi 10 j.LS. '
lOPer modificare e leggere la parte visibile del TR si usano Ie istruzioni priviiegiate LTR (Load TR)
e STR (Store TR). LTR source verifica se l'operando source (in memoria 0 in un registro generale) e
un selettore di TSS. In caso affermativo carica it selettorc e il conispondente descrittore (individuato
entro GDT) nel registro TR. Se l'operando non e un selettore di TSS 0 se ilsegmento TSS non ein
memoria fisica viene generata l'eccezione n. 10.
Nell'architettura x86 (in modo protetto) un processo corrisponde a una entita com-
pletamente identificata dal suo vettore di stato e cia! suo spazio di memoria virtuale. D
vettore di stato si concretizza in un segmento denominate TSS (Task State Segment);
10 spazio virtuale si concretiz:z.a neU'insieme di segmenti privati, accessibili attraver-
so la LDT del processo, e nell'insieme dei segmenti comuni, accessibili attraverso la
GDT.
La Figura9.6 mostra che in CPU c'e il registro TR (Task Register) usato per
puntare al TSS del processo in esecuzione. TR eun selettore e, come gli altri registri
aventi funzioni di selettore, possiede una parte nascosta, contenente il descrittore del
TSS del processo. loutile aggiungere che la parte (cache) nascosta viene gestita auto-
maticamente da! processore. ncampo INDICE del selettore costituisce identificatore
unico del processo.
D processo in esecuzione viene anche detto processo attivo.
l' attivazione di un processo richiede il caricamento in CPU del contenuto del
vettore di stato del processo stesso e cioe: (1) il caricamento dei registri di CPU con
ie loro immagini contenute in TSS; (2) il caricamento di TR con il selettore del TSS;
e (3) ii caricamento di LDTR con il selettore della LDT del processo.
La sospensione (disattivazione) di un processo richiede che venga copiato nel suo
TSS 10 stato della CPU al momenta della sospensione. In pratica si tratta di copiare
. in TSS il contenuto dei registri di CPU.
Per commu.tazione fra processi si intende l'atto d.i disattivare il processo in e s e ~
cuzione (processo u.scente) e attivare un nuovO processo sospeso (process a entrante).
nprocesso entrante diventa cool attivo a partire dalla stessa identica situazione nella.
quale era stato precedentemente sospeso; il processo uscente potra. di nuovo diventare
attivo a partire da.lla situazione in cui viene attualmente sospeso. Si Doti che non
eSLste alcuna istruzione particolare per la commutazione. Di norma essa viene provo-
cata dal processo attivo (tramite Ie istruzioni di JMP, CALL, INT e IRET) , oppure cia
un'interruzione esterna (Cfr.9.4.2). In ogni CaBO, la commutazione viene gestita in
modo automatico dalla logica della CPU, che effettua i controlli di protezione di cui
si parla piu avanti
9
.
Quando il 'processore passa a funzionamento in modo protetto, TR viene azzerato
(equivaie a impostarlo col selettore nullo) e, dunque, non risulta attivo alcun processo.
Per rendere attivo il primo processo occorre caricare in TR
LO
il selettore del suo TSS.
A partire da questa situazione il contenuto di TR viene normal-mente rinnovato dal
meccanismo di commutazione fra processi.
9.4 La gestione dei processi in modo protetto
Ca.pitolo 9
Oltre aile porte di interruzione e alIe porte di trappola, TDT puo contenere porte
di processo. Quando il vettore di interruzione punta a una porta d.i processo, la rispo-
sta all'interruzione deterolina (sempre che il meccanismo di protezione 10 consenta)
una commutazione di processo (Cfr. 9.4). n meccanismo che si instaura e analogo
a.l precedente, con la differenza che la porta di processo contiene. solo un selettore
di segmento TSS (Figura9.5). n selettore viene impiegato per reperire in GDT il
descrittore del TSS del processo che viene riattivato. Si ricorda che un descrittore di
TSS deve necessariamente trovarsi in GDT.
liE comunque p088ibile (e necessario se si vogliono apportare modi6cbe) definire per tale tabella
un segmento alias.
7Su lDTR sono previste Ie due istruzioni privilegiate LIDT (Load JDT register) e SlOT (Store lDT
register).
8Le porte di trappola. sonD simili alle porte di interruzione. Si clistinguDno per it diverse effett.o
che hanno au! flag IF. Un'interruzione che usa una porta di interruzione azzera i111ag IF, in modo
da prevenire Pinterferenza di altre interruzioni; IF rimane a.zzerato fino a. che noD. viene eseguita
l'istruzione lRET. Un'interruzione ebe usa una porta trappola non modifica il flag IF. AJ differente
nome non ~ associata alcuna particolare semantica, se non la differenziazione detta.
2. n selettore contenuto nella porla di. interruzione (0 di trappola
8
) viene usato
per reperire in GDT 0 LDT il descrittore del segmento (di codice) contenente la
procedura d.i interruzione.
Dovendo prevedere almena 32 descrittori (anche se alcuni non usabili), 1a minima
dimensione <Ii una lIlT e <Ii 32 x 8 = 256 byte.
La logica <Ii CPU tratta lIlT in modo del tutlo aoalogo a GDT (Cfr. Figura9.6)
e cice come un segmento avente dimensione massirna di 64 kbyte (per un totale di 8192
descrittori). A IDT si accede in modo del tutto analogo a come si accede a GDT,
utilizzaodo il registro <Ii IIlTR (Interrupt Descriptor Table Register), l'omologo di
GDTR. Come GDT, neancb.e IDT edirettamente visibile al programmatore, in quanta
Don esiste alcuna iBtruzione che utilizza il registro IDTR per accedere aHa memoria,
(si dice che la tabella IDT nOD eun segmento della memoria virtuaie)6.
n contenuto della tabella IDT cleve essere predispostq durante il funzionamento
in modo reale. Sempre durante il funzionamento in modo I."eale, cleve essere caricato
iri IIlTR
7
il descrittore della tabella. Di norma, la lIlT viene gestita dal solo sistema
operativo: una volta caricato, il registro IDTR non epiu soggett0 a modifica.
D coinvolgimento d.i IDT nella risposta alle interruzioni eil seguente.
406
\
I,
\
\
,\
1
\
\
\
l
\
II
,
l
.
I

-
-
-
-
-
Nel p ~ r e alia procedura d.i gestione dell'interruzione, la logica di CPU controlla
che vengano rispettati i mecca.nismi di protezione (si veda piu avanti).
1. n vettore eli interruzione viene usato come indice in IDT per individuare la porta
a8$0ciata all'interruzione.
3. L'indirizzo della procedura di interruzione viene ottenuto sommando all'indirizzo
di base del segmento contenuto nel descrittore 10 scostamento contenuto nella
porta.
407
La protezione
9La. logica di CPU gestisce la. commuta.zione tra processi in modo molto efficiente. Basti pensa.re
the con una CPU 286 a 8 MHz, la cornmuta.zione richiede solo 2L f.JS e che con il 486 a 25 MHz il
tempo di commutazione edi 10 j.LS. '
lOPer modificare e leggere la parte visibile del TR si usano Ie istruzioni priviiegiate LTR (Load TR)
e STR (Store TR). LTR source verifica se l'operando source (in memoria 0 in un registro generale) e
un selettore di TSS. In caso affermativo carica it selettorc e il conispondente descrittore (individuato
entro GDT) nel registro TR. Se l'operando non e un selettore di TSS 0 se ilsegmento TSS non ein
memoria fisica viene generata l'eccezione n. 10.
Nell'architettura x86 (in modo protetto) un processo corrisponde a una entita com-
pletamente identificata dal suo vettore di stato e cia! suo spazio di memoria virtuale. D
vettore di stato si concretizza in un segmento denominate TSS (Task State Segment);
10 spazio virtuale si concretiz:z.a neU'insieme di segmenti privati, accessibili attraver-
so la LDT del processo, e nell'insieme dei segmenti comuni, accessibili attraverso la
GDT.
La Figura9.6 mostra che in CPU c'e il registro TR (Task Register) usato per
puntare al TSS del processo in esecuzione. TR eun selettore e, come gli altri registri
aventi funzioni di selettore, possiede una parte nascosta, contenente il descrittore del
TSS del processo. loutile aggiungere che la parte (cache) nascosta viene gestita auto-
maticamente da! processore. ncampo INDICE del selettore costituisce identificatore
unico del processo.
D processo in esecuzione viene anche detto processo attivo.
l' attivazione di un processo richiede il caricamento in CPU del contenuto del
vettore di stato del processo stesso e cioe: (1) il caricamento dei registri di CPU con
ie loro immagini contenute in TSS; (2) il caricamento di TR con il selettore del TSS;
e (3) ii caricamento di LDTR con il selettore della LDT del processo.
La sospensione (disattivazione) di un processo richiede che venga copiato nel suo
TSS 10 stato della CPU al momenta della sospensione. In pratica si tratta di copiare
. in TSS il contenuto dei registri di CPU.
Per commu.tazione fra processi si intende l'atto d.i disattivare il processo in e s e ~
cuzione (processo u.scente) e attivare un nuovO processo sospeso (process a entrante).
nprocesso entrante diventa cool attivo a partire dalla stessa identica situazione nella.
quale era stato precedentemente sospeso; il processo uscente potra. di nuovo diventare
attivo a partire da.lla situazione in cui viene attualmente sospeso. Si Doti che non
eSLste alcuna istruzione particolare per la commutazione. Di norma essa viene provo-
cata dal processo attivo (tramite Ie istruzioni di JMP, CALL, INT e IRET) , oppure cia
un'interruzione esterna (Cfr.9.4.2). In ogni CaBO, la commutazione viene gestita in
modo automatico dalla logica della CPU, che effettua i controlli di protezione di cui
si parla piu avanti
9
.
Quando il 'processore passa a funzionamento in modo protetto, TR viene azzerato
(equivaie a impostarlo col selettore nullo) e, dunque, non risulta attivo alcun processo.
Per rendere attivo il primo processo occorre caricare in TR
LO
il selettore del suo TSS.
A partire da questa situazione il contenuto di TR viene normal-mente rinnovato dal
meccanismo di commutazione fra processi.
9.4 La gestione dei processi in modo protetto
Ca.pitolo 9
Oltre aile porte di interruzione e alIe porte di trappola, TDT puo contenere porte
di processo. Quando il vettore di interruzione punta a una porta d.i processo, la rispo-
sta all'interruzione deterolina (sempre che il meccanismo di protezione 10 consenta)
una commutazione di processo (Cfr. 9.4). n meccanismo che si instaura e analogo
a.l precedente, con la differenza che la porta di processo contiene. solo un selettore
di segmento TSS (Figura9.5). n selettore viene impiegato per reperire in GDT il
descrittore del TSS del processo che viene riattivato. Si ricorda che un descrittore di
TSS deve necessariamente trovarsi in GDT.
liE comunque p088ibile (e necessario se si vogliono apportare modi6cbe) definire per tale tabella
un segmento alias.
7Su lDTR sono previste Ie due istruzioni privilegiate LIDT (Load JDT register) e SlOT (Store lDT
register).
8Le porte di trappola. sonD simili alle porte di interruzione. Si clistinguDno per it diverse effett.o
che hanno au! flag IF. Un'interruzione che usa una porta di interruzione azzera i111ag IF, in modo
da prevenire Pinterferenza di altre interruzioni; IF rimane a.zzerato fino a. che noD. viene eseguita
l'istruzione lRET. Un'interruzione ebe usa una porta trappola non modifica il flag IF. AJ differente
nome non ~ associata alcuna particolare semantica, se non la differenziazione detta.
2. n selettore contenuto nella porla di. interruzione (0 di trappola
8
) viene usato
per reperire in GDT 0 LDT il descrittore del segmento (di codice) contenente la
procedura d.i interruzione.
Dovendo prevedere almena 32 descrittori (anche se alcuni non usabili), 1a minima
dimensione <Ii una lIlT e <Ii 32 x 8 = 256 byte.
La logica <Ii CPU tratta lIlT in modo del tutlo aoalogo a GDT (Cfr. Figura9.6)
e cice come un segmento avente dimensione massirna di 64 kbyte (per un totale di 8192
descrittori). A IDT si accede in modo del tutto analogo a come si accede a GDT,
utilizzaodo il registro <Ii IIlTR (Interrupt Descriptor Table Register), l'omologo di
GDTR. Come GDT, neancb.e IDT edirettamente visibile al programmatore, in quanta
Don esiste alcuna iBtruzione che utilizza il registro IDTR per accedere aHa memoria,
(si dice che la tabella IDT nOD eun segmento della memoria virtuaie)6.
n contenuto della tabella IDT cleve essere predispostq durante il funzionamento
in modo reale. Sempre durante il funzionamento in modo I."eale, cleve essere caricato
iri IIlTR
7
il descrittore della tabella. Di norma, la lIlT viene gestita dal solo sistema
operativo: una volta caricato, il registro IDTR non epiu soggett0 a modifica.
D coinvolgimento d.i IDT nella risposta alle interruzioni eil seguente.
406
\
I,
\
\
,\
1
\
\
\
l
\
II
,
l
.
I

-
-
-
-
-
I
-,
-
-
-
-
..
-
-
-
-
-,
-
-
--
)
I -
I..
)-
1-
I -
\
I
I
1-
16 ,'"
... ... .":'
i4 '
.
t'" - ,
0..
..
,
.'! "
,
, 64,
'60 "
5C
58
5'.
sa',
4C
48

40
3C
"13S",,'"
.3 ........ L
4.. ": '1
.; "
2C '
...] '28 ... '
2.
20
"",',t'iC",
- ...
....
, '
... 'J
'"
,
,,,. ..,
" -'. ,. .,'..
. ,-'
:.
,
. ri ":.d... ,
, SS2
"
".,
..
:, '" -, .
"
1,5
LOT del
GS
FS
i ",- -lis
" ' , 's
CS' ,
,- ,

.... .. ..
Indirizzo
,EDl,
ESI ..
I 'ESP
ESP,
, EBX"
, EDX
,31

,
i' :,Mern,or.i'a'., 'c
.. , ..
-, ,
" i.
,'

., ".
, . '.
"
,
,
!' \
..
"
,..
,,.
"
.;."'"
; 0 r,
", ..
..
, .' ,
.. " ,
,
. , .. rut
..
-. -----
.. '
, , " .
t '
" "C,WP
.. '
,': ,,
"
, "
Capitolo 9" '
..
GDTR
,.
, '
"
lDTR
Jt', 03\
: ,:,,1--, "" [
" ' ,
,'
40S
La. proteziQne. 409
n_ ttl. ,,"I
:; 1_
LDTt? i.,.,,.... " I" " ' LDT-'., I '! . :
. . .' . '" I.... ,
111"-':' 0""":" "ii "." ,"03\ . "-'\1' .: .;" "': ',:"
. .. ,.;:,:." ,," ,,_ ",1. II ,',' .'
., - t' ," ".] 1_' q . " -,.J. It ,).
,,", ,',. -. I."" " "0' T, : r:
' " II "-,,' ' ,
'',.'f.' 'I' ..._ l,.t':;'_ ,." 1""
:'.. 1'R " .. " "0 " ,;' .,:! f':'. .: ..
\ '," ."" . 0', :.11 . 0'3' .r,_" h 0 ',," ;""; i
1 __ .U1s .. ,To's . .\. "I Bu. 1;'S.!lI
" .J. - .1"" " '_I ""'," ".
'. ,_,. ", I' 't ", I.'
, " ..... -,.. ' ..' :.; 't. ... ,.:' ..
: , I' .
.. "'\' ..", .., ,.', .:.
"" .. , .. ,. <:' '",
1,....,'),,',';,. '\ ."",;. "".1. ',il,:',:,,"
l. , ' .... ,.1.. :.1 "; ,'. _. .. TU ' . ..... , ..
. ... ' . """. ",,-" .'" ""l'il"'" ' ",' . "<' .... ,',' .,. . ','" , . '. sso'" .. '._,J. ,'. ',.'
.... ' . .,., . ... ',... '- .'._--' .' "'" '''. .
, '''...,. ' .2? ,J,ii
J
: , ..,
--""';"" ';', , .,: ". -I' ' .. :", l , 1-."':"1' ,,,,,',:, ,,', ::,;:, . . .
"/ '.' ;< : . \'.:: '" ., ;: '<.:'1' :<' '9."" t$S\li phfcess9: ;4i." 104
byte SODa gestiti 'autdmati-cai::O.ehte' dalla delHi cPu:'n 'sigillficato
,t" ", Qve necessaria nel testo, traspare dallora Dome. Naturalmente, un sistema. operativo
.: .. ". ,/. "\"'" ., pub usare un TSS pin. esteso, aggiungendo a suo piacimento ulteriore spazio di memoria,
:' < ! ." '.. ". ,,', -"'. .. ; " .; " .. ," '"
'. ,... '".' .. j';. ':A," l"f\.> ;.J."
.' .. , ... ' 'I' .. , ..' .I.n-;r. '., ., " ...),..; -,
, ,,' ....' " ,.' .... ..... ' .. !'...Yi.f/ ',.' "",'
,:. " , - -..... 1. ' 'J; ::. . 1" '." .,' . ,,'. : ,.. . n ..- .. :': .;, '. :.,: .. . .'! .., Ie 'limmagini" dei di CPU .(locazioni d;illo scostamento 20h allo scosta".
, ., . '. . ::'-'.. .' .. "', .', ":','. -.' "'; . , . .... <'" ... -, ,'. ;,.,J
..-', - .,. " ". t. ,", "'" _. ", ' .. , """ J:.... ",'I.".'"', .
'," , - ,,,.,,,,1 ,'., """'-'_,' ..'j '." .. ,,' .. .." mento5Ch),
'" . ., -"j' , ':.-,',,,';
., ..... :,-' ... ,'" '. "" '.' ". ."" - ,. ,'._, , '.
'.' ",' .. '" .',',,' , ...... ',', ... ,' ., , ."".' '''' ...' ,', t ." , " ".,.. ' ". . . '"
" ,'-. ' .. ''1 . '., '1" I; .. ' '.. ' " "'" ,' . ' ,."._;" ...
':r<: 9.6 :1.a le, .cli'. ?J-emorra. che" : ," . I . ".; ri, , ".: ',,; :, ,,' "" .: ,.' ..
tlOne della. memof:la,vu'tliile'e dellapro!euone..1 regtS&fl' GDTR'ell)(f,Rtsano 'aelii'escnttort; . ;;' .. !
mentre TR e LDTR sano dei selettori. Per i descrittori sono :e: :-t9i.: Idella- LDT-:del pro'CeSSO" ;. :' ',' ',,'1 ... ' :' '.'- . " ',.
gli ..;l eli, e 4,E7vODO , '. , . I ",
.. '.,. 't , , . ',.. . , ., ". '", " ",.. "r,:]iil!";:!:\,:/ It PDBR ;(E.age Bas.e. Reg1Ster.) del processo{I'l1DIIlagme:.del:regIstro
, . "'. ',,' , , \ , ' .. ' ., "".t, ,I .. I 1i'!-\;" eR3)
..... ,. , ',' '... . .
1
,.,,' " ", '
" ';. l. ",' .'. '.', '.. ' !,... ., . .'.,' ,-.:,' " ..i: ';','.- ,!'t, _.;';<. I
.. , '''''.,. "".: " .., ).' . .. , .." ... ...,
9.4.1' -'II- eli ,'. :.' .. ':. 'k' dello p'er i d.i e 2 ... .:.; .
, ",f,;1
i
i, II bit T cbe" cillando attivo, fa,51 che, II processc"e provoChi uria
nformato del TSS eillustrato ill Flgura9.7. 'J)'..!, quando aVVlene 1a commutazlOne dl proceSSOj
! .campi l'SS esseJ;'e .due A: r ': ,... . ..._ . .' . ... ,',
.. 't t'" 1 ." ,." 'w' .. ...' .). ,. .k ..,., ... t" . t't' , ..,,".:. 0._'[;1"' "" ,1" ..;" , L mdtnzzo di base per la mappa del bIts autonzzazlOne di l/O!;l ...... .:".':..
e. a ... 1 .. . , . .
comprendono
' , _.... liLr- . Iii.'".. '" 1<,. ", '.' .,. ...."., . " " . "." " ..
. . :", ',',," .:.. '<i":;.! .. :.. ,1l11li.-,L"':": , . . , .. . ., ',. ..,. .,.' .' ":.
. ".. ,.. " . . ....." :. :'.. .:-,' .:." ;\. .:.i,. .. , ,\ iH: '., " . . .i. ,... , 1
1
?il$c\ta 'a, dimtioitl di til parl1t'O'la.re, &
..
. '- _. ',' . ,'. ...,.'.. 1 .' ... .,. -, .. ij,l I, '\ '"," ".:" .....
uscente)j ',' ;; .. ', " , ,: .. , .. ," ',. .. .-
' . ':.'1,;':"
,. ,,""
, ,.', ,. "
I
-,
-
-
-
-
..
-
-
-
-
-,
-
-
--
)
I -
I..
)-
1-
I -
\
I
I
1-
16 ,'"
... ... .":'
i4 '
.
t'" - ,
0..
..
,
.'! "
,
, 64,
'60 "
5C
58
5'.
sa',
4C
48

40
3C
"13S",,'"
.3 ........ L
4.. ": '1
.; "
2C '
...] '28 ... '
2.
20
"",',t'iC",
- ...
....
, '
... 'J
'"
,
,,,. ..,
" -'. ,. .,'..
. ,-'
:.
,
. ri ":.d... ,
, SS2
"
".,
..
:, '" -, .
"
1,5
LOT del
GS
FS
i ",- -lis
" ' , 's
CS' ,
,- ,

.... .. ..
Indirizzo
,EDl,
ESI ..
I 'ESP
ESP,
, EBX"
, EDX
,31

,
i' :,Mern,or.i'a'., 'c
.. , ..
-, ,
" i.
,'

., ".
, . '.
"
,
,
!' \
..
"
,..
,,.
"
.;."'"
; 0 r,
", ..
..
, .' ,
.. " ,
,
. , .. rut
..
-. -----
.. '
, , " .
t '
" "C,WP
.. '
,': ,,
"
, "
Capitolo 9" '
..
GDTR
,.
, '
"
lDTR
Jt', 03\
: ,:,,1--, "" [
" ' ,
,'
40S
La. proteziQne. 409
n_ ttl. ,,"I
:; 1_
LDTt? i.,.,,.... " I" " ' LDT-'., I '! . :
. . .' . '" I.... ,
111"-':' 0""":" "ii "." ,"03\ . "-'\1' .: .;" "': ',:"
. .. ,.;:,:." ,," ,,_ ",1. II ,',' .'
., - t' ," ".] 1_' q . " -,.J. It ,).
,,", ,',. -. I."" " "0' T, : r:
' " II "-,,' ' ,
'',.'f.' 'I' ..._ l,.t':;'_ ,." 1""
:'.. 1'R " .. " "0 " ,;' .,:! f':'. .: ..
\ '," ."" . 0', :.11 . 0'3' .r,_" h 0 ',," ;""; i
1 __ .U1s .. ,To's . .\. "I Bu. 1;'S.!lI
" .J. - .1"" " '_I ""'," ".
'. ,_,. ", I' 't ", I.'
, " ..... -,.. ' ..' :.; 't. ... ,.:' ..
: , I' .
.. "'\' ..", .., ,.', .:.
"" .. , .. ,. <:' '",
1,....,'),,',';,. '\ ."",;. "".1. ',il,:',:,,"
l. , ' .... ,.1.. :.1 "; ,'. _. .. TU ' . ..... , ..
. ... ' . """. ",,-" .'" ""l'il"'" ' ",' . "<' .... ,',' .,. . ','" , . '. sso'" .. '._,J. ,'. ',.'
.... ' . .,., . ... ',... '- .'._--' .' "'" '''. .
, '''...,. ' .2? ,J,ii
J
: , ..,
--""';"" ';', , .,: ". -I' ' .. :", l , 1-."':"1' ,,,,,',:, ,,', ::,;:, . . .
"/ '.' ;< : . \'.:: '" ., ;: '<.:'1' :<' '9."" t$S\li phfcess9: ;4i." 104
byte SODa gestiti 'autdmati-cai::O.ehte' dalla delHi cPu:'n 'sigillficato
,t" ", Qve necessaria nel testo, traspare dallora Dome. Naturalmente, un sistema. operativo
.: .. ". ,/. "\"'" ., pub usare un TSS pin. esteso, aggiungendo a suo piacimento ulteriore spazio di memoria,
:' < ! ." '.. ". ,,', -"'. .. ; " .; " .. ," '"
'. ,... '".' .. j';. ':A," l"f\.> ;.J."
.' .. , ... ' 'I' .. , ..' .I.n-;r. '., ., " ...),..; -,
, ,,' ....' " ,.' .... ..... ' .. !'...Yi.f/ ',.' "",'
,:. " , - -..... 1. ' 'J; ::. . 1" '." .,' . ,,'. : ,.. . n ..- .. :': .;, '. :.,: .. . .'! .., Ie 'limmagini" dei di CPU .(locazioni d;illo scostamento 20h allo scosta".
, ., . '. . ::'-'.. .' .. "', .', ":','. -.' "'; . , . .... <'" ... -, ,'. ;,.,J
..-', - .,. " ". t. ,", "'" _. ", ' .. , """ J:.... ",'I.".'"', .
'," , - ,,,.,,,,1 ,'., """'-'_,' ..'j '." .. ,,' .. .." mento5Ch),
'" . ., -"j' , ':.-,',,,';
., ..... :,-' ... ,'" '. "" '.' ". ."" - ,. ,'._, , '.
'.' ",' .. '" .',',,' , ...... ',', ... ,' ., , ."".' '''' ...' ,', t ." , " ".,.. ' ". . . '"
" ,'-. ' .. ''1 . '., '1" I; .. ' '.. ' " "'" ,' . ' ,."._;" ...
':r<: 9.6 :1.a le, .cli'. ?J-emorra. che" : ," . I . ".; ri, , ".: ',,; :, ,,' "" .: ,.' ..
tlOne della. memof:la,vu'tliile'e dellapro!euone..1 regtS&fl' GDTR'ell)(f,Rtsano 'aelii'escnttort; . ;;' .. !
mentre TR e LDTR sano dei selettori. Per i descrittori sono :e: :-t9i.: Idella- LDT-:del pro'CeSSO" ;. :' ',' ',,'1 ... ' :' '.'- . " ',.
gli ..;l eli, e 4,E7vODO , '. , . I ",
.. '.,. 't , , . ',.. . , ., ". '", " ",.. "r,:]iil!";:!:\,:/ It PDBR ;(E.age Bas.e. Reg1Ster.) del processo{I'l1DIIlagme:.del:regIstro
, . "'. ',,' , , \ , ' .. ' ., "".t, ,I .. I 1i'!-\;" eR3)
..... ,. , ',' '... . .
1
,.,,' " ", '
" ';. l. ",' .'. '.', '.. ' !,... ., . .'.,' ,-.:,' " ..i: ';','.- ,!'t, _.;';<. I
.. , '''''.,. "".: " .., ).' . .. , .." ... ...,
9.4.1' -'II- eli ,'. :.' .. ':. 'k' dello p'er i d.i e 2 ... .:.; .
, ",f,;1
i
i, II bit T cbe" cillando attivo, fa,51 che, II processc"e provoChi uria
nformato del TSS eillustrato ill Flgura9.7. 'J)'..!, quando aVVlene 1a commutazlOne dl proceSSOj
! .campi l'SS esseJ;'e .due A: r ': ,... . ..._ . .' . ... ,',
.. 't t'" 1 ." ,." 'w' .. ...' .). ,. .k ..,., ... t" . t't' , ..,,".:. 0._'[;1"' "" ,1" ..;" , L mdtnzzo di base per la mappa del bIts autonzzazlOne di l/O!;l ...... .:".':..
e. a ... 1 .. . , . .
comprendono
' , _.... liLr- . Iii.'".. '" 1<,. ", '.' .,. ...."., . " " . "." " ..
. . :", ',',," .:.. '<i":;.! .. :.. ,1l11li.-,L"':": , . . , .. . ., ',. ..,. .,.' .' ":.
. ".. ,.. " . . ....." :. :'.. .:-,' .:." ;\. .:.i,. .. , ,\ iH: '., " . . .i. ,... , 1
1
?il$c\ta 'a, dimtioitl di til parl1t'O'la.re, &
..
. '- _. ',' . ,'. ...,.'.. 1 .' ... .,. -, .. ij,l I, '\ '"," ".:" .....
uscente)j ',' ;; .. ', " , ,: .. , .. ," ',. .. .-
' . ':.'1,;':"
,. ,,""
, ,.', ,. "
salvataggio del selettore del segmento TSS del processo uscente nel segmento
TSS del processo entrante: la locazione per il salvataggio equella
di scostarnento 00 (Figura 9.7);
messa a 1 del bit NT (Nested Task) del registro EFLAGS del processo
entrante.
In questa caso il processo uscente e it processo entrante sono anche detti, rispet-
tivamente, processo chiamante e proce.sso chiamato. n processo chiamato tiene
traccia del processo chiamante nel proprio segmento TSSj in tal modo il proces-
so chiamante PUQ essere riattivato tramite una istruzione a zero operandi, quale
l'istruzione lRET .
3. Esecuzione della istruzione IRET
I3
.Una istruzione lRET provoca una commutazione fra processi se il bit NT del
registro EFLAGS vale 1; in tale commutazione, il processo uscente equeUo at-
tualmente attivo e il processo entrante equeUo il cui segmento TSS ha il selettore
memorizzato nel segmento TSS del processo uscente (locazione di scostamento
OOb). nbit NT viene ozzerato prima cbe il contenuto del registro EFLAGS venga
memorizzato nel segmento TSS del processo uscente.
4. Accettazione di una richiesta di interruzione
n meccanismo di interruzione (e di ezception) provoca una commutazione fra
processi se l'elemento della tabella IDT, corrispondente al tipo di interruzione,
13n meccani8ffio'di commutazione fra processi agisce anche sul bit B busy contenut.o nel byte ARB
dei descrittori di TSS (Figura 9.8). Per poter essere attivato, un proeesso deve essere libero (bit B
a 0). Nel momento in cui un processo viene attivato, esso viene anche marcato come occupato (hit
B a 1). Un processo atti,vo (e quindi occupato) rimane occupat.o se viene sospeso dall'esecuzione
della istruzione CA.LL 0 dall'accettazione di un'int.erruzione. Un processo attivo viena invece marcato
come libero quando viene sospeso a seguito dell'esecuzione dell'istruzione JKP 0 deU'istruzione IRET.
II bit B dice se il processo attivo est.ato attivato da una CALL 0 da una interruzione, In tal caso il
tit-orno al chiamante deve averai ttamite l'istruzione IRET. L'uso di altra istruzione per it ritorno a1
chiamante 0 al processo int.errotto vieae riconosciuto dalla. logica di CPU e provoca. un'eccezione.
porta di processo, La commutazione consiste nel sospendere il processo attivo
e nell'attivare il processo il cui TSS eindividuato tramite il selettore contenuto
nell'istruzione stessa, ovvere nella porta eli processo attraverso cui si attua il salto.
Ovviamente la componente scostamento dell'indirizzo eli saIto viene ignorata,
in quanta lo scostamento corrisponde al valore eli ElP contenuto nel TSS del
processo entrante.
2. Esecuzione dell'istruzione CALL
Una istruzione CALL faT' provoca una commutazione fra processi se l'indirizzo
di salto prevede, come componente selettore, il selettore di un segmento TSS
(per Ie ragioni dette sopra, anche in questa caso, la componente scostamento
viene ignorata) 0 il selettore di una porta di processo. La commutazione viene
effettuata in modo del tutto analogo al caso del JMP, con l'aggiunta delle seguenti
due azioni finali:
G D

A
DPL
TYPE
IY
P 0
..,
11018, 1
Commutazione fra processi
Capitolo 9
il proceaso conente esegue l'istruzione lRET quando il flag NT easserito.
viene servita un'interruzione the sfrutta una porta di processe in InTj
. .
63 4-7 39 Ie. 0
j BASE I IlilTI ARB I (23,0) ILIMITE I(15-0) I
it processo conente esegue un'istruzione di JMP 0 CALL12 a un indirizze che ha
come componente selettore i1 selettore di un TSSj
UOvviamente deve tratt.arsi di un salto 0 di una chiarpata far per a,vere una modifica del8elettore.
1. Esecuzione JMP
Un JMP faT' provoca una commutazione fra processi se l'indirizzo eli salto prevede,
come componente selettore, il selettore di un segmento TSS 0 il selettore di una
Pi'll precisamente, Ie modalita in base alle quali si ba la commutazione fra processi
sono Ie seguenti.
La commutazione fra processi si ha per uno dei seguenti motivi:
9.4.2
'
.
La protezlooe 411
rli","7e:
f1h"", ' ,
,
'ij;l."'" '
,Pll) ...
.r'ifi." ,
1\\1'...
I"" 7' :',


"A

. i:e .

o "'_. .

.
';
. ..'.'.",
, >:t1M ,,'
..
,- '-...

.,
,;0;-,. '

,'''F''-
1"'-"'''''0' ,',
'!w."'" .
(",>li!...
l-a9Wt;, '"
-

I"""l' ;.j."';/,",, -,
. ","':.'!:".. .
",'-'l.: _ . .
i',\;:,,'i" ;;, .... "
"
, ,P, ,'.'
,;;U"".'l "
,," .
.
I .
' "
tt' .,,,1,,;-
-'I
, ....
','! ,I'
, 'M i""'"
'r ..... .
....."i;' ..l.
'. :.,! _.,
'i'$ . "", " -
'. " -
'1'.,:,"',-"" ','"
Quando un processo passa dallo stato eli sospeso a queUo di esCuzione, la logica
della macchina esegue i necessari controlli di protezione di cui si parla in dettaglio piu
e, se richiesta: e valida, viene acc?Dsentito l'accesso al TSS il cui
mdinzzo e cancato ill TR (0 meglio
,
nella cache assoCJata a TR). Lo stato del processo
viene, (e cioe c.opia di tutti i registri di CPU piu informazioni aggiuntive __
illustrate m FIgura 9.8) Vlene salvato nel suo stack, mentre 11 contenuto del TSS del
procesao che viene messo in esecuzione viene caricato nei registri di CPU. Si tratta, in
sostanza, eli un e proprio cambiamento di contesto eseguito esclusivamente pet .... ,"
via hardware al flne di rendere mjnimo il tempo di commutazione.

1;.1;, 'III d', ':'
,. ..' '1-:/."
Jjl
. .
"I";, ,.,r..,,'
"

r. ..
1 ,;n'.

,., 'lti' '<.". "
. ','
"'. ";':
. !""",e ",'"
..... "",,,,,...""''''''
".",

, (!
rklo$<,,;>;"
""'.. , i' ,
;""-;; ".!" .
'J" "
" .. , ' '" ", , '
''-'.,,1(," ,i ''\'"''''
X/" .",t:!t
f
...;"
il processo conente esegue un'istruzione di JMP 0 CALL a una porta eli processo; . :,/f
t
'
r
"", ' ,''''''
.. ' .. ,
'>''':''1"1 : "'I
.: ';'t.\,".\. ,.' 't';i"!'"
'.'i .. .";}7 , '
..'
1li
l'l.....,".. ,..
I

" ..
,>, , ..,. .,'
, , .;,,-:.
..>:,,'%1
1
,l'lll",... ,
r:ifv.
s
.'.,
".";1.
- ., .
r ,
:,.-
.
.-;
..
-
: -'<i;;{t' ,'-,
""""'>"1; li'm','I'
":.1/(."":<'
;'
, .' I'." ....,
.. 4"" .
"....,
.' ,S',,,.,,,, ...
..

,.. ,ry "";'-',
"",ll . "'" t,ll"',,
",I< ,'!I'"
:':"."\?:
"
;,.)J !;: ,.
: ' "
,.
Figura ndescrittore di TSS. In questa figura i campi sona riportati neUe posizioni
che essi hanna nella realta,. n byte piu significativo contiene gli otto bit piu significativi
deUa BASE. I quattro bit piu significativi di LIMITE sono presi da un byte usato anche per
contenere G, D e AVL. Del bit B (Bu3Y) del campo TYPE si parla piu avanti.
Essendo i1 vettore eli stato un segmento, esso viene
descrittore eli segmento il cui formato ein Figura9.8.
410
\
\
\

\
-
\
-
1
-
- \
-
\
-
\
..
\

I
salvataggio del selettore del segmento TSS del processo uscente nel segmento
TSS del processo entrante: la locazione per il salvataggio equella
di scostarnento 00 (Figura 9.7);
messa a 1 del bit NT (Nested Task) del registro EFLAGS del processo
entrante.
In questa caso il processo uscente e it processo entrante sono anche detti, rispet-
tivamente, processo chiamante e proce.sso chiamato. n processo chiamato tiene
traccia del processo chiamante nel proprio segmento TSSj in tal modo il proces-
so chiamante PUQ essere riattivato tramite una istruzione a zero operandi, quale
l'istruzione lRET .
3. Esecuzione della istruzione IRET
I3
.Una istruzione lRET provoca una commutazione fra processi se il bit NT del
registro EFLAGS vale 1; in tale commutazione, il processo uscente equeUo at-
tualmente attivo e il processo entrante equeUo il cui segmento TSS ha il selettore
memorizzato nel segmento TSS del processo uscente (locazione di scostamento
OOb). nbit NT viene ozzerato prima cbe il contenuto del registro EFLAGS venga
memorizzato nel segmento TSS del processo uscente.
4. Accettazione di una richiesta di interruzione
n meccanismo di interruzione (e di ezception) provoca una commutazione fra
processi se l'elemento della tabella IDT, corrispondente al tipo di interruzione,
13n meccani8ffio'di commutazione fra processi agisce anche sul bit B busy contenut.o nel byte ARB
dei descrittori di TSS (Figura 9.8). Per poter essere attivato, un proeesso deve essere libero (bit B
a 0). Nel momento in cui un processo viene attivato, esso viene anche marcato come occupato (hit
B a 1). Un processo atti,vo (e quindi occupato) rimane occupat.o se viene sospeso dall'esecuzione
della istruzione CA.LL 0 dall'accettazione di un'int.erruzione. Un processo attivo viena invece marcato
come libero quando viene sospeso a seguito dell'esecuzione dell'istruzione JKP 0 deU'istruzione IRET.
II bit B dice se il processo attivo est.ato attivato da una CALL 0 da una interruzione, In tal caso il
tit-orno al chiamante deve averai ttamite l'istruzione IRET. L'uso di altra istruzione per it ritorno a1
chiamante 0 al processo int.errotto vieae riconosciuto dalla. logica di CPU e provoca. un'eccezione.
porta di processo, La commutazione consiste nel sospendere il processo attivo
e nell'attivare il processo il cui TSS eindividuato tramite il selettore contenuto
nell'istruzione stessa, ovvere nella porta eli processo attraverso cui si attua il salto.
Ovviamente la componente scostamento dell'indirizzo eli saIto viene ignorata,
in quanta lo scostamento corrisponde al valore eli ElP contenuto nel TSS del
processo entrante.
2. Esecuzione dell'istruzione CALL
Una istruzione CALL faT' provoca una commutazione fra processi se l'indirizzo
di salto prevede, come componente selettore, il selettore di un segmento TSS
(per Ie ragioni dette sopra, anche in questa caso, la componente scostamento
viene ignorata) 0 il selettore di una porta di processo. La commutazione viene
effettuata in modo del tutto analogo al caso del JMP, con l'aggiunta delle seguenti
due azioni finali:
G D

A
DPL
TYPE
IY
P 0
..,
11018, 1
Commutazione fra processi
Capitolo 9
il proceaso conente esegue l'istruzione lRET quando il flag NT easserito.
viene servita un'interruzione the sfrutta una porta di processe in InTj
. .
63 4-7 39 Ie. 0
j BASE I IlilTI ARB I (23,0) ILIMITE I(15-0) I
it processo conente esegue un'istruzione di JMP 0 CALL12 a un indirizze che ha
come componente selettore i1 selettore di un TSSj
UOvviamente deve tratt.arsi di un salto 0 di una chiarpata far per a,vere una modifica del8elettore.
1. Esecuzione JMP
Un JMP faT' provoca una commutazione fra processi se l'indirizzo eli salto prevede,
come componente selettore, il selettore di un segmento TSS 0 il selettore di una
Pi'll precisamente, Ie modalita in base alle quali si ba la commutazione fra processi
sono Ie seguenti.
La commutazione fra processi si ha per uno dei seguenti motivi:
9.4.2
'
.
La protezlooe 411
rli","7e:
f1h"", ' ,
,
'ij;l."'" '
,Pll) ...
.r'ifi." ,
1\\1'...
I"" 7' :',


"A

. i:e .

o "'_. .

.
';
. ..'.'.",
, >:t1M ,,'
..
,- '-...

.,
,;0;-,. '

,'''F''-
1"'-"'''''0' ,',
'!w."'" .
(",>li!...
l-a9Wt;, '"
-

I"""l' ;.j."';/,",, -,
. ","':.'!:".. .
",'-'l.: _ . .
i',\;:,,'i" ;;, .... "
"
, ,P, ,'.'
,;;U"".'l "
,," .
.
I .
' "
tt' .,,,1,,;-
-'I
, ....
','! ,I'
, 'M i""'"
'r ..... .
....."i;' ..l.
'. :.,! _.,
'i'$ . "", " -
'. " -
'1'.,:,"',-"" ','"
Quando un processo passa dallo stato eli sospeso a queUo di esCuzione, la logica
della macchina esegue i necessari controlli di protezione di cui si parla in dettaglio piu
e, se richiesta: e valida, viene acc?Dsentito l'accesso al TSS il cui
mdinzzo e cancato ill TR (0 meglio
,
nella cache assoCJata a TR). Lo stato del processo
viene, (e cioe c.opia di tutti i registri di CPU piu informazioni aggiuntive __
illustrate m FIgura 9.8) Vlene salvato nel suo stack, mentre 11 contenuto del TSS del
procesao che viene messo in esecuzione viene caricato nei registri di CPU. Si tratta, in
sostanza, eli un e proprio cambiamento di contesto eseguito esclusivamente pet .... ,"
via hardware al flne di rendere mjnimo il tempo di commutazione.

1;.1;, 'III d', ':'
,. ..' '1-:/."
Jjl
. .
"I";, ,.,r..,,'
"

r. ..
1 ,;n'.

,., 'lti' '<.". "
. ','
"'. ";':
. !""",e ",'"
..... "",,,,,...""''''''
".",

, (!
rklo$<,,;>;"
""'.. , i' ,
;""-;; ".!" .
'J" "
" .. , ' '" ", , '
''-'.,,1(," ,i ''\'"''''
X/" .",t:!t
f
...;"
il processo conente esegue un'istruzione di JMP 0 CALL a una porta eli processo; . :,/f
t
'
r
"", ' ,''''''
.. ' .. ,
'>''':''1"1 : "'I
.: ';'t.\,".\. ,.' 't';i"!'"
'.'i .. .";}7 , '
..'
1li
l'l.....,".. ,..
I

" ..
,>, , ..,. .,'
, , .;,,-:.
..>:,,'%1
1
,l'lll",... ,
r:ifv.
s
.'.,
".";1.
- ., .
r ,
:,.-
.
.-;
..
-
: -'<i;;{t' ,'-,
""""'>"1; li'm','I'
":.1/(."":<'
;'
, .' I'." ....,
.. 4"" .
"....,
.' ,S',,,.,,,, ...
..

,.. ,ry "";'-',
"",ll . "'" t,ll"',,
",I< ,'!I'"
:':"."\?:
"
;,.)J !;: ,.
: ' "
,.
Figura ndescrittore di TSS. In questa figura i campi sona riportati neUe posizioni
che essi hanna nella realta,. n byte piu significativo contiene gli otto bit piu significativi
deUa BASE. I quattro bit piu significativi di LIMITE sono presi da un byte usato anche per
contenere G, D e AVL. Del bit B (Bu3Y) del campo TYPE si parla piu avanti.
Essendo i1 vettore eli stato un segmento, esso viene
descrittore eli segmento il cui formato ein Figura9.8.
410
\
\
\

\
-
\
-
1
-
- \
-
\
-
\
..
\

I
]-
I
r
-
-
,-
I
r
I
r
-
-
-
1-
-
-
I-
I
I-
I
I
r
1-
r
r
r
Veri.fka ,a.; segmElllti, ,
9.5,1
'" " ,,',.' " l: I
': ,.; ,.". '" :1.,." ,.;.:' ":' . " ." ,J. .. ,__ , .. l, .....
.t.ipq .di'. t!a1tqper.iorie
1a natUl'a su cui'Yiene tentataj, port.a -dil,.g8neriche
'",':.', .... ,. _ .. ;. '.' ('.' '. . ' ,. '.,. '" ".'
<' , "" . . . .. '. :. . . " , ,...
. .... . ,'. "'''',..."
' "j", ' . " ,. .-, ',q." ,,'. "., -" \ ',.
, 14S
e
J'.eIeniento inclividuato :jn IDT'e una. tiona di intemfziooe: 0 una pOi'1'a di'trappola.- non"c'l!'
comrhuta.-1ione. . ,"-..,".: ., : .,. ," .. , '.' '. "',/", '.. " " ...,:>:.
','
.;; ;.,
..
Ii
,,r ,
".' .
. .
,..,
,..
--' " h, '
.. . I
412 Capit'olo-9 .'. "',,_ ...,1.;;,'.;',
.... . . ':\,''- . :;., La protezlOne 413
-.. '.. '
",,',\., "'1l.'-
. ..
"'>;( .. '
euna'porta::di :La commutazione e alIa st .. . .... . I' D __" .
'sequenza di azioni previste .per-l'lstruzione .CALI:.. ;' :.l eSSa ... violaziom protezwne. Tali dete:mmano 1 n.13.
:'" , .: ',. . :.... "'. " ,,' questa eccezione ha Petretto dl far deposltare un codlce .errore \che
.,. ".-', . . tipo di violazione) suJ,lo stack del sottoprogtamma dl mterruzlOne assoclato
9 5' t . t '. - ':'.' . 't;' . . 1":'"'. ../i1', ,:i:i\l,'!-' (exception handler). In'tat modo, I'eventuale sistema operativo; identificata']a'""usa,
a pro eZlOne. err erl genera I ,":. ;:!' ,ik5puo prendere gli opportuni provvedijnenti. . '''. .
'. : Per esemplificarequesto tlPO dl verifiche, COD'Vlene nfarSl a quanta detto III prece-
Obiettivo diehiarato dei progettisti ". stato quello d',permettere.l" costruzione di sis-?fM, denza (Ofr. 9:2,1) circa Usignifieato dei bit R' di ARB <;leisegmenti di codice e dei bit
.Q1. f i tra- ED e .W per, I e. Se" per una.
. .e j.l P.0D: .. n di scnttura In un eli codlce'o scnttl,ll'a un segmento datI
4t. Jst!1JziQiii .di I/O, non =o}, Sl genera 1eccezlone 13..
.e..aJ. 41. I .sono La pnma. venfica sulla a:Ufl Vlene effettuata quando
S9p'frpn.tl, tt
a
. ... selettore del segmento ecancato in uno del del prOC5sore. Valgono
s.cntture. su segment! op,Pu:e contra l'esecuzlOne di .r;op. .. ': . , : ' .' ..
relatlvl controUi vengono complUtl per ogni istruzione eseguita dana' CPU e im ie- '\";:'. . ., . '.. ... . . . .
gano circa un ciclo e mezzo di clork' s;ccome). tt t' P .: :.' .::i regt.stn:D8,:ES;- FS.e OS sono cancablli escluslvamente con seletton di segment!
,. "'0' "'" . . - ' "" peru sono,a ua 1 eoncorrentemente' . ,"/""" d . di 'bili' " 1 (b't R di ARB 1)
"Ogni dati e i ce accessl ill ettu.ra,. ,1 a . i. . r
condiZlone ill anomalia rilevata genera: urt'eccezione' "'" ' ". '" ". , '" '. . 'l':'',: 011",'- :U - ..;.. ," .: 'O'S .t.;. b"U ,,' . "j;".: . l!' :, 't: './' I. ,:1'1. )' tt' . iii,t :" w"':'" 1\. .. : '1,
L
'" .';. :'. "".-. '., regIstro ecanca e esc uSlvamen e con see on .... cel, ,.
a protezlOne Sl esphca attraverso 1 due' seguent'j"meccariisnu::' ,: ,'. .., ... '. "'; .. '" ....
",,) "ve'r'l'fie' ,>; del' t' .' wt '., .. ,:, '),0, .'.. ' ,. :t.. ;, " .eX .. il registro LDTR ecaricabile con selettori di tabelle LDTj
'ai' IpOUl'aCceB;;ovaJsmgol"segmentl' '. ,".' :.. "... :. .
I - J'. . i .
, .' ., ,'1" . ""j""" .. ., bU' 1" .. - ill . "TSS" .
b), dei livelli di privilegio; '.' .: . .. .. .. :./; '.. ':
e)"isolam,mto de'. ", '., ."" .."'. . .. '." .', " .. ., '''''. . I ",:. di ,U sele!tore ,di poJ:t" ),.Il,,\IDO qU'lo1S"'SI
- ctei si . .. ". .!:. .':." ....':._" :.,. ;.. I: ..... ',.':.',,: .': ,." .',.
iii ... ill .acc;:eder.e .. la .
congruenza tra il tlPO dl accesso e gli attnbutl del segmento Il,eccezione nel .' , """ .. l:. . ". , , .
n.13incasodinonliceitadeIFaccesso. I ._"',::d.- ,',,' .. - .... " ..:" . ,: -;. .. H ,( .11;,.,. ""
I livelli di privilegio hanno 10 scopo di proteggere.PiI1,tegti-ti(dei segtiIenti'confe- .., '. :., '.' ':. ;\ 0":";' '..":, .. .. ".:. ':' :". ..... "::_" ..".:i(....
nent\ 'progralIllI\i e.<lati1i Ult,uso 'lIlt. 9.5.2 Livelli dl prlVlleglO '. .., ,'.: . ',:': '. ':.'. :,.:',., ::, .'"
.1arJn.efIloria . . i
.ct-i.9.gnr' .: 'II ,:,' u; ..di. qqesto:
e W contJ;o un .. . \' @e; oggettg) m memQqa Ul;l mdica:a,quale liyello di
livello.di. privlJegioqua,ido,U'iirqcesso,:\:,,1 ;f'if
i
: .. privilegiQ'" situato t'oggetto:stessQ.,J,a,ge,stione del
opera a un hvello dl. pnvllegt..o;. che, per 1D:, modo
possono essere solo 11. p.r?cesso opera. un di privilegio. 'f$.,\, (l'l' he ... : .! .': I , _. ,.;1.. - _.: ":." :
,. I due n hvellod\ pnVllegu; tPL'-' attraverso due bIt. {ho per-
9a eli qua:ttro ;(8 ;gi
.. ..aJ ,:J,.:( _ I, e 3, In ordme dl pnvllel?o
. . ',;:l'lt pnvl1eglO L<J degli ..
."';':;:!:' .. 13 lIvelli elevatl sono assegnatl
tl.! programm,l 1dati dl .sIstema dt illivello. di
pm basso e tlplqat.!1e.n
te
: ;asSl'gqato,,,, ,prl'<!ioP9s,ll
dagh utentl d, ..In partlcolare, II livello di pm elevato in
.....J. .. '. , .' , ;'" " I. . ... ,... ' .,.. ......, '
" '.. ..... '" .' .. ' I." .. '." ". ,..., _I. '.
'," "iii '.

.. ,,,\ .. . . . .. ., .
", Up.gt1H!ttco. ne!
,.' conrrontare i tiveur di" privllegib; farenio "riJerimento'- -pe)'" quantei posSibiTe ..; al'nUmero' the 'cOdifica
iI' 'o.gnl caso Hvello piu di uri :8e' ..a.w un
numetopltL.plccolo'(plU.'grande):.:."'; co' '. '" ...._.. . ."'."
. ;ii ",I,n,'
". . " ,
,',C'. . \'
'T'
1
,
]-
I
r
-
-
,-
I
r
I
r
-
-
-
1-
-
-
I-
I
I-
I
I
r
1-
r
r
r
Veri.fka ,a.; segmElllti, ,
9.5,1
'" " ,,',.' " l: I
': ,.; ,.". '" :1.,." ,.;.:' ":' . " ." ,J. .. ,__ , .. l, .....
.t.ipq .di'. t!a1tqper.iorie
1a natUl'a su cui'Yiene tentataj, port.a -dil,.g8neriche
'",':.', .... ,. _ .. ;. '.' ('.' '. . ' ,. '.,. '" ".'
<' , "" . . . .. '. :. . . " , ,...
. .... . ,'. "'''',..."
' "j", ' . " ,. .-, ',q." ,,'. "., -" \ ',.
, 14S
e
J'.eIeniento inclividuato :jn IDT'e una. tiona di intemfziooe: 0 una pOi'1'a di'trappola.- non"c'l!'
comrhuta.-1ione. . ,"-..,".: ., : .,. ," .. , '.' '. "',/", '.. " " ...,:>:.
','
.;; ;.,
..
Ii
,,r ,
".' .
. .
,..,
,..
--' " h, '
.. . I
412 Capit'olo-9 .'. "',,_ ...,1.;;,'.;',
.... . . ':\,''- . :;., La protezlOne 413
-.. '.. '
",,',\., "'1l.'-
. ..
"'>;( .. '
euna'porta::di :La commutazione e alIa st .. . .... . I' D __" .
'sequenza di azioni previste .per-l'lstruzione .CALI:.. ;' :.l eSSa ... violaziom protezwne. Tali dete:mmano 1 n.13.
:'" , .: ',. . :.... "'. " ,,' questa eccezione ha Petretto dl far deposltare un codlce .errore \che
.,. ".-', . . tipo di violazione) suJ,lo stack del sottoprogtamma dl mterruzlOne assoclato
9 5' t . t '. - ':'.' . 't;' . . 1":'"'. ../i1', ,:i:i\l,'!-' (exception handler). In'tat modo, I'eventuale sistema operativo; identificata']a'""usa,
a pro eZlOne. err erl genera I ,":. ;:!' ,ik5puo prendere gli opportuni provvedijnenti. . '''. .
'. : Per esemplificarequesto tlPO dl verifiche, COD'Vlene nfarSl a quanta detto III prece-
Obiettivo diehiarato dei progettisti ". stato quello d',permettere.l" costruzione di sis-?fM, denza (Ofr. 9:2,1) circa Usignifieato dei bit R' di ARB <;leisegmenti di codice e dei bit
.Q1. f i tra- ED e .W per, I e. Se" per una.
. .e j.l P.0D: .. n di scnttura In un eli codlce'o scnttl,ll'a un segmento datI
4t. Jst!1JziQiii .di I/O, non =o}, Sl genera 1eccezlone 13..
.e..aJ. 41. I .sono La pnma. venfica sulla a:Ufl Vlene effettuata quando
S9p'frpn.tl, tt
a
. ... selettore del segmento ecancato in uno del del prOC5sore. Valgono
s.cntture. su segment! op,Pu:e contra l'esecuzlOne di .r;op. .. ': . , : ' .' ..
relatlvl controUi vengono complUtl per ogni istruzione eseguita dana' CPU e im ie- '\";:'. . ., . '.. ... . . . .
gano circa un ciclo e mezzo di clork' s;ccome). tt t' P .: :.' .::i regt.stn:D8,:ES;- FS.e OS sono cancablli escluslvamente con seletton di segment!
,. "'0' "'" . . - ' "" peru sono,a ua 1 eoncorrentemente' . ,"/""" d . di 'bili' " 1 (b't R di ARB 1)
"Ogni dati e i ce accessl ill ettu.ra,. ,1 a . i. . r
condiZlone ill anomalia rilevata genera: urt'eccezione' "'" ' ". '" ". , '" '. . 'l':'',: 011",'- :U - ..;.. ," .: 'O'S .t.;. b"U ,,' . "j;".: . l!' :, 't: './' I. ,:1'1. )' tt' . iii,t :" w"':'" 1\. .. : '1,
L
'" .';. :'. "".-. '., regIstro ecanca e esc uSlvamen e con see on .... cel, ,.
a protezlOne Sl esphca attraverso 1 due' seguent'j"meccariisnu::' ,: ,'. .., ... '. "'; .. '" ....
",,) "ve'r'l'fie' ,>; del' t' .' wt '., .. ,:, '),0, .'.. ' ,. :t.. ;, " .eX .. il registro LDTR ecaricabile con selettori di tabelle LDTj
'ai' IpOUl'aCceB;;ovaJsmgol"segmentl' '. ,".' :.. "... :. .
I - J'. . i .
, .' ., ,'1" . ""j""" .. ., bU' 1" .. - ill . "TSS" .
b), dei livelli di privilegio; '.' .: . .. .. .. :./; '.. ':
e)"isolam,mto de'. ", '., ."" .."'. . .. '." .', " .. ., '''''. . I ",:. di ,U sele!tore ,di poJ:t" ),.Il,,\IDO qU'lo1S"'SI
- ctei si . .. ". .!:. .':." ....':._" :.,. ;.. I: ..... ',.':.',,: .': ,." .',.
iii ... ill .acc;:eder.e .. la .
congruenza tra il tlPO dl accesso e gli attnbutl del segmento Il,eccezione nel .' , """ .. l:. . ". , , .
n.13incasodinonliceitadeIFaccesso. I ._"',::d.- ,',,' .. - .... " ..:" . ,: -;. .. H ,( .11;,.,. ""
I livelli di privilegio hanno 10 scopo di proteggere.PiI1,tegti-ti(dei segtiIenti'confe- .., '. :., '.' ':. ;\ 0":";' '..":, .. .. ".:. ':' :". ..... "::_" ..".:i(....
nent\ 'progralIllI\i e.<lati1i Ult,uso 'lIlt. 9.5.2 Livelli dl prlVlleglO '. .., ,'.: . ',:': '. ':.'. :,.:',., ::, .'"
.1arJn.efIloria . . i
.ct-i.9.gnr' .: 'II ,:,' u; ..di. qqesto:
e W contJ;o un .. . \' @e; oggettg) m memQqa Ul;l mdica:a,quale liyello di
livello.di. privlJegioqua,ido,U'iirqcesso,:\:,,1 ;f'if
i
: .. privilegiQ'" situato t'oggetto:stessQ.,J,a,ge,stione del
opera a un hvello dl. pnvllegt..o;. che, per 1D:, modo
possono essere solo 11. p.r?cesso opera. un di privilegio. 'f$.,\, (l'l' he ... : .! .': I , _. ,.;1.. - _.: ":." :
,. I due n hvellod\ pnVllegu; tPL'-' attraverso due bIt. {ho per-
9a eli qua:ttro ;(8 ;gi
.. ..aJ ,:J,.:( _ I, e 3, In ordme dl pnvllel?o
. . ',;:l'lt pnvl1eglO L<J degli ..
."';':;:!:' .. 13 lIvelli elevatl sono assegnatl
tl.! programm,l 1dati dl .sIstema dt illivello. di
pm basso e tlplqat.!1e.n
te
: ;asSl'gqato,,,, ,prl'<!ioP9s,ll
dagh utentl d, ..In partlcolare, II livello di pm elevato in
.....J. .. '. , .' , ;'" " I. . ... ,... ' .,.. ......, '
" '.. ..... '" .' .. ' I." .. '." ". ,..., _I. '.
'," "iii '.

.. ,,,\ .. . . . .. ., .
", Up.gt1H!ttco. ne!
,.' conrrontare i tiveur di" privllegib; farenio "riJerimento'- -pe)'" quantei posSibiTe ..; al'nUmero' the 'cOdifica
iI' 'o.gnl caso Hvello piu di uri :8e' ..a.w un
numetopltL.plccolo'(plU.'grande):.:."'; co' '. '" ...._.. . ."'."
. ;ii ",I,n,'
". . " ,
,',C'. . \'
'T'
1
,
La procedura E,
Una procedura, ovvero
dati
dl oodice
o Segrnento
11 Segrnento
eseiuibUe
autcrizze.to
proibito
,0
..-
.4
<'
<
b'

i:-
.:/
Legendll:
-- Accesso
Accesso
essere raggiunta solo da un processo che esegue a un livello pi > p, ovvero a un
livello meno 0 parimenti privilegiato. Poiche per assunzione i programmi degli
anelli esterni sono meno affidabili di quelli interni, questo criterio che un
programma affidabile non pub eseguire una procedura meno affidabile. n criterio
Be schematizzato in Figura9.11.
La protez.ione 415
Questo criterio garantisce che i dati possono essere rnanipolati solo cia progra.mmi
che sana, per 10 meno, aHo stesso livello di privilegio dei dati stessi. n criterio A
eschematizzato in Figura9.10.
CPL (Current Privilege Leven. In ogni istante di tempo, nella macchina c'e un
processo in esecuzione. D livello di privilegio del processo in esecuzione costituisce
illivello qi privilegio corrente. In pratica CPL edata dai due bit meno significativi
del registro
Prima di procedere neUa spiegazione cii come i due criteri sapra riportati trovino
attuazione, e necessaria definire in modo preciso quali sono
,
e da cosa derivano, i
livelli controllati dai meccanismi di protezione.
.9.5.4 I livelli controllati
Programmi utenle
..,.......eervizi di sistema
....- del S.O.
Chiamale al sistem
'"

iJ'!
's'"



).'
"-'SfI"
."

1"/
""'.' "" 1
.

:... "l
"'I,c
..
,/[[.;a;:
" , 1,:,.
. ,
;. l'
.:' 'i '

"m'
,
:!Z
)
'. -r.'
""1 .,.
o

..

:;-...-. I Interfacce software di
3 7 . .
, tra anelh

I
Figura 9.9 Anelli eli proteziooe. L'anello 0 e il piu privilegiato e quind;i piu protetto, Panella
3 il meno privilegiato. .;
...
.: .;;."
.,
',:.';'''":
assoluto, e(dovrebbe essere) assegnato ai segmenti di sistema contenenti i programmi
e i dati piu critici (doe il nucleo del sistema), mentre i livelli intermedi sono assegnati ...
ai segmenti contenenti i sottoprogrammj di servizio messi a disposizione dall'utente
(tipicamente per effettuare Ie operazioni di 1/0) e Ie eventuali personalizzazioni
progratpmj applicativi. E ovviamente possibile utilizzare due soli livelli di privilegio,
uno per i segmenti di sistema (livello 0) e l'altro per i segmenti di utente (livello. ..
3), come a.ccade in molti altri processod. Per quanta concerne it processo attivo,
eopportuno che esso, a ogni istante
,
operi al liveUo eli privilegio minimo passibile
,
,.1,
compatibilmente con Ie operaziani che cleve effettuare.
n cantralla della protezione si attua:
a) ogni volta in cui viene indirizzato un dato in un segmento diverso da quelli
correntemente individuati dai (selettori nei) registri di segmento. In parole
quando il selettore di un descrittore vlene caricato in un registro di segmentoj
. -
b) quando un'istruzione di salto 0 di chiamata di sottoprogramma portano fuori da!
segmento corrente, determinanda il caricamento di un nuavo selettore in CSj
c) in presenza di una commutazione tra processij
d) in seguito alla risposta a una interruzione.
I criteri generali per la protezione attraverso i livelli di privilegio sana i seguenti due.
Criteria A - Protezione dei dati' I dati contenuti in un segmento avente HveHo di
privilegio P possono essere letti/scritti solo cia processi che eseguono a un HveHo
rI PI ovvero a un livello piu privilegiato 0 parimenti privilegio dei dati stessi.
9.5.3 Criteri general; per il controllo dei privilegi
414 Capitola 9
\
I
\
\
\
I
\
I
\
\
\

-
-
-

-
-

-
-
-
- \
\
- \
La procedura E,
Una procedura, ovvero
dati
dl oodice
o Segrnento
11 Segrnento
eseiuibUe
autcrizze.to
proibito
,0
..-
.4
<'
<
b'

i:-
.:/
Legendll:
-- Accesso
Accesso
essere raggiunta solo da un processo che esegue a un livello pi > p, ovvero a un
livello meno 0 parimenti privilegiato. Poiche per assunzione i programmi degli
anelli esterni sono meno affidabili di quelli interni, questo criterio che un
programma affidabile non pub eseguire una procedura meno affidabile. n criterio
Be schematizzato in Figura9.11.
La protez.ione 415
Questo criterio garantisce che i dati possono essere rnanipolati solo cia progra.mmi
che sana, per 10 meno, aHo stesso livello di privilegio dei dati stessi. n criterio A
eschematizzato in Figura9.10.
CPL (Current Privilege Leven. In ogni istante di tempo, nella macchina c'e un
processo in esecuzione. D livello di privilegio del processo in esecuzione costituisce
illivello qi privilegio corrente. In pratica CPL edata dai due bit meno significativi
del registro
Prima di procedere neUa spiegazione cii come i due criteri sapra riportati trovino
attuazione, e necessaria definire in modo preciso quali sono
,
e da cosa derivano, i
livelli controllati dai meccanismi di protezione.
.9.5.4 I livelli controllati
Programmi utenle
..,.......eervizi di sistema
....- del S.O.
Chiamale al sistem
'"

iJ'!
's'"



).'
"-'SfI"
."

1"/
""'.' "" 1
.

:... "l
"'I,c
..
,/[[.;a;:
" , 1,:,.
. ,
;. l'
.:' 'i '

"m'
,
:!Z
)
'. -r.'
""1 .,.
o

..

:;-...-. I Interfacce software di
3 7 . .
, tra anelh

I
Figura 9.9 Anelli eli proteziooe. L'anello 0 e il piu privilegiato e quind;i piu protetto, Panella
3 il meno privilegiato. .;
...
.: .;;."
.,
',:.';'''":
assoluto, e(dovrebbe essere) assegnato ai segmenti di sistema contenenti i programmi
e i dati piu critici (doe il nucleo del sistema), mentre i livelli intermedi sono assegnati ...
ai segmenti contenenti i sottoprogrammj di servizio messi a disposizione dall'utente
(tipicamente per effettuare Ie operazioni di 1/0) e Ie eventuali personalizzazioni
progratpmj applicativi. E ovviamente possibile utilizzare due soli livelli di privilegio,
uno per i segmenti di sistema (livello 0) e l'altro per i segmenti di utente (livello. ..
3), come a.ccade in molti altri processod. Per quanta concerne it processo attivo,
eopportuno che esso, a ogni istante
,
operi al liveUo eli privilegio minimo passibile
,
,.1,
compatibilmente con Ie operaziani che cleve effettuare.
n cantralla della protezione si attua:
a) ogni volta in cui viene indirizzato un dato in un segmento diverso da quelli
correntemente individuati dai (selettori nei) registri di segmento. In parole
quando il selettore di un descrittore vlene caricato in un registro di segmentoj
. -
b) quando un'istruzione di salto 0 di chiamata di sottoprogramma portano fuori da!
segmento corrente, determinanda il caricamento di un nuavo selettore in CSj
c) in presenza di una commutazione tra processij
d) in seguito alla risposta a una interruzione.
I criteri generali per la protezione attraverso i livelli di privilegio sana i seguenti due.
Criteria A - Protezione dei dati' I dati contenuti in un segmento avente HveHo di
privilegio P possono essere letti/scritti solo cia processi che eseguono a un HveHo
rI PI ovvero a un livello piu privilegiato 0 parimenti privilegio dei dati stessi.
9.5.3 Criteri general; per il controllo dei privilegi
414 Capitola 9
\
I
\
\
\
I
\
I
\
\
\

-
-
-

-
-

-
-
-
- \
\
- \

I.

\ .

..

..
1.

I
I .
I
I
I.
1.
\.
I.
1
I.
',i'l,,";

.'
anche se un processo 5i porta a un 'lLvello piu privilegiato,
il suo effettivo privilegio corrisp'on'Qe a, quello 'irripostato originaria,mente. Vale
dvnqve la relazione EPL = max(RPL,CPL)!7.. , . '.
,.
,
. .
. .
..
'.'
"
.,
..
...
,.
. '"
.j ,. .
.' .
t" ,
. "
; . ';
,
, , !
: "
, " ..
..
," ' .. '
.,:
,:.
E
..
,,,
o
..' .
'..
.f:i
<'

.'
" ..-
ft,.
,
. .,.
.,.' .

.
.,
,..
, ,..
.' .,) ' ,
. IT,
Ca.pitolo ,9
.. ( ., ...
, " ..
' ."-
'. "
r,' .,:. .,
..:.:'.1..'--, I.
. .
,1'
: .


,.... ,
,
. .
,. . .
. '. .'
La 41.1
- '

"""r __ ,
_,"
,,"rr-: . '.
i" .,*".,.,.,
..,..
!ffi<". ..,.1
,{"e'
'
,.
,;:1." .

" . ;.r;.'"
,l,,l:{..- ,
',',;'0\:;,':' '
'y

-:' .
,
,. ..
,
;.,p. "..... . ."
9.6 Protezione negli acceSSl
,'1., .
., 'i' l
; ,1,. ',-, - .'
,::"Vengono ora )n cui si ha cantrolla di privilegio:
!.j.. , . neWaccesso ai dati, nel passaggt dl cantralla e nelle commutazlom eli processo.
. ,,-:-,tr ':" " '. - , " .
..:' I ' , ,
""l,,.,,r-.. , ' . '.
'.., .. ,. ,. .'. "'.,'
. ...... :.; ,. I .
Protezione nell'accesso ai dati
..... ",.... ,ru.il"'>','
. _, ..
!E1S@gm@nlodieodlee 'r\' l'.".' ;!:. 1),:<
Acc@sso prolbito L::J eseguibil@ . , di '$l,.dato iQ. memoria iL.selettor-edel .segmentd. sia
- - Accesso aulorlz:zalo a sermenl
o
. conlorrne . ;iii,E.:p'h... 't di to (DS ES FS GS S5) All' tt d l' t
, ,., :.., ',. ",. ., ,; , ,), ""'.'" 1', ..
Fd,gl ura':'1
1
1
1
'C",zLzLazlJoMPne deREI crtl:er
L
to B neldPassahig?10 (sel?,zallPo2rt'Ldl Chlamedata
j
.. ..
e 0 ranu e , e ,a pFoce Uf.!!- c aman e t:: a lye 0 . a proc :." " . , .. ' :':: : , " " _ '. : .... .' ,_." ,
di livello 3 non pub essere chiamata eSsendo meno 'p:rivilegi'ata, Le procedure piu ;. 't '. t6 d' ,j; ('Cfr" 9 4)'
giate possono essere raggiunte diretta.mente sol9 se appartengono a un segmento di codice'!W ' ....:.",C:- ;A"t \ n, '. \q!-J,... .'.. ' ..,..,:,:: - .. ,' .. iT ".' ', .....-
confonne. II vincolo di codice 'conforme viene rimosso conl'uso delle porte di chiamata.. .. up. ..
. '. .. Uvellt:p;.. di
.' '.: .!J0ll. .to\l!1.4.tq '"
DPL (Descriptor LetieQ, Ogri.i: descrittore ha un"suo di un a hvello pm pnvIlegtato .. ' "',.'1' .
rappresentaw da!. campo DPL del byte ARB. Tale campo costltmsce 11 hvello ncnteno A presuppone non solo che sla verificata la condiiione cpr; < DPL,
privilegio (segmen:to 0 porta) da.,qliel descrittore, la c?ndizione!ll', L < DP..!-,,' 0v.ve,ro .sia ad un non
"', , .'. pnvilegIato di quanta nch1esto. II A.sr-ttapl,lce:qumdi nella condlZlOne
19
:
RPL (Reque3tor's Privilege LeveQ, Livello di priv'j(egiO' ael selettore impiegato pe(\:\r. ' , : ' ". ".,:... , "'., ,-. ; '. ",. .
. dir' d .' d t' . d' alto E ' 'fi t tt .," . 11!1' . . "'D' :<DPL ..... (91)
lTI 1zzare UD. ato o. una' es . sso e speel. ca 0 a raverso.1.1', ;':. . . .. __ ._. __-P.-4,,k -,. .., .. -'.... .
campo RPL (I due bit meno slgrpficatIvl) del selettore 'che eompare nel .. !', . " ' . "fi , . . d .
. d" dll"t ,. "RP' Lt', . -"d"'; '". ;"t" Itt . caper 'accessoalSegmentl atl
In IDZZO e lS rUZlOne. Lll.erylene quan 0 Vlene,caIlca o'un se e ore In UIT /.; " h t' t" F' 9 12
, ,.' '. ...' ...., , ,. 'I' , "::.Ill 7.;":.... sono Be ema lzza 1 In 19ura, , '
regIstro di segmentd: corp.ponente selettore <',.. ,II,\1t:.( " .. . , ,
.. ' [,1;\ :;.:': ...... ,
.. I, ">'(''''.1
', . , '., .' __ ., "'''' , , .,." ,. '0/.1$"
. '; .. , :; . . . ' " ,'
stemarn"programiIH m memo!!a: agglUstana sra'l DPL 'neld.,cnttlin; che' 9.6.2 ProtezlOne ne! passagg! dl .. controllu .
nelle istruzioni. Se, per esempio
J
si ha a che fare can un programma utente, it .'. ... .' _. -" ....
assegnera, di no:ma, 3 ai DPL nei d,i segmento e agli,RPL. " \ '.'i:.. conformi' "n trite'rio B 'prevede che un processo di livello p' possa chia-
pm avant! un puo ,:,anare 11 J mare una procedura in. un segmento.. di liveno p < p'. Apparentemente, il
hveUo di prtVllegIO_ E perCH) posslblle che un processo 51 POrtl dal hvello 3 a un,.'.' trasferimento del cOQtrQUo 'fa.. paS&are' U. processo chiamante da livello p' a Hvello p.
livello piu privilegiato
16
, n processo in questione cont!pua, per.o :; de] priv.,Ueuio. pOS$ibile, cqI). ,CA:LL , tp.a qi
che hanno RPL=3 nei selettori (che compaiono nel campo dell'indirizzo delle istru-S'l, .".,,,.', " , '.. " .0 ' ....." ,. ' ....,. , .. ,_.. :: ,"'.": ,.. <"..:. .:, .. ..,
.In di . .. ' ..., .. . ,..
?i '.11 ", ricordi che minore e numero, e il privilegio.
del hvello drpr1vrleglO espresso-da RPL:
(
, , . 1\ C' d J a" .,.,. d' '':''{' ., l#.:' dl d,e . task" . ,." .",.',. '. ' " . '. "
.. , e : ' .. '13. ..
,I .. , ',seaso 'cheA,'e 11, :livello meno: pnvl1egt..a.to' tra. CPt e RPL, portare'II 'Proprio- GPL ad 'un valore 'Inferlote'8o queHo n 'V&lote 't.nlzlale"ll quello dato daJ.
..' ... : ..1.',:' ... :;,I( ,.,. ',:: ",:' :. .,_ '.,.: l,:, .. ". :" ... ! '. . ,;' . : .......,.. ::"i
l
'} ;. Loader cbe ba carlca.to it programma in memoria. e ha assegnato al programma U prlvilegio cbe gli
:, ,. .,:,., ";,":1 :... , -:' :,;.'. ,.'f':,.:.' ,." .. :":., ".,., .. .. 'd,', compete, mettendo aposto tutti gli RPL in tutti iselettori. Dunqueil CPLdi unprocesso non
l6 '''h' ' II d" . dl:-' dlCPL ,,-.. potracheessereminoreougualediqualunqueRPLchecompaianelsuocorpo,
OVVlamente Clu a nscontro ne a lmmUZlone e VdJ.ore e . ' ,,' .,," :. ' >
'
,.."'.
,
..
.". ,
416

I.

\ .

..

..
1.

I
I .
I
I
I.
1.
\.
I.
1
I.
',i'l,,";

.'
anche se un processo 5i porta a un 'lLvello piu privilegiato,
il suo effettivo privilegio corrisp'on'Qe a, quello 'irripostato originaria,mente. Vale
dvnqve la relazione EPL = max(RPL,CPL)!7.. , . '.
,.
,
. .
. .
..
'.'
"
.,
..
...
,.
. '"
.j ,. .
.' .
t" ,
. "
; . ';
,
, , !
: "
, " ..
..
," ' .. '
.,:
,:.
E
..
,,,
o
..' .
'..
.f:i
<'

.'
" ..-
ft,.
,
. .,.
.,.' .

.
.,
,..
, ,..
.' .,) ' ,
. IT,
Ca.pitolo ,9
.. ( ., ...
, " ..
' ."-
'. "
r,' .,:. .,
..:.:'.1..'--, I.
. .
,1'
: .


,.... ,
,
. .
,. . .
. '. .'
La 41.1
- '

"""r __ ,
_,"
,,"rr-: . '.
i" .,*".,.,.,
..,..
!ffi<". ..,.1
,{"e'
'
,.
,;:1." .

" . ;.r;.'"
,l,,l:{..- ,
',',;'0\:;,':' '
'y

-:' .
,
,. ..
,
;.,p. "..... . ."
9.6 Protezione negli acceSSl
,'1., .
., 'i' l
; ,1,. ',-, - .'
,::"Vengono ora )n cui si ha cantrolla di privilegio:
!.j.. , . neWaccesso ai dati, nel passaggt dl cantralla e nelle commutazlom eli processo.
. ,,-:-,tr ':" " '. - , " .
..:' I ' , ,
""l,,.,,r-.. , ' . '.
'.., .. ,. ,. .'. "'.,'
. ...... :.; ,. I .
Protezione nell'accesso ai dati
..... ",.... ,ru.il"'>','
. _, ..
!E1S@gm@nlodieodlee 'r\' l'.".' ;!:. 1),:<
Acc@sso prolbito L::J eseguibil@ . , di '$l,.dato iQ. memoria iL.selettor-edel .segmentd. sia
- - Accesso aulorlz:zalo a sermenl
o
. conlorrne . ;iii,E.:p'h... 't di to (DS ES FS GS S5) All' tt d l' t
, ,., :.., ',. ",. ., ,; , ,), ""'.'" 1', ..
Fd,gl ura':'1
1
1
1
'C",zLzLazlJoMPne deREI crtl:er
L
to B neldPassahig?10 (sel?,zallPo2rt'Ldl Chlamedata
j
.. ..
e 0 ranu e , e ,a pFoce Uf.!!- c aman e t:: a lye 0 . a proc :." " . , .. ' :':: : , " " _ '. : .... .' ,_." ,
di livello 3 non pub essere chiamata eSsendo meno 'p:rivilegi'ata, Le procedure piu ;. 't '. t6 d' ,j; ('Cfr" 9 4)'
giate possono essere raggiunte diretta.mente sol9 se appartengono a un segmento di codice'!W ' ....:.",C:- ;A"t \ n, '. \q!-J,... .'.. ' ..,..,:,:: - .. ,' .. iT ".' ', .....-
confonne. II vincolo di codice 'conforme viene rimosso conl'uso delle porte di chiamata.. .. up. ..
. '. .. Uvellt:p;.. di
.' '.: .!J0ll. .to\l!1.4.tq '"
DPL (Descriptor LetieQ, Ogri.i: descrittore ha un"suo di un a hvello pm pnvIlegtato .. ' "',.'1' .
rappresentaw da!. campo DPL del byte ARB. Tale campo costltmsce 11 hvello ncnteno A presuppone non solo che sla verificata la condiiione cpr; < DPL,
privilegio (segmen:to 0 porta) da.,qliel descrittore, la c?ndizione!ll', L < DP..!-,,' 0v.ve,ro .sia ad un non
"', , .'. pnvilegIato di quanta nch1esto. II A.sr-ttapl,lce:qumdi nella condlZlOne
19
:
RPL (Reque3tor's Privilege LeveQ, Livello di priv'j(egiO' ael selettore impiegato pe(\:\r. ' , : ' ". ".,:... , "'., ,-. ; '. ",. .
. dir' d .' d t' . d' alto E ' 'fi t tt .," . 11!1' . . "'D' :<DPL ..... (91)
lTI 1zzare UD. ato o. una' es . sso e speel. ca 0 a raverso.1.1', ;':. . . .. __ ._. __-P.-4,,k -,. .., .. -'.... .
campo RPL (I due bit meno slgrpficatIvl) del selettore 'che eompare nel .. !', . " ' . "fi , . . d .
. d" dll"t ,. "RP' Lt', . -"d"'; '". ;"t" Itt . caper 'accessoalSegmentl atl
In IDZZO e lS rUZlOne. Lll.erylene quan 0 Vlene,caIlca o'un se e ore In UIT /.; " h t' t" F' 9 12
, ,.' '. ...' ...., , ,. 'I' , "::.Ill 7.;":.... sono Be ema lzza 1 In 19ura, , '
regIstro di segmentd: corp.ponente selettore <',.. ,II,\1t:.( " .. . , ,
.. ' [,1;\ :;.:': ...... ,
.. I, ">'(''''.1
', . , '., .' __ ., "'''' , , .,." ,. '0/.1$"
. '; .. , :; . . . ' " ,'
stemarn"programiIH m memo!!a: agglUstana sra'l DPL 'neld.,cnttlin; che' 9.6.2 ProtezlOne ne! passagg! dl .. controllu .
nelle istruzioni. Se, per esempio
J
si ha a che fare can un programma utente, it .'. ... .' _. -" ....
assegnera, di no:ma, 3 ai DPL nei d,i segmento e agli,RPL. " \ '.'i:.. conformi' "n trite'rio B 'prevede che un processo di livello p' possa chia-
pm avant! un puo ,:,anare 11 J mare una procedura in. un segmento.. di liveno p < p'. Apparentemente, il
hveUo di prtVllegIO_ E perCH) posslblle che un processo 51 POrtl dal hvello 3 a un,.'.' trasferimento del cOQtrQUo 'fa.. paS&are' U. processo chiamante da livello p' a Hvello p.
livello piu privilegiato
16
, n processo in questione cont!pua, per.o :; de] priv.,Ueuio. pOS$ibile, cqI). ,CA:LL , tp.a qi
che hanno RPL=3 nei selettori (che compaiono nel campo dell'indirizzo delle istru-S'l, .".,,,.', " , '.. " .0 ' ....." ,. ' ....,. , .. ,_.. :: ,"'.": ,.. <"..:. .:, .. ..,
.In di . .. ' ..., .. . ,..
?i '.11 ", ricordi che minore e numero, e il privilegio.
del hvello drpr1vrleglO espresso-da RPL:
(
, , . 1\ C' d J a" .,.,. d' '':''{' ., l#.:' dl d,e . task" . ,." .",.',. '. ' " . '. "
.. , e : ' .. '13. ..
,I .. , ',seaso 'cheA,'e 11, :livello meno: pnvl1egt..a.to' tra. CPt e RPL, portare'II 'Proprio- GPL ad 'un valore 'Inferlote'8o queHo n 'V&lote 't.nlzlale"ll quello dato daJ.
..' ... : ..1.',:' ... :;,I( ,.,. ',:: ",:' :. .,_ '.,.: l,:, .. ". :" ... ! '. . ,;' . : .......,.. ::"i
l
'} ;. Loader cbe ba carlca.to it programma in memoria. e ha assegnato al programma U prlvilegio cbe gli
:, ,. .,:,., ";,":1 :... , -:' :,;.'. ,.'f':,.:.' ,." .. :":., ".,., .. .. 'd,', compete, mettendo aposto tutti gli RPL in tutti iselettori. Dunqueil CPLdi unprocesso non
l6 '''h' ' II d" . dl:-' dlCPL ,,-.. potracheessereminoreougualediqualunqueRPLchecompaianelsuocorpo,
OVVlamente Clu a nscontro ne a lmmUZlone e VdJ.ore e . ' ,,' .,," :. ' >
'
,.."'.
,
..
.". ,
416
=\
\
- \
DPL del segmento destinazione = CP L (il sottoprogramma chiamato deve avere
pari privilegi del processo chiamante),
DPL della porta di chiamata > EPL (Ia porta di chiamata deve essere non pili
privilegiata del processa chiamante);
20Si ricordi che Ie porte risiedono in una tabella. dei descrittori e non in memoria
,
DO
DESCR1TTORE DEL SEGMENTO
CODleE DESTINA,7.IONE
DESCRITTORE DEL SEGMENTO OPER.
I
I OFL I, ,I
I
,
,
REGJSTRO CS CORRENTE
I
' ICPL
CONTROLLO
01 PR!VILEGlO
._._-
I IDPLI I
REGISTRO CS CORRENTE
I
CPL
DEL SEGMENTO OPERANDO
I
I RPL
CONTROLLO
DI PRIVILEGIO
s
Capitola 9
Figura 9.12 Verifica del privilegio per I'accesso ai segmenti dati.
'...."." ...
"',..;,.:.
..-
",,,.,,-:.,.
'_'w.,,, ..,
,.
,utt!;f: ,
..__
::.:
:,
:.
, ""',',, '
c. 'I....' ..'"
Le porte di chiamata Nella discussione precedeote si esupposto che i passaggi di
-cantrolla non fossero mediati dalle porte d.i chiamata. Una porta eun descrittore in
uno dei formati illustrati in Figura 9.5.
l)na. porta cli. specifica punta di ing:esso Del ?rogramma chiamato e
serve a dlsaccopplare il programma chiamato dal chlamante, 10 'quanto, can la porta
di l'indirizzo enon all'utente e nan ealtera?ile cia
quest1
2
.
O
, Questa puo. vantagglOsa.:nente sfruttata da un SIstema
c,he dlspamblle all'utente un msieme ?i p.orte,
,- aUe funzlODl degh anelh mterw, Attraverso Ie porte, senza nschio dl mtrusiOoe, 1
.. di livello utente possono chiamare Ie funzioni messe a disposizione daJ
operativo 5tesso,
La porta eli chiamata cleve essere sullo stesso a su un anella esterno rispetto a
una porta di chiamata (si ed ., f) ,. ,. , ' /;.-1,: '. quella del programma chiamante e pWltare a un segmento di cadice in un anello non
1 chi
.. v a. pm avan 1 e non 51 ?a del pnvlleglO se ,::lm-r.5, .;; ',. mena protetto di queUo corrente. In altre parole in caso di chiamata (istruzione
a amata aVVlene ill modo diretta come assunto m Flgura911 ".-:;.. . . . '
In tti il t " d ' . .. .' ':;,-:.t.r, ',CALL), Ie regale dl venfica della protezlOne sono:
. eue ,8e raslenmento el controllo non emediate da una porta di chia-'
mata, il salto alla procedura pili privilegiata epermesso solo se il segmento a"livena .. '''' . . . . ..
p e con/orm., ovvero se e1 il bit C del campo ARB del rel-t' 0 d 'tt (FO 'c', DPL della porta d. ch.amata > EPL (la porta d. ch.amata deve essere non pm
)
... IV escn ore 19U-, ';It-' ,,... 1, l'<"':"1.. ' . ii' d I chi L di chi )." u
ra9.13 , In caso contrano si ha violazione della protezione. Un segmento canforme '.. pnv eglata e a porta. amata e un -un
ha .la pr.oprieU, di,eseguire in conforme alliveHo del chiamante. A tal fine, 1a ..' date- meS50 a dlSposlzlone del chlamante dalsistema);
d.i CPU, all a:to della no? il CPL. con it DPL del segmento . ., .
.. Come nsultato
1
illivello di pnvlleglo corrente nsulta immutato, aoche se . DP.L del < CPL .(11 sottoprogramma chiamato cleve avere
Vlene eaegwta una procedura pili privilegiata. . pan 0maggI0Il pnvilegl del processo chlamante).
. "
.... 11 mecca-nismo di chiamata attraverso Ie porte viene schematizzato in Figura9.14,
:fl',. mentre 1a Figura9.15 mestra il dettaglio dell'indirizzamenta porta.
Z;", :' ' Quanto sopra si riferisce aJl'uso delle porte di chiamata attraverso l'istruzione
.' .t(, CALL. L'istruzione CALL permette di innalzare it liveDo di privilegio. Con riferimento
aHa Figura9.14, la chiamata del cadice di livello 0 da parte di PI e P2 tramite CALL,
-"?C porta a: ,valore 0 il privilegio eli PI e P2. Della variazione del livello di privilegio su
.; parla pm sotto (Cfr, 9,7,1)0 ,
\;,1;,::" In Figura 9.16 vengono ,tutti i livelli che verifi?ati nel passare il
:.::;\--' ":"".;'" '.. cantralla attraverso porte dl chlamata. La figura estata nportata In quanto serve a
. .", '. illustrare il significato dei vari livelli di privilegio (CPL, RPL e DPL) .
Le porte di chiamata possono essere anche usate can l'istruziane JMP, rna in questa
\: ,caso non si ha variazione del livello di privilegio. Pertaoto se it sottoprogramma e
.,,;t. piu privilegiato, per essere raggiunto tramite JM-P, seppure can porta di chiamata,
..', """'" ' ch 'I t' f Le I 'I J tt t d'
Figur 9 13 V ill del 'vi! . f" . . . . ,\:';" ' e necessano e 1 segmen 0 Sia can orme. rego e per 1 MP a raverso por e 1
a.l . er ca pn egto per tras enmentl contrallati senza porte. Sl nchlede che \':t"1,1 , I chiamata a segmenti non conformi sana quindi queste:
v ga a relazlOne DPL <CPL. 1:,1:1 \
ji6 .,' ..t' .

:. l' 1 ... '.
. .. ....--r,
!'l1 "
L'uso di segmenti conf?rmi non consente tuttavia di mettere a
sottoprogramnu c:h:e istruzioni in quanto queste ;:.:, ,
lStruZlOfil possono essere esegwte solo se 11 CPL del processo e relativamente piccolo.
-..,.. , N/'"
" )!"L"
" .", ::!-<."
::, .:W';. "'I(i;:'l';,l'
"rz: ' , ;.:.,
",br '..11:''''
': '''.,'i.,;f ,
. ;;;:,' .. ,
-. ...",
';;', , .,
,
418
I
I
I
\
I
I
\
I
I
-
-
-

-
-
"
-
-
-
-
-
-
- \
=1
=\
\
- \
DPL del segmento destinazione = CP L (il sottoprogramma chiamato deve avere
pari privilegi del processo chiamante),
DPL della porta di chiamata > EPL (Ia porta di chiamata deve essere non pili
privilegiata del processa chiamante);
20Si ricordi che Ie porte risiedono in una tabella. dei descrittori e non in memoria
,
DO
DESCR1TTORE DEL SEGMENTO
CODleE DESTINA,7.IONE
DESCRITTORE DEL SEGMENTO OPER.
I
I OFL I, ,I
I
,
,
REGJSTRO CS CORRENTE
I
' ICPL
CONTROLLO
01 PR!VILEGlO
._._-
I IDPLI I
REGISTRO CS CORRENTE
I
CPL
DEL SEGMENTO OPERANDO
I
I RPL
CONTROLLO
DI PRIVILEGIO
s
Capitola 9
Figura 9.12 Verifica del privilegio per I'accesso ai segmenti dati.
'...."." ...
"',..;,.:.
..-
",,,.,,-:.,.
'_'w.,,, ..,
,.
,utt!;f: ,
..__
::.:
:,
:.
, ""',',, '
c. 'I....' ..'"
Le porte di chiamata Nella discussione precedeote si esupposto che i passaggi di
-cantrolla non fossero mediati dalle porte d.i chiamata. Una porta eun descrittore in
uno dei formati illustrati in Figura 9.5.
l)na. porta cli. specifica punta di ing:esso Del ?rogramma chiamato e
serve a dlsaccopplare il programma chiamato dal chlamante, 10 'quanto, can la porta
di l'indirizzo enon all'utente e nan ealtera?ile cia
quest1
2
.
O
, Questa puo. vantagglOsa.:nente sfruttata da un SIstema
c,he dlspamblle all'utente un msieme ?i p.orte,
,- aUe funzlODl degh anelh mterw, Attraverso Ie porte, senza nschio dl mtrusiOoe, 1
.. di livello utente possono chiamare Ie funzioni messe a disposizione daJ
operativo 5tesso,
La porta eli chiamata cleve essere sullo stesso a su un anella esterno rispetto a
una porta di chiamata (si ed ., f) ,. ,. , ' /;.-1,: '. quella del programma chiamante e pWltare a un segmento di cadice in un anello non
1 chi
.. v a. pm avan 1 e non 51 ?a del pnvlleglO se ,::lm-r.5, .;; ',. mena protetto di queUo corrente. In altre parole in caso di chiamata (istruzione
a amata aVVlene ill modo diretta come assunto m Flgura911 ".-:;.. . . . '
In tti il t " d ' . .. .' ':;,-:.t.r, ',CALL), Ie regale dl venfica della protezlOne sono:
. eue ,8e raslenmento el controllo non emediate da una porta di chia-'
mata, il salto alla procedura pili privilegiata epermesso solo se il segmento a"livena .. '''' . . . . ..
p e con/orm., ovvero se e1 il bit C del campo ARB del rel-t' 0 d 'tt (FO 'c', DPL della porta d. ch.amata > EPL (la porta d. ch.amata deve essere non pm
)
... IV escn ore 19U-, ';It-' ,,... 1, l'<"':"1.. ' . ii' d I chi L di chi )." u
ra9.13 , In caso contrano si ha violazione della protezione. Un segmento canforme '.. pnv eglata e a porta. amata e un -un
ha .la pr.oprieU, di,eseguire in conforme alliveHo del chiamante. A tal fine, 1a ..' date- meS50 a dlSposlzlone del chlamante dalsistema);
d.i CPU, all a:to della no? il CPL. con it DPL del segmento . ., .
.. Come nsultato
1
illivello di pnvlleglo corrente nsulta immutato, aoche se . DP.L del < CPL .(11 sottoprogramma chiamato cleve avere
Vlene eaegwta una procedura pili privilegiata. . pan 0maggI0Il pnvilegl del processo chlamante).
. "
.... 11 mecca-nismo di chiamata attraverso Ie porte viene schematizzato in Figura9.14,
:fl',. mentre 1a Figura9.15 mestra il dettaglio dell'indirizzamenta porta.
Z;", :' ' Quanto sopra si riferisce aJl'uso delle porte di chiamata attraverso l'istruzione
.' .t(, CALL. L'istruzione CALL permette di innalzare it liveDo di privilegio. Con riferimento
aHa Figura9.14, la chiamata del cadice di livello 0 da parte di PI e P2 tramite CALL,
-"?C porta a: ,valore 0 il privilegio eli PI e P2. Della variazione del livello di privilegio su
.; parla pm sotto (Cfr, 9,7,1)0 ,
\;,1;,::" In Figura 9.16 vengono ,tutti i livelli che verifi?ati nel passare il
:.::;\--' ":"".;'" '.. cantralla attraverso porte dl chlamata. La figura estata nportata In quanto serve a
. .", '. illustrare il significato dei vari livelli di privilegio (CPL, RPL e DPL) .
Le porte di chiamata possono essere anche usate can l'istruziane JMP, rna in questa
\: ,caso non si ha variazione del livello di privilegio. Pertaoto se it sottoprogramma e
.,,;t. piu privilegiato, per essere raggiunto tramite JM-P, seppure can porta di chiamata,
..', """'" ' ch 'I t' f Le I 'I J tt t d'
Figur 9 13 V ill del 'vi! . f" . . . . ,\:';" ' e necessano e 1 segmen 0 Sia can orme. rego e per 1 MP a raverso por e 1
a.l . er ca pn egto per tras enmentl contrallati senza porte. Sl nchlede che \':t"1,1 , I chiamata a segmenti non conformi sana quindi queste:
v ga a relazlOne DPL <CPL. 1:,1:1 \
ji6 .,' ..t' .

:. l' 1 ... '.
. .. ....--r,
!'l1 "
L'uso di segmenti conf?rmi non consente tuttavia di mettere a
sottoprogramnu c:h:e istruzioni in quanto queste ;:.:, ,
lStruZlOfil possono essere esegwte solo se 11 CPL del processo e relativamente piccolo.
-..,.. , N/'"
" )!"L"
" .", ::!-<."
::, .:W';. "'I(i;:'l';,l'
"rz: ' , ;.:.,
",br '..11:''''
': '''.,'i.,;f ,
. ;;;:,' .. ,
-. ...",
';;', , .,
,
418
I
I
I
\
I
I
\
I
I
-
-
-

-
-
"
-
-
-
-
-
-
- \
=1
1-
I .
-
-
I
r
-
-
I
r
-
L
I
-
-
-

-
I
\
-
-
r
1-
\
/-
1-
1-
L
I
1-
. .,',
. '..
. ,..
'.' .'
, ' \.
... I
.. ".-
..
..
.. '
.'- .
..
'" .. .-",
,'"r . ,. ,
.
-' ....
",.
, i'
. -: ' .1
,
'.
., .
.-
,
..
, -
.,
" "i .',' .. .. .

..
.i' "
.-
-'--
,.' ..
REGIS"l'RO C:'lI CoRRJl;N"l'E
I ICPL
Sl-ETTORE DEL c.-.u.' G.-.TE .
. .
.' RPL
,
"
,
.
..
"
.
.
.
.
.
..
CONTB,OLLd,,,. ' .
" .
D1
.'
..
-
" .'
,.
,.
! r' \
,

,.,. \:
"1" \
i '. '
.-.
...
..
..
'I, .,.'1
,
- .'
, . ".
: .
'.
..
",
..
.' . :' ,-<
'"
,
, ..
. . ..,
, "
, .. ,
." , ..
: Ii' .
. , " ..; ..
,
,
I " ;,
; ..
..
..

,
,"
..
"
t 'f'
, :CODlCE:
. ,
:"'. ".
. .
. , ,."
" : ....
' ...
." .
f .. ."!
.. J:':::
'J,i '.'
1{.. ':.'.
" .'. ..
., ,j, .\'.. '..:
"'/Il; .;,
V.n_,",,-
",1.\'
;,',.'il
,
.. '
.. ,
,', '... '; ':1
."
" :: .'.:
" . ,
.. . , '
,- ....' "'.,'.,
, i ,: ..
". , " ..
Protezione nellac6mmu'taziolle ri'<l.
Capitolo9 ' ,
.,. , ...
" '.,
.' , . '
'. . l '.
.",',;"
, ',.
... "
,
: ,'t ,,;.
.': '.t
,:,,;;,
:,: :" ...
,; .
./" . '. .
:". '" .. \ ... , .. , n
,"
,:'.. .-....
420

"'.' .
;;Ji
l
,Id'
,
9\1'

.,' La proteziQne- 421
_ '
, ,11;',"1.,.
I
,.'./...
,.jl:" ',.1' '.
o l! :_":.
.'l:
. tndJ.rizzo destinazione
. !(.".' I" '. -.",. 't' . ," j ....
,
... '.' ;:.:': ... /1.. '0,
, - . -.,
I ..... I. ...1.' . .' .
.,..... ,'., 7 . "',.. .... . ..... '.
.. . . ..
,.. ..'.,: ,',,' ,,"," ,".',:. \" " .. _&, . ,. , :.. ,., ,::' ,"
""i'." ',-". .. ., .. -' , .. ". ,-
,,,. ' ,"'" " , '.
r.,,;,..\t,,-." " I .\..... '," 'I
... , SEL Offset {. .;.' . .'1
... I
fi" '; ,'.
,P',l: \".;;:J' "'.
'"'I . , ..'
. '., .
:.. " ....,v.. --'" .. '.' I. '. : " . DeKrittore ", ,.. "'_'di':I, ',;.: .'.".;,
,,,,,,.," '.'. (', ' .. . ,', ..", .' 'Ul rz;2;o'bStco '
""8
'mil;,f."l,',: . ;,'1.:>" ': \.,:,.,; ;'. ."."-" ,as/!I:"" . ,. .; ;
.. ..' .
:. L','f i" " ... '\ '. , . ', , .. .. ','. .;: d"" " . :,
"' '"., , .. " .. ,
"'l,,",,..
... ' .


.
i
, . . '\." ',-- '
. . . . '.":' ': ... :. .', i' ..... :. ,; Figura 9.15 Mecca.nismo eli chiamata attraverso una porta. L'istruzione e ovviamente indi-
';'.;.; .;. .:, '. ,'. 1: \"t. ,,'f . . '. rizzata aitraverso CS:EIPj CS da. pr;ivj.leg}9 +l
';" :.' '".Y' (, " . : ;'.; 1; .,. '.,; .;' ;... .!l!*'t/, ." nell'istruzione da. RPL. Questo selettote (wi aesttittOre lliruna: poi1:a di Chianiata. in
:. 01 ". +. .,,:: ,'" ,,: ',." ; ; ;( 'una tabella di descrittori (LDT 0 GOT). n selettore contenuto nella porta (il DPL in questa
Figura 9..14 chiamate CALL) attraverso Ie porte di chia- nqp;a)
n .. da! .. ..
PO p,rogram:m1'pI-, P2.possono chtamare sola .- de.J;ltrQ.,ll t;li 81 n!'-lt.l @.J?tenuto
un. porta' Anche'PO h"UO'usare- tale "ort 'n ;....;..... P3' ''''" .. <,.. -I,' .,.. ,. " . ..-:> ' ' ,.J..... .. .... .,....." .." .T , .'.' ' J. '.' ':"
. p ..'.. '. a.. prof>: llIa :non la' pqrta in '0<; '(il- .'.. non . ,.,. '.' , . ' , . ' ,'. , .' '...... .'. . .' ... "" ..
quanto!aportaeaunpIlv.tleglO'supcnore"al'8-uo: "... ,.:,;;,. :-; ... ; ,'.:.,." ;.;.;.' ., .'. "i ".,'" , . ". ,.'. _'.1 . ,.; t ,:." '. ':,'"
;.:. & "/ , ".," 'CA.L1.'GA"l': . .".'t: ... " .. .. , ,'1' . ';"'. '!"! .
. <-jPI..' I .. .. ! .. :: ,'., ... 1',: ,ro'.' .:_-....,.;:,.t:
'.. 11
L
f\!'''''' .
: ..,.1.". . .. .l '. n, .. ., ':"::.,. ..:",.... . .. " ... ...:;..
'>J9 ,.. ...... ' ". , ,:,. ' I, .. __ :: .. , .... ,; ...., .. ' ....",'
.r ';/;11 ,," . ', ". ' ... "O!:SCl'!:I1-rORE'OE:L'SEGM"Et'lT": ... I ".' , .... .
"-;"1/' W- ..!'II' . , . . .
. " "., , "... ..' .. .. .. ',; .. ;;, I:;;. ' .. / .. ,' .,. .,,,,, .. 1: j' .,f. ,::.",,,,' ., ..... ;
' ..... ,.-.' .' ',., ...-"."... .., ','... ; j', -" ".;;j;.,.:,,<, .. ,.' '(!' ... . ..... ."IDfL.I <" "L :._: , ." '.;" "'..
Le neUe quali si I' ..
.. . '" . ,. . . , " . " . . . 'f'/Ai
,';..
pp... n .. c ,?:i..C\!:p., .
,JMFr '.l? ,tJ
cemmutazlOne ha successo purche Blano venficate Ie seguenti condjzioni .:..
,. \, ,./1"0' ,".
. . ," -'" ,\
\ .,.,:'.- ..,;, :. d . " .... ,.; . ... ", .. _.'.:,'" . . l,l
.... ".,. ,.'. "."""" .... ,. ,"., .':' .. ,.-", ;.-.-,1" It, ..
, ... " , '.' - ,., ... ". .... '"
.: '.::,.' ": .. ;.; iIi :' ..... ':';'. >. ,,,1',.'.\ " .. '-;'.;..l.:. <.. '. 0':'1:
se e previsto 1'1iS0 di:.tlll:.a: 'porta: Qi' pJroaessoj' iL CRL, del. p.roceaso: :us.Gente:.deve . . ..... . .' ' ,. .. 1
.. m.in.ore.o ug}J,ale. al DPL.d, U t... ".' . 'h1f;i:I:;;,.: 9. 16 Vermca del il porte chiamata. L uso
_, ... ,:... .,...',.. .... . i ; ." .'. .... :. '; ... '(. e. .. . , ., - :". II.. . ._ dell'lstruzlOoe CALL Jl1O;Dalza.mento del livello prlvilegJ.(?:. del chiamante.

'.
9.7
riS r; n'li:' "..
t". ".
__0 __'_ - -- - .jt.f!t
"., ;- ;",1 ' ';'; ",0"1 ,!' :: '.'. ..: :'.::;,
.. .::. "'., ... j, ., ". '.: ", ,,,,,J.t P,',I, r.. " .' I.': ..1: ,,>.'....... .1. ' .. ,.,. ,I, ... r .. , .' ... ' .. ,., .. 1,',... .. f. ,( .. ,1
.'" - , .. ,' , ... ! .:.:i. ,.1iIA.t.::
..: . tra' il .cPL.deJ proc;.esso ;USteDte e: queUo d'i ptiVtlegio:: ..::" Ii " .. ., 'h.. '.' '",.. ,., .... :':1, ... 1
1
.;1 .... ' . '.' '.:1
processo entrante.Di fatto i process; sono isolati.neL!oro,spazi,. . nCPL inizi.le e TSS' 'dB;; jl'Di>'L'd'I' 't11e
e nelloro n solo per l'acceaso al TSS e non eeffettuato Vlene pnmoj a da. tale processo puo p0:-tarsl
quante nguarda il livelli di pnvileglO dei task ... !l... . a CPL. VIa .Vla per tornare a C:P.L ,al
ItvelIo RPL contenuto,ju,CS TSS) ' .' .- . . . ,.;-. processo dt portarS! a un livello meno pnvilegtato,'di quelIo.1DlZtale " i . , ,' ..
, , ,', . ". L' ""'" '., ,',r ,J: ",.. ,." ,.., "':<l,:' ,liI,."-'-""
"j'i
. " 'I :,r:..
9.6.3
1-
I .
-
-
I
r
-
-
I
r
-
L
I
-
-
-

-
I
\
-
-
r
1-
\
/-
1-
1-
L
I
1-
. .,',
. '..
. ,..
'.' .'
, ' \.
... I
.. ".-
..
..
.. '
.'- .
..
'" .. .-",
,'"r . ,. ,
.
-' ....
",.
, i'
. -: ' .1
,
'.
., .
.-
,
..
, -
.,
" "i .',' .. .. .

..
.i' "
.-
-'--
,.' ..
REGIS"l'RO C:'lI CoRRJl;N"l'E
I ICPL
Sl-ETTORE DEL c.-.u.' G.-.TE .
. .
.' RPL
,
"
,
.
..
"
.
.
.
.
.
..
CONTB,OLLd,,,. ' .
" .
D1
.'
..
-
" .'
,.
,.
! r' \
,

,.,. \:
"1" \
i '. '
.-.
...
..
..
'I, .,.'1
,
- .'
, . ".
: .
'.
..
",
..
.' . :' ,-<
'"
,
, ..
. . ..,
, "
, .. ,
." , ..
: Ii' .
. , " ..; ..
,
,
I " ;,
; ..
..
..

,
,"
..
"
t 'f'
, :CODlCE:
. ,
:"'. ".
. .
. , ,."
" : ....
' ...
." .
f .. ."!
.. J:':::
'J,i '.'
1{.. ':.'.
" .'. ..
., ,j, .\'.. '..:
"'/Il; .;,
V.n_,",,-
",1.\'
;,',.'il
,
.. '
.. ,
,', '... '; ':1
."
" :: .'.:
" . ,
.. . , '
,- ....' "'.,'.,
, i ,: ..
". , " ..
Protezione nellac6mmu'taziolle ri'<l.
Capitolo9 ' ,
.,. , ...
" '.,
.' , . '
'. . l '.
.",',;"
, ',.
... "
,
: ,'t ,,;.
.': '.t
,:,,;;,
:,: :" ...
,; .
./" . '. .
:". '" .. \ ... , .. , n
,"
,:'.. .-....
420

"'.' .
;;Ji
l
,Id'
,
9\1'

.,' La proteziQne- 421
_ '
, ,11;',"1.,.
I
,.'./...
,.jl:" ',.1' '.
o l! :_":.
.'l:
. tndJ.rizzo destinazione
. !(.".' I" '. -.",. 't' . ," j ....
,
... '.' ;:.:': ... /1.. '0,
, - . -.,
I ..... I. ...1.' . .' .
.,..... ,'., 7 . "',.. .... . ..... '.
.. . . ..
,.. ..'.,: ,',,' ,,"," ,".',:. \" " .. _&, . ,. , :.. ,., ,::' ,"
""i'." ',-". .. ., .. -' , .. ". ,-
,,,. ' ,"'" " , '.
r.,,;,..\t,,-." " I .\..... '," 'I
... , SEL Offset {. .;.' . .'1
... I
fi" '; ,'.
,P',l: \".;;:J' "'.
'"'I . , ..'
. '., .
:.. " ....,v.. --'" .. '.' I. '. : " . DeKrittore ", ,.. "'_'di':I, ',;.: .'.".;,
,,,,,,.," '.'. (', ' .. . ,', ..", .' 'Ul rz;2;o'bStco '
""8
'mil;,f."l,',: . ;,'1.:>" ': \.,:,.,; ;'. ."."-" ,as/!I:"" . ,. .; ;
.. ..' .
:. L','f i" " ... '\ '. , . ', , .. .. ','. .;: d"" " . :,
"' '"., , .. " .. ,
"'l,,",,..
... ' .


.
i
, . . '\." ',-- '
. . . . '.":' ': ... :. .', i' ..... :. ,; Figura 9.15 Mecca.nismo eli chiamata attraverso una porta. L'istruzione e ovviamente indi-
';'.;.; .;. .:, '. ,'. 1: \"t. ,,'f . . '. rizzata aitraverso CS:EIPj CS da. pr;ivj.leg}9 +l
';" :.' '".Y' (, " . : ;'.; 1; .,. '.,; .;' ;... .!l!*'t/, ." nell'istruzione da. RPL. Questo selettote (wi aesttittOre lliruna: poi1:a di Chianiata. in
:. 01 ". +. .,,:: ,'" ,,: ',." ; ; ;( 'una tabella di descrittori (LDT 0 GOT). n selettore contenuto nella porta (il DPL in questa
Figura 9..14 chiamate CALL) attraverso Ie porte di chia- nqp;a)
n .. da! .. ..
PO p,rogram:m1'pI-, P2.possono chtamare sola .- de.J;ltrQ.,ll t;li 81 n!'-lt.l @.J?tenuto
un. porta' Anche'PO h"UO'usare- tale "ort 'n ;....;..... P3' ''''" .. <,.. -I,' .,.. ,. " . ..-:> ' ' ,.J..... .. .... .,....." .." .T , .'.' ' J. '.' ':"
. p ..'.. '. a.. prof>: llIa :non la' pqrta in '0<; '(il- .'.. non . ,.,. '.' , . ' , . ' ,'. , .' '...... .'. . .' ... "" ..
quanto!aportaeaunpIlv.tleglO'supcnore"al'8-uo: "... ,.:,;;,. :-; ... ; ,'.:.,." ;.;.;.' ., .'. "i ".,'" , . ". ,.'. _'.1 . ,.; t ,:." '. ':,'"
;.:. & "/ , ".," 'CA.L1.'GA"l': . .".'t: ... " .. .. , ,'1' . ';"'. '!"! .
. <-jPI..' I .. .. ! .. :: ,'., ... 1',: ,ro'.' .:_-....,.;:,.t:
'.. 11
L
f\!'''''' .
: ..,.1.". . .. .l '. n, .. ., ':"::.,. ..:",.... . .. " ... ...:;..
'>J9 ,.. ...... ' ". , ,:,. ' I, .. __ :: .. , .... ,; ...., .. ' ....",'
.r ';/;11 ,," . ', ". ' ... "O!:SCl'!:I1-rORE'OE:L'SEGM"Et'lT": ... I ".' , .... .
"-;"1/' W- ..!'II' . , . . .
. " "., , "... ..' .. .. .. ',; .. ;;, I:;;. ' .. / .. ,' .,. .,,,,, .. 1: j' .,f. ,::.",,,,' ., ..... ;
' ..... ,.-.' .' ',., ...-"."... .., ','... ; j', -" ".;;j;.,.:,,<, .. ,.' '(!' ... . ..... ."IDfL.I <" "L :._: , ." '.;" "'..
Le neUe quali si I' ..
.. . '" . ,. . . , " . " . . . 'f'/Ai
,';..
pp... n .. c ,?:i..C\!:p., .
,JMFr '.l? ,tJ
cemmutazlOne ha successo purche Blano venficate Ie seguenti condjzioni .:..
,. \, ,./1"0' ,".
. . ," -'" ,\
\ .,.,:'.- ..,;, :. d . " .... ,.; . ... ", .. _.'.:,'" . . l,l
.... ".,. ,.'. "."""" .... ,. ,"., .':' .. ,.-", ;.-.-,1" It, ..
, ... " , '.' - ,., ... ". .... '"
.: '.::,.' ": .. ;.; iIi :' ..... ':';'. >. ,,,1',.'.\ " .. '-;'.;..l.:. <.. '. 0':'1:
se e previsto 1'1iS0 di:.tlll:.a: 'porta: Qi' pJroaessoj' iL CRL, del. p.roceaso: :us.Gente:.deve . . ..... . .' ' ,. .. 1
.. m.in.ore.o ug}J,ale. al DPL.d, U t... ".' . 'h1f;i:I:;;,.: 9. 16 Vermca del il porte chiamata. L uso
_, ... ,:... .,...',.. .... . i ; ." .'. .... :. '; ... '(. e. .. . , ., - :". II.. . ._ dell'lstruzlOoe CALL Jl1O;Dalza.mento del livello prlvilegJ.(?:. del chiamante.

'.
9.7
riS r; n'li:' "..
t". ".
__0 __'_ - -- - .jt.f!t
"., ;- ;",1 ' ';'; ",0"1 ,!' :: '.'. ..: :'.::;,
.. .::. "'., ... j, ., ". '.: ", ,,,,,J.t P,',I, r.. " .' I.': ..1: ,,>.'....... .1. ' .. ,.,. ,I, ... r .. , .' ... ' .. ,., .. 1,',... .. f. ,( .. ,1
.'" - , .. ,' , ... ! .:.:i. ,.1iIA.t.::
..: . tra' il .cPL.deJ proc;.esso ;USteDte e: queUo d'i ptiVtlegio:: ..::" Ii " .. ., 'h.. '.' '",.. ,., .... :':1, ... 1
1
.;1 .... ' . '.' '.:1
processo entrante.Di fatto i process; sono isolati.neL!oro,spazi,. . nCPL inizi.le e TSS' 'dB;; jl'Di>'L'd'I' 't11e
e nelloro n solo per l'acceaso al TSS e non eeffettuato Vlene pnmoj a da. tale processo puo p0:-tarsl
quante nguarda il livelli di pnvileglO dei task ... !l... . a CPL. VIa .Vla per tornare a C:P.L ,al
ItvelIo RPL contenuto,ju,CS TSS) ' .' .- . . . ,.;-. processo dt portarS! a un livello meno pnvilegtato,'di quelIo.1DlZtale " i . , ,' ..
, , ,', . ". L' ""'" '., ,',r ,J: ",.. ,." ,.., "':<l,:' ,liI,."-'-""
"j'i
. " 'I :,r:..
9.6.3
- I
- \
423 La protezione
j-
;;)--c;:r;r=' :-i..."
,0
.-
'"
"
.' b'
,0
..
./
21 Loca.zioni dall'offset 04h all'offset l8b.
9.7.2 L'attacco con il cavallo di Troia
..... .:
..
, "
'. ' ;' .;,:
, ; iI:w""
"'" .
422 Capitolo 9 j '
.fJ/ft..,
,
:
,'.....<1.".'
del privilegio si verifica quando una interruzione 0 Pesecuzione ,.' .. Per evitare questa inconveniente l'architettura Intel prevede la speciale istruzione
della istruzione fanne il ccntrone, a ?-O sottoprf?gramma appartenente a .... RPL)1 avente l'effetto di abbassare il HveHo. di privilegio
un segmento codice con DPL mmore del CPL; il ntorno al CPL e ... a quello dell'operando sorgente
22
. Se al suo mgresso la procedura chla-
ti;o con l'esecuzione IRET e RET a sottoprogramma. .., esegue Pistruzione ARPL. s,elettore passato c?me parametro, it relativo'RPL
L mnalzamento del pnvileglO traallte CALL (e con Ie mterruzlOw) coinvolge sempre '/.')..'( v\ene portato al valore del pnvileglo del chiamante (10 questa caso 3). In tal modo,
lluso di una porta, l'attacco con cavallo eli '!roia non ha effetto.
Poiche i processi possono cambiare livello
l
eindispensabile che, per ognuno dei
possibili CPL cui un processo puo portarsi
1
sia previsto un distinto segmento pila con., }'\[I\-
un pari Per questo il TSS copia degli indirizzi (virtuali) .. 9.7.3 Istruzioni privilegiate
degli stack 31 livelli 0,1 e 2
21
. Per il livello 3
1
I mdirizzo dello stack viene salvato in
ESP: SS.
In piu di una occasione e state detto che alcune istruzioni sono privilegiate. Ap-
a questa le altre
l
tutte Ie. ehe agiseono sui registri
.. ;' 'i}'1:',': speclah del processore, PlStruzlOne HLT, quelle d1 lnvalidazlOoe della cache (INVD) e
I' Le istruzioni privilegiate possono essere eseguite solo 5e il CPL del processo
.;-: " ' attualmente attivo coincide con il livello di privilegio massimo (UveUo 0); in caso
Consideriamo una procedura di sistema operativo nell'anello 1, che
l
per esempio, contrario egenerata una eccezione interna di tipo 13.
scrive la data e Para correnti in una alIa locazione specificata L'architettura prevede anche istrtizioni a esecuzione limitata. Esse si riferiscono
parametro della procedural che un virtuale pitI .. :alle operazioni di I/O (per esempio, Ie istruzioni OUT, STI e altre). is-
scostamento). L attacco scbematlZzato lD F1gura9.17. Un programma dlSOnesto truzioni possono essere eseguite solo se il CPL del proeesso attivo e minore 0 uguale
potrebbe .chiamare questa procedural passandole come parametro un di privilegio codificato nel campo IOPL (Input/Output Privilege LeveQ del
mdinzzo virtuale la ew componente selettore ha RPL ;;;: 2. La procedura : - registro EFLAGS,
1 Bcriverebbe la e l'ora nella posizione indicata, che pertanto si a livello !i ",' :!
2. In altre parole, il programma disonesto dell'anello 3 avrebbe usato il pararnetro' .'
come "cavallo di Troia" I e sarebbe stato capace di scrivere nell'anello 2, dopo che I, ," ' ...
parametra estata lasdata entrare nell'anella 1 dalla proeedura di data e ora, ,; '9.8 La protezlone dl paglna
.' ", , ",.I. ..',.'
" ,,?C,;: Qui di seguito si descrive 1a protezione.di pagina nell'architettura x86, Si noti che,
. questa segmentata, e
::t!: '.L costrUlre programffil strutturatl su un umeo segmento contenente lstruzlOill
I
datI e
.1. stacie In tal caso 10 spazio virtuale risulta lineare
l
come accade nella rnaggior parte
)'W: i , ,dei sistemi convenzionali, e il meccanismo di protezione sui segmenti non edi fatto
.. mentre opportWlo disporre di un 'meceanismo di
protezlOne delle pagme vrrtuah.
'Nell'architettura x86 il meccanismo di protezione delle pagine entra in azione se
quello operante sui segmenti non ha rivelato alcun tipo di violazione. Vengono uti-
, tizzati i bit U/S (User/Supervisor) e R/W (Read/Write), contenuti sia nei
Bi%.l.. .di tabella di pagine sia nei deserittori di pagina.
" if In riferimento ai descrittori eli tabelle di pagine, i. bit U/S e R/W sono esaminati
. :. dal meccanismo di protezione (in accordo alla regola riportata nella Tabella 9.3) a
Figura 9.17 Schematizzazione delFattacco con cavallo di Troia, Il processo di Hveno 3 ogn.i di da parte del attiv? rela:ive tabelle delle
(E3)1 la G.il,codice di livello.l (El) passandogli come un -.il
h
. ' bit se sull accesso pagma plU
il CUI R!'L e2. ncodice di 1 che usa il para;metro come (parte .-:;;/: stnngentl dl quegh Impostl dagli omomml bIt Del descnttore della pagma stessa.
CUI leggerejscI'lvere sarebbe autonzzat? accedere 2, In tal modo il codlce, . .,
hvello 3 avrebbe avuto accesso, seppure IDdiretto, a datI di hvella 1. -;,,-:-::::;-;---;----"'7:"-::--,.--:-
'ji;i:{' 2:2ARPL ha due operandi it primo euna posizione di memoria a 16 bit che contiene un selettore,
.:' tV01 \ il secondo e Ilormalmente un registro cbe contiene il CS del chiamante. Se RPL del selettore e
". ,;( ," Dumerica.mente inferiore a RPL del operando, iI primo RPL viene fatto crescere al valore
.. ... ; . del secondo.
: ; :;7'/"
""i.' ':';;
.':il-
;
, ,'.. . .' , "
\
I
I
I
(
I
\
\
\
I

-
-
-
-
-
-
-
-
-
- I
- \
423 La protezione
j-
;;)--c;:r;r=' :-i..."
,0
.-
'"
"
.' b'
,0
..
./
21 Loca.zioni dall'offset 04h all'offset l8b.
9.7.2 L'attacco con il cavallo di Troia
..... .:
..
, "
'. ' ;' .;,:
, ; iI:w""
"'" .
422 Capitolo 9 j '
.fJ/ft..,
,
:
,'.....<1.".'
del privilegio si verifica quando una interruzione 0 Pesecuzione ,.' .. Per evitare questa inconveniente l'architettura Intel prevede la speciale istruzione
della istruzione fanne il ccntrone, a ?-O sottoprf?gramma appartenente a .... RPL)1 avente l'effetto di abbassare il HveHo. di privilegio
un segmento codice con DPL mmore del CPL; il ntorno al CPL e ... a quello dell'operando sorgente
22
. Se al suo mgresso la procedura chla-
ti;o con l'esecuzione IRET e RET a sottoprogramma. .., esegue Pistruzione ARPL. s,elettore passato c?me parametro, it relativo'RPL
L mnalzamento del pnvileglO traallte CALL (e con Ie mterruzlOw) coinvolge sempre '/.')..'( v\ene portato al valore del pnvileglo del chiamante (10 questa caso 3). In tal modo,
lluso di una porta, l'attacco con cavallo eli '!roia non ha effetto.
Poiche i processi possono cambiare livello
l
eindispensabile che, per ognuno dei
possibili CPL cui un processo puo portarsi
1
sia previsto un distinto segmento pila con., }'\[I\-
un pari Per questo il TSS copia degli indirizzi (virtuali) .. 9.7.3 Istruzioni privilegiate
degli stack 31 livelli 0,1 e 2
21
. Per il livello 3
1
I mdirizzo dello stack viene salvato in
ESP: SS.
In piu di una occasione e state detto che alcune istruzioni sono privilegiate. Ap-
a questa le altre
l
tutte Ie. ehe agiseono sui registri
.. ;' 'i}'1:',': speclah del processore, PlStruzlOne HLT, quelle d1 lnvalidazlOoe della cache (INVD) e
I' Le istruzioni privilegiate possono essere eseguite solo 5e il CPL del processo
.;-: " ' attualmente attivo coincide con il livello di privilegio massimo (UveUo 0); in caso
Consideriamo una procedura di sistema operativo nell'anello 1, che
l
per esempio, contrario egenerata una eccezione interna di tipo 13.
scrive la data e Para correnti in una alIa locazione specificata L'architettura prevede anche istrtizioni a esecuzione limitata. Esse si riferiscono
parametro della procedural che un virtuale pitI .. :alle operazioni di I/O (per esempio, Ie istruzioni OUT, STI e altre). is-
scostamento). L attacco scbematlZzato lD F1gura9.17. Un programma dlSOnesto truzioni possono essere eseguite solo se il CPL del proeesso attivo e minore 0 uguale
potrebbe .chiamare questa procedural passandole come parametro un di privilegio codificato nel campo IOPL (Input/Output Privilege LeveQ del
mdinzzo virtuale la ew componente selettore ha RPL ;;;: 2. La procedura : - registro EFLAGS,
1 Bcriverebbe la e l'ora nella posizione indicata, che pertanto si a livello !i ",' :!
2. In altre parole, il programma disonesto dell'anello 3 avrebbe usato il pararnetro' .'
come "cavallo di Troia" I e sarebbe stato capace di scrivere nell'anello 2, dopo che I, ," ' ...
parametra estata lasdata entrare nell'anella 1 dalla proeedura di data e ora, ,; '9.8 La protezlone dl paglna
.' ", , ",.I. ..',.'
" ,,?C,;: Qui di seguito si descrive 1a protezione.di pagina nell'architettura x86, Si noti che,
. questa segmentata, e
::t!: '.L costrUlre programffil strutturatl su un umeo segmento contenente lstruzlOill
I
datI e
.1. stacie In tal caso 10 spazio virtuale risulta lineare
l
come accade nella rnaggior parte
)'W: i , ,dei sistemi convenzionali, e il meccanismo di protezione sui segmenti non edi fatto
.. mentre opportWlo disporre di un 'meceanismo di
protezlOne delle pagme vrrtuah.
'Nell'architettura x86 il meccanismo di protezione delle pagine entra in azione se
quello operante sui segmenti non ha rivelato alcun tipo di violazione. Vengono uti-
, tizzati i bit U/S (User/Supervisor) e R/W (Read/Write), contenuti sia nei
Bi%.l.. .di tabella di pagine sia nei deserittori di pagina.
" if In riferimento ai descrittori eli tabelle di pagine, i. bit U/S e R/W sono esaminati
. :. dal meccanismo di protezione (in accordo alla regola riportata nella Tabella 9.3) a
Figura 9.17 Schematizzazione delFattacco con cavallo di Troia, Il processo di Hveno 3 ogn.i di da parte del attiv? rela:ive tabelle delle
(E3)1 la G.il,codice di livello.l (El) passandogli come un -.il
h
. ' bit se sull accesso pagma plU
il CUI R!'L e2. ncodice di 1 che usa il para;metro come (parte .-:;;/: stnngentl dl quegh Impostl dagli omomml bIt Del descnttore della pagma stessa.
CUI leggerejscI'lvere sarebbe autonzzat? accedere 2, In tal modo il codlce, . .,
hvello 3 avrebbe avuto accesso, seppure IDdiretto, a datI di hvella 1. -;,,-:-::::;-;---;----"'7:"-::--,.--:-
'ji;i:{' 2:2ARPL ha due operandi it primo euna posizione di memoria a 16 bit che contiene un selettore,
.:' tV01 \ il secondo e Ilormalmente un registro cbe contiene il CS del chiamante. Se RPL del selettore e
". ,;( ," Dumerica.mente inferiore a RPL del operando, iI primo RPL viene fatto crescere al valore
.. ... ; . del secondo.
: ; :;7'/"
""i.' ':';;
.':il-
;
, ,'.. . .' , "
\
I
I
I
(
I
\
\
\
I

-
-
-
-
-
-
-
-
-
-
-
1,-
,.
L
I
-
)"
1-
,.
,.
1-
-
1-
\
1-
-
1-
),.
I
1-
\
J -
)-
\ -
).
\.
10
... , ,'.
,
" ,
,
. '. '<
"Esecuzione fuori ordine
.. ' .
'.
,"
i- ..

,
, ",
I'
i'
"

. ..,
... .

. , ' ,
" i' j
" '
" ,
,
.' '" ';:"-"
': '"
, ..t'
..
, "
,
, "
I "
1 '1"' .
. '.: ; i:.
..:
, "
, ",
k.
,,' .'
.:'.. ,. ,
'.' .,
!l:.,', .......... I ... '

.\ .....
,. ,
'.- ,
"
,
'_.. ,.,., ",
',. !'
'. '1'"''
,.,. ,: ,
" ,. _:, ..
. .- ''>
0'
,'''l' ' ,,' '.'.,' t , .. ', " .. ,
,,
"
, . -_._. -
<3
,

Lettura e .scrittura

Nessuno
=3 1 0 Solo" Lettura ,
., .. .... "
1 1
Lettufa 'e\scrittuta. ,::C",
I'CPL lU/S'1 R7w I1ii>6dracceiso I
. " ... , '. ..
" , , ..,
, , '
:' i
, "I
, '"
'. ,; ; ..
.. ..,,.
,
., ;.
'.
_'.'
, .
",
"
'.' ." ..
, ' "
'ii !
"
0apitolo 9 .
" :
" ,
"
, ,
, ,
'''<',.'
.'
". I, :,:
" ,
,"
, '
. ',! .
i '"
"
, .. !., .,
. . .. .
".
.. '.. .'
, .
'" .,
, '
.....
424
, ',)..,
,',I, '

:"111<,\' .
,,,,, ,
,
..
::; ;0",1'"
,tt,;, ,"'1,,,.'
'. '
r '..
:\'-, -
"1!::1 'Ii,'"
,,",' "',"
'"

. .,.
I"""',
,', ,
<'., ":J"
. '
.
]tr::g;" .,'
...'l,; !f...
.

.
;;I;}'I((j ,;,'<:
.
.
,';j' ,. ....;....; '-_-' _
"
,'

'>',V
"',' , .. ,
'. . j:''!,':i '"<
"
'
,!j:.1j}b.;<;::',:,: '" ,.,
,
'i""" .
"
'-,' ." .
..... >.... :'.- :.:,. ,I:' ..,!:" .,"; .!';': . ,.\. ,. "".' :,'.',!:; ;,:,';.' .. ......, i ,
,," . ". ". , /. . ,'........ I . , ". /#1 . .
.: .,.:: I. .',';: '.' . ':' ,:.:.J' ';;' .. ,.' .. ;,' .: . ... ... ... ;"'::':'7!"";' :, ..,.:.:i:,.. . . 'j' :'.;' .: . ! . .
. .' '. _. . '. ." , " '-l"t .... '..
":" . .un. prQc;es.so.,.noD;.d.; ;:., _ a abbia.rD:0 pipeline In 'rea1ta, i proces.se:
?1 protezl.one delle ?agme non .. . ...n moderm, co.me il e 1 :1". .1 k6-3D e
1, .. J?er.. un-: procease . a?0ttano pill .p.l? umta funzlOnali, .multl-
cqn dl RQyil:'1gI6 .al ;;;;;. c.91! cIdo! In. parallelo. superscalan, per eVldenzlare 1a
1J./q... :1 qll pagin,:. . posslbilita. dl a:'V1
are
ed pm . . . ,
yhe ..dall mecc;ap:S:r:qOr .: n paraUehsmo tra Ie umta. e . che siano m au-
una nchiesta cil mterruzlooe (dl tlPO 14) nscontr3o delle vioIazionineW
30
9
e
ElSsQ.alle.. '. mentane notevolmente 130 della pensl3JIlo, per esemplo, alle
pagine. .' . . "':' ': '1 tra istruzioni assegnate a. unita. differ.eq,ti, al completamento fuori ordine
j eal,Ia di. gar30ntire 130 di iIi eli inter-
ruZIODl. Queste ddncolta" tutt30vla
l
non'1IDpedISCono all'architettura superscalare di
. , ,', " ' .1\1""1,, t 1 " A' 1 diffu
,.:.... , ,,: "".;: " "I:' .' \;>';'- ..,.. , ( .-re,maIT!ent.e eevate. perClu, \-41 essere mo to s(,\. tr=t i
......'.'. ... ". ':'OTSC""" ''''.'., ".' >,.., "' ( ..C>, ' '.". . , .. ;,:7"'=".... , .'.. ,
"":,;1' ... ..... ,; "; : F''::' : : :",.: ""'.:'. ' ....' ..::.:., .. I, 'f!.,';:.... ';'" ,. '.;
... c' II 'I" ,'. ,) 'l, ,,' .", l';',d ,"""l; .,'. .... ..',.' .. "., 1' ..
" ,,' '\'_ , .. "'L' , . '" ..... '..... '.
u .., " ..,,, . . , .
., :..... ,,':-: '1"0": l""1Jl
p
' :'. ":"';'1': ;"":'.""::-:.\ !/. ,. f
i
':""'" ",'; 'I:; I ! b. ::,: .:;.',;;
,. ",', , . /. 'I ':i ,';';,;'," ',::,: . ' Ipe me con um a unZlOna I mu tIC co . :"",
,,, ': .', . "",',i"". ", . ",' ':1:11::;;, In precedenza ,i e che la rase di esecuzione durasse un cicIo di clock, Cia
.. ( I,.. ,. '.;'" ..;' ;1. l,,;.. .:ll_'.l .. .. cl,<,>ck
.', .' ., " ..,' ..:'. ,' ..; '. :.1' !"'!; .. , :,'j ;, . ."1:flU' ;-r,{' esser;e d,: <;ii
. _._ _'" : ' " . , "'., > .,,' , .... ; h' '.. , !; :'.,;; 'r, u. m ...Se SI
.. 1:.:",,,,.:-, .,:'.'\".< . r"";, :'i.-: .. ,'." ; ( .. ...'il.' ..... :I .. "i\::I:,"\\;I;' ,:.,.,1 .".'.,. '"
", '" ... : .:\. ',', I : ..\ '. : '. 'r', . . . . . , ., ". '''''''''. '. ;.,
'n , '. ", '1'" " ,'." ,:: ' ... < "<',,:# ' :'.,'.' o!" .. :.r':'i"':;.\".f.. <.. ' 'Ll'''' . .';. i, i. , .. : .. ;".' .ii ...i d., .l:: j,;
. , ' :1 . 1'.1" '. (j' .,' .': ",,, , ;"' !, ' ;.'.,j .m, un.
, :. ,;.",,:: -:: .. I, .," '.:, . '., ,'>, i, , .. ,... ,'" ..-:" ,.;;'::Io I,':";' suaivQlti\o ... jl)' " .' . ''1'' r.-,
.. il.;'.'::' ;<11""\:'" .:' . '-a4.ttar '\td' .. .. ...:.;:,;',:"
.. . ,'. ..., .'.. , .' ',: ..'- '".,..: . '. ' ' . ; ,'1 ' .. ':.... .';! . I. .-; ,. . .':: ,,);1 .. ".. ,t7;:P.t .:,.1. " ,.J::E
.J'. I.' ..:,.:, ,':" ;t ,.' ',' ;.. i, ... '. ", ;1. ...,: " I"".';.': .::; ; nmangano bIocc3ote ne 130 pIpeline. \.. ,; " ",',."*"'./ .' \ .. ..; . r;.<., '/'
". '.' . l' t, . ,. , , _.l ., .. ,
, ,.. , ,... ,.' J"
I
' ,. ., , ...
- " ," :.,' ,' . .- .. 1\ I ,",', ,-;:'" , ,,',,; " 'I':.' ,,', r'" ! ":',., :',:1 ::, ..:'.';':,.' \l ,(.,' .>.:;:.: ,5i: ,in, . .. qfe-
.. .""'_ .. ':1:1 - - 4et ...Si ,1Q t:a
"'. 'I.,,'.,.; '.,,'1. ' '. ,:',);'." .. m
,,.,',:';' ",' .-,',';';",;
'""" ,I',' 3it I,"f cicli e Ie
I
.'" ",.' In 'riferimentoat ,desaittori.di pagina,:bit: tJIS eRjW S(lno eSaqlinati:dal- m'ecca-
nismo.4 pLotezrq.ne (in;adaoI.do:a1la regolariportata: 9.'3) tentative
di.accesso,'aUa,pagina_, .'.::' " .' . "!" .. ' ..... , .. .-:' .,:-i .. <,
-
-
1,-
,.
L
I
-
)"
1-
,.
,.
1-
-
1-
\
1-
-
1-
),.
I
1-
\
J -
)-
\ -
).
\.
10
... , ,'.
,
" ,
,
. '. '<
"Esecuzione fuori ordine
.. ' .
'.
,"
i- ..

,
, ",
I'
i'
"

. ..,
... .

. , ' ,
" i' j
" '
" ,
,
.' '" ';:"-"
': '"
, ..t'
..
, "
,
, "
I "
1 '1"' .
. '.: ; i:.
..:
, "
, ",
k.
,,' .'
.:'.. ,. ,
'.' .,
!l:.,', .......... I ... '

.\ .....
,. ,
'.- ,
"
,
'_.. ,.,., ",
',. !'
'. '1'"''
,.,. ,: ,
" ,. _:, ..
. .- ''>
0'
,'''l' ' ,,' '.'.,' t , .. ', " .. ,
,,
"
, . -_._. -
<3
,

Lettura e .scrittura

Nessuno
=3 1 0 Solo" Lettura ,
., .. .... "
1 1
Lettufa 'e\scrittuta. ,::C",
I'CPL lU/S'1 R7w I1ii>6dracceiso I
. " ... , '. ..
" , , ..,
, , '
:' i
, "I
, '"
'. ,; ; ..
.. ..,,.
,
., ;.
'.
_'.'
, .
",
"
'.' ." ..
, ' "
'ii !
"
0apitolo 9 .
" :
" ,
"
, ,
, ,
'''<',.'
.'
". I, :,:
" ,
,"
, '
. ',! .
i '"
"
, .. !., .,
. . .. .
".
.. '.. .'
, .
'" .,
, '
.....
424
, ',)..,
,',I, '

:"111<,\' .
,,,,, ,
,
..
::; ;0",1'"
,tt,;, ,"'1,,,.'
'. '
r '..
:\'-, -
"1!::1 'Ii,'"
,,",' "',"
'"

. .,.
I"""',
,', ,
<'., ":J"
. '
.
]tr::g;" .,'
...'l,; !f...
.

.
;;I;}'I((j ,;,'<:
.
.
,';j' ,. ....;....; '-_-' _
"
,'

'>',V
"',' , .. ,
'. . j:''!,':i '"<
"
'
,!j:.1j}b.;<;::',:,: '" ,.,
,
'i""" .
"
'-,' ." .
..... >.... :'.- :.:,. ,I:' ..,!:" .,"; .!';': . ,.\. ,. "".' :,'.',!:; ;,:,';.' .. ......, i ,
,," . ". ". , /. . ,'........ I . , ". /#1 . .
.: .,.:: I. .',';: '.' . ':' ,:.:.J' ';;' .. ,.' .. ;,' .: . ... ... ... ;"'::':'7!"";' :, ..,.:.:i:,.. . . 'j' :'.;' .: . ! . .
. .' '. _. . '. ." , " '-l"t .... '..
":" . .un. prQc;es.so.,.noD;.d.; ;:., _ a abbia.rD:0 pipeline In 'rea1ta, i proces.se:
?1 protezl.one delle ?agme non .. . ...n moderm, co.me il e 1 :1". .1 k6-3D e
1, .. J?er.. un-: procease . a?0ttano pill .p.l? umta funzlOnali, .multl-
cqn dl RQyil:'1gI6 .al ;;;;;. c.91! cIdo! In. parallelo. superscalan, per eVldenzlare 1a
1J./q... :1 qll pagin,:. . posslbilita. dl a:'V1
are
ed pm . . . ,
yhe ..dall mecc;ap:S:r:qOr .: n paraUehsmo tra Ie umta. e . che siano m au-
una nchiesta cil mterruzlooe (dl tlPO 14) nscontr3o delle vioIazionineW
30
9
e
ElSsQ.alle.. '. mentane notevolmente 130 della pensl3JIlo, per esemplo, alle
pagine. .' . . "':' ': '1 tra istruzioni assegnate a. unita. differ.eq,ti, al completamento fuori ordine
j eal,Ia di. gar30ntire 130 di iIi eli inter-
ruZIODl. Queste ddncolta" tutt30vla
l
non'1IDpedISCono all'architettura superscalare di
. , ,', " ' .1\1""1,, t 1 " A' 1 diffu
,.:.... , ,,: "".;: " "I:' .' \;>';'- ..,.. , ( .-re,maIT!ent.e eevate. perClu, \-41 essere mo to s(,\. tr=t i
......'.'. ... ". ':'OTSC""" ''''.'., ".' >,.., "' ( ..C>, ' '.". . , .. ;,:7"'=".... , .'.. ,
"":,;1' ... ..... ,; "; : F''::' : : :",.: ""'.:'. ' ....' ..::.:., .. I, 'f!.,';:.... ';'" ,. '.;
... c' II 'I" ,'. ,) 'l, ,,' .", l';',d ,"""l; .,'. .... ..',.' .. "., 1' ..
" ,,' '\'_ , .. "'L' , . '" ..... '..... '.
u .., " ..,,, . . , .
., :..... ,,':-: '1"0": l""1Jl
p
' :'. ":"';'1': ;"":'.""::-:.\ !/. ,. f
i
':""'" ",'; 'I:; I ! b. ::,: .:;.',;;
,. ",', , . /. 'I ':i ,';';,;'," ',::,: . ' Ipe me con um a unZlOna I mu tIC co . :"",
,,, ': .', . "",',i"". ", . ",' ':1:11::;;, In precedenza ,i e che la rase di esecuzione durasse un cicIo di clock, Cia
.. ( I,.. ,. '.;'" ..;' ;1. l,,;.. .:ll_'.l .. .. cl,<,>ck
.', .' ., " ..,' ..:'. ,' ..; '. :.1' !"'!; .. , :,'j ;, . ."1:flU' ;-r,{' esser;e d,: <;ii
. _._ _'" : ' " . , "'., > .,,' , .... ; h' '.. , !; :'.,;; 'r, u. m ...Se SI
.. 1:.:",,,,.:-, .,:'.'\".< . r"";, :'i.-: .. ,'." ; ( .. ...'il.' ..... :I .. "i\::I:,"\\;I;' ,:.,.,1 .".'.,. '"
", '" ... : .:\. ',', I : ..\ '. : '. 'r', . . . . . , ., ". '''''''''. '. ;.,
'n , '. ", '1'" " ,'." ,:: ' ... < "<',,:# ' :'.,'.' o!" .. :.r':'i"':;.\".f.. <.. ' 'Ll'''' . .';. i, i. , .. : .. ;".' .ii ...i d., .l:: j,;
. , ' :1 . 1'.1" '. (j' .,' .': ",,, , ;"' !, ' ;.'.,j .m, un.
, :. ,;.",,:: -:: .. I, .," '.:, . '., ,'>, i, , .. ,... ,'" ..-:" ,.;;'::Io I,':";' suaivQlti\o ... jl)' " .' . ''1'' r.-,
.. il.;'.'::' ;<11""\:'" .:' . '-a4.ttar '\td' .. .. ...:.;:,;',:"
.. . ,'. ..., .'.. , .' ',: ..'- '".,..: . '. ' ' . ; ,'1 ' .. ':.... .';! . I. .-; ,. . .':: ,,);1 .. ".. ,t7;:P.t .:,.1. " ,.J::E
.J'. I.' ..:,.:, ,':" ;t ,.' ',' ;.. i, ... '. ", ;1. ...,: " I"".';.': .::; ; nmangano bIocc3ote ne 130 pIpeline. \.. ,; " ",',."*"'./ .' \ .. ..; . r;.<., '/'
". '.' . l' t, . ,. , , _.l ., .. ,
, ,.. , ,... ,.' J"
I
' ,. ., , ...
- " ," :.,' ,' . .- .. 1\ I ,",', ,-;:'" , ,,',,; " 'I':.' ,,', r'" ! ":',., :',:1 ::, ..:'.';':,.' \l ,(.,' .>.:;:.: ,5i: ,in, . .. qfe-
.. .""'_ .. ':1:1 - - 4et ...Si ,1Q t:a
"'. 'I.,,'.,.; '.,,'1. ' '. ,:',);'." .. m
,,.,',:';' ",' .-,',';';",;
'""" ,I',' 3it I,"f cicli e Ie
I
.'" ",.' In 'riferimentoat ,desaittori.di pagina,:bit: tJIS eRjW S(lno eSaqlinati:dal- m'ecca-
nismo.4 pLotezrq.ne (in;adaoI.do:a1la regolariportata: 9.'3) tentative
di.accesso,'aUa,pagina_, .'.::' " .' . "!" .. ' ..... , .. .-:' .,:-i .. <,
nelle macchine superscalari, per aumeniare it paralle-
istruzioni alIa volta., II Pentium Pro emette fiDO a 3
unita per la gestione delle operazioni eli Load/Store.
sommatore in virgola mobile;
,
divisore in aritrrletica intera e in virgola mobilej
,
unita per la gestione delle diramazionij
unita logico aritmetica prineipale in aritmetica inter:aj
moltiplicatore in aritmetica intera e in virgola mobilej
a)
b)
c)
d)
e)
f)
Il numero di cieli in fase EX per istruzione richiesti da ogru operazione eriportato
in Tabella 10,1
Nella parte che assumeremo che dall'unita eli emissione esea una istruzione
ogni ciclo di clock
Lo stadio EX erealizzato con Ie seguenti unita funzionali (Figura 10.1):
Presenza eli un unico bus (result bus) per i risultati di tutte Ie unita funzionali.
lE; Questa un'ipotesi semplificativa:
Hsmo, vengono normahnente emesse piu
(microistruzioni.
Consideriarno la pipeline di Figura 10.1, assumendo che i cieli nello stadia di esecuzione
corrispolldano a quelli di Tabella 10.1: con il frammento di coelice di Figura 10.2
,
l'ordine di comp1etamento della fase EX risulta praticamente opposto rispetto a queUo
testuale. Piil in genera1e, date due istruzioni i e i\ con i che precede i, se i impiega pili
deli di Glock di j per essere eseguita, l'ordine sequenziale delle istruzioni puo risultare
invertito, con conseguenti possibili conflitti sia di dati, sia di eontrollo.

.
.
Esecuzione NOTi ordine 427

.,
w,; . '
'} .'1,;-,,"
I. h'"".":
" :;r.:
I Classe di istruzioni CPr]
add omma e sottrazione in aritmetica intera 1
mul Predotto in aritmetica intera 10
" div Divisione a'n aritmetica intera 12
" add! Somma e ttrazione in virgola mobile 2
: mulf 10
... "" P:O??tto l;Il d?PPla 12
.: dl vf Divisione m vugola moblle, smgola preclSlOoe 15
:,.;:::;ii ,.:. di vfd Divisione in virgola mobile, doppia precisione 30
,',;\:;lH:', 10.1 Cicli nello stadio EX per il unita
',,; multlclclo preso come modello. 1valorI qUi nporta,t1 sono del tutto fittlZl e, seppur plauslblh,
non hanno vaJidita generale, ma solo nell'ambito della nostra trattazione.
, " *"...
... :.::
;" .."" ';;;
, ", -:1>t;,\>:

.. " ,P(f..,., , ,
'. , ,':t,)'

"",,,,,,,, .-,,'"e..'"
,'" , .. n
"-""'''1-<-
,: . '.
,
'''''':iII,.,'" '. ' .

.. . .
"'< 1\ _.
.; ';:'ii4;<
...... ,- :;,i:t;".""
....
, ;. .

'.1.
i.' ""jjI"fIj .... , '
,.J. I' '_....z'"..
,:
''"''''" ,""'I . ,,:'
",,'Z> .
':;>'.v.-,
', ,'1" ,
"JJ :i;:t;r, '.
.:i:L '; m:-
1
,,;',
_ .... ..,1, '
"";
'; :" 't, "if":,
. ". '. ',' JI ;'- ':.
,t';:.. '..- -j,Y
- :{, '<jkc .
14-
':": ,.,.'j'''.
- .. I '
'.
, -o;.!it .
; '.\:'-li.s ':'I'i-P.,j;: '
.. ' ,,,',"'" , -,,'!.;. ','
:'. ,'.
" .. ,_
.. ',,,,,,-,,,,'-
.: '
.. " .
....jr, '",:1''<.'0'
\ .... , ,
.. '" "' ..
',10" :\
"'p .'. I 1,' ,
jl;!':, 10.2 Esecuzione fuori ordine
'.:."',.... '5 , . ...
, .. ".. ,. ".
'.....:..,,'.'
w",{ .' I ,I
,'{:';"?: :1,;,';:-.<,
r: _ ,
,,'r""',',
'.' .. ". ,
,:.1.,'" _,"",'"
.
',,' " ,',.,,,,
.. ';'"
, ....
, ... __
.
":',iJr .
,', .,',.:->... .
.. l\" . ,", ..
. .... ".-"'!.
"'<,,,.
"",'" X J'f- ,
'JI-i,':".'
M.( ........ 1
.'"} ,(t """.1'
.", 'ir ,.,J". '.
. ..;0',,\1
.,,' ",',
'.' '," \i, ,.,,,it.: ."
... ,'".\..
'.
, ' "",t,;'"; ..,'
- 'I""" ,'.'
:f".. ':ro. .;'
"," .;1 .," ., '. ;.:,,' >1 ,
....
kt ..
__ ";' I
'ii,
EX
-
Unit. in AI
-
Moltiplieatore
f-
- in AI fl VM
I-
Sommatorfl
f-
In VM
IF ID - f-< WB
Divisor..
I-
-
in Al VM
-
Ge$tionfl
I-
Diramazioni
Oparuioni
r--
Load/Store
Ca.pitolo 10
All'interno dello sta.dio ill epresente una Unita di Emissione (Issue Unit), nella
Quale sostano Ie istruzioni in attesa della risoluzione dei confiitti per poi essere
inviate all'opportuna unita funzionale. Nel seguito si paria anche eli registro di
emissione (issue register). n registro di emissione deve essere visto come una
coda (0 buffer), nel quale sostano Ie istruzioni che devono momentanearnente
aspettare perche non possono essere inviate alIa re1ativa unita funzionale.
stesse cache, col elivaricarsi della forbice tra ve10cita delle roemorie e velocita della
CPU facilmente risultano troppo Ie lente. L'eseeuzione in multiciclo delle operaziooi '
<Ii lettura/serittura dati permette di svincolarsi dallimite imposto dalla velocita della
cache. Resta da dire che cib non riduce U problema della Ientezz-a della memoria per
la fase eli fetch, I processori moderni, per esempio il Pentium Pro, sono dotati di
anita. eli prefetch e, comunque, 1a fase IF esuddivisa in piu periodi <Ii clock, in modo
da operare in pipeline e leggere uin avanti" (per 10 stesso motivo il BTB entra nei
primissimi stadi della pipeline del Pentium Pro),
Rispetto alla pipeune lineare descritta al Capitolo 7, oltre all'eliminazione dello
stadio ME ci sono Ie seguenti differenze:
Figura 10.1 Pipeline con unitS. funziona.li multiciclo. AI sta per Arit:p:1etica Intera, VM sta
per Virgola Mobile. Le istruzioni sono inviate aJla corrispondente unita funziona.le da.ll'unita
di emissione (Issue Unit) che agisce durante 1a fase ill. Giunte all'unita. funzionale Ie istru-
zioni possono ripetere piu volte il delo EX senza ostacolare le istruzioni seguenti dirette ad
altre unita funzionali.
426
\
I
\
I
(
1
I
I
I
\
\
\
,
\
-
-
-
-

-
-
-
-
-
-
nelle macchine superscalari, per aumeniare it paralle-
istruzioni alIa volta., II Pentium Pro emette fiDO a 3
unita per la gestione delle operazioni eli Load/Store.
sommatore in virgola mobile;
,
divisore in aritrrletica intera e in virgola mobilej
,
unita per la gestione delle diramazionij
unita logico aritmetica prineipale in aritmetica inter:aj
moltiplicatore in aritmetica intera e in virgola mobilej
a)
b)
c)
d)
e)
f)
Il numero di cieli in fase EX per istruzione richiesti da ogru operazione eriportato
in Tabella 10,1
Nella parte che assumeremo che dall'unita eli emissione esea una istruzione
ogni ciclo di clock
Lo stadio EX erealizzato con Ie seguenti unita funzionali (Figura 10.1):
Presenza eli un unico bus (result bus) per i risultati di tutte Ie unita funzionali.
lE; Questa un'ipotesi semplificativa:
Hsmo, vengono normahnente emesse piu
(microistruzioni.
Consideriarno la pipeline di Figura 10.1, assumendo che i cieli nello stadia di esecuzione
corrispolldano a quelli di Tabella 10.1: con il frammento di coelice di Figura 10.2
,
l'ordine di comp1etamento della fase EX risulta praticamente opposto rispetto a queUo
testuale. Piil in genera1e, date due istruzioni i e i\ con i che precede i, se i impiega pili
deli di Glock di j per essere eseguita, l'ordine sequenziale delle istruzioni puo risultare
invertito, con conseguenti possibili conflitti sia di dati, sia di eontrollo.

.
.
Esecuzione NOTi ordine 427

.,
w,; . '
'} .'1,;-,,"
I. h'"".":
" :;r.:
I Classe di istruzioni CPr]
add omma e sottrazione in aritmetica intera 1
mul Predotto in aritmetica intera 10
" div Divisione a'n aritmetica intera 12
" add! Somma e ttrazione in virgola mobile 2
: mulf 10
... "" P:O??tto l;Il d?PPla 12
.: dl vf Divisione m vugola moblle, smgola preclSlOoe 15
:,.;:::;ii ,.:. di vfd Divisione in virgola mobile, doppia precisione 30
,',;\:;lH:', 10.1 Cicli nello stadio EX per il unita
',,; multlclclo preso come modello. 1valorI qUi nporta,t1 sono del tutto fittlZl e, seppur plauslblh,
non hanno vaJidita generale, ma solo nell'ambito della nostra trattazione.
, " *"...
... :.::
;" .."" ';;;
, ", -:1>t;,\>:

.. " ,P(f..,., , ,
'. , ,':t,)'

"",,,,,,,, .-,,'"e..'"
,'" , .. n
"-""'''1-<-
,: . '.
,
'''''':iII,.,'" '. ' .

.. . .
"'< 1\ _.
.; ';:'ii4;<
...... ,- :;,i:t;".""
....
, ;. .

'.1.
i.' ""jjI"fIj .... , '
,.J. I' '_....z'"..
,:
''"''''" ,""'I . ,,:'
",,'Z> .
':;>'.v.-,
', ,'1" ,
"JJ :i;:t;r, '.
.:i:L '; m:-
1
,,;',
_ .... ..,1, '
"";
'; :" 't, "if":,
. ". '. ',' JI ;'- ':.
,t';:.. '..- -j,Y
- :{, '<jkc .
14-
':": ,.,.'j'''.
- .. I '
'.
, -o;.!it .
; '.\:'-li.s ':'I'i-P.,j;: '
.. ' ,,,',"'" , -,,'!.;. ','
:'. ,'.
" .. ,_
.. ',,,,,,-,,,,'-
.: '
.. " .
....jr, '",:1''<.'0'
\ .... , ,
.. '" "' ..
',10" :\
"'p .'. I 1,' ,
jl;!':, 10.2 Esecuzione fuori ordine
'.:."',.... '5 , . ...
, .. ".. ,. ".
'.....:..,,'.'
w",{ .' I ,I
,'{:';"?: :1,;,';:-.<,
r: _ ,
,,'r""',',
'.' .. ". ,
,:.1.,'" _,"",'"
.
',,' " ,',.,,,,
.. ';'"
, ....
, ... __
.
":',iJr .
,', .,',.:->... .
.. l\" . ,", ..
. .... ".-"'!.
"'<,,,.
"",'" X J'f- ,
'JI-i,':".'
M.( ........ 1
.'"} ,(t """.1'
.", 'ir ,.,J". '.
. ..;0',,\1
.,,' ",',
'.' '," \i, ,.,,,it.: ."
... ,'".\..
'.
, ' "",t,;'"; ..,'
- 'I""" ,'.'
:f".. ':ro. .;'
"," .;1 .," ., '. ;.:,,' >1 ,
....
kt ..
__ ";' I
'ii,
EX
-
Unit. in AI
-
Moltiplieatore
f-
- in AI fl VM
I-
Sommatorfl
f-
In VM
IF ID - f-< WB
Divisor..
I-
-
in Al VM
-
Ge$tionfl
I-
Diramazioni
Oparuioni
r--
Load/Store
Ca.pitolo 10
All'interno dello sta.dio ill epresente una Unita di Emissione (Issue Unit), nella
Quale sostano Ie istruzioni in attesa della risoluzione dei confiitti per poi essere
inviate all'opportuna unita funzionale. Nel seguito si paria anche eli registro di
emissione (issue register). n registro di emissione deve essere visto come una
coda (0 buffer), nel quale sostano Ie istruzioni che devono momentanearnente
aspettare perche non possono essere inviate alIa re1ativa unita funzionale.
stesse cache, col elivaricarsi della forbice tra ve10cita delle roemorie e velocita della
CPU facilmente risultano troppo Ie lente. L'eseeuzione in multiciclo delle operaziooi '
<Ii lettura/serittura dati permette di svincolarsi dallimite imposto dalla velocita della
cache. Resta da dire che cib non riduce U problema della Ientezz-a della memoria per
la fase eli fetch, I processori moderni, per esempio il Pentium Pro, sono dotati di
anita. eli prefetch e, comunque, 1a fase IF esuddivisa in piu periodi <Ii clock, in modo
da operare in pipeline e leggere uin avanti" (per 10 stesso motivo il BTB entra nei
primissimi stadi della pipeline del Pentium Pro),
Rispetto alla pipeune lineare descritta al Capitolo 7, oltre all'eliminazione dello
stadio ME ci sono Ie seguenti differenze:
Figura 10.1 Pipeline con unitS. funziona.li multiciclo. AI sta per Arit:p:1etica Intera, VM sta
per Virgola Mobile. Le istruzioni sono inviate aJla corrispondente unita funziona.le da.ll'unita
di emissione (Issue Unit) che agisce durante 1a fase ill. Giunte all'unita. funzionale Ie istru-
zioni possono ripetere piu volte il delo EX senza ostacolare le istruzioni seguenti dirette ad
altre unita funzionali.
426
\
I
\
I
(
1
I
I
I
\
\
\
,
\
-
-
-
-

-
-
-
-
-
-
Un argomento analogo a quello esposto in Figura 10,3 vale in presenza di istruzio-
oi di saIto eondizionato. Fatta la previsione, l'unita. di controlla preleva daU'indirizzQ
pronostieato e quindi vengono avviate istruziani che patrebbero non essere richieste se
Le istruzioni dell'esempio di Figura 10.2 vengono emesae nell'ordine naturale dato
da! programma. L'esecuzione fuori ordine si riferisce in Questa caso, piu propriamente,
al completamento. In un sistema come quello di Figura 10.1 risulta conveniehte svin-
colarsi dall'emissione in ordine, quando accade che un'istruzione deve aspettare a
essere emessa perche, per esempio, i registri che essa legge vengono scritti da un'is-
truzione che la precede molto piu lenta. La situazione eesemplificata in Figura 10.3.
Figura 10.3 La sequenza di istruzioni evidenziala necessita. dell'emissione fuori ordine. Do-
pa l'emissione deU'istruzione 1, non ha molto senso emettere 1a. 2, in quanta questa. dovrebbe
attendere 11 clock prima che sia disponibile il nuovo valore di r6; stesso ragionamento per
l'istruzione 3 che dovrebbe attendere il completamento delPistruzione 2 (si noti che una even-
tuale rete di bypass allevia di poco I'attesa, in quanto il dato viene prodotto al termine delle"
pipeline delle unita. di divisione e moltiplicazione in virgola). L'emissione di un'istruzione
che ha una dipendenza dati da una che la precede deve necessariamente avvenire quando
essa ein grada di leggere dati corretti. L'istruzione 2 verd. emessa quando 180 1 ecompletata
e la 3 quando ecomplet8ota anche 180 2. L'istruzione 4 non ha alcun80 dipendenza dati dalle
precedenti e quindi pub essere emessa verso la. rispettiva unita funzionale aI clock successivo
a queUo che ha emesso 180 1. La stesso r8ogionamento vale per Ie istruzioni che seguono. Esse
possono essere avviate aUe corrispondenti unita funziona.li ai clock successivi. Se la macchina
fosse capace di emettere 3 istruzioni alla volta, al primo clock sarebbero emesse 130 1, 180 4 e
la 5.
)-
-
--
j -
-
)-
-
-
-
-
-
I
1-
\
)-
\
L
I
)-
I
)-
1
1-
1-
1-
i
)-
In Figura lOA vengoDo mostrati i percorsi che collegano Ie unitA. funzionali di Figura
10.1 al file dei registri RF. Siccome si fa l'ipotesi Che sia presente un solo bus dei
risultati, risulta necessario prevedere un meccanismo di prenotazione del bus stesso.
n protocollo dl prenotazione si avvale di un registro a scorrimento dei risultati
(RSR) la cui struttura emostrata in Figura 10.5.
AI momento dell'emissione dell'istruzione A che impiega j cicli di clock
3
viene
a essa riservata la posizione j-esima di RSR, in modo che, dopo j cicli, il bus dei
risultati Ie venga destinato per i risultati da essa prodotti.
A ogni ciclo di clock si ha uno spostamento verso l'alto di tutte le prenotazioni
contenute in RER (il contenuto della posizione j-esima viene posta nella posizione
j-l-esima); quando una prenotazione giunge in eima (nella posizione 1), at cicio di
2Si noti che esecuzione fuorl ordine ed esecuzione specula.t1va 150no case diverse. In partico(are la
parola "speculativa" si riferiace alIa previsione delle diramazioDi e conaeguente esecuzione e compte
tamento delle istruzioni prima che sia nota l'esito della ditamazione stessa. Nelle ma.cchine moderne,
essendoci sia esecuzione fuori ordine cbe esecuzione speculativa., vengono considerate come sinonimi
l'una dell'altra.
3Ci si riferisce naturalmente al numero di cicli di clock per la fase EX
10.2.1 Gestione delle prenotazioni del bus dei risultati
Esecw:ione fuori ordine 429
la prediziene risulta errata. Questa meccanismo viene detto esecuzione speculativa
2
.
E evidente che la modifica allo stato della macchina deve essere coerente rispetto
,
all'ordine del programma. E quindi necessaria riordinare Ie istruzioni eseguite, in
modo che esse producano l'esatto effetto previsto da11a sequenza del testa. Schema-
ticamente, facendo riferimento alla Figura 10.1, la sequenza di istruzioni che esce
dal blocco delle unita funzionali deve essere quello dell'ordine del programma. Cia
eomporta Puso ordinato del bus dei risultati.
La modifiea dell'ordine di esecuzione delle istruzioni non puo esaere incontrollata,
anehe in riferimento aUe interruzioni e, come vedremo, aile predizioni eli diramazione.
Ocearre fare in modo che 10 stato della maechina venga f,Ilodifieato in maniera coerente
con l'esecuzione sequenziale delle istruzioni ([Soh90l, [WE93]).
Nel seguito vengono presentati i tre principali metodi per 180 gestione dell'esecu-
zione delle istruzioni nel modeHo d.i Figura 10.1.
n Metodo del completamento in ordine delle istruzioni, nel quale si forzano Ie
istruzioni a essere completate seguendo l'ordine architetturale.
n Metodo del Buffer del Riordinamento, nel Quale le istruzioni sona cOIPple-
tate fuori ordine rna sonG fonate a modificare 10 stato della macchina seguendo
l'ordine architetturale.
n Metodo deWHistory Buffer, nel Quale si pennette alle istruzioni di aggiornare
10 stato in qualsiasi ordine, conservando perc 180 possibilitA di ripristinare uno
state coerente in presenza di confiitti.
Prima di illlli!trare questi rnetodi enecessaria esaminare can maggior attenzione
la struttura pipeline di Figura 10.1.
15 cieli
10 cieli
2 cieli
1 cicIo
f6,f2,f4
f12,!8,!10
f18,f14,fl6
r3,rl.r2
divt
ault
addf
add
(100)
(104)
(108)
(112)
1 div r6.r7,r8
12 cicli
2 mu1
r5,r6,r1
10 cicIl
3 add r4,r5,r6
1 cicIo
4 mu1 r3,r7,r1
10 cicli
5 mulf
f12,f8,f10
10 cicli
6 addf
f18,f14,t16
2 cicli
7 add
r20,r21.r22
,
1 cicIo
1
2
3
4
,..
.'';;:"
'''1-' ,



..
428 Capitola 10
"'_'",.'
,",l .-Irt:,.:


t... t"<'
."
," "' ,.-., "
" ..,-,'-:-.-
;[[ts';'
, '''1:-'' ".", "
.,." - ...
}:- .'!.:
.', ,"-'k,<- '.""" _"
< .. : ".-:,'
'- '> '-,!:l",'.' .",
: ::.: :::""
'\;;',:,'
Figura 10.2 Esempio di sequenza d.i istruzioni che provoca un ordine di completamento
diverso rispetto all'ordine sequenziale di pr?gramma.. Si assume che Ie singole istruziooi
siano avviate aile relative unite\. funzionali a. successivi impulsi di clock. A causa del diverso
tempo di nelle rispettive unita. Ie istruzioni e 4 130
EX per pnme (contemporaneamente); 8uceesslvamente completa FistruzlOne 2; per ultlma
I.'istruzione 1. In di completamento delle istruzioni edel tutto ,..
mvertlto nspetto a queUo di programma.. </'.f... . "" .
." .' ....
.'.... "
,
.. ...
.[..... " ..' '"',
"-,, .'-','
.. ,';
, . "_'-'..,.





.-"; ..., ..
'"B!'''''''

,..... ,ft;'-
;;'!';'.,",

'....,
,,:;'!" '. ,- .. ,.
,".,',. ,. "r,',;:

.
<. ....- '.
',' .. ..
'C
.' ;;::.Il;' .:,: ....,,"
.',,\,,;,"'-W ", ...., ..
'!' .. ,'." "',"'''''''

..:"'t.. ,
"''1/11''<' '"1.::,,,.. "
''- ", .. ".-.'.
-''', " .':1" ..
." ,,11 ".,.",,_,'
",' '--"','
", ,,'tM-..-:,
"",):: .
...... ;t;,."J,
I,:. '."j",", "'...."'"
. ",,:':;:: ,',

-
,',,'
..
.. ..., '
,

",;it't",.tr, ,i"-,'."" ;'


\' ..
, .. ' .. " .'
,,0',:,,::
; ..,:"':

, ..
<--
. ..:'
:'j,r"i> ';0:.'
... . ",'
" "
,... .. " -
'.:!:'l,>l' :
.H,__ c'_ ' .
.. ..., '.'
':'ij; .; ."
,t.,. ', .. '
":?i; ,.'

;."Iz,. .

,,'
,;":'!'.. '
";;,,,l . :,":""
'- .' .
. :.',",
".t..C' "
1 .
'( '" ' ,',',
..':-::.:
;;... ',' '.
.. "'\ ..
;:
:;;'::
.. .-
<:-":---
.,."....
, W.. ,.:.
Un argomento analogo a quello esposto in Figura 10,3 vale in presenza di istruzio-
oi di saIto eondizionato. Fatta la previsione, l'unita. di controlla preleva daU'indirizzQ
pronostieato e quindi vengono avviate istruziani che patrebbero non essere richieste se
Le istruzioni dell'esempio di Figura 10.2 vengono emesae nell'ordine naturale dato
da! programma. L'esecuzione fuori ordine si riferisce in Questa caso, piu propriamente,
al completamento. In un sistema come quello di Figura 10.1 risulta conveniehte svin-
colarsi dall'emissione in ordine, quando accade che un'istruzione deve aspettare a
essere emessa perche, per esempio, i registri che essa legge vengono scritti da un'is-
truzione che la precede molto piu lenta. La situazione eesemplificata in Figura 10.3.
Figura 10.3 La sequenza di istruzioni evidenziala necessita. dell'emissione fuori ordine. Do-
pa l'emissione deU'istruzione 1, non ha molto senso emettere 1a. 2, in quanta questa. dovrebbe
attendere 11 clock prima che sia disponibile il nuovo valore di r6; stesso ragionamento per
l'istruzione 3 che dovrebbe attendere il completamento delPistruzione 2 (si noti che una even-
tuale rete di bypass allevia di poco I'attesa, in quanto il dato viene prodotto al termine delle"
pipeline delle unita. di divisione e moltiplicazione in virgola). L'emissione di un'istruzione
che ha una dipendenza dati da una che la precede deve necessariamente avvenire quando
essa ein grada di leggere dati corretti. L'istruzione 2 verd. emessa quando 180 1 ecompletata
e la 3 quando ecomplet8ota anche 180 2. L'istruzione 4 non ha alcun80 dipendenza dati dalle
precedenti e quindi pub essere emessa verso la. rispettiva unita funzionale aI clock successivo
a queUo che ha emesso 180 1. La stesso r8ogionamento vale per Ie istruzioni che seguono. Esse
possono essere avviate aUe corrispondenti unita funziona.li ai clock successivi. Se la macchina
fosse capace di emettere 3 istruzioni alla volta, al primo clock sarebbero emesse 130 1, 180 4 e
la 5.
)-
-
--
j -
-
)-
-
-
-
-
-
I
1-
\
)-
\
L
I
)-
I
)-
1
1-
1-
1-
i
)-
In Figura lOA vengoDo mostrati i percorsi che collegano Ie unitA. funzionali di Figura
10.1 al file dei registri RF. Siccome si fa l'ipotesi Che sia presente un solo bus dei
risultati, risulta necessario prevedere un meccanismo di prenotazione del bus stesso.
n protocollo dl prenotazione si avvale di un registro a scorrimento dei risultati
(RSR) la cui struttura emostrata in Figura 10.5.
AI momento dell'emissione dell'istruzione A che impiega j cicli di clock
3
viene
a essa riservata la posizione j-esima di RSR, in modo che, dopo j cicli, il bus dei
risultati Ie venga destinato per i risultati da essa prodotti.
A ogni ciclo di clock si ha uno spostamento verso l'alto di tutte le prenotazioni
contenute in RER (il contenuto della posizione j-esima viene posta nella posizione
j-l-esima); quando una prenotazione giunge in eima (nella posizione 1), at cicio di
2Si noti che esecuzione fuorl ordine ed esecuzione specula.t1va 150no case diverse. In partico(are la
parola "speculativa" si riferiace alIa previsione delle diramazioDi e conaeguente esecuzione e compte
tamento delle istruzioni prima che sia nota l'esito della ditamazione stessa. Nelle ma.cchine moderne,
essendoci sia esecuzione fuori ordine cbe esecuzione speculativa., vengono considerate come sinonimi
l'una dell'altra.
3Ci si riferisce naturalmente al numero di cicli di clock per la fase EX
10.2.1 Gestione delle prenotazioni del bus dei risultati
Esecw:ione fuori ordine 429
la prediziene risulta errata. Questa meccanismo viene detto esecuzione speculativa
2
.
E evidente che la modifica allo stato della macchina deve essere coerente rispetto
,
all'ordine del programma. E quindi necessaria riordinare Ie istruzioni eseguite, in
modo che esse producano l'esatto effetto previsto da11a sequenza del testa. Schema-
ticamente, facendo riferimento alla Figura 10.1, la sequenza di istruzioni che esce
dal blocco delle unita funzionali deve essere quello dell'ordine del programma. Cia
eomporta Puso ordinato del bus dei risultati.
La modifiea dell'ordine di esecuzione delle istruzioni non puo esaere incontrollata,
anehe in riferimento aUe interruzioni e, come vedremo, aile predizioni eli diramazione.
Ocearre fare in modo che 10 stato della maechina venga f,Ilodifieato in maniera coerente
con l'esecuzione sequenziale delle istruzioni ([Soh90l, [WE93]).
Nel seguito vengono presentati i tre principali metodi per 180 gestione dell'esecu-
zione delle istruzioni nel modeHo d.i Figura 10.1.
n Metodo del completamento in ordine delle istruzioni, nel quale si forzano Ie
istruzioni a essere completate seguendo l'ordine architetturale.
n Metodo del Buffer del Riordinamento, nel Quale le istruzioni sona cOIPple-
tate fuori ordine rna sonG fonate a modificare 10 stato della macchina seguendo
l'ordine architetturale.
n Metodo deWHistory Buffer, nel Quale si pennette alle istruzioni di aggiornare
10 stato in qualsiasi ordine, conservando perc 180 possibilitA di ripristinare uno
state coerente in presenza di confiitti.
Prima di illlli!trare questi rnetodi enecessaria esaminare can maggior attenzione
la struttura pipeline di Figura 10.1.
15 cieli
10 cieli
2 cieli
1 cicIo
f6,f2,f4
f12,!8,!10
f18,f14,fl6
r3,rl.r2
divt
ault
addf
add
(100)
(104)
(108)
(112)
1 div r6.r7,r8
12 cicli
2 mu1
r5,r6,r1
10 cicIl
3 add r4,r5,r6
1 cicIo
4 mu1 r3,r7,r1
10 cicli
5 mulf
f12,f8,f10
10 cicli
6 addf
f18,f14,t16
2 cicli
7 add
r20,r21.r22
,
1 cicIo
1
2
3
4
,..
.'';;:"
'''1-' ,



..
428 Capitola 10
"'_'",.'
,",l .-Irt:,.:


t... t"<'
."
," "' ,.-., "
" ..,-,'-:-.-
;[[ts';'
, '''1:-'' ".", "
.,." - ...
}:- .'!.:
.', ,"-'k,<- '.""" _"
< .. : ".-:,'
'- '> '-,!:l",'.' .",
: ::.: :::""
'\;;',:,'
Figura 10.2 Esempio di sequenza d.i istruzioni che provoca un ordine di completamento
diverso rispetto all'ordine sequenziale di pr?gramma.. Si assume che Ie singole istruziooi
siano avviate aile relative unite\. funzionali a. successivi impulsi di clock. A causa del diverso
tempo di nelle rispettive unita. Ie istruzioni e 4 130
EX per pnme (contemporaneamente); 8uceesslvamente completa FistruzlOne 2; per ultlma
I.'istruzione 1. In di completamento delle istruzioni edel tutto ,..
mvertlto nspetto a queUo di programma.. </'.f... . "" .
." .' ....
.'.... "
,
.. ...
.[..... " ..' '"',
"-,, .'-','
.. ,';
, . "_'-'..,.





.-"; ..., ..
'"B!'''''''

,..... ,ft;'-
;;'!';'.,",

'....,
,,:;'!" '. ,- .. ,.
,".,',. ,. "r,',;:

.
<. ....- '.
',' .. ..
'C
.' ;;::.Il;' .:,: ....,,"
.',,\,,;,"'-W ", ...., ..
'!' .. ,'." "',"'''''''

..:"'t.. ,
"''1/11''<' '"1.::,,,.. "
''- ", .. ".-.'.
-''', " .':1" ..
." ,,11 ".,.",,_,'
",' '--"','
", ,,'tM-..-:,
"",):: .
...... ;t;,."J,
I,:. '."j",", "'...."'"
. ",,:':;:: ,',

-
,',,'
..
.. ..., '
,

",;it't",.tr, ,i"-,'."" ;'


\' ..
, .. ' .. " .'
,,0',:,,::
; ..,:"':

, ..
<--
. ..:'
:'j,r"i> ';0:.'
... . ",'
" "
,... .. " -
'.:!:'l,>l' :
.H,__ c'_ ' .
.. ..., '.'
':'ij; .; ."
,t.,. ', .. '
":?i; ,.'

;."Iz,. .

,,'
,;":'!'.. '
";;,,,l . :,":""
'- .' .
. :.',",
".t..C' "
1 .
'( '" ' ,',',
..':-::.:
;;... ',' '.
.. "'\ ..
;:
:;;'::
.. .-
<:-":---
.,."....
, W.. ,.:.

Figura 10.6 Contenuto di RSR dopo la prenotazione dell'operazione di prodotto: l'istru-


zione eli prodotto occupa Ia posizione 10 dovendo permanere nell'unita. funzionale di prodotto
in virgola. mobile per 10 dcli di clock.
Considerando, per esempio, Ie istruzioni 2 e 3 dell'esempio di Figura 10.2, dopo 1a
prenotazione del bus dei risultati da parte dell'istruzione di prodotto in virgola mobile,
la situazione in RSR equella <Ii Figura 10.6: poicM l'unita funzioDale impiega 10 cieli
di clock a espletare questa operazione, la prenotazione viene inoltrata aHa posizione
10 di RSR.
431
Esecuzione fuori ordine
nw
::!!:d V Counter


--riJg-
mulf f12 1





u
Ul" l{(f V t'rogram vounter


n
1
2
3
4
5
In Figura 10.7 emostrata, invece, la situazione di RSR al cicio di clock successive:
i cantenuti degli elementi di RSR si spostano di un posta verso Palto e }'istruzione di
somma prenota Ja posizione 2 di RSR.
Stabilito il criterio di gestione del bus dei risultati, vediamo come puo essere
affrontato ii problema dell'esecuzione fuori ordine delle istruzioni e del mantenimehto
delle stato di macchina coerente can I'ordine del programma.
10
l'
2
n
Figura 10.5 Generica organizzazione in campi di RSR. n campo UF identifica I'unita fun-
zionale impiegata dall'istruzione; Rd il registro di destinazionej Veil bit eli validita; il
Program Counter equeUo dell'istruzione stessa. Come illustrato in seguito, questa registro
entra in tutti i protocolli di gestione fuori ordine delle istruzioni anche se con formato diver-
so. Le posizioni del registro sana numerate da 1 a n, dove n ela lunghezza della piu lunga
pipeline con cui sana realizzate Ie unita funzionali.
" '.".
,
"
UFI
s
r

1
S
u
UF2
!
a
1

RF
,

UFD
n registro su cui dovra essere scritto il risultato dell'istruzione. Questo campo,
insieme al precedente garantisce la giusta cODnessione tra la sorgente del risul-
tato (l'unita funzionale che 10 ha generato), e la sua destinazione (il registro di
destinazione). '
Un bitd.i validita. della prenotazione, impiegato per indicare se la posizione del
registro RSR rappresenta a no una effettiva prenotazione.
n PC relativo all'istruzione. Questa campo non viene utilizzato per la gestione
delle prenotazioni del bus dei risultati , rna per il ripristino di uno stato coerente
in caso di interruzioni 0 di prediziooi di diramazione errate.
B
clock successivo il bus dei risultati viene riservato ai risultati provenienti dall'unita
funzionale nella Quale eappena terminata l'esecuzione dell'istruziooe che ha generato
suddetta prenotazione. Usato il bus dei risultati per la scrittura dei risultati nel banco
dei registri, la prenotazione lascia RSR.
Se al momenta dell'emissione dell'istruzione A la posizione j-esima estata occu-
pata da un'altra prenotazione, l'istruzione A viene fatta attendere all'interno dell'Is-
Sl,Je Register per un cicio di clock, per poi riprovare a inoltrare la prenotazione della
. . ..
pOSlZlOne ]-esuna.
La prenotazione dei Tisultati si effettua scriveI:!.do Ie segl;lenti informazioni
Dei campi <Ii RSR (Figura 10.5). .
L'identificatore dell'unita. funzionale che eseguiral'istruzione.
Figura 10.4 Organizzazione di un processore con n unita. funzionali multicido. La struttura,
prevede un solo bus dei risultati (per semplicita., in figura estato tracciato un solo bus da.
RF aUe unita funzionali, anche se, come abbiamo gia avuto modo di osservare, si hanna
normalmente due bus cude consentire la lettura contemporanea dei due operandi). La
presenza di un unico bus per i risultati delle unita. funzionali impone l'utilizzo di RSR
(Re3ult Shift Register), 10 speciale registro per 13 prenotazione e l'uso del bus da parte di
una singola unita. alla volta..
430 Capitola 10
\
I
\
\
I
\
\
I
I
\
I
\
I
-
-

-
-
-

-
-
-
-

Figura 10.6 Contenuto di RSR dopo la prenotazione dell'operazione di prodotto: l'istru-


zione eli prodotto occupa Ia posizione 10 dovendo permanere nell'unita. funzionale di prodotto
in virgola. mobile per 10 dcli di clock.
Considerando, per esempio, Ie istruzioni 2 e 3 dell'esempio di Figura 10.2, dopo 1a
prenotazione del bus dei risultati da parte dell'istruzione di prodotto in virgola mobile,
la situazione in RSR equella <Ii Figura 10.6: poicM l'unita funzioDale impiega 10 cieli
di clock a espletare questa operazione, la prenotazione viene inoltrata aHa posizione
10 di RSR.
431
Esecuzione fuori ordine
nw
::!!:d V Counter


--riJg-
mulf f12 1





u
Ul" l{(f V t'rogram vounter


n
1
2
3
4
5
In Figura 10.7 emostrata, invece, la situazione di RSR al cicio di clock successive:
i cantenuti degli elementi di RSR si spostano di un posta verso Palto e }'istruzione di
somma prenota Ja posizione 2 di RSR.
Stabilito il criterio di gestione del bus dei risultati, vediamo come puo essere
affrontato ii problema dell'esecuzione fuori ordine delle istruzioni e del mantenimehto
delle stato di macchina coerente can I'ordine del programma.
10
l'
2
n
Figura 10.5 Generica organizzazione in campi di RSR. n campo UF identifica I'unita fun-
zionale impiegata dall'istruzione; Rd il registro di destinazionej Veil bit eli validita; il
Program Counter equeUo dell'istruzione stessa. Come illustrato in seguito, questa registro
entra in tutti i protocolli di gestione fuori ordine delle istruzioni anche se con formato diver-
so. Le posizioni del registro sana numerate da 1 a n, dove n ela lunghezza della piu lunga
pipeline con cui sana realizzate Ie unita funzionali.
" '.".
,
"
UFI
s
r

1
S
u
UF2
!
a
1

RF
,

UFD
n registro su cui dovra essere scritto il risultato dell'istruzione. Questo campo,
insieme al precedente garantisce la giusta cODnessione tra la sorgente del risul-
tato (l'unita funzionale che 10 ha generato), e la sua destinazione (il registro di
destinazione). '
Un bitd.i validita. della prenotazione, impiegato per indicare se la posizione del
registro RSR rappresenta a no una effettiva prenotazione.
n PC relativo all'istruzione. Questa campo non viene utilizzato per la gestione
delle prenotazioni del bus dei risultati , rna per il ripristino di uno stato coerente
in caso di interruzioni 0 di prediziooi di diramazione errate.
B
clock successivo il bus dei risultati viene riservato ai risultati provenienti dall'unita
funzionale nella Quale eappena terminata l'esecuzione dell'istruziooe che ha generato
suddetta prenotazione. Usato il bus dei risultati per la scrittura dei risultati nel banco
dei registri, la prenotazione lascia RSR.
Se al momenta dell'emissione dell'istruzione A la posizione j-esima estata occu-
pata da un'altra prenotazione, l'istruzione A viene fatta attendere all'interno dell'Is-
Sl,Je Register per un cicio di clock, per poi riprovare a inoltrare la prenotazione della
. . ..
pOSlZlOne ]-esuna.
La prenotazione dei Tisultati si effettua scriveI:!.do Ie segl;lenti informazioni
Dei campi <Ii RSR (Figura 10.5). .
L'identificatore dell'unita. funzionale che eseguiral'istruzione.
Figura 10.4 Organizzazione di un processore con n unita. funzionali multicido. La struttura,
prevede un solo bus dei risultati (per semplicita., in figura estato tracciato un solo bus da.
RF aUe unita funzionali, anche se, come abbiamo gia avuto modo di osservare, si hanna
normalmente due bus cude consentire la lettura contemporanea dei due operandi). La
presenza di un unico bus per i risultati delle unita. funzionali impone l'utilizzo di RSR
(Re3ult Shift Register), 10 speciale registro per 13 prenotazione e l'uso del bus da parte di
una singola unita. alla volta..
430 Capitola 10
\
I
\
\
I
\
\
I
I
\
I
\
I
-
-

-
-
-

-
-
-
-
-
-
).
-
-
-
-
-
1-
-
)-
1
J-
.,
-
-
,
J-
1-
)-
I.
1-
\
1-
L
I
1-
)-
433
Esecuzione fuori' ordine
ordine rispetto alla memoria

III
nw
l'Uf' V f rogram
1
-
1
, , , ,
- 1
mulf f12 1 Ill4
, ,
-i
,
n
1
2
9
10
11
Completamento
n problema dell'ordine si pone non solo per i registri rna anche per la memoria. n
completamento in ordine rispetto alIa memoria si pub ottenere utilizzando due metodi.
1, La posizione; di RSR elibera (ovvero; > j-l); in questo caso ossa viene riservata
, a B insieme a tutte 1e posizioni superiori aneora libere {ossia non bceupate da
AI '
10.3.2
AI cielo di clock successivo, potrebbe essere emessa l'istrozione add!, rna cio
non avviene giacche la posizione 2 egia. stata occupata. L'istruzione di somma cleve
attendere nel registro di emissiqne per attri 8 cieli di clock, fino a quando 1'iBtruzione di
prodotto libera la posizione 2 (Figura 10.9). Essendo Ie istruzioni forzate a terminare
in ordine anche i registri sono modificati secondo l'ordine del programma.
La tecnica ora descritta emolto semplice e richiede una Iogica aggiuntiva poco
eomplicata. Thttavia si paga un prezZo per questa semplicita. realizzativa: non e
sfruttato appieno il parallelismo delle unita. funzionali in quante Ie iBtruzioni piu Iente
bIoccano nel registro' di emissione quelle pill veIoci che Ie seguono.
Figura 10.8 Contenuto di RSR dopo la prenotazione da parte dell'operazione di prodotto
in virgola mobile: per forzare it completamento in ordine, l'istruzione di prodotto oecupa
(bit di validita a 1) Ie prime 10 posi2ioni in modo che nessun altra istruzione piu veloce possa
usade per 1a propria prenotazione. Le posizioni da 9 a 1 devono essere marcate in modo
da indicare cbe esse non riehiedono t'effettivo aggiornamento del registro d.i destinazione
al momento dell'uscita da RSR. n modo piu naturale consiste nella scrivere nel campo
dell'unita funzionale un valore convenzionale (e stato messa una linetta. assl,lIIlendo che
tutte Ie posizioni da. 9 a 1 siano vuote). Naturalmente se gia un'altra istruzione, in una fase
di eseeuzione pili avanzata, fosse presente in RSR, per esempio in posizione 5, il prodotto
occuperebbe solo le posizioni libere, queUe comprese tra la 6 e la 10 1 di pagina 433).
UF' Ka v
t'rogram vounter
addf fl8 1
Ie
, ,
,
, , ,
,
u
l1l4
mulf f12 1
,
,
, ,
,
, , ,
,
U
1
2
8
9
10
,
Completarnento in ordine rispetto ai registri
10.3 Completamento in ordine .
, "
:; .,('
'.'
,"" "!l1


':
432 Capitolo 10 '
.
I
','", :
, "'S


"
,... Ie
""r';:"
.' ."
,':, >
.. ;.'
",."",
.
-&,j
2. La i del RSR n?n eli?eraJo:vero.i < j -1); in ca.:0.Pistruzione
. B cleve attendere nel reglstro dl emlSSlone sme a che la pOSlZlOne 81 libera.
'):)Jl!.\ Riprendendo l'esempio qi Figura 10,2, l'istruzione mulf pub essere e,:,essa solo
quando la precede;I1te lascia lib.era la .10.in RSR. AI momento etnlSSlOne
:.. .. .delPistruzione mulf vengono tlservate Ie pOSIZlom cbe precedono la declm3 se queste
..'f', ',. )
,,;:,101l' '<",,"
n I I" I 0 I I ' non sana gIa. occupate (FIgural0.8 .
'.r>.it . $1"1.; 1"''''
. ", "', I .':f.l.ii '
Figura 10.7 Contenuto di RSR dopo la prenotazione deWoperazione di somma in virgola' l
che va a occupare la posizione 2 in qt.tanto Ie 2 cicli nello
stadlO EX per esse:e La prenotazlOne Vlene mtrodotta dopo
che la precedente IStruzlOne estata scalata verso J'alto dl una pOS\Zlone.
, ;,t ,:); ,i"I?f !
,",,'i.. , "'i
, j .
... ... '''<O.Ie' ,-,'" :
..... -';1;',->;.".. , '

,"''M\'" "",,"','
..
" ":.<: _. " ."'1- '.
. ,t
n completamento. in ordine si attraverso la prenotazio.ne di RSR in modo da
forzare la concluslOne secondo l'ordine del programma. Ovvlamente anche 10 stato .. ,
di maechina 10. stesso ordine. Si due casi: i{ ."
compIetamento m ordme nspetto aJ regIstrl e compIetamento In ordme nspetto
'.
memoria. ..
<t'i
j
.. .J(,v,.,-
::. -i' ""'il-I',": "
'..,:,', 'I,',, '.
'. "., ..
"'.!.: f: " 'ililii ,I.,
'-.
. "..;."j-.! "
,... "
.. ',.-" -I' ..
.. ..
.'. ., il. ;
,I, ,<II"
, . ,.:-
,';,:,,':'lir t_("",,:,



.I"J'i\fl ,; .

''',' It-.'. I",'
, ."",-i:.f';:', ,.'\',
"" :>"'1:':'" .., ,".

'-a
'''''1 '," .;. >-
>:':V:'. .
'. .. ':' ,.
i"i,,,:" .
'.
_; 1>:;'," . "'.'-
,. <'. " .
.,:....1>.':".=(, :
. .. .' .. ,-,
..... .. 1 .','

".,bi, .. , .....,') "
.. ".i,,"
"'.,... !,'.. ,
- '<-::1"" '...
.-,.""",
".'
''', '
- :
, '> ;',
'
".' ..,
. '"
-<:.' ,.
"
,. \,'J,
\-::',,:,
,1-,,, ".'
'" .
. . :.
_,'
,. .' . ,
<<f " '",
, .(.'.-' .',
... . ,:.,'
......; .
.'.,
- "
::.-..:'
"Si fa I'ipotesi cbe Ie istruzioni veogano emesse in deli dl clock suc:cessivi e che quindi, quando
viene emessa l'istruzioue B, l'istruzione A aia in posizione j - 1.
10,3.1
Per ottenere iI completamento in ordine rispetto ai registri basta fare in modo che nella
prenotazione del bus dei risuItati non 5i renda possibile ehe alcune istruzioni II
pass
ino
avanti" ad altre. A tal fine
,
l'istruzione che prenota la posizione j in RSR occupa anche
tutte Ie posizioni libere daj-l a 1, inserendo in queste posizioni informazioni che, pero,
non modificano 10 stato del processo. Per indicare l'occupazione delle posizioni si usa
il bit eli validita
,
che, in questa caso vieI;l.e ad assumere un significato cii "posizione
riservata
ll
, pili che cii posizione valida. Occorre marcare Ie posizioni oceupate, rna
che non producono effetto perche non corrispondono ad attivita. delJ'unita funzionale,
in modo da indicare che esse nOD richiedono Peffettivo aggiornainentodel registro
cii destinazione al momento dell 'uscita da RSR. n modo pili naturale cOllsiste nello
scrivere nel campo deIrunita. funzionale un valore eonvenzionale.
Supponiamo che dopa l'istruzione A, che ha occupato Ie prime j posizioni, venga
emessa l'istruzione B, che necessita cii i cieli di clock su altra unita funzionale. 5i
possono verificare due casi
4
.
-
-
).
-
-
-
-
-
1-
-
)-
1
J-
.,
-
-
,
J-
1-
)-
I.
1-
\
1-
L
I
1-
)-
433
Esecuzione fuori' ordine
ordine rispetto alla memoria

III
nw
l'Uf' V f rogram
1
-
1
, , , ,
- 1
mulf f12 1 Ill4
, ,
-i
,
n
1
2
9
10
11
Completamento
n problema dell'ordine si pone non solo per i registri rna anche per la memoria. n
completamento in ordine rispetto alIa memoria si pub ottenere utilizzando due metodi.
1, La posizione; di RSR elibera (ovvero; > j-l); in questo caso ossa viene riservata
, a B insieme a tutte 1e posizioni superiori aneora libere {ossia non bceupate da
AI '
10.3.2
AI cielo di clock successivo, potrebbe essere emessa l'istrozione add!, rna cio
non avviene giacche la posizione 2 egia. stata occupata. L'istruzione di somma cleve
attendere nel registro di emissiqne per attri 8 cieli di clock, fino a quando 1'iBtruzione di
prodotto libera la posizione 2 (Figura 10.9). Essendo Ie istruzioni forzate a terminare
in ordine anche i registri sono modificati secondo l'ordine del programma.
La tecnica ora descritta emolto semplice e richiede una Iogica aggiuntiva poco
eomplicata. Thttavia si paga un prezZo per questa semplicita. realizzativa: non e
sfruttato appieno il parallelismo delle unita. funzionali in quante Ie iBtruzioni piu Iente
bIoccano nel registro' di emissione quelle pill veIoci che Ie seguono.
Figura 10.8 Contenuto di RSR dopo la prenotazione da parte dell'operazione di prodotto
in virgola mobile: per forzare it completamento in ordine, l'istruzione di prodotto oecupa
(bit di validita a 1) Ie prime 10 posi2ioni in modo che nessun altra istruzione piu veloce possa
usade per 1a propria prenotazione. Le posizioni da 9 a 1 devono essere marcate in modo
da indicare cbe esse non riehiedono t'effettivo aggiornamento del registro d.i destinazione
al momento dell'uscita da RSR. n modo piu naturale consiste nella scrivere nel campo
dell'unita funzionale un valore convenzionale (e stato messa una linetta. assl,lIIlendo che
tutte Ie posizioni da. 9 a 1 siano vuote). Naturalmente se gia un'altra istruzione, in una fase
di eseeuzione pili avanzata, fosse presente in RSR, per esempio in posizione 5, il prodotto
occuperebbe solo le posizioni libere, queUe comprese tra la 6 e la 10 1 di pagina 433).
UF' Ka v
t'rogram vounter
addf fl8 1
Ie
, ,
,
, , ,
,
u
l1l4
mulf f12 1
,
,
, ,
,
, , ,
,
U
1
2
8
9
10
,
Completarnento in ordine rispetto ai registri
10.3 Completamento in ordine .
, "
:; .,('
'.'
,"" "!l1


':
432 Capitolo 10 '
.
I
','", :
, "'S


"
,... Ie
""r';:"
.' ."
,':, >
.. ;.'
",."",
.
-&,j
2. La i del RSR n?n eli?eraJo:vero.i < j -1); in ca.:0.Pistruzione
. B cleve attendere nel reglstro dl emlSSlone sme a che la pOSlZlOne 81 libera.
'):)Jl!.\ Riprendendo l'esempio qi Figura 10,2, l'istruzione mulf pub essere e,:,essa solo
quando la precede;I1te lascia lib.era la .10.in RSR. AI momento etnlSSlOne
:.. .. .delPistruzione mulf vengono tlservate Ie pOSIZlom cbe precedono la declm3 se queste
..'f', ',. )
,,;:,101l' '<",,"
n I I" I 0 I I ' non sana gIa. occupate (FIgural0.8 .
'.r>.it . $1"1.; 1"''''
. ", "', I .':f.l.ii '
Figura 10.7 Contenuto di RSR dopo la prenotazione deWoperazione di somma in virgola' l
che va a occupare la posizione 2 in qt.tanto Ie 2 cicli nello
stadlO EX per esse:e La prenotazlOne Vlene mtrodotta dopo
che la precedente IStruzlOne estata scalata verso J'alto dl una pOS\Zlone.
, ;,t ,:); ,i"I?f !
,",,'i.. , "'i
, j .
... ... '''<O.Ie' ,-,'" :
..... -';1;',->;.".. , '

,"''M\'" "",,"','
..
" ":.<: _. " ."'1- '.
. ,t
n completamento. in ordine si attraverso la prenotazio.ne di RSR in modo da
forzare la concluslOne secondo l'ordine del programma. Ovvlamente anche 10 stato .. ,
di maechina 10. stesso ordine. Si due casi: i{ ."
compIetamento m ordme nspetto aJ regIstrl e compIetamento In ordme nspetto
'.
memoria. ..
<t'i
j
.. .J(,v,.,-
::. -i' ""'il-I',": "
'..,:,', 'I,',, '.
'. "., ..
"'.!.: f: " 'ililii ,I.,
'-.
. "..;."j-.! "
,... "
.. ',.-" -I' ..
.. ..
.'. ., il. ;
,I, ,<II"
, . ,.:-
,';,:,,':'lir t_("",,:,



.I"J'i\fl ,; .

''',' It-.'. I",'
, ."",-i:.f';:', ,.'\',
"" :>"'1:':'" .., ,".

'-a
'''''1 '," .;. >-
>:':V:'. .
'. .. ':' ,.
i"i,,,:" .
'.
_; 1>:;'," . "'.'-
,. <'. " .
.,:....1>.':".=(, :
. .. .' .. ,-,
..... .. 1 .','

".,bi, .. , .....,') "
.. ".i,,"
"'.,... !,'.. ,
- '<-::1"" '...
.-,.""",
".'
''', '
- :
, '> ;',
'
".' ..,
. '"
-<:.' ,.
"
,. \,'J,
\-::',,:,
,1-,,, ".'
'" .
. . :.
_,'
,. .' . ,
<<f " '",
, .(.'.-' .',
... . ,:.,'
......; .
.'.,
- "
::.-..:'
"Si fa I'ipotesi cbe Ie istruzioni veogano emesse in deli dl clock suc:cessivi e che quindi, quando
viene emessa l'istruzioue B, l'istruzione A aia in posizione j - 1.
10,3.1
Per ottenere iI completamento in ordine rispetto ai registri basta fare in modo che nella
prenotazione del bus dei risuItati non 5i renda possibile ehe alcune istruzioni II
pass
ino
avanti" ad altre. A tal fine
,
l'istruzione che prenota la posizione j in RSR occupa anche
tutte Ie posizioni libere daj-l a 1, inserendo in queste posizioni informazioni che, pero,
non modificano 10 stato del processo. Per indicare l'occupazione delle posizioni si usa
il bit eli validita
,
che, in questa caso vieI;l.e ad assumere un significato cii "posizione
riservata
ll
, pili che cii posizione valida. Occorre marcare Ie posizioni oceupate, rna
che non producono effetto perche non corrispondono ad attivita. delJ'unita funzionale,
in modo da indicare che esse nOD richiedono Peffettivo aggiornainentodel registro
cii destinazione al momento dell 'uscita da RSR. n modo pili naturale cOllsiste nello
scrivere nel campo deIrunita. funzionale un valore eonvenzionale.
Supponiamo che dopa l'istruzione A, che ha occupato Ie prime j posizioni, venga
emessa l'istruzione B, che necessita cii i cieli di clock su altra unita funzionale. 5i
possono verificare due casi
4
.
I
435
Esecuzione fuori ordine
UFl
.
UF2

ROB RF

UFn
campo contenente un identificatore del registro di destinazione del risultato dell'is-
truzione;
B
u
s
risultato dell'istruzione;
bit di completamento indicante se I'istruzione che ha prodotto I'entrata estata
gia eseguita 0 meno;
program counter relativo alPistruzione.
All'emissione di un'istruzione, Ie informazioni richieste da ROB vengono inserite
nella posizione puntata da Pc e Pc viene incrementato modulo la dimensione del buffer.
Contemporaneamente al posizionamento in ROB, istruzione riserva it bus dei risultati
tramite RSR, secondo Ie regole viste a! Paragrafo 10.2.1.
RSR ha ora il formato mostrato in Figura 10.11: oltre al bit di validita e all'uqita.
funzionale esso tiene traccia della posizione dell'istruzione all'interno del ROB (08-
sia il valore del corrispondente P, a! momento dell'entrata). Al completamento eli
un'istruzione, il risultato viene scritto nel campo Risultato nella poslzione del ROB
corrispondente. Quando un elemento eraggiunto da! puntatore di testa Ptl 1a logi-
ca di gestiooe del ROB attende che il corrispondente bit di completamento valga 1
ROB egestito come una coda circolare (veeli Figura 10.11), con un puntatore di
testa F
t
e un puntatore di coda Pc. Sono considerate valide Ie entrate che si trovano
nelle posizioni comprese tra quella puntata da P
t
e quella puntata da Pc,
L'insieme d'informazioni inserite dalla generica istruzione nel ROB ecool
turato:
Figura 10.10 Organizzazione eli una. pipeline col metoda del Reordering Buffer (ROB).
ROB consente l'esecuzione fuori ercline delle istruzioni: gil clementi di memoria della
ma.cchina. vengono modificati solo successivamente secondo I'or<line seqjlenziale,
La presenza del ROB richiede anecra RSR, ma 1a sua struttura risulta leggermente
modificata (veeli sotto).
j. -". '"
.,:' :.,
"';<"1
, .,' "::. >
'" ;',:,1'"
'-:'-' ..
"';':;1 '
'. '\':i .
,,' ,'. '..
,'- ,,'
, ".
.'.. , .
:. ',: :.
":-<r i.:.
,F:,
. ";;.).." "('

\. :"1o:ti . t-.;
nw
1ta v
r-fOgramrM-0unter
mulf 12 I
add! fiB 1M-

.


i-

1
2
3
Ca.pitola 10
at questa l'ipotesi fatta nel tracciare la Figura 10.1
10.4 Metodo del buffer di riordinamento
n metodo del Reorder Buffer (ROB), utilizzato in nU)D.erosi processori moderni
1
per-
mette alle istruzioni eli essere eseguite fuod ordine, consentendo l'esecuzione speculati-
va delle istruzioni. n ROB viene inserito nell'architettura considerata come mostrato
in Figura 10.10. Lo schema eli Figura 10,10 presuppone che Ie istruzione completate
esCallO dalle unita funziona!i ed entrino nel ROB. Nel ROB Ie istruzioni eseguite ven-
gODO riordinate in modo da mantenere la coerenza tra. state di macchina e modeno
di esecuzione (Ie istruzioni sono avviate aile unita funzionali solo 5e esse
non elipendono dai risultati delle istruzioni che aIlcora non sono uscite da! ROB).
Eritrambi i metodi proposti hanna 10 stesso effetto: impedire che istruzioni che
precedono un'istruziane di memorizzazione vengano completate a memorizzazione ef-
fettuata. La differenza eche Be nel primo caso l'istruzione di memoriziazione attende
nell'Issue Register, nel secondo caso viene inserita in RSR con 1a possibilita di avviare
Ie istruzioni successive.

lI*\u"-,,,,,
""I,F .' """',-'
-,.'::'rt, ,)j"<:::<',::"
, ./ i -;,'id",.

" "''fO.
"
,"
",':r,.. :i;,
I,;' ", .
,. i,', -'":J.r.;,'
."','m
" 01 _,..; -
- . :;'j'-'

'::
,. .....,;', ..:a: '

n I I I U I I f. ;<:;.J/;',
.,. "t'.' .
' """ '"
. . ,-
Figura 10.. 9 Contenuto di RSR dopa la. prenotazione del}loperazione eli somma che
che Ia. prenotazione di prodotto. liberato la posizione 2 prima,
di occuparla, attendendo nelrunlta di enusslone per 8 clcli di clock.
-";/ ;'f:,";
.. ,.",
, ,,,'-';,,iI'-fl"';'
'2tiI)-:.
1. n processore non emette alcun comando di memorizzazione (store) prima che Ie
I .N"l!n "1 _;:>-
istruzioni precedentemente emesse (tra cui eventuali istruzioni di diramazione)
siano state completate in modo corretto: cic viene ottenuto permettendo al re-
gistro di emissioDe di emettere istruzioni di memorizzazione solo quando RSR e
' ....'-I.;e.l ..rr.,;
vuoto
I, "'f!lI,""'l'-.: :;l:'{;""
. , . .-'. -" ,. ,.,., ',.,"
: '.'Irf'
, :7'fil.:
2. Si coosidera la memoria come una particolare unita. funzionale
5
. Analogamente !!!.r
a ogni altra }'istruzi.one di occupa una posizione in
MR, nOD al fine di nservare il bus del nsultatl, rna per controllare la coda ..
della memoria. memorizzazione
In RSR In modo che questa ragglUnga Ia Clma quando Ie
emesse 10 precedenza sono state completate. Non appena la pOS1Zlone relatlva
all'istruzione di me.morizzazione raggiunge la cima del RSR
1
l'unita
viene comandata all'esecuzione della roemorizzazione richiesta. '
. "I ' .. , .
..,", >'.
. ' .._,
, :.",.,;!. .
.. ;ilK,
7;
:,,: ':..
... -,."". ,
,-";;; ..rti
1", ...
, '""''',,:1 -;:.,'"
"" ',. ';;ft.," ,';:j(.
'. r";;-<'C"j-. '

c,:'"
.' '.-.,:.;' '.....
'. ::V.:. :',;(';'
.- . '. '" '.' '-.'
" ' .''l!-
-: ;"....
....:.. '\; .
.""-";.:. \'/
.".""
.,' ,,',.:';, -
". '::::" :

.' '::It :t:::',
: '.'
., . .,
434
\
I
\
\
I
1
I
I
l
I
I
I
I
I
I
I

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
I
435
Esecuzione fuori ordine
UFl
.
UF2

ROB RF

UFn
campo contenente un identificatore del registro di destinazione del risultato dell'is-
truzione;
B
u
s
risultato dell'istruzione;
bit di completamento indicante se I'istruzione che ha prodotto I'entrata estata
gia eseguita 0 meno;
program counter relativo alPistruzione.
All'emissione di un'istruzione, Ie informazioni richieste da ROB vengono inserite
nella posizione puntata da Pc e Pc viene incrementato modulo la dimensione del buffer.
Contemporaneamente al posizionamento in ROB, istruzione riserva it bus dei risultati
tramite RSR, secondo Ie regole viste a! Paragrafo 10.2.1.
RSR ha ora il formato mostrato in Figura 10.11: oltre al bit di validita e all'uqita.
funzionale esso tiene traccia della posizione dell'istruzione all'interno del ROB (08-
sia il valore del corrispondente P, a! momento dell'entrata). Al completamento eli
un'istruzione, il risultato viene scritto nel campo Risultato nella poslzione del ROB
corrispondente. Quando un elemento eraggiunto da! puntatore di testa Ptl 1a logi-
ca di gestiooe del ROB attende che il corrispondente bit di completamento valga 1
ROB egestito come una coda circolare (veeli Figura 10.11), con un puntatore di
testa F
t
e un puntatore di coda Pc. Sono considerate valide Ie entrate che si trovano
nelle posizioni comprese tra quella puntata da P
t
e quella puntata da Pc,
L'insieme d'informazioni inserite dalla generica istruzione nel ROB ecool
turato:
Figura 10.10 Organizzazione eli una. pipeline col metoda del Reordering Buffer (ROB).
ROB consente l'esecuzione fuori ercline delle istruzioni: gil clementi di memoria della
ma.cchina. vengono modificati solo successivamente secondo I'or<line seqjlenziale,
La presenza del ROB richiede anecra RSR, ma 1a sua struttura risulta leggermente
modificata (veeli sotto).
j. -". '"
.,:' :.,
"';<"1
, .,' "::. >
'" ;',:,1'"
'-:'-' ..
"';':;1 '
'. '\':i .
,,' ,'. '..
,'- ,,'
, ".
.'.. , .
:. ',: :.
":-<r i.:.
,F:,
. ";;.).." "('

\. :"1o:ti . t-.;
nw
1ta v
r-fOgramrM-0unter
mulf 12 I
add! fiB 1M-

.


i-

1
2
3
Ca.pitola 10
at questa l'ipotesi fatta nel tracciare la Figura 10.1
10.4 Metodo del buffer di riordinamento
n metodo del Reorder Buffer (ROB), utilizzato in nU)D.erosi processori moderni
1
per-
mette alle istruzioni eli essere eseguite fuod ordine, consentendo l'esecuzione speculati-
va delle istruzioni. n ROB viene inserito nell'architettura considerata come mostrato
in Figura 10.10. Lo schema eli Figura 10,10 presuppone che Ie istruzione completate
esCallO dalle unita funziona!i ed entrino nel ROB. Nel ROB Ie istruzioni eseguite ven-
gODO riordinate in modo da mantenere la coerenza tra. state di macchina e modeno
di esecuzione (Ie istruzioni sono avviate aile unita funzionali solo 5e esse
non elipendono dai risultati delle istruzioni che aIlcora non sono uscite da! ROB).
Eritrambi i metodi proposti hanna 10 stesso effetto: impedire che istruzioni che
precedono un'istruziane di memorizzazione vengano completate a memorizzazione ef-
fettuata. La differenza eche Be nel primo caso l'istruzione di memoriziazione attende
nell'Issue Register, nel secondo caso viene inserita in RSR con 1a possibilita di avviare
Ie istruzioni successive.

lI*\u"-,,,,,
""I,F .' """',-'
-,.'::'rt, ,)j"<:::<',::"
, ./ i -;,'id",.

" "''fO.
"
,"
",':r,.. :i;,
I,;' ", .
,. i,', -'":J.r.;,'
."','m
" 01 _,..; -
- . :;'j'-'

'::
,. .....,;', ..:a: '

n I I I U I I f. ;<:;.J/;',
.,. "t'.' .
' """ '"
. . ,-
Figura 10.. 9 Contenuto di RSR dopa la. prenotazione del}loperazione eli somma che
che Ia. prenotazione di prodotto. liberato la posizione 2 prima,
di occuparla, attendendo nelrunlta di enusslone per 8 clcli di clock.
-";/ ;'f:,";
.. ,.",
, ,,,'-';,,iI'-fl"';'
'2tiI)-:.
1. n processore non emette alcun comando di memorizzazione (store) prima che Ie
I .N"l!n "1 _;:>-
istruzioni precedentemente emesse (tra cui eventuali istruzioni di diramazione)
siano state completate in modo corretto: cic viene ottenuto permettendo al re-
gistro di emissioDe di emettere istruzioni di memorizzazione solo quando RSR e
' ....'-I.;e.l ..rr.,;
vuoto
I, "'f!lI,""'l'-.: :;l:'{;""
. , . .-'. -" ,. ,.,., ',.,"
: '.'Irf'
, :7'fil.:
2. Si coosidera la memoria come una particolare unita. funzionale
5
. Analogamente !!!.r
a ogni altra }'istruzi.one di occupa una posizione in
MR, nOD al fine di nservare il bus del nsultatl, rna per controllare la coda ..
della memoria. memorizzazione
In RSR In modo che questa ragglUnga Ia Clma quando Ie
emesse 10 precedenza sono state completate. Non appena la pOS1Zlone relatlva
all'istruzione di me.morizzazione raggiunge la cima del RSR
1
l'unita
viene comandata all'esecuzione della roemorizzazione richiesta. '
. "I ' .. , .
..,", >'.
. ' .._,
, :.",.,;!. .
.. ;ilK,
7;
:,,: ':..
... -,."". ,
,-";;; ..rti
1", ...
, '""''',,:1 -;:.,'"
"" ',. ';;ft.," ,';:j(.
'. r";;-<'C"j-. '

c,:'"
.' '.-.,:.;' '.....
'. ::V.:. :',;(';'
.- . '. '" '.' '-.'
" ' .''l!-
-: ;"....
....:.. '\; .
.""-";.:. \'/
.".""
.,' ,,',.:';, -
". '::::" :

.' '::It :t:::',
: '.'
., . .,
434
\
I
\
\
I
1
I
I
l
I
I
I
I
I
I
I

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
La coerenza della stato salvato rispetto alIa memoria avviene in modo analogo a
queUo vista per it metodo del completa.mento in ordine delle istruzioni: la via pili
semplice consiste nel trattenere Ie istruzioni <li memorizzazione (store) nel registro di
emissione sino a che Ie istruzioni precedentemente einesse sono state completate in
modo carretta. La soluzione pili 'complicata prevede invece di inserire un elemento
nel ROB come per ogni altra istruzione: l'istruzione di store rimarra. nella pipeline
delPunita. load/store sino a che l'elemento non aVralasciato it ROB.
(istruzione completata), A quel punta, il risultata viene scritto nel registro di des-
tinazione. La stato del banco dei registri si modifica percib in maniera coerente col
modello sequenziale.
Facendo riferimento all'esempio di Figura 10.2, in Figura 10.12 viene mostrato 10
stato di RSR e eli ROB dopa che eentrata I'i,truzione 3 (addt). Si suppone che
nessuna istruzione precedente la 1 sia ancora in ROB-RSR. In Figura 10.13 in viene
mostrato 10 stato di RSR at clock successivo! quando,addf ha raggiunto la testa di
RSR.
La Figura10.14 dipinge 180 situazione ancora un clock dopa: l'istruzione addf e
uscita da RSR! ma non da ROB, dove perc emarcata come completata. La prima
istruzione a uscire da ROB saral'istruzione 1 quando verra. completata. Aquel punta
tutte Ie attre saranno gia. state rna-reate come completate e verranno estratte ai clock
SUCCesSIVl.
1-
1-
-
1-
\,
)-
-
-
-
l-
_.
-
-
1-
1
-
\
1
1-
1-
1-
j--
\
1-
1-'
)-
437 Esecuzione fuori ordine
I1fcI lIiSiiTtato ----u Counter
-
6 -
0
' 1M
fl2 -

t18







,
1
2
Pt-t" 3
4
5
ml I . II . I
P, ->
Po ->
m
P, ->
adf
o
. .
U .
mulf 4
did -i
v p
U
,ddt 1 5
I---+(f+---i
mul! 4
. .
d1.vt 1 3
u .
n
n
1
2
3
4
8
10
12
1
2
3
4
9
10
13
n Pentium Pro usa 13 tecnica del buffer di riordinamento, anche se in modo diverse
rispetto a queUo esposto. Le istruzioni una volta decodificate vengono trasformate
in micr<>-operazia11i e inserite nel co,iddetto instruction pool (il ROB) dove posaono
essere eseguite fuori ordine, rna sempre in modo da fare salve Ie dipendenze tra istru-
zione e istruzione (facendo cioe attendere Ie istruzioni che necessitano dei dati prodotti
dalle precedenti). In attre parole, diversamente dar nostro madella, secondo il quale Ie
istruzioni decodificate che non pOMona essere emesse aspettano nel regiBtro di emis-
sione, nel Pentium Pro vengono trasferite all'instruction pool appena possibile. Da 11
vengono messein esecuzione (arnate a.lle unita. funzionali) in modo da rispettare Ie
dipendenze. Una volta conclusa l'esecuzione sull'unita. assegnata., Ie micro-istruzioni
ritornano nel pool, da. dove vengono estratte dall'unita. di prelievo (che ricostruisce
1'ordine del programma). La differenza esostanzialmente terminologica, concettual-
mente basta estendere i confini del ROB in modo da comprendervi anche l'unita. di
Figura 10.13 Contenuto di RSR al clock successive a quello della precedente figura. L'is-
truzione add! ha raggiunto \30 cima di RSR. L'istruzione add, che richiede un solo clock, non
puo essere emessa perche andrebbe a collidere COD addf.
rna ,sultato
"
r rogram vaunter
.
.
.

1
2
3
4
5
m
P, ->
P, ->
nw v pmm-

Capitolo 10
1
2
3
4
5
n
'-.".
-"
.
", .'!i:,lj,

, .i".1
__

-..:.':" ,

_.

"1" .",';J
.":.,
.' "iM!'"
' ..'- "'.
.,. ".:\0; l'
..-'"
','-: ""l:i
.'",

_.': \.. "i,,1

.$i>

. - .
Figura 10.11 Organizzazione del ROB e di RSR in sua presenza. ROB egestito come una
coda. circolare; Ie entrate valide sono quene cornprese tra il puntatore di testa P
t
e queUo di
coda Pc. Le istruzioni
,
at momento deU'emissione, vanno a riservare la posizione del ROB
puntata cia Pc. (de viene incrementato per puntare la posizione 5uccessiva). 11 puntatore
di testa P
t
individua Pistruzione che, una volta. completata
,
andra per prima a modificare
10 state della inacchina. n bit di completamento (C) serve proprio a questa: viene posta
ugnale a 1 quando I'istruzione conclude la fase di esecuzione. II funzionamento" di RSR e
ana.logo a queUo visto in precedenza, tranne che, al completamento di un'istruzione, anziche
andare modificare 10 stato della macchina! i risultati vengono scritti nell'apposito campo
(Risultato) del ROB e it relativo bit di completamento viene attivato. II bit V assumere il
significato di validita.: quando vale 1 identifica una posizione occupata da. un1istruziODQ. n
campo pROB serve a mantenere'la corrispondenza tra I'istruzione in RSR e 180 posizione in
ROB.
Si ooti che, essendo Ie stesse unita. funzionali in pipeline! Is. dimensione del ROB m esicu-
ramente maggiore di quells. di MR, in Quanta dovrebbe poter accogliere tutte Ie eventuali
istruzioni che stanno progredendo nelle vatie pipeline.
.36
La coerenza della stato salvato rispetto alIa memoria avviene in modo analogo a
queUo vista per it metodo del completa.mento in ordine delle istruzioni: la via pili
semplice consiste nel trattenere Ie istruzioni <li memorizzazione (store) nel registro di
emissione sino a che Ie istruzioni precedentemente einesse sono state completate in
modo carretta. La soluzione pili 'complicata prevede invece di inserire un elemento
nel ROB come per ogni altra istruzione: l'istruzione di store rimarra. nella pipeline
delPunita. load/store sino a che l'elemento non aVralasciato it ROB.
(istruzione completata), A quel punta, il risultata viene scritto nel registro di des-
tinazione. La stato del banco dei registri si modifica percib in maniera coerente col
modello sequenziale.
Facendo riferimento all'esempio di Figura 10.2, in Figura 10.12 viene mostrato 10
stato di RSR e eli ROB dopa che eentrata I'i,truzione 3 (addt). Si suppone che
nessuna istruzione precedente la 1 sia ancora in ROB-RSR. In Figura 10.13 in viene
mostrato 10 stato di RSR at clock successivo! quando,addf ha raggiunto la testa di
RSR.
La Figura10.14 dipinge 180 situazione ancora un clock dopa: l'istruzione addf e
uscita da RSR! ma non da ROB, dove perc emarcata come completata. La prima
istruzione a uscire da ROB saral'istruzione 1 quando verra. completata. Aquel punta
tutte Ie attre saranno gia. state rna-reate come completate e verranno estratte ai clock
SUCCesSIVl.
1-
1-
-
1-
\,
)-
-
-
-
l-
_.
-
-
1-
1
-
\
1
1-
1-
1-
j--
\
1-
1-'
)-
437 Esecuzione fuori ordine
I1fcI lIiSiiTtato ----u Counter
-
6 -
0
' 1M
fl2 -

t18







,
1
2
Pt-t" 3
4
5
ml I . II . I
P, ->
Po ->
m
P, ->
adf
o
. .
U .
mulf 4
did -i
v p
U
,ddt 1 5
I---+(f+---i
mul! 4
. .
d1.vt 1 3
u .
n
n
1
2
3
4
8
10
12
1
2
3
4
9
10
13
n Pentium Pro usa 13 tecnica del buffer di riordinamento, anche se in modo diverse
rispetto a queUo esposto. Le istruzioni una volta decodificate vengono trasformate
in micr<>-operazia11i e inserite nel co,iddetto instruction pool (il ROB) dove posaono
essere eseguite fuori ordine, rna sempre in modo da fare salve Ie dipendenze tra istru-
zione e istruzione (facendo cioe attendere Ie istruzioni che necessitano dei dati prodotti
dalle precedenti). In attre parole, diversamente dar nostro madella, secondo il quale Ie
istruzioni decodificate che non pOMona essere emesse aspettano nel regiBtro di emis-
sione, nel Pentium Pro vengono trasferite all'instruction pool appena possibile. Da 11
vengono messein esecuzione (arnate a.lle unita. funzionali) in modo da rispettare Ie
dipendenze. Una volta conclusa l'esecuzione sull'unita. assegnata., Ie micro-istruzioni
ritornano nel pool, da. dove vengono estratte dall'unita. di prelievo (che ricostruisce
1'ordine del programma). La differenza esostanzialmente terminologica, concettual-
mente basta estendere i confini del ROB in modo da comprendervi anche l'unita. di
Figura 10.13 Contenuto di RSR al clock successive a quello della precedente figura. L'is-
truzione add! ha raggiunto \30 cima di RSR. L'istruzione add, che richiede un solo clock, non
puo essere emessa perche andrebbe a collidere COD addf.
rna ,sultato
"
r rogram vaunter
.
.
.

1
2
3
4
5
m
P, ->
P, ->
nw v pmm-

Capitolo 10
1
2
3
4
5
n
'-.".
-"
.
", .'!i:,lj,

, .i".1
__

-..:.':" ,

_.

"1" .",';J
.":.,
.' "iM!'"
' ..'- "'.
.,. ".:\0; l'
..-'"
','-: ""l:i
.'",

_.': \.. "i,,1

.$i>

. - .
Figura 10.11 Organizzazione del ROB e di RSR in sua presenza. ROB egestito come una
coda. circolare; Ie entrate valide sono quene cornprese tra il puntatore di testa P
t
e queUo di
coda Pc. Le istruzioni
,
at momento deU'emissione, vanno a riservare la posizione del ROB
puntata cia Pc. (de viene incrementato per puntare la posizione 5uccessiva). 11 puntatore
di testa P
t
individua Pistruzione che, una volta. completata
,
andra per prima a modificare
10 state della inacchina. n bit di completamento (C) serve proprio a questa: viene posta
ugnale a 1 quando I'istruzione conclude la fase di esecuzione. II funzionamento" di RSR e
ana.logo a queUo visto in precedenza, tranne che, al completamento di un'istruzione, anziche
andare modificare 10 stato della macchina! i risultati vengono scritti nell'apposito campo
(Risultato) del ROB e it relativo bit di completamento viene attivato. II bit V assumere il
significato di validita.: quando vale 1 identifica una posizione occupata da. un1istruziODQ. n
campo pROB serve a mantenere'la corrispondenza tra I'istruzione in RSR e 180 posizione in
ROB.
Si ooti che, essendo Ie stesse unita. funzionali in pipeline! Is. dimensione del ROB m esicu-
ramente maggiore di quells. di MR, in Quanta dovrebbe poter accogliere tutte Ie eventuali
istruzioni che stanno progredendo nelle vatie pipeline.
.36
10.4.1 Uso di ROB e di percorsi di bypass
emissione. nROB del Pentium Pro ecapace di cootenere fino -a 40 micro-operazioni.
Rispetto al Dostro modelia e'e un'altra differenza sostanziale: l'unita emissione,
ein grade di emettere in parallelo fino a 3 micro-operazioni per periodo d.i clock.
Figura 10.14 Contenuto di RSR e ROB dopa the estata emessa I'istruzione add che va
a occupare la prima posizione di RSR e 5i mette in fondo a ROB. Vistruzione addf ha nel
frattempo completato la sua esecuzione. D risultato si trova in ROB e verdI. scritto in fi8
a1 momento dell'estrazione. Per prima. vena estratta dal ROB Pistruzione divt, essendo in
posizio:p.e eli testa. Quando essa emergera. da RSR, il suo risultato verra scritto in ROB e
vena asserito l'indicatore C eli completamento.
439
Esecuziane fuori arrline
B
u
s
UF)
UF2

,
,
ROB RF
>--
.
Ill .. I
UFn
I Rete di byp""'.
La gestione dell'esecuzione fuori ordine mediante l'uso di un History Buffer (HB)l
ossia di un registro che tenga traccia delPevoluzione (della storia) della stato della
macchina durante di un programma, nasce dall'esigenza. di migliarare Ie
prestazioni del ROB.
Videa alIa base del metoda equeHa oi permettere aHe istruziani di completare
l'esecuzione e di modificare il banco dei registri in qualsiasi ordine, rna di conservare
abbastanza informazioni sugli stati passati da poter ripristinare, in caso di necessita,
10 stato appropriato. A tal fine si utilizza appunto l'History Buffer, un registro orga-
nizzato in modo assai simile al ROB, inserito in architettura come mostrato in Figura
10.16.
Quando un'istruzione viene inviata dall'Unita. di emissione a un'unita. funzionale,
viene effettuata la pren9Lazione del Bus dei risultati tra.m.ite RSR e viene inserito un
nuovo elemento in HE. HB Stes80 e gestiLo come una. coda circolare (Figura 10.17).
L'emissione dell'istruzione richiede che siano risolte Ie dipendenze. In altre parole,
Ie istruzioni che hanno neeessita. di leggere registri non aneora scritti sono messe in
attesa.
Una posizione in HB si eompone di diversi campi:
l'identifieatore del registro di destinazione del risultato dell'istruzione;
it veec?io valore contenuto nel suddetto registro-destinazione, copiato in HB
da! banco dei registri al momenta dell'invio dell'istruzione all'opportuna unita
funzionale;
un bit di completamento che, come nel ROB, serve a indicare se l'istruziQne e

stata gia. eseguita oppure no;


il valore del PC corrispondente all'istruzione.
Figura 10.15 Percorsi eli by-pass e ROB. Questi percorsi, rendendo immedia.tamente dis-
ponibili i dati appena calcolati aile istruzioni in attesa di emissione, riducono al minimo il
te.mpo di permanenza delle istruzion.i registro di emissione.
10.5 Metodo dell'history buffer
'. '-,
I1Uf
SUItato L; .t"'Iogram L:ounter
h6 -
12

fTS!roSultato 1
r3
U 112


.
I
2
3
4
5
6
7 P, ->
P, ->
cline3-6 m
v

add
-'-

mulf 1 4

divt
T


Capitola 10
n
1
2
3
4
7
10
11
L'utilizZQ del'ROB, pur permettendo aile istruzioni di terminare la lora esecuzione
fuori ardine, fona 10 stato a es5ere aggiornato in online sequenziale. Di conseguenza,
ie istruzioni che arrivano a.l registro d.i emissione e the mpendoDo da risultati che sana
aneora oe] ROB, restano in attesa sino a quando i dati vengono scritti nel banco dei
registri. Cia porta inevitabilmente a una riduzione delle prestazioni del processore.
Un metoda per ridurre 13 8uddetta penalita consiste nel disporre dei percorsi
di bypass cbe connettono gli elementi presenti all'interno del ROB con Ie uscite del
banco dei registri (Figura 10.15). In questo modo Ie istruzioni possono usare, come
operandi sia i dati contenuti nel banco dei registri, sia quelli che aneora si trovano nel
ROB, evitando I'attesa nel registro <Ii emissione per la scrittura nel banco dei registri.
La presenza dei percoIsi di bypass non impedisce che 10 stato della macchina sia
coerente, dal momenta che il banco dei registri, esattamente come avveniva in assenza
.dei percorsi di by-pass, viene aggiomato in modo coerente col modella sequenziale d.i
esecuzione del programma. Un ulteriore problema si presenta qualora esistano
percor8i <Ii bypass multipli: pub accadere, infatti, cbe piu di un elemento del ROB
debba scrivere in uno stesso registro del banco dei registri; per evitare problemi , in
questo casa, si anticipa. verso l'uscita. del banco dei registri it data cantenuto nel piu
recente elemento del ROB relativo al registro-destinazione in ,questione.
438
I
I
r
\
I
I
I
\
I
\
I
I
I
-
-
-
-
-

-
-

-
-
-
-
-
-
-
-
-
-
10.4.1 Uso di ROB e di percorsi di bypass
emissione. nROB del Pentium Pro ecapace di cootenere fino -a 40 micro-operazioni.
Rispetto al Dostro modelia e'e un'altra differenza sostanziale: l'unita emissione,
ein grade di emettere in parallelo fino a 3 micro-operazioni per periodo d.i clock.
Figura 10.14 Contenuto di RSR e ROB dopa the estata emessa I'istruzione add che va
a occupare la prima posizione di RSR e 5i mette in fondo a ROB. Vistruzione addf ha nel
frattempo completato la sua esecuzione. D risultato si trova in ROB e verdI. scritto in fi8
a1 momento dell'estrazione. Per prima. vena estratta dal ROB Pistruzione divt, essendo in
posizio:p.e eli testa. Quando essa emergera. da RSR, il suo risultato verra scritto in ROB e
vena asserito l'indicatore C eli completamento.
439
Esecuziane fuori arrline
B
u
s
UF)
UF2

,
,
ROB RF
>--
.
Ill .. I
UFn
I Rete di byp""'.
La gestione dell'esecuzione fuori ordine mediante l'uso di un History Buffer (HB)l
ossia di un registro che tenga traccia delPevoluzione (della storia) della stato della
macchina durante di un programma, nasce dall'esigenza. di migliarare Ie
prestazioni del ROB.
Videa alIa base del metoda equeHa oi permettere aHe istruziani di completare
l'esecuzione e di modificare il banco dei registri in qualsiasi ordine, rna di conservare
abbastanza informazioni sugli stati passati da poter ripristinare, in caso di necessita,
10 stato appropriato. A tal fine si utilizza appunto l'History Buffer, un registro orga-
nizzato in modo assai simile al ROB, inserito in architettura come mostrato in Figura
10.16.
Quando un'istruzione viene inviata dall'Unita. di emissione a un'unita. funzionale,
viene effettuata la pren9Lazione del Bus dei risultati tra.m.ite RSR e viene inserito un
nuovo elemento in HE. HB Stes80 e gestiLo come una. coda circolare (Figura 10.17).
L'emissione dell'istruzione richiede che siano risolte Ie dipendenze. In altre parole,
Ie istruzioni che hanno neeessita. di leggere registri non aneora scritti sono messe in
attesa.
Una posizione in HB si eompone di diversi campi:
l'identifieatore del registro di destinazione del risultato dell'istruzione;
it veec?io valore contenuto nel suddetto registro-destinazione, copiato in HB
da! banco dei registri al momenta dell'invio dell'istruzione all'opportuna unita
funzionale;
un bit di completamento che, come nel ROB, serve a indicare se l'istruziQne e

stata gia. eseguita oppure no;


il valore del PC corrispondente all'istruzione.
Figura 10.15 Percorsi eli by-pass e ROB. Questi percorsi, rendendo immedia.tamente dis-
ponibili i dati appena calcolati aile istruzioni in attesa di emissione, riducono al minimo il
te.mpo di permanenza delle istruzion.i registro di emissione.
10.5 Metodo dell'history buffer
'. '-,
I1Uf
SUItato L; .t"'Iogram L:ounter
h6 -
12

fTS!roSultato 1
r3
U 112


.
I
2
3
4
5
6
7 P, ->
P, ->
cline3-6 m
v

add
-'-

mulf 1 4

divt
T


Capitola 10
n
1
2
3
4
7
10
11
L'utilizZQ del'ROB, pur permettendo aile istruzioni di terminare la lora esecuzione
fuori ardine, fona 10 stato a es5ere aggiornato in online sequenziale. Di conseguenza,
ie istruzioni che arrivano a.l registro d.i emissione e the mpendoDo da risultati che sana
aneora oe] ROB, restano in attesa sino a quando i dati vengono scritti nel banco dei
registri. Cia porta inevitabilmente a una riduzione delle prestazioni del processore.
Un metoda per ridurre 13 8uddetta penalita consiste nel disporre dei percorsi
di bypass cbe connettono gli elementi presenti all'interno del ROB con Ie uscite del
banco dei registri (Figura 10.15). In questo modo Ie istruzioni possono usare, come
operandi sia i dati contenuti nel banco dei registri, sia quelli che aneora si trovano nel
ROB, evitando I'attesa nel registro <Ii emissione per la scrittura nel banco dei registri.
La presenza dei percoIsi di bypass non impedisce che 10 stato della macchina sia
coerente, dal momenta che il banco dei registri, esattamente come avveniva in assenza
.dei percorsi di by-pass, viene aggiomato in modo coerente col modella sequenziale d.i
esecuzione del programma. Un ulteriore problema si presenta qualora esistano
percor8i <Ii bypass multipli: pub accadere, infatti, cbe piu di un elemento del ROB
debba scrivere in uno stesso registro del banco dei registri; per evitare problemi , in
questo casa, si anticipa. verso l'uscita. del banco dei registri it data cantenuto nel piu
recente elemento del ROB relativo al registro-destinazione in ,questione.
438
I
I
r
\
I
I
I
\
I
\
I
I
I
-
-
-
-
-

-
-

-
-
-
-
-
-
-
-
-
-
Figura 10.16 Organizzazione della pipeline can un History Buffer. L'HB entra in gioeo in
easo di necessita
l
rimettendo i vecchi valori nei registri modificati speculativamente.
,
Figura 10.17 Organizzaziooe di HB e di HER io sua preseoza. All'atto dell'emissione
di un'istruzione, in lIB viene memorizzato, il valore contenuto a1 momento nel registro di
destinazione dell'istruzione stessa: in caso di nccessita. (interruzioni
l
predizioni errate delle
diramazione)l puo essere ristabilito 10 stato della macchina precedente alPistruzione emessa.
RSR egestito esattamente come nel caso del ROB. Per velocizzare la scrittura
del risultato Del banco dei registri
l
viene aggiunto anche a RSR it campo identificatore
del registro di destinazione. Dopo che un'istruzione estata completata (giunta cioe
all0 stadia WB), il risultata viene immediatamente scritto ne1 relativo registro di
destinazione.
Quando unliatruzione arriva in testa a HE col bit di completamento pari a 1
(ovvero l'istruzione estata eseguita) e non esona nessuna necessita di ripristinare 10
stato coerente, il corrispondente elemento in HB non epin necessario e viene eliminato
(aggiornando il P,).
Paiche Pardine di emissione garantisce la coerenza rispetto aUe dipendenze dei da-
til i rnativi per i quali si deve ripristinare 10 stato corrente 50no legati alle interruzioni
e alle previsioni di saIto errate,
)-
1-
-
1-
-
-
)-
-
-
-
-
-
\-
1-
1
]-
)-
j-
)-
1-
1-
pipeline

III Gestione dei conflitti di controllo


con unita funzionali multiciclo
Si supponga di avere una pipeline con unita funzionali multiciclo e con un BTB.
Quando la predizione di una certa diramazione risulta errata, alcune iatruzioni pro--
venienti dal percorso errato del Busso di istruzioni si trovano nella pipeline. Nel caao
di pipeline lineare basta svuotare la pipeline e ricominciare it prelievo dell'istruzione
di destinazione reale della diramazione (Ie istruzioni provenienti da! percorso errato
'non hanno avuto il tempo di modilicare 10 stato della macchina).
Nel caso di eaecuzione fuon ordine it problema pili complesso, in quanta is-
truzioni provenienti dal percorso errato possono essere state completate prima della
.soluzione della diramazione (specialmente in presenza di condizioni ell diramazione
espressivamente molto potenti). In tal casol lo state della macchina emodificato e
non epili sufficiente il solo svuotamento della pipeline e il prelievo dell'istruzione d..i
destinazione.
Prendiamo, per esempio
l
il: frarmnento di programma in Fortran e il relativo
codice in Assembler, mostrati rispettivamente in Figura 10.18 ed in Figura 10.19,
tramite it quale si determina
l
in maniera iterativa
l
la radice quadrata di X.
In questo CasOl poiche Ie condizioni di diramazione sonG piuttosto complesse
l
l'in-
dirizzo predetto di destinazione della diramazione
l
tram1te llutilizzo del BTB
I
enato
molti cicli di clock prima che sia noto Peffettivo es;ito della In questo
intervallo d..i tempo possono essere prelevate ed eseguite numerose istruzioni prove-
nienti da! percorso di diramazione predetto, modificando COSt 10 stato della macchina.
Evidenternente, qualora la predizione risultasae errata, occorrerebbe ripristinare 10
stato della m,acchina che si aveva prima del prelievo speculativo delle istruzioni.
. Prendiamo in esame Pistruzione di dira.m.azione che interrompe il cido quando ai
giunge at risultato cercato (ristruzione 7 eli Figura 10.19). n suo comportamento d..i
continuo fallimento provoca un'errata predizione ogni volta ch.e la condizione eli dira-
mazione viene soddisfatta. In Figura 10.20 viene mostrata Pevoluzione del sistema.
Llistruzione di diramazione 7, prelevata a1 cido d.i clock T21 per essere eseguita deve
attendere it completamento delle istruzioni 5 e 6
1
the avverra solo al ciclo 7"13, Nel
frattempo vengono prelevate specu.lativamente Ie istruzioni 8, 9, 12
1
13, 14
1
1, 2, 3,
.fl.";;
'.:1'"-' "
';ll..'. .
I,;,
t
l1
-:' '..
:
.. __
...':",... -

.
'\, "
."}_,
.
"
In presenza di interruzione, l'emissione di nuove istruzioni da parte dell'Issu.e
.Register viene immediata.rnente bloccata. Sulla base del criterio di. risoluzione delilin-
.'.. terruzione
l
viene identificatal'istruzione in pipeline che discrimina queUe che vengono
portate a completamento da queUe che vengono (a questa proposito si ricordi
:.,ti!1t" quanta detto al capitola dedicato alle pipeline parlando delle eccezioni e delle inter-
.."ruzioni). Le istruzioni che devono completare scrivono su RF e vengono estratte da
HB. Per Ie istruzioni che seguon? da a che
..,:,., :nente e avesser? scntto dl. Vlene
. 11 vecchIO valore prendendolt da HB. Servlta PmterruzlQnel II programma nparte dalla
':Jr:!l .' prima istruzione che non estata fatta procedere.
I :-. La descrizione del ripristino dello stato coerente in riferimento aUe predizioni
.erratee rimandata al Paragrafo 10.6.3.
"I' ,\_.. ,r .
...... '1 '="". ' ..
"('" (';p-t" .....,
.. ''19: .. ,"
., "lij'l .'t.Y.('.'!... '..

. ;!'./.\' 10 6
"'.)/'" -'
' .... ,>.I;.T'
.. "troit: >0""'5 ,',
. '''''.J
"
\ ' ,','
-y, ."""!.,,/',,
. ;.'!'n" ',":,rt,'( "
. 'I '! ,1 \
'. ,,<-,-,.. l.r,'

.';! .ti....." .. ..... ,
',ii
"
' '''I:,:<'. .'.:' .
':: l ..
'r. ... ".;..0 p lo
'.:' ,;: :.:,;':,;
... i:J."\<"" ,
,..... , ,;......,.,';.:.
-. .f{
,,,m (jl\' ,',

,j!:i , J ::\".,("
:-.; l t .
,... "" , ,.p'."'!" -"!,'
,;w
',;' ..ll: ,*,,';,r}i."
>.tJi'ilm
'r,
\.,".I( ',."' ..
.,...
_ -,.: \..,-.
f;
.,' ..
'. ,: I ,.
".''-':''
"''1\" ,. 'h' ,
"..'j/.,::j;i: .
"to','..--,-
" . ?'.'*.' .."
,:I i1 .
.....
.."".
"'-1\- .."" ",.
,<.: t.y..! ":,,"
, .l" I , ''It. J,
:",,';;:' .
.".t'i'
'::'.t'; .:.
"'''-''Ii. ,\ ,',:" , , .. ",..... , ,.
." :';::,.:,," ,.
y---,) ' ..
., 11' '/....\ ..
., '\',;,1!':,>
.'?t1!.frJ

,"', .
"iiifl ':.;,--'." ,.
,\ 'i!rI,
->. ,.
',. ':, "'_..
., ....
."i':'\!.' :.
\),.:: :'.'
,,i .. .
" ):.. -'::'-:.. ,
",,1'\jl' '. ';"J.:
;0
.,.' . . '. "
-,.,
""E . ,.'. '.1,",
..,." , " - .
" . r ...
/(_'
.. '('
., \. - '.'
'1' .".,.. ,I,
- .,. \" :l..

[""1fcf vee 10 v I rrogram vounter
valore .
. . .
.
. .
.
1
P
t
--+ 2
3
4
Pc -t 5
n
UF1
[]
UF2
I"
RF

UFn
HB
u. "lfd

. . .

. .

n
1
2
3
4
5
440 Capitolo 10
Figura 10.16 Organizzazione della pipeline can un History Buffer. L'HB entra in gioeo in
easo di necessita
l
rimettendo i vecchi valori nei registri modificati speculativamente.
,
Figura 10.17 Organizzaziooe di HB e di HER io sua preseoza. All'atto dell'emissione
di un'istruzione, in lIB viene memorizzato, il valore contenuto a1 momento nel registro di
destinazione dell'istruzione stessa: in caso di nccessita. (interruzioni
l
predizioni errate delle
diramazione)l puo essere ristabilito 10 stato della macchina precedente alPistruzione emessa.
RSR egestito esattamente come nel caso del ROB. Per velocizzare la scrittura
del risultato Del banco dei registri
l
viene aggiunto anche a RSR it campo identificatore
del registro di destinazione. Dopo che un'istruzione estata completata (giunta cioe
all0 stadia WB), il risultata viene immediatamente scritto ne1 relativo registro di
destinazione.
Quando unliatruzione arriva in testa a HE col bit di completamento pari a 1
(ovvero l'istruzione estata eseguita) e non esona nessuna necessita di ripristinare 10
stato coerente, il corrispondente elemento in HB non epin necessario e viene eliminato
(aggiornando il P,).
Paiche Pardine di emissione garantisce la coerenza rispetto aUe dipendenze dei da-
til i rnativi per i quali si deve ripristinare 10 stato corrente 50no legati alle interruzioni
e alle previsioni di saIto errate,
)-
1-
-
1-
-
-
)-
-
-
-
-
-
\-
1-
1
]-
)-
j-
)-
1-
1-
pipeline

III Gestione dei conflitti di controllo


con unita funzionali multiciclo
Si supponga di avere una pipeline con unita funzionali multiciclo e con un BTB.
Quando la predizione di una certa diramazione risulta errata, alcune iatruzioni pro--
venienti dal percorso errato del Busso di istruzioni si trovano nella pipeline. Nel caao
di pipeline lineare basta svuotare la pipeline e ricominciare it prelievo dell'istruzione
di destinazione reale della diramazione (Ie istruzioni provenienti da! percorso errato
'non hanno avuto il tempo di modilicare 10 stato della macchina).
Nel caso di eaecuzione fuon ordine it problema pili complesso, in quanta is-
truzioni provenienti dal percorso errato possono essere state completate prima della
.soluzione della diramazione (specialmente in presenza di condizioni ell diramazione
espressivamente molto potenti). In tal casol lo state della macchina emodificato e
non epili sufficiente il solo svuotamento della pipeline e il prelievo dell'istruzione d..i
destinazione.
Prendiamo, per esempio
l
il: frarmnento di programma in Fortran e il relativo
codice in Assembler, mostrati rispettivamente in Figura 10.18 ed in Figura 10.19,
tramite it quale si determina
l
in maniera iterativa
l
la radice quadrata di X.
In questo CasOl poiche Ie condizioni di diramazione sonG piuttosto complesse
l
l'in-
dirizzo predetto di destinazione della diramazione
l
tram1te llutilizzo del BTB
I
enato
molti cicli di clock prima che sia noto Peffettivo es;ito della In questo
intervallo d..i tempo possono essere prelevate ed eseguite numerose istruzioni prove-
nienti da! percorso di diramazione predetto, modificando COSt 10 stato della macchina.
Evidenternente, qualora la predizione risultasae errata, occorrerebbe ripristinare 10
stato della m,acchina che si aveva prima del prelievo speculativo delle istruzioni.
. Prendiamo in esame Pistruzione di dira.m.azione che interrompe il cido quando ai
giunge at risultato cercato (ristruzione 7 eli Figura 10.19). n suo comportamento d..i
continuo fallimento provoca un'errata predizione ogni volta ch.e la condizione eli dira-
mazione viene soddisfatta. In Figura 10.20 viene mostrata Pevoluzione del sistema.
Llistruzione di diramazione 7, prelevata a1 cido d.i clock T21 per essere eseguita deve
attendere it completamento delle istruzioni 5 e 6
1
the avverra solo al ciclo 7"13, Nel
frattempo vengono prelevate specu.lativamente Ie istruzioni 8, 9, 12
1
13, 14
1
1, 2, 3,
.fl.";;
'.:1'"-' "
';ll..'. .
I,;,
t
l1
-:' '..
:
.. __
...':",... -

.
'\, "
."}_,
.
"
In presenza di interruzione, l'emissione di nuove istruzioni da parte dell'Issu.e
.Register viene immediata.rnente bloccata. Sulla base del criterio di. risoluzione delilin-
.'.. terruzione
l
viene identificatal'istruzione in pipeline che discrimina queUe che vengono
portate a completamento da queUe che vengono (a questa proposito si ricordi
:.,ti!1t" quanta detto al capitola dedicato alle pipeline parlando delle eccezioni e delle inter-
.."ruzioni). Le istruzioni che devono completare scrivono su RF e vengono estratte da
HB. Per Ie istruzioni che seguon? da a che
..,:,., :nente e avesser? scntto dl. Vlene
. 11 vecchIO valore prendendolt da HB. Servlta PmterruzlQnel II programma nparte dalla
':Jr:!l .' prima istruzione che non estata fatta procedere.
I :-. La descrizione del ripristino dello stato coerente in riferimento aUe predizioni
.erratee rimandata al Paragrafo 10.6.3.
"I' ,\_.. ,r .
...... '1 '="". ' ..
"('" (';p-t" .....,
.. ''19: .. ,"
., "lij'l .'t.Y.('.'!... '..

. ;!'./.\' 10 6
"'.)/'" -'
' .... ,>.I;.T'
.. "troit: >0""'5 ,',
. '''''.J
"
\ ' ,','
-y, ."""!.,,/',,
. ;.'!'n" ',":,rt,'( "
. 'I '! ,1 \
'. ,,<-,-,.. l.r,'

.';! .ti....." .. ..... ,
',ii
"
' '''I:,:<'. .'.:' .
':: l ..
'r. ... ".;..0 p lo
'.:' ,;: :.:,;':,;
... i:J."\<"" ,
,..... , ,;......,.,';.:.
-. .f{
,,,m (jl\' ,',

,j!:i , J ::\".,("
:-.; l t .
,... "" , ,.p'."'!" -"!,'
,;w
',;' ..ll: ,*,,';,r}i."
>.tJi'ilm
'r,
\.,".I( ',."' ..
.,...
_ -,.: \..,-.
f;
.,' ..
'. ,: I ,.
".''-':''
"''1\" ,. 'h' ,
"..'j/.,::j;i: .
"to','..--,-
" . ?'.'*.' .."
,:I i1 .
.....
.."".
"'-1\- .."" ",.
,<.: t.y..! ":,,"
, .l" I , ''It. J,
:",,';;:' .
.".t'i'
'::'.t'; .:.
"'''-''Ii. ,\ ,',:" , , .. ",..... , ,.
." :';::,.:,," ,.
y---,) ' ..
., 11' '/....\ ..
., '\',;,1!':,>
.'?t1!.frJ

,"', .
"iiifl ':.;,--'." ,.
,\ 'i!rI,
->. ,.
',. ':, "'_..
., ....
."i':'\!.' :.
\),.:: :'.'
,,i .. .
" ):.. -'::'-:.. ,
",,1'\jl' '. ';"J.:
;0
.,.' . . '. "
-,.,
""E . ,.'. '.1,",
..,." , " - .
" . r ...
/(_'
.. '('
., \. - '.'
'1' .".,.. ,I,
- .,. \" :l..

[""1fcf vee 10 v I rrogram vounter
valore .
. . .
.
. .
.
1
P
t
--+ 2
3
4
Pc -t 5
n
UF1
[]
UF2
I"
RF

UFn
HB
u. "lfd

. . .

. .

n
1
2
3
4
5
440 Capitolo 10
443
...
...
i. fO+-sx, f2+-dx,
1. f4+-RAD, f6+-,-X
'l.
'l. Calcolo di RAD=(sx+dx)/2
addf f8, to, t2
multi
'l. Cal colo di RAD
2
-X
mulf 10,4,4
sub! f12,10,f6
Y. 5e (RAD
2
_X)2 <EPS ;:::}exit
mulf' f14,f12,f12
slt 16,14,30
bnez 16,exit
i. 5e RAD
2
<X
sIt 18,fl0,6
bnez f18,ax
/. Pooi dx-RAD
addU
j endif
'I. PORi sx=RAD
a.ddfi
%Cbiusura dell loop
Dubi
bnez r1.1oop
xu llX::r::r::r::r
sx:
endif :
exit:
loop:
Esecuzione fuori online
5
6
7
8
9
3

1
2
12
13
,.
15
10
11
Ripristino dello stato coerente in presenza di ROB
cui potranno modificare 10 stato solo dopo che la diramazione estata risolta. Se quin-
di la predizione risulta errata si ecerti ebe 10 stato ecoerente
1
perci?> basta svuotare
RSR e prelevare l'istruzione proveniente da! percor50 carretta.
Per ripristinare 10 stato coerente nel caso di predizione errata 5i introduce nel ROB un
bit ebe indica se llistruzione euna diramazione che ha provocato un1errata. predizione
(bit Epr in Figura 10.21).
Quando un'istruzione viene completata, nel caso si tratti dj. una diramazione,
ai risultati viene inserita nel ROB la condizione di errata predizione.
Se se questo bit indica che vi e stata predizione errata, una volta che l'elerriento
raggiunge la testa del buffer, si svuota la pipeline negando l'accesso ai registri e
a qualsiasi'istruzione' di scrittura, e si preleva llistruzione proveruente da! percorso
corretto.
La coerenza dello stato rispetto alIa memoria si ottiene trattenendo Ie istruzioni
di scrittura nel registro di emissione sino a che Ie istruzioni precedentemente emesse
siano state completate in modo carretto. Alternativamente si puo inserire un elemento
Figura 10.19 Codice Assembler per iJ calcolo della radice quadra.ta..
. . .
. . .
5X=X
DX=O
DO 100 I=l,N
RAD=(5X+DX)'O.5
IFRAD'*2-X)**2.LE.EP5)GOTO 200
IF(RAD**2.GT.X) THEN
5X=RAD
ELSE
DX=RAD
ENDIF
CONTINUE
PRINT*.'La radice quadrat a di
1
,X,'e
'l
) ,RAD
100
200
completare Pesecuzione e modificare 10 stato della macchina.
,
1.
Nel caso in cui Ie istruziooi sooo forzate a essere eseguite rispettando l'ordine eli pro-
gramma) l'eseeuzione speculativa edi fatto impedita
1
per cui ,non vi eneeessita, aleuna
9i modi1iche. Infatti, quando un1istruzione eli diramazione epresente in RSR tutte Ie
istruzioni prelevate speculativamente possono occupare solo Ie posizioni inferiori per
2. Le. istruzioni successive all'istruzione di dirarnazione (provenienti -dal percor-
so errata) devono essere eliminate e non devono aver modificato 10 stato della
ma.cchina.
10.6.1 Stato coerente nel caso del completamento in ordine
delle istruzioni
Proprio dalla necessita. di soddisfare queste condizioni si giustificano i criteri di
gestione dell'esecuzione fuori oedine descritti nei precedenti paragrafi. In realta, non
solo Ie speculazioni errate impongono il di queste condizioni rna anehe
tutti gli eventi cbe impongono un "congelamento
n
del sistema, come Ie interruzioni.
Aile interruzioni si atcennate in precedenza.
Nella parte cbe segue vengono'descritte Ie modifiche cia apportare agli e1ementi
preposti alia gestione dell'esecuzione fuori ordine in modo da tener canto dell'esecu-
zione speculativa delle istruzioni.
442 Capitolo 10
\
I
\
\
\
\
I
\
I
I
\
I
1

I \

443
...
...
i. fO+-sx, f2+-dx,
1. f4+-RAD, f6+-,-X
'l.
'l. Calcolo di RAD=(sx+dx)/2
addf f8, to, t2
multi
'l. Cal colo di RAD
2
-X
mulf 10,4,4
sub! f12,10,f6
Y. 5e (RAD
2
_X)2 <EPS ;:::}exit
mulf' f14,f12,f12
slt 16,14,30
bnez 16,exit
i. 5e RAD
2
<X
sIt 18,fl0,6
bnez f18,ax
/. Pooi dx-RAD
addU
j endif
'I. PORi sx=RAD
a.ddfi
%Cbiusura dell loop
Dubi
bnez r1.1oop
xu llX::r::r::r::r
sx:
endif :
exit:
loop:
Esecuzione fuori online
5
6
7
8
9
3

1
2
12
13
,.
15
10
11
Ripristino dello stato coerente in presenza di ROB
cui potranno modificare 10 stato solo dopo che la diramazione estata risolta. Se quin-
di la predizione risulta errata si ecerti ebe 10 stato ecoerente
1
perci?> basta svuotare
RSR e prelevare l'istruzione proveniente da! percor50 carretta.
Per ripristinare 10 stato coerente nel caso di predizione errata 5i introduce nel ROB un
bit ebe indica se llistruzione euna diramazione che ha provocato un1errata. predizione
(bit Epr in Figura 10.21).
Quando un'istruzione viene completata, nel caso si tratti dj. una diramazione,
ai risultati viene inserita nel ROB la condizione di errata predizione.
Se se questo bit indica che vi e stata predizione errata, una volta che l'elerriento
raggiunge la testa del buffer, si svuota la pipeline negando l'accesso ai registri e
a qualsiasi'istruzione' di scrittura, e si preleva llistruzione proveruente da! percorso
corretto.
La coerenza dello stato rispetto alIa memoria si ottiene trattenendo Ie istruzioni
di scrittura nel registro di emissione sino a che Ie istruzioni precedentemente emesse
siano state completate in modo carretto. Alternativamente si puo inserire un elemento
Figura 10.19 Codice Assembler per iJ calcolo della radice quadra.ta..
. . .
. . .
5X=X
DX=O
DO 100 I=l,N
RAD=(5X+DX)'O.5
IFRAD'*2-X)**2.LE.EP5)GOTO 200
IF(RAD**2.GT.X) THEN
5X=RAD
ELSE
DX=RAD
ENDIF
CONTINUE
PRINT*.'La radice quadrat a di
1
,X,'e
'l
) ,RAD
100
200
completare Pesecuzione e modificare 10 stato della macchina.
,
1.
Nel caso in cui Ie istruziooi sooo forzate a essere eseguite rispettando l'ordine eli pro-
gramma) l'eseeuzione speculativa edi fatto impedita
1
per cui ,non vi eneeessita, aleuna
9i modi1iche. Infatti, quando un1istruzione eli diramazione epresente in RSR tutte Ie
istruzioni prelevate speculativamente possono occupare solo Ie posizioni inferiori per
2. Le. istruzioni successive all'istruzione di dirarnazione (provenienti -dal percor-
so errata) devono essere eliminate e non devono aver modificato 10 stato della
ma.cchina.
10.6.1 Stato coerente nel caso del completamento in ordine
delle istruzioni
Proprio dalla necessita. di soddisfare queste condizioni si giustificano i criteri di
gestione dell'esecuzione fuori oedine descritti nei precedenti paragrafi. In realta, non
solo Ie speculazioni errate impongono il di queste condizioni rna anehe
tutti gli eventi cbe impongono un "congelamento
n
del sistema, come Ie interruzioni.
Aile interruzioni si atcennate in precedenza.
Nella parte cbe segue vengono'descritte Ie modifiche cia apportare agli e1ementi
preposti alia gestione dell'esecuzione fuori ordine in modo da tener canto dell'esecu-
zione speculativa delle istruzioni.
442 Capitolo 10
\
I
\
\
\
\
I
\
I
I
\
I
1

I \

10.6.3 Ripristino della stato coerente con history buffer


)..
-
-
I-
-
-
-
l-
-
)
I -
)-
\
I
1-
\ .
)..
1-
1.
I-
\
I
I.
445 Esecuzione fuari ardine
nell posizione di coda dell'istruzione di destinazione effettiva.
tI.G vee 0 pr C
Program Counter
valore
.

.



:R:d ltlSultato Tpr C Program Counter


.

. .


n
1
PI -+ 2
3
4
Pc -+, 5
Aggiunta del campo d.i errata pred.izione (Epr) a ROB per tener conto
Nel caso in cui una diramazione viene predetta erroneamente,
n
1
PI -+ 2
3
4
Pc -+- 5
3. Partendo dalia coda verso 130 testa, vengono cancellati gli elementi in HB e,
contemporanea.mente, i vecchi valori, contenuti nel buffer, vengono riscritti nei
registri di destinazione, fino ad arrivare alia prima istruzione sui percorso sba-
gliato.
4. L'esecuzione del programma riprende prelevando l'istruzione proveniente dal per-
corso corretto.
Figura 10.22 Organizzazione in campi di HB con il bit di erratapredizione. Non appena.
il puntatore di testa raggiunge l'istruzione di diramazione predetta er:roneamente (bit di
errata predlzione attivo), vengono ripristinati tutti i valori dei registri cantenuti nel buffer,
riportando la macchina alla stato che la. diramazione.
. ..
Figura 10.21
nripristino di uno stato coerente in presenza di istruzioni eli scrittura in memoria
.. avviene sostanzialmente nella stesso modo visto nel metoda del ROB, cioe trattenendo
tali iBtruzioni nell'unita funzionale preposta aile operazioni di load/stpre fintanto the
il corrispondente elemento in HE non artiva in testa (senza riportare erreri): Bolo
allara viene mandata un segnale all1unita. funzionale per permettere la scrlttura del
data in memoria.
TO Tl T'J 1) 1"4 '1"6 7"T T8 Tg rIO 'TJ.l 'T12 r13 'T'1.4
I I I I ! I I I I I I I , I I I I
IIF ID EXjEXIEXIEXIEXIEXIEXIEXIEX EX ME WB
IF St : St SI SI SI St :: St :: St ! St ID EX ME WB
................" ............g ...... a" ....:"..,
IF St 51 St St 5t :: 5t ; 5t : St , 9t ID EX ME WEI
............................
IF ID EX ME WB
IF ID EX ME WB
IF ID EX EX ME WB
IF ID EX SI ME WB
.
IF ID EX 51 ME WB
. IF ID EX EX ME WB
IF 5t : 5t S,
ID EX ME
............
IF St SI SI ID EX
............
IF S, St St ID
."... "''''
IF 51 St Sl
............
IF
S'
Sl
" .."
IF
Capitola 10
5 .ulf .f14.f12.t12
6 sIt 116,114,130
7 bnez fl6,_zit
Spec e .1t 118,f10,16
Spec 9 bnez t18,az
12 add11 10.f4,'0
Spec 13 .ubi rl,rl.18
Spec 14 rl,loQp
Spec 1 add!i 18,10,12
SplC 2
Spec 3 mult 110,14,14
SPIC 4 sub! 112,110,1&
SplC 5 =u11 114,112,112
Spec 6 .It 116,114,130
15 xrJ. :u::z.xu:J:
Anche,in questo caso per ripristinare 10 stato coerente nel caso di predizione errata,
si ricorre a1 bit eli errata predizione (Figura 10.22).
Quando un'istruzione artiva in testa al buffer con un bit di completamento pari a
1 (ovvero l'istruzione estata eseguita), viene controllato il relativo bit d.i errata predi-
zione. Se esso indica che l'i5truzione in questione non ba causato nessuna speculazione
errata, il elemento in HB non epiu necessrrio e viene quindi elimin?-
to; se, invece, tale bit vale 1 (ovvero l'istruzione euna diramazione e ha innescato un
certo numero di esecuzioni speculative errate) 5i devono compiere, per ripristinare 10
stato coerente, i seguenti passi:
1. Viene bloccato HB e viene bloccata l'emissione di nuove istruzioni da parte
dell'Issue Register.
2. Si attende che Ie che precedono 1a diramazione,vengano completate; si attende
cioe che la diramazione 5i porti in testa al buffer.
nel ROB non appena. viene emessa un'istruzione di scrittura: l'istruzione rimarra nella
pipeline della memoria fino ache l'elemento non avra lasciato il ROB.
Figura 10.20 Sequenza degli eventi al momento in cui si giunge al valore cercata. L'istru-
zione di diramazione bnez fi6.exit, che fad. uscire i1 fiusso del programma dal cicIo DO,
viene messa in stallo per consentue 1a soluzione della condizione eli diramazione (istruzioni
5 e 6). ,Nel frattempo vengono prelevate speculativamente undici istruzioni,.sei delle qua-Ii
completano l'esecuzione e modificano 10 stato della macchioa. Una volta riso!ta 1a condizione
di diramazione deve, quindi, essere ripristinato 10 stato della macdina che si aveva al me-
mento del prelievo dell'istruzione 7. Si Doti come l'istruzioce di destinazione effettiva della.
diramazione venga. prelevata. al cielo 'T15, ossia dopa 13 deli dalla rase IF della diramazione
predetta erroneamente.
444
10.6.3 Ripristino della stato coerente con history buffer
)..
-
-
I-
-
-
-
l-
-
)
I -
)-
\
I
1-
\ .
)..
1-
1.
I-
\
I
I.
445 Esecuzione fuari ardine
nell posizione di coda dell'istruzione di destinazione effettiva.
tI.G vee 0 pr C
Program Counter
valore
.

.



:R:d ltlSultato Tpr C Program Counter


.

. .


n
1
PI -+ 2
3
4
Pc -+, 5
Aggiunta del campo d.i errata pred.izione (Epr) a ROB per tener conto
Nel caso in cui una diramazione viene predetta erroneamente,
n
1
PI -+ 2
3
4
Pc -+- 5
3. Partendo dalia coda verso 130 testa, vengono cancellati gli elementi in HB e,
contemporanea.mente, i vecchi valori, contenuti nel buffer, vengono riscritti nei
registri di destinazione, fino ad arrivare alia prima istruzione sui percorso sba-
gliato.
4. L'esecuzione del programma riprende prelevando l'istruzione proveniente dal per-
corso corretto.
Figura 10.22 Organizzazione in campi di HB con il bit di erratapredizione. Non appena.
il puntatore di testa raggiunge l'istruzione di diramazione predetta er:roneamente (bit di
errata predlzione attivo), vengono ripristinati tutti i valori dei registri cantenuti nel buffer,
riportando la macchina alla stato che la. diramazione.
. ..
Figura 10.21
nripristino di uno stato coerente in presenza di istruzioni eli scrittura in memoria
.. avviene sostanzialmente nella stesso modo visto nel metoda del ROB, cioe trattenendo
tali iBtruzioni nell'unita funzionale preposta aile operazioni di load/stpre fintanto the
il corrispondente elemento in HE non artiva in testa (senza riportare erreri): Bolo
allara viene mandata un segnale all1unita. funzionale per permettere la scrlttura del
data in memoria.
TO Tl T'J 1) 1"4 '1"6 7"T T8 Tg rIO 'TJ.l 'T12 r13 'T'1.4
I I I I ! I I I I I I I , I I I I
IIF ID EXjEXIEXIEXIEXIEXIEXIEXIEX EX ME WB
IF St : St SI SI SI St :: St :: St ! St ID EX ME WB
................" ............g ...... a" ....:"..,
IF St 51 St St 5t :: 5t ; 5t : St , 9t ID EX ME WEI
............................
IF ID EX ME WB
IF ID EX ME WB
IF ID EX EX ME WB
IF ID EX SI ME WB
.
IF ID EX 51 ME WB
. IF ID EX EX ME WB
IF 5t : 5t S,
ID EX ME
............
IF St SI SI ID EX
............
IF S, St St ID
."... "''''
IF 51 St Sl
............
IF
S'
Sl
" .."
IF
Capitola 10
5 .ulf .f14.f12.t12
6 sIt 116,114,130
7 bnez fl6,_zit
Spec e .1t 118,f10,16
Spec 9 bnez t18,az
12 add11 10.f4,'0
Spec 13 .ubi rl,rl.18
Spec 14 rl,loQp
Spec 1 add!i 18,10,12
SplC 2
Spec 3 mult 110,14,14
SPIC 4 sub! 112,110,1&
SplC 5 =u11 114,112,112
Spec 6 .It 116,114,130
15 xrJ. :u::z.xu:J:
Anche,in questo caso per ripristinare 10 stato coerente nel caso di predizione errata,
si ricorre a1 bit eli errata predizione (Figura 10.22).
Quando un'istruzione artiva in testa al buffer con un bit di completamento pari a
1 (ovvero l'istruzione estata eseguita), viene controllato il relativo bit d.i errata predi-
zione. Se esso indica che l'i5truzione in questione non ba causato nessuna speculazione
errata, il elemento in HB non epiu necessrrio e viene quindi elimin?-
to; se, invece, tale bit vale 1 (ovvero l'istruzione euna diramazione e ha innescato un
certo numero di esecuzioni speculative errate) 5i devono compiere, per ripristinare 10
stato coerente, i seguenti passi:
1. Viene bloccato HB e viene bloccata l'emissione di nuove istruzioni da parte
dell'Issue Register.
2. Si attende che Ie che precedono 1a diramazione,vengano completate; si attende
cioe che la diramazione 5i porti in testa al buffer.
nel ROB non appena. viene emessa un'istruzione di scrittura: l'istruzione rimarra nella
pipeline della memoria fino ache l'elemento non avra lasciato il ROB.
Figura 10.20 Sequenza degli eventi al momento in cui si giunge al valore cercata. L'istru-
zione di diramazione bnez fi6.exit, che fad. uscire i1 fiusso del programma dal cicIo DO,
viene messa in stallo per consentue 1a soluzione della condizione eli diramazione (istruzioni
5 e 6). ,Nel frattempo vengono prelevate speculativamente undici istruzioni,.sei delle qua-Ii
completano l'esecuzione e modificano 10 stato della macchioa. Una volta riso!ta 1a condizione
di diramazione deve, quindi, essere ripristinato 10 stato della macdina che si aveva al me-
mento del prelievo dell'istruzione 7. Si Doti come l'istruzioce di destinazione effettiva della.
diramazione venga. prelevata. al cielo 'T15, ossia dopa 13 deli dalla rase IF della diramazione
predetta erroneamente.
444
In Figura 11.1 viene mostrata I'architettura prevalente fino agli anni sessanta in rife-
rimento a un minicalcolatore [Hew73] e a un mainframe [IBM74],
La pratica realizzativa corrispondente alia schema d.i Figura1!.l venne inter-
retta dalla Digital 'Equipment Corporation (DEC) agli inizi degli anni settanta, con
l'introduzione della famiglia PDPl1, progettata secondo una filosofia innovativa. 1'ar-
chitettura PDPll [Dig78L schematizzata in Figura, 11.2, organizzava il sistema come
un insieme di moduli, tutti quanti collegati a un coroune bus) chiamato UNIBUS.
11.1 Un po' di storia
Uno dei campi in cui di piu si efatta sentire l'influenza dell1evoluzione della tecDologia
elettronica equello dei bus di sistema. Negli anni settanta
1
escludendo mainframe
..,: e supercalcolatori, Ie macchine venivano costruite attorno a un bus, che risultava
coslla struttura fondamentale di collegamento tra Ie parti componenti il calcolatore.
All'epoca il grade di integrazione era molto lantana dalPattuale, e era pratica comune
scomporre un sistema in moduli: un modulo (una piastra) contenente la CPU, alcuni
moduli di memoria e svariate piastre per Ie interfacce di ingresso/uscita. Dalla meta
anni novanta i bus di sistema sono praticamente scomparsi dalle rnacchine medio-
. piccole, in quanto eormai possibile alloggiare tutti i componenti sulla piastra madre.
Con l'introduzione di piiI livelli di bus, ecambiata 1'organizzazione dei calcolatori. A
1ivello pili alto - quello della massima ve10cita - si trova il bus che coUega 1a CPU
can 1a memQria; a HveUo il bus suI quale si affacciano i periferici veloci;
a Hveno piiI basso queUo che collega i periferici piiI leoti. n- classico bus PC eormai
relegato a questa ruola. I produttori di microprocessod forniscona gil integrati di
supporto (il cosiddetto chipset) che consentouo l'integrazione delle parti e fanno da
ponte tra i differenti bus. Di questi aspetti si parla al termine del capitola.
Questo capitolo, si apre con una breve introduzione di carattere storico. Alcuni
degli standard descritti sono ormai in disuso, sopraffatti da! dei PC. Si ritiene
comunque utile descrivere Ie caratteristiche d.i alcuni di questi perche essi sana ancora
impiegati nelle applicazioni di carattere industriale, dove la costruzione a moduli resta
sempre apprezzata per 1a sua robustezza e per 1a sua flessibilita.
,
..
,
I

j
I
\
\
\
I
I
I
l

I'

:'
- ':. ("'"
.. ,:... '.
\

11

-:': ..'
'.

...... "

,

BUS di sistema I
I
-;j.;'-j"

In Figura 11.1 viene mostrata I'architettura prevalente fino agli anni sessanta in rife-
rimento a un minicalcolatore [Hew73] e a un mainframe [IBM74],
La pratica realizzativa corrispondente alia schema d.i Figura1!.l venne inter-
retta dalla Digital 'Equipment Corporation (DEC) agli inizi degli anni settanta, con
l'introduzione della famiglia PDPl1, progettata secondo una filosofia innovativa. 1'ar-
chitettura PDPll [Dig78L schematizzata in Figura, 11.2, organizzava il sistema come
un insieme di moduli, tutti quanti collegati a un coroune bus) chiamato UNIBUS.
11.1 Un po' di storia
Uno dei campi in cui di piu si efatta sentire l'influenza dell1evoluzione della tecDologia
elettronica equello dei bus di sistema. Negli anni settanta
1
escludendo mainframe
..,: e supercalcolatori, Ie macchine venivano costruite attorno a un bus, che risultava
coslla struttura fondamentale di collegamento tra Ie parti componenti il calcolatore.
All'epoca il grade di integrazione era molto lantana dalPattuale, e era pratica comune
scomporre un sistema in moduli: un modulo (una piastra) contenente la CPU, alcuni
moduli di memoria e svariate piastre per Ie interfacce di ingresso/uscita. Dalla meta
anni novanta i bus di sistema sono praticamente scomparsi dalle rnacchine medio-
. piccole, in quanto eormai possibile alloggiare tutti i componenti sulla piastra madre.
Con l'introduzione di piiI livelli di bus, ecambiata 1'organizzazione dei calcolatori. A
1ivello pili alto - quello della massima ve10cita - si trova il bus che coUega 1a CPU
can 1a memQria; a HveUo il bus suI quale si affacciano i periferici veloci;
a Hveno piiI basso queUo che collega i periferici piiI leoti. n- classico bus PC eormai
relegato a questa ruola. I produttori di microprocessod forniscona gil integrati di
supporto (il cosiddetto chipset) che consentouo l'integrazione delle parti e fanno da
ponte tra i differenti bus. Di questi aspetti si parla al termine del capitola.
Questo capitolo, si apre con una breve introduzione di carattere storico. Alcuni
degli standard descritti sono ormai in disuso, sopraffatti da! dei PC. Si ritiene
comunque utile descrivere Ie caratteristiche d.i alcuni di questi perche essi sana ancora
impiegati nelle applicazioni di carattere industriale, dove la costruzione a moduli resta
sempre apprezzata per 1a sua robustezza e per 1a sua flessibilita.
,
..
,
I

j
I
\
\
\
I
I
I
l

I'

:'
- ':. ("'"
.. ,:... '.
\

11

-:': ..'
'.

...... "

,

BUS di sistema I
I
-;j.;'-j"

Figura 11.1 Schema architetturale tipico degli anni '60. Oi norma i canali ell I/O consen-
tivano solo npassaggio di dati da periferiche a CPU e viceversa. I canali di comunica.zione
diretta. tra memoria e I/O si trovavano solo nei mainframe; au questa categor'ia di mac-
chine erano presenti i. cosiddetti controllori di canale, ovvero dei processori ell I/O respon-
sabili dell'esecuzione dei progrommi di canale: per il trasferimento dei dati tra memoria e
periferiche.
lSi tenga. conto che a.i primi anni '70 su dl una piastra di dimensioni dell'ordine delle piastre
PDP-ll (circa 1000 em
2
) non potevano stare pill di 8-16Kbyte
2Con l'avanzare della tecnologia. integrata. diverine possibile sistemare Ia. maggior pa.rte di una
CPU PDJ;lll in pochi integrati, facendo apparire enonne la piastra UNIBUS rispetto ai componenti
da a.lloggiare. Venne sviluppata una versione aggiornata, pill compatta, della CPU e venne definito it
Q-Bus, conosciuto anche come LSI-ll bus; esse usava indirizzi e dati condivisi multiplati, riducendo
it numero di linee ricbieste e Ie dimensioni delle schede (Dig76].
Come si vede in Figura11.2, il bus e una sorta di "autostrada" che collega i
vari moduli. In tale configurazione la memorial e la logica di cantrallo risiedono su
schede separate, e tale schema pennette 1a massima espansione e configurabilitA. della
macchina. Fisicamente il sistema eun contenitore in cui si inseriscona Ie varie schede;
callegandole a un backplane (piano di appoggio 0 fonda di cestello) tramite connettori
,
mentre il fonda di cestello porta Ie linee che collegano i connettori, montati in modo
da costituire il bus vero e proprio. .
Uarcbitettura centrata" sul bus rencle immediatamente disponibili i trasferimenti
DMA (Direct Memory Access) tra i dispositivi ne! bus. Fino a quel momento il DMA
era disponibile solo su grandi sistemi (i minicalcolatori come 10 HP2100 10 adottavano
opzionalmente). Nell'UNIBUS la stessa memoria era un modulo posta suI bus, col
risultato che tutti i moduli potevano comunicare con 130 memoria
2
.
La schema architetturale del PDP-II divenne"in breve tempo il madelia a cui si
ispirarono tutti i costruttori di sistemi di piccole 'e medie dimensioni. Peraltro, un"
contributo alla sua affermazione fu la comparsa (1973) della logica con uscita a tre
statio Questa permetteva di semplificare ulteriormente la struttura a bus, evitando di
dover lisare porte con uscite a collettore aperto, come erano stati costretti a fare in
origine i progettisti del PDP-H.
Se si escludono i mainframe, a fine anni '70, praticamente tutti i calcolatori
vengono costruiti a partire da un backplane. In ambito industriale primeggiano i bus
)-
] -

1
I -

\ -
-
I.
,
-
)-
>.
j -
-
).
-
1-
-
J -
1
)
I
1.
-
""""'"
""""",,"moo
toIOOlAO 0l1olEl.l()4U"
""""'"""""'"
..... _a=<
POP-l1
'O'H,m",
BACKPLANE
UNIBUS
<
'>

1oI00UL0 ItffERP",CCLA
""""""'"

IoIOOUJ IHTERFACCIA
IilOO' UlIHTEIIfAOClA
(CONSOlf l
DISCtIl MAGNeTICI
-
ALT'" VEl.C)CfT...
cotlVEATlTOl'lE AIll
CONV'liA1'1'Tt'I'\ Of'"
INl!:AFACCIA PN\.t.U1A
INTAfACClo\ SV\IAl.f
OM'"
""''''''''
BUs di sistema 449
Muitibus I (nel 1985 deteneva il 50% dei mercato USA) [Int84j, 10 STD e il VME.
Nel mondo dei calcolatori di impiego generale, oltre all'UNIBU8 e ai suoi derivati, e
molto diffuso il bus S100, introdotto nel 1974 con I'ALTAIR, un piccolo elaboratore
can CPU a 8 bit, da!. costa contenuto e destinato a ess!'!re i1 capostipite di un nuovo tipo
di calcolatore a uso individuale. Ovviamente, il bus 8100 era a 8 bit, rna presentava
caratteristiche mutuate dai computer industriali, come l'arbitraggio. Alcuni dei bus
menzionati e altri rammentati pill avanti sono diventati standard della IEEE.
Nel1981 viene introdotto i1 PC ffiM. Con esso lao 50cietA.lead.er entra nel mercato
dei Personal Computer, segnando una svolta decisiva per il futuro dell'informatica e
stabilendo queUo che sarebbe diventato 10 standard nel canipo del cal colo personale.
n PC si basava su di una scheda madre contenente CPU e memoria, sulla quale era
. previsto un bus (PC bus) cbe portava i connettori per Ie scbede eli espansione e di
interfaccia verso Ie periferiche} secondo 10 schema di Figura 11.3. Cia permetteva,
grazie all'aumentato Uvello di integrazione dell'elettronica, di cont"enere Ie dimensioni
e i costi. Nell'ottica della semplificazione e del contenimento dei costi, il bus presentava
funzionalita. ridotte rispetto a bus gia affermati suI mercato. In uD: certo sensa, con i
PC, si assiste a un recupero del concetto di calcolatore degU anni '60, in cui i1 bus era
visto come un canale di I/O} can in piiI"la possibilita di collegare moduli di memoria
sul bus.
Essendo il PC divenuto 10 standard "de facto" nel suo segmento di mercato,
una larghissima fetta di produttori, attratti da! potenziale commerciaJ.e, si a.dattata
al bus PC, rendendo disponibile una imrnensa varleta di schOOe, soprattutto per la
sua evoluzione a 16 bit, it bus del PC/ AT, che comunque restava compatibile coon la
versione a 8. n suo enorme successo ha portato alia denorninazione !SA (Industry
MAINFRAME
(IBM 370)
MEMORIA
CPU

canale
I/O bus

m9
I 110 va
MINI
(HP2100)
MEMORIA
CPU
I/O bus
modulo

vo vo
448 Capitolo 11
I
I
I
I
I
I
Figura 11.1 Schema architetturale tipico degli anni '60. Oi norma i canali ell I/O consen-
tivano solo npassaggio di dati da periferiche a CPU e viceversa. I canali di comunica.zione
diretta. tra memoria e I/O si trovavano solo nei mainframe; au questa categor'ia di mac-
chine erano presenti i. cosiddetti controllori di canale, ovvero dei processori ell I/O respon-
sabili dell'esecuzione dei progrommi di canale: per il trasferimento dei dati tra memoria e
periferiche.
lSi tenga. conto che a.i primi anni '70 su dl una piastra di dimensioni dell'ordine delle piastre
PDP-ll (circa 1000 em
2
) non potevano stare pill di 8-16Kbyte
2Con l'avanzare della tecnologia. integrata. diverine possibile sistemare Ia. maggior pa.rte di una
CPU PDJ;lll in pochi integrati, facendo apparire enonne la piastra UNIBUS rispetto ai componenti
da a.lloggiare. Venne sviluppata una versione aggiornata, pill compatta, della CPU e venne definito it
Q-Bus, conosciuto anche come LSI-ll bus; esse usava indirizzi e dati condivisi multiplati, riducendo
it numero di linee ricbieste e Ie dimensioni delle schede (Dig76].
Come si vede in Figura11.2, il bus e una sorta di "autostrada" che collega i
vari moduli. In tale configurazione la memorial e la logica di cantrallo risiedono su
schede separate, e tale schema pennette 1a massima espansione e configurabilitA. della
macchina. Fisicamente il sistema eun contenitore in cui si inseriscona Ie varie schede;
callegandole a un backplane (piano di appoggio 0 fonda di cestello) tramite connettori
,
mentre il fonda di cestello porta Ie linee che collegano i connettori, montati in modo
da costituire il bus vero e proprio. .
Uarcbitettura centrata" sul bus rencle immediatamente disponibili i trasferimenti
DMA (Direct Memory Access) tra i dispositivi ne! bus. Fino a quel momento il DMA
era disponibile solo su grandi sistemi (i minicalcolatori come 10 HP2100 10 adottavano
opzionalmente). Nell'UNIBUS la stessa memoria era un modulo posta suI bus, col
risultato che tutti i moduli potevano comunicare con 130 memoria
2
.
La schema architetturale del PDP-II divenne"in breve tempo il madelia a cui si
ispirarono tutti i costruttori di sistemi di piccole 'e medie dimensioni. Peraltro, un"
contributo alla sua affermazione fu la comparsa (1973) della logica con uscita a tre
statio Questa permetteva di semplificare ulteriormente la struttura a bus, evitando di
dover lisare porte con uscite a collettore aperto, come erano stati costretti a fare in
origine i progettisti del PDP-H.
Se si escludono i mainframe, a fine anni '70, praticamente tutti i calcolatori
vengono costruiti a partire da un backplane. In ambito industriale primeggiano i bus
)-
] -

1
I -

\ -
-
I.
,
-
)-
>.
j -
-
).
-
1-
-
J -
1
)
I
1.
-
""""'"
""""",,"moo
toIOOlAO 0l1olEl.l()4U"
""""'"""""'"
..... _a=<
POP-l1
'O'H,m",
BACKPLANE
UNIBUS
<
'>

1oI00UL0 ItffERP",CCLA
""""""'"

IoIOOUJ IHTERFACCIA
IilOO' UlIHTEIIfAOClA
(CONSOlf l
DISCtIl MAGNeTICI
-
ALT'" VEl.C)CfT...
cotlVEATlTOl'lE AIll
CONV'liA1'1'Tt'I'\ Of'"
INl!:AFACCIA PN\.t.U1A
INTAfACClo\ SV\IAl.f
OM'"
""''''''''
BUs di sistema 449
Muitibus I (nel 1985 deteneva il 50% dei mercato USA) [Int84j, 10 STD e il VME.
Nel mondo dei calcolatori di impiego generale, oltre all'UNIBU8 e ai suoi derivati, e
molto diffuso il bus S100, introdotto nel 1974 con I'ALTAIR, un piccolo elaboratore
can CPU a 8 bit, da!. costa contenuto e destinato a ess!'!re i1 capostipite di un nuovo tipo
di calcolatore a uso individuale. Ovviamente, il bus 8100 era a 8 bit, rna presentava
caratteristiche mutuate dai computer industriali, come l'arbitraggio. Alcuni dei bus
menzionati e altri rammentati pill avanti sono diventati standard della IEEE.
Nel1981 viene introdotto i1 PC ffiM. Con esso lao 50cietA.lead.er entra nel mercato
dei Personal Computer, segnando una svolta decisiva per il futuro dell'informatica e
stabilendo queUo che sarebbe diventato 10 standard nel canipo del cal colo personale.
n PC si basava su di una scheda madre contenente CPU e memoria, sulla quale era
. previsto un bus (PC bus) cbe portava i connettori per Ie scbede eli espansione e di
interfaccia verso Ie periferiche} secondo 10 schema di Figura 11.3. Cia permetteva,
grazie all'aumentato Uvello di integrazione dell'elettronica, di cont"enere Ie dimensioni
e i costi. Nell'ottica della semplificazione e del contenimento dei costi, il bus presentava
funzionalita. ridotte rispetto a bus gia affermati suI mercato. In uD: certo sensa, con i
PC, si assiste a un recupero del concetto di calcolatore degU anni '60, in cui i1 bus era
visto come un canale di I/O} can in piiI"la possibilita di collegare moduli di memoria
sul bus.
Essendo il PC divenuto 10 standard "de facto" nel suo segmento di mercato,
una larghissima fetta di produttori, attratti da! potenziale commerciaJ.e, si a.dattata
al bus PC, rendendo disponibile una imrnensa varleta di schOOe, soprattutto per la
sua evoluzione a 16 bit, it bus del PC/ AT, che comunque restava compatibile coon la
versione a 8. n suo enorme successo ha portato alia denorninazione !SA (Industry
MAINFRAME
(IBM 370)
MEMORIA
CPU

canale
I/O bus

m9
I 110 va
MINI
(HP2100)
MEMORIA
CPU
I/O bus
modulo

vo vo
448 Capitolo 11
I
I
I
I
I
I
451
,
,

--,

--
--
-.J. I'I'IJ. e.:t"OO)
Bus eli sistema.
,

-""', ... _..
MMU.FPVo_1
SBus
MBus
,
--
--
,
,

-_.
,--
........ FI'U. <O<fWI
,
,

"'_.5_
_.

...-J. rPU. ad\oo)


4n bus SCSI (Small Computer System Inter/ace) e un tipico bus di espaosione, cbe viene spesso
pon.ato all'esterno'attraverso un cavo piatto. Per questa viene utilizzato da molti costruttori per
aggiungere periferici senza doverli alloggiare nella scatola principale. Di esse si parla 301 ParagJ:afo
11.6. Successivamente anche la Sun e passata a. impiegare una singola piastra, con due ,bus distinti
sulla stessa scheda. madre, come in Figural1.5. Correntemente anche la Sun ha adottato il bus
standard PCI (vedi piu avanti) per)3o gestione dei periferici.
6Inizialmente, il bus locale cbe ba dominato nel mondo dei calcolatori personali e stato il VL-bus
proposto dal cODsorzio VESA. Esse aveva come punta di rona l'economicita., per contro era.
concepito i soli processori Intel.
93 90
PCISA
MultlDus II
VME
PC bus
5cheda madre
80
Fulur,Du$
CPU
MEMORIA
.
PC bus
,
memoria 110
8100
Multibua I
bus per PC
73
u,....
bus illduslriaJJ
Capitolo 11
3 A livello di mabine da tavolojufficio
l
it bus ISA epraticamente I'unico sopravvissuto tra j bus
di sistema introdotti negJi anni ottaDta. Ha cambiato il suo ruolo: da centro del sistema ediventato
il bus di livello piu baaso, sui cui 8OnO collegati i perife.rid piu lenti.
fl" , ,
th'
'<''- .
.

:Ill5i,f.,'-::{,' .
"!ii'= ' "
',,'-:':.':
" '.,..,,".
i
'I'" .
, . -1:,-',"
I
, ',::0"';';
j!':\ .
e impiegavano come CPU il Motorola ?8000. Successivamente, la Sun ha iJ
..bus VME. Con Pintroduzione della sene SPARe, il VME venne inizialmente nservato
'ai soli server (Ie di alta)l. mentre Ie, erano su
. singo1a scheda, con posslbihta eli espandersl solo tranute il bus SCSI
4
. Successlvamente
/ 1a Sun abbandono anche il bus VME a favore dei bus proprietari in Figura
.. ,I" '115
,,' ,.,_.. ,'.'
-;j'f:lI'" .
.
,(i!'.:} .-:;',.
"

II "'.
. 1,'" "
'''Y.:.i :;OJ'-,. '
'
,,\;'Hr,: .
"
!
J
- .'
" '>C. ";,,, '
,
,
...,.
." ..
, ''''',. ,11"".".
;. ":\<:",,.",
" r"'''''':;,':;,i
.....;p.", .
;'f'.!.-:'.,
!lJl\j
""" '
.1&"
" : ... ,".

.gJ,.",.... ,,' ,.
",.
-I'll
" ,
""", '"
;V; ",-
"W "/;:' .


.,:",
,: :F.igura 11.5 Arch.itettura dei 'sistemi Sun 4. MBllS eUll b.llS.locale ad alta tra
':' memon.a.e lDvece eWI. bus eli la conneSSlOne
eli schede di espanslOne. Le verSIODl correnti delle macchlne Sun lIDplegano 11 bus PCI.
..
.. .."'.. '.
I .
Gia. a fine anni ottanta it bus !SA estate considerate insufficiente rispetto aUa
capacita di trasferimento raggiunta claIle CPU. Si e assistito a una lunga battaglia

' (
:r,;;$'{:": : commerciale per imporre un nuovo standard. L'IBM proponeva MCA Microchan-
0 pili brevemente Microcha.nnel), m:ntre un di
t'iK,!.:'"haappogglato I'EISA (Extended [SA), un bus con il vantaggIo della compatlbilita
.. c:on .1'ISA. Nessun? del due ha. 3ovuto un commerclale paragonabile a quell?
dell'ISA, che contmua a essere presente In ogm PC, anche perehe, nel frattempo, 11
bus ISA. veniva..cleclassato. a ruolo con l'introduzione dei bus locali
5
.
'-Ba
l
' L'evoluzlOne del bus del PC elllustrata III FIgura 11.6.
11.4 Evoluzione dei bus di sistema nell'arco di un a partire dai primi _,.'.i;n' Nel introdotto it PCI c.0m?'Uter Interconnect), un bus
a.n..m settanta. . ' .f...: .con medlo-alte che consente una. effettlva dal processore.
PCI 81 e nvelato un grande SllCCesSO. Pratlcamente Vleneormat adottilto da tuttI.
. " . Non solo nel campo dei PC, rna anche in fasee di prodotti pili elevate, Con Pavvento
. al mercato del. Personal a partlre dagli ?ttanta .."del PCI e con 130 produzi,one di integrati.per 130 sua gestione
,
l'evoluzione ha raggiunto
SI. e delle coslddette. per un pm nst,retto un punta di stabilita.. E interessante notare che estato formato un consorzio che
di che nchiedevano (esemplo CAD 0 CAE). In ' . .
11.4 Vlene mostrata l'evoluzlOne fino alla pnma meta anm novanta. Nelle workstations
possono trovare sia bus di .tipo industriale che tipo PC. In tal senso, e
osser-va:e come .SI evolute Ie stazlOlll pro.dotte dal Sun
Microsystem, Le prune staxiow Sun erano basate su Mult.bus I (agli lWZl degli '80)
\ I lil;>'
. "",,1,,-.,
,'.' 11':L
"'.il'
.., ... ;p;;nci:"" ,
. ; .t,it,'" '
".. "j!!"l-'
.... ,">;;,
, l\';!" \oi.'.'.
, '..AA......
'':I'''' ,
_.'

.
,
",."
Figura 11.3 Schema architetturale dei personal computer degli anni '80.
450
\
\
(
\
I
\ )
:I
, \
\ \
I
I
, \

1\
I
,I
451
,
,

--,

--
--
-.J. I'I'IJ. e.:t"OO)
Bus eli sistema.
,

-""', ... _..
MMU.FPVo_1
SBus
MBus
,
--
--
,
,

-_.
,--
........ FI'U. <O<fWI
,
,

"'_.5_
_.

...-J. rPU. ad\oo)


4n bus SCSI (Small Computer System Inter/ace) e un tipico bus di espaosione, cbe viene spesso
pon.ato all'esterno'attraverso un cavo piatto. Per questa viene utilizzato da molti costruttori per
aggiungere periferici senza doverli alloggiare nella scatola principale. Di esse si parla 301 ParagJ:afo
11.6. Successivamente anche la Sun e passata a. impiegare una singola piastra, con due ,bus distinti
sulla stessa scheda. madre, come in Figural1.5. Correntemente anche la Sun ha adottato il bus
standard PCI (vedi piu avanti) per)3o gestione dei periferici.
6Inizialmente, il bus locale cbe ba dominato nel mondo dei calcolatori personali e stato il VL-bus
proposto dal cODsorzio VESA. Esse aveva come punta di rona l'economicita., per contro era.
concepito i soli processori Intel.
93 90
PCISA
MultlDus II
VME
PC bus
5cheda madre
80
Fulur,Du$
CPU
MEMORIA
.
PC bus
,
memoria 110
8100
Multibua I
bus per PC
73
u,....
bus illduslriaJJ
Capitolo 11
3 A livello di mabine da tavolojufficio
l
it bus ISA epraticamente I'unico sopravvissuto tra j bus
di sistema introdotti negJi anni ottaDta. Ha cambiato il suo ruolo: da centro del sistema ediventato
il bus di livello piu baaso, sui cui 8OnO collegati i perife.rid piu lenti.
fl" , ,
th'
'<''- .
.

:Ill5i,f.,'-::{,' .
"!ii'= ' "
',,'-:':.':
" '.,..,,".
i
'I'" .
, . -1:,-',"
I
, ',::0"';';
j!':\ .
e impiegavano come CPU il Motorola ?8000. Successivamente, la Sun ha iJ
..bus VME. Con Pintroduzione della sene SPARe, il VME venne inizialmente nservato
'ai soli server (Ie di alta)l. mentre Ie, erano su
. singo1a scheda, con posslbihta eli espandersl solo tranute il bus SCSI
4
. Successlvamente
/ 1a Sun abbandono anche il bus VME a favore dei bus proprietari in Figura
.. ,I" '115
,,' ,.,_.. ,'.'
-;j'f:lI'" .
.
,(i!'.:} .-:;',.
"

II "'.
. 1,'" "
'''Y.:.i :;OJ'-,. '
'
,,\;'Hr,: .
"
!
J
- .'
" '>C. ";,,, '
,
,
...,.
." ..
, ''''',. ,11"".".
;. ":\<:",,.",
" r"'''''':;,':;,i
.....;p.", .
;'f'.!.-:'.,
!lJl\j
""" '
.1&"
" : ... ,".

.gJ,.",.... ,,' ,.
",.
-I'll
" ,
""", '"
;V; ",-
"W "/;:' .


.,:",
,: :F.igura 11.5 Arch.itettura dei 'sistemi Sun 4. MBllS eUll b.llS.locale ad alta tra
':' memon.a.e lDvece eWI. bus eli la conneSSlOne
eli schede di espanslOne. Le verSIODl correnti delle macchlne Sun lIDplegano 11 bus PCI.
..
.. .."'.. '.
I .
Gia. a fine anni ottanta it bus !SA estate considerate insufficiente rispetto aUa
capacita di trasferimento raggiunta claIle CPU. Si e assistito a una lunga battaglia

' (
:r,;;$'{:": : commerciale per imporre un nuovo standard. L'IBM proponeva MCA Microchan-
0 pili brevemente Microcha.nnel), m:ntre un di
t'iK,!.:'"haappogglato I'EISA (Extended [SA), un bus con il vantaggIo della compatlbilita
.. c:on .1'ISA. Nessun? del due ha. 3ovuto un commerclale paragonabile a quell?
dell'ISA, che contmua a essere presente In ogm PC, anche perehe, nel frattempo, 11
bus ISA. veniva..cleclassato. a ruolo con l'introduzione dei bus locali
5
.
'-Ba
l
' L'evoluzlOne del bus del PC elllustrata III FIgura 11.6.
11.4 Evoluzione dei bus di sistema nell'arco di un a partire dai primi _,.'.i;n' Nel introdotto it PCI c.0m?'Uter Interconnect), un bus
a.n..m settanta. . ' .f...: .con medlo-alte che consente una. effettlva dal processore.
PCI 81 e nvelato un grande SllCCesSO. Pratlcamente Vleneormat adottilto da tuttI.
. " . Non solo nel campo dei PC, rna anche in fasee di prodotti pili elevate, Con Pavvento
. al mercato del. Personal a partlre dagli ?ttanta .."del PCI e con 130 produzi,one di integrati.per 130 sua gestione
,
l'evoluzione ha raggiunto
SI. e delle coslddette. per un pm nst,retto un punta di stabilita.. E interessante notare che estato formato un consorzio che
di che nchiedevano (esemplo CAD 0 CAE). In ' . .
11.4 Vlene mostrata l'evoluzlOne fino alla pnma meta anm novanta. Nelle workstations
possono trovare sia bus di .tipo industriale che tipo PC. In tal senso, e
osser-va:e come .SI evolute Ie stazlOlll pro.dotte dal Sun
Microsystem, Le prune staxiow Sun erano basate su Mult.bus I (agli lWZl degli '80)
\ I lil;>'
. "",,1,,-.,
,'.' 11':L
"'.il'
.., ... ;p;;nci:"" ,
. ; .t,it,'" '
".. "j!!"l-'
.... ,">;;,
, l\';!" \oi.'.'.
, '..AA......
'':I'''' ,
_.'

.
,
",."
Figura 11.3 Schema architetturale dei personal computer degli anni '80.
450
\
\
(
\
I
\ )
:I
, \
\ \
I
I
, \

1\
I
,I

-
J-
I
J -
-
-
-
l-
\
I
j -(
\
)-
]-
1
1 .
J .
!.
)
115
connettore delle schede Eurocard sono stabilite dalle severe norme
I 334 I
. contenitore

.J
" 1
1 1 1
1 1 1
1 1 1
1 1 1
I scheda PC IBM 1 I
1 1 1
1 1 1
1 1 1
1 1 1
r.lrctlrt: JI
L - - - - - -
Esempio di scheda con connettore a inserzione diretta: la scheda del PC.
6Le caratteristiche del
germaniche DIN 41612.
Caratteristiche elettriche Rientrano nelle specifiche elettriche Ie relazioni tra
stati logici ed elettrici. (logica positiva 0 logica negativa), come pure i tempi di sali-
tajdiscesa dei segnali, i ritardi eli propagazione ecc. Le relative problematiche sono
state trattate in altra parte di questa libro.
In questa serle conviene solo ricordare che, per Ie linee di bus, 10 standard consiste
nell'usare logica con uscita a tre statio Per quanto invece si riferisce aile tecnologie, il
loro esame porterebbe a una discussione che esula dagli scopi di questa teste, anche
perche negli anni recenti sono state sviluppate specifiche tecnologie per nei
bus. Queste tecnologie, che hanna fatto della logica TTL un ricordo del pMsato,
..
15( BIT
quanto
"" ""
POl
""
1"",",,1
EISM'CI
MCM'CI
""
ISANLS
MCA./VLB
EISANLB
'990
""
EISA
'96'
""
MCA
,,,.
HARDWARE NON COMPATIBILE
""
1985
"..
Xl AT(ISA}
""
Capitolo 11
PC
""
"f':
..
1;-"'. '

,oJ" ,
, Bus di sistema 453
' __--------------------------'--------- , <i" ," ..

if' .'
(, ,'::I'-/<,.
\,;:: ... ',,'.
di connettori a indiretta sono quelli delle schede VME (Mot851 e Multibus
0"1";.. [I 831
,;,,'.-n nt .
...t:": ""
1lt'.1,t\, " .
,.

,.
, .
_,:.-"00,
. ,,.,
""".;1. '!\I\Fl.r,.'.

" ''''I' . , .
,. '
.' ,:.," ," ."".
.... ... ;;.,.
:;;".,I"?" ,
I,""" " 'b,." ,,'
.... ..' ,")-.,
_, ,. I!.',""" -'.
:'.:":'1",. ! _jl,., i' .. " "
.'.
", '
;0; ""'':;'"1--'''''
:i'J:
'" l .'.
:il!.!!l!li. 'J..
-.. ,J"iW.'i.; . ,{j!',l';':;:'
l
.:'.
";ir . " "O::,\l!,: .
..
1" ., ..... ,,,N

_. '"A
Figura 11.1
HARDWARE COMPATl81LE '. '
1.1.6 del bus PC dei bus locali nel tempo" La ':.. . '. '.
vuole wdlcare che II bus locale PCl Vlene abbmato a qualunque altro tlPO dl bus dl SIstema. . " La dimensione deUa scheda ePaltro rilevantej di norma .essa
. . rispecchia la tecn?logia in uso all'epoca ?ell'mtrorluzlOne del bus. Per esemplO Ie
schede per Multibus I [Int77] sono grandl 305x 170 mm, m:ntre Ie Compqct
:;;t
iOO
" !I;,t;t:.>': PCI sono grandi 160x n:m 3U E.ur?:M.d, La FIgura 11.8
rnette in confronto Ie dimenslOlli di cmque tra 1 pm d.iffusl format!.
,'.y... , ..-. .' 6
I sistemi industriali fanno riferimento sIstema Eurocard. In questo slStema
q'+E il formato della scheda base detto 3D epan a 160 x 100. per un solo connettor:,
.. .. __ 1 rna possono arrivare fino a 500x400 mm nella configurazlone a quattro connetton.
Definire uno standard significa fomire specifiche precise, atte a fissare completamente I connettori sono del tipo a inserzione indiretta. n VME come standard prevede
Ie caratteristiche meccaniche, elettrichee logico/funzionali del bus [CKN92L [D,;x86j. il formato 6U (160x233 mm, doppio Eurocard), can due connettori indiretti a 96
Le carattenstlche loglCo/funzlOnahsono, oVVlamente,quelle dl maggIor mter- piedini (3 file dl 32), rna sana anche dispomblli schede ill formato 3U. 10 standard
esse di questa libra e a esse e sostanzlalmente dedlcato II presente cap,tola. Le Compact pC! [PCI] pub essere ill formato 3U (un connettore) a 6U (due connetton).
caratteristiche meccaniche ed elettriche rapidamente trattate qui di seguitq. '. nconnettore quie a 220 piedini (5 file di 47, can alcune posiziom perse per Vla della
M:.1!f!t chlave di msenmento)
iii: ,;,
meccaniche meccanica le -, ',_
aderentl a un certo standard. Sono rilevantl il tlpo dl connettore usato e Ie dunenslOlll
delle schede. ."::'/f.}j "
.Per quanto si riferisce al tipo di connettore, a parte il numero di piedini, pa-
rametro legato alle caratteristiche logicojfunzionali, l'aspetto .pili importante edato
dalla' modalita. di inserzione: diretta 0 indiretta. n connettore a inserzione diretta
economico, rna ofIre sicuri. e stabili di quello a inserzione
mdiretta. Inoltre, quest'ultlmo confer:sce magglor alIa scheda. Ii\},:
La natura del connettore ha relatlvamente poca lmpoItanza quando 11 calcolatore .. il:f'1',.
viene usato in arnbiente amichevole come in un ufficio, rna diventa determinante
quando il catcolatore viene impiegato in ambiente ostile, come in fabbrica, in presenza
di polvere, fume ecc. Per questo motivo, i calcolatori costruiti per l'impiego industriale ..,..:'
prevedono quasi sempre connettori a inserzione indiretta. Un esempio di a i
inserzione diretta equeUo delle schede per PC IBM illustrato in Figura 11.7. Esempi
. : _
11.2 La standardizzazione
promuove una versione industriale del bus PCI, appositamente studiata,
caratteristiche meccaniche ed elettriche, per gli ambienti industriali.
452

-
J-
I
J -
-
-
-
l-
\
I
j -(
\
)-
]-
1
1 .
J .
!.
)
115
connettore delle schede Eurocard sono stabilite dalle severe norme
I 334 I
. contenitore

.J
" 1
1 1 1
1 1 1
1 1 1
1 1 1
I scheda PC IBM 1 I
1 1 1
1 1 1
1 1 1
1 1 1
r.lrctlrt: JI
L - - - - - -
Esempio di scheda con connettore a inserzione diretta: la scheda del PC.
6Le caratteristiche del
germaniche DIN 41612.
Caratteristiche elettriche Rientrano nelle specifiche elettriche Ie relazioni tra
stati logici ed elettrici. (logica positiva 0 logica negativa), come pure i tempi di sali-
tajdiscesa dei segnali, i ritardi eli propagazione ecc. Le relative problematiche sono
state trattate in altra parte di questa libro.
In questa serle conviene solo ricordare che, per Ie linee di bus, 10 standard consiste
nell'usare logica con uscita a tre statio Per quanto invece si riferisce aile tecnologie, il
loro esame porterebbe a una discussione che esula dagli scopi di questa teste, anche
perche negli anni recenti sono state sviluppate specifiche tecnologie per nei
bus. Queste tecnologie, che hanna fatto della logica TTL un ricordo del pMsato,
..
15( BIT
quanto
"" ""
POl
""
1"",",,1
EISM'CI
MCM'CI
""
ISANLS
MCA./VLB
EISANLB
'990
""
EISA
'96'
""
MCA
,,,.
HARDWARE NON COMPATIBILE
""
1985
"..
Xl AT(ISA}
""
Capitolo 11
PC
""
"f':
..
1;-"'. '

,oJ" ,
, Bus di sistema 453
' __--------------------------'--------- , <i" ," ..

if' .'
(, ,'::I'-/<,.
\,;:: ... ',,'.
di connettori a indiretta sono quelli delle schede VME (Mot851 e Multibus
0"1";.. [I 831
,;,,'.-n nt .
...t:": ""
1lt'.1,t\, " .
,.

,.
, .
_,:.-"00,
. ,,.,
""".;1. '!\I\Fl.r,.'.

" ''''I' . , .
,. '
.' ,:.," ," ."".
.... ... ;;.,.
:;;".,I"?" ,
I
,""" "
'b,." ,,'
.... ..' ,")-.,
_, ,. I!.',""" -'.
:'.:":'1",. ! _jl,., i' .. " "
.'.
", '
;0; ""'':;'"1--'''''
:i'J:
'" l .'.
:il!.!!l!li. 'J..
-.. ,J"iW.'i.; . ,{j!',l';':;:'
l
.:'.
";ir . " "O::,\l!,: .
..
1" ., ..... ,,,N

_. '"A
Figura 11.1
HARDWARE COMPATl81LE '. '
1.1.6 del bus PC dei bus locali nel tempo" La ':.. . '. '.
vuole wdlcare che II bus locale PCl Vlene abbmato a qualunque altro tlPO dl bus dl SIstema. . " La dimensione deUa scheda ePaltro rilevantej di norma .essa
. . rispecchia la tecn?logia in uso all'epoca ?ell'mtrorluzlOne del bus. Per esemplO Ie
schede per Multibus I [Int77] sono grandl 305x 170 mm, m:ntre Ie Compqct
:;;t
iOO
" !I;,t;t:.>': PCI sono grandi 160x n:m 3U E.ur?:M.d, La FIgura 11.8
rnette in confronto Ie dimenslOlli di cmque tra 1 pm d.iffusl format!.
,'.y... , ..-. .' 6
I sistemi industriali fanno riferimento sIstema Eurocard. In questo slStema
q'+E il formato della scheda base detto 3D epan a 160 x 100. per un solo connettor:,
.. .. __ 1 rna possono arrivare fino a 500x400 mm nella configurazlone a quattro connetton.
Definire uno standard significa fomire specifiche precise, atte a fissare completamente I connettori sono del tipo a inserzione indiretta. n VME come standard prevede
Ie caratteristiche meccaniche, elettrichee logico/funzionali del bus [CKN92L [D,;x86j. il formato 6U (160x233 mm, doppio Eurocard), can due connettori indiretti a 96
Le carattenstlche loglCo/funzlOnahsono, oVVlamente,quelle dl maggIor mter- piedini (3 file dl 32), rna sana anche dispomblli schede ill formato 3U. 10 standard
esse di questa libra e a esse e sostanzlalmente dedlcato II presente cap,tola. Le Compact pC! [PCI] pub essere ill formato 3U (un connettore) a 6U (due connetton).
caratteristiche meccaniche ed elettriche rapidamente trattate qui di seguitq. '. nconnettore quie a 220 piedini (5 file di 47, can alcune posiziom perse per Vla della
M:.1!f!t chlave di msenmento)
iii: ,;,
meccaniche meccanica le -, ',_
aderentl a un certo standard. Sono rilevantl il tlpo dl connettore usato e Ie dunenslOlll
delle schede. ."::'/f.}j "
.Per quanto si riferisce al tipo di connettore, a parte il numero di piedini, pa-
rametro legato alle caratteristiche logicojfunzionali, l'aspetto .pili importante edato
dalla' modalita. di inserzione: diretta 0 indiretta. n connettore a inserzione diretta
economico, rna ofIre sicuri. e stabili di quello a inserzione
mdiretta. Inoltre, quest'ultlmo confer:sce magglor alIa scheda. Ii\},:
La natura del connettore ha relatlvamente poca lmpoItanza quando 11 calcolatore .. il:f'1',.
viene usato in arnbiente amichevole come in un ufficio, rna diventa determinante
quando il catcolatore viene impiegato in ambiente ostile, come in fabbrica, in presenza
di polvere, fume ecc. Per questo motivo, i calcolatori costruiti per l'impiego industriale ..,..:'
prevedono quasi sempre connettori a inserzione indiretta. Un esempio di a i
inserzione diretta equeUo delle schede per PC IBM illustrato in Figura 11.7. Esempi
. : _
11.2 La standardizzazione
promuove una versione industriale del bus PCI, appositamente studiata,
caratteristiche meccaniche ed elettriche, per gli ambienti industriali.
452
I )
)
1
455 Bus d.i sistema
Viene ora data una sintetica illustraziene delle principali problematiche relative alle
operazioni sui bus.
11.2.1 Operazioni suI bus
moduli collegati at bus rappresenta il protocollo (di scambio dati). La parte restante eli
questa capitolo eessenzialmente dedicata, attraverso la descrizione di esempi concreti,
a:llo studio dei protocollL
La Tabella 11,1 riporta i dati caratteristici dei bus per piccoli sistemi, worksta-
tions e PC di maggiore eliffusione nella seconda meta. degli anni novanta.
[Nome (IEEE) I dim 1con I dat'l ind I mux I trasf I vel' I
!1'.CXT 334x115 dir. 8
20 NO sinc.(4,77) 0,6

(.)
334x115 dir. 16 24 NU sinc.(8) 2
Multibus 1 796) 305x170 e1ir. 16 20 NU Mmc. 10
VME (1014 233x160 indo 32 32 N asmc. 20
MGA 292x73 dir, 32 32 N Mmc, 40
-"E!:;A 334x197 dir. 32 32

Sille. 8,33) 33
Multibus II 11296J 233x220 indo 32 32 SillC. 101 40
EUturebus (896 280x366 indo 32 32 81 Mmc. 95
Gompact PCI "f"1 100x160 air.

32 81 SIDC. 33 264
:;!Jus 147x170 dir. 32
St
smc. 25 200
"
!SC:;1
(') indo
8 NO 4{sinc) n.a. D.a. smc asmc
233
'33
I 280 I
I '.0 I
I 305 I
1 334 1
lsure espresse In mm '
FUTUREBUS
NUBUS
I
220
I

-
MULTIBUS)
SCHEDA PC
,

ComPilet PCI
EUrocard 3U
,
t-
r
I-"
L,
-
r
M

Figura 11.8 Confronto tra schede di diverso formato. La scheda Eurocard


dimensione lOOx160 mm..
Tr
172 115 100
1
Caratteristiche logico/funzionali Le caratteristiche logieo/funzionali riguarda-
no: la dimensione del bus dati e bus indiriz.zi; il numero e il tipo eli linee di centrella;
Ia modalita ($crona/asincrona) eli trasferimente dei dati; i meccanismi d.i alJocazione
del bus per i bus multimasterj i meccanismi di gestione delle interruzioni e degli errori
ecc.
Vinsieme delle regole che sopr-assiedono allo delle informazioni tra i
'\\1
454 Capitola 11
-
-------:.:""=:....:c:...-----

'':.-!'t'
-, ;';'1
-.;nj


.
,:11 'I
.,';,{.'
. j'
-.;.':i:.: i
';i.i<.' .
(,<.:,i,],

-;r., ;1
i' ,.
-.. <::I.'t\/' IIl.t.I'""_ .'"
- ...
--'-'''', .:.,'
,;'," ..,
. ,

t! I.',
.. _

3
"''' t.", {,"
uv ,.'..... '-.-1 '.',

,"
-..
",:". 'w. II" "
'.1/,.'
-\' ,.,(,.' ..
.,,;#:>:: .. ";'
", - delle coionne:
..: ", dim' dirnensioni in millimetri'
,'; . . , I
, .
.' ,;,' ,,:
"'I" '
.' '.<i}'!'' ", dat: dimensione del bus datI;
ind: dimensione del bus indirizzi',
. \\;._ w,
\', mux: bus multiplato 0 nOi
. trasf: tipo di trasferimento, sinerono/asineronoi per it caso sinerono, tra parentesi
I. frequenza
, .., d' 1 ck'
,'. j'''ftlY' I co,
vel: massirna velocita. eli trasferimento in MByte/s.
Tabella 11.1 Alcuni standard di larga diffusione. La parte bassa della tabella riporta
bus concepiti di iI eli periferici. I numeri tra pare:ntesi
nella colonna dl SWJ.stra Identificano il cornspondente standard IEEE. I bus marcatl coo
,..:fj .(*) sono ?li standard di nel dei .Personal
Alcum bus ,elencatl sono pratlcamente scompar.:sl e dl, Dlcchla,l
? 1 vecchl dev?no essere mantenut\. In ambito il VME.e aneara
Implegato, magarl su piastre lD formato Europa (la meta dell'ongmale). Ma anche In questa
3U ha ':';'1 settore si va espandendo l'uso del compact PCl, riportato in tabella..
.",r.': "lH,itr ..
1
"'.:l""'" I ..
.."M
.: ,.1,',', " ,.;.'
;J" ",,"."',"
bassi livelli di tensione ?i
NOD. di rado I costrutton producono un gruppo dt specificl mtegratl aventl la sola iJ!t;-.;,
eli elevare Ie di un bus preesistente. La stessa Intel nello sviluppare ...::
il suo bus !,CI, dato per una. capacita. di picco eli 264MByte/s,
ha il a una capacita. di oitre 400 MByte/s all'uscita di una :,"
speci6ca famlglia di mtegrati dedicata a tale scopo.
..
" ,
.. q'" '",",.' ".'
'c.:' ',J. I" ,..-
,'t,l:"-tll :.", ,
':,: {Hi,t .';:: "
" , .....
:
',1<,.\1' 1'1"'''',,'.
.
.""" .
, "'''JH', .
'.;, *-r... ''t t .','
','
J/.. ij,
.. ... ",'
" ':""'-l ",'II:":
.:::'Ni
"'} 'I".", I""
". , ..,.." ',. ..
.. ". . '-'C

... ::ill "I
-,r.. '1 . 'N', ,
\
J
I
\
I
I
\
I
I
, (
I

,
,

,
I )
)
1
455 Bus d.i sistema
Viene ora data una sintetica illustraziene delle principali problematiche relative alle
operazioni sui bus.
11.2.1 Operazioni suI bus
moduli collegati at bus rappresenta il protocollo (di scambio dati). La parte restante eli
questa capitolo eessenzialmente dedicata, attraverso la descrizione di esempi concreti,
a:llo studio dei protocollL
La Tabella 11,1 riporta i dati caratteristici dei bus per piccoli sistemi, worksta-
tions e PC di maggiore eliffusione nella seconda meta. degli anni novanta.
[Nome (IEEE) I dim 1con I dat'l ind I mux I trasf I vel' I
!1'.CXT 334x115 dir. 8
20 NO sinc.(4,77) 0,6

(.)
334x115 dir. 16 24 NU sinc.(8) 2
Multibus 1 796) 305x170 e1ir. 16 20 NU Mmc. 10
VME (1014 233x160 indo 32 32 N asmc. 20
MGA 292x73 dir, 32 32 N Mmc, 40
-"E!:;A 334x197 dir. 32 32

Sille. 8,33) 33
Multibus II 11296J 233x220 indo 32 32 SillC. 101 40
EUturebus (896 280x366 indo 32 32 81 Mmc. 95
Gompact PCI "f"1 100x160 air.

32 81 SIDC. 33 264
:;!Jus 147x170 dir. 32
St
smc. 25 200
"
!SC:;1
(') indo
8 NO 4{sinc) n.a. D.a. smc asmc
233
'33
I 280 I
I '.0 I
I 305 I
1 334 1
lsure espresse In mm '
FUTUREBUS
NUBUS
I
220
I

-
MULTIBUS)
SCHEDA PC
,

ComPilet PCI
EUrocard 3U
,
t-
r
I-"
L,
-
r
M

Figura 11.8 Confronto tra schede di diverso formato. La scheda Eurocard


dimensione lOOx160 mm..
Tr
172 115 100
1
Caratteristiche logico/funzionali Le caratteristiche logieo/funzionali riguarda-
no: la dimensione del bus dati e bus indiriz.zi; il numero e il tipo eli linee di centrella;
Ia modalita ($crona/asincrona) eli trasferimente dei dati; i meccanismi d.i alJocazione
del bus per i bus multimasterj i meccanismi di gestione delle interruzioni e degli errori
ecc.
Vinsieme delle regole che sopr-assiedono allo delle informazioni tra i
'\\1
454 Capitola 11
-
-------:.:""=:....:c:...-----

'':.-!'t'
-, ;';'1
-.;nj


.
,:11 'I
.,';,{.'
. j'
-.;.':i:.: i
';i.i<.' .
(,<.:,i,],

-;r., ;1
i' ,.
-.. <::I.'t\/' IIl.t.I'""_ .'"
- ...
--'-'''', .:.,'
,;'," ..,
. ,

t! I.',
.. _

3
"''' t.", {,"
uv ,.'..... '-.-1 '.',

,"
-..
",:". 'w. II" "
'.1/,.'
-\' ,.,(,.' ..
.,,;#:>:: .. ";'
", - delle coionne:
..: ", dim' dirnensioni in millimetri'
,'; . . , I
, .
.' ,;,' ,,:
"'I" '
.' '.<i}'!'' ", dat: dimensione del bus datI;
ind: dimensione del bus indirizzi',
. \\;._ w,
\', mux: bus multiplato 0 nOi
. trasf: tipo di trasferimento, sinerono/asineronoi per it caso sinerono, tra parentesi
I. frequenza
, .., d' 1 ck'
,'. j'''ftlY' I co,
vel: massirna velocita. eli trasferimento in MByte/s.
Tabella 11.1 Alcuni standard di larga diffusione. La parte bassa della tabella riporta
bus concepiti di iI eli periferici. I numeri tra pare:ntesi
nella colonna dl SWJ.stra Identificano il cornspondente standard IEEE. I bus marcatl coo
,..:fj .(*) sono ?li standard di nel dei .Personal
Alcum bus ,elencatl sono pratlcamente scompar.:sl e dl, Dlcchla,l
? 1 vecchl dev?no essere mantenut\. In ambito il VME.e aneara
Implegato, magarl su piastre lD formato Europa (la meta dell'ongmale). Ma anche In questa
3U ha ':';'1 settore si va espandendo l'uso del compact PCl, riportato in tabella..
.",r.': "lH,itr ..
1
"'.:l""'" I ..
.."M
.: ,.1,',', " ,.;.'
;J" ",,"."',"
bassi livelli di tensione ?i
NOD. di rado I costrutton producono un gruppo dt specificl mtegratl aventl la sola iJ!t;-.;,
eli elevare Ie di un bus preesistente. La stessa Intel nello sviluppare ...::
il suo bus !,CI, dato per una. capacita. di picco eli 264MByte/s,
ha il a una capacita. di oitre 400 MByte/s all'uscita di una :,"
speci6ca famlglia di mtegrati dedicata a tale scopo.
..
" ,
.. q'" '",",.' ".'
'c.:' ',J. I" ,..-
,'t,l:"-tll :.", ,
':,: {Hi,t .';:: "
" , .....
:
',1<,.\1' 1'1"'''',,'.
.
.""" .
, "'''JH', .
'.;, *-r... ''t t .','
','
J/.. ij,
.. ... ",'
" ':""'-l ",'II:":
.:::'Ni
"'} 'I".", I""
". , ..,.." ',. ..
.. ". . '-'C

... ::ill "I
-,r.. '1 . 'N', ,
\
J
I
\
I
I
\
I
I
, (
I

,
,

,
)-
-
-
-
-
-
-
-
-
-
\
1-
I-
)-
l-
)-
\
I -
1-
1-
I-
I-
1-
1
"
-i
" I " I
n I n I
" I " I
Dl TlIASI'IIJ.. ......,
n 1'1'1"11 T'o'j n I
'f-
I " I
Uso esclusivo In alcune errcostanze,' un master deve poter effettuare una serie di
accessi a un particolare slave, con la sicurezza che nessun altro master possa accedere
alla stesso slave, fino ache la serie dei suoi accessi non sia stata completata. Tipico
eil caso dell'impiego di locazioni di memoria in area com,une, per la realizzazione di
semafari,
Nel case del bus VME, eprevisto esplicitamente un cicIo read-modify-Ulf"ite per
leggere e acrivere in una locazione di memoria in modo indivisibile, 8enza interferenze
d. parte altri lIiaster. n cicio read modify write e'imile un cicio read ,eguito d.
uno writs, senza perc la fase di arbitraggio tra i due,
Nel case dell. architettll" 80x86 l. CPU dispone di un. linea di u,cit. deno-
minata LOCK. Questa linea puc essere portata alParbitro del bus (per esempio, il
componente 8289), in modo che esso non rilasci il bus una volta acquisito, se non
"
./
\
I"
\
'.\
'\
1/
\....r
WiffiC
=
ADR(n)
DATA(n)
7lJ Multibus I e praticamente sparito dal commercia. Facciamo riferimento a esso perche alcune
delle soluzioni adottate sooo particolarmente chiare.
81 protocolli riportati in e 11.9 si riferiscono a bus non multiplati (dati e indirizzi
vengono rimossi praticamente aBo stesso tempo). mentre 1'8086, ta CPU per la quale sono stati
pensati, a.veva il bus multiplato.
Interfacciamento Conviene schematizzare ciascun modulo collegato al bus come
composto di due parti, eli cui una con funxioni di logica di interfaccia con il bus e una
con Ie funzionalita proprie del modulo.
L. logic. di interfacei. rende i segnali del moduio comp.tibili can quelli del
bus, sia dal punta di vista elettrica che logico. Dal punto di vista elettrico
,
occorre
semplicemente che i segnali della scheda vengano riportati ai livelli elettriei di quelli
, "; , -
.$1/,'....
. .. ; " .

... ,
" ,r.:.
-I f'"
456 Capitolo 11 . ) Bus eli sistema 457
.. ;,
:11: :!
'."'; . Ll"'I".:
U
. d" t II' 'I Mult'b I In F' . ,tc ,
. D.eSemI:'lO 1 pro OC.O 0 1 ,I US .. 'lgura 11.9 Vlene sche-
mat12zato il protocollo di lettura del dati nel Multlbus 1
7
I tlP1CO protocollo asincrono. _:oJ.:_ .
.,."..
'.
= n n n n n n n n n n n rL
I! ! v-
"%4 .,' IllOIIIII1J =:x ....... 0IplBea..... X pli'" olpIlIe.u.. II..-
/,.". " :
I I
.. )ii!.'; ... :" 10i. iOii I I J 1',-----
.' ,f.":1"" '.' " ' +
',. ,
:,..::,.. . ,
I/G ell W \ i
' i :
XACK i i
. .. . . . . . . (lEAD) Allo
FIgura 11.9 CicIo <Ii lettura nel Multlbus L n master, all'lnlzlo della transazione
t
pone i---..{
indirizzi suI bus e, dopo un tempo prestabilito (50 ns) per 180 stabilizzazione dei dati, asserisce . tItl.O l)I I\}3 ClCllI DI Q
la linea MRDC 0 lalinea rORC, Questo segnale viene ricevuto da.llo slave che emette i dati :,1ii' Figura 11.10 Temporizzazione dei cicli di lettura e scrittura di I/0 sui bus del PC. Si noti
suI bus e, tramite il segnale CCLK (Common Clock) disponibile suI bus, it ritardo ,del cicIo di disasserito I/O CH e, di la CPt!
con cui asserire 1& linea XACK. n master, ricevuto il segna.le XACK dopo il tempo necessaria , ';, insensce 11 T... l agglUntlvo al CIcio Tw Nel caso il
. per 1& del dato, il comando e alIo f1.?ttante gli indirizzL . master (la. plast!a m.adre 180 CPU) ro\y, dopo aver posta 1 dati bus,
Lo slave, nconoscendo che il comando estato disassetlto
t
rtmuove 1 dab dal bus e conclude. segnalando che I dati sonG proo,tl. SuI froote di di.scesa di T'1 lo slave camplooare
la transazione disasserendo XACK. i dati. Set a causa della 10 slave non ein grad? di leggere 1 dat.1 su T2, allora
. .'esso deve provvedere a il segnale I/O CHROY, eli che,Ia IOglca .del
, tale segnale, disassento su T'1 (a un T"" un di
Conviene che il master preveda un limite massimo di tempo per Ie risposte degli" ,,-,i (T""I) al cldo T", comunque prevtsto (come nfenmento Vlene usato it &onte di
sli:\ve
,
un meccanismo di onde evita!e che la mancanza di "i dlscesa del clock).
(a causa di un guasto nel modulo selezlOnato) provochi uno stallo. "':;;1;.:- .
. ':
. del bus (nel caso fossero diversi). Inoltre devono essere rispettate Ie capacita di.
Un esempio di il ?u.s d,,:l Nei bus sineroni e pilot,aggio Da un punto di logicci occorre invece interfacciare
un clock che permette dt rlpartlre 11 tempo m pOrZlOnI dl durata fissa, dette etch bus:' funzlOnalmente 1segnah del modulo con quelli del bus_
Ogni cicIo bus si compone. di piu deli di clock. In alcuni tipi di bus viene richiesto ,'. In FigUra 11.11 viene mostrato un dettaglia della parte di contralla della logica di
ehe i moduli rieseano eseguire .1. singol. operazione in un solo dclo bu,. In interf.eei': di uno ,l.ve (per esemplo un. 'ched. di memori.), gli integr.ti di
caso, tuttI 1 dlSP?SltlVI devono nspondere entro 1 preclSI mtervalh dl tempo dettab . :, memoria non prevedono La generazione di un segnaJe eli risposta, ecomplto della lOgIca
dalle specifiche, E pero prevista la possibilita di inserire dei deli di attesa, al fine di 'di interfaccia generare il segnale XACK, rispettando i tempi necessari alle memorie.
prolungare la del ciclo bus. , . '. Se i ritar,di non sono Doti a priori, il segnale XACK deve essere generato direttamente
Un bus. can l?rotocallo e.dato bus del PC, In FlguralLIO :t .dalla lOglca delle slave.
vengono nportatl un CIcIo di lettura e uno di scnttura In 1/0
8
. .:}r,:
..,0..;. ."
, .,,:(. '.<:' '.:YI .. ,"
", ,'''. ",,,, .
. 'ui;"
, '':j t,:_ 'it",,.; i'
:'< itf!}'? '
" ,v:"J.-N..-,
",';fr. ,A"ti.;...
,',I' '
; .. I." :",
'., .-- .,' ',:'"
'.... ""c
,'" . --'i"" ....
"" ..
,,-,, --,
... ..,
..... 0 ,j l(-'
,t:'ir; ".' "

,. " ..""."'" ..
. (''''' ,., ;.
"'.1'."',
.,,-t!
'J1:\ ;"';.
< ..
. j.,!.. , t
,.1.<1i\ '.'-
.
,J,i/t/ ...,
;",,,). .
<""
',it"'} .",:' "
,:. :41;,' :;;.'/ ':,
.'11 ; "
,-,., . ;"""'"
(; Il. .,' \

,.1:,...
",....., ".,11'"_
)-
-
-
-
-
-
-
-
-
-
\
1-
I-
)-
l-
)-
\
I -
1-
1-
I-
I-
1-
1
"
-i
" I " I
n I n I
" I " I
Dl TlIASI'IIJ.. ......,
n 1'1'1"11 T'o'j n I
'f-
I " I
Uso esclusivo In alcune errcostanze,' un master deve poter effettuare una serie di
accessi a un particolare slave, con la sicurezza che nessun altro master possa accedere
alla stesso slave, fino ache la serie dei suoi accessi non sia stata completata. Tipico
eil caso dell'impiego di locazioni di memoria in area com,une, per la realizzazione di
semafari,
Nel case del bus VME, eprevisto esplicitamente un cicIo read-modify-Ulf"ite per
leggere e acrivere in una locazione di memoria in modo indivisibile, 8enza interferenze
d. parte altri lIiaster. n cicio read modify write e'imile un cicio read ,eguito d.
uno writs, senza perc la fase di arbitraggio tra i due,
Nel case dell. architettll" 80x86 l. CPU dispone di un. linea di u,cit. deno-
minata LOCK. Questa linea puc essere portata alParbitro del bus (per esempio, il
componente 8289), in modo che esso non rilasci il bus una volta acquisito, se non
"
./
\
I"
\
'.\
'\
1/
\....r
WiffiC
=
ADR(n)
DATA(n)
7lJ Multibus I e praticamente sparito dal commercia. Facciamo riferimento a esso perche alcune
delle soluzioni adottate sooo particolarmente chiare.
81 protocolli riportati in e 11.9 si riferiscono a bus non multiplati (dati e indirizzi
vengono rimossi praticamente aBo stesso tempo). mentre 1'8086, ta CPU per la quale sono stati
pensati, a.veva il bus multiplato.
Interfacciamento Conviene schematizzare ciascun modulo collegato al bus come
composto di due parti, eli cui una con funxioni di logica di interfaccia con il bus e una
con Ie funzionalita proprie del modulo.
L. logic. di interfacei. rende i segnali del moduio comp.tibili can quelli del
bus, sia dal punta di vista elettrica che logico. Dal punto di vista elettrico
,
occorre
semplicemente che i segnali della scheda vengano riportati ai livelli elettriei di quelli
, "; , -
.$1/,'....
. .. ; " .

... ,
" ,r.:.
-I f'"
456 Capitolo 11 . ) Bus eli sistema 457
.. ;,
:11: :!
'."'; . Ll"'I".:
U
. d" t II' 'I Mult'b I In F' . ,tc ,
. D.eSemI:'lO 1 pro OC.O 0 1 ,I US .. 'lgura 11.9 Vlene sche-
mat12zato il protocollo di lettura del dati nel Multlbus 1
7
I tlP1CO protocollo asincrono. _:oJ.:_ .
.,."..
'.
= n n n n n n n n n n n rL
I! ! v-
"%4 .,' IllOIIIII1J =:x ....... 0IplBea..... X pli'" olpIlIe.u.. II..-
/,.". " :
I I
.. )ii!.'; ... :" 10i. iOii I I J 1',-----
.' ,f.":1"" '.' " ' +
',. ,
:,..::,.. . ,
I/G ell W \ i
' i :
XACK i i
. .. . . . . . . (lEAD) Allo
FIgura 11.9 CicIo <Ii lettura nel Multlbus L n master, all'lnlzlo della transazione
t
pone i---..{
indirizzi suI bus e, dopo un tempo prestabilito (50 ns) per 180 stabilizzazione dei dati, asserisce . tItl.O l)I I\}3 ClCllI DI Q
la linea MRDC 0 lalinea rORC, Questo segnale viene ricevuto da.llo slave che emette i dati :,1ii' Figura 11.10 Temporizzazione dei cicli di lettura e scrittura di I/0 sui bus del PC. Si noti
suI bus e, tramite il segnale CCLK (Common Clock) disponibile suI bus, it ritardo ,del cicIo di disasserito I/O CH e, di la CPt!
con cui asserire 1& linea XACK. n master, ricevuto il segna.le XACK dopo il tempo necessaria , ';, insensce 11 T... l agglUntlvo al CIcio Tw Nel caso il
. per 1& del dato, il comando e alIo f1.?ttante gli indirizzL . master (la. plast!a m.adre 180 CPU) ro\y, dopo aver posta 1 dati bus,
Lo slave, nconoscendo che il comando estato disassetlto
t
rtmuove 1 dab dal bus e conclude. segnalando che I dati sonG proo,tl. SuI froote di di.scesa di T'1 lo slave camplooare
la transazione disasserendo XACK. i dati. Set a causa della 10 slave non ein grad? di leggere 1 dat.1 su T2, allora
. .'esso deve provvedere a il segnale I/O CHROY, eli che,Ia IOglca .del
, tale segnale, disassento su T'1 (a un T"" un di
Conviene che il master preveda un limite massimo di tempo per Ie risposte degli" ,,-,i (T""I) al cldo T", comunque prevtsto (come nfenmento Vlene usato it &onte di
sli:\ve
,
un meccanismo di onde evita!e che la mancanza di "i dlscesa del clock).
(a causa di un guasto nel modulo selezlOnato) provochi uno stallo. "':;;1;.:- .
. ':
. del bus (nel caso fossero diversi). Inoltre devono essere rispettate Ie capacita di.
Un esempio di il ?u.s d,,:l Nei bus sineroni e pilot,aggio Da un punto di logicci occorre invece interfacciare
un clock che permette dt rlpartlre 11 tempo m pOrZlOnI dl durata fissa, dette etch bus:' funzlOnalmente 1segnah del modulo con quelli del bus_
Ogni cicIo bus si compone. di piu deli di clock. In alcuni tipi di bus viene richiesto ,'. In FigUra 11.11 viene mostrato un dettaglia della parte di contralla della logica di
ehe i moduli rieseano eseguire .1. singol. operazione in un solo dclo bu,. In interf.eei': di uno ,l.ve (per esemplo un. 'ched. di memori.), gli integr.ti di
caso, tuttI 1 dlSP?SltlVI devono nspondere entro 1 preclSI mtervalh dl tempo dettab . :, memoria non prevedono La generazione di un segnaJe eli risposta, ecomplto della lOgIca
dalle specifiche, E pero prevista la possibilita di inserire dei deli di attesa, al fine di 'di interfaccia generare il segnale XACK, rispettando i tempi necessari alle memorie.
prolungare la del ciclo bus. , . '. Se i ritar,di non sono Doti a priori, il segnale XACK deve essere generato direttamente
Un bus. can l?rotocallo e.dato bus del PC, In FlguralLIO :t .dalla lOglca delle slave.
vengono nportatl un CIcIo di lettura e uno di scnttura In 1/0
8
. .:}r,:
..,0..;. ."
, .,,:(. '.<:' '.:YI .. ,"
", ,'''. ",,,, .
. 'ui;"
, '':j t,:_ 'it",,.; i'
:'< itf!}'? '
" ,v:"J.-N..-,
",';fr. ,A"ti.;...
,',I' '
; .. I." :",
'., .-- .,' ',:'"
'.... ""c
,'" . --'i"" ....
"" ..
,,-,, --,
... ..,
..... 0 ,j l(-'
,t:'ir; ".' "

,. " ..""."'" ..
. (''''' ,., ;.
"'.1'."',
.,,-t!
'J1:\ ;"';.
< ..
. j.,!.. , t
,.1.<1i\ '.'-
.
,J,i/t/ ...,
;",,,). .
<""
',it"'} .",:' "
,:. :41;,' :;;.'/ ':,
.'11 ; "
,-,., . ;"""'"
(; Il. .,' \

,.1:,...
",....., ".,11'"_
\ (
I \
I

459
lUST
OCU<
Bus di sistema
Prlorlla'
minora
Prioril...
m...u1ore
LOCICA DEL LOClCA DEl.
LOelCA DEl.
WASTER A WASTER B
IIJ,STI;R C

""_I
=, 1
m
""
u,
,
ii"Rtl SPit"
iiPiiO
BPRO
SPRO
lOL'Inte1 rendeva. disponibile il componente 8289 bus arbiter, per }'arbitraggio del Multibus I.
Figura 11.12 Schema concettuale della daisy chain del Multibus 1. II modulo piu a sinistra
(modulo A) equello a pill 'alta priorita., e ha sempre la linea di priorita. in ingresso (BPRN)
asserita. La linea BUSY ha 10 scopo di indicare se il bus eo.no in usO.
nprotocoUo di accesso all'uso del bus
lO
prevede the il master che intende UBare il
. bus debba prima sincerarsi che la linea di bus BUSY sia disasserita; una volta entrato
---- ._-
lltVla;
-.---
'-'
'( vII SL,lVt
, DATA Cs
Q.tl\ll
K
. cue 01 I
'1" --, " HIM

1-1 cUe


".
'u'
...,
9L'lUIcita LOCK viene asserita da. una. qualunque istruzione the viene fatta. precedere dal
(un byt.) eli LOCK.
Un bus viene detto multima.ster quando consente Pimpiego di piu di un modulo (nor-
mahnente la CPU) in grado di pilotare il bus stesso. In questo caso Occorr. un qualch.
meccanismo di arbitraggio the consenta di risolvere Ie contese per l'accesso al bus, ga.-
11.3 Allocazione del bus
Errori Durante il funzionamento di un sistema, possono verificarsi errori dovuti
all'alimentazione 0 a interferenze di varia natura che alterano i segnali del sistema
(campi elettromagnetici e guasto di un modulo).
Per quanta si riferisce cilPalimentazione, tramite un opportuno rilevatore del H-
vello di tensione
1
viene generato un segnale che avverte tutti i moduli dell'imminente
cad,uta di tensione, ciando la possibilita. aI. sistema di gerrerare chiusura controlla-
tao Nel Multibus I eprevisto allo scopo l'interruzione PFIN (power failure interrupt).
Nel Multibus II vengono impiegati i segnali DCLOW e PROT per distinguere tra av-
viamento a caldo, a freddo e ripristino a seguito di un calc del1'alimentazione. Anc);:Le
nel caso del VME e del Futurebus 8Ono previsti segnali analoghi.
In tempi. piu recenti si ecominciato a inserire anche la rilevazione di altri tipi
di errori Per esempio, U Futurebus prevede qnee di parita. per l'arbitraggio, per
l'indirizzamento, per Utrasferimento dati e per Ie linee di comandoj il Multibus II usa
il controllo di parita. su indirizzi e dati, rnentre il bus PCI contrella anche i cornandi.
quando questa linea etornata disasserita
9
,
458 Capitolo 11
"'l;;


,."\..-,'-


. , , .

i';'.
. "
." '." ,I",'"
1"!"k
, " ,o".,.
",." ,- . ',"-
" I
<r;;c:: 'c.
!iii
'.' ." ., "

. rantendo che non 5i verifichino situazioni di attesa indefinita (starvation) 0 di paralisi
.(.... '., I . (d d I k)
.. .:84i .de ea, DC . .'
,:..j)iW"Xn::'i::'.' L,arbltragglO pub essere realizzato mediante un controllore centrahzzato, e 10 tal
.. __ casO 81 parla eli oppure med.i:ante una tra 1 van
l?ro, 81 su chI il In
81 parla di arbttraggto dtstnbutto. OVVlamente sonG posslbih anche arbltraggl lIDstl,
, in cui i master si accordano tra lora can una tecnica autose1ettiva, ma la gestione del
"., bus viene demandata a controllore questa tecnica mista
'. El, per esempI,o, 1?crochanne.l dell,a ,
Un1ultenore distmzlOne SI nfensce a1 caso m CUI Parbltraggto avvenga attraverso
.una opp,:re in paraUelo, Nella parte che segue vengono presentati 4
. , , , ., ,. modahta dl arbltragglO:
Figura eli 1).81 suppone che (0 sla.ve sia una .,. ..
scheda. eli e che Sla a II di nsposta. La di interfa.ccia tras- a) clistnbulta con schema dalsy chamj
forma I di lettura e scnttura In memona MRDC e MWTC nel coma.ndi RD e WRT, il}j,f-?{';.,. .
. ,lalogtca della slave..n segnale DEVICESELECT proviene dalla, degli indi- .b) centrahzzata con schema parallelo;
rIZZI. n segnale XACK Vlene generato attraverso un contatore che diVide opportunamente . ..,
la frequenza del segnale CCLK (Common btu clock). c) dlstnbmta con schema. paralleloi
d) centralizzata con schema daisy chain.
' ..,;i1it /.. , .. '
.
,
Mti;" "r ""'"
:
... .. ';, ' '.-'
.' .... ""';.:.... . ., . . . .'
"""'<I 11.3.1 ArbltragglO dlstnbmto con schema daISy cham
r',
c'.
questo caso faremo riferimento al Multibu, I [Int77],. e, pili specificatamente alla
'i';;;I'. f:'i",,,.,. Figura 11.12.
;'::Jl
'\,.;Jj ., "."
'''lji ,"'f' .
"." '.,
l.t,li,ji; .::
I) 'M : :
),;'1>:1\"'.'
.'. ''-;"10::'0''< ,'..tr:.r "
". ",:mll ',.( 0':
..... ,:'.' "
' IJ. :.:,>: '.
'.. '>: :1"",';-":'.'
".,.' ..... > ".'" ,' .
.,.:, t,; ".P,,',,,,:
"."'" ".\'. \ ':':'
'l;lt ,,.-\" ..

,;:-: ... ..,:- .
: ',t;,,!?:;;' .
'.,'..--,,,,,.. , ..
<l.... ,,'),rr."
"":'f, .:, .V',
. ", ,,'
'.- .. '-
-'/";1
1
\,
, .. ;,
'. I'"f'" ;.;.'

'"j ..'" '1'" .. '
.'-.... .. -
, ..... <'.
'."',.. ':",
;' 'l'i,1 ", .. ;::.

"'-":',,: .:
:1i!A'
...-;. ...
>'\"P;,; :, :,',{:-': ,; "
, "',' <to '.' ''',
"'j).,
.r':i. J"""
t'l'':..
")::" ';-' ,";" .
"1', .:.
, '.\, ...
.
... \ ,.. ,'. '
., ..... ' ... " .
::".
'. '''''''. ' .. ' '. '
... ",I'" \.,;.
.", <;, "", '
:..:rl \' ,.:" ..
,;::"lIi i:tV:<'"
'1 "">"

,. " .. ,....
.
I
I
\
\
1
1
\
\
I
l
1
I

\ (
I \
I

459
lUST
OCU<
Bus di sistema
Prlorlla'
minora
Prioril...
m...u1ore
LOCICA DEL LOClCA DEl.
LOelCA DEl.
WASTER A WASTER B
IIJ,STI;R C

""_I
=, 1
m
""
u,
,
ii"Rtl SPit"
iiPiiO
BPRO
SPRO
lOL'Inte1 rendeva. disponibile il componente 8289 bus arbiter, per }'arbitraggio del Multibus I.
Figura 11.12 Schema concettuale della daisy chain del Multibus 1. II modulo piu a sinistra
(modulo A) equello a pill 'alta priorita., e ha sempre la linea di priorita. in ingresso (BPRN)
asserita. La linea BUSY ha 10 scopo di indicare se il bus eo.no in usO.
nprotocoUo di accesso all'uso del bus
lO
prevede the il master che intende UBare il
. bus debba prima sincerarsi che la linea di bus BUSY sia disasserita; una volta entrato
---- ._-
lltVla;
-.---
'-'
'( vII SL,lVt
, DATA Cs
Q.tl\ll
K
. cue 01 I
'1" --, " HIM

1-1 cUe


".
'u'
...,
9L'lUIcita LOCK viene asserita da. una. qualunque istruzione the viene fatta. precedere dal
(un byt.) eli LOCK.
Un bus viene detto multima.ster quando consente Pimpiego di piu di un modulo (nor-
mahnente la CPU) in grado di pilotare il bus stesso. In questo caso Occorr. un qualch.
meccanismo di arbitraggio the consenta di risolvere Ie contese per l'accesso al bus, ga.-
11.3 Allocazione del bus
Errori Durante il funzionamento di un sistema, possono verificarsi errori dovuti
all'alimentazione 0 a interferenze di varia natura che alterano i segnali del sistema
(campi elettromagnetici e guasto di un modulo).
Per quanta si riferisce cilPalimentazione, tramite un opportuno rilevatore del H-
vello di tensione
1
viene generato un segnale che avverte tutti i moduli dell'imminente
cad,uta di tensione, ciando la possibilita. aI. sistema di gerrerare chiusura controlla-
tao Nel Multibus I eprevisto allo scopo l'interruzione PFIN (power failure interrupt).
Nel Multibus II vengono impiegati i segnali DCLOW e PROT per distinguere tra av-
viamento a caldo, a freddo e ripristino a seguito di un calc del1'alimentazione. Anc);:Le
nel caso del VME e del Futurebus 8Ono previsti segnali analoghi.
In tempi. piu recenti si ecominciato a inserire anche la rilevazione di altri tipi
di errori Per esempio, U Futurebus prevede qnee di parita. per l'arbitraggio, per
l'indirizzamento, per Utrasferimento dati e per Ie linee di comandoj il Multibus II usa
il controllo di parita. su indirizzi e dati, rnentre il bus PCI contrella anche i cornandi.
quando questa linea etornata disasserita
9
,
458 Capitolo 11
"'l;;


,."\..-,'-


. , , .

i';'.
. "
." '." ,I",'"
1"!"k
, " ,o".,.
",." ,- . ',"-
" I
<r;;c:: 'c.
!iii
'.' ." ., "

. rantendo che non 5i verifichino situazioni di attesa indefinita (starvation) 0 di paralisi
.(.... '., I . (d d I k)
.. .:84i .de ea, DC . .'
,:..j)iW"Xn::'i::'.' L,arbltragglO pub essere realizzato mediante un controllore centrahzzato, e 10 tal
.. __ casO 81 parla eli oppure med.i:ante una tra 1 van
l?ro, 81 su chI il In
81 parla di arbttraggto dtstnbutto. OVVlamente sonG posslbih anche arbltraggl lIDstl,
, in cui i master si accordano tra lora can una tecnica autose1ettiva, ma la gestione del
"., bus viene demandata a controllore questa tecnica mista
'. El, per esempI,o, 1?crochanne.l dell,a ,
Un1ultenore distmzlOne SI nfensce a1 caso m CUI Parbltraggto avvenga attraverso
.una opp,:re in paraUelo, Nella parte che segue vengono presentati 4
. , , , ., ,. modahta dl arbltragglO:
Figura eli 1).81 suppone che (0 sla.ve sia una .,. ..
scheda. eli e che Sla a II di nsposta. La di interfa.ccia tras- a) clistnbulta con schema dalsy chamj
forma I di lettura e scnttura In memona MRDC e MWTC nel coma.ndi RD e WRT, il}j,f-?{';.,. .
. ,lalogtca della slave..n segnale DEVICESELECT proviene dalla, degli indi- .b) centrahzzata con schema parallelo;
rIZZI. n segnale XACK Vlene generato attraverso un contatore che diVide opportunamente . ..,
la frequenza del segnale CCLK (Common btu clock). c) dlstnbmta con schema. paralleloi
d) centralizzata con schema daisy chain.
' ..,;i1it /.. , .. '
.
,
Mti;" "r ""'"
:
... .. ';, ' '.-'
.' .... ""';.:.... . ., . . . .'
"""'<I 11.3.1 ArbltragglO dlstnbmto con schema daISy cham
r',
c'.
questo caso faremo riferimento al Multibu, I [Int77],. e, pili specificatamente alla
'i';;;I'. f:'i",,,.,. Figura 11.12.
;'::Jl
'\,.;Jj ., "."
'''lji ,"'f' .
"." '.,
l.t,li,ji; .::
I) 'M : :
),;'1>:1\"'.'
.'. ''-;"10::'0''< ,'..tr:.r "
". ",:mll ',.( 0':
..... ,:'.' "
' IJ. :.:,>: '.
'.. '>: :1"",';-":'.'
".,.' ..... > ".'" ,' .
.,.:, t,; ".P,,',,,,:
"."'" ".\'. \ ':':'
'l;lt ,,.-\" ..

,;:-: ... ..,:- .
: ',t;,,!?:;;' .
'.,'..--,,,,,.. , ..
<l.... ,,'),rr."
"":'f, .:, .V',
. ", ,,'
'.- .. '-
-'/";1
1
\,
, .. ;,
'. I'"f'" ;.;.'

'"j ..'" '1'" .. '
.'-.... .. -
, ..... <'.
'."',.. ':",
;' 'l'i,1 ", .. ;::.

"'-":',,: .:
:1i!A'
...-;. ...
>'\"P;,; :, :,',{:-': ,; "
, "',' <to '.' ''',
"'j).,
.r':i. J"""
t'l'':..
")::" ';-' ,";" .
"1', .:.
, '.\, ...
.
... \ ,.. ,'. '
., ..... ' ... " .
::".
'. '''''''. ' .. ' '. '
... ",I'" \.,;.
.", <;, "", '
:..:rl \' ,.:" ..
,;::"lIi i:tV:<'"
'1 "">"

,. " .. ,....
.
I
I
\
\
1
1
\
\
I
l
1
I

1
-
-
-
-
-
-
-
-
-
1-
1-
)-
1-
\
l-
)-
I -
1-
1
I -
1-
\
I
I-
)-
"
..
I
" " " '"
.. ..
r-
o e.-
I
e.-
;--
I
:
I
,"'-
, I
I
,
I
\ I
I
l I I
I
I
: '0
'/
I
I
I
I
,
I I
I I
{ I
I
I I
,
I
,
JL
,
, ,
I
I I
,
,
I II
,1"',
f\.J!
"
I
,
I
I
,
:..=!s
I
\..
I
: """
\
1/
"
\
,
. '-- , .
,y
I
I
( I
'I :
I I
I I
I
,
:
;
\
I I
/
Atl
ADD:
eM"
CMN'
ADD
-
TXRO
TXRQ
'x,"
-
BPRO
BPRO
BPRN
BCLK
ti,:

-

.. H .
460 Capitolo 11 2: . Bus di sistema 461
- -----'-'---'----------------------------------"", , ','!ff' .
.. ':jlf!V:f:
, , I",,,. .,
. ,\ .
.. . '.
del bus il master BUSY e la Mserita per il ..,'
In CUI ha 11 controlla del bus'
l
La lOgIca del master nchlede Paccesso a1 bus
il segnale !:'CRQ; la quando it bus
state AEN il complto Ie Usclte del master. ';
schema 51 IPOtIZZ3 che il master assensca 1a linea CMND m nsposta a AEN. . .
? dei durante una rase di. scamb.io accesso al
bus e nportato In Flgwa 11.13. SegUlamo la sequenza degli eventl dl Flgura11.13 MASTER A
che la di in modo sincrono rispetto a , .
(frontl dI dJscesa), sebbene 11 protocoUo Sla asmcrono.
>,:., :_'.
1. All'istante to il master C - guello a minor priorita - ein possesso del bus; ER'
't' BPRN TXRQ BUSY ,,,, "'"" ,.,M'"
assen 1 C ,ee . ,.' i :::
i 1",
. ''/:'
2. t1 la di. del master A queUo a piu alta priorita
n.leva ea..:'senta ncluesta ,dI accesso. al bus ' c
Vlene dlsassenta l'usclta BPROA. n camblamento dl state sulla daISY cham .. :'
propaga a destra per tutta 1a catena
ll
. '. I BPRN
3. All'istante t
2
Ia logica di interfaccia del rna.ster C campiona BPRNc ..'- BUSY
rito, rna la logica del ma.ster. C contiJ.1ua a mantener.e asserito, il ':
CMNDc, llldlcando che sta ";,,cora pilotando 11 bu". 10 scamblo non puo avvemre. ,;""
Nlente accade all'lstante ts, In quanto Ie condlzloOi non 50no mutate. .", c
4. Ali'istante t4, avendo ora il master C rilasciato it bus (CMNf5C
inizia Ia fa:se eli sea:mbio e la logica di .del master C. disasser.isce B t,
n. delia atJ.SY alio, .ha ,come neul.tato
di AEN alIo stato disassento e qUllldl la disabihtazlone delle Usclte del drIver del..!'-y;...," , ;
bus. A
I AEN -------------i-----r,
5, Su 15 UmaSter A enella condizione di appropriarsi del bus (BUSY = H, 'iiiJ i\ l-.. i i \ ./
BPRNA = L, BPROA = H, oltre che TXRQ assento). Conseguentemente, BUS AL MASTER C SCAHBl[] BUS AL MASTER A
logica di interfaccia di A asserisce BUSY e di seguito AEN, Per Jlipotesi fatta, ?'1-.-trFigura 11.13 Temporizzazione dei segnali del Multibus I nel caso di arbitraggio distribuito
la logica del master A aaserisce CMNDA e pilota il bus. daisy chain. Inizialmente il bus econtrollato dal modulo a piu bassa priorita. C (Ie linee
.,. '. . .. . . ," gli asseriti da1 master si A
81 notI 1a BUSY equelia che la 1 da parte del,modulo A, SI sequenza
protocollo,di easmcro.no, anche se 81 su una 10gIca dl mterfaccIa a rilasciare il bus e A a entrarne cantrollo. 51 noti che il master C 11 bus. (.CMND
.. L Vlncolo che 51 pone e quelio relatIvo fatto. che la. durata del " disasserito) can TXRQ a.nc.ora attIva. Conseguentemente, per il servmo della
penodo d1 clock Sla tale da garantrre la completa propagazlOne del segnah attraverso richiesta, it master C dovra riguadagnare il cantrollo del bus.
la catena, in modo che sul ronte di discesa venga cam.pionata una situazione certa.
Se q':lesto vincolo e BPRN e campionato prima che
non operazlOw er:ate bus. In modo eVlta.tl '..<r:>: . . . . .. . . .
tuttI 1 problenu dI metastabllita. e"come eVldenzlato dalla FIgura 11.13, l'arbltragglQ Ne1 protocolIo nportato, solo BPRN mdIca se un master (piU pnontano) nchlede
viene risoIto in un cicIo di BeLK. L'intera procedura di scambio richiede circa 4 deli. bus" 0 no. Al fine di a un.eventu.a1e master a piu bas.sa di prend?re
di BeLK. 11 controllo del bus, Sl rende necessano che il master corrente rilasCl bus
'di ogni tale anche nel che non ci Slana nchieste
. . . . ,. . . ' . accesso da parte dl altn master, II bus master corrente dovd. comunque sottoporSl,
11 che per corretto funZlOnamento e che II penodo dl clock sia tale da . ,;#1 tra una transazione e Paltra, alIa fase di bus exchange. Per evitare questa apreco si
garantlre I effettlva propagaztone del segnale per tutta Ie. catena. . PUO utilizzare (opzionale ne1 Multibus I) una tecnica detta di bw parking che consiste
12Si Doti cbe C ha rila8Cia.to iI bus anc.he se TXRQc e ancora. asserita.. Questa indica che la - II' U II d I b all' I"b t M ." .. edir" bb >
C estate. completata e che vert-a. ripresa in seguito quando iI master di maggiore ascIare contro 0 e ':5. u us e:. . a con 51 e e peru
PrlOrlta nlascera. 11 bus. ,-;:',;,;;,.: ! 1usa del bus a master con pnonta mInore, con nschio di attesa mdefimtamente lunga.
"ul;'t;:;"
.
',,' "' 1;''';':--';'<::
1
-
-
-
-
-
-
-
-
-
1-
1-
)-
1-
\
l-
)-
I -
1-
1
I -
1-
\
I
I-
)-
"
..
I
" " " '"
.. ..
r-
o e.-
I
e.-
;--
I
:
I
,"'-
, I
I
,
I
\ I
I
l I I
I
I
: '0
'/
I
I
I
I
,
I I
I I
{ I
I
I I
,
I
,
JL
,
, ,
I
I I
,
,
I II
,1"',
f\.J!
"
I
,
I
I
,
:..=!s
I
\..
I
: """
\
1/
"
\
,
. '-- , .
,y
I
I
( I
'I :
I I
I I
I
,
:
;
\
I I
/
Atl
ADD:
eM"
CMN'
ADD
-
TXRO
TXRQ
'x,"
-
BPRO
BPRO
BPRN
BCLK
ti,:

-

.. H .
460 Capitolo 11 2: . Bus di sistema 461
- -----'-'---'----------------------------------"", , ','!ff' .
.. ':jlf!V:f:
, , I",,,. .,
. ,\ .
.. . '.
del bus il master BUSY e la Mserita per il ..,'
In CUI ha 11 controlla del bus'
l
La lOgIca del master nchlede Paccesso a1 bus
il segnale !:'CRQ; la quando it bus
state AEN il complto Ie Usclte del master. ';
schema 51 IPOtIZZ3 che il master assensca 1a linea CMND m nsposta a AEN. . .
? dei durante una rase di. scamb.io accesso al
bus e nportato In Flgwa 11.13. SegUlamo la sequenza degli eventl dl Flgura11.13 MASTER A
che la di in modo sincrono rispetto a , .
(frontl dI dJscesa), sebbene 11 protocoUo Sla asmcrono.
>,:., :_'.
1. All'istante to il master C - guello a minor priorita - ein possesso del bus; ER'
't' BPRN TXRQ BUSY ,,,, "'"" ,.,M'"
assen 1 C ,ee . ,.' i :::
i 1",
. ''/:'
2. t1 la di. del master A queUo a piu alta priorita
n.leva ea..:'senta ncluesta ,dI accesso. al bus ' c
Vlene dlsassenta l'usclta BPROA. n camblamento dl state sulla daISY cham .. :'
propaga a destra per tutta 1a catena
ll
. '. I BPRN
3. All'istante t
2
Ia logica di interfaccia del rna.ster C campiona BPRNc ..'- BUSY
rito, rna la logica del ma.ster. C contiJ.1ua a mantener.e asserito, il ':
CMNDc, llldlcando che sta ";,,cora pilotando 11 bu". 10 scamblo non puo avvemre. ,;""
Nlente accade all'lstante ts, In quanto Ie condlzloOi non 50no mutate. .", c
4. Ali'istante t4, avendo ora il master C rilasciato it bus (CMNf5C
inizia Ia fa:se eli sea:mbio e la logica di .del master C. disasser.isce B t,
n. delia atJ.SY alio, .ha ,come neul.tato
di AEN alIo stato disassento e qUllldl la disabihtazlone delle Usclte del drIver del..!'-y;...," , ;
bus. A
I AEN -------------i-----r,
5, Su 15 UmaSter A enella condizione di appropriarsi del bus (BUSY = H, 'iiiJ i\ l-.. i i \ ./
BPRNA = L, BPROA = H, oltre che TXRQ assento). Conseguentemente, BUS AL MASTER C SCAHBl[] BUS AL MASTER A
logica di interfaccia di A asserisce BUSY e di seguito AEN, Per Jlipotesi fatta, ?'1-.-trFigura 11.13 Temporizzazione dei segnali del Multibus I nel caso di arbitraggio distribuito
la logica del master A aaserisce CMNDA e pilota il bus. daisy chain. Inizialmente il bus econtrollato dal modulo a piu bassa priorita. C (Ie linee
.,. '. . .. . . ," gli asseriti da1 master si A
81 notI 1a BUSY equelia che la 1 da parte del,modulo A, SI sequenza
protocollo,di easmcro.no, anche se 81 su una 10gIca dl mterfaccIa a rilasciare il bus e A a entrarne cantrollo. 51 noti che il master C 11 bus. (.CMND
.. L Vlncolo che 51 pone e quelio relatIvo fatto. che la. durata del " disasserito) can TXRQ a.nc.ora attIva. Conseguentemente, per il servmo della
penodo d1 clock Sla tale da garantrre la completa propagazlOne del segnah attraverso richiesta, it master C dovra riguadagnare il cantrollo del bus.
la catena, in modo che sul ronte di discesa venga cam.pionata una situazione certa.
Se q':lesto vincolo e BPRN e campionato prima che
non operazlOw er:ate bus. In modo eVlta.tl '..<r:>: . . . . .. . . .
tuttI 1 problenu dI metastabllita. e"come eVldenzlato dalla FIgura 11.13, l'arbltragglQ Ne1 protocolIo nportato, solo BPRN mdIca se un master (piU pnontano) nchlede
viene risoIto in un cicIo di BeLK. L'intera procedura di scambio richiede circa 4 deli. bus" 0 no. Al fine di a un.eventu.a1e master a piu bas.sa di prend?re
di BeLK. 11 controllo del bus, Sl rende necessano che il master corrente rilasCl bus
'di ogni tale anche nel che non ci Slana nchieste
. . . . ,. . . ' . accesso da parte dl altn master, II bus master corrente dovd. comunque sottoporSl,
11 che per corretto funZlOnamento e che II penodo dl clock sia tale da . ,;#1 tra una transazione e Paltra, alIa fase di bus exchange. Per evitare questa apreco si
garantlre I effettlva propagaztone del segnale per tutta Ie. catena. . PUO utilizzare (opzionale ne1 Multibus I) una tecnica detta di bw parking che consiste
12Si Doti cbe C ha rila8Cia.to iI bus anc.he se TXRQc e ancora. asserita.. Questa indica che la - II' U II d I b all' I"b t M ." .. edir" bb >
C estate. completata e che vert-a. ripresa in seguito quando iI master di maggiore ascIare contro 0 e ':5. u us e:. . a con 51 e e peru
PrlOrlta nlascera. 11 bus. ,-;:',;,;;,.: ! 1usa del bus a master con pnonta mInore, con nschio di attesa mdefimtamente lunga.
"ul;'t;:;"
.
',,' "' 1;''';':--';'<::
I \
I
-, I
463 Bus eli sistema
14Lo schema. di Figura. 11.15 eadotta.to dal Futurebus, dove pero Ie !inee di arbitraggio sono 8.
dopo un periodo di assestamento
l
i1 modulo con piu alta priorita trova che il suo coelice
. risulta uguale alJa configurazione assunta da! bus, e dunque il modulo in questione e
it vincitore della eontesa. '
In Figura 11.15 viene dato un possibile schema della logica di arbitraggio presente
su ciaseuna scheda
14
. 8i noti che ogni master possiede un suo codice di priorita fisso,
rna modificabile a piacimento da parte del sistemista. n eodiee 0000 da. 1a priorita. pili
alta, 10 nn la piiJ bassa.
. La logica del master richiede PUBO del bus attraverso la linea REQ, mentre la
concessione del bus viene notiJicala attraverso la linea GRANT. La linea ARB(GNT
. viene pilotata da un controllore centralizzato chiamato CACP (Central Arbitration
Control Point)! che gestisce Ie varie fasi di del bus. In particolare 1a
linea ein stato H nel corso di una fase di arbitraggio e in stato L durante Ie fasi di
uso del bus.
Per capire il funzionamento della logica di Figura 11.15! si corninei col considerare
il master avente coelice 1010 (HLHL) e si assuma cbe solo questo master stia asserendo
. .
la propria linea REQ. E facile convincer,i che 10 stato delle linee ARB3-ARBO assume
la configurazione 1010. Infatti, Ie uscite delle porte NAND riproducone esattamente
questa configurazione, mentre Ie uscite di tutte Ie altre schede collegate al bus, essendo
per esse 1a linea REQ disasserila, sarebhero tutte a 1. Poiche Ie linee ARB3-ARBO
sono a collettore aperto, la configurazione risultante e1010.
,US
ARBITER
I1o'oSTER B HASTER B
IF
STO
! C
l'.ASTE!l: D
IT
"'"
IT
"'"
IT
"'"
IT
"'"
JIlt:ll
"'" "'" "'"
Jt
,
I
, ,
, ,

, ,
6 6
7 7
,
.
,
Arbitraggio centralizzato con schema parallelo
11.3.2
, r.1';
). . "'
t' \ .
... 3t-,
462 Ca.pitola 11
.::::..-_::::::c=:...:=-
- i ,F.l;';\'
,.. .. ,
"-'''''''j ,..", ,

Nel caso del Multibus I eprevista la linea CBRQ (Common Bus Request), con Nel caso del Mu1tibus I Parbitraggio esu base fissa. S?no possibili altre
8i informa il master corrente che vi $000 rich.ieste pendenti e che il bus cleve essere .per Ie specifiche del PCl al 130 .scel.ta .dell3:
rilasciato. . di arbltragglo, rendenda posslbile la realizzazlOne dl tecmche dl pnonta dmarmca 0
Alia fine del capitole viene ripertate il progetto della logica eli arbitraggio distri":_ sChemi round robin. . . . . , . d II' I
buito in daisy chain. )t. La parallelo ba 1l vantagglO della veloc.Ita e a-
... to numero dl lmee che devono essere portate at nsolutore eli pnonta centrahzzato.

.. , 11.3.3 Arbitraggio distribuito con schema parallelo
- '>_, ,..:i
I
",,1;,._
\,
- .. . . '" Questa modalita eadottata da diversi bus di usa industriale II, il NuBus,
tecmca.e nel bus EISA, nel e eprev1sta il Microchannel e Futurebus), poiche.consente numero .dI master, s.enza
Multlbus 1. di Sl fa propno riferunento ,al del Mul:lbus I. . . .. limitazioni di velocita della cham.. 51 basa.su eli un meccarusrno dl
Tutte Ie di veng?n? portate. all. arbltrol COt;ne .In autoselezione codificata
l
11 autonomamente, e
11.14
13
. decodifica la pnontA. delle e. la.1
inea
dl :onces- .. .. ,.in base al1a relativa priorita
l
CIrca 1'1dentIta dl chI dintto ad al
la scheda ovvero per da eill prOVlene la nchl.esta a' pill. alta ..... A ogni potenziale bus master eassegnato llWvocamente un codIce di pnonta.
dello scambIO In con 11 bus prevede un certo numero di linee di arbitrnggio. Queste
t? e a quella r.elatlva al caso da.:>y cham! rna con la differet.J-za .pilotate da dis positivi con uscita a collettore aperto. UUZ13
SI deve la linea: BREQ anzlche lla linea BPR? tempoQzzazlOne 81 tiJ{[\' .. ogni eompetitore immette il suo codice attraverso la di suI ?US dl
pub fare riferunento alla Figura 11.13, con 1accortezza dl sostItwre BRE a BPRO. arbitraggio. La logica di ogni competitore "sente" i livelli wired-or nsultantl sulle
. linee del bus! e modifica il numero che sta immettendo secondo 1a seguente regola:
''';r.,
HIGHEST LO'JEST;' .. di d , ., d I duJ 1 . d t I' d'
PRIORITY ' Se per bit del co ce I e ill? .?' a cornspo.n. e I
}::::;3; arbitragglO mostra un valore di pm alta pnonta, allora tuttI I bit dl mmor
, peso vengono ritirati dal bus.
... ..
\ " Ih .
' :. If, P. l!.i' '"
..... ..;:;., -j"
'.

" ., v;. .
", ". ""'", j
. \:,':
1,lf ''.,
-:,;,;z", _ ..
'., .\.... ,, .
."-.:.:..\." :r ..\._ .
.....
.':r.-<>;
"';"- ,,' ,
-' ;
'-'"YI';'

',',:'.. 'W1 , .. ,
- .
---
f-"",ii., 1if';-I' ':J .
-;....; .. :" , "
., .'
I ;'1J' .".;
/-')<".,*, .
': :;.\tl!{'.. ".,
. :" iY "'11."" ,,',

.
--a;.,:,"";:
,FfI
ti
l ..: ..
-",;<.,.l:f" .':-m....' , -

Figura 11.14 Schema delParbitraggio parallelo. 1. Anche in cas<> pre-
senti Ie linee BCLK, BUSY. Per semplicita
l
tall linee non $ODO state Del _...
Ogni modulo master ha una propria coppia eli linee eli richiesta (BREQ) e di concesslOne ..
(
BPRN). :I;1fJ. M! :.
...... "" a;>
,-

;_ .. ..
).-
,/"l
'. ! ",1:1'" : Il;y'
UL'arbitro di Figura 11.14 si realizza facilmente attraverso due dispositivi conunerdali, il "
(prioritll encoder) e it 74138 (decoder), connessi in cascata.. . \;11{ t
_, <,.0; ,"
.::.:;
,.;;<,"" "-",
_... .,/:-:" ,
.. .
.,' .
\
I
I
\
l
\
(
\
)
]
\
I
, \

I \
I
-, I
463 Bus eli sistema
14Lo schema. di Figura. 11.15 eadotta.to dal Futurebus, dove pero Ie !inee di arbitraggio sono 8.
dopo un periodo di assestamento
l
i1 modulo con piu alta priorita trova che il suo coelice
. risulta uguale alJa configurazione assunta da! bus, e dunque il modulo in questione e
it vincitore della eontesa. '
In Figura 11.15 viene dato un possibile schema della logica di arbitraggio presente
su ciaseuna scheda
14
. 8i noti che ogni master possiede un suo codice di priorita fisso,
rna modificabile a piacimento da parte del sistemista. n eodiee 0000 da. 1a priorita. pili
alta, 10 nn la piiJ bassa.
. La logica del master richiede PUBO del bus attraverso la linea REQ, mentre la
concessione del bus viene notiJicala attraverso la linea GRANT. La linea ARB(GNT
. viene pilotata da un controllore centralizzato chiamato CACP (Central Arbitration
Control Point)! che gestisce Ie varie fasi di del bus. In particolare 1a
linea ein stato H nel corso di una fase di arbitraggio e in stato L durante Ie fasi di
uso del bus.
Per capire il funzionamento della logica di Figura 11.15! si corninei col considerare
il master avente coelice 1010 (HLHL) e si assuma cbe solo questo master stia asserendo
. .
la propria linea REQ. E facile convincer,i che 10 stato delle linee ARB3-ARBO assume
la configurazione 1010. Infatti, Ie uscite delle porte NAND riproducone esattamente
questa configurazione, mentre Ie uscite di tutte Ie altre schede collegate al bus, essendo
per esse 1a linea REQ disasserila, sarebhero tutte a 1. Poiche Ie linee ARB3-ARBO
sono a collettore aperto, la configurazione risultante e1010.
,US
ARBITER
I1o'oSTER B HASTER B
IF
STO
! C
l'.ASTE!l: D
IT
"'"
IT
"'"
IT
"'"
IT
"'"
JIlt:ll
"'" "'" "'"
Jt
,
I
, ,
, ,

, ,
6 6
7 7
,
.
,
Arbitraggio centralizzato con schema parallelo
11.3.2
, r.1';
). . "'
t' \ .
... 3t-,
462 Ca.pitola 11
.::::..-_::::::c=:...:=-
- i ,F.l;';\'
,.. .. ,
"-'''''''j ,..", ,

Nel caso del Multibus I eprevista la linea CBRQ (Common Bus Request), con Nel caso del Mu1tibus I Parbitraggio esu base fissa. S?no possibili altre
8i informa il master corrente che vi $000 rich.ieste pendenti e che il bus cleve essere .per Ie specifiche del PCl al 130 .scel.ta .dell3:
rilasciato. . di arbltragglo, rendenda posslbile la realizzazlOne dl tecmche dl pnonta dmarmca 0
Alia fine del capitole viene ripertate il progetto della logica eli arbitraggio distri":_ sChemi round robin. . . . . , . d II' I
buito in daisy chain. )t. La parallelo ba 1l vantagglO della veloc.Ita e a-
... to numero dl lmee che devono essere portate at nsolutore eli pnonta centrahzzato.

.. , 11.3.3 Arbitraggio distribuito con schema parallelo
- '>_, ,..:i
I
",,1;,._
\,
- .. . . '" Questa modalita eadottata da diversi bus di usa industriale II, il NuBus,
tecmca.e nel bus EISA, nel e eprev1sta il Microchannel e Futurebus), poiche.consente numero .dI master, s.enza
Multlbus 1. di Sl fa propno riferunento ,al del Mul:lbus I. . . .. limitazioni di velocita della cham.. 51 basa.su eli un meccarusrno dl
Tutte Ie di veng?n? portate. all. arbltrol COt;ne .In autoselezione codificata
l
11 autonomamente, e
11.14
13
. decodifica la pnontA. delle e. la.1
inea
dl :onces- .. .. ,.in base al1a relativa priorita
l
CIrca 1'1dentIta dl chI dintto ad al
la scheda ovvero per da eill prOVlene la nchl.esta a' pill. alta ..... A ogni potenziale bus master eassegnato llWvocamente un codIce di pnonta.
dello scambIO In con 11 bus prevede un certo numero di linee di arbitrnggio. Queste
t? e a quella r.elatlva al caso da.:>y cham! rna con la differet.J-za .pilotate da dis positivi con uscita a collettore aperto. UUZ13
SI deve la linea: BREQ anzlche lla linea BPR? tempoQzzazlOne 81 tiJ{[\' .. ogni eompetitore immette il suo codice attraverso la di suI ?US dl
pub fare riferunento alla Figura 11.13, con 1accortezza dl sostItwre BRE a BPRO. arbitraggio. La logica di ogni competitore "sente" i livelli wired-or nsultantl sulle
. linee del bus! e modifica il numero che sta immettendo secondo 1a seguente regola:
''';r.,
HIGHEST LO'JEST;' .. di d , ., d I duJ 1 . d t I' d'
PRIORITY ' Se per bit del co ce I e ill? .?' a cornspo.n. e I
}::::;3; arbitragglO mostra un valore di pm alta pnonta, allora tuttI I bit dl mmor
, peso vengono ritirati dal bus.
... ..
\ " Ih .
' :. If, P. l!.i' '"
..... ..;:;., -j"
'.

" ., v;. .
", ". ""'", j
. \:,':
1,lf ''.,
-:,;,;z", _ ..
'., .\.... ,, .
."-.:.:..\." :r ..\._ .
.....
.':r.-<>;
"';"- ,,' ,
-' ;
'-'"YI';'

',',:'.. 'W1 , .. ,
- .
---
f-"",ii., 1if';-I' ':J .
-;....; .. :" , "
., .'
I ;'1J' .".;
/-')<".,*, .
': :;.\tl!{'.. ".,
. :" iY "'11."" ,,',

.
--a;.,:,"";:
,FfI
ti
l ..: ..
-",;<.,.l:f" .':-m....' , -

Figura 11.14 Schema delParbitraggio parallelo. 1. Anche in cas<> pre-
senti Ie linee BCLK, BUSY. Per semplicita
l
tall linee non $ODO state Del _...
Ogni modulo master ha una propria coppia eli linee eli richiesta (BREQ) e di concesslOne ..
(
BPRN). :I;1fJ. M! :.
...... "" a;>
,-

;_ .. ..
).-
,/"l
'. ! ",1:1'" : Il;y'
UL'arbitro di Figura 11.14 si realizza facilmente attraverso due dispositivi conunerdali, il "
(prioritll encoder) e it 74138 (decoder), connessi in cascata.. . \;11{ t
_, <,.0; ,"
.::.:;
,.;;<,"" "-",
_... .,/:-:" ,
.. .
.,' .
\
I
I
\
l
\
(
\
)
]
\
I
, \

J
,
1'

I.
) .
1.
\
l
)
I.
,I
I '
I
)
I
1
ro.T
.. ... _.:-. __ . .,
C2 = REQ . (P(A3) > p(ARB3)) . (P(A2) > p(ARB2)),
CO=REQ (P(A3) > p(ARB3)) ... ,(p(AO) > p(ARBO)),

Il:I:Q ,
,

,
Il:EOAS
,
,
,
,
,
,
,

,
.-. __ ._-j
,

------r---
""
,.
L ___
_.
CACP
16Si noti che, essendo ARB3, ... ,ARBO a collettore aperto,la condizione di maggiore non e possibile.
Questa soluzione e adottata.nel VMEBus, dove e presente un controUore centralizzato
al quale arrivano quattro linee <Ii richiesta separate (BRO, .. ,BR3), ciascuna delle quali
,
opera in daisy chain. E previsto che Ie quattro linee possano essere gestire con priorita.

fissa 0 con priorita. rotante (round robin). E comunque possibile limitarsi aIlo schema
pili convenzionale, usando una sola linea di riChiesta
,
180 linea BR3.
In Figura 11.17 viene riportata la struttura deli'arbitraggio YMEBus.
n passaggio tra Ie 'differenti liste egestito da! controliore stesso, mentre il colle-
gamento daisy chain viene gestito all'interno della singola llsta. La linea nBSY e a
comune tra tutte Ie catene. Lo schema della singola daisy chain eriportato in Figura
11.18.
La linea BBSY viene utilizzata per sincronizzare 10 scambio del master. Nel pro-
tocollo VME, nessun modulo puo fare richieste se essa eassenta. In Figura 11.19 e
ARS/CNT
REO
'us

"'OJ
'"
rv
I C<lJ.)
"
...,
c>
"""
"
J
1
(OpOI\ Coil.)
j-
...,
e2
ARBI
"
It:
I
(Opon CglI.)
\.
"
e,
"-t
ARBO
I
(0,- ColI.)

A
Yeo
'-f
"J
Capitola 11
CRAW
HIE come se I'int-erfaccia si ritiro,ue dall'arbitraggio.
>,
.t
,"


:. .


}!.,.,.'I :,
.
.';;:".'
. Bus di sistema 465
.. .
._
, ,,,...' .
.
.. ';.!
," . .,

X3=p(A3) > p(ARB3).
.' '.
"-1<1. t,
81Hl'\!/Ovviamente C3=REQ X3=REQ (P(A3) > p(ARB3)).
Ragionando i.n modo analogo si ottiene

",

-, '''-: 'I'" -
'''.,. ':ro. ,. ,
',1. ,
I" .'
':' '. Infine
l
si ha
...".,



.
.. ' In altri quando finisce lafase di a:bitraggio, la linea risulta asserita
;.' solo se la pnonta espressa dalla configurazlOne A3, ... ,AO emagglore 0 uguale alIa stato
", del bus di arbitraggio16: dunque vince la contesa il master che ha' piu alta priorita..
In Figura 11.16 viene schematizzata la rete che genera il comando eli arQitraggio.
'91.1 t ".
"


,...... ;."' .. :'.
,fj'''' .
::1'<"-;
.\l;1,,:, "'lJ{,'"
,'iJ.- "
.
"['ill'";" ,"
ii t '.. ". ,
'I ..v' , ,
)J!" ..
"1)1''''''''
l .. ..,;\.
.. ,lo"'l,'''"
" 'j""f,'
.r ,.it
l
,.. _,'
11.15 di parallelo Ogni m,aster dotato
10g1Ca. m figura, 14 bIt A3-AO codificano 180 prlOrtta. d1 Cla.scun master. hnea REQ Vlene
asserita, dalJa logica del master quando intende il bus, Le !inee ARB3-AREO '.
it bus ?-i arbit.raggio. AR:B/GNT pilotata da un controllore, . ' . Figw:
a
richiesta di del bus a ARB/GNT..
centrallzzato. Essa differenzla 1a fase di arbitraggIO da quella eli usa. .:1. e la. generata lD modo aswcrono dalla logtca del genenco master; essa Vlene SlD-
it flip-flop O,.a c?mmutazione fronte di La. REQ resta
.. '; ; stabile fino a.l pro8SlIDo ronte e, qumdi, per tutta un'mtera fase di arbltraggtO e uso del bus.
8i supponga ora che an0e il avente codice 1001.faccia la richiesta di' ....fj! I
accesso al bus. Uuscita. sulla lInea ARB3 nsulta 1 1master, oltre che per
tutti gil altri master che non fanno richiesta (di cui ci disinteresseremo)j ne cODsegue ..
che la linea ARB3 risu1ta a 1. Per ragioni analoghe la linea ARB2 risulta a O. Invece, '" ..
per quanto concerne la linea ARB1, il master 1010 tenderebbe a portarla a 1, mentre 11..3..4 ArbltragglO centrahzzato con schema daISY chaIn
il master 1001 la porta a O. Ne risulta che 1a linea ARB1 assume stato O. A questa T[f ,
punto il master 1010 mette uno 0 m,mgresso alla porta NAND con usclta su ARBO e ',lr"' ,
alla porta NAND da cui e$ce il GRANT
15
. Come risult8oto la linea GRANT non potra. -:, 1
j

risultare asserita per questo master. Sul master 1001 invece c'e coincidenza anche con 7
180 linea ARBI. Ne consegue che 180 porta NAND con I'uscita su ARBO produce uno 0,
tenendo ARBO a questo livelio, e presentando tutti 1 alia porta NAND da cui esce il
GRANT. Fino ache 1a linea ARB/GNT si mantiene in stato 1 (fase di arbitraggio) ta .:t>
linea GRA,NT disasserit.a. Quand? finisce 180 di arbitraggi0l linea GRANT .
della sola con. codice 1001 nsulta .'; utJ:\f..;,.
I concettl precedent! possono essere formahzzatl nel modo seguente. Ii
Si indichi can p(x) la priorit" del segnale binario x (per assunzione p(O) >p(l)) ,',." ,'b::h:"
'f,''''';
e si osservi che X3 = 1 se A3 = 0, oppure se ARB3 = 1.
La precedente relazione pub easere espressa formalmente in questo modo: ."\:iJ'i{ .
.
;.;.'1'.'"
,.
. 'IS'f.., ." ..
, " ," ", .
" ,""".. ,
"!,. r"
",,, , .. ,
''''IJl't(:; ' ..
";'

464
J
,
1'

I.
) .
1.
\
l
)
I.
,I
I '
I
)
I
1
ro.T
.. ... _.:-. __ . .,
C2 = REQ . (P(A3) > p(ARB3)) . (P(A2) > p(ARB2)),
CO=REQ (P(A3) > p(ARB3)) ... ,(p(AO) > p(ARBO)),

Il:I:Q ,
,

,
Il:EOAS
,
,
,
,
,
,
,

,
.-. __ ._-j
,

------r---
""
,.
L ___
_.
CACP
16Si noti che, essendo ARB3, ... ,ARBO a collettore aperto,la condizione di maggiore non e possibile.
Questa soluzione e adottata.nel VMEBus, dove e presente un controUore centralizzato
al quale arrivano quattro linee <Ii richiesta separate (BRO, .. ,BR3), ciascuna delle quali
,
opera in daisy chain. E previsto che Ie quattro linee possano essere gestire con priorita.

fissa 0 con priorita. rotante (round robin). E comunque possibile limitarsi aIlo schema
pili convenzionale, usando una sola linea di riChiesta
,
180 linea BR3.
In Figura 11.17 viene riportata la struttura deli'arbitraggio YMEBus.
n passaggio tra Ie 'differenti liste egestito da! controliore stesso, mentre il colle-
gamento daisy chain viene gestito all'interno della singola llsta. La linea nBSY e a
comune tra tutte Ie catene. Lo schema della singola daisy chain eriportato in Figura
11.18.
La linea BBSY viene utilizzata per sincronizzare 10 scambio del master. Nel pro-
tocollo VME, nessun modulo puo fare richieste se essa eassenta. In Figura 11.19 e
ARS/CNT
REO
'us

"'OJ
'"
rv
I C<lJ.)
"
...,
c>
"""
"
J
1
(OpOI\ Coil.)
j-
...,
e2
ARBI
"
It:
I
(Opon CglI.)
\.
"
e,
"-t
ARBO
I
(0,- ColI.)

A
Yeo
'-f
"J
Capitola 11
CRAW
HIE come se I'int-erfaccia si ritiro,ue dall'arbitraggio.
>,
.t
,"


:. .


}!.,.,.'I :,
.
.';;:".'
. Bus di sistema 465
.. .
._
, ,,,...' .
.
.. ';.!
," . .,

X3=p(A3) > p(ARB3).
.' '.
"-1<1. t,
81Hl'\!/Ovviamente C3=REQ X3=REQ (P(A3) > p(ARB3)).
Ragionando i.n modo analogo si ottiene

",

-, '''-: 'I'" -
'''.,. ':ro. ,. ,
',1. ,
I" .'
':' '. Infine
l
si ha
...".,



.
.. ' In altri quando finisce lafase di a:bitraggio, la linea risulta asserita
;.' solo se la pnonta espressa dalla configurazlOne A3, ... ,AO emagglore 0 uguale alIa stato
", del bus di arbitraggio16: dunque vince la contesa il master che ha' piu alta priorita..
In Figura 11.16 viene schematizzata la rete che genera il comando eli arQitraggio.
'91.1 t ".
"


,...... ;."' .. :'.
,fj'''' .
::1'<"-;
.\l;1,,:, "'lJ{,'"
,'iJ.- "
.
"['ill'";" ,"
ii t '.. ". ,
'I ..v' , ,
)J!" ..
"1)1''''''''
l .. ..,;\.
.. ,lo"'l,'''"
" 'j""f,'
.r ,.it
l
,.. _,'
11.15 di parallelo Ogni m,aster dotato
10g1Ca. m figura, 14 bIt A3-AO codificano 180 prlOrtta. d1 Cla.scun master. hnea REQ Vlene
asserita, dalJa logica del master quando intende il bus, Le !inee ARB3-AREO '.
it bus ?-i arbit.raggio. AR:B/GNT pilotata da un controllore, . ' . Figw:
a
richiesta di del bus a ARB/GNT..
centrallzzato. Essa differenzla 1a fase di arbitraggIO da quella eli usa. .:1. e la. generata lD modo aswcrono dalla logtca del genenco master; essa Vlene SlD-
it flip-flop O,.a c?mmutazione fronte di La. REQ resta
.. '; ; stabile fino a.l pro8SlIDo ronte e, qumdi, per tutta un'mtera fase di arbltraggtO e uso del bus.
8i supponga ora che an0e il avente codice 1001.faccia la richiesta di' ....fj! I
accesso al bus. Uuscita. sulla lInea ARB3 nsulta 1 1master, oltre che per
tutti gil altri master che non fanno richiesta (di cui ci disinteresseremo)j ne cODsegue ..
che la linea ARB3 risu1ta a 1. Per ragioni analoghe la linea ARB2 risulta a O. Invece, '" ..
per quanto concerne la linea ARB1, il master 1010 tenderebbe a portarla a 1, mentre 11..3..4 ArbltragglO centrahzzato con schema daISY chaIn
il master 1001 la porta a O. Ne risulta che 1a linea ARB1 assume stato O. A questa T[f ,
punto il master 1010 mette uno 0 m,mgresso alla porta NAND con usclta su ARBO e ',lr"' ,
alla porta NAND da cui e$ce il GRANT
15
. Come risult8oto la linea GRANT non potra. -:, 1
j

risultare asserita per questo master. Sul master 1001 invece c'e coincidenza anche con 7
180 linea ARBI. Ne consegue che 180 porta NAND con I'uscita su ARBO produce uno 0,
tenendo ARBO a questo livelio, e presentando tutti 1 alia porta NAND da cui esce il
GRANT. Fino ache 1a linea ARB/GNT si mantiene in stato 1 (fase di arbitraggio) ta .:t>
linea GRA,NT disasserit.a. Quand? finisce 180 di arbitraggi0l linea GRANT .
della sola con. codice 1001 nsulta .'; utJ:\f..;,.
I concettl precedent! possono essere formahzzatl nel modo seguente. Ii
Si indichi can p(x) la priorit" del segnale binario x (per assunzione p(O) >p(l)) ,',." ,'b::h:"
'f,''''';
e si osservi che X3 = 1 se A3 = 0, oppure se ARB3 = 1.
La precedente relazione pub easere espressa formalmente in questo modo: ."\:iJ'i{ .
.
;.;.'1'.'"
,.
. 'IS'f.., ." ..
, " ," ", .
" ,""".. ,
"!,. r"
",,, , .. ,
''''IJl't(:; ' ..
";'

464
I (
I I
467
WASTER A
SUI. BUS'
Bus di sistema
AEN
BPRD
BUSYD
--71,1 .

TXRQ
BPRN
BUSYlN
170vviamente ie due linee devono essere collegate tra lora in modo da formare un'unica linea verso
l'esterno.
Le uscite sono:
1. AEN: linea di abilitazione per la logica del master.
2. BPRN: linea di daisy chaindi abilitazione della logica di interfaccia del master.
3. BUSYIN: ingresso ehe riporta 10 stato della linea eli bus BUSY.
Figura 11.20 Schema di ingressofuscita della rete di per l'arbitraggio distribuito in daisy
chain. Gli ingressi e le uscite sono stati rappresentati senza l'indicaziane di complementa,
ma si ricardi che essi sono tutti attivi bassi.
1. TXRQ: linea con cui la logica del master richiede Puso del bus. Una volta ac-
quisito
,
it.bus resta in uso a1 master fino al moment.o in cui TXRQ non viene
disasserito.
Poiche la logica di accesso al bus deve trattare la linea BUSY sia come segnale di
ingresso che come segnale di uscita, conviene denominare questa linea come BUSYIN
quando viene vista come ingresso e come BUSYO quando viene vista come uscita
11
.
In conclusione, si tratta di progettare la rete schernatizzata in Figura 11.20.
Gli ingressi sono:
MASTER A l.USTER B
ARIJlT. I SUL BUS i AR8ITRAG. i SUL BUS! ARaIT
-... I 1\1 1
8Rt"- : '
, " '
, 'I
- 'd: .... '-I
BBSY A
, I ' , , ' ,
PllotaU '!)I::
'de.i ,.:"
richi.. d.ntl BGIIN ! 1 I i !
'. . + + f-.. .+ + .
SGIOU1' I I A, Lf !
I iii I
{
" "
,I : I
Pilot.. to I, ,i
d.Uo BGilN .......: \1 1 I \fr I :
..rbltro .:, l I
' , . ,
1 : I 1
Figura 11.19 Temporizzazione per l'arbitraggio VME. n master A (priorita maggiore),
essendo 1a linea BBSY disasserita, richiede i1 bus a.l1'arbitro tramite BRi. L'arbitro, dopa
aver svolto l'arbitraggio secondo i propri criteri, abilita la daisy chain asserendo BGiIN. 11
master !!- piu alta priorita. prende il controllo del DTB (Data Transfer BU$ in terminologia.
VME), e asserisce 1a linea BBSY impedendo altre ric.h.ieste del bus. Al termine della sua
operazione (che comunque ha un limite di durata) rilascia EBSY provocando l'inizio di una
nuova Case ill arbitraggio.
,
-,
,-
Catene

:J
,---,
principio delParbitraggio VME. Sono previste 4 Iinee in daisy
,---,
ltione
noma
ldrobin
CONTROLLORE
Ga
ap
o rou
I
l"'lQ.ster 1
I I
J"IQ.ster 2
I I
l"'lQ.ster 3
I
ITXRa
GNTI
ITxRa
GNTI
ITXRa
GNTI
I I I I I I
IlGlIN
,
SGlIN BGiiN
I
BGIDUT
I I
BGIOUT
I I
BGJDUT
I
BGilN
CONTROllO
L_
-..J
L_
-..J
L_
..J
c-- t----'
f..--
-
BUS
BRI
BBSY
A titolo di esempio vieae ora svolte i1 progetto della logics. di arbitraggio per 10
schema in daisy chain distribuito. Faremo riferir;nento al madelIa di Figura 11.12, rna
con Pipotesi semplificativa che il master rilasci il bus solo quando ha terminato tutte
Ie sue operazioni di trasferimento dati. In altri termini, si assume che il bus viene
richiesto attraverso la linea TXRQ e rilasciato solo quando TXRQ viene disasserita,
Dal punto eli vista pratico, la linea CMND eli Figura 11.12 non ha piu motivo di
,esistere.
11.4 Esempio di progetto della logica di arbitraggio
distribuita in daisy chain
riportata la temporizzazione relativa a delle operazioni di scambio sul bus. Nell'esem-
pia il protocollo prevede che ognirrichiedente mantenga Is. linea di ricbiesta a.5serita
finch. non gli arriva il grant.
Figura 11.18 Singola daisy chain VME. BRi e la richiesta di uso del bus della catena iMma,
BOUN e180 linea eli concessione (Grant)' in ingresso alia generics interfa.ccia. Bulla. catena i
e BGiOUT e Is. linea. di concessione in uscita. dalla. generics. interfaccia. La. linea BBSY e
comune a tutte Ie catene.
Figura 11.17 Schema eli
chain.
466 Capitolo 11
I
)
l
I
I
!
\
l
I
, \
I (
\
I I
,

I (
I I
467
WASTER A
SUI. BUS'
Bus di sistema
AEN
BPRD
BUSYD
--71,1 .

TXRQ
BPRN
BUSYlN
170vviamente ie due linee devono essere collegate tra lora in modo da formare un'unica linea verso
l'esterno.
Le uscite sono:
1. AEN: linea di abilitazione per la logica del master.
2. BPRN: linea di daisy chaindi abilitazione della logica di interfaccia del master.
3. BUSYIN: ingresso ehe riporta 10 stato della linea eli bus BUSY.
Figura 11.20 Schema di ingressofuscita della rete di per l'arbitraggio distribuito in daisy
chain. Gli ingressi e le uscite sono stati rappresentati senza l'indicaziane di complementa,
ma si ricardi che essi sono tutti attivi bassi.
1. TXRQ: linea con cui la logica del master richiede Puso del bus. Una volta ac-
quisito
,
it.bus resta in uso a1 master fino al moment.o in cui TXRQ non viene
disasserito.
Poiche la logica di accesso al bus deve trattare la linea BUSY sia come segnale di
ingresso che come segnale di uscita, conviene denominare questa linea come BUSYIN
quando viene vista come ingresso e come BUSYO quando viene vista come uscita
11
.
In conclusione, si tratta di progettare la rete schernatizzata in Figura 11.20.
Gli ingressi sono:
MASTER A l.USTER B
ARIJlT. I SUL BUS i AR8ITRAG. i SUL BUS! ARaIT
-... I 1\1 1
8Rt"- : '
, " '
, 'I
- 'd: .... '-I
BBSY A
, I ' , , ' ,
PllotaU '!)I::
'de.i ,.:"
richi.. d.ntl BGIIN ! 1 I i !
'. . + + f-.. .+ + .
SGIOU1' I I A, Lf !
I iii I
{
" "
,I : I
Pilot.. to I, ,i
d.Uo BGilN .......: \1 1 I \fr I :
..rbltro .:, l I
' , . ,
1 : I 1
Figura 11.19 Temporizzazione per l'arbitraggio VME. n master A (priorita maggiore),
essendo 1a linea BBSY disasserita, richiede i1 bus a.l1'arbitro tramite BRi. L'arbitro, dopa
aver svolto l'arbitraggio secondo i propri criteri, abilita la daisy chain asserendo BGiIN. 11
master !!- piu alta priorita. prende il controllo del DTB (Data Transfer BU$ in terminologia.
VME), e asserisce 1a linea BBSY impedendo altre ric.h.ieste del bus. Al termine della sua
operazione (che comunque ha un limite di durata) rilascia EBSY provocando l'inizio di una
nuova Case ill arbitraggio.
,
-,
,-
Catene

:J
,---,
principio delParbitraggio VME. Sono previste 4 Iinee in daisy
,---,
ltione
noma
ldrobin
CONTROLLORE
Ga
ap
o rou
I
l"'lQ.ster 1
I I
J"IQ.ster 2
I I
l"'lQ.ster 3
I
ITXRa
GNTI
ITxRa
GNTI
ITXRa
GNTI
I I I I I I
IlGlIN
,
SGlIN BGiiN
I
BGIDUT
I I
BGIOUT
I I
BGJDUT
I
BGilN
CONTROllO
L_
-..J
L_
-..J
L_
..J
c-- t----'
f..--
-
BUS
BRI
BBSY
A titolo di esempio vieae ora svolte i1 progetto della logics. di arbitraggio per 10
schema in daisy chain distribuito. Faremo riferir;nento al madelIa di Figura 11.12, rna
con Pipotesi semplificativa che il master rilasci il bus solo quando ha terminato tutte
Ie sue operazioni di trasferimento dati. In altri termini, si assume che il bus viene
richiesto attraverso la linea TXRQ e rilasciato solo quando TXRQ viene disasserita,
Dal punto eli vista pratico, la linea CMND eli Figura 11.12 non ha piu motivo di
,esistere.
11.4 Esempio di progetto della logica di arbitraggio
distribuita in daisy chain
riportata la temporizzazione relativa a delle operazioni di scambio sul bus. Nell'esem-
pia il protocollo prevede che ognirrichiedente mantenga Is. linea di ricbiesta a.5serita
finch. non gli arriva il grant.
Figura 11.18 Singola daisy chain VME. BRi e la richiesta di uso del bus della catena iMma,
BOUN e180 linea eli concessione (Grant)' in ingresso alia generics interfa.ccia. Bulla. catena i
e BGiOUT e Is. linea. di concessione in uscita. dalla. generics. interfaccia. La. linea BBSY e
comune a tutte Ie catene.
Figura 11.17 Schema eli
chain.
466 Capitolo 11
I
)
l
I
I
!
\
l
I
, \
I (
\
I I
,

A: stato di riposo;
C: non abilitato in presenza di richiesta;
B: d.i attesa (di entrare in possesso del bus);

1.
I
I
!
l .
0-0
0-0
.-,
D c

............ 469
[R]
--
A
--
,X
0
-
X
-
>
X
'x
X X X
E
c

.. w, ow 0" ,-
,.,
".
" ,
&,111 e,1 \1 C,lll Con1 "'101 ....'01 D,l11 0,111
B, 111 E,010 C,lll 0.111
-
- - -
8,111 8,111 C,111 C,111
-
- - -
&,Ul 8,111 C,111 C,111 A,101 ....,01 0,'11 0,111
.." 1.010 1I!,o10 E,OIO A,10t .... '01 0,111 0,111
_ 00

Capitola 11 468

1.
I-
I-
I.
I
..,"
A: Ilbero
B: pronto
E: possesso
'"
A.l11
A, 111
0-,010
A, 111
'"
A,111
A, 101
'"
A, 101
A, 101
".
A10l
A,I \ 1
'"
A,111
E,utO
'"
"',111
E,010
A, 111
00'
E,OtO
B.111
E,010
..
000,111
SIan> fuIuro; "'EN. BPRO. eusyo
..........
E I E,OtO
B I B,111
Al 6,111
00-,111 ...1 J
10-,10 A .In\-111 B E
-',11 j
10111' ....
.-
--
o-.lllG
E
100,101

0lr,111
"01-,111
""",,01',111
A
1'-,111
I 0
A-.
B:pronlo
c: non dbllo bus r1c:hIeItD
,.....
11',11\
tt-,1
100,101
1().,101
'';::'' j-""- '- -'

D: non abilitato in assenza di richiesta;
E: stato di possesso del bus.

).

1-
I-
J
A: stato di riposo;
C: non abilitato in presenza di richiesta;
B: d.i attesa (di entrare in possesso del bus);

1.
I
I
!
l .
0-0
0-0
.-,
D c

............ 469
[R]
--
A
--
,X
0
-
X
-
>
X
'x
X X X
E
c

.. w,
ow 0" ,-
,.,
".
" ,
&,111 e,1 \1 C,lll Con1 "'101 ....'01
D,l11 0,111
B, 111 E,010 C,lll 0.111
-
- - -
8,111 8,111 C,111 C,111
-
- - -
&,Ul 8,111 C,111 C,111 A,101 ....,01
0,'11 0,111
.." 1.010 1I!,o10 E,OIO A,10t .... '01 0,111 0,111
_ 00

Capitola 11 468

1.
I-
I-
I.
I
..,"
A: Ilbero
B: pronto
E: possesso
'"
A.l11
A, 111
0-,010
A, 111
'"
A,111
A, 101
'"
A, 101
A, 101
".
A10l
A,I \ 1
'"
A,111
E,utO
'"
"',111
E,010
A, 111
00'
E,OtO
B.111
E,010
..
000,111
SIan> fuIuro; "'EN. BPRO. eusyo
..........
E I E,OtO
B I B,111
Al 6,111
00-,111 ...1 J
10-,10 A .In\-111 B E
-',11 j
10111' ....
.-
--
o-.lllG
E
100,101

0lr,111
"01-,111
""",,01',111
A
1'-,111
I 0
A-.
B:pronlo
c: non dbllo bus r1c:hIeItD
,.....
11',11\
tt-,1
100,101
1().,101
'';::'' j-""- '- -'

D: non abilitato in assenza di richiesta;
E: stato di possesso del bus.

).

1-
I-
J
TXRC.\
, VVVllllV
0< 0 0 'f 1
-
01 -
-,- -
11 0
o "
1
1 -
-I!-
-
.
Bus di sistem.a 471
BPRIN,BUSYIN
"
BPRO
TXRQ-o
~ V V I I I V
1,11ffl,
'1 Ii 1 1 ,1 1,
1 1 1
' 1 1'
C__ I-
-'
'-
BPRIN,BUSVIN
V1
TXRC.l
UUUI'IIV
,1
1 1
1 ,
1 ~
-
-
-,
1 1 1 1 1
-
- - -
BPRIN.8USYIN
"
IJVV1111V'
) 11 1 1 1
)11---
-"
11 0 0 0 0
I - - - -
V,
BPRIN,BUSYIN
,
YI Y:
AEN
(
Io.NVI'I'U
) ,1
1 1
1 ,
)1
' 1
1 1
1 '
--
"
11 0 0 0 0
1
- - - -
IJVVI II IU
J
,1
1 1
1 ,
)1
J
,
1
1 '
-"
11 0 0 0 0
1
-
-
- -
VI
TXRQ-O
BPRIN,BUSYIN
Yl V:
BPR1N.BUSYIN
a) un bus ad altissima velocita. per la comunicazione tra CPU e memorie, detto bus
host;
b) un bus di prestazioni intermedie per i <lispositivi ad alta velocit!>., talvolta deno-
minato bus locale;
V; = TXRQ (VI + BPRN)
AEN = V, +TXRQ
BPRO = BPRN +"'TXRVDQ"
, BUSYO = VI
18Da un punto di vista concettuale, la presenza di piu bus di diverse prestazioni non e assolutamente
una noviU.. Lo stesso Multibus I, introdotto negli anni settanta, doveva il suo nome al fatto che ess9
prevedeva oltre aJ bus di sistema, alcuni bus aggiuntivi. per Ie c08iddette espansioni. Per i1 Multibus
I la Intel produceva il controllore 8289.
11.5 Organizzazione dei moderni calcolatori
TXRQ..O BUSYO TXRQ.l
Figura 11.28 Mappe eli Karnaugh e sottocubi di copertura. delle uscite.
TXRQ.l
,
VV VI I I IV
0< 0 0 0 0
01
- -
- -
11 0 0 0 0
1C
- - - -
Qui AEN easlnCfOflO.
ndlHerenza
"""'. ,
-
.,
"
..
lO 00,101 00,1 D1 00,111 00,111
11
- -
-
-
11 00,100 00,100 00,110 00,110
10
- -
,
-
-
BPRIN,8USYIN BPRIN,BUSVIN
Yly}..00011110 Yl
o 1 1 0 0
011100
11 1 1 111
1 --
"
- -
A' 0 0
l:l 0 1
"'
1 1
8PRIN,BUSVlN
,
VVVIIIIV
0< 0 0 0 0
01
-
- -
-
11 0 0 0 0
1C
-
- -
""".,
V1
_,- ""'" OorV' "'''' "'" IU'" lUI 111,1 III
..
AIB.11tls.111 A,111 A,lll A,lOI A,lOllA.lll A,lll
1
B B
f
111 1=.111 A, 111 A,lll
- -
-
-
E E,OtO E,010 E,01O E,010
~ 1
A,loo A,l ,0
A, H'
\---
Y1' lXAQ-l lXAa-O Y2'
Mappe di Karnaugh e sottocubi eli copertura degli stati futuri.
1M N"8"
,
00
"' "
,"
10 01,111 01,111 00,111 00,111
11
01,111 11,111 00,111 00,111
11 ",010 11,010 11,010 11,010
'0
- -
-
-
"""'""
"
BPflIN,BUSYIN
Y2\,.VVVI 11 IV
0<0000
01 0 1 0 0
11 1 1 1 1
1f -
-
v,
I Stato I VI V, I
Qui AEN esillCfOI
con it clock
""""'"
lXIIQ,IlPI\lH,IUSYIN
Dalle mappe si ricava:
,
V, = TXRQ (V, +V, BPRN BUSYIN)
Figura 11.27
y1' yZ. AEN BPRO BUSYO
Figura 11.26 Tabella delle transi.2ioni minima.
aHa Quale corrisponde la tabella delle transizioni mostrata in Figura 11.26.. Mentre ie
Figure 11.27, 11.28 danno, rispettivamente, ie mappe degli stati futuri e delle uscite.
Stalo futuro; AEN, BPRO, BUSYQ
Figura 11.25 Tabella modificata
470 Capitola 11
\
\
1
I
1
I

I I
' I
\
I
I
)
j
I
1 \
I (

-
TXRC.\
, VVVllllV
0< 0 0 'f 1
-
01 -
-,- -
11 0
o "
1
1 -
-I!-
-
.
Bus di sistem.a 471
BPRIN,BUSYIN
"
BPRO
TXRQ-o
~ V V I I I V
1,11ffl,
'1 Ii 1 1 ,1 1,
1 1 1
' 1 1'
C__ I-
-'
'-
BPRIN,BUSVIN
V1
TXRC.l
UUUI'IIV
,1
1 1
1 ,
1 ~
-
-
-,
1 1 1 1 1
-
- - -
BPRIN.8USYIN
"
IJVV1111V'
) 11 1 1 1
)11---
-"
11 0 0 0 0
I - - - -
V,
BPRIN,BUSYIN
,
YI Y:
AEN
(
Io.NVI'I'U
) ,1
1 1
1 ,
)1
' 1
1 1
1 '
--
"
11 0 0 0 0
1
- - - -
IJVVI II IU
J
,1
1 1
1 ,
)1
J
,
1
1 '
-"
11 0 0 0 0
1
-
-
- -
VI
TXRQ-O
BPRIN,BUSYIN
Yl V:
BPR1N.BUSYIN
a) un bus ad altissima velocita. per la comunicazione tra CPU e memorie, detto bus
host;
b) un bus di prestazioni intermedie per i <lispositivi ad alta velocit!>., talvolta deno-
minato bus locale;
V; = TXRQ (VI + BPRN)
AEN = V, +TXRQ
BPRO = BPRN +"'TXRVDQ"
, BUSYO = VI
18Da un punto di vista concettuale, la presenza di piu bus di diverse prestazioni non e assolutamente
una noviU.. Lo stesso Multibus I, introdotto negli anni settanta, doveva il suo nome al fatto che ess9
prevedeva oltre aJ bus di sistema, alcuni bus aggiuntivi. per Ie c08iddette espansioni. Per i1 Multibus
I la Intel produceva il controllore 8289.
11.5 Organizzazione dei moderni calcolatori
TXRQ..O BUSYO TXRQ.l
Figura 11.28 Mappe eli Karnaugh e sottocubi di copertura. delle uscite.
TXRQ.l
,
VV VI I I IV
0< 0 0 0 0
01
- -
- -
11 0 0 0 0
1C
- - - -
Qui AEN easlnCfOflO.
ndlHerenza
"""'. ,
-
.,
"
..
lO 00,101 00,1 D1 00,111 00,111
11
- -
-
-
11 00,100 00,100 00,110 00,110
10
- -
,
-
-
BPRIN,8USYIN BPRIN,BUSVIN
Yly}..00011110 Yl
o 1 1 0 0
011100
11 1 1 111
1 --
"
- -
A' 0 0
l:l 0 1
"'
1 1
8PRIN,BUSVlN
,
VVVIIIIV
0< 0 0 0 0
01
-
- -
-
11 0 0 0 0
1C
-
- -
""".,
V1
_,- ""'" OorV' "'''' "'" IU'" lUI 111,1 III
..
AIB.11tls.111 A,111 A,lll A,lOI A,lOllA.lll A,lll
1
B B
f
111 1=.111 A, 111 A,lll
- -
-
-
E E,OtO E,010 E,01O E,010
~ 1
A,loo A,l ,0
A, H'
\---
Y1' lXAQ-l lXAa-O Y2'
Mappe di Karnaugh e sottocubi eli copertura degli stati futuri.
1M N"8"
,
00
"' "
,"
10 01,111 01,111 00,111 00,111
11
01,111 11,111 00,111 00,111
11 ",010 11,010 11,010 11,010
'0
- -
-
-
"""'""
"
BPflIN,BUSYIN
Y2\,.VVVI 11 IV
0<0000
01 0 1 0 0
11 1 1 1 1
1f -
-
v,
I Stato I VI V, I
Qui AEN esillCfOI
con it clock
""""'"
lXIIQ,IlPI\lH,IUSYIN
Dalle mappe si ricava:
,
V, = TXRQ (V, +V, BPRN BUSYIN)
Figura 11.27
y1' yZ. AEN BPRO BUSYO
Figura 11.26 Tabella delle transi.2ioni minima.
aHa Quale corrisponde la tabella delle transizioni mostrata in Figura 11.26.. Mentre ie
Figure 11.27, 11.28 danno, rispettivamente, ie mappe degli stati futuri e delle uscite.
Stalo futuro; AEN, BPRO, BUSYQ
Figura 11.25 Tabella modificata
470 Capitola 11
\
\
1
I
1
I

I I
' I
\
I
I
)
j
I
1 \
I (

-
c) bus per Ie periferiche piu lente, detto bus di espansione.
. Al ruolo di bus eli espansione estato relegato i1 bus di sistema precedentemente
vista; in particolare nel mando dei Personal ComputerI il bus di espansione eormai
praticamente svolto solo cial bus !SA. I bus EISA e MeA, per non parlare Dyviamente
del bus PC, sana pratioamente scomparsi.
Come bus locale si e affermato 10 standard PCI, il bus introdotto nel 1994 da
Intel e ormaj. impiegato anche in altt:e fasee di mercato.
n bus host invece non estato aneora standardizzato, in quanta esso eforte'mente
influenzato daUe caratteristiche della CPU e delle memorie, che, come sappiamo, sono
in continua evoluzione.
n vantaggio d.:i a,vere d.egli standard per quanta si riferisce all'impiego dei per
iferici eevidente, anche se pure in questa campo l'evoluzione non ha certo trovato
it suo punto di arrivo, si pensi per esempio all'introduzione del cosiddetto bus USB
(Universal Synchronous Bus), divenuto in pochi anni immancabile su qualunque PC.
II fatto perb che il bus host sia fortemente legato aHa CPU (frequenza del suo bus
esterno, grade di parallelismo, presenza 0 meno di cache di secondo Iivello integrata)
ha motivato 1a produzione di integrati d.i appoggio, per la gestione del bus host e per
il suo interfacciamento agli altn bus di sistema. In pratica, l'immissione d.i una nUQva
CPU comporta anche l'irnmissione eli un nuovo Chipset per la gestione dei bus. A ben
vedere, se si Mtrae dalle enormi differenze in termini eli prestazioni e funzionalita, il
chipset svolge un Iuala del tutto analogo a queUo del controllore 8288 richiesto dal1a
CPU 8086 (si veda il Capitolo dedioato alI'architettura Intel).
ntermine Chipset eun marchio di fabbrica registrato dalla soeieta Chips e Tech-
nologies che, anticipando tutti, gia ne! 1985 - epoca 386 - produceva un gruppo di
integrati il cui impiego facilitava 1a costruzione del sistema, in quanto Ssi si assume-
vano i1 compito di collante tra la CPU e Ie principali parti componenti. Per motivi
-
-
\ -
!-
\ -
L
-
1-
I
I >
I -
-
,
r -
-
I-
-
\
I -
-
\
I -
-
1-
1
1


640''''''
30 '""'"
,.molo 2
..."...
30 Immfe
.."",...
32011240
. 10 'rames
la teleconferenza
Bus di sistema 473
doaJmento 0
lNe colot (24 bit)
1024xl2SO
10 immls
SCHERMO VIDEO
08
/
DEl
\
08
Finestra documento. E 1a porzione maggiore dello schermo ed. edestinata a vi-
sualizzare it documento in discussiane. Questa puo essere eli pill pa.gi.ne e richiede
di essere sfogUato.. Si suppone che l'immagine sia di 1024x1280 pixel, can risa-
luzione di 16 milioni di colori (3 byte per pixel), per una dimeMione complessiva
di 3.932.160 byte. Inoltre si suppone che per emulare 10 sfogliamento si debbano
presentare 10 immagini at secondo, con cio ottenendo un tasso d.i trasferimento
verso la finestra principale di 39.321.600 byte/so
19Non 5i considera la presenza di eventuali processori grafici.
La valutazione del carico imposto dalla teleconferenza (in tennini di byte trasfe-
riti) puo essere valutando il tasso di trasferimento per il video
19
e queUo per
la trasmissione. Per il video si deve tener canto non solo della dimensione e del nu-
mero di c010ri dell'jmmagine, ma anche della frequenza di aggiornameIito. Si possono
fare te seguenti considerazioni.
Figura 11.30 Teleconferenza con tre partecipanti collega.ti in rete. Si suppone che it video
abbia definizione di 1664 x 1280 punti (pixel). L'area del video eriparlita in finestre, di cui
una contiene il documento in esame in forma chiara, due da.nno Jlirilmagine che proviene
dalle altre due macchine e una quarta serve per l'a.nteprima.
UN TXRQ
r---
--------------------)
I
I
I
,
,
,
,
,
,
I
,
)-D ,
Y,
-.J
)-
I '"

r
Y,
BPRO
,
,
I
RIM
'"
I ,
:
L
I
I
,

o.c.
,
D
Y
2
I-i{
,
,
v"
,
,
I
,
BUSYIN SUSYQ
1._---_.:._-----
--------------
-----
________.J
BUS
a,,'
BP
Capitola 11
Figura 11.29 Rete risultante.
472
c) bus per Ie periferiche piu lente, detto bus di espansione.
. Al ruolo di bus eli espansione estato relegato i1 bus di sistema precedentemente
vista; in particolare nel mando dei Personal ComputerI il bus di espansione eormai
praticamente svolto solo cial bus !SA. I bus EISA e MeA, per non parlare Dyviamente
del bus PC, sana pratioamente scomparsi.
Come bus locale si e affermato 10 standard PCI, il bus introdotto nel 1994 da
Intel e ormaj. impiegato anche in altt:e fasee di mercato.
n bus host invece non estato aneora standardizzato, in quanta esso eforte'mente
influenzato daUe caratteristiche della CPU e delle memorie, che, come sappiamo, sono
in continua evoluzione.
n vantaggio d.:i a,vere d.egli standard per quanta si riferisce all'impiego dei per
iferici eevidente, anche se pure in questa campo l'evoluzione non ha certo trovato
it suo punto di arrivo, si pensi per esempio all'introduzione del cosiddetto bus USB
(Universal Synchronous Bus), divenuto in pochi anni immancabile su qualunque PC.
II fatto perb che il bus host sia fortemente legato aHa CPU (frequenza del suo bus
esterno, grade di parallelismo, presenza 0 meno di cache di secondo Iivello integrata)
ha motivato 1a produzione di integrati d.i appoggio, per la gestione del bus host e per
il suo interfacciamento agli altn bus di sistema. In pratica, l'immissione d.i una nUQva
CPU comporta anche l'irnmissione eli un nuovo Chipset per la gestione dei bus. A ben
vedere, se si Mtrae dalle enormi differenze in termini eli prestazioni e funzionalita, il
chipset svolge un Iuala del tutto analogo a queUo del controllore 8288 richiesto dal1a
CPU 8086 (si veda il Capitolo dedioato alI'architettura Intel).
ntermine Chipset eun marchio di fabbrica registrato dalla soeieta Chips e Tech-
nologies che, anticipando tutti, gia ne! 1985 - epoca 386 - produceva un gruppo di
integrati il cui impiego facilitava 1a costruzione del sistema, in quanto Ssi si assume-
vano i1 compito di collante tra la CPU e Ie principali parti componenti. Per motivi
-
-
\ -
!-
\ -
L
-
1-
I
I >
I -
-
,
r -
-
I-
-
\
I -
-
\
I -
-
1-
1
1


640''''''
30 '""'"
,.molo 2
..."...
30 Immfe
.."",...
32011240
. 10 'rames
la teleconferenza
Bus di sistema 473
doaJmento 0
lNe colot (24 bit)
1024xl2SO
10 immls
SCHERMO VIDEO
08
/
DEl
\
08
Finestra documento. E 1a porzione maggiore dello schermo ed. edestinata a vi-
sualizzare it documento in discussiane. Questa puo essere eli pill pa.gi.ne e richiede
di essere sfogUato.. Si suppone che l'immagine sia di 1024x1280 pixel, can risa-
luzione di 16 milioni di colori (3 byte per pixel), per una dimeMione complessiva
di 3.932.160 byte. Inoltre si suppone che per emulare 10 sfogliamento si debbano
presentare 10 immagini at secondo, con cio ottenendo un tasso d.i trasferimento
verso la finestra principale di 39.321.600 byte/so
19Non 5i considera la presenza di eventuali processori grafici.
La valutazione del carico imposto dalla teleconferenza (in tennini di byte trasfe-
riti) puo essere valutando il tasso di trasferimento per il video
19
e queUo per
la trasmissione. Per il video si deve tener canto non solo della dimensione e del nu-
mero di c010ri dell'jmmagine, ma anche della frequenza di aggiornameIito. Si possono
fare te seguenti considerazioni.
Figura 11.30 Teleconferenza con tre partecipanti collega.ti in rete. Si suppone che it video
abbia definizione di 1664 x 1280 punti (pixel). L'area del video eriparlita in finestre, di cui
una contiene il documento in esame in forma chiara, due da.nno Jlirilmagine che proviene
dalle altre due macchine e una quarta serve per l'a.nteprima.
UN TXRQ
r---
--------------------)
I
I
I
,
,
,
,
,
,
I
,
)-D ,
Y,
-.J
)-
I '"

r
Y,
BPRO
,
,
I
RIM
'"
I ,
:
L
I
I
,

o.c.
,
D
Y
2
I-i{
,
,
v"
,
,
I
,
BUSYIN SUSYQ
1._---_.:._-----
--------------
-----
________.J
BUS
a,,'
BP
Capitola 11
Figura 11.29 Rete risultante.
472
I \
, , \
\
-
..
,
I
Processore 1
Processore 2
1__ ...
., _. -
t.
Bus Host
t
Bus AGP
Memoria
North Bridge
Princlpale
Q
$Iot PCI
IDE
USB
South Bridge
$lot ISA

Bios
Bus ISA
La serie per 130 classe Pentium ha 1a sigla 430. nprimo chipset della serie ~ il 430FX,
denominato anebe Triton; l'ultimo eil modeDo 430TX.
Il 430TX estato introdotto nel gennaio del 1997 assieme al Pentium MMX.
Esso vantava caratteristiche al1'avanguardia, corne la modalit'a, di trasferimento Ultra
DMA/33 e la gestione delle memorie SDRAM; presentava anebe perb numerosi limiti
e) la modalita EIDE: Ultra DMA/33 e 66, corrispondenti rispettivamente alia velo-
cita di trasferimento di 33 e 66 MByte/s.
d) la gestione del bus AGP;
Bus di sistema 475

Qui di seguito verra data una descrizione di due chipset Intel, uno per la classe
Pentium e uno per la classe Pentium III. .
11.5.2 Chipset per la classe Pentium
Figura 11.31 Architettura di un PC corrente. n Northbridge interfaccia 130 CPU con la
memoria. centrale, con I'eventuale cache dl secondo liveDo e con il bus PCI. U Northbridge
integra. il controllore AGP (Accelerated Graphics Port), in grade eli mettere in collegamento
diretto la memoria centrale con il processore grafico, alleggerendo del relativo tra.ffi.co gli altri
bus del sistema. II Southbridge coHega. il bus PCI con il bus ISA. Per questa motivo talvolta
HSouthbridge viene denominato bridge PCI-ISA. Esso integra i.l controllore EWE (Enhanced
Integrated Device Electronics), ovvero J'interfaccia per il disco rigido, e l'interfaccia seriale
USB (Universal Serial Bus).
In Figurall.31 viene data una schematizz.a.zione dell'organizzazione di un modemo
PC. I due bloccbi denoruinati Northbridge e in Southbridge costituiscono il chipset.
Gli elementi intemi ai componenti il chipset possono variare 'a seconda dei co-
struttori.e della classe di CPU a cui si riferiscono. Per esempio, il Northbridge per Ie
CPU Pentium integrava il controllore della cache di secondo livello, cbe invece non e
presente nel Northbridge per Ie CPU eli classe Pentium H/III, essendo queste dotate
del controllore in questione.
Nel valutare un chipset, gli aspetti cia tenere in considerazione sonG:
a) il tipo eli processori impiegabili e la possibilita eli instalJare direttamente piu CPU
sul bus host;
b) la frequenza del bus host: 66, 100, 133 a 200 MHz;
c) Ja dimensione massima eli memoria gestita e il suo tipo (EDO; SDRAM ecc,);
DATI SUL BUS TASSO Dr TRASFERIM. (MBytes/s)
flDestra documeoto 39,2
finestra anteprima 2,3
finestra collegamento remoto 1 9,2
finestra collegameoto remota 2 9,2
Busso compresso anteprima 0,2
Busso compresso collegamento remoto 1 0,2
Russo compresso colle amento remote 2 0,2
tasso . t ~ erimento tot e ri .esto 60,5
11.5.1 II chipset
Finestre di collegamento remoto. Due ulteriori parziani del video sono destinate
aile jrnmagini in movimento degli altri due partecipanti, ognuna di 640x4BO pixel
a 256 colori, aggiornate a 30 frame per secondo, per un totale eli 9.216.000 byte/so
Si supponga infine che Ie tIe jromagini anteprima, remote 1 e remota 2 vengano
inviate regolarmente agli altri PC, dopa averle opportunamente compresse in modo cia
ridurre a 200 KBytejs il tasso di trasmissione. Per fare questa devono essere compresse
da una scheda opportuna e poi inviate verso una scheda per Ia trasmissione.
Senza tenere conto dell'eventuale traffico dovuto all'esecuzione delle istruzioni, il
bus dovrebbe avere una capacita da permettere almeno il trasferimento di un fiusso
dati pari alla somma complessiva, come riportato ip. tabella.
Si confrenti il date risultante con Ie prestazioni dei bus per PC di Tabella 11.1:
tutti i bus di sistema sono ben lontani da questa livello di prestazioni.
Fin"estro anteprima. Porzione di video utilizzata per visualizzaxe in tempo reale
una jmmagine ripresa tramite una telecamera locale. Si ipotizza una risoluzione
eli 320x240 pixel con 256 colori (1 byte per pixel), Per rendere il senso del
movimento, occarre una velocita di aggiornamento di 30 immagini a1 secondo. Si
quineli una velocita complessiva eli trasferimeoto di 2,3 MByte al secondo.
474 Capitolo 11
\
I
I
I
I

: I I
I'

,I
I

I I
I )

,
I \
, , \
\
-
..
,
I
Processore 1
Processore 2
1__ ...
., _. -
t.
Bus Host
t
Bus AGP
Memoria
North Bridge
Princlpale
Q
$Iot PCI
IDE
USB
South Bridge
$lot ISA

Bios
Bus ISA
La serie per 130 classe Pentium ha 1a sigla 430. nprimo chipset della serie ~ il 430FX,
denominato anebe Triton; l'ultimo eil modeDo 430TX.
Il 430TX estato introdotto nel gennaio del 1997 assieme al Pentium MMX.
Esso vantava caratteristiche al1'avanguardia, corne la modalit'a, di trasferimento Ultra
DMA/33 e la gestione delle memorie SDRAM; presentava anebe perb numerosi limiti
e) la modalita EIDE: Ultra DMA/33 e 66, corrispondenti rispettivamente alia velo-
cita di trasferimento di 33 e 66 MByte/s.
d) la gestione del bus AGP;
Bus di sistema 475

Qui di seguito verra data una descrizione di due chipset Intel, uno per la classe
Pentium e uno per la classe Pentium III. .
11.5.2 Chipset per la classe Pentium
Figura 11.31 Architettura di un PC corrente. n Northbridge interfaccia 130 CPU con la
memoria. centrale, con I'eventuale cache dl secondo liveDo e con il bus PCI. U Northbridge
integra. il controllore AGP (Accelerated Graphics Port), in grade eli mettere in collegamento
diretto la memoria centrale con il processore grafico, alleggerendo del relativo tra.ffi.co gli altri
bus del sistema. II Southbridge coHega. il bus PCI con il bus ISA. Per questa motivo talvolta
HSouthbridge viene denominato bridge PCI-ISA. Esso integra i.l controllore EWE (Enhanced
Integrated Device Electronics), ovvero J'interfaccia per il disco rigido, e l'interfaccia seriale
USB (Universal Serial Bus).
In Figurall.31 viene data una schematizz.a.zione dell'organizzazione di un modemo
PC. I due bloccbi denoruinati Northbridge e in Southbridge costituiscono il chipset.
Gli elementi intemi ai componenti il chipset possono variare 'a seconda dei co-
struttori.e della classe di CPU a cui si riferiscono. Per esempio, il Northbridge per Ie
CPU Pentium integrava il controllore della cache di secondo livello, cbe invece non e
presente nel Northbridge per Ie CPU eli classe Pentium H/III, essendo queste dotate
del controllore in questione.
Nel valutare un chipset, gli aspetti cia tenere in considerazione sonG:
a) il tipo eli processori impiegabili e la possibilita eli instalJare direttamente piu CPU
sul bus host;
b) la frequenza del bus host: 66, 100, 133 a 200 MHz;
c) Ja dimensione massima eli memoria gestita e il suo tipo (EDO; SDRAM ecc,);
DATI SUL BUS TASSO Dr TRASFERIM. (MBytes/s)
flDestra documeoto 39,2
finestra anteprima 2,3
finestra collegamento remoto 1 9,2
finestra collegameoto remota 2 9,2
Busso compresso anteprima 0,2
Busso compresso collegamento remoto 1 0,2
Russo compresso colle amento remote 2 0,2
tasso . t ~ erimento tot e ri .esto 60,5
11.5.1 II chipset
Finestre di collegamento remoto. Due ulteriori parziani del video sono destinate
aile jrnmagini in movimento degli altri due partecipanti, ognuna di 640x4BO pixel
a 256 colori, aggiornate a 30 frame per secondo, per un totale eli 9.216.000 byte/so
Si supponga infine che Ie tIe jromagini anteprima, remote 1 e remota 2 vengano
inviate regolarmente agli altri PC, dopa averle opportunamente compresse in modo cia
ridurre a 200 KBytejs il tasso di trasmissione. Per fare questa devono essere compresse
da una scheda opportuna e poi inviate verso una scheda per Ia trasmissione.
Senza tenere conto dell'eventuale traffico dovuto all'esecuzione delle istruzioni, il
bus dovrebbe avere una capacita da permettere almeno il trasferimento di un fiusso
dati pari alla somma complessiva, come riportato ip. tabella.
Si confrenti il date risultante con Ie prestazioni dei bus per PC di Tabella 11.1:
tutti i bus di sistema sono ben lontani da questa livello di prestazioni.
Fin"estro anteprima. Porzione di video utilizzata per visualizzaxe in tempo reale
una jmmagine ripresa tramite una telecamera locale. Si ipotizza una risoluzione
eli 320x240 pixel con 256 colori (1 byte per pixel), Per rendere il senso del
movimento, occarre una velocita di aggiornamento di 30 immagini a1 secondo. Si
quineli una velocita complessiva eli trasferimeoto di 2,3 MByte al secondo.
474 Capitolo 11
\
I
I
I
I

: I I
I'

,I
I

I I
I )

,
476 Capitolo 11
Figura 11.32 Organizzazione di un sistema basato su 43OTX.
t ""
Bua pC! 13043 MI\2;) ..
-

,
,
J
)
)
I
j
I
I
I .
I
i
I
I
I
I
J
l
I
l
I
PENTIUM III
....
"'"'
Metner'f COlima.
t1lrnori1o
.tXAGP
MCH
-
graftoo
(Norl;hbridge)
.0<
'."'0
..
Bus PCI
'OE
-
I
2 portl USB
82801M
'-'"
I/O Controller Hub
(0pD0nllIe)
"'",....
ICH
I
(Souttlbridge)
Ta5ll.1lI,

Sllper I/O
.....
FWH
Figura 11.33 Organizzazione di un sistema con CPU Pentium In e chipset 820. Si noti
che l'interfacciamento tra e Southbridge non e pi'll tramite il bus PCI, ma
per mezzo di una connessione dedicata a 8 bit e avente una banda (266 Mbyte/s), doppia
rispetto at PCl. 0 controllore di quest'ultimo estato trasferito in lOH, lasciando a MeR
solo Ie connessioni ad alta velocita..
Bus di sistema 477
La serie piu evoluta della Intel (alia data di scrittura eli queste pagine) , nata per
lavorare con i processori Pentium III, ela serie 800_ I dispositivi sono passati da due
a tre.
La serie BOO prevede-infatti tre componenti: MeR (Memory Controller- Hub),
ICR (I/O Controller Hub) e FWR (Firmware Hub), conness; come rappresentato
in Figura 11.33. ICH e FWH rimangono sostanzialmente invariati in tutta la serie
800, wversamente dall'MCH nel quale compai"ono differenze sign.i.6.cative da
a modello.
11.5.3 Chipset per la classe Pentium III
... ...
. -
82348T

M_

x

Prlnclpele
(MTXC)
(ORAM)
IDE Ull.. OMA.
I
.. __ t -
t t t t
EJ a IAUOIO I ISTAMPANTE I
MTXC lavora con tutte Ie CPU della farniglia Pentium e interfaccia il bus host
della CPU can il Bus delle DRAM (entrambi a 64 bit), con II bus PCI a 32 bit e coo
la cache di secondo Hvello; ha inoItre al suo interno la logica per gestire l'arbitraggio
del bus pel. n PIIX.4 provvede l'intenaccia tra i bus PCl eISA, l'interfacciamento
verso Ie peruericbe IDE (in modaliti>. Ultra DMA/33), oltre cbe alla gestione delle
perifericbe USB_
20Secondo Ie caratteristiche tecniche fornite dal C08truttore, il bus host poteva funzionare solo a
frequenze di 60 e 66 MHz, il che tagliava fuori quei processori cbe funzionavano con clock a 50, 55 e
75 MHz; .questo si erivelato esser un viDCOlo solo teorico, poiche Delle applicaziODi pratiche queste
frequenze eraDO utilizzabili.
I Mo" I
1
M"
Bu. Ho.t (1IG-68 MI11;)
.. .. t
.. "
eacn. ucol"do nveno
progettuali, tra i quali la eacheable area massima di 64 Mbyte e la possibilita eli
installare un quantitativo massimo di memoria pari a 256 Mbyte
20

to schema. in Figurall.32 mostra l'impiego de1430TX. Come si vede esso si com-


pone dei due integrati denominat; 82439TX (System Controller MTXC) e 82371AB
(PC! ISA IDE Xcelerator PIIX4)_
476 Capitolo 11
Figura 11.32 Organizzazione di un sistema basato su 43OTX.
t ""
Bua pC! 13043 MI\2;) ..
-

,
,
J
)
)
I
j
I
I
I .
I
i
I
I
I
I
J
l
I
l
I
PENTIUM III
....
"'"'
Metner'f COlima.
t1lrnori1o
.tXAGP
MCH
-
graftoo
(Norl;hbridge)
.0<
'."'0
..
Bus PCI
'OE
-
I
2 portl USB
82801M
'-'"
I/O Controller Hub
(0pD0nllIe)
"'",....
ICH
I
(Souttlbridge)
Ta5ll.1lI,

Sllper I/O
.....
FWH
Figura 11.33 Organizzazione di un sistema con CPU Pentium In e chipset 820. Si noti
che l'interfacciamento tra e Southbridge non e pi'll tramite il bus PCI, ma
per mezzo di una connessione dedicata a 8 bit e avente una banda (266 Mbyte/s), doppia
rispetto at PCl. 0 controllore di quest'ultimo estato trasferito in lOH, lasciando a MeR
solo Ie connessioni ad alta velocita..
Bus di sistema 477
La serie piu evoluta della Intel (alia data di scrittura eli queste pagine) , nata per
lavorare con i processori Pentium III, ela serie 800_ I dispositivi sono passati da due
a tre.
La serie BOO prevede-infatti tre componenti: MeR (Memory Controller- Hub),
ICR (I/O Controller Hub) e FWR (Firmware Hub), conness; come rappresentato
in Figura 11.33. ICH e FWH rimangono sostanzialmente invariati in tutta la serie
800, wversamente dall'MCH nel quale compai"ono differenze sign.i.6.cative da
a modello.
11.5.3 Chipset per la classe Pentium III
... ...
. -
82348T

M_

x

Prlnclpele
(MTXC)
(ORAM)
IDE Ull.. OMA.
I
.. __ t -
t t t t
EJ a IAUOIO I ISTAMPANTE I
MTXC lavora con tutte Ie CPU della farniglia Pentium e interfaccia il bus host
della CPU can il Bus delle DRAM (entrambi a 64 bit), con II bus PCI a 32 bit e coo
la cache di secondo Hvello; ha inoItre al suo interno la logica per gestire l'arbitraggio
del bus pel. n PIIX.4 provvede l'intenaccia tra i bus PCl eISA, l'interfacciamento
verso Ie peruericbe IDE (in modaliti>. Ultra DMA/33), oltre cbe alla gestione delle
perifericbe USB_
20Secondo Ie caratteristiche tecniche fornite dal C08truttore, il bus host poteva funzionare solo a
frequenze di 60 e 66 MHz, il che tagliava fuori quei processori cbe funzionavano con clock a 50, 55 e
75 MHz; .questo si erivelato esser un viDCOlo solo teorico, poiche Delle applicaziODi pratiche queste
frequenze eraDO utilizzabili.
I Mo" I
1
M"
Bu. Ho.t (1IG-68 MI11;)
.. .. t
.. "
eacn. ucol"do nveno
progettuali, tra i quali la eacheable area massima di 64 Mbyte e la possibilita eli
installare un quantitativo massimo di memoria pari a 256 Mbyte
20

to schema. in Figurall.32 mostra l'impiego de1430TX. Come si vede esso si com-


pone dei due integrati denominat; 82439TX (System Controller MTXC) e 82371AB
(PC! ISA IDE Xcelerator PIIX4)_
Bus di sistema. 419
deriva dal bus' sviluppato dalla Shugart A.&sociat.ea - it primo c08tnlttore di floppy
denominato SASI (Shugart Auociate8 System Interface) edivenuto in breve tempo uno standard
industriale de facto. Quando ,I bus venne adottato (praticamente invariato) come standard ANSI,
fu ritenuto opportuno ca.mbiargli il nome.
25Nella discussione che segue iI termine "dispositivo SCSI" 0 piu sempLicemente "dispositivo".
viene usato per denotare un controJlore 0 un ada.ttatore SCSI; da. nou confondere con un dispositivo
di I/O che invece viene chiamato "periferico".
caso di singolo host si a.rriva. a. un totaJe teorico di oitre 14.000 periferiche coUega.bili (7 x
8 x 256).
Solitamente un dispositivo SCSI funge da iniziatore a da obiettivo, rna esistono
apparecchiature in grade di ricoprire ambedue i ruoli. Sui bus devono sempre es-
sere callegati almena un iniziatore e un obiettivo, ma, come mostra la Figura 11.34,
possono ancbe esserci piiI iniziatori e/o obiettivi.
n bus SCSI permette di collegare fino a 8 dispositivi. Apparentemente si tratta
di un numero estremamente limitato. Tuttavia ogni controllore SCSI puo avere fino
a 8 unitd logiche, e ognuna di queste puo avere 256 sotto'Unita logiche, per un totale
di 2048 sottounita per singol0 dispositiv0
26
...
ntrasferimento di informazioni sulle linee dati easincrono e segue un protocollo di
,
tipo hand-shake REQ/ ACKj in un singolo delo viene trasferito un byte. E comunque
prevista 1a possibilita. di trasferimenti sincroni dei dati.
11.6.1 Principi di funzionamento
Lo standard SCSI [Gla90a], [Gla90b] permette il collegamento di periCerici eli diffe-
rente natura, quail dischi, nastri magnetici, stampanti ecc., per i quali, ovviarnente,
erichiesta un'interfaccia conforme.
In un date istante Ia cemunicazione suI bus econsentita a due soli dispositivi
'Obiettivo: eil dispositivo che esegue l'operazione (il trasferimento dati) dopo essere
entrato in cantrallo del bus.
Hvello di sicurezza nelle applicazioni di crittografia, a vantaggio di tutti quei campi,
come il commercia elettronico, che richiedono un alto livello di sicurezza.
Il bus SCSI (Small Computer System Interface) eun bus di I/O parallelo, di basso
costa e molto fiessibile". Dalla data della sua standardizzazione (1984), sono state
proposte versioni successive del bus. La descrizione che segue fa sostanzialmente
riferimento alIa versione SCSI-I.
11.6 II bus SCSI
FWH FWH iDtegra 4 a 8 Mbit (a seconda del modello del chip) di memoria non
volatile, destiDati a ospitare il BIOS del sistema. Sempre nel FWH e integrata
anche un'importante novita., un generatore hardware di owned casuali (RNG, Ran-
dom Number Generator). Sfruttando il rumore termico prodotto da un transistori e
possibile generare una sequenza di bit senza alcuna corre1azione tra loro, secondo un
perfetto principio eli casualita (diversamente dalla. pBeudo-casualita. ottenuta per via
algoritmica). A detta del costruttore cle cousente di aumentare significativarnente il
:n Questa chipset permette Quindi di montare memorie in tecnologia. DIMM 0 RAMBUS. Per dare
un'idea delle differenziazioni, sull'MCH della. sottoserie 840 !Iono pre!lenti due controllori di memoria.
RAMBUS.
Alla. data. di scrittura., 1a modalitA piil veloce disponibile per i dischi rigidi.
lao sene 430 questo integra.to era. interfa.ccia.to Bul bus ISA.
ICH lOB econnesso a MCH per mezzo d.i un apposito bus a 8 bit, funzionante a
133 MHz, nel Quale Ie opera.zioni vengoDo effettuate BU entrambi i fronti di clock, in
modo da raddoppiare la velocita del bus. Questa modo di operare, detto modalita
dappio fronte di clock, permette di ottenere un' ampiezza d.i banda. complessiva di 266
Mbyte al secondo. Questa e forse una delle Dovita pili importanti rispetto ai chipset
d.i generazione precedente (la serie 400), nei quali i1 controllore PCl era integrato nel
Nort4-bndge e il collegamento con il Southbridge avvfmiva per mezzo del bus PCl.
Avendo spostate il controllore PCl nell' lCH, questo bus viene alleggerito dei dati che
vengono scambiati fra i due elementi del chipset, consentendo un miglior sfruttamento
delle periferiebe collegate al PCl.
ICH gestisce i flu..i dei dati da e verso Ie periferiebe. n controllore PCI integrato
al suo interne permette di pilotare fino a sei dispositivij il controllore EIDE a due cana-
li ecapace di gestire fino a quattro unita secondo 10 standard Ultra DMA/66". Ven-
gono Coruite anebe due porte USB. Un'iDterfaccia particolare (LPC, Low Pin Count),
consente eli collegare tramite un integrato'denominato Super 1/0
23
periferiche come
la tastiera
J
il mouse
J
il dischetto e le porte seriali e parallele.
Da ICH escomparso il supporto per il bus !SA, ma estato previsto un iDtegrato
ausiliario collegato diretta.mente al bus PCl. Sono anche presenti i controllori di
ruzione, eli gestione del risparmio energetico e dei canali DMA. Infine, ICH ecollegato
il teno e ultilno componente del chipset, il Firmware Ht/.b.
,
MCH La. serie 800 si compone.di tre sottoserie di integrati, denominate 810, 820,
840. Qui viene fatto un breve accenno alia sottoserie 820, quella di prestazioni
intermedie.
n dispositivo MCH 820 (marcato come 82280) presenta un controllore AGP e un
controllore eli memoria. Quest'ultimo puo funzionare .3. differenti velocita di clock, a
seconda del tipo <Ii memoria instatiata parla di PC600, PC700 0 PC800 a ""conda
ebe Ie frequenze <Ii lavoro siano 600, 700 a 800 MHz). Nella configurazione a 800 MHz
I'ampiezza di banda assicurata datie memorie RAMBUS edi 1,6 GByte al secondo,
il doppio di quella ottenibile con Ie memorie PClOO (Ie c1assiche DlMM) , esse pure
gestibili dal dispositivo".
ncontrol1ore per l' AGP ein grado di assicurare un'ampiezza d.i banda superiore
al GByte.
478 Capitolo 11
\
)
I
I

' (
\
I I

\
)
I

1
I
I

Bus di sistema. 419


deriva dal bus' sviluppato dalla Shugart A.&sociat.ea - it primo c08tnlttore di floppy
denominato SASI (Shugart Auociate8 System Interface) edivenuto in breve tempo uno standard
industriale de facto. Quando ,I bus venne adottato (praticamente invariato) come standard ANSI,
fu ritenuto opportuno ca.mbiargli il nome.
25Nella discussione che segue iI termine "dispositivo SCSI" 0 piu sempLicemente "dispositivo".
viene usato per denotare un controJlore 0 un ada.ttatore SCSI; da. nou confondere con un dispositivo
di I/O che invece viene chiamato "periferico".
caso di singolo host si a.rriva. a. un totaJe teorico di oitre 14.000 periferiche coUega.bili (7 x
8 x 256).
Solitamente un dispositivo SCSI funge da iniziatore a da obiettivo, rna esistono
apparecchiature in grade di ricoprire ambedue i ruoli. Sui bus devono sempre es-
sere callegati almena un iniziatore e un obiettivo, ma, come mostra la Figura 11.34,
possono ancbe esserci piiI iniziatori e/o obiettivi.
n bus SCSI permette di collegare fino a 8 dispositivi. Apparentemente si tratta
di un numero estremamente limitato. Tuttavia ogni controllore SCSI puo avere fino
a 8 unitd logiche, e ognuna di queste puo avere 256 sotto'Unita logiche, per un totale
di 2048 sottounita per singol0 dispositiv0
26
...
ntrasferimento di informazioni sulle linee dati easincrono e segue un protocollo di
,
tipo hand-shake REQ/ ACKj in un singolo delo viene trasferito un byte. E comunque
prevista 1a possibilita. di trasferimenti sincroni dei dati.
11.6.1 Principi di funzionamento
Lo standard SCSI [Gla90a], [Gla90b] permette il collegamento di periCerici eli diffe-
rente natura, quail dischi, nastri magnetici, stampanti ecc., per i quali, ovviarnente,
erichiesta un'interfaccia conforme.
In un date istante Ia cemunicazione suI bus econsentita a due soli dispositivi
'Obiettivo: eil dispositivo che esegue l'operazione (il trasferimento dati) dopo essere
entrato in cantrallo del bus.
Hvello di sicurezza nelle applicazioni di crittografia, a vantaggio di tutti quei campi,
come il commercia elettronico, che richiedono un alto livello di sicurezza.
Il bus SCSI (Small Computer System Interface) eun bus di I/O parallelo, di basso
costa e molto fiessibile". Dalla data della sua standardizzazione (1984), sono state
proposte versioni successive del bus. La descrizione che segue fa sostanzialmente
riferimento alIa versione SCSI-I.
11.6 II bus SCSI
FWH FWH iDtegra 4 a 8 Mbit (a seconda del modello del chip) di memoria non
volatile, destiDati a ospitare il BIOS del sistema. Sempre nel FWH e integrata
anche un'importante novita., un generatore hardware di owned casuali (RNG, Ran-
dom Number Generator). Sfruttando il rumore termico prodotto da un transistori e
possibile generare una sequenza di bit senza alcuna corre1azione tra loro, secondo un
perfetto principio eli casualita (diversamente dalla. pBeudo-casualita. ottenuta per via
algoritmica). A detta del costruttore cle cousente di aumentare significativarnente il
:n Questa chipset permette Quindi di montare memorie in tecnologia. DIMM 0 RAMBUS. Per dare
un'idea delle differenziazioni, sull'MCH della. sottoserie 840 !Iono pre!lenti due controllori di memoria.
RAMBUS.
Alla. data. di scrittura., 1a modalitA piil veloce disponibile per i dischi rigidi.
lao sene 430 questo integra.to era. interfa.ccia.to Bul bus ISA.
ICH lOB econnesso a MCH per mezzo d.i un apposito bus a 8 bit, funzionante a
133 MHz, nel Quale Ie opera.zioni vengoDo effettuate BU entrambi i fronti di clock, in
modo da raddoppiare la velocita del bus. Questa modo di operare, detto modalita
dappio fronte di clock, permette di ottenere un' ampiezza d.i banda. complessiva di 266
Mbyte al secondo. Questa e forse una delle Dovita pili importanti rispetto ai chipset
d.i generazione precedente (la serie 400), nei quali i1 controllore PCl era integrato nel
Nort4-bndge e il collegamento con il Southbridge avvfmiva per mezzo del bus PCl.
Avendo spostate il controllore PCl nell' lCH, questo bus viene alleggerito dei dati che
vengono scambiati fra i due elementi del chipset, consentendo un miglior sfruttamento
delle periferiebe collegate al PCl.
ICH gestisce i flu..i dei dati da e verso Ie periferiebe. n controllore PCI integrato
al suo interne permette di pilotare fino a sei dispositivij il controllore EIDE a due cana-
li ecapace di gestire fino a quattro unita secondo 10 standard Ultra DMA/66". Ven-
gono Coruite anebe due porte USB. Un'iDterfaccia particolare (LPC, Low Pin Count),
consente eli collegare tramite un integrato'denominato Super 1/0
23
periferiche come
la tastiera
J
il mouse
J
il dischetto e le porte seriali e parallele.
Da ICH escomparso il supporto per il bus !SA, ma estato previsto un iDtegrato
ausiliario collegato diretta.mente al bus PCl. Sono anche presenti i controllori di
ruzione, eli gestione del risparmio energetico e dei canali DMA. Infine, ICH ecollegato
il teno e ultilno componente del chipset, il Firmware Ht/.b.
,
MCH La. serie 800 si compone.di tre sottoserie di integrati, denominate 810, 820,
840. Qui viene fatto un breve accenno alia sottoserie 820, quella di prestazioni
intermedie.
n dispositivo MCH 820 (marcato come 82280) presenta un controllore AGP e un
controllore eli memoria. Quest'ultimo puo funzionare .3. differenti velocita di clock, a
seconda del tipo <Ii memoria instatiata parla di PC600, PC700 0 PC800 a ""conda
ebe Ie frequenze <Ii lavoro siano 600, 700 a 800 MHz). Nella configurazione a 800 MHz
I'ampiezza di banda assicurata datie memorie RAMBUS edi 1,6 GByte al secondo,
il doppio di quella ottenibile con Ie memorie PClOO (Ie c1assiche DlMM) , esse pure
gestibili dal dispositivo".
ncontrol1ore per l' AGP ein grado di assicurare un'ampiezza d.i banda superiore
al GByte.
478 Capitolo 11
\
)
I
I

' (
\
I I

\
)
I

1
I
I

27 Nella terminologia SCSI, host echi comaoda I'esecuzione delle operazioni


,
generalmente la CPU.
-
J-

-
I
I -
-
1-
)
-
-
-
-
-
-
-
\ -
I
)-
)-
\
I -
1-
1-
J -
1-
I-
1-
481
Bus di sistema
(message) - Asserito dall'obiellivo duranle Ie fasi di Messaggio.
REQ (request) - Asserito dall'obiettivo per iniziare un trasferimento asinc.rono suI
bus, secondo 10 scbema di bandshake REQ/ACK.
MSG

\
",..,..

"!;i'"
I' .
I
'N ,:,'<'
-:.J:' "j
,. _.

$;:')- "
,'5r:y....
massa; nel secondo caso per ogni segnale sono necessari due conduttori, e il Uvello
,'.,,,' ..:t.':'; logico viene delerminato dalla differenza di polenziale che esisle Ira questi. n bus in
:"-:>" versione singola-terminazione non dovrebbe essere lungo pili di 6 metri, e dovrebbe
\', per dispositivi all'interno della stesso contenitore. Un bus
drfferenzlale, essendo pm schermato e dunque mena soggetto al rumore, puo essere
, :'. lunge fino a 25 metri e puo essere lisato per connettere dispositivi in differenti scatole.
s;'>:>:: "E prevista una linea chiamata DIFFSENS, presente solo nelle versioni differenziali,
. 'the permette ai dispositivi che ne 80no capaci di adattarsi all'una 0 all'altra confi-
'gurazione. Ovviamente La versione differenziale pili robusta e mene soggetta a
,:,..... .. :.'.,. f
. mter erenze_
nbus efisicamente un cavo piatto e
1
a causa delle frequenze in gioco
1
i conduttori
:. ," possono presentare cemportamenti irregolari, con fenomeni di riftessione del segna.le
e di disomogeneita del carico elettrico. Per minimizzare l'effetto di tutto cib si usano
terminatori di linea a.i due bus. Solitamente un terminatore 8i
della scatola che contlene il slsteto:al l'altr.o va connesso all1ultuna
/4i[# penfenca della catena. Nello standard epreVlsla una linea dl pOlenza (TERMPWR)
' che tensione aile reti resistive dei due terminatori.
: ( L'indirizzamento delle periferiche edi tipo logico fiaico. Cib permette, per
ft4';:5. esempio, a un di un disco SCSI, di. mappare i sellori danneggiali a livello
fac:ndo apparlre aI SIstema osplte il disco come una sequenza contmua dl
blocchl "buom" .
. - __." f .
'-'''", I' --",,1.;'" L' .-':.,:,
. ' .". e . '<'.
,"_';:.. .....

'h ...,;\.,-.: 11.6.2 I segnah SCSI
'.,:,:.;;.", ''1"',''.:''':"
'1:;
n bus SCSI molto semplice rispetto ad altri bus. Prevede infatti solamente 9 linee
per i dati (8 bit dati, indicate come DB(0) - DB(7) e un bit di parita
1
indicate come
... f!}:;:f' ,,: DB(P)) e 9 linee di controllo. Apparenterilente anche il prolocollo sul bus esemplice.
' La deriva ai dispositivi SCSI
,
che carico
della gestlOne del traffico sui bus, del perifencl e dell1accesso alia memona del sIStema.
.I segnali di controllo sana i seguenti:
.. BSY. - una 0 entrambe parti dura,nte una t.ra:nsazi.one
mdlcare che il bus e10 USO. La llOea del bus nsulta dal Wired-or del smgoh segnah
"":"'1't d tt' d . d' '1"
.. ':.i'l;' ::' pro 0 1 at tSpOSI IVl.
SEL. (select) - Asserito nelle fasi di Arbitraggio, Selezione e Riselezione da parte di
:)'{it&: ;.;'..{+.;;,: .: un iniziatore 0 di un obiettivo. Anche questa segnale ewired-or.
. ,." .
C/D (control/data) - Asserito dall'obiettivo. In stato alto indica che sulle linee dali
,.. ci sono informazioni di controllo, in stato basso indica che ci sono dati.
I/O (input/output) - Pilotato dall'obiettivo. Indica la direzione del Ir..ferimento
r;;:h:? relativamente all'iniziatore: asserito alto indica ingresse per l'iniziatore, asserito
. !'}:":.'" . basso indica uscita dall1iniziatore.
"''''',*' ,... / ....
."
.: ;"i'} ;;.'i: :-
':;",., .. ,
/ ..
': '''''01.; .;- l
.'1,'",.''' .', '.

.:("<>r ,.', ,
,< '. "
" ...\;1.(:,<",
,
,::."", ',
.:'" '>f,['
'. . ,','- :t.
0_",

(Ana a 2O'Ie portll,u1che


per control lore)
rlgldo
conlJoIlofe
SCSI
COfItmllore
SCSI
""' SCSI
adana!.
E]
' HOST "''''',.'' .

bus SCSI SCSI L.J
- adattat. !J-, controllorll
" SCSI
HOST
E]
HOST
controllo,e
i'! .... ('1
I
SCSI
b"
adatIal.
conlrollore

SCSI
HOST
contro/Iole

SCSI
adatlaL
Capitolo 11
(b) 5ingolo Iniziatore, Multipli bersagli
(a) 5ingolo Iniziatore, 5ingolo Bersaglio
La modalita eli funzionamento del bus permette l'esecuzione dei comandi in modo
parallelo da parte di differenti perifericbe. Di norma il dispositivo hOSt?7 trasmette
un comando al controllore della periferica selezionata, qUindi si sconnette dal bus
1
rendendolo disponibile per altre transazioni. La periferica, tramite il suo controllore
1
si rjconnette all'bost per concludere la transazione.
Dal punto di vista elettrico, il bus SCSI puc) assumere due diverse configura-
zioni: singola terminazione 0 differenziale. Nel primo caso it livello logico di ogni
segnate viene delerminato daUa lensione presenle su un singolo condullore riferita a
(cj Multipli Iniziatori, Multipli Bersagli
Figura 11.34 Schema connessioni SCSI. Nel caso (a) suI bus c'e un iniziatore (il sistema
host) e un obiettivo, al quale possono essere connessi una. moltitudine eli periferici. Nel caso
(b) c'e un solo iniziatore -e piu obiettivi, nel caso (c) si hanno due iniziatori e tre obiettivi.
Ai massimo suI bus SCSI possono essere collegati fino a 8 dispositivi (controllori SCSI 0
adattatori SCSI). Ovviamente i periferici devono essere compatibili con i controllori SeSt
480
27 Nella terminologia SCSI, host echi comaoda I'esecuzione delle operazioni
,
generalmente la CPU.
-
J-

-
I
I -
-
1-
)
-
-
-
-
-
-
-
\ -
I
)-
)-
\
I -
1-
1-
J -
1-
I-
1-
481
Bus di sistema
(message) - Asserito dall'obiellivo duranle Ie fasi di Messaggio.
REQ (request) - Asserito dall'obiettivo per iniziare un trasferimento asinc.rono suI
bus, secondo 10 scbema di bandshake REQ/ACK.
MSG

\
",..,..

"!;i'"
I' .
I
'N ,:,'<'
-:.J:' "j
,. _.

$;:')- "
,'5r:y....
massa; nel secondo caso per ogni segnale sono necessari due conduttori, e il Uvello
,'.,,,' ..:t.':'; logico viene delerminato dalla differenza di polenziale che esisle Ira questi. n bus in
:"-:>" versione singola-terminazione non dovrebbe essere lungo pili di 6 metri, e dovrebbe
\', per dispositivi all'interno della stesso contenitore. Un bus
drfferenzlale, essendo pm schermato e dunque mena soggetto al rumore, puo essere
, :'. lunge fino a 25 metri e puo essere lisato per connettere dispositivi in differenti scatole.
s;'>:>:: "E prevista una linea chiamata DIFFSENS, presente solo nelle versioni differenziali,
. 'the permette ai dispositivi che ne 80no capaci di adattarsi all'una 0 all'altra confi-
'gurazione. Ovviamente La versione differenziale pili robusta e mene soggetta a
,:,..... .. :.'.,. f
. mter erenze_
nbus efisicamente un cavo piatto e
1
a causa delle frequenze in gioco
1
i conduttori
:. ," possono presentare cemportamenti irregolari, con fenomeni di riftessione del segna.le
e di disomogeneita del carico elettrico. Per minimizzare l'effetto di tutto cib si usano
terminatori di linea a.i due bus. Solitamente un terminatore 8i
della scatola che contlene il slsteto:al l'altr.o va connesso all1ultuna
/4i[# penfenca della catena. Nello standard epreVlsla una linea dl pOlenza (TERMPWR)
' che tensione aile reti resistive dei due terminatori.
: ( L'indirizzamento delle periferiche edi tipo logico fiaico. Cib permette, per
ft4';:5. esempio, a un di un disco SCSI, di. mappare i sellori danneggiali a livello
fac:ndo apparlre aI SIstema osplte il disco come una sequenza contmua dl
blocchl "buom" .
. - __." f .
'-'''", I' --",,1.;'" L' .-':.,:,
. ' .". e . '<'.
,"_';:.. .....

'h ...,;\.,-.: 11.6.2 I segnah SCSI
'.,:,:.;;.", ''1"',''.:''':"
'1:;
n bus SCSI molto semplice rispetto ad altri bus. Prevede infatti solamente 9 linee
per i dati (8 bit dati, indicate come DB(0) - DB(7) e un bit di parita
1
indicate come
... f!}:;:f' ,,: DB(P)) e 9 linee di controllo. Apparenterilente anche il prolocollo sul bus esemplice.
' La deriva ai dispositivi SCSI
,
che carico
della gestlOne del traffico sui bus, del perifencl e dell1accesso alia memona del sIStema.
.I segnali di controllo sana i seguenti:
.. BSY. - una 0 entrambe parti dura,nte una t.ra:nsazi.one
mdlcare che il bus e10 USO. La llOea del bus nsulta dal Wired-or del smgoh segnah
"":"'1't d tt' d . d' '1"
.. ':.i'l;' ::' pro 0 1 at tSpOSI IVl.
SEL. (select) - Asserito nelle fasi di Arbitraggio, Selezione e Riselezione da parte di
:)'{it&: ;.;'..{+.;;,: .: un iniziatore 0 di un obiettivo. Anche questa segnale ewired-or.
. ,." .
C/D (control/data) - Asserito dall'obiettivo. In stato alto indica che sulle linee dali
,.. ci sono informazioni di controllo, in stato basso indica che ci sono dati.
I/O (input/output) - Pilotato dall'obiettivo. Indica la direzione del Ir..ferimento
r;;:h:? relativamente all'iniziatore: asserito alto indica ingresse per l'iniziatore, asserito
. !'}:":.'" . basso indica uscita dall1iniziatore.
"''''',*' ,... / ....
."
.: ;"i'} ;;.'i: :-
':;",., .. ,
/ ..
': '''''01.; .;- l
.'1,'",.''' .', '.

.:("<>r ,.', ,
,< '. "
" ...\;1.(:,<",
,
,::."", ',
.:'" '>f,['
'. . ,','- :t.
0_",

(Ana a 2O'Ie portll,u1che


per control lore)
rlgldo
conlJoIlofe
SCSI
COfItmllore
SCSI
""' SCSI
adana!.
E]
' HOST "''''',.'' .

bus SCSI SCSI L.J
- adattat. !J-, controllorll
" SCSI
HOST
E]
HOST
controllo,e
i'! .... ('1
I
SCSI
b"
adatIal.
conlrollore

SCSI
HOST
contro/Iole

SCSI
adatlaL
Capitolo 11
(b) 5ingolo Iniziatore, Multipli bersagli
(a) 5ingolo Iniziatore, 5ingolo Bersaglio
La modalita eli funzionamento del bus permette l'esecuzione dei comandi in modo
parallelo da parte di differenti perifericbe. Di norma il dispositivo hOSt?7 trasmette
un comando al controllore della periferica selezionata, qUindi si sconnette dal bus
1
rendendolo disponibile per altre transazioni. La periferica, tramite il suo controllore
1
si rjconnette all'bost per concludere la transazione.
Dal punto di vista elettrico, il bus SCSI puc) assumere due diverse configura-
zioni: singola terminazione 0 differenziale. Nel primo caso it livello logico di ogni
segnate viene delerminato daUa lensione presenle su un singolo condullore riferita a
(cj Multipli Iniziatori, Multipli Bersagli
Figura 11.34 Schema connessioni SCSI. Nel caso (a) suI bus c'e un iniziatore (il sistema
host) e un obiettivo, al quale possono essere connessi una. moltitudine eli periferici. Nel caso
(b) c'e un solo iniziatore -e piu obiettivi, nel caso (c) si hanno due iniziatori e tre obiettivi.
Ai massimo suI bus SCSI possono essere collegati fino a 8 dispositivi (controllori SCSI 0
adattatori SCSI). Ovviamente i periferici devono essere compatibili con i controllori SeSt
480
- :(
483
Bus di sistema
Acee,- -'
'iO
'esel
SELEZ10NE
I aUSU8ERQ ARB1TRAGGIO
RISELEZIONE
QYldslasl lase dl uMlerimell10 lr1fOl'maUlne:
COMANOO, DATI, STATO 0 MESSAGGJO
b) l'obiettivo che vede il proprio ill sul bus, con SEL asserito, con BSY disasserito
e I/O asserito basso, stabilisce di essere stato selezionato e asserisce BSy30;
a) l'iniziatore asserisce il proprio ill e quello dell'obiettivo suI bus; disasserisce
BSY e I/O (a indicare uscita dall'iniziatore) e si,pone in attesa della risposta.
dell'obiettivo;
4. Come corollario ai due precedenti punti, ogni dispositivo in arbitraggio si ritira
immediatarnente (disasserisce BSY e ill) se riconosce che SEL estato asserito
(da un altro dispositivo, ovviamente).
2. 'Dopo un arbitration delay il dispositivo esamjoa Ie linee dati: se e asserito un
ill di pii:l alta priorita. aHora disasserisce i propri BSY e ill. Vince la contesa il
dispositivo che alIa fine trova solo il proprio ID sul bUS
29
.
29Si Doti che, a. p;;u1:c i dettagli pratici, il meccanillffio equello deU'arbitraggio distribuito parallelo
(CIT. 11.3.3).
30L'obiettivo ein condizione di determinare l'identita dell'iniziatore.
I BUS LIBERa SELE2JONE I
lase di lra!ilerlmenlO intormaliolle:
COMANOO, DATI. STATOo I.1ESSAGGIO
28n bit di identificazione e anche detto indirizzo SCSI.
Fase di Arbitraggio Ba 10 scopo di assegnare a un dispositivo SCSI il controllo
del bus. D dispositivo che acquisisce il bus puo assumere il ruolo di iniziatore 0 di
obiettivo.
11.6.3 Fasi del bus
n bus ha 8 distinti stati detti fasi operative,
..


r ".,<.,
p,-
482 Capitola 11
'1I,Jt"!,::,, ",
'
.. '.

ACK (acknowledgement) - Asserito dall1iniziatore per /WXensioIlOOre$8t
famito dati in risposta a un segnale REQ.
.
ATN. - Asserito per far a:tto a un controllore che
il pnmo ha un messagglO a esso destInato. In nsposta 11 controllore puo aHora r,"M,
richiedere il messaggio attraverso una fase di Message (Out).
".11,_ "r"",
.
OQ'T' (reset) - Segna.le wired or. Puo essere pilotato qa qualunque dispositivQ. E - ..
in genere all'avvio 0 da un iniziatore quando jl dispositivo selezionat9 ". (a) Fasl SCSI senza arbllraggio (b) Fasl SCSI con aJbitraggio
nsponde. ,.,,'0,\1 . . eli del b SCSI L [ eli b' ., . -, ..
11.35 stato, US ,a ase ar 1 SIS-
teml con.un.5010 1,D1Zlatore poss?no rna. ecomunque nel che usa.no
,.130 fase ill Rise1ezlone. Sosta.nzla.lmente Cl sonG tre macrostatl: 10 stato dl Llbero, 10 stato
Arbitra-ggiojSelezione e quello di trasferimento del1'iuformazione, Un iniziatore pub svolgere
, solo Ie funzioni ill arbitraggio del bus e eli selezione di un particolare obiettivo, mentre un
obiettivo richiedere it d:i un c,omando, di dati, stato 0 di
<::' un Pub anche del bus e nselezlOnare un IDlzlatore, allo
1) Bus L
'b o' ,::":" ..,:,. scopo di contmuare un'operazlone sospesa ill precedenza,
1 er , ':.(\ll"" " .
2)
-b- .
ru: Itr:u:rVlO' , ,'. .... ..
-00" , :to'!>.",
. .',:,1 1;';" .......-'
3 SelezlOne' f I';,;' . .,,. .. . . . .
.. i 1. II acqUlsrre il _bUS che esso Sla libera (BSY dlSas-
5) Co d
' sento), qwndl assensce BSY e pone il propno ill Bul bUB.
man 0,
6) D
. ., ,
atl
' ,.) ",<,,.,,,,,,,,,
, "'.t"' "")' "
7) Statoj t "
)
.'
8 Messaggio. i' )i
Le ultime quattro BOno Ie [asi di trasferimento dell'informazione. n hus eBempre ;;fl i 3 n dis 't' h . 1 [ d- b't' . SEL
, , '_1: , "b' . . ,.' '!Iii' w:IjJ;'''''''' ;., pOSl IVO C e vmce a ase 1 ar 1 raggIo assensce .
alIo stat,o di BUB LI ,ero, e C,l ntorna dopo un Nella fase .dl Bus "
LIbera il segnale BSY non eassento, ndiagramma delle fasl di FIgura 11.35 illustra ,r'i11:(:"
1
'bili' t ., d' f cl ,. ".... , , ..
e POSSl raIlSIZI0ne 1 ase. ' "
Un puo .(a) (b) con primo
caso non Cl sana Ie fasl di Arbltraggto e dl RiselezlOne. Normalmente SI prefensce non .
I '''';''l'
avere arbitraggio nel case di un solo host e un solo controllore, in modo da velocizzare
Ie operazioni. '. . Fase di Selezione In questa fase un iniziatore seleziona un obiettivo allo scopo di
Per spiegare il funzionamento del bus e in particolare Ie fasi di arbitraggio e inizializzare una qualche funzione che il secondo dovra svolgere.
selezione, oecorre precisare che ogni dispositivo suI bus SCSI ha un suo identificativo In un sistema senza arbitraggio l'iniziatore seleziona l'obiettivo semplicemente
(ID), che entra in baUo durante queste fasi. Poiche i dispositivi possono essere a1 " asserendo il proprio ill e queUo dell'obiettivo che intende selezionare, e asserendo
massimo 8, e stata fatta la scelta pin ovvia: l'identificatore e da un bit, inoltre SEL. In un sistema con arbitraggio la fase di selezione inizia con BSY e SEL
ed etrasmesso/ricevuto su uno degli 8 bit delle linee dati. I dispositivi hanno tutti asseriti che ha vinto la contesa (vedi sopra). A quel
diferente prioritA: il piu prioritario equello identificato da DB(7), il menD
quello identifi""to da DB(O). Nelle [asi in cui dispositivo vuoleJarsi riconoscere deve ";1:;ri:.>
assenre (portare basso) il cornspondente bit delle linee del datl'B,
.. ..,.,.., .. ",
,,' I .. -"
;''1'' ,.".;
j;."<' I,
. 'M' ....;'1,.-
".'. -:;1" ,',
,r:;::'>1"1:,'
""0'1 "I,.
,-.....
" ,'.f . l.,\"i."
',:,<.7.
" " .. ,'
"', J' , "', "1",,..',
:',i .' ,
'-,""" ," '
... ,:.
,-,,'.. '
" '. " '. .
!fl' '; j:, .-
.. .,'l,,''';;'' ,. ,
!'"
-.-- ":';"b' ,I
, .;-," ,
t1,. . . ,
\
I
\
I
\ '
I
I
I
I!
I
I
I
I
I

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- :(
483
Bus di sistema
Acee,- -'
'iO
'esel
SELEZ10NE
I aUSU8ERQ ARB1TRAGGIO
RISELEZIONE
QYldslasl lase dl uMlerimell10 lr1fOl'maUlne:
COMANOO, DATI, STATO 0 MESSAGGJO
b) l'obiettivo che vede il proprio ill sul bus, con SEL asserito, con BSY disasserito
e I/O asserito basso, stabilisce di essere stato selezionato e asserisce BSy30;
a) l'iniziatore asserisce il proprio ill e quello dell'obiettivo suI bus; disasserisce
BSY e I/O (a indicare uscita dall'iniziatore) e si,pone in attesa della risposta.
dell'obiettivo;
4. Come corollario ai due precedenti punti, ogni dispositivo in arbitraggio si ritira
immediatarnente (disasserisce BSY e ill) se riconosce che SEL estato asserito
(da un altro dispositivo, ovviamente).
2. 'Dopo un arbitration delay il dispositivo esamjoa Ie linee dati: se e asserito un
ill di pii:l alta priorita. aHora disasserisce i propri BSY e ill. Vince la contesa il
dispositivo che alIa fine trova solo il proprio ID sul bUS
29
.
29Si Doti che, a. p;;u1:c i dettagli pratici, il meccanillffio equello deU'arbitraggio distribuito parallelo
(CIT. 11.3.3).
30L'obiettivo ein condizione di determinare l'identita dell'iniziatore.
I BUS LIBERa SELE2JONE I
lase di lra!ilerlmenlO intormaliolle:
COMANOO, DATI. STATOo I.1ESSAGGIO
28n bit di identificazione e anche detto indirizzo SCSI.
Fase di Arbitraggio Ba 10 scopo di assegnare a un dispositivo SCSI il controllo
del bus. D dispositivo che acquisisce il bus puo assumere il ruolo di iniziatore 0 di
obiettivo.
11.6.3 Fasi del bus
n bus ha 8 distinti stati detti fasi operative,
..


r ".,<.,
p,-
482 Capitola 11
'1I,Jt"!,::,, ",
'
.. '.

ACK (acknowledgement) - Asserito dall1iniziatore per /WXensioIlOOre$8t
famito dati in risposta a un segnale REQ.
.
ATN. - Asserito per far a:tto a un controllore che
il pnmo ha un messagglO a esso destInato. In nsposta 11 controllore puo aHora r,"M,
richiedere il messaggio attraverso una fase di Message (Out).
".11,_ "r"",
.
OQ'T' (reset) - Segna.le wired or. Puo essere pilotato qa qualunque dispositivQ. E - ..
in genere all'avvio 0 da un iniziatore quando jl dispositivo selezionat9 ". (a) Fasl SCSI senza arbllraggio (b) Fasl SCSI con aJbitraggio
nsponde. ,.,,'0,\1 . . eli del b SCSI L [ eli b' ., . -, ..
11.35 stato, US ,a ase ar 1 SIS-
teml con.un.5010 1,D1Zlatore poss?no rna. ecomunque nel che usa.no
,.130 fase ill Rise1ezlone. Sosta.nzla.lmente Cl sonG tre macrostatl: 10 stato dl Llbero, 10 stato
Arbitra-ggiojSelezione e quello di trasferimento del1'iuformazione, Un iniziatore pub svolgere
, solo Ie funzioni ill arbitraggio del bus e eli selezione di un particolare obiettivo, mentre un
obiettivo richiedere it d:i un c,omando, di dati, stato 0 di
<::' un Pub anche del bus e nselezlOnare un IDlzlatore, allo
1) Bus L
'b o' ,::":" ..,:,. scopo di contmuare un'operazlone sospesa ill precedenza,
1 er , ':.(\ll"" " .
2)
-b- .
ru: Itr:u:rVlO' , ,'. .... ..
-00" , :to'!>.",
. .',:,1 1;';" .......-'
3 SelezlOne' f I';,;' . .,,. .. . . . .
.. i 1. II acqUlsrre il _bUS che esso Sla libera (BSY dlSas-
5) Co d
' sento), qwndl assensce BSY e pone il propno ill Bul bUB.
man 0,
6) D
. ., ,
atl
' ,.) ",<,,.,,,,,,,,,
, "'.t"' "")' "
7) Statoj t "
)
.'
8 Messaggio. i' )i
Le ultime quattro BOno Ie [asi di trasferimento dell'informazione. n hus eBempre ;;fl i 3 n dis 't' h . 1 [ d- b't' . SEL
, , '_1: , "b' . . ,.' '!Iii' w:IjJ;'''''''' ;., pOSl IVO C e vmce a ase 1 ar 1 raggIo assensce .
alIo stat,o di BUB LI ,ero, e C,l ntorna dopo un Nella fase .dl Bus "
LIbera il segnale BSY non eassento, ndiagramma delle fasl di FIgura 11.35 illustra ,r'i11:(:"
1
'bili' t ., d' f cl ,. ".... , , ..
e POSSl raIlSIZI0ne 1 ase. ' "
Un puo .(a) (b) con primo
caso non Cl sana Ie fasl di Arbltraggto e dl RiselezlOne. Normalmente SI prefensce non .
I '''';''l'
avere arbitraggio nel case di un solo host e un solo controllore, in modo da velocizzare
Ie operazioni. '. . Fase di Selezione In questa fase un iniziatore seleziona un obiettivo allo scopo di
Per spiegare il funzionamento del bus e in particolare Ie fasi di arbitraggio e inizializzare una qualche funzione che il secondo dovra svolgere.
selezione, oecorre precisare che ogni dispositivo suI bus SCSI ha un suo identificativo In un sistema senza arbitraggio l'iniziatore seleziona l'obiettivo semplicemente
(ID), che entra in baUo durante queste fasi. Poiche i dispositivi possono essere a1 " asserendo il proprio ill e queUo dell'obiettivo che intende selezionare, e asserendo
massimo 8, e stata fatta la scelta pin ovvia: l'identificatore e da un bit, inoltre SEL. In un sistema con arbitraggio la fase di selezione inizia con BSY e SEL
ed etrasmesso/ricevuto su uno degli 8 bit delle linee dati. I dispositivi hanno tutti asseriti che ha vinto la contesa (vedi sopra). A quel
diferente prioritA: il piu prioritario equello identificato da DB(7), il menD
quello identifi""to da DB(O). Nelle [asi in cui dispositivo vuoleJarsi riconoscere deve ";1:;ri:.>
assenre (portare basso) il cornspondente bit delle linee del datl'B,
.. ..,.,.., .. ",
,,' I .. -"
;''1'' ,.".;
j;."<' I,
. 'M' ....;'1,.-
".'. -:;1" ,',
,r:;::'>1"1:,'
""0'1 "I,.
,-.....
" ,'.f . l.,\"i."
',:,<.7.
" " .. ,'
"', J' , "', "1",,..',
:',i .' ,
'-,""" ," '
... ,:.
,-,,'.. '
" '. " '. .
!fl' '; j:, .-
.. .,'l,,''';;'' ,. ,
!'"
-.-- ":';"b' ,I
, .;-," ,
t1,. . . ,
\
I
\
I
\ '
I
I
I
I!
I
I
I
I
I

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
I
J-
-

\
-

)-
\
I
!-
1.
f .
I-
I.
r .
I
1
Per meglio chiarire il funziona.mento SCSI descriviamo schematicamente il com-
plesso delle attivita. che si 8volgono nel sistema, prendendo per esempio un'operazione
di lellur. da disco,
31 La fase Dati e la fase Messa.ggio hanno due sottofasi, In e Out, definite attraverso Ie linee MSG,
C/O e I/O
32Tipici messaggi 130no Command Complete, con cui l'obiettivo indica all'iniziatore che ha finito di
eseguire un comando e Initiator Detected Error, con cui I'iniziatore segnala che ha rivelato un errore
di pariU. durante un trasferirnento dati.
..
.
'
.
,
484 Capitola 11 Bus di sistema 485
'...
,v.:",.
..", ,-:"
.;:,t."

c) }'iniziatore che vede tornare BSY asserito, disasserisce SEL e i bit delle linee dati I byte costituenti i messaggi di comandi e 1 messaggi dati possono e5Sere tras-
Alia fin . , .. . . .. feriti in m?do sincrono cbe . .Nel trasferimento asincr?oo usate il
b
'j e cil 1oble.ttlYO ha il completo cantralla del bus ed e respon- '.\t"Jr
o
: meccarusmo dt handshake traIDlte la coppla REQ/ACK. Quando 1 datl 51 muovono
sa 1e delle translZlOru di fase per il resto della Iransaz' _ .' . .
lone. " all'obiettiv?, quest'ultimo REQ quando e a
;:.. ". i datIl e 1'1IDzlatore assenBce ACK quando qUestl sono suI bus. L'oblettlvo dlSasSe-
Fase di La fa.:e di Riselezione ha questa scopo: un ohiettivo puo ,.' risce REQ dopa .aver. i d,ati. e eli cio.
di a iniziatore fine di continuare Pesecuzione di I' . Quando I 81 dall all la REQ l1l?ica
un (che nchiede pill. che eBtata In precedenza sospesa dall'obiettivo. l'oblettlvo ha poste I bus? mdlca che l101Zla:tore, Ii b.a memonzzatl.
La sospenslOne il bus aile stato Bus Libero e in questa fase . se e concor?ano, SI puo
potrebbe.ro esserBI lDBerltl altn disPOSltlVl. '. . .camsmo di handshake suddlVldendo il trasfenmento lD finestre teII!-porali. L'oblettlvo
. La nselezione especulaxe rispetto alla selezione, 1a differenza sta nel fatto ehe essa commuta REQ per ogni byte di dati e l'iniziatore deve commutare ACK 10 stesso
Vlene da un obiettivo verso un iniziatore. Anzitutto l'obiettivo cleve Durnero di voIte, anche se nessUllO dei due e vincolato aile transizioni del segnale
cere un La fase .di e.on BSY e SEL asseriti dall'obiettivo':. ;':' dell'altro n,conteggio alia fine cleve essere uguale. Si ha
che ha vmto la contesa (veeli la rase eli arbltraggw). A questo punta: un trasfe:unent,o di smerono 10gIco., . .
a l' i' '. - '. . . . . In una tranS3ZlOne sui bus SCSI, elOe una
) O? l'ID dell'mlzlatore sequenz3 di fast che InlZ13 e terouna con la rase Bus Libero.
(e iI propno) e assensce I/O alto (a melicare mgresso all,'miziatore);
)
P' .. '. ":,,,,. :'''' I I I I I I
a InlZlatore nconosce di essere state riselezionato e risponde asserendo BSY' ' BS I I I I I
. I y 1 t 1/ \1 I I I 1
. " ......,:;?
)
l' b' II- ed d BSY . . . .ijY,l;'(";. SEC I I 1 I I I, I
a o.Ie IVO v en 0 assento 10 nassensce (mantenendolo tale fino a ehe non _ I I \ I I I I I
declderZl.elirilasciareil bus), edisasseriBceSELj : ::' ? :::
,. . . . " . I/o: : :: ::
a) I ln1Zlatore vedendo SEL dlsa.ssento rilascla BSY. :.?:t-m: MSG I I I I t I I t j
, I 'L;i1t{t:\.,',', ' I I I j I I r ,
'.:.. REQ I I I I, / I \ M rt:"\-..J I
F . d' t . ...:;t 1 I I I t I! 11,__
aSl .. ACK: : : : u:' I . I
una o.pm dell mfor:naz1one:. Per non appeaantire 1a \\tM'::}'}" ATN i : i : 1 j : T f--ij--
spendlamo 11 rrununo di parole necessane a eaplrne 10 svolgimento per grandi '!inee ."''(;;ia, ' RST I I I I I I I I I II I I I !f-";IC--
Semall
- d t ' ,., "v, , I I I I I I I I " I I
, en rare ropP? n.el 1. . . . m: I A \ / I" I I 1 : I I :-
Ie ,fas.1 dell'mformazlOne, BSY emantenuto asserito ' \ : : CJ \J : U :
dalI oblettlvo. Loblettlvo I !/.O. per definire la faSe. .. ' BUS aERO I SEL.ZIONE I IMESSAGGtO IN
un trasfenmento di mformazlom lD1Z1a con una fase di Comando, .. " .. ...i ARBITRAGGIO COMANDC STATC
la. quale un comando dall'iniziatore. Nelle fasi Dati31 si ha" '. . . (... lpe-tI,J"'O) . ., .
I datI. Con la fase di Stato Pobiettivo invia all'iniziatore un FIgura 11.36 Una .transazlone SCSI. Potre?be lettura dati disco. da parte di
byte mdlcante il successo 0 il fallimento del comando Infine eUe f . M .', un host, La. transa.zIone presenta. una Case di Arbl,traggIO e una di SelezJone, CUI seguono Ie
viene un messaggio tra i due dispositivi32. . . , n as1 easagglO .' di Comando e. (In), che potre1;'bero ripetute pi? v?lte.
Una tlpica transazione SCSI consiste in una fed d ,.,. .. ti' 51 chmde con la trasmJSSlQne dello stato e il messaggIo finale che mdica all mmatore che
Dati seguitadaunafas eliSt'a.te d f M ase .om(an 0, a una sene ,::,:.,dt..' l'obiettivo ha terminate, A questo punto Hbus viene rilasciato e toma nelle state Libero
. .', '.e . e a una ase essaggIo durante la Quale l'obiettlvo (BSY disasserito).
11 obbligatorlo Complete). L'iniziatore pub indurre l'obiet-
a entrare In una (Out) e ad aecettare un messaggio, asserendo .
11 segnale ATN_, InRne, luwaalore puo anche comandare II Reset det bus tr.mite i1 ;_j",",.
segnale dl RST. .
. '';';''M " ") .., ,.
11.6.4 Un esempio di operazione suI bus SCSI
" .. ,. ,
.':/:1l!l'i;;.:i
'. """,. ,:L.:", '
. J.
: '!I'.;i1,.1 ,J' 'I .;.1
':"':..... .
'I .,..
',,"'.'i:f;i1;.-: ...


I
J-
-

\
-

)-
\
I
!-
1.
f .
I-
I.
r .
I
1
Per meglio chiarire il funziona.mento SCSI descriviamo schematicamente il com-
plesso delle attivita. che si 8volgono nel sistema, prendendo per esempio un'operazione
di lellur. da disco,
31 La fase Dati e la fase Messa.ggio hanno due sottofasi, In e Out, definite attraverso Ie linee MSG,
C/O e I/O
32Tipici messaggi 130no Command Complete, con cui l'obiettivo indica all'iniziatore che ha finito di
eseguire un comando e Initiator Detected Error, con cui I'iniziatore segnala che ha rivelato un errore
di pariU. durante un trasferirnento dati.
..
.
'
.
,
484 Capitola 11 Bus di sistema 485
'...
,v.:",.
..", ,-:"
.;:,t."

c) }'iniziatore che vede tornare BSY asserito, disasserisce SEL e i bit delle linee dati I byte costituenti i messaggi di comandi e 1 messaggi dati possono e5Sere tras-
Alia fin . , .. . . .. feriti in m?do sincrono cbe . .Nel trasferimento asincr?oo usate il
b
'j e cil 1oble.ttlYO ha il completo cantralla del bus ed e respon- '.\t"Jr
o
: meccarusmo dt handshake traIDlte la coppla REQ/ACK. Quando 1 datl 51 muovono
sa 1e delle translZlOru di fase per il resto della Iransaz' _ .' . .
lone. " all'obiettiv?, quest'ultimo REQ quando e a
;:.. ". i datIl e 1'1IDzlatore assenBce ACK quando qUestl sono suI bus. L'oblettlvo dlSasSe-
Fase di La fa.:e di Riselezione ha questa scopo: un ohiettivo puo ,.' risce REQ dopa .aver. i d,ati. e eli cio.
di a iniziatore fine di continuare Pesecuzione di I' . Quando I 81 dall all la REQ l1l?ica
un (che nchiede pill. che eBtata In precedenza sospesa dall'obiettivo. l'oblettlvo ha poste I bus? mdlca che l101Zla:tore, Ii b.a memonzzatl.
La sospenslOne il bus aile stato Bus Libero e in questa fase . se e concor?ano, SI puo
potrebbe.ro esserBI lDBerltl altn disPOSltlVl. '. . .camsmo di handshake suddlVldendo il trasfenmento lD finestre teII!-porali. L'oblettlvo
. La nselezione especulaxe rispetto alla selezione, 1a differenza sta nel fatto ehe essa commuta REQ per ogni byte di dati e l'iniziatore deve commutare ACK 10 stesso
Vlene da un obiettivo verso un iniziatore. Anzitutto l'obiettivo cleve Durnero di voIte, anche se nessUllO dei due e vincolato aile transizioni del segnale
cere un La fase .di e.on BSY e SEL asseriti dall'obiettivo':. ;':' dell'altro n,conteggio alia fine cleve essere uguale. Si ha
che ha vmto la contesa (veeli la rase eli arbltraggw). A questo punta: un trasfe:unent,o di smerono 10gIco., . .
a l' i' '. - '. . . . . In una tranS3ZlOne sui bus SCSI, elOe una
) O? l'ID dell'mlzlatore sequenz3 di fast che InlZ13 e terouna con la rase Bus Libero.
(e iI propno) e assensce I/O alto (a melicare mgresso all,'miziatore);
)
P' .. '. ":,,,,. :'''' I I I I I I
a InlZlatore nconosce di essere state riselezionato e risponde asserendo BSY' ' BS I I I I I
. I y 1 t 1/ \1 I I I 1
. " ......,:;?
)
l' b' II- ed d BSY . . . .ijY,l;'(";. SEC I I 1 I I I, I
a o.Ie IVO v en 0 assento 10 nassensce (mantenendolo tale fino a ehe non _ I I \ I I I I I
declderZl.elirilasciareil bus), edisasseriBceSELj : ::' ? :::
,. . . . " . I/o: : :: ::
a) I ln1Zlatore vedendo SEL dlsa.ssento rilascla BSY. :.?:t-m: MSG I I I I t I I t j
, I 'L;i1t{t:\.,',', ' I I I j I I r ,
'.:.. REQ I I I I, / I \ M rt:"\-..J I
F . d' t . ...:;t 1 I I I t I! 11,__
aSl .. ACK: : : : u:' I . I
una o.pm dell mfor:naz1one:. Per non appeaantire 1a \\tM'::}'}" ATN i : i : 1 j : T f--ij--
spendlamo 11 rrununo di parole necessane a eaplrne 10 svolgimento per grandi '!inee ."''(;;ia, ' RST I I I I I I I I I II I I I !f-";IC--
Semall
- d t ' ,., "v, , I I I I I I I I " I I
, en rare ropP? n.el 1. . . . m: I A \ / I" I I 1 : I I :-
Ie ,fas.1 dell'mformazlOne, BSY emantenuto asserito ' \ : : CJ \J : U :
dalI oblettlvo. Loblettlvo I !/.O. per definire la faSe. .. ' BUS aERO I SEL.ZIONE I IMESSAGGtO IN
un trasfenmento di mformazlom lD1Z1a con una fase di Comando, .. " .. ...i ARBITRAGGIO COMANDC STATC
la. quale un comando dall'iniziatore. Nelle fasi Dati31 si ha" '. . . (... lpe-tI,J"'O) . ., .
I datI. Con la fase di Stato Pobiettivo invia all'iniziatore un FIgura 11.36 Una .transazlone SCSI. Potre?be lettura dati disco. da parte di
byte mdlcante il successo 0 il fallimento del comando Infine eUe f . M .', un host, La. transa.zIone presenta. una Case di Arbl,traggIO e una di SelezJone, CUI seguono Ie
viene un messaggio tra i due dispositivi32. . . , n as1 easagglO .' di Comando e. (In), che potre1;'bero ripetute pi? v?lte.
Una tlpica transazione SCSI consiste in una fed d ,.,. .. ti' 51 chmde con la trasmJSSlQne dello stato e il messaggIo finale che mdica all mmatore che
Dati seguitadaunafas eliSt'a.te d f M ase .om(an 0, a una sene ,::,:.,dt..' l'obiettivo ha terminate, A questo punto Hbus viene rilasciato e toma nelle state Libero
. .', '.e . e a una ase essaggIo durante la Quale l'obiettlvo (BSY disasserito).
11 obbligatorlo Complete). L'iniziatore pub indurre l'obiet-
a entrare In una (Out) e ad aecettare un messaggio, asserendo .
11 segnale ATN_, InRne, luwaalore puo anche comandare II Reset det bus tr.mite i1 ;_j",",.
segnale dl RST. .
. '';';''M " ") .., ,.
11.6.4 Un esempio di operazione suI bus SCSI
" .. ,. ,
.':/:1l!l'i;;.:i
'. """,. ,:L.:", '
. J.
: '!I'.;i1,.1 ,J' 'I .;.1
':"':..... .
'I .,..
',,"'.'i:f;i1;.-: ...


-' l
' l
b) sebbene iniziatore e obiettivo siano disconnessi, essi sono ancora legati logi-
camente: entrambi i dispositivi sanno che hanno un comando da portare a
termine. Questo schema di funzionamento permette che diversi comandi di
I/O siano eseguiti nel sistema simultaneamente, utilizzando un singol0 bus
fisico. ncoUegamento logico non eira l'adattatore e il controllore del disco,
rna copre tutto il percorso fra la memoria del computer e la periferiCa ehe
sta eseguendo l'operazione.
b) it controllore si discoDllette da! bus SCSI e considera definitivamente chiuso
il collegamento logico COD l'iniziatorej
d) l'adattatore segnala al sistema la fine deU'esecuzione del comando di I/O con
Wl'interruzione oppure con un apposito indicatore che il programma dovra
esaminare. L'host ha a. disposizione in memoria i dati trasferiti. e l'esito
dell'operazione.
,
b) l'obiettivo trasferisce i dati nella memoria del sistema tramite l'iniziatore
sull'host (in. modalita DMA)j nel nostro case il trasferimento cessa quando
viene raggiunta la fine della traccia sul disco;
c) se si rivela necessario effettuare altri trasferimenti dati per completare l'ese-
cuzione del comando, l'obiettivo ripete i messaggi save data pointer e dis-
connect. Si Doti ehe il puntatore salvato a questa punto dall'adattatore e
aggiornato in base al Dumero dei byte ricevuti.
a) invio del byte di' state e del messaggio command complete da parte del
controllore; il rnessaggio viene interpretato dall'adattatore come segnale di
fine lavoro, mentre it byte di stato viene scritto direttamente nella memoria
deU'host,
Bus di sistema. 487
c) l'adattatore chiude il collegamento DMA con la memoria dell'host;
a) 5e at punto precedente c'era stata lila disconnessione, deve essere.-qstabilito
it collegamento fisico tra host e controllore. A tale scopo it controll0redeve-
vincere una fase di arbitraggio e passare per una fase di Riselezione;
a) il controllore del disco decodifiea il eomando e, poiche la lettura da disco
non e immediata, rende libero it bus per eventuali altri utilizzatori. La
proeedura di disconnessione prevede la trasmissione del messaggio di save
data pointer dall'obiettivo all'host. L'adattatore salva il puntatore ai dati.
Successivamente l'obiettivo trasmette il messaggio disconnect e disasserisce
il segnale BSY, liberando il bus;
7. Fine esecuzione cornando:
6. Esecuzione del comando:
Capitolo 11
a) Pobiettivo appena selezionato riehiede un comando dall'iniziatore. L'inizia-
tore risponde trasmettendo una sequenza di byte contenente l'indirizzo del
bloeco di comando
3
4.;
b) da questo punto l'attivita. di I/O econtrollata interamente dall'obiettivo.
L'adattatore sull'host diventa semplicemente il mezzo che l'obiettivo usa
per entrare nella memoria del sistema e leggervi it contenuto del blocco di
comando.
b) se l'adattatore vince, viene selezionato l'obiettivo prescelto.
a) inizia la fase di arbitraggio del bus SCSI: se l'adattatore sull'host perde
deve attendere fino a che il bus SCSI non' ennovamente libero;
b) il programma scrive nei registri dell'adattatore gli
sopra menzionati.
5. Decodifica del comando;
4. Invio del comando:
3. Arbitraggio del bus e sele2ione:
,


i@Z;:
.... :"
;
I
',' .J; ill :,'
...
j-
Ii r.I,:'f' (' '
I'
...
" ,y . ,.
__
-if: ..
a) il programma. costruisce tre aree in memoria: (i) un blocco per i dati; nel
nostro zona vuota c.he sara. dati (ii) un blocco "
per descrlvere il comando
33
j Del nostlO caso il codlce operatIvQ del comando,
l'unita logica interessata(detta LUN), il numero di settori da trasferire e iI' .....
settore cil partenza; (ill) il byte di statoj ,".
," 'I{' r .
'; .t: ... .
,,-,,'/
indirizzi dei tre blocchi .
< ..... -
.. . ,..,
.. ', ',c I
,.\_"., ..l.(, , "
.. '/!;,:\'" '.'
.."
...
2. Inizio fase esecutiva:
_, _,,::!1!' ;t""'\\ '
a) il programma trasmette all'adattatore un byte con l'indirizzo SCSI del control- 1t.'S.,
lore segnando l'effettivo inizio dell'operazione SCSI, in quanto fa
l'adattatore che tenta di entrare in possesso del bus; '.
.' .' .:1:"'-'" '
-' /'" 'f.':JVi , '
b) da questo punto i .programmi suI host possono disinteressarsi di
quanto accade sui sottosistema SCSI e dedicarsi ad aItre operazioni. L'adat- .. '.
tatore assume it ruolo d! e il del disco di obiettivo: ..
La fine delle operaziow'sara segnalata al SIstema con 1a modifica del byte '
stato '
. .",' . tt t,,". 'I'
,-" ' .
--/ ,. ""',
, ;'c
' .. Y,t-
.Z'
":"'J. IF.... .'
\'
"1' .,',.. "
""""'," .", ... '.", ,",
...... .. '.'
... ..,-,,,.. ' .. .. ..
, -, '
:..:::;'.: '"
, .. "4. v
.
..,., .
" ',"",." I
,
,j}-".'I;,;I
"""1' <I:.
";;':"" ,'-'.",,!',',-,,'
.... "... gil,'.... '
.'.. ., ....,.--,.
...""
#l:: h'.::,;
:,W. '. :"t.,',
,', "-' ,',' .. "tI'. ". ,
.',' I""
";:", ; .'
.. '.," " .
<." ::. J.t,: .
.,. -N I,'
: . c
:,'.:1'-,. " ,
.. ;>''''1'' .....:.\('!r I
",':1f.'
.. :;" . ... ,'-''- l
--"" " ";' "., ' ,
.., ;!p, ';'
'-' ' "" ,
.. , .. .
'

, . .. ,
.",
--.;:'tyJ!). ,"
,..J", " ''-'', __
:-'
.. :.-,!;:/l __'"
",,'::- .',
,I "i[i1.-jit" ..
., 'U",'\
.'. ""',{l,C:,;
, .. -'
'; ....
.".;3. :"','" " . ' .. .,.
, I . ,,'.' ..
.. ,:
':::
",..:,!j" ._,(.,,-
.. ... ..
:';:'t., .
''!i. ','i.,.:;
.,;,.;" ..
;,
, : 'j;;', -
.... ..
,


. ......, tIo',W,'l;i
.,".'.\,
',<.. .: ;..
<;., ii;.,.,
.' ','U;. ..
'p, . ,
"''t ,;0'
';0-' i\' :
." ....., .
1. Inizializzazione dell'adattatore su host:
33Per quanto si riferiBce a.i comandi, c'e invero una certa anarchia su cosa debba contenere un blocco
di com&Ddi; la specifica originale fomiva. delle lin@('! guida che i diversi coatrutton interpretavano a
loco convenienza. OW Ie coae sono pcatiqmente standardizzate.
34Lo sca.mbio eli byte in questa fase avviene can i1 meccanismo REQ/ACKj l'obiettivo tiene C/D
alto, I/O basso e MSG disasserito.
486
I
j
I

I
I
r
I
,
!
I
I
,

-
-

-
-
-
-
-
-
-
-' l
' l
b) sebbene iniziatore e obiettivo siano disconnessi, essi sono ancora legati logi-
camente: entrambi i dispositivi sanno che hanno un comando da portare a
termine. Questo schema di funzionamento permette che diversi comandi di
I/O siano eseguiti nel sistema simultaneamente, utilizzando un singol0 bus
fisico. ncoUegamento logico non eira l'adattatore e il controllore del disco,
rna copre tutto il percorso fra la memoria del computer e la periferiCa ehe
sta eseguendo l'operazione.
b) it controllore si discoDllette da! bus SCSI e considera definitivamente chiuso
il collegamento logico COD l'iniziatorej
d) l'adattatore segnala al sistema la fine deU'esecuzione del comando di I/O con
Wl'interruzione oppure con un apposito indicatore che il programma dovra
esaminare. L'host ha a. disposizione in memoria i dati trasferiti. e l'esito
dell'operazione.
,
b) l'obiettivo trasferisce i dati nella memoria del sistema tramite l'iniziatore
sull'host (in. modalita DMA)j nel nostro case il trasferimento cessa quando
viene raggiunta la fine della traccia sul disco;
c) se si rivela necessario effettuare altri trasferimenti dati per completare l'ese-
cuzione del comando, l'obiettivo ripete i messaggi save data pointer e dis-
connect. Si Doti ehe il puntatore salvato a questa punto dall'adattatore e
aggiornato in base al Dumero dei byte ricevuti.
a) invio del byte di' state e del messaggio command complete da parte del
controllore; il rnessaggio viene interpretato dall'adattatore come segnale di
fine lavoro, mentre it byte di stato viene scritto direttamente nella memoria
deU'host,
Bus di sistema. 487
c) l'adattatore chiude il collegamento DMA con la memoria dell'host;
a) 5e at punto precedente c'era stata lila disconnessione, deve essere.-qstabilito
it collegamento fisico tra host e controllore. A tale scopo it controll0redeve-
vincere una fase di arbitraggio e passare per una fase di Riselezione;
a) il controllore del disco decodifiea il eomando e, poiche la lettura da disco
non e immediata, rende libero it bus per eventuali altri utilizzatori. La
proeedura di disconnessione prevede la trasmissione del messaggio di save
data pointer dall'obiettivo all'host. L'adattatore salva il puntatore ai dati.
Successivamente l'obiettivo trasmette il messaggio disconnect e disasserisce
il segnale BSY, liberando il bus;
7. Fine esecuzione cornando:
6. Esecuzione del comando:
Capitolo 11
a) Pobiettivo appena selezionato riehiede un comando dall'iniziatore. L'inizia-
tore risponde trasmettendo una sequenza di byte contenente l'indirizzo del
bloeco di comando
3
4.;
b) da questo punto l'attivita. di I/O econtrollata interamente dall'obiettivo.
L'adattatore sull'host diventa semplicemente il mezzo che l'obiettivo usa
per entrare nella memoria del sistema e leggervi it contenuto del blocco di
comando.
b) se l'adattatore vince, viene selezionato l'obiettivo prescelto.
a) inizia la fase di arbitraggio del bus SCSI: se l'adattatore sull'host perde
deve attendere fino a che il bus SCSI non' ennovamente libero;
b) il programma scrive nei registri dell'adattatore gli
sopra menzionati.
5. Decodifica del comando;
4. Invio del comando:
3. Arbitraggio del bus e sele2ione:
,


i@Z;:
.... :"
;
I
',' .J; ill :,'
...
j-
Ii r.I,:'f' (' '
I'
...
" ,y . ,.
__
-if: ..
a) il programma. costruisce tre aree in memoria: (i) un blocco per i dati; nel
nostro zona vuota c.he sara. dati (ii) un blocco "
per descrlvere il comando
33
j Del nostlO caso il codlce operatIvQ del comando,
l'unita logica interessata(detta LUN), il numero di settori da trasferire e iI' .....
settore cil partenza; (ill) il byte di statoj ,".
," 'I{' r .
'; .t: ... .
,,-,,'/
indirizzi dei tre blocchi .
< ..... -
.. . ,..,
.. ', ',c I
,.\_"., ..l.(, , "
.. '/!;,:\'" '.'
.."
...
2. Inizio fase esecutiva:
_, _,,::!1!' ;t""'\\ '
a) il programma trasmette all'adattatore un byte con l'indirizzo SCSI del control- 1t.'S.,
lore segnando l'effettivo inizio dell'operazione SCSI, in quanto fa
l'adattatore che tenta di entrare in possesso del bus; '.
.' .' .:1:"'-'" '
-' /'" 'f.':JVi , '
b) da questo punto i .programmi suI host possono disinteressarsi di
quanto accade sui sottosistema SCSI e dedicarsi ad aItre operazioni. L'adat- .. '.
tatore assume it ruolo d! e il del disco di obiettivo: ..
La fine delle operaziow'sara segnalata al SIstema con 1a modifica del byte '
stato '
. .",' . tt t,,". 'I'
,-" ' .
--/ ,. ""',
, ;'c
' .. Y,t-
.Z'
":"'J. IF.... .'
\'
"1' .,',.. "
""""'," .", ... '.", ,",
...... .. '.'
... ..,-,,,.. ' .. .. ..
, -, '
:..:::;'.: '"
, .. "4. v
.
..,., .
" ',"",." I
,
,j}-".'I;,;I
"""1' <I:.
";;':"" ,'-'.",,!',',-,,'
.... "... gil,'.... '
.'.. ., ....,.--,.
...""
#l:: h'.::,;
:,W. '. :"t.,',
,', "-' ,',' .. "tI'. ". ,
.',' I""
";:", ; .'
.. '.," " .
<." ::. J.t,: .
.,. -N I,'
: . c
:,'.:1'-,. " ,
.. ;>''''1'' .....:.\('!r I
",':1f.'
.. :;" . ... ,'-''- l
--"" " ";' "., ' ,
.., ;!p, ';'
'-' ' "" ,
.. , .. .
'

, . .. ,
.",
--.;:'tyJ!). ,"
,..J", " ''-'', __
:-'
.. :.-,!;:/l __'"
",,'::- .',
,I "i[i1.-jit" ..
., 'U",'\
.'. ""',{l,C:,;
, .. -'
'; ....
.".;3. :"','" " . ' .. .,.
, I . ,,'.' ..
.. ,:
':::
",..:,!j" ._,(.,,-
.. ... ..
:';:'t., .
''!i. ','i.,.:;
.,;,.;" ..
;,
, : 'j;;', -
.... ..
,


. ......, tIo',W,'l;i
.,".'.\,
',<.. .: ;..
<;., ii;.,.,
.' ','U;. ..
'p, . ,
"''t ,;0'
';0-' i\' :
." ....., .
1. Inizializzazione dell'adattatore su host:
33Per quanto si riferiBce a.i comandi, c'e invero una certa anarchia su cosa debba contenere un blocco
di com&Ddi; la specifica originale fomiva. delle lin@('! guida che i diversi coatrutton interpretavano a
loco convenienza. OW Ie coae sono pcatiqmente standardizzate.
34Lo sca.mbio eli byte in questa fase avviene can i1 meccanismo REQ/ACKj l'obiettivo tiene C/D
alto, I/O basso e MSG disasserito.
486
I
j
I

I
I
r
I
,
!
I
I
,

-
-

-
-
-
-
-
-
-
j
-
\

j -
-
-
f -
-
\ -
-
\ -
-
)-
I
,
I -
1-
I-
1-
] -
I -
\
I -
489 Bus eli sistema.
Per l'lndirizzarnento iI PCI dislingue Ira:
a) decodifica in positiyo;
b) decodifica sottratliva.
a) spazio degli indirizzi di memoriaj
b) spazio degli lndirizzi di I/O;
c) spazio degli lndirizzi di configurazione,
n secondo e terzo si riferiscono comunque al sottosistema d.i ingresso/uscita. La
modalita. del punto c) ecaratteristica dei dispositivi PCI.
La decodifica deg-li indirizzi viene ratta dal singolo dispositivo. n PCI permette
due tipi di decodifica:
Ritorno alIo di riposo L'iniziatore indica che il trasferimento alla fine di-
sasserendo il segnale FRAME sul penultimo dato} quindi} dopa l'ultimo dato}
disasserisce mDY. Quando FRAME e mDY sono ambedue disasseriti il bus e
in stato di riposo (idle) .
in cui vengono trasmessi gli indirizzi e n tipo di
Ogni trasferimento richiede:
Capitola 11
a) una rase di indirizzamento
trasrerimento;
b) una 0 pill fasi di effetlivo trasferimento dati, con parallelismo a 32 0 64 bit (dalla
versione 2.0).
35 Anche qui, come nello SCSI, it dispositivO che prende it controllo del bus viene detto iniziatore
(initiator), mentre viene datto obiettivo (target) l'altro dispositive parteclpa.nte (quello doe che
viene indirizzato da.ll'iniziatore). In una transazione I'iniziatore esempre il mcuter e I'obiettivo
esempre 10 slot'e. Viene usato anche iI termine "agente" per denotare il generico modulo, sia master
che slave. che partecipa a. una. transazione.
Per poter effettuare un trasferimento, e doe prima di poter dar corso aila rase
di indirizzamento, il dispositivo che prende il comando del buS
35
deve facolta;
T:rasferimenti
11.7.1 Principi di funzionamento
Caratteristica fondarnentale eil trasferimento In modalit. burst (in blocco) di pacchi
di dati di qualunque lunghezza} determinata dinamicamente in rase d.i trasferimento.
IJ tasso di trasferimento raggiunge i 132 Mbyte/s con clock a 33 Mhz e dati a 32 bit.
IJ PCI ecomunque In grado di trasferire un dato alla volta.
Thtte le azioni del bus PCI sono sIDcronizzate per mezzo di un clock} di frequenza
compresa tra 16 MHz e 33 MHz. Nella versione 2.0 il clock puo arrivare a 66 MHz.
IJ carnpionamento del segnali esul fronte di salita del clock (positive edge). '
11.7 11 bus PCI
11.6.5 Conclusioni
4BB
,
., ,
, '
.-.,
:i.t:: ,
. , ",
,
"!' "

.II.",

"":1"1,:".
,,<;e'
'.
'itiA;':f' ,
.,.",,'." ,
'!;'\!!i -'.... ,


, ,,, ".

"
inoltre il bus cleve essere a riposo. L'autorizzazione viene concessa da un arbitro
::')li';O centralizzatoj la ,verifica delle stato del bus ecompito del dispositivo. Dell'arbitraggio
IJ bus SCSI eun bus molto semplice dal punta di vista (un cavo piatto con:;;!11.. %'i'f-,W" . si parla piu avanti (Cfr.1l.7.4), dopo avere esaminato pill afondo Ie caralterisliche
relatlYI connetton), rna estremamente efficace. La complesslta emterarnente nascosta del bus.
oei controllori che equipaggiano i dispositivi e negli eventuali adattatori al bus del, L'inizio della transazione emarcato cia! segnale FRAME} asserito cia! master; il
sistema. Lo SCSI e tuttora uno standard diffusissimo per 1a sua elevata praticita di "'.';.t\'. segnale resta assento per tutta la transazione. nsuo passaggio aila stato di inattivo
impiego: ricwede al . ne marca la fine.
. Col passare. anru ha subltO. notevoh m la ... . .. .. .. .
sl.one del bus del datI a 3? bIt. n maggIor grade dl parallehsmo al bus SCSI Fase dl mdlI'lZZamento La fase dl mdinzzamento. ha la durata di un penodo di
cit mantenere salda la poslZlone dl mercato. clock. L'iniziatore asserisce FRAME) identifica il dispositivo obiettivo tramite il ,
relativo indiriz.zo su AD[O.. 31],e definisce il tipo
il bus comandi C/BE{3: OJ. E compito dell'oblettlvo memonzzare l'mdmzzo e
, autoincrementarlo per i successivi trasferimenti dati
36
.
, i.
',: Quando un dispositive PCl si riconosce ceme obiettivo} il segnale
IJ PCI (Peripheral Component Interconnect) eun bus a 32/64 bit, clock a 33 0 66 ,>t I DEVSEL. Se Piniziatore non vede asserito questo segnale entro un predetermi-
Mhz, smcr?no. ... . . . nato penodo dl tempo, la Vlene annullata.
. Nella ?edicata ail'orgamzzazlOne del modern! calcolaton personall (Crr. . . . . _ . . .
e stato desentto il ruolo del bus. Nella parte che segue vengono illustrati a!cuni Fase(l) datt A ogIll clock Ie .lin.. C/BE[3: OJ, pilotate dal master, hannofunzlOne di
dettagh di funzlOnamento. ,);;:f1\r., Byte Due segnali, e mdicano se e sono
p.rontl. Se due sono un date a ogm clock (trasfenmento
smcrono)} In caso contrano Sl ha un cIcIo eli attesa..
:: L'iniziatore identifica 1a durata totale del burst tramite il segnale FRAME, che
viene asserito all'inizio della rase indirizzi e rimane attivo fino ail'inizio dell'ultima
- .., .. , f,oe datI'
1 .
:.1Ji
.., ,
'. ',;;' .;. '.,,'
\ ,"" ... ,,",
.' ,,: r"""jIi" ," t "
.. ','';'. . m" ::-,.." .
. "u -.. '!
,. '. i1 '..!:"'.,
,0", '"n,'r,: "
'""';'1"t
.' ...
-P' ,
." .
.
. ' ',' ,I l",j','t:'.!.,'"
::;-i" ':. '
,'r.. . im:,r,<JI'
'':'[t ,., "
','.. -..".
", ' "
, .",., '"'--""..n I d' .
.. n lrlZZamento
.;,
:;' ' .. ' ('i;
.. " ....... ,.
.....'W;'ll'
;'. '.
'", /u ...
:112it-i
....
p... ..-. ,< '

, :'";!1"'1"' '(oJ.!;:!:',,:,
. ...
',' e,,"cO'.-';
>
'," t,"i'. .."t
.. ,,.", '

..... "v" , '
.... iti ;:.Y,b\_I'\;'"
.' ,," "l'..."".
"N.!lif
:',

""!' '. . ,-;..,.
t ....

, .. 'I
",.'

,f"'- __
,"" ,,., ..; .. ,
',", "J" "
".').i/;; .' 36Si noti che se I'obiettivo euna memoria, questa. deve essere dota.ta. di un controllore che svolga.
'';';',0,}:',.:. questa. funzione.

""",,1 '."'iI!'-
, ,." "" '.....'
".
j
-
\

j -
-
-
f -
-
\ -
-
\ -
-
)-
I
,
I -
1-
I-
1-
] -
I -
\
I -
489 Bus eli sistema.
Per l'lndirizzarnento iI PCI dislingue Ira:
a) decodifica in positiyo;
b) decodifica sottratliva.
a) spazio degli indirizzi di memoriaj
b) spazio degli lndirizzi di I/O;
c) spazio degli lndirizzi di configurazione,
n secondo e terzo si riferiscono comunque al sottosistema d.i ingresso/uscita. La
modalita. del punto c) ecaratteristica dei dispositivi PCI.
La decodifica deg-li indirizzi viene ratta dal singolo dispositivo. n PCI permette
due tipi di decodifica:
Ritorno alIo di riposo L'iniziatore indica che il trasferimento alla fine di-
sasserendo il segnale FRAME sul penultimo dato} quindi} dopa l'ultimo dato}
disasserisce mDY. Quando FRAME e mDY sono ambedue disasseriti il bus e
in stato di riposo (idle) .
in cui vengono trasmessi gli indirizzi e n tipo di
Ogni trasferimento richiede:
Capitola 11
a) una rase di indirizzamento
trasrerimento;
b) una 0 pill fasi di effetlivo trasferimento dati, con parallelismo a 32 0 64 bit (dalla
versione 2.0).
35 Anche qui, come nello SCSI, it dispositivO che prende it controllo del bus viene detto iniziatore
(initiator), mentre viene datto obiettivo (target) l'altro dispositive parteclpa.nte (quello doe che
viene indirizzato da.ll'iniziatore). In una transazione I'iniziatore esempre il mcuter e I'obiettivo
esempre 10 slot'e. Viene usato anche iI termine "agente" per denotare il generico modulo, sia master
che slave. che partecipa a. una. transazione.
Per poter effettuare un trasferimento, e doe prima di poter dar corso aila rase
di indirizzamento, il dispositivo che prende il comando del buS
35
deve facolta;
T:rasferimenti
11.7.1 Principi di funzionamento
Caratteristica fondarnentale eil trasferimento In modalit. burst (in blocco) di pacchi
di dati di qualunque lunghezza} determinata dinamicamente in rase d.i trasferimento.
IJ tasso di trasferimento raggiunge i 132 Mbyte/s con clock a 33 Mhz e dati a 32 bit.
IJ PCI ecomunque In grado di trasferire un dato alla volta.
Thtte le azioni del bus PCI sono sIDcronizzate per mezzo di un clock} di frequenza
compresa tra 16 MHz e 33 MHz. Nella versione 2.0 il clock puo arrivare a 66 MHz.
IJ carnpionamento del segnali esul fronte di salita del clock (positive edge). '
11.7 11 bus PCI
11.6.5 Conclusioni
4BB
,
., ,
, '
.-.,
:i.t:: ,
. , ",
,
"!' "

.II.",

"":1"1,:".
,,<;e'
'.
'itiA;':f' ,
.,.",,'." ,
'!;'\!!i -'.... ,


, ,,, ".

"
inoltre il bus cleve essere a riposo. L'autorizzazione viene concessa da un arbitro
::')li';O centralizzatoj la ,verifica delle stato del bus ecompito del dispositivo. Dell'arbitraggio
IJ bus SCSI eun bus molto semplice dal punta di vista (un cavo piatto con:;;!11.. %'i'f-,W" . si parla piu avanti (Cfr.1l.7.4), dopo avere esaminato pill afondo Ie caralterisliche
relatlYI connetton), rna estremamente efficace. La complesslta emterarnente nascosta del bus.
oei controllori che equipaggiano i dispositivi e negli eventuali adattatori al bus del, L'inizio della transazione emarcato cia! segnale FRAME} asserito cia! master; il
sistema. Lo SCSI e tuttora uno standard diffusissimo per 1a sua elevata praticita di "'.';.t\'. segnale resta assento per tutta la transazione. nsuo passaggio aila stato di inattivo
impiego: ricwede al . ne marca la fine.
. Col passare. anru ha subltO. notevoh m la ... . .. .. .. .
sl.one del bus del datI a 3? bIt. n maggIor grade dl parallehsmo al bus SCSI Fase dl mdlI'lZZamento La fase dl mdinzzamento. ha la durata di un penodo di
cit mantenere salda la poslZlone dl mercato. clock. L'iniziatore asserisce FRAME) identifica il dispositivo obiettivo tramite il ,
relativo indiriz.zo su AD[O.. 31],e definisce il tipo
il bus comandi C/BE{3: OJ. E compito dell'oblettlvo memonzzare l'mdmzzo e
, autoincrementarlo per i successivi trasferimenti dati
36
.
, i.
',: Quando un dispositive PCl si riconosce ceme obiettivo} il segnale
IJ PCI (Peripheral Component Interconnect) eun bus a 32/64 bit, clock a 33 0 66 ,>t I DEVSEL. Se Piniziatore non vede asserito questo segnale entro un predetermi-
Mhz, smcr?no. ... . . . nato penodo dl tempo, la Vlene annullata.
. Nella ?edicata ail'orgamzzazlOne del modern! calcolaton personall (Crr. . . . . _ . . .
e stato desentto il ruolo del bus. Nella parte che segue vengono illustrati a!cuni Fase(l) datt A ogIll clock Ie .lin.. C/BE[3: OJ, pilotate dal master, hannofunzlOne di
dettagh di funzlOnamento. ,);;:f1\r., Byte Due segnali, e mdicano se e sono
p.rontl. Se due sono un date a ogm clock (trasfenmento
smcrono)} In caso contrano Sl ha un cIcIo eli attesa..
:: L'iniziatore identifica 1a durata totale del burst tramite il segnale FRAME, che
viene asserito all'inizio della rase indirizzi e rimane attivo fino ail'inizio dell'ultima
- .., .. , f,oe datI'
1 .
:.1Ji
.., ,
'. ',;;' .;. '.,,'
\ ,"" ... ,,",
.' ,,: r"""jIi" ," t "
.. ','';'. . m" ::-,.." .
. "u -.. '!
,. '. i1 '..!:"'.,
,0", '"n,'r,: "
'""';'1"t
.' ...
-P' ,
." .
.
. ' ',' ,I l",j','t:'.!.,'"
::;-i" ':. '
,'r.. . im:,r,<JI'
'':'[t ,., "
','.. -..".
", ' "
, .",., '"'--""..n I d' .
.. n lrlZZamento
.;,
:;' ' .. ' ('i;
.. " ....... ,.
.....'W;'ll'
;'. '.
'", /u ...
:112it-i
....
p... ..-. ,< '

, :'";!1"'1"' '(oJ.!;:!:',,:,
. ...
',' e,,"cO'.-';
>
'," t,"i'. .."t
.. ,,.", '

..... "v" , '
.... iti ;:.Y,b\_I'\;'"
.' ,," "l'..."".
"N.!lif
:',

""!' '. . ,-;..,.
t ....

, .. 'I
",.'

,f"'- __
,"" ,,., ..; .. ,
',", "J" "
".').i/;; .' 36Si noti che se I'obiettivo euna memoria, questa. deve essere dota.ta. di un controllore che svolga.
'';';',0,}:',.:. questa. funzione.

""",,1 '."'iI!'-
, ,." "" '.....'
".

\
" ......
,
o.rbl'tro.ggio
(501.0 ..0.51:"r)
-
5151:",.,,,
I
-
(
G
491
Bus di sistema
Segno.\e Mo.ster
To.rget
Noto.
FRAME out in , cIcio di FRAME
TROY In out Target reo.dy
IRDY out
,
Initio.tor rl?o.dy ,n
I
STOP In out STOP o.Llo. tro.nSQzlone
DEVSEL In out Device select
LOCK In/out in
blocco ell uno.
risor"'o.
IDSEL In in
Initlo.lIzatlon
device select
Transazioni di trasferimento dati
\
37
1 campi di bit sooo designati come [X:Yj: X eiI bit significativo eYe il menD significativo.
38B da notare che certi segnali cbe in Figura 11,37 80no riportati bidirezionali, SODa in realta.
unidirezionali, e cbe l'incertezza elegata. alia posizione assunta dal modulo (master 0 target), come
riportato in Figura 11.38.
Nei diagrammi che verranno ora presentati
l
due freece che si inseguono e la linea
interrotta stanno a iudicare 1a cosiddetta rase di turnarou.nd, nella quale un dispositivo
11.7,3
PCI. In questa clMse compalono Ie linee indirizzi e dati :AD[31:0]37, Ie linee CIBE, il
controlla di parita PAR (che agisce sia sui dati che sugli indirizzi), il clock, il reset, i
segnali di controllo delPinterfaccia e i segnali di arbitraggi038. n segnali di controllo
dell'interfaccia sono riportati in Figura 11.38.
114')1)

JTAG
(lE(E
-
cont,.oIlo irltltrf<lCCIo.
ltst.,nslon..
64 bit
]
luppor1o
C(lCh.
]
SEGN"L1 CPZtCNALI
elettricamente
SI:GNALI RICHll:STI
-:::ooi:-.

TIS "
US

us us
k:E-
,..
us
US
PAR64
F"RAHEI
S/T/S
10:(064'
TRDVI
SITIS SITIS
ACK6"t
'"
S/TIS
T

SITIS
SIllS
LOCK.
0
VSEU
SITIS
IDSEt
S/TIS
[N/OUT
SBQI

IN
INICUT
SD N I
[ .
P,RRt
.'"
'NT",I
0 SITIS

SCRRI
0'"
0'"
0,"
INT I
[
REQI
0,"
lNT I
G>no
OUT
IN
IN
T01
,."
TOO
[
"'-,
IN
IN
RSTI
IN
IN
TMS
IN
TRT
50DO
lndirl:zzI

dotl
cor.-trollo
In'ltrf".. cclQ
Capitolo 11
SIT/So seguale tristate pUotato da un solo agente per volta, Un agente che
asserisce bassa una linea SITIS deve anche asserirla alta per almeno un cicio di
clock prima di lasciarla in terzo stato;
OlD: segnale a collettore aperto (Open Drain),
c.
T/S: seguale tristate bidirezionale di ingresso/uscita;
0l.!T: .segnale di sola uscitaj
Come si osserva Figura 11.37 vi sono 2 classi di segnali: richiesti e op-
zionali. I segnali richiesti sono quelli indispensabili per realizzare una interfaccia
I segnali
categorie:
IN : segnale di solo ingresso;
DISPOSITIVO
COMPATlBILE PCI
Figura 11.31 Segnali previsti dallo standard PCL I segnali attivi bassi sono seguiti da!
carattere "#"
In Figura 11.37 viene riportata la specifica dei segnali <Ii un dispositivo PCI.
11.7,2 I segnali del PCI bus

.-



t:"!(..
".-....
\'-. c
.... '
""!.i '-',''''',:'''' , :.- ' ." .. "....
,
- ".,' " -.,,;.'t '
... -. ,"';
-", ',.;;::" .,'.
L d
difi
... II 'f t-'i;' >A ,:
a eco ca III pOSItIVO e que a usuale: ogni dispositivo contralla se l'indirizzo carle "
all'intern? del.c::mpo che e assegn.ato. La econsentita a
un solo tutti quelli. collegatl al bus. II dlSpOSltlVO lD questione risponde _'.
solo se tuttI gli altn nOn hanna rlSposto.

.,.:-:'-; '" .,r... , .
:"'.''i''.''
'
":;".,,' 'q,."!" 'l:,"

,;,.,:, )".'<,

;'>;i;'"
... :v- '
"-ci"'"
I"" ,
,0h;\.r.:,,:-
, ". "i1'i';"l:
., .. ,.
:'(", ..,.:-
- ;'"}t';".: "-'
.......
.. t,., "..
" ,., "&>t N." ".
:iti?>':
.
..f ..,,!., ,
..
...: ....;11
:
J' .
.... ,.,' .. '.
,;.'
--
. .. ' Figura 11,38 Segnali usati per controllare i trasferimenti. I segnali FRAME, IRDY, TRDY
',\. controlla-no 10 svolgimento delle principali funzioni ill trasferimento. FRAME pilotato dal
master per indicare l'iriizia e la fine del trasferimento; IRDY (pilotato da.! master) e TRDY
!Yt/: (pilotato dal target) permettono di inserire dei deli di attesa, STOP eusato dallo slave per
richiedere a1 master l'interruzione del trasferimento. asserito dall'obiettivo che
.. ha dec?dificato il indirizzo.per indicare di essere stato LOCK serve a
gar:autue accesso esclUSlvO a una. nsorsa. la memona). IDSEL e usato come
ch1-p-enable durante 130 configurazlOne del disPOSltlVl.
;" ... *..j',./:;,::,
, '" '.,.-':''''','
,: 'u;';',f:(: '
.. ,"J-n
"'';'[:-1.:" '."c
Nella classe dei segnali opzionali cornpaiono tutti quei segnali che non sana' neces-
.. sari, rna che devono essere impiegati se si desidera ottenere Ie funzionalita aggiWltive
.rispetto alle standard. Preme osservare come in tale categoria siano riportati anche i
segnali'di richiesta di interruzione. Le fWlzionalita in questione sono: il cantrolla di
parita sulle inforrnazioni
l
1a segnalazione di avvenuto errore da parte di un dispositivo
definiti come appartenenti a una delle s t" . PCl, segnali di supporto della cachel Ie estensioni a 64 bit, il blocco delle e
eguen I L, . I" I . d I eli li (JT:AG) 'I t d . eli . , 'PCI I
'/<:0.c."{' unp ernentazlOne e gruppo segna per 1 tes el SPOSltlVl , 0 tre
aUe gia citate richieste eli interruzione. In Figura 11.39 sono riportati i comandi che
r:.f4tp possono essere dati a un dispositivo PCI.
,
, ' ....
''''\'-'''.. ,' , -'. '-.......,. /",
,.-,,.,,,,,1-,, '\:."< '.' .
r' ,', __ '\"
--'. c"' ," N-
'I', ' .. "
'-;'!";if;,tt . ." '

,- ',';;!h, ..... '\
.,. .. "; .
;.. ,. "
)': ". ' .
.. "C"l'-, \"""
,''':'''.' ':
<',' ,:" .
, ..v;' ...
; ....
..
....... ( ,
'.
.. , ........\., .
,

-. ,;"O,.;:fe"__ . ," '"
, ,. "'..".. "',

.......;.;f; ",'" ,.
. ,
\x....:)
'. ":':!= t ,.
:'<. .
..r......
"5ti - J' ' . '
',":,."
, ' ;, ,
:f*1" 'r./;;)/r' ," .
490
j
)
'I
I
I
I
l
!
\
l
I
I

-
-
-
-
-

-
-
-
-
-
-
-

\
" ......
,
o.rbl'tro.ggio
(501.0 ..0.51:"r)
-
5151:",.,,,
I
-
(
G
491
Bus di sistema
Segno.\e Mo.ster
To.rget
Noto.
FRAME out in , cIcio di FRAME
TROY In out Target reo.dy
IRDY out
,
Initio.tor rl?o.dy ,n
I
STOP In out STOP o.Llo. tro.nSQzlone
DEVSEL In out Device select
LOCK In/out in
blocco ell uno.
risor"'o.
IDSEL In in
Initlo.lIzatlon
device select
Transazioni di trasferimento dati
\
37
1 campi di bit sooo designati come [X:Yj: X eiI bit significativo eYe il menD significativo.
38B da notare che certi segnali cbe in Figura 11,37 80no riportati bidirezionali, SODa in realta.
unidirezionali, e cbe l'incertezza elegata. alia posizione assunta dal modulo (master 0 target), come
riportato in Figura 11.38.
Nei diagrammi che verranno ora presentati
l
due freece che si inseguono e la linea
interrotta stanno a iudicare 1a cosiddetta rase di turnarou.nd, nella quale un dispositivo
11.7,3
PCI. In questa clMse compalono Ie linee indirizzi e dati :AD[31:0]37, Ie linee CIBE, il
controlla di parita PAR (che agisce sia sui dati che sugli indirizzi), il clock, il reset, i
segnali di controllo delPinterfaccia e i segnali di arbitraggi038. n segnali di controllo
dell'interfaccia sono riportati in Figura 11.38.
114')1)

JTAG
(lE(E
-
cont,.oIlo irltltrf<lCCIo.
ltst.,nslon..
64 bit
]
luppor1o
C(lCh.
]
SEGN"L1 CPZtCNALI
elettricamente
SI:GNALI RICHll:STI
-:::ooi:-.

TIS "
US

us us
k:E-
,..
us
US
PAR64
F"RAHEI
S/T/S
10:(064'
TRDVI
SITIS SITIS
ACK6"t
'"
S/TIS
T

SITIS
SIllS
LOCK.
0
VSEU
SITIS
IDSEt
S/TIS
[N/OUT
SBQI

IN
INICUT
SD N I
[ .
P,RRt
.'"
'NT",I
0 SITIS

SCRRI
0'"
0'"
0,"
INT I
[
REQI
0,"
lNT I
G>no
OUT
IN
IN
T01
,."
TOO
[
"'-,
IN
IN
RSTI
IN
IN
TMS
IN
TRT
50DO
lndirl:zzI

dotl
cor.-trollo
In'ltrf".. cclQ
Capitolo 11
SIT/So seguale tristate pUotato da un solo agente per volta, Un agente che
asserisce bassa una linea SITIS deve anche asserirla alta per almeno un cicio di
clock prima di lasciarla in terzo stato;
OlD: segnale a collettore aperto (Open Drain),
c.
T/S: seguale tristate bidirezionale di ingresso/uscita;
0l.!T: .segnale di sola uscitaj
Come si osserva Figura 11.37 vi sono 2 classi di segnali: richiesti e op-
zionali. I segnali richiesti sono quelli indispensabili per realizzare una interfaccia
I segnali
categorie:
IN : segnale di solo ingresso;
DISPOSITIVO
COMPATlBILE PCI
Figura 11.31 Segnali previsti dallo standard PCL I segnali attivi bassi sono seguiti da!
carattere "#"
In Figura 11.37 viene riportata la specifica dei segnali <Ii un dispositivo PCI.
11.7,2 I segnali del PCI bus

.-



t:"!(..
".-....
\'-. c
.... '
""!.i '-',''''',:'''' , :.- ' ." .. "....
,
- ".,' " -.,,;.'t '
... -. ,"';
-", ',.;;::" .,'.
L d
difi
... II 'f t-'i;' >A ,:
a eco ca III pOSItIVO e que a usuale: ogni dispositivo contralla se l'indirizzo carle "
all'intern? del.c::mpo che e assegn.ato. La econsentita a
un solo tutti quelli. collegatl al bus. II dlSpOSltlVO lD questione risponde _'.
solo se tuttI gli altn nOn hanna rlSposto.

.,.:-:'-; '" .,r... , .
:"'.''i''.''
'
":;".,,' 'q,."!" 'l:,"

,;,.,:, )".'<,

;'>;i;'"
... :v- '
"-ci"'"
I"" ,
,0h;\.r.:,,:-
, ". "i1'i';"l:
., .. ,.
:'(", ..,.:-
- ;'"}t';".: "-'
.......
.. t,., "..
" ,., "&>t N." ".
:iti?>':
.
..f ..,,!., ,
..
...: ....;11
:
J' .
.... ,.,' .. '.
,;.'
--
. .. ' Figura 11,38 Segnali usati per controllare i trasferimenti. I segnali FRAME, IRDY, TRDY
',\. controlla-no 10 svolgimento delle principali funzioni ill trasferimento. FRAME pilotato dal
master per indicare l'iriizia e la fine del trasferimento; IRDY (pilotato da.! master) e TRDY
!Yt/: (pilotato dal target) permettono di inserire dei deli di attesa, STOP eusato dallo slave per
richiedere a1 master l'interruzione del trasferimento. asserito dall'obiettivo che
.. ha dec?dificato il indirizzo.per indicare di essere stato LOCK serve a
gar:autue accesso esclUSlvO a una. nsorsa. la memona). IDSEL e usato come
ch1-p-enable durante 130 configurazlOne del disPOSltlVl.
;" ... *..j',./:;,::,
, '" '.,.-':''''','
,: 'u;';',f:(: '
.. ,"J-n
"'';'[:-1.:" '."c
Nella classe dei segnali opzionali cornpaiono tutti quei segnali che non sana' neces-
.. sari, rna che devono essere impiegati se si desidera ottenere Ie funzionalita aggiWltive
.rispetto alle standard. Preme osservare come in tale categoria siano riportati anche i
segnali'di richiesta di interruzione. Le fWlzionalita in questione sono: il cantrolla di
parita sulle inforrnazioni
l
1a segnalazione di avvenuto errore da parte di un dispositivo
definiti come appartenenti a una delle s t" . PCl, segnali di supporto della cachel Ie estensioni a 64 bit, il blocco delle e
eguen I L, . I" I . d I eli li (JT:AG) 'I t d . eli . , 'PCI I
'/<:0.c."{' unp ernentazlOne e gruppo segna per 1 tes el SPOSltlVl , 0 tre
aUe gia citate richieste eli interruzione. In Figura 11.39 sono riportati i comandi che
r:.f4tp possono essere dati a un dispositivo PCI.
,
, ' ....
''''\'-'''.. ,' , -'. '-.......,. /",
,.-,,.,,,,,1-,, '\:."< '.' .
r' ,', __ '\"
--'. c"' ," N-
'I', ' .. "
'-;'!";if;,tt . ." '

,- ',';;!h, ..... '\
.,. .. "; .
;.. ,. "
)': ". ' .
.. "C"l'-, \"""
,''':'''.' ':
<',' ,:" .
, ..v;' ...
; ....
..
....... ( ,
'.
.. , ........\., .
,

-. ,;"O,.;:fe"__ . ," '"
, ,. "'..".. "',

.......;.;f; ",'" ,.
. ,
\x....:)
'. ":':!= t ,.
:'<. .
..r......
"5ti - J' ' . '
',":,."
, ' ;, ,
:f*1" 'r./;;)/r' ," .
490
j
)
'I
I
I
I
l
!
\
l
I
I

-
-
-
-
-

-
-
-
-
-
-
-

-
1.

).
-

\ .
l.
\ .

1.
I
I .
l .
\ .
I.
I.
I.
1.


Ph<>.sco
Bus T"'onso.c"'lon
Do,,,,
Ph,."..
Vo..'" - Volt Vo.l"t

-=-,-_. . ..,-=-,....
Adol ..
Ph,. ..
6. Clock 6. La slave ha posto il secondo data sul bus e ha asserito TRDY. L'inizia-
tore, essendo sia TRDY che IRDY asseriti) legge il data.
7. Clock 7. Questa volta e l'iniziatore ad avere bisogno di piu tempo, per cui
disasserisce IRDY inserendo cosl un ciclo di attesa. 10 slave manterra il data suI
bus per un cielo extra. L'iniziatore, in previsione della conclusione al prossimo
cicio disasserisce FRAME.
8. Clock 8. La ,lave mantiene il data sul bus per questa cicio a causa della stato di
attesa introdotto da IRDY al cicio precedente.
,
Fine trasferimento La fine <Ii un trasferimento puc essere comandata sia daI mas-
ter che claIlo slave, anche se il tutto viene sempre concIuso daI master (FRAME e
IRDY disasseriti).
11, 12 13 14 IS 16 Ie 19 I
:f\ :f\ !f\ :f\ !f\ ' '!f\ :
CLK 1 U L ..J Ll LJ 'L' LJ
1 I I I I I I I ...+--
""''''r-\ I I I , I I I 1-
F'RAME I' I I I I /' -.v
'. I I , I '. l I
I I 1,1 I I
1 D:",,,, l hI Dt",o.2 !"'''' 3 !I
AD :...--A X+ ! >-----V-
I a.......01 ",. noll:>llIP "'t' En.o!t>1 ott' EnG"'t I
-, ,A
C/BE I I ( I I I _
, -.v
.......... 1'1 I' l
TROY 1 :: /:: / :
I \! I ! I I. I
. I I I I I I I
I "'i"" I I
fRDYl I I I.
, I I I I I
, ,
'/T' ,
l...l/
DEVSEL I I I I
, , I
D",'l:o T,.o.ns-f"co,.s I ""o.lt: $'I:,."'cos I
Bus di 'sistema 493
La scrittura Una transazione a blocchi eli scrittura mostrato in Figura 11.41. n
protocollo esimile a queUo di lettura. Si nota soltanto l'assenza del cicIo di transizione
sulle linee AD, poiche sono sempre pilotate dall'ini'ziatore.
. 4. Clock 4. Essendo IRDY e TRDY asseriti, viene trasferito il primo dato.
5. Clock 5. La slave ha disasserito TRDY evidentemente non ein grado
di produrre il secondo data) causando un cicIo d.i attesaj Del frattempo 10 slave
mantiene sulle linee AD il dato precedente.
11.40 Transazione our"t eli lettura. La. transazione trasferisce tre dati. A parte il
primo ciclo eli a.ttesa (clock 2), necessario per la stabilizzazione dei segnali, i due ulteriori
cicli eli attesa sono generati rispettivamente da.1lo slave e dal master. Notate che Ie linee BE
vengono asserite per ogni da.to trasferito.

,,"" "m
",n
"m
Tlpo c:l1 co.....nc:lo
0 0 0 0 Inttrrupt o.ckno"ltc:lgr
0 0 0 I SptCiOl cyclr
0 0 I 0 1/0 r,o.<;I
0 0
,
I [/0 ..,tt
0 I 0 0 r'5.. r".. <;1
0 I 0 I rts,.. " .. c:I
0
,
I 0 1'I.. ",or)' rto.d
0 I
,
I l'Ie,",ory "rltt
I 0 0 0 r.,.. r"ec:l
I 0 0 I res,rv,c:I
I 0
,
0 conflg...... o.t:on rto.c:I
,
0
,
I confIgura. tlOn ...11; ..
I I 0 0 _,",ory rt'o.d ....... t101..
, ,
0 I c:lun!-o.c:I<;Ir .. s-s eye!..
, , ,
0 I'Itl'\Or)' rto.d lint
,
I I I ""'l'Iory "",1." nnc:l 1,,,,o.Uc:lo.tlP
Capitolo 11
La lettura
:,/,.
.. ..
",?!J", ;.
"I"

i
0);,1&';

'.
',Ilf,.\\. .
,","'''. .
" ...\<VI
.
, ,'"
","i-'.
;':'] .. .. ,:.'
.
,',',.
.:,1
11
,'rtt:r.:t.'',
:(,ft.
il11"""'''l: ,"
:""':""
. MI I:'"
,:-:"t4
-, 1*,1;,.-:"
",,:t:tm
,),.:" . ,"',w'
.
..),.+...
..
'i .
;',',' ',"
.. '(!J .,-- .
."'1 .
, \,,' 'cr' 1.( 1:"
. ... ' .'." .',
.' .,""" .. r,"
"::, .. ' ':;r. ... ,.
,
.: .
l' ";;1F?:.< ..
'. .. l ,n "'.. ""'.. " ..... n... lin.. I ... ....,,'
'. - fi"
,.,,""-' "'1"'" , >i'" ,
.".,-
""'1;\1 i'm' t,s.t."'
" "":,,,-
F
39 C di PCI I di diD t' II \. C/BEI3 OJ d 1 ,--.c'l!!il,
19ura 11. oman . coman sono co ca 1 su e mee : urante a ...
fase .di successivameIl;te, du:ante it quattro Iinee hanno
funZlOne di Byte Enable e vengono (rt}88Sertte per ogm da.to
. j'i.'i;1,'., .
'::.,\ 1{1" ''f'll.'!j('l;f,
"r ....,"" ,',
. .. .... r
r1.1ascla 11 che fino a quel momenta aveva pllotato per permettere a un
eli entrarne In contrello.
Le PCI, sia di lettura che di scrittura, parteno sempre con
del segnale FRAME da parte del master
39
. n segnale FRAME resta assento fino ali!.;\'
della. transazione (pili precisamente, viene disasserito sull'ultimo delo di '.:
della transazlOne). ....) .
Sui primo cicIo di clock l'iniziatore specifica il tipo di transazione voluta
linee C/ BE. Al clock successivo puo cominciare la fase di trasferimento dati. La
dati (master in caso di scrittura, slave in caso di lettura)
cornspettlvo segnale xRDY (x sta per loT a seconda della sorgente del datl) ogm
qual, volta i sono I dati vengono su tutti fronti. del .clock
entrambl 1 segnali. di 1R?Y.e TRDY sono attlVl. Se uno dl questl edlsassento <;.
81 Vlene a generare un ClelO di Walt .
. .' "','" '1'\"
.,is". ,. . :I' I" .
.-=:;,r:jlf;, ; , .; '.;<:
.. , . . ..
. . . "
In Figural1.40 e mostrata la temporizzazione di una transazione di)!k.. .- ", ,;;:
lettura. La transazione si svolge nel modo seguente: ' .
,.'
1. Clock 1. La transazione ha inizio quando it master attiva il segnale di
avendo posta sulle linee AD[O:31]I'indirizzo e sulle linee C/BEIO : 3J il comando ::'j';l!il
dl lettura. ';"1\!ll #in.,
.. ;-!I' -; "
'.-":'.,' '.. \'
__ .. _ '. .'r' .
2. Clock 2. n master asserisce IRDY e Ie linee C/BE[O: 31 assumono significato di .. >}!':, :
Byte Enable. n ciclo viene lasciato passare per dare il tempo di stabilizzarsi alle >i.i:G' . I
linee AD (che cambiano proprietario, dall'iniziatore all'obiettivo).
'm " v,-l, :1, .' ..
3. Clock 3. Ha inizio 180 fase dei dati. n dispositivo risponde al master asserendo il
segnale di DEVSEL e iJ segnale TRDY. . :;,'f;i. .' "'::.":
. ,.,., I'
e"
:'j]i,,, ' ,'J;
""'.' . \1'" 'j
'. . ;
39
11 master deve essere in controllo del bus, questa richiede la fase di axbitraggio di cui si parla piu
. {'"'" I )'i'
avantl. ,......$. . f
'r':,
, '" .'.-- . .
. :' . ."V,,\
492
1.

).
-

\ .
l.
\ .

1.
I
I .
l .
\ .
I.
I.
I.
1.


Ph<>.sco
Bus T"'onso.c"'lon
Do,,,,
Ph,."..
Vo..'" - Volt Vo.l"t

-=-,-_. . ..,-=-,....
Adol ..
Ph,. ..
6. Clock 6. La slave ha posto il secondo data sul bus e ha asserito TRDY. L'inizia-
tore, essendo sia TRDY che IRDY asseriti) legge il data.
7. Clock 7. Questa volta e l'iniziatore ad avere bisogno di piu tempo, per cui
disasserisce IRDY inserendo cosl un ciclo di attesa. 10 slave manterra il data suI
bus per un cielo extra. L'iniziatore, in previsione della conclusione al prossimo
cicio disasserisce FRAME.
8. Clock 8. La ,lave mantiene il data sul bus per questa cicio a causa della stato di
attesa introdotto da IRDY al cicio precedente.
,
Fine trasferimento La fine <Ii un trasferimento puc essere comandata sia daI mas-
ter che claIlo slave, anche se il tutto viene sempre concIuso daI master (FRAME e
IRDY disasseriti).
11, 12 13 14 IS 16 Ie 19 I
:f\ :f\ !f\ :f\ !f\ ' '!f\ :
CLK 1 U L ..J Ll LJ 'L
'
LJ
1 I I I I I I I ...+--
""''''r-\ I I I , I I I 1-
F'RAME I' I I I I /' -.v
'. I I , I '. l I
I I 1,1 I I
1 D:",,,, l hI Dt",o.2 !"'''' 3 !I
AD :...--A X+ ! >-----V-
I a.......01 ",. noll:>llIP "'t' En.o!t>1 ott' EnG"'t I
-, ,A
C/BE I I ( I I I _
, -.v
.......... 1'1 I' l
TROY 1 :: /:: / :
I \! I ! I I. I
. I I I I I I I
I "'i"" I I
fRDYl I I I.
, I I I I I
, ,
'/T' ,
l...l/
DEVSEL I I I I
, , I
D",'l:o T,.o.ns-f"co,.s I ""o.lt: $'I:,."'cos I
Bus di 'sistema 493
La scrittura Una transazione a blocchi eli scrittura mostrato in Figura 11.41. n
protocollo esimile a queUo di lettura. Si nota soltanto l'assenza del cicIo di transizione
sulle linee AD, poiche sono sempre pilotate dall'ini'ziatore.
. 4. Clock 4. Essendo IRDY e TRDY asseriti, viene trasferito il primo dato.
5. Clock 5. La slave ha disasserito TRDY evidentemente non ein grado
di produrre il secondo data) causando un cicIo d.i attesaj Del frattempo 10 slave
mantiene sulle linee AD il dato precedente.
11.40 Transazione our"t eli lettura. La. transazione trasferisce tre dati. A parte il
primo ciclo eli a.ttesa (clock 2), necessario per la stabilizzazione dei segnali, i due ulteriori
cicli eli attesa sono generati rispettivamente da.1lo slave e dal master. Notate che Ie linee BE
vengono asserite per ogni da.to trasferito.

,,"" "m
",n
"m
Tlpo c:l1 co.....nc:lo
0 0 0 0 Inttrrupt o.ckno"ltc:lgr
0 0 0 I SptCiOl cyclr
0 0 I 0 1/0 r,o.<;I
0 0
,
I
[/0 ..,tt
0 I 0 0 r'5.. r".. <;1
0 I 0 I rts,.. " .. c:I
0
,
I 0 1'I.. ",or)' rto.d
0 I
,
I l'Ie,",ory "rltt
I 0 0 0 r.,.. r"ec:l
I 0 0 I res,rv,c:I
I 0
,
0 conflg...... o.t:on rto.c:I
,
0
,
I confIgura. tlOn ...11; ..
I I 0 0 _,",ory rt'o.d ....... t101..
, ,
0 I c:lun!-o.c:I<;Ir .. s-s eye!..
, , ,
0 I'Itl'\Or)' rto.d lint
,
I I I ""'l'Iory "",1." nnc:l 1,,,,o.Uc:lo.tlP
Capitolo 11
La lettura
:,/,.
.. ..
",?!J", ;.
"I"

i
0);,1&';

'.
',Ilf,.\\. .
,","'''. .
" ...\<VI
.
, ,'"
","i-'.
;':'] .. .. ,:.'
.
,',',.
.:,1
11
,'rtt:r.:t.'',
:(,ft.
il11"""'''l: ,"
:""':""
. MI I:'"
,:-:"t4
-, 1*,1;,.-:"
",,:t:tm
,),.:" . ,"',w'
.
..),.+...
..
'i .
;',',' ',"
.. '(!J .,-- .
."'1 .
, \,,' 'cr' 1.( 1:"
. ... ' .'." .',
.' .,""" .. r,"
"::, .. ' ':;r. ... ,.
,
.: .
l' ";;1F?:.< ..
'. ..
l ,n "'.. ""'.. " ..... n... lin.. I ... ....,,'
'. - fi"
,.,,""-' "'1"'"
, >i'" ,
.".,-
""'1;\1 i'm' t,s.t."'
" "":,,,-
F
39 C di PCI I di diD t' II \. C/BEI3 OJ d 1 ,--.c'l!!il,
19ura 11. oman . coman sono co ca 1 su e mee : urante a ...
fase .di successivameIl;te
,
du:ante it quattro Iinee hanno
funZlOne di Byte Enable e vengono (rt}88Sertte per ogm da.to
. j'i.'i;1,'., .
'::.,\ 1{1" ''f'll.'!j('l;f,
"r ....,"" ,',
. .. .... r
r1.1ascla 11 che fino a quel momenta aveva pllotato per permettere a un
eli entrarne In contrello.
Le PCI, sia di lettura che di scrittura, parteno sempre con
del segnale FRAME da parte del master
39
. n segnale FRAME resta assento fino ali!.;\'
della. transazione (pili precisamente, viene disasserito sull'ultimo delo di '.:
della transazlOne). ....) .
Sui primo cicIo di clock l'iniziatore specifica il tipo di transazione voluta
linee C/ BE. Al clock successivo puo cominciare la fase di trasferimento dati. La
dati (master in caso di scrittura, slave in caso di lettura)
cornspettlvo segnale xRDY (x sta per loT a seconda della sorgente del datl) ogm
qual, volta i sono I dati vengono su tutti fronti. del .clock
entrambl 1 segnali. di 1R?Y.e TRDY sono attlVl. Se uno dl questl edlsassento <;.
81 Vlene a generare un ClelO di Walt .
. .' "','" '1'\"
.,is". ,. . :I' I" .
.-=:;,r:jlf;, ; , .; '.;<:
.. , . . ..
. . . "
In Figural1.40 e mostrata la temporizzazione di una transazione di)!k.. .- ", ,;;:
lettura. La transazione si svolge nel modo seguente: ' .
,.'
1. Clock 1. La transazione ha inizio quando it master attiva il segnale di
avendo posta sulle linee AD[O:31]I'indirizzo e sulle linee C/BEIO : 3J il comando ::'j';l!il
dl lettura. ';"1\!ll #in.,
.. ;-!I' -; "
'.-":'.,' '.. \'
__ .. _ '. .'r' .
2. Clock 2. n master asserisce IRDY e Ie linee C/BE[O: 31 assumono significato di .. >}!':, :
Byte Enable. n ciclo viene lasciato passare per dare il tempo di stabilizzarsi alle >i.i:G' . I
linee AD (che cambiano proprietario, dall'iniziatore all'obiettivo).
'm " v,-l, :1, .' ..
3. Clock 3. Ha inizio 180 fase dei dati. n dispositivo risponde al master asserendo il
segnale di DEVSEL e iJ segnale TRDY. . :;,'f;i. .' "'::.":
. ,.,., I'
e"
:'j]i,,, ' ,'J;
""'.' . \1'" 'j
'. . ;
39
11 master deve essere in controllo del bus, questa richiede la fase di axbitraggio di cui si parla piu
. {'"'" I )'i'
avantl. ,......$. . f
'r':,
, '" .'.-- . .
. :' . ."V,,\
492
-\ i
- I
- .
I
I
REa REa
cjlsposl"t.
I I
dlli"posl"t.
'CI GNT GNT
'CI
'CI
REa Arblt. REa
dlsposlt.
I I
dlsposi"t.
'CI GNT GNT
PCI
a) Retry: 10 slave chiede a1 master di ritentare piu tardij
b) Disconnect: 10 slave chiede di smettere il trasferimento corrente;
c) Target abort: 10 slave non vuole che si riattivi il trasferimento nem-
meno in un secondo momento.
a) Fast se rispondono al primo clock dopo FRAME;
b) Med se rispondono al secondo clock dopo FRAMEj
c) Slow se rispondono al terzo clock dopo FRAME.
Tralasciamo di i relativi diagrammi temporali.
Esempio di arbitraggio tra due master CODsideriamo due master A e B e
supponiamo che B abbia. piu alta priorita. eli A
,
e che faccia richiesta di usa del bus
dopo A, quanta basta perche A entri in cantrollo del bus. In queste ipotesi si ha la
sequenza schematizzata in Figura 11.43.
Figura 11.42 Schema. di arbitra.ggio PCl. Uarbitro, centra.lizza.to e paraUelo
l
viene detto
PCI central resource.
Lo schema equeUo centralizzato paralielo visto nel Paragrafo 11.3.2, riportato per
comodita in Figura 11.42. Da notare che l'arbitraggio enascosto, doe avviene durante
il trasfeiirnento precedente, in modo che nessun cielo ill bus venga penalizzata.
11.7.4 Arbitraggio
Se nessun dispositiva a decodifica positiva risponde entro i primi 3 clock daWat-
tivazione del segnale FRAME, aliora a1 quarto clock puo rispondere il
sitivo can decodifica sottrattiva. Nel caso che non vi sia nessuna. risposta, il
trasferimento si conclude senza che venga eseguita nessuna transazione.
La terminazione da parte del master richiede che FRAME e IRDY siano disas-
seriti e che anche TRDY passi in questa stato.
FiDe trasferimeDto comandata dallo slave L'obiettivo usa il segnale STOP per
chiedere al master la conclusione del trasferimento. ntrasferimento continua. fino
a quando il segnale di FRAME non viene disattivato.
Esistono tre modalita:

ffiij};.' ',I
Bus di sistema. 495
----------------------------_...:::.::::..:::..::.::==---


,./ \".'.0


1fr.ll'..
' -
n.i.::'; ':: ,
" ..
'
':,;".,,1-.,'
:: ..,
I... -,

__>-i'<t '
'.\'.'!1;".".
.. ,.-,.."-,,
'::'''?;.', I:,
,":/."" "of,
.,
I'.!:"" ...
,. '"i*11 ,
.<... -yn--f '. "
:m ,-,-t,:::;;.:
, l;{ ';i' '.
::r,: :;:,;"



.'j' \\l!I.>:i ..
.. ..;i'\"':'
:':".,;,:" ,.<
1,",,--,h It " .. ' .. '
"".'.1 tffi :::'/1'1.'.::
.i
t
..
,'s .... 0'1.,;' ;-:-...
.
"'!",.... , ..
'
0' 1"'''1''.\.:''''
."'.:;t

",' .,."",-",IJ.. ",1"".,1'1,
,. if."}'''.;.
..,. '
,-
-,,1
T
-.'W.
.:', :'\):1
1
,
.. _;11,.'1"\
,':)it
.....
- .,i
.'
O::"\ii1h:,

,. ..?,'
, '" ..,.', '-'! - -'.'
..
'.\';.\,r <'<.. j'
."' .-:;<.<.,
",., '"
.,.\:.,.") .. ..

.,'
.,..;<'f
I . r......
, . . ,0;;". _
,'l".><.}"'" . \t. 1f.";.-"
":....!Il'" ,...... ,:.....
.,\,', '.. lfiI.!,,,,,.l-
.
;"'\':1" .';' '
4'. /1;1- ,. ,,)l!'" ,.
., :;:'fu.l;, . 1.;;"'1:',""'"
,F ..
.. , .",
t'
, ,:
,''':*''f;' ,\ .....,.,
.: ".V' ,'-.

.... III "'. .
J,

, ,:
' . ;., ,-
... ,
',".,' '-'of.
,
';',A:j!l%lJ: '
. '",,,,, ., '. i',.. ,
:-.',,"'"
'0,"1". 1
j'l" ".,.
,':::l:ffi
'. w"'- .. , .
(o;(' ..
",I.' ,I;... 'r '''''':'i',
,: ',.-0"."",. ....

.. ':
'r.. =8!
,_ . . f
....* :, :.i\,,;" .
"".%j' '" ,.
,",,\.'. 0
':1';;"""
_. ".,j ':" ..'.
.. 0il,".1;
:;V"'ii.:?t: ':'N..
. l1'''::t ,
''.(:'! ".......,".
,:/[.'1-: - ..
,
\ .. ",' , ,'.
.. ,' ". -"r''
'.>:;...... " :'#.T.... ;,
.. ".:
. "'o1jf oYUJ.-;,
';:
",:"
.
.'tI::';':;:: .., "
.:;:-.

:'.-tl "p",.N:'-:. '
, f,k' 'fHI'-I.?'-": "
',) .._
..
Le cause che portano il master a ter-
Da'ta
Pho.se
Do:t..
Pha.se
Bus: Tro.nsac"tlOf\
I
'JCllt 1.1..11:' Walt
Sto.-teo 'Stote
I , , ,
Addr.. ss: Oo.t ..
Phase Phose
H
,
A
,
A
,
A
, , , ,

,
, , , , , , , ,
'Jolt Sto:tvs ,
A
, , , , , , , ,
,
y\
, ,
I
,
\
, , ,
I
, ,
lnse.-lti <.Ia\
, , , , , , , , ,
1;<>...-"e1;
, ,
,
' ,
,
, ,
,
+
, , , ,
, , , ,
,
-.v
, '1'
,
: \ : I
, ,
, , , , , , , ,
, ,
1:/: :
, ,
I: :
,
I
"':-
, , ,
'"
, , , , , ,
I :
,
, , , , , , , , ,
, , ,
I
ITro.sferlnentl I
\lolt 51:0:t. In:nrlto do
I T.. O's: ..........flnto I
"tQr"e-t eo InIzlo:tore
Capitolo 11
II 12 13 14 15 16 17 19
1/\ ff\ !n !n !n I t :/\ I
LJ LJ L
1
I \.J
II l 111),-..1
t\: 1 1-: \ 1 J..-- :J Uttl"o. 'flU dCltl1
t 1 I ,t' I ! i
I 'I I I I I I
I Add!eoss D91;4 Da to ! Do1:", I I I I
AD H : 't. : X Xl:: }---1:- :
I 4 \ 1 1 .,. I
1 BuslCl'ld Bvlte F;no.l:les Byte Enub\"s I I I
I I I \/ I \/ I \1 I I \ I
ClK
C/'"
FRARE:
Fine trasferimento comandata daJ. master
minare un trasferimento sono tre:
1) completamentoj
2) timeout;
3) conclusione anticipata (master abort).
DE:VSEL
Figura 11.41 Temporizzazione durante una scrittura PCI. Anche questa. transazione tras
ferisce 3 dati. I segnali DEVSEL e TRDY possono essere asseriti fin daJ secondo cicIo di
clock. Al terZQ clock, iniziatore e 'obiettivo completano la prima fase dati (IRDY e TRDY
asseriti). Sul (fronte di salita del) quarto clock viene trasferito i1 secondo date a zero cieli
di at.tesa. Per il teno dato, ha bisogno di pin tempo, per cui inserisce un cido
eli attesa disasserendo IRDY (cleve comunque essere puntuale nel variare il GIBE relativo
a questo dato). Si e fatta l'ipotesi de a.nche 10 slave necessiti di piu tempo e che percib
disasserisca TRDY. Sui cido in cui l'iniziatore disasserisce IRDY non aggiorna il bus dei
dati. Quando il master edi nuovo pronto c'e da scontare l'attesa invocata dal target trarnite
TRDY. 5i noti che FRAME e apparentemente disattivato malta presto; in realta. e disatti-
vato su quello che per il master sarebbe stato il cielo precedente all'ultimo, se non ci fossero
stati i due cieli di attesa introdotti dallo slave.
,..",
n primo caso eovvio e corrisponde agli esempi visti. Nel secondo caso si ha
sospensione dello scambio perche eterminato il tempo a disposizione del master
e il segnale GNT estato disattivato dalia logica di arbitraggio. n terzo caso si
ha quando i segnaJi TRDY e DEVSEL non vengono mai attivati perche nessun
dispositivo risponde al master.
A tale proposito si evidenzia che i dispasitivi che decodificano in -'positivo si
dividono in tre categorie in base alia lora velocita nel rendere attivo DEVSEL:
""'"
494
I
1
\
I
l
\
I
I
)
I
.
I
I

-
-

-
,
-\ i
- I
- .
I
I
REa REa
cjlsposl"t.
I I
dlli"posl"t.
'CI GNT GNT
'CI
'CI
REa Arblt. REa
dlsposlt.
I I
dlsposi"t.
'CI GNT GNT
PCI
a) Retry: 10 slave chiede a1 master di ritentare piu tardij
b) Disconnect: 10 slave chiede di smettere il trasferimento corrente;
c) Target abort: 10 slave non vuole che si riattivi il trasferimento nem-
meno in un secondo momento.
a) Fast se rispondono al primo clock dopo FRAME;
b) Med se rispondono al secondo clock dopo FRAMEj
c) Slow se rispondono al terzo clock dopo FRAME.
Tralasciamo di i relativi diagrammi temporali.
Esempio di arbitraggio tra due master CODsideriamo due master A e B e
supponiamo che B abbia. piu alta priorita. eli A
,
e che faccia richiesta di usa del bus
dopo A, quanta basta perche A entri in cantrollo del bus. In queste ipotesi si ha la
sequenza schematizzata in Figura 11.43.
Figura 11.42 Schema. di arbitra.ggio PCl. Uarbitro, centra.lizza.to e paraUelo
l
viene detto
PCI central resource.
Lo schema equeUo centralizzato paralielo visto nel Paragrafo 11.3.2, riportato per
comodita in Figura 11.42. Da notare che l'arbitraggio enascosto, doe avviene durante
il trasfeiirnento precedente, in modo che nessun cielo ill bus venga penalizzata.
11.7.4 Arbitraggio
Se nessun dispositiva a decodifica positiva risponde entro i primi 3 clock daWat-
tivazione del segnale FRAME, aliora a1 quarto clock puo rispondere il
sitivo can decodifica sottrattiva. Nel caso che non vi sia nessuna. risposta, il
trasferimento si conclude senza che venga eseguita nessuna transazione.
La terminazione da parte del master richiede che FRAME e IRDY siano disas-
seriti e che anche TRDY passi in questa stato.
FiDe trasferimeDto comandata dallo slave L'obiettivo usa il segnale STOP per
chiedere al master la conclusione del trasferimento. ntrasferimento continua. fino
a quando il segnale di FRAME non viene disattivato.
Esistono tre modalita:

ffiij};.' ',I
Bus di sistema. 495
----------------------------_...:::.::::..:::..::.::==---


,./ \".'.0


1fr.ll'..
' -
n.i.::'; ':: ,
" ..
'
':,;".,,1-.,'
:: ..,
I... -,

__>-i'<t '
'.\'.'!1;".".
.. ,.-,.."-,,
'::'''?;.', I:,
,":/."" "of,
.,
I'.!:"" ...
,. '"i*11 ,
.<... -yn--f '. "
:m ,-,-t,:::;;.:
, l;{ ';i' '.
::r,: :;:,;"



.'j' \\l!I.>:i ..
.. ..;i'\"':'
:':".,;,:" ,.<
1,",,--,h It " .. ' .. '
"".'.1 tffi :::'/1'1.'.::
.i
t
..
,'s .... 0'1.,;' ;-:-...
.
"'!",.... , ..
'
0' 1"'''1''.\.:''''
."'.:;t

",' .,."",-",IJ.. ",1"".,1'1,
,. if."}'''.;.
..,. '
,-
-,,1
T
-.'W.
.:', :'\):1
1
,
.. _;11,.'1"\
,':)it
.....
- .,i
.'
O::"\ii1h:,

,. ..?,'
, '" ..,.', '-'! - -'.'
..
'.\';.\,r <'<.. j'
."' .-:;<.<.,
",., '"
.,.\:.,.") .. ..

.,'
.,..;<'f
I . r......
, . . ,0;;". _
,'l".><.}"'" . \t. 1f.";.-"
":....!Il'" ,...... ,:.....
.,\,', '.. lfiI.!,,,,,.l-
.
;"'\':1" .';' '
4'. /1;1- ,. ,,)l!'" ,.
., :;:'fu.l;, . 1.;;"'1:',""'"
,F ..
.. , .",
t'
, ,:
,''':*''f;' ,\ .....,.,
.: ".V' ,'-.

.... III "'. .
J,

, ,:
' . ;., ,-
... ,
',".,' '-'of.
,
';',A:j!l%lJ: '
. '",,,,, ., '. i',.. ,
:-.',,"'"
'0,"1". 1
j'l" ".,.
,':::l:ffi
'. w"'- .. , .
(o;(' ..
",I.' ,I;... 'r '''''':'i',
,: ',.-0"."",. ....

.. ':
'r.. =8!
,_ . . f
....* :, :.i\,,;" .
"".%j' '" ,.
,",,\.'. 0
':1';;"""
_. ".,j ':" ..'.
.. 0il,".1;
:;V"'ii.:?t: ':'N..
. l1'''::t ,
''.(:'! ".......,".
,:/[.'1-: - ..
,
\ .. ",' , ,'.
.. ,' ". -"r''
'.>:;...... " :'#.T.... ;,
.. ".:
. "'o1jf oYUJ.-;,
';:
",:"
.
.'tI::';':;:: .., "
.:;:-.

:'.-tl "p",.N:'-:. '
, f,k' 'fHI'-I.?'-": "
',) .._
..
Le cause che portano il master a ter-
Da'ta
Pho.se
Do:t..
Pha.se
Bus: Tro.nsac"tlOf\
I
'JCllt 1.1..11:' Walt
Sto.-teo 'Stote
I , , ,
Addr.. ss: Oo.t ..
Phase Phose
H
,
A
,
A
,
A
, , , ,

,
, , , , , , , ,
'Jolt Sto:tvs ,
A
, , , , , , , ,
,
y\
, ,
I
,
\
, , ,
I
, ,
lnse.-lti <.Ia\
, , , , , , , , ,
1;<>...-"e1;
, ,
,
' ,
,
, ,
,
+
, , , ,
, , , ,
,
-.v
, '1'
,
: \ : I
, ,
, , , , , , , ,
, ,
1:/: :
, ,
I: :
,
I
"':-
, , ,
'"
, , , , , ,
I :
,
, , , , , , , , ,
, , ,
I
ITro.sferlnentl I
\lolt 51:0:t. In:nrlto do
I T.. O's: ..........flnto I
"tQr"e-t eo InIzlo:tore
Capitolo 11
II 12 13 14 15 16 17 19
1/\ ff\ !n !n !n I t :/\ I
LJ LJ L
1
I \.J
II l 111),-..1
t\: 1 1-: \ 1 J..-- :J Uttl"o. 'flU dCltl1
t 1 I ,t' I ! i
I 'I I I I I I
I Add!eoss D91;4 Da to ! Do1:", I I I I
AD H : 't. : X Xl:: }---1:- :
I 4 \ 1 1 .,. I
1 BuslCl'ld Bvlte F;no.l:les Byte Enub\"s I I I
I I I \/ I \/ I \1 I I \ I
ClK
C/'"
FRARE:
Fine trasferimento comandata daJ. master
minare un trasferimento sono tre:
1) completamentoj
2) timeout;
3) conclusione anticipata (master abort).
DE:VSEL
Figura 11.41 Temporizzazione durante una scrittura PCI. Anche questa. transazione tras
ferisce 3 dati. I segnali DEVSEL e TRDY possono essere asseriti fin daJ secondo cicIo di
clock. Al terZQ clock, iniziatore e 'obiettivo completano la prima fase dati (IRDY e TRDY
asseriti). Sul (fronte di salita del) quarto clock viene trasferito i1 secondo date a zero cieli
di at.tesa. Per il teno dato, ha bisogno di pin tempo, per cui inserisce un cido
eli attesa disasserendo IRDY (cleve comunque essere puntuale nel variare il GIBE relativo
a questo dato). Si e fatta l'ipotesi de a.nche 10 slave necessiti di piu tempo e che percib
disasserisca TRDY. Sui cido in cui l'iniziatore disasserisce IRDY non aggiorna il bus dei
dati. Quando il master edi nuovo pronto c'e da scontare l'attesa invocata dal target trarnite
TRDY. 5i noti che FRAME e apparentemente disattivato malta presto; in realta. e disatti-
vato su quello che per il master sarebbe stato il cielo precedente all'ultimo, se non ci fossero
stati i due cieli di attesa introdotti dallo slave.
,..",
n primo caso eovvio e corrisponde agli esempi visti. Nel secondo caso si ha
sospensione dello scambio perche eterminato il tempo a disposizione del master
e il segnale GNT estato disattivato dalia logica di arbitraggio. n terzo caso si
ha quando i segnaJi TRDY e DEVSEL non vengono mai attivati perche nessun
dispositivo risponde al master.
A tale proposito si evidenzia che i dispasitivi che decodificano in -'positivo si
dividono in tre categorie in base alia lora velocita nel rendere attivo DEVSEL:
""'"
494
I
1
\
I
l
\
I
I
)
I
.
I
I

-
-

-
,


)
-

-
\ -
-
I
I -
\ -
I
l
,
I '
\
I.
I.
I
sta per fare l'ultimo
9. SuI settimo fronte di clock avviene 10 scambio dati di B; it rilascio di IRDY da
parte di B riporta il bus nello stato inattivo. nmaster A riconoscera it bus libero
suU'ottavo fronte di salita del clock e riprendera it controllo del bus.
7. SuI fronte di salita del sesto ciclo di clock, l'arbitro campiona la richiesta di B
,disasserita e subito commuta i segnali di grant.
8. Sempre suI sesto clock, B disasserisce FRAME perche
trasferimento dati.
6. Sui fronte di ,alita del quinto ciclo di clock il master B campiona il bus libero
(FRAME e IRDY disasseriti) e avvia una nuova transazione,'asserendo FRAME
e pilotando indirizzi e comandi suI bus.
S. SuI fronte di salita del quarto ciclo di clock c'e il trasferimento di J\ che e anche
l'ultimo inn fase. n master A ha anche IRDY per indicare a110
. .
slave la fine del trasferimento, riportando il bus aUo stato di riposo.
Capitolo 11
4. SuI fronte di salita del terzo ciclo di clock, l'arbitro sposta it grant dal master
A al master B. n master B non pub comunque usare it bus, ,finche non e
tomato ailo stato di riposo. Intanto it master A disasserisce FRAME.

'..
.


,-
. .
.- , B=.:us::...::di::...::'IS::t.:.:e::m::a=----=4.:.:9.:.:7
'
1,iilll:
1v
llim;::\'
1,.
,""-f" (
11 12 13 14 15 16 I I '- .. ;1'
'rJL'rLrJL'nJ\J1 .. tUili:':;!:',
eLK I I I I J I t I ; ,',. .. .
"'';'!"
:','j.:"f';.' ":..
I I I I I I I I . ,i1'!.jj
1 1 I t I I 1 I .:,Tj;;1!;;
I I I j I I I I
REQ A I I I I 1 I I I
I t I I 1 i I

I I I I I I I f,l' ,
- . .
REO B I I I I I I t I I '\0}"
I I I 1 \ I I I .. ..t,
I .' j I I . ',:,." "l.
, , 1 , _. "i' '" 'l\--''''",
I I I I I 1 I 1 '.
i\
' ,I I I I \ I I - .:):d.... . ,
GNT A I I I I I I I I .. :l..
, ., , , , , " . ,-\"" ..'"
It Mo.s1:e-r A Inl%.lo.
I I 1 I I I I I ... I
I I I I I I I .i \0. souo. 1:.... o.nso.zlon. /I
GNT B I 1 1 \ I I I I I I.
I I I I I I. I ..
, , , I w.\.i(I'. ,
".... l ,.,0 .. 1:...... Inl%lo
==I !...... ,' r I ,I !...... ,- I f! 1 \0. suo 1:ronsozione
FRAME I -.....- I -.....- I I (,-
I til I I 1 1 ..... :.-1';""""
I I I I I I I ' .. :fj1kr:;::;.'
1 I Adcres5 DCl1:o. t Address O!1:o. I
I 1 / iX' )- I / I X i ) ! ..'i:",,"
AD ,---r--, I I -r--, I: I .
I I .1 I 1 I I Bleil I ,o;:""j"'\'
1 I lDo.1:0 dl A 1 10.1:0 dl B us e ,"':"
l : 1:, I': '1:LlJ:./ r:
"I"R"D"Y I I I \ I' I I I -
1 I I I j I '1 1:ro.sf ..ri.....n1:o I . . b k S 1 . . REQ li
: : l' l' '1' : : . clo.1:1 ' ac _e 1. e se g ,;ene
T"'R;;;D"'Y I I Y'\ / I Y'\! r I)J JJ tenuto per di nchies.te pl.U puo una sene eli
I 1 ' 1 C I I Y-J 1 -!-/ .. dando aI coslddettl clcli back-to-back, unpegnando al
. masSlmo 11 bus, come Illustrato In FIgura 11.44.
11.43 dur.ante del controllo a un piu prio- '6
ntano (bus exchange). Sl efatta l'lpotesl we 11 master B debba trasfenre un solo dato e '
rilasci la. sua. Al contrario il A effettuare iI . .
menta di pru datI. Per questa motlvo, dopa che ha ceduto II bus (d1sasserendo FRAME), !. 11.7.5 Prestazlonl
master A non disasserisce la REQ, in qua?to con il
che avverra dal clock 8 se non mtervengono attn master pIll pnontan. ' .\l;, , : . . .
In lettura occonono almeno 3 cIcll di clock per leggere un dato. Can un clock di
,33MHz, si avrebbe un trasferimento in 9005. Nel caso peggiore, doe con transazioni
1. nmaster A aveva inoltrato la richiesta antecedentemente al primo cicio di clock c?e un. solo dato, :enu.to canto che tra
. 1' 1 b A (GNT .). fr .. d .' . clclo dl pasSagglO. (30 ns), 51 ottlene un valore masSlIDO di 8,33 miliom <Ii trasfenmentl
per cm arbltro assegna 1 us a assento suI onte dI salIta el prtmo , ... I'l . ..,." IdS t f t 32 bt' - il t <Ii 33 33 Mbyt /
. I d I ck' i> a 5econ o. e 1 ras enmen 1 sono a 1 51 ragglUnge asso , e sec.
CICO ,CO . S .. . . . h ff I d t . t' 32
.'" : 51 IpotIzzan.o c e e un numero e evato 1 . ra.: 1 a .
.....:'1r.
2
. blt, senza statl dI attesa, tale per CUI 51 poasa trascurare la fase di mdirizzamento, Sl
2. SuI fronte ill salita del secondo ciclo di clock il master A campiona GNT asseritoj I' ha un trasferimento a clock. Ovvero 33 mUioni d.i trasferimenti al secondo, per un
i segnali FRAME e IRDY d.isasseriti indicano che it bus e nello state idle. A totale (massimo) di 132 Mbyte/sec.
questa pu?-to A d.a la: transazione, asserendo FRAME e pilotando .. In Ie rist:Ita:n0 in .quanto e il di
e comandl Bulle nspettIve linee. SlZlQne neI van II rtsultato di .nchi;dere 60ns per il pnmo trasfen-
.. mento e 30 n, per I suCCes51VL CIa porta a veloclt!> di 66.64 Mbytes/. e 132 Mbytes/s
, . . . . .. '.. rispettivamente. Come gia. citato altre volte, anche nel PCI bus U tempo di Iatenza
3. L arbItro del.bus camplOna REQ del fronte dl dell'arbitraggio puo risultare eccessivo. lnIatti U che ha vinto
?el cIcio di dando corso dl per determmare deve comunque attendere che l'attuale bus master rilasCl Ubus. Se quest'ultlmo mo-
Il prOSSlffiO bus master (m parallelo con It trasfenmento dati 1n corso). . dulo deve un di pub impedire
.Paccesso ad altn moduli semplicemente nOD disasserendo U FRAM .
. In Figural1.45 viene mostrata la composizione del tempo di latenza (il tempo
. che intercorre tra la richiesta di bus e il completamento del primo trasferimento di
dati della transazione).
:1f.. -'
" .,'
;".Ioi'i ,.;_";1;,,, ,
496


)
-

-
\ -
-
I
I -
\ -
I
l
,
I '
\
I.
I.
I
sta per fare l'ultimo
9. SuI settimo fronte di clock avviene 10 scambio dati di B; it rilascio di IRDY da
parte di B riporta il bus nello stato inattivo. nmaster A riconoscera it bus libero
suU'ottavo fronte di salita del clock e riprendera it controllo del bus.
7. SuI fronte di salita del sesto ciclo di clock, l'arbitro campiona la richiesta di B
,disasserita e subito commuta i segnali di grant.
8. Sempre suI sesto clock, B disasserisce FRAME perche
trasferimento dati.
6. Sui fronte di ,alita del quinto ciclo di clock il master B campiona il bus libero
(FRAME e IRDY disasseriti) e avvia una nuova transazione,'asserendo FRAME
e pilotando indirizzi e comandi suI bus.
S. SuI fronte di salita del quarto ciclo di clock c'e il trasferimento di J\ che e anche
l'ultimo inn fase. n master A ha anche IRDY per indicare a110
. .
slave la fine del trasferimento, riportando il bus aUo stato di riposo.
Capitolo 11
4. SuI fronte di salita del terzo ciclo di clock, l'arbitro sposta it grant dal master
A al master B. n master B non pub comunque usare it bus, ,finche non e
tomato ailo stato di riposo. Intanto it master A disasserisce FRAME.

'..
.


,-
. .
.- , B=.:us::...::di::...::'IS::t.:.:e::m::a=----=4.:.:9.:.:7
'
1,iilll:
1v
llim;::\'
1,.
,""-f" (
11 12 13 14 15 16 I I '- .. ;1'
'rJL'rLrJL'nJ\J1 .. tUili:':;!:',
eLK I I I I J I t I ; ,',. .. .
"'';'!"
:','j.:"f';.' ":..
I I I I I I I I . ,i1'!.jj
1 1 I t I I 1 I .:,Tj;;1!;;
I I I j I I I I
REQ A I I I I 1 I I I
I t I I 1 i I

I I I I I I I f,l' ,
- . .
REO B I I I I I I t I I '\0}"
I I I 1 \ I I I .. ..t,
I .' j I I . ',:,." "l.
, , 1 , _. "i' '" 'l\--''''",
I I I I I 1 I 1 '.
i\
' ,I I I I \ I I - .:):d.... . ,
GNT A I I I I I I I I .. :l..
,
., , , , , " . ,-\"" ..'"
It Mo.s1:e-r A Inl%.lo.
I I 1 I I I I I ... I
I I I I I I I .i \0. souo. 1:.... o.nso.zlon. /I
GNT B I 1 1 \ I I I I I I.
I I I I I I. I ..
, , , I w.\.i(I'. ,
".... l ,.,0 .. 1:...... Inl%lo
==I !...... ,' r I ,I !...... ,- I f! 1 \0. suo 1:ronsozione
FRAME I -.....- I -.....- I I (,-
I til I I 1 1 ..... :.-1';""""
I I I I I I I ' .. :fj1kr:;::;.'
1 I Adcres5 DCl1:o. t Address O!1:o. I
I 1 / iX' )- I / I X i ) ! ..'i:",,"
AD ,---r--, I I -r--, I: I .
I I .1 I 1 I I Bleil I ,o;:""j"'\'
1 I lDo.1:0 dl A 1 10.1:0 dl B us e ,"':"
l : 1:, I': '1:LlJ:./ r:
"I"R"D"Y I I I \ I' I I I -
1 I I I j I '1 1:ro.sf ..ri.....n1:o I . . b k S 1 . . REQ li
: : l' l' '1' : : . clo.1:1 ' ac _e 1. e se g ,;ene
T"'R;;;D"'Y I I Y'\ / I Y'\! r I)J JJ tenuto per di nchies.te pl.U puo una sene eli
I 1 ' 1 C I I Y-J 1 -!-/ .. dando aI coslddettl clcli back-to-back, unpegnando al
. masSlmo 11 bus, come Illustrato In FIgura 11.44.
11.43 dur.ante del controllo a un piu prio- '6
ntano (bus exchange). Sl efatta l'lpotesl we 11 master B debba trasfenre un solo dato e '
rilasci la. sua. Al contrario il A effettuare iI . .
menta di pru datI. Per questa motlvo, dopa che ha ceduto II bus (d1sasserendo FRAME), !. 11.7.5 Prestazlonl
master A non disasserisce la REQ, in qua?to con il
che avverra dal clock 8 se non mtervengono attn master pIll pnontan. ' .\l;, , : . . .
In lettura occonono almeno 3 cIcll di clock per leggere un dato. Can un clock di
,33MHz, si avrebbe un trasferimento in 9005. Nel caso peggiore, doe con transazioni
1. nmaster A aveva inoltrato la richiesta antecedentemente al primo cicio di clock c?e un. solo dato, :enu.to canto che tra
. 1' 1 b A (GNT .). fr .. d .' . clclo dl pasSagglO. (30 ns), 51 ottlene un valore masSlIDO di 8,33 miliom <Ii trasfenmentl
per cm arbltro assegna 1 us a assento suI onte dI salIta el prtmo , ... I'l . ..,." IdS t f t 32 bt' - il t <Ii 33 33 Mbyt /
. I d I ck' i> a 5econ o. e 1 ras enmen 1 sono a 1 51 ragglUnge asso , e sec.
CICO ,CO . S .. . . . h ff I d t . t' 32
.'" : 51 IpotIzzan.o c e e un numero e evato 1 . ra.: 1 a .
.....:'1r.
2
. blt, senza statl dI attesa, tale per CUI 51 poasa trascurare la fase di mdirizzamento, Sl
2. SuI fronte ill salita del secondo ciclo di clock il master A campiona GNT asseritoj I' ha un trasferimento a clock. Ovvero 33 mUioni d.i trasferimenti al secondo, per un
i segnali FRAME e IRDY d.isasseriti indicano che it bus e nello state idle. A totale (massimo) di 132 Mbyte/sec.
questa pu?-to A d.a la: transazione, asserendo FRAME e pilotando .. In Ie rist:Ita:n0 in .quanto e il di
e comandl Bulle nspettIve linee. SlZlQne neI van II rtsultato di .nchi;dere 60ns per il pnmo trasfen-
.. mento e 30 n, per I suCCes51VL CIa porta a veloclt!> di 66.64 Mbytes/. e 132 Mbytes/s
, . . . . .. '.. rispettivamente. Come gia. citato altre volte, anche nel PCI bus U tempo di Iatenza
3. L arbItro del.bus camplOna REQ del fronte dl dell'arbitraggio puo risultare eccessivo. lnIatti U che ha vinto
?el cIcio di dando corso dl per determmare deve comunque attendere che l'attuale bus master rilasCl Ubus. Se quest'ultlmo mo-
Il prOSSlffiO bus master (m parallelo con It trasfenmento dati 1n corso). . dulo deve un di pub impedire
.Paccesso ad altn moduli semplicemente nOD disasserendo U FRAM .
. In Figural1.45 viene mostrata la composizione del tempo di latenza (il tempo
. che intercorre tra la richiesta di bus e il completamento del primo trasferimento di
dati della transazione).
:1f.. -'
" .,'
;".Ioi'i ,.;_";1;,,, ,
496
I
.
-
I
Figura 11.45
FRARE
-
,t
AD
-
I
nrnv
lROV
I
-
499 Bus di sistema
o
,
,
,
,
,
o
o
,
,
,
,
,
,
,
,
,
,
LOCK o.ssC' ... I'to p.r
,
,.
...... ce.. ".I".
'-V
,
1:"'0.""':50. zlo,...,1 , ,
, ,
, ,
0
.....+-
LOCK ... 1... 0. ..... 0..:1..... 11:0
0
c>opo o. Fl...... C> .. llo.
--
,
, 1: ... 0. .... "'0."'10 .......
,
I I I =>
1 I'" 13 l"'l

I I I
.<",...... : \ : /: :
I I : :
, .....,... I
: -.....l-"'\ I
I I \ I
I I i
, Aplc!"" .... I " i
(
, >- "-'. ,
AD: 1 I > :
..==1 .......... I I
IRDY: I : I
: i \: : I :
: ...f-- I 1 :
TRDY i ............. i \ I
: 1 :.: I :
""'==I /l' I I
DEVSE:L I -.J...-" h:
I I I I
I I I
Tentativo di accesso a un obiettivo bloccato da parte di un master diver-
so dal proprietario In Figura 11.47 viene illustrato il tentativQ di accedere a un
obiettivo bloccato da parte di un master diverso dal proprietario. n segnale LOCK e
tenuto attivo dal master proprietario. L'obiettivo riconosce che chi 10 sta indirizzando
non echi 10 ha bloccato, perche vede LOCK permanentemente asserito.
Continuazione e/o fine di una serie di accessi esclusivi In Figura 11.48 viene
mostrata 1a continuazione e/o la fine di una serie di accessi esc1usivi.
Accesso agli obiettivi non bloccati Durante it periodo di tempo in cui uno
slave e bloccato, i master possono effettuare accessi agli slave non bloccati. Infatti
10 stato del segnale LOCK non ha effetto sulla abilita. di"\lll obiettivo Del rispondere
aBe transazioni. Una normale transazione nOD fa subite il passaggio a disasserito al
segnale LOCK. Sana quindi consentite Ie transaziorll can dispositivi non bloccati.
Se 1a transazione tentasse di indirizzasse l'obiettivo b1occa.to, verrebbe rifiutata come
ilJustrato in precedenza (Figura 11.47).
Figura 11.46 Temporizza.zio:p.e nella fase di instaurazione del LOCK. II master effettua una
transazione che trasferisce un solo dato e lascia 10 slave bloccato. Poiche il master intende
asserire LOCK cleve trovarlo disasserito per inizia.:re la tra.n.sazione. Terminata la transazione,
LOCK rimane asserito a iudicare che e'e uno slave bloccato. Lo slave in questione eadesso
bloccato e non pub essere usato da nessun altro master. Si nati che sui bus e scompa.rsa
I'identita. dello slave blaccato (il suo indirizza); 10 slave essere datato de11a10gica necessaria
a stabilire il proprio blocca e a riconoscere 5e si trova 0 no in stato di blocco.
Accesso esclusivo a un obiettivo L'acquisizione del bus e il blocco di uno slave
sono illustrati in Figura 11.46.
1a disponibilita del bus, deve sincerarsi che la linea wCI< non sia gia in uso. Se la
linea easserita, deve attendere che la fase di blocco in corso abbia termine, osservando
la linea LOCK aisasserita.
to.rg.t
rlspend.
'. '.
,.
,
'3
,
R"ra jjFl" . . ......_ ... .
I IQt.nl:Q per .. I llltf'nl:ll prr .. 1 IQtrtll(l Q 1
o.rbltrQQQlo tQrgrt
elfl bIJ5
.,.
,
Composi2ione del tempo di latenza.
"Qs'tl'r rlehi.. o. It "QS'tltr rte.I'..... ..oster r;chlrc:lr
Il bvs it gro.l'\t I.m Sll'r"';liQ c:lQ
",n target
r rcsliOiOIl'

0

, ,
, \
' \ '
\
' ,
--..,

,
, , , ,
I
! !
..,
, ,
0
I
:
..1......0".. <00
, , ,

,
,' ...1'\'''''0 0<:::C."50
, ,
0
,
0 0
,
_ 'WRITE READ
, ,
,
cc.
1'1 I I I I
I I I I Iii i
'CRT' I I 1 I I I
\ , 1 '. I 1 I
I I 1 I I I I
!\ I I I I I
:, :/ :\ :/ ::
I lIt t I
I I I I I I
1 t I I I I
I I I I I t
, AddrnS D11
0
Add]I',"S Dl1:0 J
(l)i
,
I I I!
,
! \ / l \ / l I 1-0 .1:....0 1:0. ... ,,"'1: plloto
I I I T'IrnV
f--+-!.... , /!
, ,/'--
o 0 0
1m!
Capitola 11
,
,
/
40E questa una. cara.tteristica interessante del PCl. Di norma, infatti, viene cOIlBiderato bloccato
it bus e non uno specmco dispoaitivo, impedendo 30gli altri di comunicare.
11.7.6 Blocco delle risorse
11 PCl consente eli bloccare i singoli slave a uso esclusivo di un master. In un dato
momento puo esserci un solo slave bloccato. I moduli diversi da queUo bloccato
possono essere comunque utilizzati
40
. Ai fini dell'uso esclusivo delle risorse suI bus, il
PCl dispone della linea LOCK.
La linea LOCK puo essere usata solo da un master per volta. Quando la linea e
asserita uno slave ebloccato: se un master intende bloccare uno :slave, oltre ad avere
Figura 11.44 Transuioni back
4
to-back. Si fa I'ipotesi che Ie due transazioni debbano trasfe-
rire un solo dato. Umaster non disasserisce 13 richiesta di usa del bus e continua. a. impiegarlo.
II bus viene utilizzato aJ massimo. Tra due trans3,Zioni pub 0 no esserci un cielo di transizione
per 13 stabilizzazione delle linee AD. Nel caso esemplificato questa cielo non e'e, in quanta lao
prima transazione eeli scrittura. e i1 bus dati esempre stato pilotato da! master (si parla di
faJt back-to-back); ele naturalmente un cicIo perso per il turnaround richiesto dalla s.econda
transazione. Nel terzo cicIo eli clock avviene la scrittura del primo data. Nello stesso cicio
di clock, l'iniziatore, avendo ancora it GNT, avvia la successiva
,
498
\
I
I
l
l
)
i
I
\I

-
-
-
-
I
.
-
I
Figura 11.45
FRARE
-
,t
AD
-
I
nrnv
lROV
I
-
499 Bus di sistema
o
,
,
,
,
,
o
o
,
,
,
,
,
,
,
,
,
,
LOCK o.ssC' ... I'to p.r
,
,.
...... ce.. ".I".
'-V
,
1:"'0.""':50. zlo,...,1 , ,
, ,
, ,
0
.....+-
LOCK ... 1... 0. ..... 0..:1..... 11:0
0
c>opo o. Fl...... C> .. llo.
--
,
, 1: ... 0. .... "'0."'10 .......
,
I I I =>
1 I'" 13 l"'l

I I I
.<",...... : \ : /: :
I I : :
, .....,... I
: -.....l-"'\ I
I I \ I
I I i
, Aplc!"" .... I " i
(
, >- "-'. ,
AD: 1 I > :
..==1 .......... I I
IRDY: I : I
: i \: : I :
: ...f-- I 1 :
TRDY i ............. i \ I
: 1 :.: I :
""'==I /l' I I
DEVSE:L I -.J...-" h:
I I I I
I I I
Tentativo di accesso a un obiettivo bloccato da parte di un master diver-
so dal proprietario In Figura 11.47 viene illustrato il tentativQ di accedere a un
obiettivo bloccato da parte di un master diverso dal proprietario. n segnale LOCK e
tenuto attivo dal master proprietario. L'obiettivo riconosce che chi 10 sta indirizzando
non echi 10 ha bloccato, perche vede LOCK permanentemente asserito.
Continuazione e/o fine di una serie di accessi esclusivi In Figura 11.48 viene
mostrata 1a continuazione e/o la fine di una serie di accessi esc1usivi.
Accesso agli obiettivi non bloccati Durante it periodo di tempo in cui uno
slave e bloccato, i master possono effettuare accessi agli slave non bloccati. Infatti
10 stato del segnale LOCK non ha effetto sulla abilita. di"\lll obiettivo Del rispondere
aBe transazioni. Una normale transazione nOD fa subite il passaggio a disasserito al
segnale LOCK. Sana quindi consentite Ie transaziorll can dispositivi non bloccati.
Se 1a transazione tentasse di indirizzasse l'obiettivo b1occa.to, verrebbe rifiutata come
ilJustrato in precedenza (Figura 11.47).
Figura 11.46 Temporizza.zio:p.e nella fase di instaurazione del LOCK. II master effettua una
transazione che trasferisce un solo dato e lascia 10 slave bloccato. Poiche il master intende
asserire LOCK cleve trovarlo disasserito per inizia.:re la tra.n.sazione. Terminata la transazione,
LOCK rimane asserito a iudicare che e'e uno slave bloccato. Lo slave in questione eadesso
bloccato e non pub essere usato da nessun altro master. Si nati che sui bus e scompa.rsa
I'identita. dello slave blaccato (il suo indirizza); 10 slave essere datato de11a10gica necessaria
a stabilire il proprio blocca e a riconoscere 5e si trova 0 no in stato di blocco.
Accesso esclusivo a un obiettivo L'acquisizione del bus e il blocco di uno slave
sono illustrati in Figura 11.46.
1a disponibilita del bus, deve sincerarsi che la linea wCI< non sia gia in uso. Se la
linea easserita, deve attendere che la fase di blocco in corso abbia termine, osservando
la linea LOCK aisasserita.
to.rg.t
rlspend.
'. '.
,.
,
'3
,
R"ra jjFl" . . ......_ ... .
I IQt.nl:Q per .. I llltf'nl:ll prr .. 1 IQtrtll(l Q 1
o.rbltrQQQlo tQrgrt
elfl bIJ5
.,.
,
Composi2ione del tempo di latenza.
"Qs'tl'r rlehi.. o. It "QS'tltr rte.I'..... ..oster r;chlrc:lr
Il bvs it gro.l'\t I.m Sll'r"';liQ c:lQ
",n target
r rcsliOiOIl'

0

, ,
, \
' \ '
\
' ,
--..,

,
, , , ,
I
! !
..,
, ,
0
I
:
..1......0".. <00
, , ,

,
,' ...1'\'''''0 0<:::C."50
, ,
0
,
0 0
,
_ 'WRITE READ
, ,
,
cc.
1'1 I I I I
I I I I Iii i
'CRT' I I 1 I I I
\ , 1 '. I 1 I
I I 1 I I I I
!\ I I I I I
:, :/ :\ :/ ::
I lIt t I
I I I I I I
1 t I I I I
I I I I I t
, AddrnS D11
0
Add]I',"S Dl1:0 J
(l)i
,
I I I!
,
! \ / l \ / l I 1-0 .1:....0 1:0. ... ,,"'1: plloto
I I I T'IrnV
f--+-!.... , /!
, ,/'--
o 0 0
1m!
Capitola 11
,
,
/
40E questa una. cara.tteristica interessante del PCl. Di norma, infatti, viene cOIlBiderato bloccato
it bus e non uno specmco dispoaitivo, impedendo 30gli altri di comunicare.
11.7.6 Blocco delle risorse
11 PCl consente eli bloccare i singoli slave a uso esclusivo di un master. In un dato
momento puo esserci un solo slave bloccato. I moduli diversi da queUo bloccato
possono essere comunque utilizzati
40
. Ai fini dell'uso esclusivo delle risorse suI bus, il
PCl dispone della linea LOCK.
La linea LOCK puo essere usata solo da un master per volta. Quando la linea e
asserita uno slave ebloccato: se un master intende bloccare uno :slave, oltre ad avere
Figura 11.44 Transuioni back
4
to-back. Si fa I'ipotesi che Ie due transazioni debbano trasfe-
rire un solo dato. Umaster non disasserisce 13 richiesta di usa del bus e continua. a. impiegarlo.
II bus viene utilizzato aJ massimo. Tra due trans3,Zioni pub 0 no esserci un cielo di transizione
per 13 stabilizzazione delle linee AD. Nel caso esemplificato questa cielo non e'e, in quanta lao
prima transazione eeli scrittura. e i1 bus dati esempre stato pilotato da! master (si parla di
faJt back-to-back); ele naturalmente un cicIo perso per il turnaround richiesto dalla s.econda
transazione. Nel terzo cicIo eli clock avviene la scrittura del primo data. Nello stesso cicio
di clock, l'iniziatore, avendo ancora it GNT, avvia la successiva
,
498
\
I
I
l
l
)
i
I
\I

-
-
-
-
Figura 11.48 Temporizzazione durante Is. fase eli rilascio del LOCK (la transazione tras
ferisce un solo data). All'inizio della transazione, l'iniziatore, mentre asserisce FRAME,
disasserisce LOCK, Cib permette al master di farsi riconoscere daJlo slave bloceato come
master bloccante. SuI fronte eli salita del secondo cielo di clock I'iniziatore riasserisce LOCK
per continuare il blocco fino alIa fine di questa. transazione (che nel caso specifieo termina.
qui). Lo slave rimuove il suo blocco quando campiona FRA.ME e LOCK ambedue disasseriti.
Figura 11.47 Temporizzazione durante un tentativo di accesso a un obi!l'ttivo bloccato da
parte di a1tri iniziatori. II master inizia il tentativo di trasferimento asserendo FRAME,
indirizzi e coroandi sui rispettivi bus. Lo slave bloccato che viene indirizzato, campionando
LOCK asserito sui fronte di salita. del secondo dele di clock stabilisce che il master corrente
non e il bloccante, quincti asserisce DEVSEL ma non TRDY. Poichc ha. determinato che it
master non eil suo....E!Q!'ietario, rifiuta la transazione con it segnaJe di STOP. L'iniziatore,
che campionando STOP attivo e TROY ina.ttivo aul fronte di salita del quarto .cielo di
clock, capisce che l'obiettivo chiede di riprova.re piil tardio Si ha. cosl la conclusione Retry,
menzionata a pagina 495, e il bus toms. allo stato di riposo.
Ca.pitola 11

-
J.
--
-

J-
-
-
I-
).
-
}.
I.
-
I.
I.
\ .
\ .
-
'I .
.1 .
I
I
501 Bus di sistema
VUSB eun complesso costituito da un sistema di interconnessione, un protocollo di
comunicazione seriale e un software di gestione, Ie cui caratteristiche salienti sonG:
a) capacita di collegare un elevato numero di periferici attraverso una singola porta
del sistema hostj
b) elevata velocita. di trasmissionej
c) presenza impresdndibile del software di gestione.
La struttura fisica del bus euna rete ad albero con la porta dell'host.
Lo standard definisce it formato dei eonnettori e la natura del cavo di interconnessione
(Cfr.1LB.B).
II protocollo ein grade di gestire pili di 100 periferiche, eliminando i problemi di
"mancanza di porte". Teoricamente un host USB (host, nel seguito), nella versione
1.1, puo arrivare a gestire una catena di 127 periferiche in grade di scambiare dati
a una velocita che epari, a seconda che la periferica sia ad alta 0 bassa velocita, a
11.8,1 Caratteristiche generali
L'USB (Universal Serial Bus) enato nel 1995 dalla collaborazione di quattro mul-
tinazionali dell'industria elettronica e informatica: Compaq, Intel, Microsoft e NEC
[Com98], Nel giro di pochi anni ediventato uno standard industriale, adottato su
tutti i PC, compresi i trasportabili.
Piu che di bus si tratta di un complesso sistema di intercannessiane di periferici,
una vera e propria rete a stella, che ha il suo centro nel PC (i' host del sistema).
Di sernpliee nell'USB non e'e niente, nemmeno il cava. La camplessita e nascasta
all'interno dei vari componenti, che appaiono all'utente di facile impiego e semplice
instal1azione. La filosofia progettuale e stata quells. d.i produrre apparati pronti all'uso:
non c'e roe da collegare cavi e sincerarsi che sui PC sia stato configurato con il software
dovuto. Emblematica di questa filasofia ela possibilita di connessione/discannessione
a caldo dei periferici.
Elemento fondamentale di USB ela sua componente software. Sul calcolatore
host deve essere presente il cosiddetto software USB di sistema, doe una componente
da riguardare come parte integrata nel sistema operativo, esattamente come il pro-
tocollo TCPlIP, per quanta si riferisce alla piu generica connettivitA. in rete. Non
eimmaginabile eli gestire un periferico USB: sarebbe come pensare di
collegarsi a Internet senza il supporto TCPlIT'.
Uesposizione che segue punta a fornire Ie nozioni che servono a comprendere la
natura di questa sistema di interconnessione, evitando di allungare la trattazione can
i dettagli di funzionamento , che per essere trattati esaustivamente, richiederebbero
un a se.
Poiche USB adotta un protocollo di comunicazione seriale, il suo studio richiede
un minimo di conoscenza circa Ie tecniche relative a questo tipo di comunicazione.
Si consiglia illettore di esaminare il contenuto dell'Appendice E prima di procedere
oltre.
11.8 II bus USB
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
AU.. ')1"\' 1\ ,., ... ...
o .. ll .... c:lo It '!;o ..g,"t
a eon'!;I ............. \:>lol;eo.,..\o
S.eondO ",eeso
...1 "to.rg.'!;
II 12 13 14 1':5 IE,
Un c 1:r--LTL':r-L'n.rL':r-L
't .. n"'tCl a Cl..K 1 I I I _ I r
1;.-o.n50. 2;10....
co., l'ot;>I .. 1::-i:lvo __ I I I I I
t\1 I!""-;-
., oeco. I I / I I -..j./-
F"RAME:,. I. I I I
I i I I I
I I 1 I I
i
n""' I I I I I
LOCK I I , , ,
k
...... I I I I
1''I!'x 'o..... -,..,o""'t...... AdcO.... I Co.'to, I I
.. ... 1::"'tl"O AD 1 ( !)( f f >-1:-
I I 1 I
.
",en" ' '"\ I I I
[RD'r' I ............. I f-I '
, '. I . ,
" ,
'
,","''' ! /T""" ! ! ,
TOO
'"' I ............. I I I
'I' 1 j,
I 1 , 1
I""""" I I
nvstL: --+- \: / l
I I . I - I
I t I
, \' / ' STOP I ,- I I
'I .!. I
'I I I
11 12 13 14 1
Cl.K v--v--LV'L:r--LJ
I I I I I
t\
I ' ...-r--_,
, '/' -.v- I
",I"RAMlt, I I rr:=t '
II ,.,o.,,-t ..... dlsos - I I I I I
____ I I I I Rllo.clo
.... Il .. l.OCK I j \ '/ !

: - : C<:>..... 't:I.j. ......


Addol-' .... Dd't:9, I I
tl ,...,,,,:s't:.....I... n: I I X ; ): :
....1.."'. 1\ o.LOCK A....----..-!: , I
I.L I I
I I I
.. IRDY : T\ /: :
'-+ "
! ! I
, -----, /' ,
",TRDY, I \ I I
1 I I I
I.-T"- I I
, _.... , / ' ,
a.DEVSEL I T \ I I
I I - . I 1
r I 1 1 1
500
Figura 11.48 Temporizzazione durante Is. fase eli rilascio del LOCK (la transazione tras
ferisce un solo data). All'inizio della transazione, l'iniziatore, mentre asserisce FRAME,
disasserisce LOCK, Cib permette al master di farsi riconoscere daJlo slave bloceato come
master bloccante. SuI fronte eli salita del secondo cielo di clock I'iniziatore riasserisce LOCK
per continuare il blocco fino alIa fine di questa. transazione (che nel caso specifieo termina.
qui). Lo slave rimuove il suo blocco quando campiona FRA.ME e LOCK ambedue disasseriti.
Figura 11.47 Temporizzazione durante un tentativo di accesso a un obi!l'ttivo bloccato da
parte di a1tri iniziatori. II master inizia il tentativo di trasferimento asserendo FRAME,
indirizzi e coroandi sui rispettivi bus. Lo slave bloccato che viene indirizzato, campionando
LOCK asserito sui fronte di salita. del secondo dele di clock stabilisce che il master corrente
non e il bloccante, quincti asserisce DEVSEL ma non TRDY. Poichc ha. determinato che it
master non eil suo....E!Q!'ietario, rifiuta la transazione con it segnaJe di STOP. L'iniziatore,
che campionando STOP attivo e TROY ina.ttivo aul fronte di salita del quarto .cielo di
clock, capisce che l'obiettivo chiede di riprova.re piil tardio Si ha. cosl la conclusione Retry,
menzionata a pagina 495, e il bus toms. allo stato di riposo.
Ca.pitola 11

-
J.
--
-

J-
-
-
I-
).
-
}.
I.
-
I.
I.
\ .
\ .
-
'I .
.1 .
I
I
501 Bus di sistema
VUSB eun complesso costituito da un sistema di interconnessione, un protocollo di
comunicazione seriale e un software di gestione, Ie cui caratteristiche salienti sonG:
a) capacita di collegare un elevato numero di periferici attraverso una singola porta
del sistema hostj
b) elevata velocita. di trasmissionej
c) presenza impresdndibile del software di gestione.
La struttura fisica del bus euna rete ad albero con la porta dell'host.
Lo standard definisce it formato dei eonnettori e la natura del cavo di interconnessione
(Cfr.1LB.B).
II protocollo ein grade di gestire pili di 100 periferiche, eliminando i problemi di
"mancanza di porte". Teoricamente un host USB (host, nel seguito), nella versione
1.1, puo arrivare a gestire una catena di 127 periferiche in grade di scambiare dati
a una velocita che epari, a seconda che la periferica sia ad alta 0 bassa velocita, a
11.8,1 Caratteristiche generali
L'USB (Universal Serial Bus) enato nel 1995 dalla collaborazione di quattro mul-
tinazionali dell'industria elettronica e informatica: Compaq, Intel, Microsoft e NEC
[Com98], Nel giro di pochi anni ediventato uno standard industriale, adottato su
tutti i PC, compresi i trasportabili.
Piu che di bus si tratta di un complesso sistema di intercannessiane di periferici,
una vera e propria rete a stella, che ha il suo centro nel PC (i' host del sistema).
Di sernpliee nell'USB non e'e niente, nemmeno il cava. La camplessita e nascasta
all'interno dei vari componenti, che appaiono all'utente di facile impiego e semplice
instal1azione. La filosofia progettuale e stata quells. d.i produrre apparati pronti all'uso:
non c'e roe da collegare cavi e sincerarsi che sui PC sia stato configurato con il software
dovuto. Emblematica di questa filasofia ela possibilita di connessione/discannessione
a caldo dei periferici.
Elemento fondamentale di USB ela sua componente software. Sul calcolatore
host deve essere presente il cosiddetto software USB di sistema, doe una componente
da riguardare come parte integrata nel sistema operativo, esattamente come il pro-
tocollo TCPlIP, per quanta si riferisce alla piu generica connettivitA. in rete. Non
eimmaginabile eli gestire un periferico USB: sarebbe come pensare di
collegarsi a Internet senza il supporto TCPlIT'.
Uesposizione che segue punta a fornire Ie nozioni che servono a comprendere la
natura di questa sistema di interconnessione, evitando di allungare la trattazione can
i dettagli di funzionamento , che per essere trattati esaustivamente, richiederebbero
un a se.
Poiche USB adotta un protocollo di comunicazione seriale, il suo studio richiede
un minimo di conoscenza circa Ie tecniche relative a questo tipo di comunicazione.
Si consiglia illettore di esaminare il contenuto dell'Appendice E prima di procedere
oltre.
11.8 II bus USB
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
AU.. ')1"\' 1\ ,., ... ...
o .. ll .... c:lo It '!;o ..g,"t
a eon'!;I ............. \:>lol;eo.,..\o
S.eondO ",eeso
...1 "to.rg.'!;
II 12 13 14 1':5 IE,
Un c 1:r--LTL':r-L'n.rL':r-L
't .. n"'tCl a Cl..K 1 I I I _ I r
1;.-o.n50. 2;10....
co., l'ot;>I .. 1::-i:lvo __ I I I I I
t\1 I!""-;-
., oeco. I I / I I -..j./-
F"RAME:,. I. I I I
I i I I I
I I 1 I I
i
n""' I I I I I
LOCK I I , , ,
k
...... I I I I
1''I!'x 'o..... -,..,o""'t...... AdcO.... I Co.'to, I I
.. ... 1::"'tl"O AD 1 ( !)( f f >-1:-
I I 1 I
.
",en" ' '"\ I I I
[RD'r' I ............. I f-I '
, '. I . ,
" ,
'
,","''' ! /T""" ! ! ,
TOO
'"' I ............. I I I
'I' 1 j,
I 1 , 1
I""""" I I
nvstL: --+- \: / l
I I . I - I
I t I
, \' / ' STOP I ,- I I
'I .!. I
'I I I
11 12 13 14 1
Cl.K v--v--LV'L:r--LJ
I I I I I
t\
I ' ...-r--_,
, '/' -.v- I
",I"RAMlt, I I rr:=t '
II ,.,o.,,-t ..... dlsos - I I I I I
____ I I I I Rllo.clo
.... Il .. l.OCK I j \ '/ !

: - : C<:>..... 't:I.j. ......


Addol-' .... Dd't:9, I I
tl ,...,,,,:s't:.....I... n: I I X ; ): :
....1.."'. 1\ o.LOCK A....----..-!: , I
I.L I I
I I I
.. IRDY : T\ /: :
'-+ "
! ! I
, -----, /' ,
",TRDY, I \ I I
1 I I I
I.-T"- I I
, _.... , / ' ,
a.DEVSEL I T \ I I
I I - . I 1
r I 1 1 1
500

-
-
B
PC
L:JL:J
I
funzione USB/hub
monitor hub
.,J
;:r ;:r UI
-,
stampante telefono
funzlone USB funzlone USB
r l
telecamera
scanner casso
hub
11.8.3 Organizzazione a livelli
Una periferica puo essere collegata all'host in modo qiretto oppure attraverso i
dispositivi intermedi detti hub. Questi hanno il compito di moltiplicazione delle porte
e possono essere a se stanti (con 1a sola funziane di duplicatori di porte) a integrati
nelle periferiche. In Figura 11.49 il "monitor" euna periferka che svolge anche 1a
funzione di hub.
La radice dell'albero della rete (0 catena) USB risiede concettualmente sui control-
lore dell'host. Se, come nel caso di Figura.ll.49, l'host dispone di pili porte, queste
vanna co'nsiderate come ie parte downstream dell'hub dell'host (l'hub radice).
n software applicativo vede ciascuna periferica come a se stante,
mente cia! Uvello fisica in cui si trova e indipendentemente da! fatto che sia connessa
direttamente all'hub radice 0 ad attIO hub.
La struttura a livelli del protocollo eschematizzata in Figura 11.50. I livelli sono I
seguenti.
Bus di sistema. 503
Livello di interlaccia al bus (LIB). Esso contiene i componenti hardware che
serializzano i pacchetti inviati suI cavo. Le interfacce SODO differenti a seconda
che si tratti dell'host 0 delle periferichej di esse fa comunque parte il cosiddetto
SIE (Serial Interface Engine), la logica che ,j interfaccia direttamente al cavo.
funzlone USB funzione USB funzione USB
Figura 11.49 Esempio di rete USB. Nel caso specifico it PC presenta due porte, daUe quaIi
5i originano due sottoreti. Quella di sinistra presenta una prima periferica, it monitor, 1a
quale svolge anche la funzione di hub, can 1e sue 4 porte downstream cui sono collegate 3
periferiche e la porta upstream di un altro hub. La rete di destra mostra 2 periferiche collegate
tramite hub al PC. La rete puo estendersi a piacimento tramite altri hub (0 periferiche capaci
<Ii {are anche da hub). I dispositivi USB sona realizzati attorno a un microcontrollore. Ne1
caso del monitor, il relativo controllore deve gestire 1a comunicazione diretta al monitor
5tesso e gestire il Busso di pacchetti relativi aUe porte replicate.

502 Capitola 11
n Per 130 versione USB 2.0 si pacla di uu incremento delle velocita di un fattore 40, cbe porterebbe
quindi a. 480Mb/s la velociU roassima dei trasferimenti COD periferiche veJocL .
42Per questo motivo, se si vuole evitare it tracollo delle prestazioni, si cleve limitare il Dumero
di periferiche ad ampia occupazione di banda, come, a esempio, i dispositivi multimediali, quali
webciUD, scanner ecc.
43Un microcalcolatore BU singolo chip. L'lntel produce una aerie di ccntrolleri peT 10 standard
USB, come i due diSP08itivi 8X931AA e 8X931AH [Int97a), [lnt97b], destinati rispettivamente a
essere impiegati per 1e pure periferiche e per Ie periferiche con funzione di buh. I due controllori in
questione derivano da una classe di microcontrollori assai diffusa. aul mercato (la aXeSl).
Un sistema USB si costruisce a partire da questi elementi:
a) l'hast, un PC equipaggiato con Ucontroliore e il software
b) i dispositivi USB compatibili, separabili in due classi: periferiche e hu.b;
c) i cavi di interconnessione.
11.8.2 Struttura fisica
12Mb/s 0 a 1,5Mb/5
41
. Occorre perc tener presente ehe la banda disponibile esempre
suddivisa fra Ie periferiche connesse
42
. Altro aspetto rilevante eahe la priorita. dipende
dalla posizione (illivello nella catena) del dispositivo.
nbus USB ein grade di alimentare Ie periferiche attraverso 10 stesso cavo utiliz-
zato per 10 scambio dati, famendo potenza in quantita esigue, rna pur sempre suffi-
ciente a connettere dispositivi d.i basso assorbimento. Come gia. detto
l
USB consente
la. connessione e la disconnessione a caldo dei periferici, anche eli quelli dotati di
alimentazione propria.
n trasferimento dei dati avviene fisicamente attraverso le variazioni della ten-
sione differenziale fra due dei quattro cavetti costituenti i1 cave USB. L'osserva-
zione delle variazioni della. tensione differenziale consente di riconoscere la connes-
sionejdisconnessione degli apparati. Uhost e anche in grade di riconoscere se la
periferica ead alta 0 bassa velocita..
E solo attraverso i servizi lorniti dar software USB (che nel seguito indichere-
rna con la sigla SWU per brevita) che i programmj applicativi hanno accesso alle
periferiche connesse. In questa senso SWU puo essere riguardato, secondo il classico
modello ISO/OSI (si veda l'Appendice E), come uno strato che si interpone tra il
controllore del bus e i programmi applicativi e che detiene il controlla assoluto di ogni
tipo di informazione scambiata fra Ie applicazioni e Ie periferiche conne5se; al bus.
SWU monitorizza costantement.e il bus e provvede. a instaurare i Bussi comunicativi
tra i programmi di utente e Ie periferiche, anche in base all'occupazione di banda. I
programmj applicativi vedona Ie periferiche in base alle funzionalita. da esse offerte, e
sono esentati dal tener canto di qualsiasi aspetto relativo alIa comunicazione.
Quanta sopra ha, naturalmente, un'importante conseguenza: una periferica, seb-
bene costituisca un dispositiva passiva (nel sensa che trasmette solo e sempre in
risposta ai comandi dell'host, seuza mai prendere l'iniziativa) deve necessariamente
essere dotata di intelligenza, in modo da riprodurre la pila (stack) del protocollo. Le
. periferiche USB sana di norma realizzate attorno a un microcontrollore
43
che si fa
carico di gestire 10 scambio dati secondo il modelio a strati.
I
\
\
If
,
I,
I
,
!
I
!
-
-
1
,
- I J
,
1
- 1\
-
-
-
-
-
-
-
-,I

-
-
B
PC
L:JL:J
I
funzione USB/hub
monitor hub
.,J
;:r ;:r UI
-,
stampante telefono
funzlone USB funzlone USB
r l
telecamera
scanner casso
hub
11.8.3 Organizzazione a livelli
Una periferica puo essere collegata all'host in modo qiretto oppure attraverso i
dispositivi intermedi detti hub. Questi hanno il compito di moltiplicazione delle porte
e possono essere a se stanti (con 1a sola funziane di duplicatori di porte) a integrati
nelle periferiche. In Figura 11.49 il "monitor" euna periferka che svolge anche 1a
funzione di hub.
La radice dell'albero della rete (0 catena) USB risiede concettualmente sui control-
lore dell'host. Se, come nel caso di Figura.ll.49, l'host dispone di pili porte, queste
vanna co'nsiderate come ie parte downstream dell'hub dell'host (l'hub radice).
n software applicativo vede ciascuna periferica come a se stante,
mente cia! Uvello fisica in cui si trova e indipendentemente da! fatto che sia connessa
direttamente all'hub radice 0 ad attIO hub.
La struttura a livelli del protocollo eschematizzata in Figura 11.50. I livelli sono I
seguenti.
Bus di sistema. 503
Livello di interlaccia al bus (LIB). Esso contiene i componenti hardware che
serializzano i pacchetti inviati suI cavo. Le interfacce SODO differenti a seconda
che si tratti dell'host 0 delle periferichej di esse fa comunque parte il cosiddetto
SIE (Serial Interface Engine), la logica che ,j interfaccia direttamente al cavo.
funzlone USB funzione USB funzione USB
Figura 11.49 Esempio di rete USB. Nel caso specifico it PC presenta due porte, daUe quaIi
5i originano due sottoreti. Quella di sinistra presenta una prima periferica, it monitor, 1a
quale svolge anche la funzione di hub, can 1e sue 4 porte downstream cui sono collegate 3
periferiche e la porta upstream di un altro hub. La rete di destra mostra 2 periferiche collegate
tramite hub al PC. La rete puo estendersi a piacimento tramite altri hub (0 periferiche capaci
<Ii {are anche da hub). I dispositivi USB sona realizzati attorno a un microcontrollore. Ne1
caso del monitor, il relativo controllore deve gestire 1a comunicazione diretta al monitor
5tesso e gestire il Busso di pacchetti relativi aUe porte replicate.

502 Capitola 11
n Per 130 versione USB 2.0 si pacla di uu incremento delle velocita di un fattore 40, cbe porterebbe
quindi a. 480Mb/s la velociU roassima dei trasferimenti COD periferiche veJocL .
42Per questo motivo, se si vuole evitare it tracollo delle prestazioni, si cleve limitare il Dumero
di periferiche ad ampia occupazione di banda, come, a esempio, i dispositivi multimediali, quali
webciUD, scanner ecc.
43Un microcalcolatore BU singolo chip. L'lntel produce una aerie di ccntrolleri peT 10 standard
USB, come i due diSP08itivi 8X931AA e 8X931AH [Int97a), [lnt97b], destinati rispettivamente a
essere impiegati per 1e pure periferiche e per Ie periferiche con funzione di buh. I due controllori in
questione derivano da una classe di microcontrollori assai diffusa. aul mercato (la aXeSl).
Un sistema USB si costruisce a partire da questi elementi:
a) l'hast, un PC equipaggiato con Ucontroliore e il software
b) i dispositivi USB compatibili, separabili in due classi: periferiche e hu.b;
c) i cavi di interconnessione.
11.8.2 Struttura fisica
12Mb/s 0 a 1,5Mb/5
41
. Occorre perc tener presente ehe la banda disponibile esempre
suddivisa fra Ie periferiche connesse
42
. Altro aspetto rilevante eahe la priorita. dipende
dalla posizione (illivello nella catena) del dispositivo.
nbus USB ein grade di alimentare Ie periferiche attraverso 10 stesso cavo utiliz-
zato per 10 scambio dati, famendo potenza in quantita esigue, rna pur sempre suffi-
ciente a connettere dispositivi d.i basso assorbimento. Come gia. detto
l
USB consente
la. connessione e la disconnessione a caldo dei periferici, anche eli quelli dotati di
alimentazione propria.
n trasferimento dei dati avviene fisicamente attraverso le variazioni della ten-
sione differenziale fra due dei quattro cavetti costituenti i1 cave USB. L'osserva-
zione delle variazioni della. tensione differenziale consente di riconoscere la connes-
sionejdisconnessione degli apparati. Uhost e anche in grade di riconoscere se la
periferica ead alta 0 bassa velocita..
E solo attraverso i servizi lorniti dar software USB (che nel seguito indichere-
rna con la sigla SWU per brevita) che i programmj applicativi hanno accesso alle
periferiche connesse. In questa senso SWU puo essere riguardato, secondo il classico
modello ISO/OSI (si veda l'Appendice E), come uno strato che si interpone tra il
controllore del bus e i programmi applicativi e che detiene il controlla assoluto di ogni
tipo di informazione scambiata fra Ie applicazioni e Ie periferiche conne5se; al bus.
SWU monitorizza costantement.e il bus e provvede. a instaurare i Bussi comunicativi
tra i programmi di utente e Ie periferiche, anche in base all'occupazione di banda. I
programmj applicativi vedona Ie periferiche in base alle funzionalita. da esse offerte, e
sono esentati dal tener canto di qualsiasi aspetto relativo alIa comunicazione.
Quanta sopra ha, naturalmente, un'importante conseguenza: una periferica, seb-
bene costituisca un dispositiva passiva (nel sensa che trasmette solo e sempre in
risposta ai comandi dell'host, seuza mai prendere l'iniziativa) deve necessariamente
essere dotata di intelligenza, in modo da riprodurre la pila (stack) del protocollo. Le
. periferiche USB sana di norma realizzate attorno a un microcontrollore
43
che si fa
carico di gestire 10 scambio dati secondo il modelio a strati.
I
\
\
If
,
I,
I
,
!
I
!
-
-
1
,
- I J
,
1
- 1\
-
-
-
-
-
-
-
-,I
504 Capitolo 11
Esaminiamo ora piiI in dettaglio la pila eli Figura 11.50.
Livello di periferica logica (LPL). SulPhost ecostituito da SWU, mentre suna
periferica e costituito dalla logica per trattare i fiussi di cantralla.
,

J
-

)
J.
I.
I
\
I
\
1 .
\
\
1
1
)
In Figurall.52 viene mostrato la pila del protocoUo dallato periferica.
Come vedremo poco piiI avanti (Cfr.l1.8.7), 10 scambio eli informazioni sul USB
si basa su tenninatori e canali. Tutti i dispositivi USB devono neeessariamente pre-
sentare 10 speciale termmatore 0 (end-point 0). A esso sonG associate Ie infonnazioni
richieste dall'host nella fase di riconoscimento e con.figurazione. Tali informazioni so-
no costituite da parti regolamentate dallo standard (tipo di dispositivo, COnsWllO di
potenza ece.) e da parti a disposizione del costruttore. n terminatore a e a capo
dei Bussi deUa cosiddetta default control pipe, che nel seguito chiameremo canale di
base, it canale ehe 5i instaura all'atto del ricono5eimento della presenza della periferi-
ca da parte di SWU. Questo canale si situa logicamente a livello LPL. Attraverso il
terminatore 0 (e il firmware del microcontrollore) SWU ein grade d.i configurare la
periferica.
A livello di funzione la periferica viene vista ancora come un insieme di ter-
minatori, corrispondenti aUe funzionalita. espletate dalla periferica. I terminato-
ri sono connessi attraverso eanali instaurati da SWU in fase di riconoscimento e
configurazione.

11.8.5 Periferiche
Allivello pill basso della pila si trova l'interfaccia al bus, composta dai controllore e
da un hub integrato in grado di o!rire connessioni multiple all'host''. I dati da/verso
Ie periferiche sono organizzati dal controllore e convertiti in segnali elettrici dal STE,
clie eparte dell'hub integrato
A Hvello intermedio si trova SWU, il software USB di sistema. Esso eresponsa-
bile di tutto cib che ha a che fare con Poperativita. del bus: la gestione della banda
disponibile, l'alimentazione del bus, il riconoscimento della connessione, della discon-
nessione ecc. SWU ecostituito essenzialmente cia due driver e la parte di controllo.
n primo driver (USBD) serve a dialogare ve",o i'.alto (con il software utilizzatore) e
l'altro per dialogare verso il basso (con il controllore USB).
n driver USB fornisce al soprastante livello una rappresentazione logica della
pertferica. Per dialogare can una periferica un programma a livello LF deve instaurare
almeno un canale. Cib viene fatto in fase di riconoscimento e configurazione della
, .
periferica. E previsto che 10 stesso applicativo possa instaurare pili di un canale con
la roedesiroa periferica. .
La comunicazione Ira ilsoftware utilizzatore e USBD (CIr. Figura 11.51), amene
attraverso pacchetti
46
che il software utilizzatore invia 0 riceve da USBD.
<1.651 gia osservato che comune trovare due 0 piu connettori USB sui retro del PC. E il controllore
che fornisce piu porte. AlPesterno sembra di avere due (0 piu) bus, ma., in il bus e unlco e \a
banda viene ripanlta tra I differenti sottoalberi.
46Uno pa.ccbetto di questa genere, nel gergo USB, viene denominato IRP (I/O Requcst Packet).
Con questa sigia si intende II meccanismo definito da.! Sistema Operativo in uso, COD il Quale Software
utilizzatore e SWU comunicano per ottenere 0 concedere i'utilizzo di un canale.
Bus eli sistema 505
11.8.4 Host
(IF)
Livello
interfaceia
albus
(UB)
Uveno
periferica
Iogica
(lPl)
UyenO
funzione
,.... ....-...._-....... ..
Periferica
Host
Appllcazlone <
L. _
t>
1-'''' ..
Funzlone
PIPES
........ -f
T
... ............ _...... ........................ ._... " ................ ..
V
V
Software USB<
-
Periterica
I> logica USB
dl sistema
I-'
-'-
OffAULT
....... __ ...+._.... _.....
PIPE
A
...
...... _........._.. _. .... ............- .............._....... ,.
V
V
Cava
Control1ore 1/ USB, InterfaccJa at
USB
J
BUS USB
440i norma. i1 Uvello funzionale suI lata bast sara. a sua volta composlo da piu strati software.
In particoiare, 10 strato piu. basso costituito dai driver specifiai delle periferiche e su di esso si
appoggera.nno Ie eventuali applicazioni.
Liveno funzionale (LF). Cootituito dal software utilizzatore sull'host e dana fun-
zione vera e propria della periferica. Un applicativo residente sul PC vede la
periferica USB (0 meglio, Ie sue funzionalita) come se essa fesse direttamente
connessa al computer
44
.
-< ;:::::> Flusso logico
< > Flusso fisico
Figura 11.50 Organizzazione a livelli dei ftussi dati dello standard USB. I11ivello di inter-
faccia. svolge il compito eli impacchettare i da.ti secondo Ia. struttura USB, trasformarli nei
segnali elettrici asseriti suI cavo (ci si riferisce alIa trasmissione; in ricezione vengono svolte
ie funzioni duali). II livell9 Iii periferica logica. fornisce una rappresentazione logica degli
aspetti Iii gestione della. periferica da parte di SWU dal lato host. n HveHo di funzione e
guello a cui si sYolgono Ie interazioni tra. gli applicativi su host e te funzionalita. offerte dalle
periferiche connesse.
504 Capitolo 11
Esaminiamo ora piiI in dettaglio la pila eli Figura 11.50.
Livello di periferica logica (LPL). SulPhost ecostituito da SWU, mentre suna
periferica e costituito dalla logica per trattare i fiussi di cantralla.
,

J
-

)
J.
I.
I
\
I
\
1 .
\
\
1
1
)
In Figurall.52 viene mostrato la pila del protocoUo dallato periferica.
Come vedremo poco piiI avanti (Cfr.l1.8.7), 10 scambio eli informazioni sul USB
si basa su tenninatori e canali. Tutti i dispositivi USB devono neeessariamente pre-
sentare 10 speciale termmatore 0 (end-point 0). A esso sonG associate Ie infonnazioni
richieste dall'host nella fase di riconoscimento e con.figurazione. Tali informazioni so-
no costituite da parti regolamentate dallo standard (tipo di dispositivo, COnsWllO di
potenza ece.) e da parti a disposizione del costruttore. n terminatore a e a capo
dei Bussi deUa cosiddetta default control pipe, che nel seguito chiameremo canale di
base, it canale ehe 5i instaura all'atto del ricono5eimento della presenza della periferi-
ca da parte di SWU. Questo canale si situa logicamente a livello LPL. Attraverso il
terminatore 0 (e il firmware del microcontrollore) SWU ein grade d.i configurare la
periferica.
A livello di funzione la periferica viene vista ancora come un insieme di ter-
minatori, corrispondenti aUe funzionalita. espletate dalla periferica. I terminato-
ri sono connessi attraverso eanali instaurati da SWU in fase di riconoscimento e
configurazione.

11.8.5 Periferiche
Allivello pill basso della pila si trova l'interfaccia al bus, composta dai controllore e
da un hub integrato in grado di o!rire connessioni multiple all'host''. I dati da/verso
Ie periferiche sono organizzati dal controllore e convertiti in segnali elettrici dal STE,
clie eparte dell'hub integrato
A Hvello intermedio si trova SWU, il software USB di sistema. Esso eresponsa-
bile di tutto cib che ha a che fare con Poperativita. del bus: la gestione della banda
disponibile, l'alimentazione del bus, il riconoscimento della connessione, della discon-
nessione ecc. SWU ecostituito essenzialmente cia due driver e la parte di controllo.
n primo driver (USBD) serve a dialogare ve",o i'.alto (con il software utilizzatore) e
l'altro per dialogare verso il basso (con il controllore USB).
n driver USB fornisce al soprastante livello una rappresentazione logica della
pertferica. Per dialogare can una periferica un programma a livello LF deve instaurare
almeno un canale. Cib viene fatto in fase di riconoscimento e configurazione della
, .
periferica. E previsto che 10 stesso applicativo possa instaurare pili di un canale con
la roedesiroa periferica. .
La comunicazione Ira ilsoftware utilizzatore e USBD (CIr. Figura 11.51), amene
attraverso pacchetti
46
che il software utilizzatore invia 0 riceve da USBD.
<1.651 gia osservato che comune trovare due 0 piu connettori USB sui retro del PC. E il controllore
che fornisce piu porte. AlPesterno sembra di avere due (0 piu) bus, ma., in il bus e unlco e \a
banda viene ripanlta tra I differenti sottoalberi.
46Uno pa.ccbetto di questa genere, nel gergo USB, viene denominato IRP (I/O Requcst Packet).
Con questa sigia si intende II meccanismo definito da.! Sistema Operativo in uso, COD il Quale Software
utilizzatore e SWU comunicano per ottenere 0 concedere i'utilizzo di un canale.
Bus eli sistema 505
11.8.4 Host
(IF)
Livello
interfaceia
albus
(UB)
Uveno
periferica
Iogica
(lPl)
UyenO
funzione
,.... ....-...._-....... ..
Periferica
Host
Appllcazlone <
L. _
t>
1-'''' ..
Funzlone
PIPES
........ -f
T
... ............ _...... ........................ ._... " ................ ..
V
V
Software USB<
-
Periterica
I> logica USB
dl sistema
I-'
-'-
OffAULT
....... __ ...+._.... _.....
PIPE
A
...
...... _........._.. _. .... ............- .............._....... ,.
V
V
Cava
Control1ore 1/ USB, InterfaccJa at
USB
J
BUS USB
440i norma. i1 Uvello funzionale suI lata bast sara. a sua volta composlo da piu strati software.
In particoiare, 10 strato piu. basso costituito dai driver specifiai delle periferiche e su di esso si
appoggera.nno Ie eventuali applicazioni.
Liveno funzionale (LF). Cootituito dal software utilizzatore sull'host e dana fun-
zione vera e propria della periferica. Un applicativo residente sul PC vede la
periferica USB (0 meglio, Ie sue funzionalita) come se essa fesse direttamente
connessa al computer
44
.
-< ;:::::> Flusso logico
< > Flusso fisico
Figura 11.50 Organizzazione a livelli dei ftussi dati dello standard USB. I11ivello di inter-
faccia. svolge il compito eli impacchettare i da.ti secondo Ia. struttura USB, trasformarli nei
segnali elettrici asseriti suI cavo (ci si riferisce alIa trasmissione; in ricezione vengono svolte
ie funzioni duali). II livell9 Iii periferica logica. fornisce una rappresentazione logica degli
aspetti Iii gestione della. periferica da parte di SWU dal lato host. n HveHo di funzione e
guello a cui si sYolgono Ie interazioni tra. gli applicativi su host e te funzionalita. offerte dalle
periferiche connesse.
507
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I

Bus eli sistema


- ------
FUNZIONE
I
DO
I
Terminatorl
PERIFERlCA
I
I
I
I
I
formllto non USB
I
d--.omt..
I
",.lIuo_ lIord.."o
I
I

,
peRIFERICA ,
LOGICA
Terminatore
0
per I pltdlettl
te<mln.otori daU use
v v
INTERFACCTA
I
"L BUS UBS
stEI
r------
I
I
<1 PI" >
I
I
I
I
I
I
I
: DEFAULT P
<:: :=>
CAVO us
<: I
I
I
I
I PERI FER L _
e periferica. In pratica si pub trattare di un registro 0 di un'area di memoria del
controllore, che l'host ein grado di indirizzare:
e un terminatore sulla periferica.
a) gli estato assegnato un indirizzo univoco;
. .
b) gli sana stati correttamente aperti i necessari terminatori e i relativi canali;
Sono previsti due metodi, mutuamente esclusivi di comunicazione sui canali:
Sequenziale (Stream): i dati che si muovono suI canale non hanna una Hstruttura-
USB" 41. I dati fluiscono da un terminatore di uscita (in ingresso al canale) a un
41Definita doe dallo standard USB. Si Dati che 10 standard non prevede mai l'interpretazione dei
dati che f1.uiscono su un canale.
Figura 11.52 Visione di dettaglio della pila USB dallato periferica. A livello di interfaccia
at bus, e previsto, in pratica, il solo componente SIE, anche se nel caso di periferiche can
funzione di hub, tra il eavo e iI SrE e'e i1 ripetitore di segnale ebe collega la porta upstream
con porte downstream (e can il SrE stesso). Le funzioni di periferica logica e la funzione
periferica di alto liveno sono realizzate dal microcontrollore a bordo.
'5.
SOFTWARE
l1T1UZZATORE
::#: =it
'"
confiQura
USB
Controllo

(USBD)
Driver del
controller host
SWu

deflnito dill
controller COfltroller
co.v
sull'host
SIE
INTERFACCIA I
dlPtnden
......n

,-------------------
I
I
I
I
I
I
I
Capitola 11
L'hub e uno degli elementi chiave nell1architettura USB. Si tratta sostanzialrnente
di un replicatorejespansore di porte: a una porta downstream eli un hub pub essere
collegata una porta upstream eli un nuovo hub e COS! ripetutamente. Teorica.mente e
possibile imIIl:aginare una catena costituita da un Dumero infinito di hub e dispositivi
funzionali. Nella pratica i11imite massimo edi 127 dispositivi.

Ogni porta downstream di un hub eelettricamente isolata dalle altre. E possibile


il funzionamento delle varie porte in modalita mista (parte ad alta velocita e parte a
bassa velocita).
Tenninatori e canali.
Un termi,natore (end-point) edefinito come una porzione unica, identificabi1e di
una periferica costituente 1a terminazione di un flusso di comunicazione tra host
---..,
I
I
'IPE I

I
I
I
I
I
I
I
P!Pf I
I
<: i>
I
I
I
I
I
I
I
I
I
I
I >
I
I
: IALBUS USB I HOST 1

Figura 11.51 Vislone di dettaglio della pila USB dal lato host. programmi applicativi
comunicano attraverso uno 0 pili canali con la periferica. I canali 8i stabiliscono secondo una
tecnica di una ce,rta complessita.. Essenzialmente un canale cannette il software utilizzatore .
con un terminatore sulla periferica. La default control pipe rappresenta il canale attraverso
i1 Quale SWU comunica con la. periferica nelle fasi di riconoscimento e configurazione. Essa e
callegata a uno speciale terminatore, il terminatore 0 (necessariamente presente su qua.lunque
periferica), mentre gli altri canali collegano terminatori creati alPoccorrenza da SWU per i
programmj utilizzatori.
11.8.7 Madella dei Hussi informativi
11.8.6 Hub
506
]
I
(
\
l
\
I
I
]
I
-
-
-
- j
-
-
-, j
,
-
-
.-
-
-
-
507
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I

Bus eli sistema


- ------
FUNZIONE
I
DO
I
Terminatorl
PERIFERlCA
I
I
I
I
I
formllto non USB
I
d--.omt..
I
",.lIuo_ lIord.."o
I
I

,
peRIFERICA ,
LOGICA
Terminatore
0
per I pltdlettl
te<mln.otori daU use
v v
INTERFACCTA
I
"L BUS UBS
stEI
r------
I
I
<1 PI" >
I
I
I
I
I
I
I
: DEFAULT P
<:: :=>
CAVO us
<: I
I
I
I
I PERI FER L _
e periferica. In pratica si pub trattare di un registro 0 di un'area di memoria del
controllore, che l'host ein grado di indirizzare:
e un terminatore sulla periferica.
a) gli estato assegnato un indirizzo univoco;
. .
b) gli sana stati correttamente aperti i necessari terminatori e i relativi canali;
Sono previsti due metodi, mutuamente esclusivi di comunicazione sui canali:
Sequenziale (Stream): i dati che si muovono suI canale non hanna una Hstruttura-
USB" 41. I dati fluiscono da un terminatore di uscita (in ingresso al canale) a un
41Definita doe dallo standard USB. Si Dati che 10 standard non prevede mai l'interpretazione dei
dati che f1.uiscono su un canale.
Figura 11.52 Visione di dettaglio della pila USB dallato periferica. A livello di interfaccia
at bus, e previsto, in pratica, il solo componente SIE, anche se nel caso di periferiche can
funzione di hub, tra il eavo e iI SrE e'e i1 ripetitore di segnale ebe collega la porta upstream
con porte downstream (e can il SrE stesso). Le funzioni di periferica logica e la funzione
periferica di alto liveno sono realizzate dal microcontrollore a bordo.
'5.
SOFTWARE
l1T1UZZATORE
::#: =it
'"
confiQura
USB
Controllo

(USBD)
Driver del
controller host
SWu

deflnito dill
controller COfltroller
co.v
sull'host
SIE
INTERFACCIA I
dlPtnden
......n

,-------------------
I
I
I
I
I
I
I
Capitola 11
L'hub e uno degli elementi chiave nell1architettura USB. Si tratta sostanzialrnente
di un replicatorejespansore di porte: a una porta downstream eli un hub pub essere
collegata una porta upstream eli un nuovo hub e COS! ripetutamente. Teorica.mente e
possibile imIIl:aginare una catena costituita da un Dumero infinito di hub e dispositivi
funzionali. Nella pratica i11imite massimo edi 127 dispositivi.

Ogni porta downstream di un hub eelettricamente isolata dalle altre. E possibile


il funzionamento delle varie porte in modalita mista (parte ad alta velocita e parte a
bassa velocita).
Tenninatori e canali.
Un termi,natore (end-point) edefinito come una porzione unica, identificabi1e di
una periferica costituente 1a terminazione di un flusso di comunicazione tra host
---..,
I
I
'IPE I

I
I
I
I
I
I
I
P!Pf I
I
<: i>
I
I
I
I
I
I
I
I
I
I
I >
I
I
: IALBUS USB I HOST 1

Figura 11.51 Vislone di dettaglio della pila USB dal lato host. programmi applicativi
comunicano attraverso uno 0 pili canali con la periferica. I canali 8i stabiliscono secondo una
tecnica di una ce,rta complessita.. Essenzialmente un canale cannette il software utilizzatore .
con un terminatore sulla periferica. La default control pipe rappresenta il canale attraverso
i1 Quale SWU comunica con la. periferica nelle fasi di riconoscimento e configurazione. Essa e
callegata a uno speciale terminatore, il terminatore 0 (necessariamente presente su qua.lunque
periferica), mentre gli altri canali collegano terminatori creati alPoccorrenza da SWU per i
programmj utilizzatori.
11.8.7 Madella dei Hussi informativi
11.8.6 Hub
506
]
I
(
\
l
\
I
I
]
I
-
-
-
- j
-
-
-, j
,
-
-
.-
-
-
-
-
-
_.
-
-
-
-
I-
1-
1-
I-
1-
1-
I-
\ -
\ -
I -
I.
I
I -
509 Bus di sistema
Schermatura intema in pollestere e allumlnlo
Schermatura estema a treccia dll'3me
Rlvestimento estemo in PVC
Vss
Vausl
,
,
Doppino non intrecciato d'alimentazione
,
51 La. porta da ritenere disabilitata fino a quel punta, L'abilitazione e ottenuta tenendo iI bus But
connettore delle periferica in stato di Reset per un interva.llo di tempo pari a. 10 fn.$ .
<
Capitola 11
4SPer esernpio, nel caso della standard RS2321a. tensione assume valore +12 0 -12V.
49Si distinguono 4 stati fisici (caratterizzati doe da differenti combinazioni dei livelli dei segnali e
'
50Circa O.5W a periferico.
Connessione di una periferica USB Immaginiamo di connettere un dispositivD
a una porta downstream di un hub 0 dell'host, aHa Quale sia gia collegato i1 cavo
USB ancora scollegato dallato periferica. Come illustrato in Figura 11.54, in queste

'
'.

__=c:::__=:.::===___==
. "",',
,. ,W,I
:!{t l.!,r;' "
terminatore eli ingJ:esso (in uscita al canale), mantenendo 10 stesso ordine con cui
SODO entrati. Si tratta necessariamente di canali unidirezionali. Ci si attende che i ;'.,_ ',"00;
che viaggiano lunge un c.anale vadari? a con un
?on. mente per fra possibili ":tlt,
utllizzo del cia dl'fferentl utilizzatori. .
canalt ,sequenzlali tre tIPI dt trasfenmento: bulk
1
isocrono e per
mterruz10ne. ' '/1 :
A messaggi (Message): i dati che si muovono sul canale hanno Ustruttura-
USB"e vengono scambiati secondo un meccanismo richiesta/dati/stato. Inizial-,
mente viene dall.'host, una tale ricbiesta eseguita ' ..
cia un trasfenmento datI nell opportuna dlIezlOne e, In un secondo tempo, da un ' ,/fit..., ..>,
, d' t . '..,m"I'
messagglO 1 s ato. "I i' 'w':'
Lo standard prevede che una periferica sia in grado di gestire una sola richiesta '\ ' , I '
. . .. ... :;, ,:", Dapplna inlreCCIata dedlcata a segnafe dati
. .c,. SWU. ad non .ur:late eoncorrenti. . . . . .
CIO non Impedisce at programIDl apphcativi dl effettuare nehleste, rna queste Figura 11.53 Sezlone del cavo USB. I da.tl vengono trasmessl a.ttraversa un doppmo lOtrec-
vengono gestite in modo da rispettare 1a 10gica FIFO. .. ciato (linee D+ e 0-) su cui :i Ie
;;-1-1f:rl\ .1V = (D+) - (D-). Le tenslOnl di ahmentazlone sono dispowbih sm due cavettl VBUS
e Vss tenuta. a GND). tutto e schennato un rivesti-
.. mento 10 poliestere e allumlnlO, avvolto m una treccla. di rame, a sua volta. ncoperta da un
.. rivestimento in PVC.
','"' ..4
11

,=",
. '
<w.. !J ",' I..'
n caVD USB e costituito da quattro fili, due dei quali, D+ e D-, sono adibiti al ... . . .
trasferimento dati e due" V.ss e trasporto di una piccola quantita di condlzloID, a. causa delle refllstenze Rpd eli pull-down, SIS, D+ che D- sono a Vss, e
potenza. La seZlOne del cavo e nportata In Figura 11.53. ... dunque a. massa..
La linea D+ etenuta dall'host (0 dall'hub a cui il eavo econnesso) a una tensione i Non appena il cavo USB viene alla porta upstream del dispositivo che
Ia linea D- et.enuto a m.assa. La trasmL:sione avviene .per variazioni ."ILr" si la di trasp,0r:a.ta dal cavo si applica .alla
dl tenslOne = - (D-). dagh USUall standard dl trasmissione, '.. ; reslstenza.di Rpu. SLforma COSI un partltor.e fra VBUS e Vss
dove s?lo 2 va.lon
S
: 10 USB preve.de pili livelli del , .. .. D (D+ se 11 elento, D- se eveloce). CIC una di
.6V, rifentl a pm livelli dl D, aJ. quail cornspondono dlfferentl stab del bus, ovvero del 10% su D lfi lOgresSO aHa porta upstream, caduta sufficiente a mnalzare il valore
differenti interpretazioni delle informazioni seambiate
49
. '. della tensione del cavo stesso a una tensione superiore alia soglia Vrn 11.55).
Le due linee di alirnentazione, oltre a fornire una piccola quantita di potenza
SO
, Questa condizione, se pennane per un periodo di tempo superiore 0 uguale ai 2,5 J'S,
utilizzabile per a basso .hanno ruolo. viene come connessione di.un porta.
Ie fasl di dlSPO: POlche 1dlSPOSltlVl sono pasSlVl e non prendono mat l'lDlZlatlva di
SltlVl. Come 51 vede dalla Flgura.ll.54, Ie hnee dl ahmentazlOne hanna di " auton.omamente, perche succeda qualcosa suI b.us o.ccorre la
pull-up sulle porte upstream e di pull-down sulle porte downstream. Le reslStenze IOterrogazlOne dell'hub da parte dell'host. Alla pr05suna mterrogazione l'hub nsponde
in questione fanno da partitori e consentono di riconoseere sia l'avvenuta rendendo nota che e'e stata una nuova connessione. A questo punto il software di si-
connessionejdisconnessione che il tipo di periferica sterna abilita la su cui si e il collegamen.to
51
e passa a
configurare la penfenca. OVVlamente qualora il diSPOSltIvo connesso Sla un. hub alle
cui porte siano conDessi diversi dispositivi, la procedura viene ripetuta per ciascuno
, dei dispositivi.
Una volta riconosciuta la connessione della periferica tutti i successivi ftussi co-
. fra host e dispositivo avvengono elettricamente attraverso variazioni del
'Y","!, :*!,.: dlfferenzlale (D+) - (D-)
,.'i:'.I",;" .
' ', :(;l'!', ,)'fl i""....

,;",""": ,- <lli,:
. ''\'i(:'" , -.:' I
. ",:
'!'H"
.:"'E':.
. '

A[i;;d :'1t :';,:
,.f<; ,"., '. 'f '-,
, .' U&::.J
11.8,8 II cava
508
I
-
-
_.
-
-
-
-
I-
1-
1-
I-
1-
1-
I-
\ -
\ -
I -
I.
I
I -
509 Bus di sistema
Schermatura intema in pollestere e allumlnlo
Schermatura estema a treccia dll'3me
Rlvestimento estemo in PVC
Vss
Vausl
,
,
Doppino non intrecciato d'alimentazione
,
51 La. porta da ritenere disabilitata fino a quel punta, L'abilitazione e ottenuta tenendo iI bus But
connettore delle periferica in stato di Reset per un interva.llo di tempo pari a. 10 fn.$ .
<
Capitola 11
4SPer esernpio, nel caso della standard RS2321a. tensione assume valore +12 0 -12V.
49Si distinguono 4 stati fisici (caratterizzati doe da differenti combinazioni dei livelli dei segnali e
'
50Circa O.5W a periferico.
Connessione di una periferica USB Immaginiamo di connettere un dispositivD
a una porta downstream di un hub 0 dell'host, aHa Quale sia gia collegato i1 cavo
USB ancora scollegato dallato periferica. Come illustrato in Figura 11.54, in queste

'
'.

__=c:::__=:.::===___==
. "",',
,. ,W,I
:!{t l.!,r;' "
terminatore eli ingJ:esso (in uscita al canale), mantenendo 10 stesso ordine con cui
SODO entrati. Si tratta necessariamente di canali unidirezionali. Ci si attende che i ;'.,_ ',"00;
che viaggiano lunge un c.anale vadari? a con un
?on. mente per fra possibili ":tlt,
utllizzo del cia dl'fferentl utilizzatori. .
canalt ,sequenzlali tre tIPI dt trasfenmento: bulk
1
isocrono e per
mterruz10ne. ' '/1 :
A messaggi (Message): i dati che si muovono sul canale hanno Ustruttura-
USB"e vengono scambiati secondo un meccanismo richiesta/dati/stato. Inizial-,
mente viene dall.'host, una tale ricbiesta eseguita ' ..
cia un trasfenmento datI nell opportuna dlIezlOne e, In un secondo tempo, da un ' ,/fit..., ..>,
, d' t . '..,m"I'
messagglO 1 s ato. "I i' 'w':'
Lo standard prevede che una periferica sia in grado di gestire una sola richiesta '\ ' , I '
. . .. ... :;, ,:", Dapplna inlreCCIata dedlcata a segnafe dati
. .c,. SWU. ad non .ur:late eoncorrenti. . . . . .
CIO non Impedisce at programIDl apphcativi dl effettuare nehleste, rna queste Figura 11.53 Sezlone del cavo USB. I da.tl vengono trasmessl a.ttraversa un doppmo lOtrec-
vengono gestite in modo da rispettare 1a 10gica FIFO. .. ciato (linee D+ e 0-) su cui :i Ie
;;-1-1f:rl\ .1V = (D+) - (D-). Le tenslOnl di ahmentazlone sono dispowbih sm due cavettl VBUS
e Vss tenuta. a GND). tutto e schennato un rivesti-
.. mento 10 poliestere e allumlnlO, avvolto m una treccla. di rame, a sua volta. ncoperta da un
.. rivestimento in PVC.
','"' ..4
11

,=",
. '
<w.. !J ",' I..'
n caVD USB e costituito da quattro fili, due dei quali, D+ e D-, sono adibiti al ... . . .
trasferimento dati e due" V.ss e trasporto di una piccola quantita di condlzloID, a. causa delle refllstenze Rpd eli pull-down, SIS, D+ che D- sono a Vss, e
potenza. La seZlOne del cavo e nportata In Figura 11.53. ... dunque a. massa..
La linea D+ etenuta dall'host (0 dall'hub a cui il eavo econnesso) a una tensione i Non appena il cavo USB viene alla porta upstream del dispositivo che
Ia linea D- et.enuto a m.assa. La trasmL:sione avviene .per variazioni ."ILr" si la di trasp,0r:a.ta dal cavo si applica .alla
dl tenslOne = - (D-). dagh USUall standard dl trasmissione, '.. ; reslstenza.di Rpu. SLforma COSI un partltor.e fra VBUS e Vss
dove s?lo 2 va.lon
S
: 10 USB preve.de pili livelli del , .. .. D (D+ se 11 elento, D- se eveloce). CIC una di
.6V, rifentl a pm livelli dl D, aJ. quail cornspondono dlfferentl stab del bus, ovvero del 10% su D lfi lOgresSO aHa porta upstream, caduta sufficiente a mnalzare il valore
differenti interpretazioni delle informazioni seambiate
49
. '. della tensione del cavo stesso a una tensione superiore alia soglia Vrn 11.55).
Le due linee di alirnentazione, oltre a fornire una piccola quantita di potenza
SO
, Questa condizione, se pennane per un periodo di tempo superiore 0 uguale ai 2,5 J'S,
utilizzabile per a basso .hanno ruolo. viene come connessione di.un porta.
Ie fasl di dlSPO: POlche 1dlSPOSltlVl sono pasSlVl e non prendono mat l'lDlZlatlva di
SltlVl. Come 51 vede dalla Flgura.ll.54, Ie hnee dl ahmentazlOne hanna di " auton.omamente, perche succeda qualcosa suI b.us o.ccorre la
pull-up sulle porte upstream e di pull-down sulle porte downstream. Le reslStenze IOterrogazlOne dell'hub da parte dell'host. Alla pr05suna mterrogazione l'hub nsponde
in questione fanno da partitori e consentono di riconoseere sia l'avvenuta rendendo nota che e'e stata una nuova connessione. A questo punto il software di si-
connessionejdisconnessione che il tipo di periferica sterna abilita la su cui si e il collegamen.to
51
e passa a
configurare la penfenca. OVVlamente qualora il diSPOSltIvo connesso Sla un. hub alle
cui porte siano conDessi diversi dispositivi, la procedura viene ripetuta per ciascuno
, dei dispositivi.
Una volta riconosciuta la connessione della periferica tutti i successivi ftussi co-
. fra host e dispositivo avvengono elettricamente attraverso variazioni del
'Y","!, :*!,.: dlfferenzlale (D+) - (D-)
,.'i:'.I",;" .
' ', :(;l'!', ,)'fl i""....

,;",""": ,- <lli,:
. ''\'i(:'" , -.:' I
. ",:
'!'H"
.:"'E':.
. '

A[i;;d :'1t :';,:
,.f<; ,"., '. 'f '-,
, .' U&::.J
11.8,8 II cava
508
I
)
I
<!
"0+ p-,ll.,lch. vekx:1
D JMf ptl.oc:IM '-nt.
-----------------
--_.
I
VIH--------

B-us di sistema 511
. .
Vediamo ora con maggior dettaglio come, a partire dalla connessione di UDa nuova pe-
riferica, questa viene riconosciuta econfigurata. A tale scopo enecessario richiamare
quanta detto in precedenza, e cioe cb,e il bus ein esclusivo controllo dell'host che,
anche neUe situazioni di riposo, 10 mantiene attivo, trasmettendo, a intervalli regolari
di 1 ms, it messaggio SOF (Cfr, 11.8,11).
Abbiamo visto che it coUegamento di una periferica ericonosciuto dall'hub cui
Quale viene connessa. A quel punto si stabilisce una rase detta di enumera-zione del bus,
che porta I'host a identificare la periferica e quindi a configura.rla. Schematicamente
il processo di enumerazione e configurazione si compone dei seguenti passi:
a) I'hub al Quale e connessa la periferica, sulla prima interrogazione da parte dell 'host,
informa che c'e stata una variazione del suo stato
53
;
b) SWU interroga l'hub per conoscere l'esatta caUSa Sua della variazione di state e
riceve in risposta l'identificativo della porta a cui econnessa 1a nuova periferica;
c) l'host (dopo un'attesa di almeno lOOms per consentire il completamento delle
fasi di connessione e per lasciar stabilizzare l'alimentazione suI nuovo ramo della
catena USB) invia alIa porta delJ'bub identificata al passo b) un comando per
la sua abilitazione. AHa fine si.questo passaggio, grazie agli uffici del controllore
dell'hub, 1a porta eabilitata e Ia periferica a essa connessa si trova in uno stato
di riferimento (default). In questa statc ein grade di dialogare suI canale di base
attraverso iI terminatore 0;
53 A questo punta la periferiea non pub aneora. eomunica.re in quanta la porta a cui e eonnessa e
disabilitata.
D- p.r perllerlch. v.locl
"'" -1' I I Do- per ptrllerleht lent:
Vss !
v
11.8.9 Riconoscirnento e configurazione delle periferiche
Periferica Connessione
connessa avvertlta
Figura 11.55 Andamento delle tensioni a seguito della. connessione di un dispositivo alla
catena USB. L'andamento della coppia eli tensioni (D+, 0-) determina anche il tipo di
connessa: se e D+ a superare 180 soglia VIH per piu di 2.5,us, e connessa una
periferica velocej viceversa, se a sallre sopra 180 soglia per piu eli 2.5JJS eD-, econoessa una
periferica lenta_
Zo= 900 15%
Rpd= 15 Kn 5%
Rp\>'" 1.5 Kn 5%
Vss =OV
VBUS =5V
Porta upstream
Capitolo 11
Porta downstream
VBUS
0+ 0+
R",
cava USB
D

R..
R4 u-
Veus
I Vss
Vss
Periferica lenta
-
VeU3
Periferica y"lace r- Veus
0+
R..
R",
l
II
0+
.<-
cava USB
-
I I I
R
u- 0,
-
I Vss
Vss
-
Nel caso particola.re in cui a essere rimosso sia un bub, tutti i dispositivi a esso
connessi, di qualsiasi tipo essi siano, vengono considerati disconnessi e Ie risorse da
questi in precedenza utilizzate ritornano a essere disponibili.
'!"".
, ..
t'I ",,' ,
'1....1';. ,
..
, ..- .
l\;''''''''-
:;-


, ...l!ht
11"
..
.' ,:;. " ..
'. '"
.", t-... . _
'-': .,""
<. ,Ii: ' t'-::7i>:;-
.' . ..", .. : '._
'-'.F;
'-,,:.
.
"W'" if....'!"
". '...1' 11/ ";::.-,,,".' -
'!'j "".,.
-', l;;!' .".'.'
r '.J. ..,-.

. -.,-' . ,,"'.;,....
'. ,J::'.l'

.'
..' "'",'
.".f@. .,$).\'....
:.", . '.'" '",,-.,.-.
, ...,'
, .,- . '<,' ';"
,;. "",";Ii' ,.".-." .
,','-' .' "1':'"
-.....,.",t.,. 'l"-:"", ::. ,
.. ;.,

':
., :"')'",;" ,
- ""'12",:,' '
'.' "".;;' II ::".... :,,:;' "'.'
. .. 'i::", '-
,'. ','llljlii",l 'I' 't'"''
.,:' ...<1';1,.,.
,
" >' '1"'.,',', "
.' '- ,", ., ... , .
", ,
, ."f..
" . ,:'1('(,-:'-':"
..., ..::.
;.-' ... .. .
.' ;('. "}i'l, "j,,,", .'J"
,"
.. ".'."""",; , .
, '......... ""''''''''
,L f"'i ..'
"? ..
,'. .;11 ;)\t*

.' ,.' - 'iN .'.
. ..... ','i!,!(.
Figura 11.54 Struttura delle porte upstream e dOWDstream e differenziazione della perife .
veloce 0 attraverso la di pullup della porta upstream. La resistenza .n:\
di pull-up epan a Rpu=1.5kO; quella di pull-down a Rpd=15KkO, Per Ie porte upstream ""'ij;:,:::
non c'e differenza ira dispositivi veloci e lenti: la resisteoza eli pulldown, ecoUegata sia a .. ':;
D+ the a D-. ,Per le porte downstream, invece, bisogna distinguere tra perifericbe lente e, -
veloci. Per Ie prime la resistenza di pull-up e collegata a D-. per Ie seconde a D+. Zo e '..
, I
I'impedenza del cavo_ . ;':'''JW'. I:!,'.':':"
Y,,"tJ'i, "
',''':1 1; ..
..i .- iE . :
'. , .
. ',,;':!y,Wr:'" !ii'-"
I'},;I.,

n
. di r USB Nlf' '. dtt
lsconneSSlOne una penJ.enca e unZlOnamento a reglme, una e e
due linee D e sempre a una tensione superiore a tma tensione eli soglia (indicata ..
come VIHZ(min) in Figura 11.56), mentre l'altra eprossima aHa tensione di riferimento ,'.; ....
V
SS
S2 _ Nel momenta in il viene disconnesso
l
1a resistenza di .
pull-down abbassa la tenslOne sulla linea a UveUo alto, fino a portarla a Vss. Se la ':1\r:t';
tensione scende satta la soglia VIL e vi permane per un periodo superiore a . .
la logica dell'hub assume una eliscoWlessione. L'host disabilita la porta e provvede
rendere Ie che il disp?sitivo in
Se, per esemplO, Vlene nmosso un disPOSltIVO non autoalimento, Sl rende dispomblle ' ..
Ia quantita. di potenza elettrica che esso assorbiva dal bus, ::.
":"_"

, .. ,.., "'""\
. }l"..:.i!,'';:. \. ,_..,,'.
"'ILl' .
.,"..
'1 . ',<', ..
" .} .,.
'-!:. .'
'. i,:,,'
"'. ".. .. :.,
". ,:;."1: O::"'i
;)' .
,>;_1'
. . \ ,.. .""t,;-
, .,1' :,.... ,' '..
,
'. '.'
:?i:l');''-''--
,.",l, :,',:J!'< .-
'''';. (. >l:<'. "'1,'11"<,'
.' ,,::oIl,;\'l\l\(: 'n'A:;
52Come abbiamo visto D+ >::; VlH e D- ::; VSS per Ie periferiche veloci, al contrario per 1e lente,
, ';;..
.. ',' >l
_
,,-...,.t;\ j,o" ,!f!>
.';0,\,""/0 ,1,1 """,-.-..,
III .. t
,,;........ ;:J'
510
1
\
\
I
I
I
I
I
,
I
I
I
I
-
-

..
)
I
<!
"0+ p-,ll.,lch. vekx:1
D JMf ptl.oc:IM '-nt.
-----------------
--_.
I
VIH--------

B-us di sistema 511
. .
Vediamo ora con maggior dettaglio come, a partire dalla connessione di UDa nuova pe-
riferica, questa viene riconosciuta econfigurata. A tale scopo enecessario richiamare
quanta detto in precedenza, e cioe cb,e il bus ein esclusivo controllo dell'host che,
anche neUe situazioni di riposo, 10 mantiene attivo, trasmettendo, a intervalli regolari
di 1 ms, it messaggio SOF (Cfr, 11.8,11).
Abbiamo visto che it coUegamento di una periferica ericonosciuto dall'hub cui
Quale viene connessa. A quel punto si stabilisce una rase detta di enumera-zione del bus,
che porta I'host a identificare la periferica e quindi a configura.rla. Schematicamente
il processo di enumerazione e configurazione si compone dei seguenti passi:
a) I'hub al Quale e connessa la periferica, sulla prima interrogazione da parte dell 'host,
informa che c'e stata una variazione del suo stato
53
;
b) SWU interroga l'hub per conoscere l'esatta caUSa Sua della variazione di state e
riceve in risposta l'identificativo della porta a cui econnessa 1a nuova periferica;
c) l'host (dopo un'attesa di almeno lOOms per consentire il completamento delle
fasi di connessione e per lasciar stabilizzare l'alimentazione suI nuovo ramo della
catena USB) invia alIa porta delJ'bub identificata al passo b) un comando per
la sua abilitazione. AHa fine si.questo passaggio, grazie agli uffici del controllore
dell'hub, 1a porta eabilitata e Ia periferica a essa connessa si trova in uno stato
di riferimento (default). In questa statc ein grade di dialogare suI canale di base
attraverso iI terminatore 0;
53 A questo punta la periferiea non pub aneora. eomunica.re in quanta la porta a cui e eonnessa e
disabilitata.
D- p.r perllerlch. v.locl
"'" -1' I I Do- per ptrllerleht lent:
Vss !
v
11.8.9 Riconoscirnento e configurazione delle periferiche
Periferica Connessione
connessa avvertlta
Figura 11.55 Andamento delle tensioni a seguito della. connessione di un dispositivo alla
catena USB. L'andamento della coppia eli tensioni (D+, 0-) determina anche il tipo di
connessa: se e D+ a superare 180 soglia VIH per piu di 2.5,us, e connessa una
periferica velocej viceversa, se a sallre sopra 180 soglia per piu eli 2.5JJS eD-, econoessa una
periferica lenta_
Zo= 900 15%
Rpd= 15 Kn 5%
Rp\>'" 1.5 Kn 5%
Vss =OV
VBUS =5V
Porta upstream
Capitolo 11
Porta downstream
VBUS
0+ 0+
R",
cava USB
D

R..
R4 u-
Veus
I Vss
Vss
Periferica lenta
-
VeU3
Periferica y"lace r- Veus
0+
R..
R",
l
II
0+
.<-
cava USB
-
I I I
R
u- 0,
-
I Vss
Vss
-
Nel caso particola.re in cui a essere rimosso sia un bub, tutti i dispositivi a esso
connessi, di qualsiasi tipo essi siano, vengono considerati disconnessi e Ie risorse da
questi in precedenza utilizzate ritornano a essere disponibili.
'!"".
, ..
t'I ",,' ,
'1....1';. ,
..
, ..- .
l\;''''''''-
:;-


, ...l!ht
11"
..
.' ,:;. " ..
'. '"
.", t-... . _
'-': .,""
<. ,Ii: ' t'-::7i>:;-
.' . ..", .. : '._
'-'.F;
'-,,:.
.
"W'" if....'!"
". '...1' 11/ ";::.-,,,".' -
'!'j "".,.
-', l;;!' .".'.'
r '.J. ..,-.

. -.,-' . ,,"'.;,....
'. ,J::'.l'

.'
..' "'",'
.".f@. .,$).\'....
:.", . '.'" '",,-.,.-.
, ...,'
, .,- . '<,' ';"
,;. "",";Ii' ,.".-." .
,','-' .' "1':'"
-.....,.",t.,. 'l"-:"", ::. ,
.. ;.,

':
., :"')'",;" ,
- ""'12",:,' '
'.' "".;;' II ::".... :,,:;' "'.'
. .. 'i::", '-
,'. ','llljlii",l 'I' 't'"''
.,:' ...<1';1,.,.
,
" >' '1"'.,',', "
.' '- ,", ., ... , .
", ,
, ."f..
" . ,:'1('(,-:'-':"
..., ..::.
;.-' ... .. .
.' ;('. "}i'l, "j,,,", .'J"
,"
.. ".'."""",; , .
, '......... ""''''''''
,L f"'i ..'
"? ..
,'. .;11 ;)\t*

.' ,.' - 'iN .'.
. ..... ','i!,!(.
Figura 11.54 Struttura delle porte upstream e dOWDstream e differenziazione della perife .
veloce 0 attraverso la di pullup della porta upstream. La resistenza .n:\
di pull-up epan a Rpu=1.5kO; quella di pull-down a Rpd=15KkO, Per Ie porte upstream ""'ij;:,:::
non c'e differenza ira dispositivi veloci e lenti: la resisteoza eli pulldown, ecoUegata sia a .. ':;
D+ the a D-. ,Per le porte downstream, invece, bisogna distinguere tra perifericbe lente e, -
veloci. Per Ie prime la resistenza di pull-up e collegata a D-. per Ie seconde a D+. Zo e '..
, I
I'impedenza del cavo_ . ;':'''JW'. I:!,'.':':"
Y,,"tJ'i, "
',''':1 1; ..
..i .- iE . :
'. , .
. ',,;':!y,Wr:'" !ii'-"
I'},;I.,

n
. di r USB Nlf' '. dtt
lsconneSSlOne una penJ.enca e unZlOnamento a reglme, una e e
due linee D e sempre a una tensione superiore a tma tensione eli soglia (indicata ..
come VIHZ(min) in Figura 11.56), mentre l'altra eprossima aHa tensione di riferimento ,'.; ....
V
SS
S2 _ Nel momenta in il viene disconnesso
l
1a resistenza di .
pull-down abbassa la tenslOne sulla linea a UveUo alto, fino a portarla a Vss. Se la ':1\r:t';
tensione scende satta la soglia VIL e vi permane per un periodo superiore a . .
la logica dell'hub assume una eliscoWlessione. L'host disabilita la porta e provvede
rendere Ie che il disp?sitivo in
Se, per esemplO, Vlene nmosso un disPOSltIVO non autoalimento, Sl rende dispomblle ' ..
Ia quantita. di potenza elettrica che esso assorbiva dal bus, ::.
":"_"

, .. ,.., "'""\
. }l"..:.i!,'';:. \. ,_..,,'.
"'ILl' .
.,"..
'1 . ',<', ..
" .} .,.
'-!:. .'
'. i,:,,'
"'. ".. .. :.,
". ,:;."1: O::"'i
;)' .
,>;_1'
. . \ ,.. .""t,;-
, .,1' :,.... ,' '..
,
'. '.'
:?i:l');''-''--
,.",l, :,',:J!'< .-
'''';. (. >l:<'. "'1,'11"<,'
.' ,,::oIl,;\'l\l\(: 'n'A:;
52Come abbiamo visto D+ >::; VlH e D- ::; VSS per Ie periferiche veloci, al contrario per 1e lente,
, ';;..
.. ',' >l
_
,,-...,.t;\ j,o" ,!f!>
.';0,\,""/0 ,1,1 """,-.-..,
III .. t
,,;........ ;:J'
510
1
\
\
I
I
I
I
I
,
I
I
I
I
-
-

..

,
\

\ ,
I-
\ :
I
I.
\
1
I
\
I
\
I
\
513 Bus di sistema
[Mic98]si troYa una descri70ione eu come costruire un driver per questa tipo di trasferimento.
realta, qui, come in altre paTti del protocoUo, Ie case 8000 pili Intrica.te di quanta moatri Ie.
nostra descrizione: gU 8 bit si dividono in due sottoca.rn.pi di 4 bit, di cui it eecondo ha funzioni di
controllo sui primo. Evitiamo di entrare in questi det.tagli cercando di dare una rappresentazione
sintetica. del protocollo.
56La differenziazione ecomunque data. solo dalla codifica del campo Pro (non c'e un campo per il
nome).

4. Trasferimento in blocco (bulk) E una comunicazione di tipo unidirezionale.


n ftusso va dalPhost verso un terminatore 0 viceversa. Nella maggior parte dei
casil aHa trasmissione a blocchi viene dedicata tutta la larghezza di banda dis-
ponibile. La differenza tra. questa tipo di trasferimento e il precedente sta nel
fatto che questo non ha di norma nessun vicolo precise sul1a latenza sulla
temporizzazione. L'unico vincolo e posta dal generico requisito eli cercare la
minimizzazione dei tempi minimi
s4
,

3. Trasferimento isocrono E una comunicazione di tipo unidirezionale. Puo


avvenire dalFhost verso un terminatore 0 viceversa. I dati isocroni sono quei dati
la cui creazione, trasporto e consumo devono essere continui e in tempo reale. La
trasmissione delle informazioni deve avvenire alia stessa velocita con cui vengono
prodotte, pena la perdita di ogni tipo eli temporizzazione. Un esempio tipico di
dati isocroni ela voce (si provi a immaginare un'applicazione in cui la velocita,
di trasmissione sia diversa da quella di produzione). Al trasferimento i50crono
viene spesso dedicata la maggior porzione disponibile di banda passante.

2. Trasferimento per interruzione E un flusso.di dati unidirezionale. Viene


utilizzato, per esempio, da mouse, tastiera e joystick per comunicare Ie coordinate
del puntatore 0 i dati circa il tasto premuto. Un dispositivo non puo interrompere
spontaneamente l'host e
l
quindi, questa trasferimento ha inizio a. seguito di una
lase di polling da parte dell'host.
11.8.11 . II protacolla eil formata dei pacchetti
,
......................
0+ per IMril.rk;/I. veloci
o JM' pemerich,le"tt
--_ _ --- -.- - _ .
v'
v..
.....


.
512 CapItola 11
..(Il';,!


:';t.';' ...
;
"".'.'IW", . ,.\. !'
.. "c-,-
"
.,. 'tl' .
., _' .,.,. ,_ .,,"_,.1
,
-'Ilt; .,
:p, .:i:(.' .
..:',' ',"-
'1'." j " ":"()j, .
eli,..-'.
-, ".",,.,.,.

.-:_" 1;'.
" 6.; . ""I',i_ ,
.' ... ';", :!.. ',
-.;0;1'('"
,.
.'
."."".. ,
...
' .. ... .
..". ..':.:.:-jl: :":";1;.":, .
, ".;......<.. .;.
q ....,'
; ..
'., ""-2 :, C' .'" ,
... ,.
". S:..", f,:)"t;,.- .\,

.. '

__::: 2.5p.S J
10- 1 . ... '
Periferica Olsconnesslone f'FB't-',
dlsconne-ssa avvertlta
,
:":<';'i\"'."
F.igura 11:56. Andamento delle tensioni meccanismo rile,,:azione della disconnessione
dt una penfenca. dalla catena USB. La discesa della tenslODe dt D+ 0 D- (a seconda '"
tipo di periferica) sotto 1a soglia VIL viene interpretata come disconnessione. ." ..
.' ,...
'.. ;'>r,ti] .
, .."
-', "
d) un indirizzo alIa nello stato di
"ea Attra:verso il dl legge 11 f ..... '
stessa, I paramet!l n.ecessan alIa f1.USSt dl datto In.
base alle mformazlOID di configurazlone ottenute dal dlSPOSltivo e tenuta conto $,;;, '.
di queUe indicate dai programmi utilizzatori, SWU determina la fraz;one di ri-
sorse .da alIa periferica. Conclusa la dei terminatori e dei , . . .. .
canalt la penfenca econfigurata e pronta all'utlhzZQ. :-.... E interessante spendere qualche parola sul formato del messaggJ. (0 pacchettl) prevlstl
dal protocollo.
Come appena accennato, nel processo di configurazione il softwar:e uti1izzatore Un pacchetto euna sequenza di bit. npacchetto ecliviso in campi. Normalmente
a .SWU Ie quelle previste dallo USB, .. i campi sono di 8 bit (0 multipli di 8)! m.a ci anche di misura. I
mtende Implegare la perifenca, mfluenzando 1a sua configurazlOoe. .In considerazlO- bit vengono inviati sui bus dal meno slgruficatlvo (LSb) al PlU SlgnificatlvO (MSb).
ne del fatto che esserci della. periferica non ,
dallo standard, econsentlto al software utiltzzatore dl configurare tall funzlOnaltta . ... ., . . .. .
attraverso i canali di Uvello LF. .\ Struttura del pacchettl Tutti 1 pacchettl IDlZlano con un campo di
. : ':. zione (SYNC), costituito da una sequenza codificata in grade di generate 1a massima
\ 3tt<i densita di fronti di transizione. Del SYNC fa parte il cosiddetto SOP (Start Of
. ',' . Packet), un sottocampo che marca l'inizio effettivo del pacchetto.
11. 8.10 Trasfenmento dl dati - . Dopo il SYNC viene trasmesso un campo d.i 8 bit" identificativo del tipo paechet-
\:1i);;. to (PID). II PID differenzia 4 tipi di pacchetti a loro volta differenziati in sottotipi
Lo standard USB prevede trasferimenti appartenenti a. una delle seguenti quattro illora tlnome"56., vari tipi di sono riportati in TabellalL8.11,
classi. \ : asSleme a una breve descnzlOne del loro slgmficato.
, '.
-,
L di E un flusso di dati bidirezionale. I dati di
10 vengono usati per il. appena avvertito
suo al S18tema. TuttI I diSPOSltlvl devono un
mento dl. tale tlPO; a tale scopo, l'host che v: mformazloUl utIh
nel terrnmatore 0, normalmen,te un regIstro specIale sui ffilcroeontrollore della ..
P
eriferica avente indirizzo 0000.
" .
I;,..:f.::,.; (fj' ..
. , :iii.....
I
I
I
I
I
I
I
I
I

,
\

\ ,
I-
\ :
I
I.
\
1
I
\
I
\
I
\
513
Bus di sistema
[Mic98]si troYa una descri70ione eu come costruire un driver per questa tipo di trasferimento.
realta, qui, come in altre paTti del protocoUo, Ie case 8000 pili Intrica.te di quanta moatri Ie.
nostra descrizione: gU 8 bit si dividono in due sottoca.rn.pi di 4 bit, di cui it eecondo ha funzioni di
controllo sui primo. Evitiamo di entrare in questi det.tagli cercando di dare una rappresentazione
sintetica. del protocollo.
56La differenziazione ecomunque data. solo dalla codifica del campo Pro (non c'e un campo per il
nome).

4. Trasferimento in blocco (bulk) E una comunicazione di tipo unidirezionale.


n ftusso va dalPhost verso un terminatore 0 viceversa. Nella maggior parte dei
casil aHa trasmissione a blocchi viene dedicata tutta la larghezza di banda dis-
ponibile. La differenza tra. questa tipo di trasferimento e il precedente sta nel
fatto che questo non ha di norma nessun vicolo precise sul1a latenza sulla
temporizzazione. L'unico vincolo e posta dal generico requisito eli cercare la
minimizzazione dei tempi minimi
s4
,

3. Trasferimento isocrono E una comunicazione di tipo unidirezionale. Puo


avvenire dalFhost verso un terminatore 0 viceversa. I dati isocroni sono quei dati
la cui creazione, trasporto e consumo devono essere continui e in tempo reale. La
trasmissione delle informazioni deve avvenire alia stessa velocita con cui vengono
prodotte, pena la perdita di ogni tipo eli temporizzazione. Un esempio tipico di
dati isocroni ela voce (si provi a immaginare un'applicazione in cui la velocita,
di trasmissione sia diversa da quella di produzione). Al trasferimento i50crono
viene spesso dedicata la maggior porzione disponibile di banda passante.

2. Trasferimento per interruzione E un flusso.di dati unidirezionale. Viene


utilizzato, per esempio, da mouse, tastiera e joystick per comunicare Ie coordinate
del puntatore 0 i dati circa il tasto premuto. Un dispositivo non puo interrompere
spontaneamente l'host e
l
quindi, questa trasferimento ha inizio a. seguito di una
lase di polling da parte dell'host.
11.8.11 . II protacolla eil formata dei pacchetti
,
......................
0+ per IMril.rk;/I. veloci
o JM' pemerich,le"tt
--_ _ --- -.- - _ .
v'
v..
.....


.
512 CapItola 11
..(Il';,!


:';t.';' ...
;
"".'.'IW", . ,.\. !'
.. "c-,-
"
.,. 'tl' .
., _'
.,.,. ,_ .,,"_,.1
,
-'Ilt; .,
:p, .:i:(.' .
..:',' ',"-
'1'." j " ":"()j, .
eli,..-'.
-, ".",,.,.,.

.-:_" 1;'.
" 6.; . ""I',i_ ,
.' ... ';", :!.. ',
-.;0;1'('"
,.
.'
."."".. ,
...
' .. ... .
..". ..':.:.:-jl: :":";1;.":, .
, ".;......<.. .;.
q ....,'
; ..
'., ""-2 :, C' .'" ,
... ,.
". S:..", f,:)"t;,.- .\,

.. '

__::: 2.5p.S J
10- 1 . ... '
Periferica Olsconnesslone f'FB't-',
dlsconne-ssa avvertlta
,
:":<';'i\"'."
F.igura 11:56. Andamento delle tensioni meccanismo rile,,:azione della disconnessione
dt una penfenca. dalla catena USB. La discesa della tenslODe dt D+ 0 D- (a seconda '"
tipo di periferica) sotto 1a soglia VIL viene interpretata come disconnessione. ." ..
.' ,...
'.. ;'>r,ti] .
, .."
-', "
d) un indirizzo alIa nello stato di
"ea Attra:verso il dl legge 11 f ..... '
stessa, I paramet!l n.ecessan alIa f1.USSt dl datto In.
base alle mformazlOID di configurazlone ottenute dal dlSPOSltivo e tenuta conto $,;;, '.
di queUe indicate dai programmi utilizzatori, SWU determina la fraz;one di ri-
sorse .da alIa periferica. Conclusa la dei terminatori e dei , . . .. .
canalt la penfenca econfigurata e pronta all'utlhzZQ. :-.... E interessante spendere qualche parola sul formato del messaggJ. (0 pacchettl) prevlstl
dal protocollo.
Come appena accennato, nel processo di configurazione il softwar:e uti1izzatore Un pacchetto euna sequenza di bit. npacchetto ecliviso in campi. Normalmente
a .SWU Ie quelle previste dallo USB, .. i campi sono di 8 bit (0 multipli di 8)! m.a ci anche di misura. I
mtende Implegare la perifenca, mfluenzando 1a sua configurazlOoe. .In considerazlO- bit vengono inviati sui bus dal meno slgruficatlvo (LSb) al PlU SlgnificatlvO (MSb).
ne del fatto che esserci della. periferica non ,
dallo standard, econsentlto al software utiltzzatore dl configurare tall funzlOnaltta . ... ., . . .. .
attraverso i canali di Uvello LF. .\ Struttura del pacchettl Tutti 1 pacchettl IDlZlano con un campo di
. : ':. zione (SYNC), costituito da una sequenza codificata in grade di generate 1a massima
\ 3tt<i densita di fronti di transizione. Del SYNC fa parte il cosiddetto SOP (Start Of
. ',' . Packet), un sottocampo che marca l'inizio effettivo del pacchetto.
11. 8.10 Trasfenmento dl dati - . Dopo il SYNC viene trasmesso un campo d.i 8 bit" identificativo del tipo paechet-
\:1i);;. to (PID). II PID differenzia 4 tipi di pacchetti a loro volta differenziati in sottotipi
Lo standard USB prevede trasferimenti appartenenti a. una delle seguenti quattro illora tlnome"56., vari tipi di sono riportati in TabellalL8.11,
classi. \ : asSleme a una breve descnzlOne del loro slgmficato.
, '.
-,
L di E un flusso di dati bidirezionale. I dati di
10 vengono usati per il. appena avvertito
suo al S18tema. TuttI I diSPOSltlvl devono un
mento dl. tale tlPO; a tale scopo, l'host che v: mformazloUl utIh
nel terrnmatore 0, normalmen,te un regIstro specIale sui ffilcroeontrollore della ..
P
eriferica avente indirizzo 0000.
" .
I;,..:f.::,.; (fj' ..
. , :iii.....
I
I
I
I
I
I
I
I
I
- 1 I
515
Bus di sistema.
8 bit max 1024 byte 16 bit
I PIO 1 DATA I CRC16 I
, /
v
b) il dispositivo indirizzato si accorge di essere chiamato in causa riconoscendo nel
messaggio token il suo indirizzo e opera in conseguenza al tipo di richiesta;
c) 1a transazione ha termine con un handshake fra host e dispositivo} il scope e
stabilire se it trasferimento estato portato a tennine senza errore.
Figura 11.58 Forma.to dei pacchetti da.ti. II campo dati contiene al massimo 1024 byte. II
CRC edi 16 bit.
8 bit 7 bit 4 bit 5 bit
I PIO I AOOR IENOP I CRC5 I
, + / I
I tipi di pacchetto previsti dal protocollo USB.
Capitola 11
Tipo Nome bit [3,01 Descrizione
,
di PID
Token OUT OOOlB lndirizzo e di endpoint in una
transazione host -+ fUDzione
IN 10018 lndiri:u:o e numero di endpoint in una.
transazione funzione -+ host
SOF" QlOlB Indicatore d'inizio frame e numero del lrame"
SETUP 11018 Inditino e numero di endpoint in una transazione
host --t funzione per il SETUP di un control pipe
Data DATAO 00118 Pacchetto Data PIO pari
DATAl 1011B Pacchetto Data PID dispari
HandJhili ACK 00108 II ricevente hI. accettato i pacchetti data. sentoa. errorl
NAK 1010B II ricevente non accetta i pacchett! dati
oppure Ill. trasmittente non puo inviarne
STALL 11108 L'endpoint ebloccato 0 non & esaudibile una.
richiesta di control pipe
Speciale PRE nOOB Preambolo della .assione host.
Abilita il traffico sui bus in uscita verso periferiche lente
Transazioni Le transazioni bus avviene nel mode seguente:
a) 131 transazione ha inizio quando 11host invia suI bus un pacchetto di tipo token
per sollecitare un trasferi.mentoj
Pacchetti handshake Sono costitwti del solo campo PlD e vengono utilizzati per
riportare 10 stato eli una transazione. 8i dividono a loro volta in tre tipi (ACK
1
NACK e STALL) come indicato in TabeUa 11.8.11.
Pacchetti di dati Un pacchetto dati ha il formato di Figura 11.58.
Figura 11.57 Formato dei pacchetti di tipo token. 11 campo PID specifica tipo e sottotipo
(Cfr. 11.8.11); il campo ADDRcontiene l'indirizzo assegnato alia periferica.; il campo
ENDP identifica il terminatore sulla. periferica indirizzata; eRe e il (Cyclic Regundancy
Check) eli 5 bit. .
514
\
I
I
I
J
I
I
II
I
\1

l
I
I
-
-
-
-
- 1 I
515
Bus di sistema.
8 bit max 1024 byte 16 bit
I PIO 1 DATA I CRC16 I
, /
v
b) il dispositivo indirizzato si accorge di essere chiamato in causa riconoscendo nel
messaggio token il suo indirizzo e opera in conseguenza al tipo di richiesta;
c) 1a transazione ha termine con un handshake fra host e dispositivo} il scope e
stabilire se it trasferimento estato portato a tennine senza errore.
Figura 11.58 Forma.to dei pacchetti da.ti. II campo dati contiene al massimo 1024 byte. II
CRC edi 16 bit.
8 bit 7 bit 4 bit 5 bit
I PIO I AOOR IENOP I CRC5 I
, + / I
I tipi di pacchetto previsti dal protocollo USB.
Capitola 11
Tipo Nome bit [3,01 Descrizione
,
di PID
Token OUT OOOlB lndirizzo e di endpoint in una
transazione host -+ fUDzione
IN 10018 lndiri:u:o e numero di endpoint in una.
transazione funzione -+ host
SOF" QlOlB Indicatore d'inizio frame e numero del lrame"
SETUP 11018 Inditino e numero di endpoint in una transazione
host --t funzione per il SETUP di un control pipe
Data DATAO 00118 Pacchetto Data PIO pari
DATAl 1011B Pacchetto Data PID dispari
HandJhili ACK 00108 II ricevente hI. accettato i pacchetti data. sentoa. errorl
NAK 1010B II ricevente non accetta i pacchett! dati
oppure Ill. trasmittente non puo inviarne
STALL 11108 L'endpoint ebloccato 0 non & esaudibile una.
richiesta di control pipe
Speciale PRE nOOB Preambolo della .assione host.
Abilita il traffico sui bus in uscita verso periferiche lente
Transazioni Le transazioni bus avviene nel mode seguente:
a) 131 transazione ha inizio quando 11host invia suI bus un pacchetto di tipo token
per sollecitare un trasferi.mentoj
Pacchetti handshake Sono costitwti del solo campo PlD e vengono utilizzati per
riportare 10 stato eli una transazione. 8i dividono a loro volta in tre tipi (ACK
1
NACK e STALL) come indicato in TabeUa 11.8.11.
Pacchetti di dati Un pacchetto dati ha il formato di Figura 11.58.
Figura 11.57 Formato dei pacchetti di tipo token. 11 campo PID specifica tipo e sottotipo
(Cfr. 11.8.11); il campo ADDRcontiene l'indirizzo assegnato alia periferica.; il campo
ENDP identifica il terminatore sulla. periferica indirizzata; eRe e il (Cyclic Regundancy
Check) eli 5 bit. .
514
\
I
I
I
J
I
I
II
I
\1

l
I
I
-
-
-
-
1. Proprieta. eli idempotenza:
Vengono ora date alcune importanti proprieta deU'algebra
l
.
A.I Proprieta dell'algebra delle reti
-

\ -
I
I'
I
\
I
I
\
\
\
I
I
I
1
0-0 = 0 11 = 1
0+0=0 1+1=1
Prova (per induzione perfetta):
2. Proprieta distributiva:
lQuando e possibile, il modo sicuro per provare Ie proprieta. dell'eJgebra coosL,te nel ricorrere at
metodo perfetto) ovvero nell'effettuare tutte Ie pOl33ibili sostituziooi di 0 e 1 per Ie
variabili che compa.iono nelle espressioni.
x+x=x
x x = x
Sistemi Digitali
A
Per sistema digitale ai intende una macchina che effettua processi di elaborazione
su segnali digitali, oyvero su segnali che possono solo assumere valori da un insieme
finito. I sistemi digitali di nostro interesse sana queUi in cui l'insieme di definizione e
limitato a due soli valeri) ovvero a quei sistemi digitali in cui i segnali (e Ie variabili che
Ii rappresentano) Msumano valori su di un insieme binario. Le reti corrispondenti sona
descritte attraverso un'algebra, detta algebra delle reti 0 algebra booleana, in ragione
del fatto che essa deriva dalla logica del calcolo delle proposizioni, introdotta nel secolo
scorso dal matematico e filosofo inglese George Boole. Proprio in virtu dell'origine di
questa algebra, le reti in questione vengono usualmente dette reti logiche.
Le operazioni dell'algebra delle reti sono state gia introdotte al Capitola 1, M-
sierne alle porte logiche fondamentali a esse corrispondenti. Nella stessa sede sono
stati anche introdotti i concetti di rete combinatoria e sequenziale.
, r. ,"
or: .
'I"
,,;'
.";Z'i'"
\1,":' " ... ...
'. ,1:1,"".'
,.'1'".
, :'t'""ol,' ,tJ!.:, ,
1""". ", ",' l!.::l
_: ,: .tfl" 'c,,",
' .
;. ;

t,.....]',,', .r,",

".0....., ,,' .. , ,.,
", ", ..,.. ", '
- . 'I. ll'"..[
'("', ",.,
iiii' "i-l.' .
' , ;<
.,.1.71- .
.'
,''''''''' I" ,',..,'
.' , l'Il"' cI ..., ,
",'t..
'" ".
'" ,,,I'... f. ;l" ..
.' r .. I
:0.1" .. ,
o ,::t1j[,):: ;:,:;;g;c
.', ...\11,'.':, ':""IAI.
\""',.. ", )","":; ,.
, .' " ........ ,"',.
C ",.,',...< .. n,.','
'.....>;:..,:, ;;',,'/.,..
,",':,,;'
,.';Jo'"
\
",r;,
" ""'l'!'! "'1"'" '_ ... ..
". 'f':"',,,, '; "'3'
.- '. ';', "..
:.,,-'::lj'l'!
, ., ,::1- r'r "d'
," " ".
,r

\' "'i '''.'' "'@\' ,
'. 'ffi,">,; .'"'.
"":<;!,,,. '.
11."( .
; I';
;.',." )' .':'....,
0\" .. ,
-',' ,w """'" ."""'.1:'
. . ...
-.. ...,"-- "-
..,... ='1. ,"."
,,-'>;;."ll "f)t .
.. .. ,
.' ,''''
, ."pw"' .
"'01:'"";" i',",,j,!j.'
".
".j! ')."," 1;
,.-,: I,,';A,:. ,;". ,..:.,..
,. ! ',""',.,
, '''''''''-''
.,' ?){-!. i ..

,."",1,,,_t- (;',1-;:.'"
"',
' .. ',;' ..,".
'h ;;,,':'.!",'
'" " ....J", i"Ir'-:""'
.......,.,.< . '"/t., '.
""i,,:','::f':":'
',' -!,,,""
.,'1 "..
... ',. ' ..'
'.-, .
.",,".(1,_'.".),"" ,,1'
.'. '1>:(,
"," ,po if,' ",'__:.
.' e' .,'-
.' ,..... """ r . 'J',,o.
iI' '"il'.It,. .... ,,,-
"
I'" "",' 1;"

,1>: ,1'."1'< '
:' IT;:",J
.. ;..


:$1"( ..
,., "
"''', I""'!''''
'W,'"

"<'. ".'
'.',,"., .' .
h-U",'''' ,

,.
,.)7';"4'-1':0 :. ' .",
'.
...
. :!:'fS' ,1-,
, .'<"._....
'" '\

'..,.,. '<Fi'"
,; . \;" ....
",""'''C' I
,. -..f"""..,'.' .""",.,'

"i"J:t'..,; r.
" .,..
' ....."." I P
, ','.'!:(;:!"'.-'!;
v".'.. .., .'\l"1!i.'
'
... ,?,,, ,4; 'f
.. ,..-:,., (0 ,
, .\.
. ,<'
,... , . .'
..' \,ff.", '.
4' ._.... .,"
",",",t, " .'
'. , ,.1+':11 ,;\'. ;/. :
""\' ,
"" ..'"" .... , "
"""< I" ):C' '

:-', ,. .

"...."
." -I_T'. .
,,_. .-.t ...
",!,' ,,, ,'''l,(,'',

..
;>;--
-'C'!i"';' ".. . fL Ii. '"iI "."
I :l:fu,,':;'
1. Proprieta. eli idempotenza:
Vengono ora date alcune importanti proprieta deU'algebra
l
.
A.I Proprieta dell'algebra delle reti
-

\ -
I
I'
I
\
I
I
\
\
\
I
I
I
1
0-0 = 0 11 = 1
0+0=0 1+1=1
Prova (per induzione perfetta):
2. Proprieta distributiva:
lQuando e possibile, il modo sicuro per provare Ie proprieta. dell'eJgebra coosL,te nel ricorrere at
metodo perfetto) ovvero nell'effettuare tutte Ie pOl33ibili sostituziooi di 0 e 1 per Ie
variabili che compa.iono nelle espressioni.
x+x=x
x x = x
Sistemi Digitali
A
Per sistema digitale ai intende una macchina che effettua processi di elaborazione
su segnali digitali, oyvero su segnali che possono solo assumere valori da un insieme
finito. I sistemi digitali di nostro interesse sana queUi in cui l'insieme di definizione e
limitato a due soli valeri) ovvero a quei sistemi digitali in cui i segnali (e Ie variabili che
Ii rappresentano) Msumano valori su di un insieme binario. Le reti corrispondenti sona
descritte attraverso un'algebra, detta algebra delle reti 0 algebra booleana, in ragione
del fatto che essa deriva dalla logica del calcolo delle proposizioni, introdotta nel secolo
scorso dal matematico e filosofo inglese George Boole. Proprio in virtu dell'origine di
questa algebra, le reti in questione vengono usualmente dette reti logiche.
Le operazioni dell'algebra delle reti sono state gia introdotte al Capitola 1, M-
sierne alle porte logiche fondamentali a esse corrispondenti. Nella stessa sede sono
stati anche introdotti i concetti di rete combinatoria e sequenziale.
, r. ,"
or: .
'I"
,,;'
.";Z'i'"
\1,":' " ... ...
'. ,1:1,"".'
,.'1'".
, :'t'""ol,' ,tJ!.:, ,
1""". ", ",' l!.::l
_: ,: .tfl" 'c,,",
' .
;. ;

t,.....]',,', .r,",

".0....., ,,' .. , ,.,
", ", ..,.. ", '
- . 'I. ll'"..[
'("', ",.,
iiii' "i-l.' .
' , ;<
.,.1.71- .
.'
,''''''''' I" ,',..,'
.' , l'Il"' cI ..., ,
",'t..
'" ".
'" ,,,I'... f. ;l" ..
.' r .. I
:0.1" .. ,
o ,::t1j[,):: ;:,:;;g;c
.', ...\11,'.':, ':""IAI.
\""',.. ", )","":; ,.
, .' " ........ ,"',.
C ",.,',...< .. n,.','
'.....>;:..,:, ;;',,'/.,..
,",':,,;'
,.';Jo'"
\
",r;,
" ""'l'!'! "'1"'" '_ ... ..
". 'f':"',,,, '; "'3'
.- '. ';', "..
:.,,-'::lj'l'!
, ., ,::1- r'r "d'
," " ".
,r

\' "'i '''.'' "'@\' ,
'. 'ffi,">,; .'"'.
"":<;!,,,. '.
11."( .
; I';
;.',." )' .':'....,
0\" .. ,
-',' ,w """'" ."""'.1:'
. . ...
-.. ...,"-- "-
..,... ='1. ,"."
,,-'>;;."ll "f)t .
.. .. ,
.' ,''''
, ."pw"' .
"'01:'"";" i',",,j,!j.'
".
".j! ')."," 1;
,.-,: I,,';A,:. ,;". ,..:.,..
,. ! ',""',.,
, '''''''''-''
.,' ?){-!. i ..

,."",1,,,_t- (;',1-;:.'"
"',
' .. ',;' ..,".
'h ;;,,':'.!",'
'" " ....J", i"Ir'-:""'
.......,.,.< . '"/t., '.
""i,,:','::f':":'
',' -!,,,""
.,'1 "..
... ',. ' ..'
'.-, .
.",,".(1,_'.".),"" ,,1'
.'. '1>:(,
"," ,po if,' ",'__:.
.' e' .,'-
.' ,..... """ r . 'J',,o.
iI' '"il'.It,. .... ,,,-
"
I'" "",' 1;"

,1>: ,1'."1'< '
:' IT;:",J
.. ;..


:$1"( ..
,., "
"''', I""'!''''
'W,'"

"<'. ".'
'.',,"., .' .
h-U",'''' ,

,.
,.)7';"4'-1':0 :. ' .",
'.
...
. :!:'fS' ,1-,
, .'<"._....
'" '\

'..,.,. '<Fi'"
,; . \;" ....
",""'''C' I
,. -..f"""..,'.' .""",.,'

"i"J:t'..,; r.
" .,..
' ....."." I P
, ','.'!:(;:!"'.-'!;
v".'.. .., .'\l"1!i.'
'
... ,?,,, ,4; 'f
.. ,..-:,., (0 ,
, .\.
. ,<'
,... , . .'
..' \,ff.", '.
4' ._.... .,"
",",",t, " .'
'. , ,.1+':11 ,;\'. ;/. :
""\' ,
"" ..'"" .... , "
"""< I" ):C' '

:-', ,. .

"...."
." -I_T'. .
,,_. .-.t ...
",!,' ,,, ,'''l,(,'',

..
;>;--
-'C'!i"';' ".. . fL Ii. '"iI "."
I :l:fu,,':;'
x=x
518 Appendice A
4. Proprieta cornmutativa:
D>---
r 01---
<->
<->


A.2.1 Prima forma canonica
, .
E gia stato implicitamente affermato che ai tre operatori dell'algebra corrispondono
Ie tre porte fondamentali (AND, OR, NOT). Dunque ogni espressione algebrica puo
essere tra.sformata in uno schema e viceversa. n passaggio da.lla rappresentazione
algebrica a quella schematica ebanale: basta sostituire gli operatori algebrici con Ie
corrispondenti porte, prendendo variabili, costanti ed espressioni come ingressifuscite
negli schemi. Per esempio 1a proprieta associativa puo essere espressa in modo schema-
tico come in FiguraA.l. Altrettanto ovvio risu1ta il passaggio dalla rappresentazione
schematica a queUa algebrica.
Sistemi digita,1i 519
Sia data una funzione in forma tabellare e ci si ponga il problema di trovare per
essa un'espressione algebrica. Partendo dalla tabella di verita risulta sempre possibile
giungere alle cosiddette forme canoniche.
Data una funzione f dellen variabili (Xl ,:1:2, ... ,X
n
), 1a prima forma canonica si ottiene
come somma di un numero di termini pa.ri al numero di righe in cui 1a funzione vale
1, ciascuno dei quali ecostituito da! prodotto di tutte Ie variabili (Xl,X2, ... ,x
n
); nel
prodotto, ciascuna variabile appare in forma diretta 0 comp1ementata a seconda del
fatto che, sulla corrispondente riga Sil cui la funzione vale I, la variabile valga 1 0 O.
Un tale termine viene denominato Prodotto fondamentale.
2Si noti che 1a. proprieta 8 e autoduale.
Figura A.I Rappresentazione schematica della proprieta. associativa.
A.2 Forme canoniche
Si osservi che tutti i postulati e tutte Ie proprieta fin qui enunciati sana stati
dati in coppia. Per ciascuna coppia si passa dall'una all'altra se si scambiano
tra lora le operazioni di somma e prodotto e gli 1 con gli O. E questa il principio di
dualita. Esso ci permette di affermare che trovata una rego1a esiste 1a duale
2

n teorema di De Morgan per due variabili si dimostra per induzione perfetta e


vale a,nche nel caso generale di n variabili.
"':. ',a;i _(',
.. " ". :
__. :
,.,.-\
., _,".;,. _' I
- , ,.,
,;-,,:5"1 .
.' . ,',
,; ,' I; '. ",
,
"' ..,l,ll
" ..

" :j'1\ .
....
". '. . "
.,-,'.11., .,.
::.. ';
..
.. '.J....

" ,..
.,
" ... '
""'11 '. ,;
" J ,l,i i',
1' -,
.< , ' ''','
, .I')'"
.:" 'r;":-
.; ,.
" ,......
.. ' ,,:.0:.... . ,
.' . ,r ,. .
, :.-' l,'!
:
,.. , .".
'I ,', " ,
';;..M
".': .
... ;' ..." ."
.... ,." .
,>.,.
. ...
.. ,.j
., ".'j;'" ,>".
.,'"
":: .!
"",. , '':''
, " "'.r"


';'; '
"t(!\"""11 .."" ,.
.' "1 ,,;: ..
''i..\::'i;i
, ,., "., , ..
.' "
',' .. ,:,;OJ;:,;'
"/..
"'\""'1, ,.
','",,/:",.<.;1
, ......
.,;:;u iI
""-..,,''.t'. :r..:
:.:,)'-fi .'
., 't... "-
">'.. ..,:, ;,'
'
.. H"k,"
.<- .,';;;'-1I
f
c!!, ':;'j
'" ."', .
J';... ' ';,'
.: t>t;;.
-";W- ... ".:
., ..,....
"''''-1' ;:;o!l . ,
,I;: '.-<"."
'or.... ','
,.,lVif: ;")',""."
",,,,.:I t
;. .. .. , ,.;..")., .
',.. j"T -
< iN'to..," t'
.: ....... ":=:,;",
"''"''."'1' '
........ ".',
, .,,,,,, .
, t.i:." l,..-..
'.rl."
lr
4!1',4f-r
.' '"
,'\'", ',""1'"
'1.101' ":' ,"!(",'
.' , . -. \.
,; ..:";'1
1
' ';:'\:

.'
,;.....-;,...
... , ,,"
.."' ..' "
'
:' "<'''':'
'$'.1. ' .... ,.,... '
.-,... ' .. " \
,
'.',", .1\ ',":'r '.
" ...."
"". ''''':;'
-:"""'; .,f.,.
I,,........ '"
,." '4:r'-
.... ',' t, .
.
.. " ..''''' , '''.
. ,.
.',l.';'"
".<)" ..
,.. .
." ':' :''.:'':.
'.' ., .
... , . , "i'"
..
" ,. . 1'"
........ ,""<
"'. . . .'
,". ;.'):. ','.,
x '-.'.,- ':J.
,"'0:, '.
.... , ,,, .
,,:.:,,1'" .
,.,:,:,,(, '. '.j
"'. '" '. ,
" ',' " J.
'., ::.
,j" ','.., I,' \
q, .' ""..
.. .
l
"'!t-,,1 "" _,
.. ,. Ii"o.,.
,.C".:,'
".
," .. :,,,- .," '..
,'"' ,'" ....
X+X'y:::;:x
(x+y)x=x
x + x . Y = x . 1+ x . Y = x . (J + y) = x . 1 = x
Prova:
O+x=x
1 x = x
x+(y+z) = (x+y)+z
x(yz) = (xy)z
x+y=y+x
'x,y=y''X
x+Y=X"y
xy=x+y
x+l=l
x 0 = 0
x (y + z) = (x . y) + (x z)
x + (y. z) = (x + y) . (x + z)
xx = 0
x+x=l
Questa proprieta afferma che non solo i1 prodotto e distributivo' rispetto al-
Ia somma, rna che anche 1a somma e distributiva rispetto a1 prodotta. As-
sieme alla precedente
1
questa proprieta. marca una netta differenziazione rispetto
all' aritmetica.
9. Elementi forzanti delle due operazioni AND e OR:
7. Valgono Ie seguenti relazioni:
8. Doppia negazione:
6. Se x euna variabile booleana sana valide:
5. Proprieta d.i assorbimento:
3. Proprieta associativa:
10. Teorema di De Morgan:
II
I
j
\
\
j
I
1
I
-
-
-
-
-
-
x=x
518 Appendice A
4. Proprieta cornmutativa:
D>---
r 01---
<->
<->


A.2.1 Prima forma canonica
, .
E gia stato implicitamente affermato che ai tre operatori dell'algebra corrispondono
Ie tre porte fondamentali (AND, OR, NOT). Dunque ogni espressione algebrica puo
essere tra.sformata in uno schema e viceversa. n passaggio da.lla rappresentazione
algebrica a quella schematica ebanale: basta sostituire gli operatori algebrici con Ie
corrispondenti porte, prendendo variabili, costanti ed espressioni come ingressifuscite
negli schemi. Per esempio 1a proprieta associativa puo essere espressa in modo schema-
tico come in FiguraA.l. Altrettanto ovvio risu1ta il passaggio dalla rappresentazione
schematica a queUa algebrica.
Sistemi digita,1i 519
Sia data una funzione in forma tabellare e ci si ponga il problema di trovare per
essa un'espressione algebrica. Partendo dalla tabella di verita risulta sempre possibile
giungere alle cosiddette forme canoniche.
Data una funzione f dellen variabili (Xl ,:1:2, ... ,X
n
), 1a prima forma canonica si ottiene
come somma di un numero di termini pa.ri al numero di righe in cui 1a funzione vale
1, ciascuno dei quali ecostituito da! prodotto di tutte Ie variabili (Xl,X2, ... ,x
n
); nel
prodotto, ciascuna variabile appare in forma diretta 0 comp1ementata a seconda del
fatto che, sulla corrispondente riga Sil cui la funzione vale I, la variabile valga 1 0 O.
Un tale termine viene denominato Prodotto fondamentale.
2Si noti che 1a. proprieta 8 e autoduale.
Figura A.I Rappresentazione schematica della proprieta. associativa.
A.2 Forme canoniche
Si osservi che tutti i postulati e tutte Ie proprieta fin qui enunciati sana stati
dati in coppia. Per ciascuna coppia si passa dall'una all'altra se si scambiano
tra lora le operazioni di somma e prodotto e gli 1 con gli O. E questa il principio di
dualita. Esso ci permette di affermare che trovata una rego1a esiste 1a duale
2

n teorema di De Morgan per due variabili si dimostra per induzione perfetta e


vale a,nche nel caso generale di n variabili.
"':. ',a;i _(',
.. " ". :
__. :
,.,.-\
., _,".;,. _' I
- , ,.,
,;-,,:5"1 .
.' . ,',
,; ,' I; '. ",
,
"' ..,l,ll
" ..

" :j'1\ .
....
". '. . "
.,-,'.11., .,.
::.. ';
..
.. '.J....

" ,..
.,
" ... '
""'11 '. ,;
" J ,l,i i',
1' -,
.< , ' ''','
, .I')'"
.:" 'r;":-
.; ,.
" ,......
.. ' ,,:.0:.... . ,
.' . ,r ,. .
, :.-' l,'!
:
,.. , .".
'I ,', " ,
';;..M
".': .
... ;' ..." ."
.... ,." .
,>.,.
. ...
.. ,.j
., ".'j;'" ,>".
.,'"
":: .!
"",. , '':''
, " "'.r"


';'; '
"t(!\"""11 .."" ,.
.' "1 ,,;: ..
''i..\::'i;i
, ,., "., , ..
.' "
',' .. ,:,;OJ;:,;'
"/..
"'\""'1, ,.
','",,/:",.<.;1
, ......
.,;:;u iI
""-..,,''.t'. :r..:
:.:,)'-fi .'
., 't... "-
">'.. ..,:, ;,'
'
.. H"k,"
.<- .,';;;'-1I
f
c!!, ':;'j
'" ."', .
J';... ' ';,'
.: t>t;;.
-";W- ... ".:
., ..,....
"''''-1' ;:;o!l . ,
,I;: '.-<"."
'or.... ','
,.,lVif: ;")',""."
",,,,.:I t
;. .. .. , ,.;..")., .
',.. j"T -
< iN'to..," t'
.: ....... ":=:,;",
"''"''."'1' '
........ ".',
, .,,,,,, .
, t.i:." l,..-..
'.rl."
lr
4!1',4f-r
.' '"
,'\'", ',""1'"
'1.101' ":' ,"!(",'
.' , . -. \.
,; ..:";'1
1
' ';:'\:

.'
,;.....-;,...
... , ,,"
.."' ..' "
'
:' "<'''':'
'$'.1. ' .... ,.,... '
.-,... ' .. " \
,
'.',", .1\ ',":'r '.
" ...."
"". ''''':;'
-:"""'; .,f.,.
I,,........ '"
,." '4:r'-
.... ',' t, .
.
.. " ..''''' , '''.
. ,.
.',l.';'"
".<)" ..
,.. .
." ':' :''.:'':.
'.' ., .
... , . , "i'"
..
" ,. . 1'"
........ ,""<
"'. . . .'
,". ;.'):. ','.,
x '-.'.,- ':J.
,"'0:, '.
.... , ,,, .
,,:.:,,1'" .
,.,:,:,,(, '. '.j
"'. '" '. ,
" ',' " J.
'., ::.
,j" ','.., I,' \
q, .' ""..
.. .
l
"'!t-,,1 "" _,
.. ,. Ii"o.,.
,.C".:,'
".
," .. :,,,- .," '..
,'"' ,'" ....
X+X'y:::;:x
(x+y)x=x
x + x . Y = x . 1+ x . Y = x . (J + y) = x . 1 = x
Prova:
O+x=x
1 x = x
x+(y+z) = (x+y)+z
x(yz) = (xy)z
x+y=y+x
'x,y=y''X
x+Y=X"y
xy=x+y
x+l=l
x 0 = 0
x (y + z) = (x . y) + (x z)
x + (y. z) = (x + y) . (x + z)
xx = 0
x+x=l
Questa proprieta afferma che non solo i1 prodotto e distributivo' rispetto al-
Ia somma, rna che anche 1a somma e distributiva rispetto a1 prodotta. As-
sieme alla precedente
1
questa proprieta. marca una netta differenziazione rispetto
all' aritmetica.
9. Elementi forzanti delle due operazioni AND e OR:
7. Valgono Ie seguenti relazioni:
8. Doppia negazione:
6. Se x euna variabile booleana sana valide:
5. Proprieta d.i assorbimento:
3. Proprieta associativa:
10. Teorema di De Morgan:
II
I
j
\
\
j
I
1
I
-
-
-
-
-
-
Sistemi digitali 521
una funzione booleana di n variabili /(X1,X2, ... ,x
n
) viene rappresentata su una
mappa di Karnaugh di ordine n;
4Fino a questo punto nella scrivere Ie espreSllioni logiche :!,Ii e sempre usato it i5imbolo "."
indicare il prodotto logico. Da questa momenta, a meno di non generare arnbiguiU., il segno di
prodotto vena omesso.

.
r
[ ..
-
I
I.
-
I
J
-
I
I.
I.
I
\.
I.
I.
\
I
1
(A. I)
su una mappa di ordine n si definisce sottoc'Ubo (0 sottomappa) di ordine m,
con m < n
l
un insieme di 2
m
celie tale per cui ciascuna casella del sottocubo e
adiacente a m easelle del sottocubo stesso;
Aa + Aa = A(a + a) = A-I = A
Si dice che 1e espressioni Aa e Aa sono adiacenti, perche Ie congurazioni delle
variabili che Ie individuano hanna distanza unitaria, ovvero differiscono solo per 1a
variabile ehe compare in forma diretta e in forma complementata. La minimizzazione
delle funzioni SP consiste nell'individuazione delle configurazioni adiacenti e
plicazione sistematica della precedente proprieta. Le mappe di Karnaugh [LP86],
[Koh88] sono 10 strumento normalrnente usato quando il numero delle variabili non e
superiore a 5..
Le rnappe di Karnaugh hanno queste proprieta:
se su tutte le celle di un sottocubo di ordine m 1a funzione vale 1, il contributo
complessivo delle 2m celie edate dal prodotto delle (n'- m) variabili che non
variano nel sottocubo. Nel prodotto la variabile compare in forma diretta se nel
sottocubo vale 1, in forma complementata se oel sottocubo vale O.
una mappa di ordine n contiene 2
n
celle;
Ie coordinate delle 2
n
celie corrispondono alle 2" possibili configurazioni delle n
variabilij
sulla mappa (di ordine n) I.e celIe sono disposte in modo tale per cui ogni cella e
adiaeente a n eeIlej
dove A e un qualsiasi prodotto di termini e a e una variabile booteanaj si puo
raccogliere A a fattor coroune, ottenendo:
A.3 Minimizzazione
Nel seguito si fad riferimento solo aIle espressioni in forma SP4.
Si supponga di avere l'espressione:
Aa+Aa
Le forme canoniche non hanno tuttavia alcuna utilita pratiea. Interessa infatti
ricercare espressioni di una data funzione che soddisfino a criteri di casto minimo (per
esempio minor numero di operateri).
...
,
".'.', ,

"'" .... ..
{{fli'li .
.,::; .. "
',i'!"', ',,\;.,1
-,"'Ic;i:!\ :,,,;;/
,...f::' . .
"/1'1,'( \;';',;1,'
" ""

... 1' ,
: ,>,:..:::'
, 'of,{ "',..
.. .. i
'. "."'1"'; .,..." \'
.!,;2,:1.',
,:l;'Jf-" ";'"...;.
..:,
/:1_"'" :", ':';
,. ,
.,',' ""', ..,."
""", "
,;:',',;
,. ',., ...., .
<
"' ... -'.'1.... ,
,".!:; .
.., ....,.
-'..;.,,"
",":.-. -'l .
." <- .. ' . ".
,'
'. .. ,,
',;?!r ':
..;
__ ..,it -e
'..... ...'"
.'L
,: ,-":,,,,,,,1.: '
' .,<,.'i" 'n"' ....
,;'J';'f;
'o?;',.:.t--;;l
, .J,:' X'I" ",.l.\,
",' ," i,').',o',,,

.,or,"' .,
. ..'",1,'=.
'. ,..-, ..
,'" :, ...
, ""',t
r \.:!i' '1);.::,'-
..
:";:(;{:

'10,"", : (\<I:"
" ..""". '. -.'
.' .;,;(I
j
:..
:.: ",.
"",.,.:..' ,'",.
....
.;,1;\:<' -<'-','51'1'"
"
""", '1:.. :..., ,'"
':!"'" t'.l'\'I\."I . " .' .... ' ....,,:.r.I
. '. .
'. :1... -." ;;..;;.<":,1..
.... ,\(,':0 .... ,
:.' ,r.... ,
:.: ','"F",:;:.
, ' ....,- ,,'
". . .. "'O;r... '
..... "..,-,,,......
..... '.. ''"''r..,:,:'
..
, #.)1%,.
,If,;


- ,"
:,,,,-,,,,<;, ,
., ' ...., -""i'''''
.1:"'<'1 ,.)'<"'....... :
.' .. ,'1.:
... ' ' ">,N'"
,
<' 'Y!j!!!<'.
'. '''''''' '.....':\o.J
"1?1:' "':!j "1',' .'" ",.",
'. ,'," " .."' '. ,

":::;;"'-';.',;

.if!
'. ""1" ,if;....,.,.
..
.... .. .. ,....... ".'
"",'.il)"
':.;.....
",-'i, .....
,.-....... ,-..;,
, , <,,:y. ....... , ;.", '
.. ."\ "'j ... ' "
".>;.,',1,,":' :.'}.
":'1'''


.":.
...!. -
-""l'<\,
'--,. 'ii, ..,...""
A',','t",
'.'.'
",.\;;.: ;.;"'':i
;:,...;; :;';;t"
,--: . '..... "",11.:.,
" "-",
',:.,:1.'
,. :,\"!..' ..
'.": .' "'''-', ...
'." ... .
.. '.... "'c.r"i'-'

. .. ,.'
,f'". , ... ',
"fi' .",
"'-'.. , --, "" ".. ,.... ., .. \ f'
, ,:;l,.:,.... "
o,.::.-c:'

..
,. :', ""1: ),.'1' 'S
, ,. f,j}
1
'-'flIk.
X, X,
X3 I Y
0 0 0
0 0 1 0
0 1 0 1
0 I I I
1 0 0 0
I 0 I 0
1 I 0 1
1 1 I 1
/(X1,X2,X3):::: Xl' X2' X3 + Xl' X2' X3 + Xl' X2' X3 +Xl' X2' X3
Sinteticamente si puo scrivere: y = E
3
(2,3,6
l
7).
3Si noti che, nel congiderare Ie forme SP e PS come reti a due livelli, non gi tiene canto degli
eventuali negatori in ingres.so. Cib e del tutto ragionevole, in quanta, nella pratica dei gistemi
digitali, i segnali sana normalmente disponibili sia in forma diretta. che complementata.
A.2.2 Seconda forma canonica
Le forme canoniche danno luogo a reti a due livelli. Per la Somma di Prodotti
(SP) il livello di uscita euna porta OR, illivello di ingresso ecostituito di sole porte
AND i cui ingressi possono ancbe essere in forma complementata. Per il Prodotto di
Somme (PS) iI Uvello di uscita euna porta AND, il Hvello di ingresso edi sole porte
OR'.
Data una funzione delle n variabili (Xl,X2," . ,x
n
), la seconda forma canonica si ottiene
come prodotto di un numero di termini pari al numero di righe in cui la funzione vale
0, ciascuno dei quali ecostituito dalla somma di tutte Ie variabili (X1,X2, ... ,x
n
), in
forma diretta 0 complementata a seeonda del fatto ehe nella corrispondente riga Stl
cui 1a funzione vale 0 1a variabile valga 0 0 1. I termini della somma vengono detti
Somme fondamentali.
La funzione logica rappresentata in Tabella A.l ha dunque questa forma canonica:
y =(x, + x, + X3) . (Xl + X, + X3) . (X, + X, + X3) . (Xl + X, + X3) =n3(O,1,4,5)
Tabella A.I Esempio di tabella di verita. per una fUDzione di tre variabili, V = !(Xl,X2,X3).
Sulle tabelle di verita.le configurazioni delle variabili SODO riportate ordinatamente per riga.
Nel caso specifico
l
si hanno 8 righe, numerate da 0 a 2
3
- 1 = 7.
Si fa.ccia riferimento alIa funzione di Tabella A.I. La funzione vale 1 sulla terza
. ,
quarta, settima e ottava riga (Ie righe corrispondono aHa numerazione 2, 3, 6 e 7). La
prima forma canonica e: .
520 Appendice A
Sistemi digitali 521
una funzione booleana di n variabili /(X1,X2, ... ,x
n
) viene rappresentata su una
mappa di Karnaugh di ordine n;
4Fino a questo punto nella scrivere Ie espreSllioni logiche :!,Ii e sempre usato it i5imbolo "."
indicare il prodotto logico. Da questa momenta, a meno di non generare arnbiguiU., il segno di
prodotto vena omesso.

.
r
[ ..
-
I
I.
-
I
J
-
I
I.
I.
I
\.
I.
I.
\
I
1
(A. I)
su una mappa di ordine n si definisce sottoc'Ubo (0 sottomappa) di ordine m,
con m < n
l
un insieme di 2
m
celie tale per cui ciascuna casella del sottocubo e
adiacente a m easelle del sottocubo stesso;
Aa + Aa = A(a + a) = A-I = A
Si dice che 1e espressioni Aa e Aa sono adiacenti, perche Ie congurazioni delle
variabili che Ie individuano hanna distanza unitaria, ovvero differiscono solo per 1a
variabile ehe compare in forma diretta e in forma complementata. La minimizzazione
delle funzioni SP consiste nell'individuazione delle configurazioni adiacenti e
plicazione sistematica della precedente proprieta. Le mappe di Karnaugh [LP86],
[Koh88] sono 10 strumento normalrnente usato quando il numero delle variabili non e
superiore a 5..
Le rnappe di Karnaugh hanno queste proprieta:
se su tutte le celle di un sottocubo di ordine m 1a funzione vale 1, il contributo
complessivo delle 2m celie edate dal prodotto delle (n'- m) variabili che non
variano nel sottocubo. Nel prodotto la variabile compare in forma diretta se nel
sottocubo vale 1, in forma complementata se oel sottocubo vale O.
una mappa di ordine n contiene 2
n
celle;
Ie coordinate delle 2
n
celie corrispondono alle 2" possibili configurazioni delle n
variabilij
sulla mappa (di ordine n) I.e celIe sono disposte in modo tale per cui ogni cella e
adiaeente a n eeIlej
dove A e un qualsiasi prodotto di termini e a e una variabile booteanaj si puo
raccogliere A a fattor coroune, ottenendo:
A.3 Minimizzazione
Nel seguito si fad riferimento solo aIle espressioni in forma SP4.
Si supponga di avere l'espressione:
Aa+Aa
Le forme canoniche non hanno tuttavia alcuna utilita pratiea. Interessa infatti
ricercare espressioni di una data funzione che soddisfino a criteri di casto minimo (per
esempio minor numero di operateri).
...
,
".'.', ,

"'" .... ..
{{fli'li .
.,::; .. "
',i'!"', ',,\;.,1
-,"'Ic;i:!\ :,,,;;/
,...f::' . .
"/1'1,'( \;';',;1,'
" ""

... 1' ,
: ,>,:..:::'
, 'of,{ "',..
.. .. i
'. "."'1"'; .,..." \'
.!,;2,:1.',
,:l;'Jf-" ";'"...;.
..:,
/:1_"'" :", ':';
,. ,
.,',' ""', ..,."
""", "
,;:',',;
,. ',., ...., .
<
"' ... -'.'1.... ,
,".!:; .
.., ....,.
-'..;.,,"
",":.-. -'l .
." <- .. ' . ".
,'
'. .. ,,
',;?!r ':
..;
__ ..,it -e
'..... ...'"
.'L
,: ,-":,,,,,,,1.: '
' .,<,.'i" 'n"' ....
,;'J';'f;
'o?;',.:.t--;;l
, .J,:' X'I" ",.l.\,
",' ," i,').',o',,,

.,or,"' .,
. ..'",1,'=.
'. ,..-, ..
,'" :, ...
, ""',t
r \.:!i' '1);.::,'-
..
:";:(;{:

'10,"", : (\<I:"
" ..""". '. -.'
.' .;,;(I
j
:..
:.: ",.
"",.,.:..' ,'",.
....
.;,1;\:<' -<'-','51'1'"
"
""", '1:.. :..., ,'"
':!"'" t'.l'\'I\."I . " .' .... ' ....,,:.r.I
. '. .
'. :1... -." ;;..;;.<":,1..
.... ,\(,':0 .... ,
:.' ,r.... ,
:.: ','"F",:;:.
, ' ....,- ,,'
". . .. "'O;r... '
..... "..,-,,,......
..... '.. ''"''r..,:,:'
..
, #.)1%,.
,If,;


- ,"
:,,,,-,,,,<;, ,
., ' ...., -""i'''''
.1:"'<'1 ,.)'<"'....... :
.' .. ,'1.:
... ' ' ">,N'"
,
<' 'Y!j!!!<'.
'. '''''''' '.....':\o.J
"1?1:' "':!j
"1',' .'" ",.",
'. ,'," " .."' '. ,

":::;;"'-';.',;

.if!
'. ""1" ,if;....,.,.
..
.... .. .. ,....... ".'
"",'.il)"
':.;.....
",-'i, .....
,.-....... ,-..;,
, , <,,:y. ....... , ;.", '
.. ."\ "'j ... ' "
".>;.,',1,,":' :.'}.
":'1'''


.":.
...!. -
-""l'<\,
'--,. 'ii, ..,...""
A',','t",
'.'.'
",.\;;.: ;.;"'':i
;:,...;; :;';;t"
,--: . '..... "",11.:.,
" "-",
',:.,:1.'
,. :,\"!..' ..
'.": .' "'''-', ...
'." ... .
.. '.... "'c.r"i'-'

. .. ,.'
,f'". , ... ',
"fi' .",
"'-'.. , --, "" ".. ,.... ., .. \ f'
, ,:;l,.:,.... "
o,.::.-c:'

..
,. :', ""1: ),.'1' 'S
, ,. f,j}
1
'-'flIk.
X, X,
X3 I Y
0 0 0
0 0 1 0
0 1 0 1
0 I I I
1 0 0 0
I 0 I 0
1 I 0 1
1 1 I 1
/(X1,X2,X3):::: Xl' X2' X3 + Xl' X2' X3 + Xl' X2' X3 +Xl' X2' X3
Sinteticamente si puo scrivere: y = E
3
(2,3,6
l
7).
3Si noti che, nel congiderare Ie forme SP e PS come reti a due livelli, non gi tiene canto degli
eventuali negatori in ingres.so. Cib e del tutto ragionevole, in quanta, nella pratica dei gistemi
digitali, i segnali sana normalmente disponibili sia in forma diretta. che complementata.
A.2.2 Seconda forma canonica
Le forme canoniche danno luogo a reti a due livelli. Per la Somma di Prodotti
(SP) il livello di uscita euna porta OR, illivello di ingresso ecostituito di sole porte
AND i cui ingressi possono ancbe essere in forma complementata. Per il Prodotto di
Somme (PS) iI Uvello di uscita euna porta AND, il Hvello di ingresso edi sole porte
OR'.
Data una funzione delle n variabili (Xl,X2," . ,x
n
), la seconda forma canonica si ottiene
come prodotto di un numero di termini pari al numero di righe in cui la funzione vale
0, ciascuno dei quali ecostituito dalla somma di tutte Ie variabili (X1,X2, ... ,x
n
), in
forma diretta 0 complementata a seeonda del fatto ehe nella corrispondente riga Stl
cui 1a funzione vale 0 1a variabile valga 0 0 1. I termini della somma vengono detti
Somme fondamentali.
La funzione logica rappresentata in Tabella A.l ha dunque questa forma canonica:
y =(x, + x, + X3) . (Xl + X, + X3) . (X, + X, + X3) . (Xl + X, + X3) =n3(O,1,4,5)
Tabella A.I Esempio di tabella di verita. per una fUDzione di tre variabili, V = !(Xl,X2,X3).
Sulle tabelle di verita.le configurazioni delle variabili SODO riportate ordinatamente per riga.
Nel caso specifico
l
si hanno 8 righe, numerate da 0 a 2
3
- 1 = 7.
Si fa.ccia riferimento alIa funzione di Tabella A.I. La funzione vale 1 sulla terza
. ,
quarta, settima e ottava riga (Ie righe corrispondono aHa numerazione 2, 3, 6 e 7). La
prima forma canonica e: .
520 Appendice A
AA.l NAND e NOR
albic =abc =ii+ Ii +c # (alb) Ie =(ab)e= ab +c
XI
D
y
XI
D
y
X2 X2
X, x, I y
X, x, I y
1
0 1 1 0 1 0
1 0 1 1 0 0
I 1 0
1 1 0
5Per esempio per il NAND:
Sistemi digitali 523
Xl + X2 = Xl +-x-i = XlX2 = (Xli xz)
Le porte NAND e NOR permettono di realizzare qualunque funzione logica uti-
lizzando un solo tipo di porta, in quanto sia NAND che NOR sono funzionalmente
completi, come si mostra facilmente con il teorema d.i De Morgan:
x=xx=x!x
x=x+x=x.!.x
X1X2 = XIXZ = Xl +-X2 ;:; (Xl +X2)
Le precedenti espressioni vengono riportate in forma schematica in FiguraA.4.
Si osservi che per gli operatori NAND e NOR non vale la proprieta. a5sociativa
5
.
Tenuto conto di questo ratto, l'uso dei due operatori risulta piuttosto ostico. Per
questa motivo, anche quando si vuole arrivare a reti con un solo operatore, si preferisce
ragionare in termini di AND) OR e NOT ed effettuare la trasformazione in rete di
soli NAND (NOR) come ultimo passo.
Somma
. ---_.
X, X, = XIX' = (Xl IX2) = (XI IX,)(X, IX,) = (Xl IX2) I(Xl IX2)
Xl + X, =, X, +X, = (Xl. 'x,) = (Xl t ",) + (Xl. X,) = (Xl. X,) (Xl. X,)
Prodotto
Complementazione
Figura A.3 Simboli delle porte NAND e del NOR e relative tabelle di verita..
L)operatore NAND consiste nella complementazione del prodotto e si indica
con una harra verticale tra gli operandi (Xl IX2), mentre 1a porta NAND si disegna
giustapponendo it cerchietto di negazione al simbolo della porta AND.
L'operatore NOR consiste nella complementazione della somma e si indica con
una freccia verticale rivo1ta versa il basso tra gli operandi (Xl.!. X2), mentre 1a porta
NOR si disegna giustappooendo il cerchietto di oegazione al simbolo della porta OR,
In FiguraA.3 vengono riportate tabelle di verita e simboli corrispondenti ai due
operatori .
."
,11'
1
'.
'"
..', .,
""" ffiij
"
'.' .
. ";.
'1' '
:.
'. ' '{-/"i"
:, .:.,ii;:':""".liD .'
: .. :.:. ....... ;:,
-,,::J').,
,:.,:r"
" . ",'",
, "''',,, c.:""
"'".'. ','
\",:':'
", t,-,'I;!. ....r.
..
/iA!:. - I...
" ... .'l""'" '
:.;;".!.;i!,
,-'-.. " ". ,-.,,,
,
'. ",.
'.
"'.-,,' "J' .. .. "
. .. ".,..t
..
,I.",? It, .ro)
"'I;. -
""', ..
C' .
.
..- '.''''"''
-.
, c_ ...."",-, '
.. j .,}.'\:'i.'),.'
" ,,,"..'.. " ,-, "
.. ;,:';":;'i'",
,.....:.;; .. :"n
'"\",,,..-.. "
"w.t;,!
,-,,>.,.
... ,.
.".r.<' ,1.0: ."
;:
3lt1
.: .
i

"hr""
i .;; ....",,::_:,.
\.,... '> .'(;- -
'. ;"' . i:lii,lit '.-,.
.' (j'?-.p,
!::-.'
,.{;!Iii.
.;:
,;
'''''. """.11
- ;.;:o;:.y
'" :,'''.e';';'_ b;:""i';,
,. , '". ,,"',"-' .,'
, ""oj,..:;";,

}:v,,:;,r,.
"l
J' .<<,. ..,...l!; '.
., > -
.........,,"" '''.\(0';' '.
,
".' ..
'."'''1''':.'-, ,'
'I d. ,
I' lo;i

'.
''', ., ,1'., o.<;/CoO;'
:'", .';', ';:
:..",,'."":'l: ''v,.,.. ,,',;
,."-,,',,,,',.) i,'"!'..:i:;" ..
'.'.-1\\:,:.;,>: J_.,.
,. ..; l!-r
.,':.'-',.-; -,.v ..
' .. , "'0'
.1' .:... ,.;_ .

:"rF:
" "" .. -...., 'hi"!' ,
"'''F'

,"" 'i"

.,,',.1'," '''<','1'
,.,>,'.":' '
\.-=:.;,
.
., ..:!..". '

.-.':-::;;
. {", ",,',

. ;.-:-;",
". +;;

,.-"':" ,::11'-'}
,'b '
.-:'.

'./'. :i;'.. ,?:'!if,\w.
. '
...:,-;; ,.

.:.. .

"'." i:f' ""' ,':'
-1 '';1 ,"
, .: " " ",
,) ,l,Jl;,'
!t'.c".,:!\
'. '"
b) l(x,y,z)= x+y
x
a I
1
I I
1 I 1
a) l(x,y,z)= yi+yz+iy
'"
- -
- - - -
- .
a
I I lie I I 1
I I I
Mediante il teorema di De Morgan e possibile dimostrare che qualsiasi espressione
logica puo essere espressa tramite due soli tipi di operatorij infatti) somma e prodotto
logico possono essere decomposti nel seguente modo: .
x+y=x+y=x'y
x'y=x'y=x+y
In cendusionc, mediante Ie sale due operazioni di prodotto e complementazione) op-
pure tramite Ie sole due operazioni di somma e complementazione, si ein grade di
realizzare qualsiasi espressione. Formalmente, i precedenti concetti si esprimono nel
modo seguente:
l'insieme degli operatori algebrici {+, ',-} efunzionalmente ridondantej
l'insieme e l'insieme {. )-} sono funzionalmente completi.
Vale solo la pena di atcennare al fatto che per dualita) Ie mappe di Karnaugh si
possono impiegare anche per minimizzare Ie funzioni in forma di Prodotti di Somme
(PS). A tal fine, si raggruppano Ie caselle contenenti it valore 0 e si asseda a ogni
raggruppamento la somma delle variabili che non variano suI raggruppamento
,
pren-
dendole in forma complementata se appaiono come 1 nel raggruppamento.
A.4 Altri operatori e altri tipi di porta
Si definisce copertura della funzione un insieme di sottocubi tale da coprire tutti
gli 1 della funzione stessa. La rninimizzazione cansiste dunque nel trovare una coper-
lura fermata da un insieme di sottocubi, ciascuno dei quali sia il piu ampio possibile
e non sia contenuto in altri sottocubi.
Come esempio si consideri 1a funzione eli tre variahili riportate nelle mappe di
FiguraA.2. Evidentemente sia l'espressione a) sia l'espressione b) rappresentano la
funzione data. La seconda, castruita seguendo i1 criterio di espandere per _quante
possibile i sottocubi di copertura degli 1, costituisce Pespressione minima.
Introduciamo ora due ulteriori operatori funzionalmente completi: l'operatore NAND
e I'operatore NOR.
Figura A.2 Esempio di due diverse caperture di un stessa funzione. La. copertura di destra,
essendo formata. da. sottocubi piu ampi, fornisce 1a minima. espressione SP.
522 Appendice A
I
I
I
I
I
I
\
I
I
I

-
.,
-
-
-
-
-
..
-
-
-
-
-
-
AA.l NAND e NOR
albic =abc =ii+ Ii +c # (alb) Ie =(ab)e= ab +c
XI
D
y
XI
D
y
X2 X2
X, x, I y
X, x, I y
1
0 1 1 0 1 0
1 0 1 1 0 0
I 1 0
1 1 0
5Per esempio per il NAND:
Sistemi digitali 523
Xl + X2 = Xl +-x-i = XlX2 = (Xli xz)
Le porte NAND e NOR permettono di realizzare qualunque funzione logica uti-
lizzando un solo tipo di porta, in quanto sia NAND che NOR sono funzionalmente
completi, come si mostra facilmente con il teorema d.i De Morgan:
x=xx=x!x
x=x+x=x.!.x
X1X2 = XIXZ = Xl +-X2 ;:; (Xl +X2)
Le precedenti espressioni vengono riportate in forma schematica in FiguraA.4.
Si osservi che per gli operatori NAND e NOR non vale la proprieta. a5sociativa
5
.
Tenuto conto di questo ratto, l'uso dei due operatori risulta piuttosto ostico. Per
questa motivo, anche quando si vuole arrivare a reti con un solo operatore, si preferisce
ragionare in termini di AND) OR e NOT ed effettuare la trasformazione in rete di
soli NAND (NOR) come ultimo passo.
Somma
. ---_.
X, X, = XIX' = (Xl IX2) = (XI IX,)(X, IX,) = (Xl IX2) I(Xl IX2)
Xl + X, =, X, +X, = (Xl. 'x,) = (Xl t ",) + (Xl. X,) = (Xl. X,) (Xl. X,)
Prodotto
Complementazione
Figura A.3 Simboli delle porte NAND e del NOR e relative tabelle di verita..
L)operatore NAND consiste nella complementazione del prodotto e si indica
con una harra verticale tra gli operandi (Xl IX2), mentre 1a porta NAND si disegna
giustapponendo it cerchietto di negazione al simbolo della porta AND.
L'operatore NOR consiste nella complementazione della somma e si indica con
una freccia verticale rivo1ta versa il basso tra gli operandi (Xl.!. X2), mentre 1a porta
NOR si disegna giustappooendo il cerchietto di oegazione al simbolo della porta OR,
In FiguraA.3 vengono riportate tabelle di verita e simboli corrispondenti ai due
operatori .
."
,11'
1
'.
'"
..', .,
""" ffiij
"
'.' .
. ";.
'1' '
:.
'. ' '{-/"i"
:, .:.,ii;:':""".liD .'
: .. :.:. ....... ;:,
-,,::J').,
,:.,:r"
" . ",'",
, "''',,, c.:""
"'".'. ','
\",:':'
", t,-,'I;!. ....r.
..
/iA!:. - I...
" ... .'l""'" '
:.;;".!.;i!,
,-'-.. " ". ,-.,,,
,
'. ",.
'.
"'.-,,' "J' .. .. "
. .. ".,..t
..
,I.",? It, .ro)
"'I;. -
""', ..
C' .
.
..- '.''''"''
-.
, c_ ...."",-, '
.. j .,}.'\:'i.'),.'
" ,,,"..'.. " ,-, "
.. ;,:';":;'i'",
,.....:.;; .. :"n
'"\",,,..-.. "
"w.t;,!
,-,,>.,.
... ,.
.".r.<' ,1.0: ."
;:
3lt1
.: .
i

"hr""
i .;; ....",,::_:,.
\.,... '> .'(;- -
'. ;"' . i:lii,lit '.-,.
.' (j'?-.p,
!::-.'
,.{;!Iii.
.;:
,;
'''''. """.11
- ;.;:o;:.y
'" :,'''.e';';'_ b;:""i';,
,. , '". ,,"',"-' .,'
, ""oj,..:;";,

}:v,,:;,r,.
"l
J' .<<,. ..,...l!; '.
., > -
.........,,"" '''.\(0';' '.
,
".' ..
'."'''1''':.'-, ,'
'I d. ,
I' lo;i

'.
''', ., ,1'., o.<;/CoO;'
:'", .';', ';:
:..",,'."":'l: ''v,.,.. ,,',;
,."-,,',,,,',.) i,'"!'..:i:;" ..
'.'.-1\\:,:.;,>: J_.,.
,. ..; l!-r
.,':.'-',.-; -,.v ..
' .. , "'0'
.1' .:... ,.;_ .

:"rF:
" "" .. -...., 'hi"!' ,
"'''F'

,"" 'i"

.,,',.1'," '''<','1'
,.,>,'.":' '
\.-=:.;,
.
., ..:!..". '

.-.':-::;;
. {", ",,',

. ;.-:-;",
". +;;

,.-"':" ,::11'-'}
,'b '
.-:'.

'./'. :i;'.. ,?:'!if,\w.
. '
...:,-;; ,.

.:.. .

"'." i:f' ""' ,':'
-1 '';1 ,"
, .: " " ",
,) ,l,Jl;,'
!t'.c".,:!\
'. '"
b) l(x,y,z)= x+y
x
a I
1
I I
1 I 1
a) l(x,y,z)= yi+yz+iy
'"
- -
- - - -
- .
a
I I lie I I 1
I I I
Mediante il teorema di De Morgan e possibile dimostrare che qualsiasi espressione
logica puo essere espressa tramite due soli tipi di operatorij infatti) somma e prodotto
logico possono essere decomposti nel seguente modo: .
x+y=x+y=x'y
x'y=x'y=x+y
In cendusionc, mediante Ie sale due operazioni di prodotto e complementazione) op-
pure tramite Ie sole due operazioni di somma e complementazione, si ein grade di
realizzare qualsiasi espressione. Formalmente, i precedenti concetti si esprimono nel
modo seguente:
l'insieme degli operatori algebrici {+, ',-} efunzionalmente ridondantej
l'insieme e l'insieme {. )-} sono funzionalmente completi.
Vale solo la pena di atcennare al fatto che per dualita) Ie mappe di Karnaugh si
possono impiegare anche per minimizzare Ie funzioni in forma di Prodotti di Somme
(PS). A tal fine, si raggruppano Ie caselle contenenti it valore 0 e si asseda a ogni
raggruppamento la somma delle variabili che non variano suI raggruppamento
,
pren-
dendole in forma complementata se appaiono come 1 nel raggruppamento.
A.4 Altri operatori e altri tipi di porta
Si definisce copertura della funzione un insieme di sottocubi tale da coprire tutti
gli 1 della funzione stessa. La rninimizzazione cansiste dunque nel trovare una coper-
lura fermata da un insieme di sottocubi, ciascuno dei quali sia il piu ampio possibile
e non sia contenuto in altri sottocubi.
Come esempio si consideri 1a funzione eli tre variahili riportate nelle mappe di
FiguraA.2. Evidentemente sia l'espressione a) sia l'espressione b) rappresentano la
funzione data. La seconda, castruita seguendo i1 criterio di espandere per _quante
possibile i sottocubi di copertura degli 1, costituisce Pespressione minima.
Introduciamo ora due ulteriori operatori funzionalmente completi: l'operatore NAND
e I'operatore NOR.
Figura A.2 Esempio di due diverse caperture di un stessa funzione. La. copertura di destra,
essendo formata. da. sottocubi piu ampi, fornisce 1a minima. espressione SP.
522 Appendice A
I
I
I
I
I
I
\
I
I
I

-
.,
-
-
-
-
-
..
-
-
-
-
-
-
..

j-
)
).
).
I.
).

] .
,
,
,
,

J
,
) .
,---' h
,
c) Rete di NAND equivalente
L
I

)[>-r-
X,
X, I y
x,
x2 I y
1
0 1 1
0 1
0
1
0 1
1 0 0
1 1 0
1 1 1
)
Sistemi digitali 525
t=[)-c

[)-c
j,
NAND
,
A
D>-c

I.
B NOR
L)-c-c

,
,
,
i =a---Jf
,

,
,
,
y =::: .1:1
X
2 + X1X2 = Xl E9 X2
L'operatore XOR e il suo negate NXOR sono molto utilizzati nella pratica per snellire
la rapprese,ntazione algebrica e grafica di funzioni logiche. I simboli usati per queste
porte e Ie relative tabelle di verita sono riportati in FiguraA.8.
Si nati che 10 XOR - OR esclusivo - dei due operandi Xl e X2 evero se e solo Be
Xl i- .1:2 In termini algebrici esso viene cosl definito:
Figura A.8 Simboli delle porte XOR e NXOR e relative tabelle.di verita.
a) Rete di partenza b) lnseritnento negatori
Figura A.7 Passaggio da rete SP a rete di NAND.
,
AAA XOR e NXOR
a) si inseriscono, sui rami che collegano Ie uscite delle porte AND can gli ingressi
della porta OR, coppie di negatori ottenendo la rete di FiguraA.7b.
b) si sostituisce il simbolo della porta di uscita can queUo usuale del NAND otte-
nendo la rete di FiguraA.7c.
Figura A.6 Simboli equivalenti per Ie porte NAND e NOR
;:r
xlx2
xl+x2
'"
"
(b) Rete equivalente
A
JL
c
x cD x
xl
x2
z
xlx2
xl+x2
L/
(a,l Rete di partenza
x cD x
xl
x2
Appendice A
A
B
524
Figura A.4 Costruzione delle operazioni di NOT, OR e AND dalle porte NAND e NOR.
AA.2 Reti con sole porte NAND 0 sole porte NOR
'. "
.....
.
-"V.". J


- .-'.",'-

.j;:,::
""
,-....'
-'-, ..
;,_" 0."
'e::';,'
., ".'"
:',
Gj;:

,./{:.c::.

-.j";iff!tiY"

._, -, """.,' ,
il;\tr::
- ..ijB'::';:'
z =ab + cd =ab +cd =(ab) (cd) =(alb)l(c!d).:::,:,,;. '.";C.;.
-
-""::'-"(':'" .. ,-
z =(a + b)(c +d) =(a + b)(c + d) =(a +b) + (c + d) =(a P) .j. (d d) ":X:},. ..
:'fj\:';[
Si Dati che per la forma SP tutto 51 riduce a sostituire gli operatori AND e OR ,>;iAlf4f:)!Jif;,"
con NAND. Per la forma PS 1 medesimi operatori vengono sostituiti con NOR. Si _
. I F' A " "\'V''''';:;;
"- .. ":'.' ,."-, ';-',. .-'.,', ,. :. "
veda, per esemplO a 19ura .5.
,; "
,
. "'" --i""".,-,
, .... '" . -,,-:;.. .-
':
,
",- _


;:!,,-I;!:,:
'." "e,., -

,; 'O,\:fi;:-
,
"",-",,;,?,"' ,:"j,i,'
'.;I.:.{,\,,:, ,' ;::''k..'
.. i':"''''.tP;
,,,.:,,,
..-c;""c"",': -..
r ""d\" .
'" '
-. ',., ,.' <',.--
_ ,,!. "'_'li" :"
."""", ,."l;_

':
n passaggio da espressioni in forma SP (PS) a reti NAND (NOR) risulta immediato
tramite il teorema di De Morgan, come illustrato dai due esempi che seguono.
Figura A.S Passaggio da. rete SP a. rete NAND. In questa caso il passaggio richiede solo la
sostituzione ill porle AND e OR con porte NAND.
AA.3 Una tecnica grafica per la trasformazione
Un modo per passare da reti ANDlOR a reti NAND/NOR si basa su di un artificio
grafico di immediata applicazione, derivante da! teorema di De Morgan, per il Quale
Ie porte NAND e NOR possono essere anche rappresentate can i simboli alternativi
di Figura A.5.
Basandosi su questa rappresentazione alternativa, si possono aggiustare i pallini'
di complementazione sulle reti AND/OR, in modo da far comparire Ie porte NAND
o NOR. La tecnica viene ora mostrata in riferimento alIa rete di Fig1lraA.7a. n
procedimento ein due passi:
..

j-
)
).
).
I.
).

] .
,
,
,
,

J
,
) .
,---' h
,
c) Rete di NAND equivalente
L
I

)[>-r-
X,
X, I y
x,
x2 I y
1
0 1 1
0 1
0
1
0 1
1 0 0
1 1 0
1 1 1
)
Sistemi digitali 525
t=[)-c

[)-c
j,
NAND
,
A
D>-c

I.
B NOR
L)-c-c

,
,
,
i =a---Jf
,

,
,
,
y =::: .1:1
X
2 + X1X2 = Xl E9 X2
L'operatore XOR e il suo negate NXOR sono molto utilizzati nella pratica per snellire
la rapprese,ntazione algebrica e grafica di funzioni logiche. I simboli usati per queste
porte e Ie relative tabelle di verita sono riportati in FiguraA.8.
Si nati che 10 XOR - OR esclusivo - dei due operandi Xl e X2 evero se e solo Be
Xl i- .1:2 In termini algebrici esso viene cosl definito:
Figura A.8 Simboli delle porte XOR e NXOR e relative tabelle.di verita.
a) Rete di partenza b) lnseritnento negatori
Figura A.7 Passaggio da rete SP a rete di NAND.
,
AAA XOR e NXOR
a) si inseriscono, sui rami che collegano Ie uscite delle porte AND can gli ingressi
della porta OR, coppie di negatori ottenendo la rete di FiguraA.7b.
b) si sostituisce il simbolo della porta di uscita can queUo usuale del NAND otte-
nendo la rete di FiguraA.7c.
Figura A.6 Simboli equivalenti per Ie porte NAND e NOR
;:r
xlx2
xl+x2
'"
"
(b) Rete equivalente
A
JL
c
x cD x
xl
x2
z
xlx2
xl+x2
L/
(a,l Rete di partenza
x cD x
xl
x2
Appendice A
A
B
524
Figura A.4 Costruzione delle operazioni di NOT, OR e AND dalle porte NAND e NOR.
AA.2 Reti con sole porte NAND 0 sole porte NOR
'. "
.....
.
-"V.". J


- .-'.",'-

.j;:,::
""
,-....'
-'-, ..
;,_" 0."
'e::';,'
., ".'"
:',
Gj;:

,./{:.c::.

-.j";iff!tiY"

._, -, """.,' ,
il;\tr::
- ..ijB'::';:'
z =ab + cd =ab +cd =(ab) (cd) =(alb)l(c!d).:::,:,,;. '.";C.;.
-
-""::'-"(':'" .. ,-
z =(a + b)(c +d) =(a + b)(c + d) =(a +b) + (c + d) =(a P) .j. (d d) ":X:},. ..
:'fj\:';[
Si Dati che per la forma SP tutto 51 riduce a sostituire gli operatori AND e OR ,>;iAlf4f:)!Jif;,"
con NAND. Per la forma PS 1 medesimi operatori vengono sostituiti con NOR. Si _
. I F' A " "\'V''''';:;;
"- .. ":'.' ,."-, ';-',. .-'.,', ,. :. "
veda, per esemplO a 19ura .5.
,; "
,
. "'" --i""".,-,
, .... '" . -,,-:;.. .-
':
,
",- _


;:!,,-I;!:,:
'." "e,., -

,; 'O,\:fi;:-
,
"",-",,;,?,"' ,:"j,i,'
'.;I.:.{,\,,:, ,' ;::''k..'
.. i':"''''.tP;
,,,.:,,,
..-c;""c"",': -..
r ""d\" .
'" '
-. ',., ,.' <',.--
_ ,,!. "'_'li" :"
."""", ,."l;_

':
n passaggio da espressioni in forma SP (PS) a reti NAND (NOR) risulta immediato
tramite il teorema di De Morgan, come illustrato dai due esempi che seguono.
Figura A.S Passaggio da. rete SP a. rete NAND. In questa caso il passaggio richiede solo la
sostituzione ill porle AND e OR con porte NAND.
AA.3 Una tecnica grafica per la trasformazione
Un modo per passare da reti ANDlOR a reti NAND/NOR si basa su di un artificio
grafico di immediata applicazione, derivante da! teorema di De Morgan, per il Quale
Ie porte NAND e NOR possono essere anche rappresentate can i simboli alternativi
di Figura A.5.
Basandosi su questa rappresentazione alternativa, si possono aggiustare i pallini'
di complementazione sulle reti AND/OR, in modo da far comparire Ie porte NAND
o NOR. La tecnica viene ora mostrata in riferimento alIa rete di Fig1lraA.7a. n
procedimento ein due passi:
Figura A.IO Realizzazione ottima di XOR come rete di soli NAND.
A.5 Esempi di reti combinatorie
Figura A.9 Realizzazione,di XOR come rete SP e corrispondente rete di soli NAND.
D-
'<OJ '1D- p
b "
1.



Vale solo la pena di osservare che il controllo di parita. non e si in grado di
riconoscere l'inversione di un numero pari di bit.
6Si ricordi che per 10 XQ.R vale la proprieta. associativa.
7I1 componente 74180, a parte Ja differenza di operare su 8 bit, si comporta come la rete di figura.
Sistemi digitali 527
con parita pari: P
r
= 1.
con parita dispari: P
r
= OJ
,
Per come viene effettuato il contrallo di parita. si cansideri-ora il caso della
trasmissione (parallela) di parole di 4 bit. II criterio eil seguente. ntrasIflittente forma
una parola di 5 bit: [ABCDPJ, dove il Quinto bit, detto bit di paritd P, ecalcolato
in modo tale da rendere sempre dispari 0 sempre pari il numero complessivo di bit a
1 in (ABCDP]. Nel primo caso si parla di panta dispari nel secondo di pm;t'a pan.
D ricevente calcola 1a -parita della parola [ABCDPI che, ovviamente, cleve risultare
congruente can il tipo' di wottata (pari a dispari).
Per quanto riguarda i1 trasmittente, la rete di FiguraA.llb, con il semplice ar-
ti6cio di fissare stabilmente Pi a.l'valore 1 0 0, permette di calcolare P
e
in modo che
1a parita di (ABCDPe] sia Eispettivamente dispari 0 pari
7
, Con il collegamento di
FiguraA.12 il trasmittente trasmette parole di parita pari.
Per quanta riguarda il ricevente basta effettuare l'OR esclusivo dei cinque bit
[ABCDP] per determinare se il risultato corrisponde al tipo di parita: sceito. A
tale scopo si puo utilmente impiegare la rete di ancbe per iI ricevente,
secondo 10 schema di FiguraA.12. 8ul ricevitore l'uscita estata indicata can Pro In
ca.so di errore si ha: '.
a) ealeolo su 4 bit b) Scelta parila' pari 0' dispari
Figura A.l1 Cootrollo della parita. di una parola. di quattro bit tramite porte XOR a due
soli ingressi.
Una porta XOR a due ingressi esufficiente a calcolare 1a parita di parole di 2
bit. Nel caso di parole formate da un DUffiero n > 2 di bit, in Linea di principio, la
determinazione della parita occorre una porta XOR a n ingressi
6
.
La rete di FiguraA.lla, che calcola la parita su una parol a di quattro bit e
[ABCD], efatta esclusivamente di porte a due ingressi. Se il numero di bit a 1 in
[ABCD] edispari, allora Z = 1.
,
'-
./
b

y = Xl X2 + XIX2 = Xl _ X2
I

,
.
,
In FiguraA.lO viene riportata la realizzazione ottima in termini di soli NAND,

b
A.5.l II controllo di paritil
Nella trasmissione e memorizzazione dell'informazione, una delle tecniche piu comune-
mente lisate per rilevare errori dovuti a disturbi 0 a ma.lfunzionamento degli apparati,
consiste nell'effettuare il controllo di parita.. Data una parola di n bit) controllarne 1a
parita. significa determinare se epari 0 dispari in numero di bit a 1 nella parola stessa.
L'operatore NXOR - identita - da. risultato vera se e solo se Xl = X2. In termini
algebrici esso viene cosl definito:
,; :ql: "
,J :
,;"';,,,'
.,'""..< ." '
"'-'::lll','-'

',. e"
" " .,. Co __

:,01';. I
.,
Fr.:':: '.
" :,;;.:
'I" .'1', ..,.
: 'r,'},:,
-"", ..'ii"" ,q",-.
'.
:".')Jg ,\

......

- ':'1"="" . ',,='
"-. :':,:7, ';-':""
, . !"".' " ,. j
",.",,-,L_ ,-.
,(. ..

,." "'"'
,':
\':' 'ii--'- :.
,'-'\',.. ,., '-!,'
',. ...,ii:.'4.! ,,,:-':',' .
.... ":l.
:.
,
..;.' .
, -", .....
,.,l,." ",1' \."",""c' .. '
.... )..;:.
-'.'
'. ..
'.
:
'.' .. ,.,10; ',:
.., ,'1,'. I"""'"
,y..,. ;,,_,'.4,'<,:" 1,...,.-',
."'.' ""'l"""" I" :'

1;.'.',_....
',_ , ..".c . ..r.c:;

... "... "",'" ., ., .. ,,,
..... ", .. , .. .!,... ;
. '-<i: , ;-:0;- .'
", ',";,,;r,," "''';i'

-'.'. >'........-..,'
.1.;..""", ;-;, -
, , , "'
' -" '. ,,I;"c';'C"1 : .
, ,'(,<"
., ".. J"""
- ,>" ..' ,.--
',': ,'!!.
- ":,. .
",.-,",
.;.;::,.
..-.-, .
.. ... ,
.' ""-.,n:' c."', c"
.;: r..."c-I':,.
-, ,
;..
""'>"'1:"
"'J;'"'" ,.l.... 't.".,.'
'.. 0
;,r"",,

'., ,.-".!".; , '
, "', ..-0'
I " '0""" "", ."
r:" .... ;
'" ..._", ... "0
..;..
,'r"''''''
: :"j ",!,/,,: ."

..." --:. 0 ."
"itir.,;,

, .. "il-"
}i.[

,
:, ....,.'" ,.,. r- .
.,..-, ".;..'
"
" ' """, ....-.. "
,. 'It.Y''' it;
Alcune reti combinatorie notevoli (selettori, decodificatori ece.) sono state presentate
'nel capitola di introduzione (efr. 1.8.2). Vengono qui illustrate a.ltre reti di interesse.

,,', ,,..,,. ,j .,
'."
"'!I\';:'"
iiigt '.
. '
r._ <, <",.
;'"
.. .
A '-,<"- ' ". ,
,::1l1
"J:;"
",':;';':"!
... !-'"I,;-"
.' ."".
- . ,....... '-'
"-''''.,''- -,
.' "' '-'
-"', ..,,,!.,;, .... /.....
".-,"',
""'.-",,, -' ...

'h" ...,. '\::, _'. ,I"'.
,,'
. .,. ".....1." .'.}t,.,
"
,':
'; ,
, I ,r:
"
Per l'operatore XOR e valida la proprieta. associativa. La FiguraA.9 riporta la
costruzione dell'operatore XOR in termini di AND, OR, NOT e'in termini di sole
porte NAND. Vale la pena di osservare che esistono integrati contenenti direttamente
sale porte XOR.
526 Appendice A
l
\
I
)
I
I
I
I
I
\
I
I
-
-

-
-
-
-
.
-
-
-
Figura A.IO Realizzazione ottima di XOR come rete di soli NAND.
A.5 Esempi di reti combinatorie
Figura A.9 Realizzazione,di XOR come rete SP e corrispondente rete di soli NAND.
D-
'<OJ '1D- p
b "
1.



Vale solo la pena di osservare che il controllo di parita. non e si in grado di
riconoscere l'inversione di un numero pari di bit.
6Si ricordi che per 10 XQ.R vale la proprieta. associativa.
7I1 componente 74180, a parte Ja differenza di operare su 8 bit, si comporta come la rete di figura.
Sistemi digitali 527
con parita pari: P
r
= 1.
con parita dispari: P
r
= OJ
,
Per come viene effettuato il contrallo di parita. si cansideri-ora il caso della
trasmissione (parallela) di parole di 4 bit. II criterio eil seguente. ntrasIflittente forma
una parola di 5 bit: [ABCDPJ, dove il Quinto bit, detto bit di paritd P, ecalcolato
in modo tale da rendere sempre dispari 0 sempre pari il numero complessivo di bit a
1 in (ABCDP]. Nel primo caso si parla di panta dispari nel secondo di pm;t'a pan.
D ricevente calcola 1a -parita della parola [ABCDPI che, ovviamente, cleve risultare
congruente can il tipo' di wottata (pari a dispari).
Per quanto riguarda i1 trasmittente, la rete di FiguraA.llb, con il semplice ar-
ti6cio di fissare stabilmente Pi a.l'valore 1 0 0, permette di calcolare P
e
in modo che
1a parita di (ABCDPe] sia Eispettivamente dispari 0 pari
7
, Con il collegamento di
FiguraA.12 il trasmittente trasmette parole di parita pari.
Per quanta riguarda il ricevente basta effettuare l'OR esclusivo dei cinque bit
[ABCDP] per determinare se il risultato corrisponde al tipo di parita: sceito. A
tale scopo si puo utilmente impiegare la rete di ancbe per iI ricevente,
secondo 10 schema di FiguraA.12. 8ul ricevitore l'uscita estata indicata can Pro In
ca.so di errore si ha: '.
a) ealeolo su 4 bit b) Scelta parila' pari 0' dispari
Figura A.l1 Cootrollo della parita. di una parola. di quattro bit tramite porte XOR a due
soli ingressi.
Una porta XOR a due ingressi esufficiente a calcolare 1a parita di parole di 2
bit. Nel caso di parole formate da un DUffiero n > 2 di bit, in Linea di principio, la
determinazione della parita occorre una porta XOR a n ingressi
6
.
La rete di FiguraA.lla, che calcola la parita su una parol a di quattro bit e
[ABCD], efatta esclusivamente di porte a due ingressi. Se il numero di bit a 1 in
[ABCD] edispari, allora Z = 1.
,
'-
./
b

y = Xl X2 + XIX2 = Xl _ X2
I

,
.
,
In FiguraA.lO viene riportata la realizzazione ottima in termini di soli NAND,

b
A.5.l II controllo di paritil
Nella trasmissione e memorizzazione dell'informazione, una delle tecniche piu comune-
mente lisate per rilevare errori dovuti a disturbi 0 a ma.lfunzionamento degli apparati,
consiste nell'effettuare il controllo di parita.. Data una parola di n bit) controllarne 1a
parita. significa determinare se epari 0 dispari in numero di bit a 1 nella parola stessa.
L'operatore NXOR - identita - da. risultato vera se e solo se Xl = X2. In termini
algebrici esso viene cosl definito:
,; :ql: "
,J :
,;"';,,,'
.,'""..< ." '
"'-'::lll','-'

',. e"
" " .,. Co __

:,01';. I
.,
Fr.:':: '.
" :,;;.:
'I" .'1', ..,.
: 'r,'},:,
-"", ..'ii"" ,q",-.
'.
:".')Jg ,\

......

- ':'1"="" . ',,='
"-. :':,:7, ';-':""
, . !"".' " ,. j
",.",,-,L_ ,-.
,(. ..

,." "'"'
,':
\':' 'ii--'- :.
,'-'\',.. ,., '-!,'
',. ...,ii:.'4.! ,,,:-':',' .
.... ":l.
:.
,
..;.' .
, -", .....
,.,l,." ",1' \."",""c' .. '
.... )..;:.
-'.'
'. ..
'.
:
'.' .. ,.,10; ',:
.., ,'1,'. I"""'"
,y..,. ;,,_,'.4,'<,:" 1,...,.-',
."'.' ""'l"""" I" :'

1;.'.',_....
',_ , ..".c . ..r.c:;

... "... "",'" ., ., .. ,,,
..... ", .. , .. .!,... ;
. '-<i: , ;-:0;- .'
", ',";,,;r,," "''';i'

-'.'. >'........-..,'
.1.;..""", ;-;, -
, , , "'
' -" '. ,,I;"c';'C"1 : .
, ,'(,<"
., ".. J"""
- ,>" ..' ,.--
',': ,'!!.
- ":,. .
",.-,",
.;.;::,.
..-.-, .
.. ... ,
.' ""-.,n:' c."', c"
.;: r..."c-I':,.
-, ,
;..
""'>"'1:"
"'J;'"'" ,.l.... 't.".,.'
'.. 0
;,r"",,

'., ,.-".!".; , '
, "', ..-0'
I " '0""" "", ."
r:" .... ;
'" ..._", ... "0
..;..
,'r"''''''
: :"j ",!,/,,: ."

..." --:. 0 ."
"itir.,;,

, .. "il-"
}i.[

,
:, ....,.'" ,.,. r- .
.,..-, ".;..'
"
" ' """, ....-.. "
,. 'It.Y''' it;
Alcune reti combinatorie notevoli (selettori, decodificatori ece.) sono state presentate
'nel capitola di introduzione (efr. 1.8.2). Vengono qui illustrate a.ltre reti di interesse.

,,', ,,..,,. ,j .,
'."
"'!I\';:'"
iiigt '.
. '
r._ <, <",.
;'"
.. .
A '-,<"- ' ". ,
,::1l1
"J:;"
",':;';':"!
... !-'"I,;-"
.' ."".
- . ,....... '-'
"-''''.,''- -,
.' "' '-'
-"', ..,,,!.,;, .... /.....
".-,"',
""'.-",,, -' ...

'h" ...,. '\::, _'. ,I"'.
,,'
. .,. ".....1." .'.}t,.,
"
,':
'; ,
, I ,r:
"
Per l'operatore XOR e valida la proprieta. associativa. La FiguraA.9 riporta la
costruzione dell'operatore XOR in termini di AND, OR, NOT e'in termini di sole
porte NAND. Vale la pena di osservare che esistono integrati contenenti direttamente
sale porte XOR.
526 Appendice A
l
\
I
)
I
I
I
I
I
\
I
I
-
-

-
-
-
-
.
-
-
-
528 Appendice A
A.5.2 Comparatore digitale.
5e i due ingressi sono uguali solo Puscita E
i
evera;.
I

\
J
-
I
\_.

I
I -
\ .
-
\
I
\ .
\ -
I.
1-
(A.3)
(A 2)
Ci (Ai)o Bi)
Ei (Ai - Bi)
A,>B,


A3=B3,A2=B21Al=Bl,Ao>Bo
,
,v
I'.
-
""
-t
8Si noti che .si poteva scrivere anche L = E + G. Thttavia questo modo di calcolare L allunga
il tempo complessivo richiesto per il confronto, in quanto la porta che calcola L pub produrre un
risultato valido solo dopo che sono stati calcolati E e G.
Ai
Bi
La relazione A.3 da L = 1 se e solo se A < B
8

Ragionando corne sopra epossibile costruire la rete che confronta due parole di
qualunque lunghezza. A tal fine, basta riscrivere le funzioni pooleane estendendo il
valore massimo del pedice. In questa modo si introdurrebbero porte con molti piu
ingressi
1
per cui, nella pratica, si preferisce seguire la strada della modularizzazione,
ovvero, si preferisce costruire componenti can un numero definito di ingressi, impiega-
bili in cascata can altri identici componenti, a.l fine di confrontare parole d.i dimensione
qualunque.
Per esempio, i1 dispositivo SN7485 eun comparatore in grandezza di parole d.i 4
bit, impiegabile in cascata secondo 10 schema eli FiguraA.14. n componente ha tre
ingressi (indicati come A < B
i
, A = B
i
e A > B
i
), corrispondenti agli ingressi Gin,
Ein e Lin di Figura A.I5, e tre uscite (pure indicate come A < B, A = B e A > B),
corrispondenti aUe uscite G, EeL di FiguraA.IS, Per il componente che compara i 4
bit menD significativi, Gin, E
in
e Lin sana collegati in modo da asserire in ingresso 1a
condizione di uguaglianza. Per il componente che compara dei 4 bit piu significativi
Gin, E
tn
e Lin sono collegati alle uscite dell'altro.
In Figura A.I5 viene illustrata la logica equivalente a un singolo '85. In figura
viene riportata la sola parte di schema corrispondente a E e a GI mentre non viene
riportata la parte relativa a L. Si osservi che i termini Eo . .. E
3
vengono calcolati
Li (Ai < Bi)
Sistemi digitali 529
Dunque A > B se e solo se G = l.
. La condizione A < B si ottiene dallaA.2 scambiando tra lora A e B:
L = A,B, + E,A,B, + E,E,A,B, + E,E-,E, AoB
o
Le quattro condizioni si traducono nella seguente funzione booleana:
G = A,B
3
+ E,A,B, + E,E,A,B
,
+ E,E,E,AoBo
Figura A.13 Comparatore in grandezza di due bit. Si noti che 10. parte della schema che
rivela se Ai = B; corrisponde alia porta logica NXOR.
' ..
.j;:"
-'11 '1' . ., , .'.
"'!'..
'f';!. r!r
. '".. ,
'.' ..1. ',:,
;,'d:."
,. ('<;"J:;
.:7;e:.., ';, ..1,1,
...{".It
'. , .. " ..,
- .. -", "';1\.,
" "',:''''.
",.it'I!-',"
,.... '.'
" " ,',
'.... '''''. "IT'"
".: .. "',',' .
..,,',.' , '.
1-'". '.", '."'.
, ,. . '" ' ,.
r "\.,.. "',
'.:, .
':
.. ",j

'1''''''"
""', . -':'
,..."

"),;.8;;".;; .',. ,.
\.
.,/f,...... "J.
. J ..
""',.'
,i I"H;.' ""'\,'
":)' '/.....
.,",..'./
.', ' "';,!.

'.. '"'' "".,
""'\l1>"'" 'i'.',,,,
:'!. ',.{;:i ,: ?".:,

'-'",1,
' ""1."
;" :'."h,t
.. ..
", :'"",,,..... '.1" ..
'
'l' /";','."

'.' "",;t],. .. ,Ii.,..
" ,. ,,'" ".,".
: J,:,!.,jj.,'.; ..
. '"
rr},., ;. .... ..
." .,......,
:.: ,- ,'-'\,.", ,
""""".'.;' ";".'
..
...
"
'7'"'f"''- . .c,,;']...
" , .. <, "'-1.'.
.. -i-,l,:' :';;.,., "
::-:;\!/.(}

r;,'"".--:" ...'.... /,.
. -Jij" .
<"'e .,. _''-
>. :, '.ih.
'2n:::
..\ .
.. _..," ......
.." ,."""'"
y .... , 't"'.'l
"::;',"'i.

' " -'!l ....
.
,. . ;><'1" ','

'.P. ""', -.:1 .
. .....
' I' ;:':''l. ,e',. ",'
}l'.'-i'il . '"I
' f
t
:;".,<., '{'''''<.',''
': '. .. ' "'iii' ,,-,\,.
"".' "\' .... .;
.t:i,':'k.'l. ":', .' .
;,
, .. ",':,0,. ,
.,.
'''1' .. , ",.
_l> ,1' 01.
''"''',+, '..... ".
"' .. ;""-"" ' ,; \i"; .,. . ,';, '.
... _
'. """." ;,i..
.,.."...... "'".,
.....,.,.". ,'.
'.j<;.... ..
-Ii,;.;'
':
-:" :::L>r:('
>.iiici '.

' "'... I
-. 'io-->;t\, '
' i..",". ',' "1,':' ' .
' """'(" ""1
' . t" .'", .....
'., .. ,. ,
' '".; -'''''''''''1. 1..
"';
" .... ,
'''l,"' r"; .
.:\.':)'::. il:r;j' ..

, ''',-'' ',"",
, .'
""'.:""'; 8'\,l
",':';';'.11:,".;; ''''r''.
1,1., ";'" , "'!.
. '. ,. ".(,
'... ""'.,..,
:;:
: .h>,
"t,;,,;
' .>/-..., ." I, '.,
"'''"... ' .. '.;, ,
.. ,,'......
.' : ,
":....:.:.
;, '/,.;""
,
..
.
'. ",.\11...._.. , ..
" .', _ ...
TRASMETTl
RICEVITORE
TORE
.
p,
A

Pt
A
B
'- B
C C
D D
p, p,
---" --_. ---
-_..__
L..
La rete di FiguraA.13, effettua il confronto di due bit. Le u5cite vengono denotate
rispettivamente con G
i
, E
i
eLi, E facile convincersi che per una data coppia di
ingressi Ai,B
i
una sola delle tre uscite evera. Infatti:
se Ai < B
i
(cioe Ai = 0 e Bi = 1), aHara solo Puscita Li evera;
se Ai >. B
i
(doe Ai = 1 e B
i
= 0) l aHara solo Puscita G
i
evera.
Si consideri ora il confronto tra parole di quattro bit. Si indichino con A =
[A,A,A,AoI e con B = [BsB,B,BoJ Ie due parole. Affinche sia A = B, deve essere'
A, = B" A, = B" A, = B
"
Ao = Bo
Nell'esempio illustrato si efatta l'lpotesi di trasmettere in parallelo i bit della
parola. Di normal specialmente quando gli apparati sono distanti, la trasmissione av-
viene in modo seriale, n calcolo del bit di parita puo essere effettuato dal trasmittente
prima di serializzare"la paroial mentre il ricevente puo effettuarlo a ricomposizione
avvenuta. In questa casa, tuttavia, il calcolo della parita puo essere anche effettuato
tramite una rete sequenziale che conteggi i singoli bit, man mana che essi vengono
trasmessi 0 ricevuti.
ovvero, indicando can E
s
,E
2
,E
1
,Eo Ie tre condizioni precedenti, si ha A = B 5e evera
Ja condizione E = E,E,E,E
o
La disuguagp,anza A > B richiede che una delle seguenti quattro condizioni sia
verificata:
- OJ PARIU' Dl PARITA'
Figura A.12 ControUo della. parita di una parola di quattro bit a mezzo di porte XOR a
due soli ingressi.
I
I
I
I
528 Appendice A
A.5.2 Comparatore digitale.
5e i due ingressi sono uguali solo Puscita E
i
evera;.
I

\
J
-
I
\_.

I
I -
\ .
-
\
I
\ .
\ -
I.
1-
(A.3)
(A 2)
Ci (Ai)o Bi)
Ei (Ai - Bi)
A,>B,


A3=B3,A2=B21Al=Bl,Ao>Bo
,
,v
I'.
-
""
-t
8Si noti che .si poteva scrivere anche L = E + G. Thttavia questo modo di calcolare L allunga
il tempo complessivo richiesto per il confronto, in quanto la porta che calcola L pub produrre un
risultato valido solo dopo che sono stati calcolati E e G.
Ai
Bi
La relazione A.3 da L = 1 se e solo se A < B
8

Ragionando corne sopra epossibile costruire la rete che confronta due parole di
qualunque lunghezza. A tal fine, basta riscrivere le funzioni pooleane estendendo il
valore massimo del pedice. In questa modo si introdurrebbero porte con molti piu
ingressi
1
per cui, nella pratica, si preferisce seguire la strada della modularizzazione,
ovvero, si preferisce costruire componenti can un numero definito di ingressi, impiega-
bili in cascata can altri identici componenti, a.l fine di confrontare parole d.i dimensione
qualunque.
Per esempio, i1 dispositivo SN7485 eun comparatore in grandezza di parole d.i 4
bit, impiegabile in cascata secondo 10 schema eli FiguraA.14. n componente ha tre
ingressi (indicati come A < B
i
, A = B
i
e A > B
i
), corrispondenti agli ingressi Gin,
Ein e Lin di Figura A.I5, e tre uscite (pure indicate come A < B, A = B e A > B),
corrispondenti aUe uscite G, EeL di FiguraA.IS, Per il componente che compara i 4
bit menD significativi, Gin, E
in
e Lin sana collegati in modo da asserire in ingresso 1a
condizione di uguaglianza. Per il componente che compara dei 4 bit piu significativi
Gin, E
tn
e Lin sono collegati alle uscite dell'altro.
In Figura A.I5 viene illustrata la logica equivalente a un singolo '85. In figura
viene riportata la sola parte di schema corrispondente a E e a GI mentre non viene
riportata la parte relativa a L. Si osservi che i termini Eo . .. E
3
vengono calcolati
Li (Ai < Bi)
Sistemi digitali 529
Dunque A > B se e solo se G = l.
. La condizione A < B si ottiene dallaA.2 scambiando tra lora A e B:
L = A,B, + E,A,B, + E,E,A,B, + E,E-,E, AoB
o
Le quattro condizioni si traducono nella seguente funzione booleana:
G = A,B
3
+ E,A,B, + E,E,A,B
,
+ E,E,E,AoBo
Figura A.13 Comparatore in grandezza di due bit. Si noti che 10. parte della schema che
rivela se Ai = B; corrisponde alia porta logica NXOR.
' ..
.j;:"
-'11 '1' . ., , .'.
"'!'..
'f';!. r!r
. '".. ,
'.' ..1. ',:,
;,'d:."
,. ('<;"J:;
.:7;e:.., ';, ..1,1,
...{".It
'. , .. " ..,
- .. -", "';1\.,
" "',:''''.
",.it'I!-',"
,.... '.'
" " ,',
'.... '''''. "IT'"
".: .. "',',' .
..,,',.' , '.
1-'". '.", '."'.
, ,. . '" ' ,.
r "\.,.. "',
'.:, .
':
.. ",j

'1''''''"
""', . -':'
,..."

"),;.8;;".;; .',. ,.
\.
.,/f,...... "J.
. J ..
""',.'
,i I"H;.' ""'\,'
":)' '/.....
.,",..'./
.', ' "';,!.

'.. '"'' "".,
""'\l1>"'" 'i'.',,,,
:'!. ',.{;:i ,: ?".:,

'-'",1,
' ""1."
;" :'."h,t
.. ..
", :'"",,,..... '.1" ..
'
'l' /";','."

'.' "",;t],. .. ,Ii.,..
" ,. ,,'" ".,".
: J,:,!.,jj.,'.; ..
. '"
rr},., ;. .... ..
." .,......,
:.: ,- ,'-'\,.", ,
""""".'.;' ";".'
..
...
"
'7'"'f"''- . .c,,;']...
" , .. <, "'-1.'.
.. -i-,l,:' :';;.,., "
::-:;\!/.(}

r;,'"".--:" ...'.... /,.
. -Jij" .
<"'e .,. _''-
>. :, '.ih.
'2n:::
..\ .
.. _..," ......
.." ,."""'"
y .... , 't"'.'l
"::;',"'i.

' " -'!l ....
.
,. . ;><'1" ','

'.P. ""', -.:1 .
. .....
' I' ;:':''l. ,e',. ",'
}l'.'-i'il . '"I
' f
t
:;".,<., '{'''''<.',''
': '. .. ' "'iii' ,,-,\,.
"".' "\' .... .;
.t:i,':'k.'l. ":', .' .
;,
, .. ",':,0,. ,
.,.
'''1' .. , ",.
_l> ,1' 01.
''"''',+, '..... ".
"' .. ;""-"" ' ,; \i"; .,. . ,';, '.
... _
'. """." ;,i..
.,.."...... "'".,
.....,.,.". ,'.
'.j<;.... ..
-Ii,;.;'
':
-:" :::L>r:('
>.iiici '.

' "'... I
-. 'io-->;t\, '
' i..",". ',' "1,':' ' .
' """'(" ""1
' . t" .'", .....
'., .. ,. ,
' '".; -'''''''''''1. 1..
"';
" .... ,
'''l,"' r"; .
.:\.':)'::. il:r;j' ..

, ''',-'' ',"",
, .'
""'.:""'; 8'\,l
",':';';'.11:,".;; ''''r''.
1,1., ";'" , "'!.
. '. ,. ".(,
'... ""'.,..,
:;:
: .h>,
"t,;,,;
' .>/-..., ." I, '.,
"'''"... ' .. '.;, ,
.. ,,'......
.' : ,
":....:.:.
;, '/,.;""
,
..
.
'. ",.\11...._.. , ..
" .', _ ...
TRASMETTl
RICEVITORE
TORE
.
p,
A

Pt
A
B
'- B
C C
D D
p, p,
---" --_. ---
-_..__
L..
La rete di FiguraA.13, effettua il confronto di due bit. Le u5cite vengono denotate
rispettivamente con G
i
, E
i
eLi, E facile convincersi che per una data coppia di
ingressi Ai,B
i
una sola delle tre uscite evera. Infatti:
se Ai < B
i
(cioe Ai = 0 e Bi = 1), aHara solo Puscita L
i
evera;
se Ai >. B
i
(doe Ai = 1 e B
i
= 0) l aHara solo Puscita G
i
evera.
Si consideri ora il confronto tra parole di quattro bit. Si indichino con A =
[A,A,A,AoI e con B = [BsB,B,BoJ Ie due parole. Affinche sia A = B, deve essere'
A, = B" A, = B" A, = B
"
Ao = Bo
Nell'esempio illustrato si efatta l'lpotesi di trasmettere in parallelo i bit della
parola. Di normal specialmente quando gli apparati sono distanti, la trasmissione av-
viene in modo seriale, n calcolo del bit di parita puo essere effettuato dal trasmittente
prima di serializzare"la paroial mentre il ricevente puo effettuarlo a ricomposizione
avvenuta. In questa casa, tuttavia, il calcolo della parita puo essere anche effettuato
tramite una rete sequenziale che conteggi i singoli bit, man mana che essi vengono
trasmessi 0 ricevuti.
ovvero, indicando can E
s
,E
2
,E
1
,Eo Ie tre condizioni precedenti, si ha A = B 5e evera
Ja condizione E = E,E,E,E
o
La disuguagp,anza A > B richiede che una delle seguenti quattro condizioni sia
verificata:
- OJ PARIU' Dl PARITA'
Figura A.12 ControUo della. parita di una parola di quattro bit a mezzo di porte XOR a
due soli ingressi.
I
I
I
I
YVee
530 Appendice A
A.6.1 Somma con calcolo anticipato del riporto
A.6 Unita aritmetiche
RI
SI
Sistemi digitali 531
B3
"
Bl so
D
" pi
y""
gt
"0
10
AO A1
A2
A'
"
of
,
"

"
./
r-"
Y
III
T
Ai
Ri-l
,
,.' Ro = go +vaR_
1
R
,
= g, + P1Ro = 91 +PlgO + PIPoR_
1
R, =g, +p,R
,
=9' +P'9' +P2P190 +p,P1PoR-1
R, = 9' +1'3R, = g, +1'39' +P'P291 +P,P2P190 +p,p,PIPoR-1
\
Dunque:
Bi
-
Figura A.16 generata (9i) e funzione propagata (Pi) per iJ completo.
Nelle precedenti espression.i i termini Pi e gi, detti rispettivamente junzione generata "
e /unzione propagata, sono calcolati in un tempo T pari alia cornmutazione di, ub'a sola
porta. Gli lii sana dunque calcolati in un tempo pari alla commutazione d.i tre porte.
Di conseguenza, il calcolo di S richiede un tempo LIs = 4T, La rete che effettua il
calcole riporti viene detta Carry Generator. In Figura A.I? viene
mostrato 10 schema di un sommatore di parole di 4 bit con calcolo anticipato del
riporto.
Considerando l'espressione di .R
3
e posta: G := 93 + P392 + P3P291 .+ P3P2P190 e
E: (A-B) G (A>B)
Figura A.I5 ComparaLore di grandezza di parole di quattro bit. Lo schema non riporta.
la parte relativa a.l calcoJo 'della condizione A < B. Nella schema E. = Ai == B.. Ein
rappresenta la condizione di uguaglianza in ingresso. Se il comparatore e usato in cascata
can altri si hanno due possibilita per Ein: (a) se Questa eil modulo che confronta i quattro
bit meno significativi E.
n
deve essere tenuto permanentemente asserito (mentre Gin e Lin
devono essere disasseriti)j (b) se questa non eit modulo che confronta i quattro bit menD
significativi Ein viene collegato a E del modulo che 10 precede, mentre Gin e Lin vanno
collegati rispettivamente aGe L del modulo che precede.
f'.!i;;;,
, ;t""
If ,M-.
.. ""
''':,.,'' r,l
.. '" 'I"
' .
'..
.
.'l. r:
.>-;' ';':1:';p, . .. .
'" 'jt;;"" " ...., .'.'
' .. "."';.1'.11.' , .
,.' '''':11,' ,I"
':<,...d."
j '1\ 'Jf ,'"",'
",.,.'"j t'h'
',,1'1. ':,
'.. '...J '-'1"
"i'l:,'.
."

'.,
.":, 'I'
-".
.I.
,"" W.-r. "
(i\>1i'
j
'.
l_ .. ,*'''
,.; "",
.. <',"'1'-1 l',., ii,
.'
,- ".. _I ','
'.', ',',>j, ::'-.;rf
.:'
, ., .
..i,:
, ,/'1- ,'10,: I ,_',1,:
" .'. 1 ". . '
,'!-Ct" '",,0;:.. ' '
., '1"," '}!"" '
" :t,rr1-,)
.l'..... ,;,,',", 't','/",;,.' :'
'.. I' , "
" 1 ",. ""
....
""'j;:'S, . "
, , ......, , \.<''1: '
: ''-''',LI _''I:' "
I

"'" ,. 'c::{ .
...
'/d;"ti

...
"',,';:r:1
' u
Co','
,
),-.. :,Il'fff,:
:J.',
tt-
I
, ,'.
,. .
"I, , ,
r t.I,'\,;,."'t'."
,
'.... "I,.,..i'" ,
' ". '''1''"'.-:,'
";."",,,-::,
',r'" '0"

"""",
, .:>:,., '
\1'."li."" , .. , '." '" . ..
." .... ;,'. "';r,',
'.. . i'.-'
. .""I1l. ,. "".'.

',,,.
,,"., it.
I .
I'
t, .,;,
,.' < ,
Ii.; "
'.'
"ill))\) , '.
,"& l ".t"
::1'1 ...
.,, '.fi 1'1

". VJi,." ,oJ,,,,,
I. 'f"" '.'.,

ir;U"-
j' .... ,'':fiti" ,
, . 't", - '01:' '".
"Jot _ "
.... '"" ..
'j'''.,:"",'i! ,r'
'(,,)I")' " "
..""'<ci
.>',.-. Ii" ,"
',,'
., . t"
. - if . :;'\1':<'.
"''1','1;:' {,..r,..



1;0\"
r,.1 ,"1>' ....
'"t,;
"""'l' ,
t, ,,: .
" f .'''"' ",. 'ii' I " ',
':"""1'1..,' .. ,
'" .'. flL
., I "'.'
, '1 II;'.';"
... ,,*''1.... 11M"

.. :,fl..:
...... ........

1';"""

,.. t..
."".' ....'<c.,.:.
..
'\1:'.'"
',,,, ':J,'.;, !.,:iH.
, ....
t ',,-.1-1' .
:ij',':;:,
, ". , ,"-
., ',. . 'i'"'
".:1
,",1,'1' '.
'''I"I''I! ", 'I"
'1:-\: 'ji,
, ,"1,., ,', (",.
",)Z-ri:.
r
'.' ';'1t
"'Il!'"
' .' ""
"". ' .
"
., ( ..'
.
..L

10 AI 74858' 0-
I. AI 8. 0-
j, AI I,
UI I)'
-:- TTl IIIIII[
Ad! 0-1\ .,lIi
I. ". I.
l. ., 7485 I,
I. u 8. 0-
I. h " .....
Ad .-8 1)8
I I I
E possibile ridurre i tempi di calcolo della somma con la tecnica del CalCOLO anticipato
del nporto. La tecnica si basa sulla struttura algebrica di Si e lii.
Facendo riferimeoto alia Figura A.16 e posta Pi = A; ED B.i e 9i := AiB;, si ha:
Si = Ai Ell Bi Ell R;-l = (Ai Ell B
i
) Ell R;-l = Pi Ell R;-l
R; =AiB
i
+ (Ai Ell Bi)R;-l =9i + PiRi _1
Vengono ora approfonditi alcuni aspetti sulle unita. aritmetiche non trattati nell'In-
troduzione.
con altrettante porte NXOR. L'uguaglianza richiede l'AND tra la condizione di ugua-
glianza dei 4 bit considerati con la condizione cli uguaglianza degli eventuali bit meDO
significativi.. Alia stesso modo, la condizione di maggiorita A.2 cleve essere modificata
in modo da tenere in conto del fatto che in presenza di uguaglianza dei quattro bit
trattati da! modulo ci essere la condizione A > B sugli eventuali bit meno si-
gnificativi. Ovviamente 1a coodizione si esprime come l'AND tra Gin e la condizione
di uguaglianza dei 4 bit considerati. A questa punta dovrebbe risu1tare chiaro i1 ruole
giocato da Gin e Bin nella schema di Figura A.15.
L , C
Figura A.14 Schema di coUegamento del dispositivo 7485 per il confronto di parole di 8
bit. La rete confronta la par-cIa presentata daJ late A con quella permanentemente impostata
da.llato B (in questa caso pari a 64H). Lo schema puo essere utilmente adottato per decodi-
ficare un indirizzQ. L'impiego di ponticelli consente la massima Bessibilita. nelPimpostazione
dell'indirizzo eli confranta.
J
I
I
J
I
I
I
I
I

-
.'

-
-
-
'.
YVee
530 Appendice A
A.6.1 Somma con calcolo anticipato del riporto
A.6 Unita aritmetiche
RI
SI
Sistemi digitali 531
B3
"
Bl so
D
" pi
y""
gt
"0
10
AO A1
A2
A'
"
of
,
"

"
./
r-"
Y
III
T
Ai
Ri-l
,
,.' Ro = go +vaR_
1
R
,
= g, + P1Ro = 91 +PlgO + PIPoR_
1
R, =g, +p,R
,
=9' +P'9' +P2P190 +p,P1PoR-1
R, = 9' +1'3R, = g, +1'39' +P'P291 +P,P2P190 +p,p,PIPoR-1
\
Dunque:
Bi
-
Figura A.16 generata (9i) e funzione propagata (Pi) per iJ completo.
Nelle precedenti espression.i i termini Pi e gi, detti rispettivamente junzione generata "
e /unzione propagata, sono calcolati in un tempo T pari alia cornmutazione di, ub'a sola
porta. Gli lii sana dunque calcolati in un tempo pari alla commutazione d.i tre porte.
Di conseguenza, il calcolo di S richiede un tempo LIs = 4T, La rete che effettua il
calcole riporti viene detta Carry Generator. In Figura A.I? viene
mostrato 10 schema di un sommatore di parole di 4 bit con calcolo anticipato del
riporto.
Considerando l'espressione di .R
3
e posta: G := 93 + P392 + P3P291 .+ P3P2P190 e
E: (A-B) G (A>B)
Figura A.I5 ComparaLore di grandezza di parole di quattro bit. Lo schema non riporta.
la parte relativa a.l calcoJo 'della condizione A < B. Nella schema E. = Ai == B.. Ein
rappresenta la condizione di uguaglianza in ingresso. Se il comparatore e usato in cascata
can altri si hanno due possibilita per Ein: (a) se Questa eil modulo che confronta i quattro
bit meno significativi E.
n
deve essere tenuto permanentemente asserito (mentre Gin e Lin
devono essere disasseriti)j (b) se questa non eit modulo che confronta i quattro bit menD
significativi Ein viene collegato a E del modulo che 10 precede, mentre Gin e Lin vanno
collegati rispettivamente aGe L del modulo che precede.
f'.!i;;;,
, ;t""
If ,M-.
.. ""
''':,.,'' r,l
.. '" 'I"
' .
'..
.
.'l. r:
.>-;' ';':1:';p, . .. .
'" 'jt;;"" " ...., .'.'
' .. "."';.1'.11.' , .
,.' '''':11,' ,I"
':<,...d."
j '1\ 'Jf ,'"",'
",.,.'"j t'h'
',,1'1. ':,
'.. '...J '-'1"
"i'l:,'.
."

'.,
.":, 'I'
-".
.I.
,"" W.-r. "
(i\>1i'
j
'.
l_ .. ,*'''
,.; "",
.. <',"'1'-1 l',., ii,
.'
,- ".. _I ','
'.', ',',>j, ::'-.;rf
.:'
, ., .
..i,:
, ,/'1- ,'10,: I ,_',1,:
" .'. 1 ". . '
,'!-Ct" '",,0;:.. ' '
., '1"," '}!"" '
" :t,rr1-,)
.l'..... ,;,,',", 't','/",;,.' :'
'.. I' , "
" 1 ",. ""
....
""'j;:'S, . "
, , ......, , \.<''1: '
: ''-''',LI _''I:' "
I

"'" ,. 'c::{ .
...
'/d;"ti

...
"',,';:r:1
' u
Co','
,
),-.. :,Il'fff,:
:J.',
tt-
I
, ,'.
,. .
"I, , ,
r t.I,'\,;,."'t'."
,
'.... "I,.,..i'" ,
' ". '''1''"'.-:,'
";."",,,-::,
',r'" '0"

"""",
, .:>:,., '
\1'."li."" , .. , '." '" . ..
." .... ;,'. "';r,',
'.. . i'.-'
. .""I1l. ,. "".'.

',,,.
,,"., it.
I .
I'
t, .,;,
,.' < ,
Ii.; "
'.'
"ill))\) , '.
,"& l ".t"
::1'1 ...
.,, '.fi 1'1

". VJi,." ,oJ,,,,,
I. 'f"" '.'.,

ir;U"-
j' .... ,'':fiti" ,
, . 't", - '01:' '".
"Jot _ "
.... '"" ..
'j'''.,:"",'i! ,r'
'(,,)I")' " "
..""'<ci
.>',.-. Ii" ,"
',,'
., . t"
. - if . :;'\1':<'.
"''1','1;:' {,..r,..



1;0\"
r,.1 ,"1>' ....
'"t,;
"""'l' ,
t, ,,: .
" f .'''"' ",. 'ii' I " ',
':"""1'1..,' .. ,
'" .'. flL
., I "'.'
, '1 II;'.';"
... ,,*''1.... 11M"

.. :,fl..:
...... ........

1';"""

,.. t..
."".' ....'<c.,.:.
..
'\1:'.'"
',,,, ':J,'.;, !.,:iH.
, ....
t ',,-.1-1' .
:ij',':;:,
, ". , ,"-
., ',. . 'i'"'
".:1
,",1,'1' '.
'''I"I''I! ", 'I"
'1:-\: 'ji,
, ,"1,., ,', (",.
",)Z-ri:.
r
'.' ';'1t
"'Il!'"
' .' ""
"". ' .
"
., ( ..'
.
..L

10 AI 74858' 0-
I. AI 8. 0-
j, AI I,
UI I)'
-:- TTl IIIIII[
Ad! 0-1\ .,lIi
I. ". I.
l. ., 7485 I,
I. u 8. 0-
I. h " .....
Ad .-8 1)8
I I I
E possibile ridurre i tempi di calcolo della somma con la tecnica del CalCOLO anticipato
del nporto. La tecnica si basa sulla struttura algebrica di Si e lii.
Facendo riferimeoto alia Figura A.16 e posta Pi = A; ED B.i e 9i := AiB;, si ha:
Si = Ai Ell Bi Ell R;-l = (Ai Ell B
i
) Ell R;-l = Pi Ell R;-l
R; =AiB
i
+ (Ai Ell Bi)R;-l =9i + PiRi _1
Vengono ora approfonditi alcuni aspetti sulle unita. aritmetiche non trattati nell'In-
troduzione.
con altrettante porte NXOR. L'uguaglianza richiede l'AND tra la condizione di ugua-
glianza dei 4 bit considerati con la condizione cli uguaglianza degli eventuali bit meDO
significativi.. Alia stesso modo, la condizione di maggiorita A.2 cleve essere modificata
in modo da tenere in conto del fatto che in presenza di uguaglianza dei quattro bit
trattati da! modulo ci essere la condizione A > B sugli eventuali bit meno si-
gnificativi. Ovviamente 1a coodizione si esprime come l'AND tra Gin e la condizione
di uguaglianza dei 4 bit considerati. A questa punta dovrebbe risu1tare chiaro i1 ruole
giocato da Gin e Bin nella schema di Figura A.15.
L , C
Figura A.14 Schema di coUegamento del dispositivo 7485 per il confronto di parole di 8
bit. La rete confronta la par-cIa presentata daJ late A con quella permanentemente impostata
da.llato B (in questa caso pari a 64H). Lo schema puo essere utilmente adottato per decodi-
ficare un indirizzQ. L'impiego di ponticelli consente la massima Bessibilita. nelPimpostazione
dell'indirizzo eli confranta.
J
I
I
J
I
I
I
I
I

-
.'

-
-
-
'.
La TabellaA.2 riporta la tabella di verita delle due funzioni S, e R;. La Figura A.19
riporta Ie corrispondenti mappe di Karnaugh. Da esse si rkava:
G P
Figura A.18 Somma di parole di 16 bit. nsommatore ecastruito utilizzando 4 sommatori
di 4 bit can calcolo anticipato del riparto. Ciascuno dei sommatori di 4 bit impiega al suo
interno esattamente la stessa rete per il calcolo anticipato del riporto.

) .
1
)
)
)
I
I
I .
j
I.
I
I.
I
I
/
R,
} 00 01 II 10
)
1
,
1 1 I
.BiRI-i
> 00 01 II 10

I I
I 1 1
A B R_,
S R
0
0 0
0 0 1 1 0
0 1
0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1
0 0 1
1 1 1 1 1
Tabella A.2 Le funzioni booleane per la e il Riporta.
S,
Figura A.19 Mappe Karnaugh di S; e Ro.
81 Ri-l
Sistemi digit.li 533
S, = A, B,R;_I +A;B,R;_, + A,B, R;-I + A,B,R;_l
R; = A,R;_l + A,B, +B,R;_l
A.7 Unita aritmetiche e logiche
Le precedenti relazioni perrnettono di tracciare 10 schema della rete corrispondente al
sommatote completo. Per rnotivi cbe saranno chiariti pili avanti, conviene esprimere
S, in funzione di R;. A tale scopo si facci. riferimento alla Figura A.20. In Figura
A.20a viene riportata Ia mappa di R;; con l'artiJicio di Figura A.20 b) e di Figura
A.20c la mappa di R; viene ricondotta a quella di S,. AlIa mappa di Figura A.20
corrisponde I'espressione seguente AA e la relativa rete di Figura A.21.
S, = A,R, +B,R, +R;R;-I + A,B,R;_I (A.4)
Si noti che R; eI'uscita di una rete a 2 livelli, mentre per Si la rete ea 4 livelli.
Nell'introduzione (Ofr. 1.7.1) estata costruita una semplice unita aritmetica e logica
che eseguiva la sola operazione logica di complementazione. Si ponga ora il problema
-,
,-,
1.0 80 AI BI RO
R
3
=G+PR_
1
A2 B2 Rl A3 83 R2
G P
Somma di parole di 4 bit con calcolo anticipato del riporto.
I I ;=-
I I F- I I r- I I
PA
PA )'A
PA
CI pI

"
"
" "
"
.,
R2 I' ,2
"
.1 p'
"
....
"
LOOK-AHEAD CARRY GENERATOR
,-,
f-
I I
Ancora suI sommatore completo
Appendice A
ar,-'2
YI-e
r-
4
y-o ,
r-- R7 RU
'3
PA
FA
FA
FA GJ 1'3
02 1'.
GI Pl
..
SllI-l
su-a
S7-4
33-0
'"
,3 p3
R2 12 p.
R>
" "
RO CO pO
" LOOK-AHEAD CARRY GENERATOR
,-,
I I
532
p ;:: P3P2P1PO, R
3
si riscrive come:
Figura A.17


, ,.,
.'!'"
": ,\'!' - - ,"""',
, '" ,\ ,.,;1";,
, . ,.
,.. ''''\1''''''
),." '"
_';r,:t' {'
", -' ,f" .

,'.. ..
'-J'.I:... .'j ';c:,.,
"1"',..-" 'U"
"

.'''.,
' . .-" -..:
. "'.,,::-,
'-/;,- ,.,- .,.
',f;:l!:',':
,I }.iP'i
, :.:' ;:'.,..!7lI ,n, ,,-,
,.
",.",{;
: ',".
h"f:"", ", '
. .
.... ,""",'_
..........."'-! . ,.,- ,
, "
.l' .,..,- ...
:
.. ":;','\1,
'.-
",.. ".;, '".:,.-',."
".(".1" . ..
, .'1:;:.rj\'l;'!1 ,.,Aii',Y"
. ...,-. ' .... -
".''0\' 'J." _.C
.\1' ",,;. "-'<...,
:: ' ".'" , ..
,\. ,.,,",' '. F""'
"'. . ...:'to
I ..." . /oj.;. t<';-;.
',M' :,1".1':'...,
.." .. ,.,,\"'!".,,
;;.l'i: '"a;
'J.':' " ;!, .
: 'ti-rf, ...

J ," "' ,'It" ..,..
... ' ,,'. ";:';";"'";".
' ' :" rl r
\ .", ";;U ,", ,""'11, "
<, .
"".1;1"::'."
, ' '.
"l<'''' ",,'
.:
'> -.
E quindi possibile impiegare in modo iterativo it calcolo anticipato del riporto
,

reti a piu livelli, Per supponga di volere di
bIt. n pub essere unplegando quattro Sommaton da 4 ?lt
l
?ome
queUo di FIgura A,17, e un ultenore Look Ahead Carry Generator, come In
A.18. . ,
..;,dM.ll
',.' 'lIiliF
Alll-12 AI I-a 1.7-4 1.3-0 .; ..-.
l" ". . .
'\ " ,,;.
',,;:,: ..'41.

"': k6&p'\

.l!", ";w....
"',i(" , " Ii"d::k;
" ;
'.c"," "",
,'. i'

, If"'
- .. *"', ... 'Ph
I"" t. r'.'

,. "jJ;.1;
,,'.
, 1:,'.1;h,.i,
,'1''5':,':.-
'i ,J;(.;'t;:(( :1l"ff.k"
,I." . f:'.
,U,."-;,,
."h i. ""!c;;O,'
r. ,010< . ,
:...,,0::;,
,.".- >'1''t.; .
.. . ....:-
i'tl'>"!i<"": ..
,.;;,'l'''';
..
:' .'-"r!I ' ,t:
".' .'';"" ';t,:":'.!:
I .,','
::a;J.':'::
,,' ", ',I"'. ,u'"<.
",rJ1"i(j)..I
..
!;>..::;i,'.' ,
,..
....;>;,. "t>f,'"f:,->
.. .'.,..... ....
''''5''''' " ..,."
....'-'"r.a' "'>1' 'J,;:".;:
" 0;: O'i...,.
,;,." ,,:t; .If:,
.t: ..
,,,,'!'p'<f,
"c""''" .... '
",r: . <I ".,
:"t' ltir ' ...,., '.'
,r '('''-''' .',"",",
j , ,....".,
: ..
'J"[ ".I""h
,':i.-t ..
.
"'1..l
._""'.{._ 11.?
;;:1;'
'''.'. "..-'
::'1'!;..'1,,' .,
' ..>.. .
.' _"\.;. , ..
" .. .
, ,... ' ".
. ,. 1\": : ,...., 0,;."
A.6.2
La TabellaA.2 riporta la tabella di verita delle due funzioni S, e R;. La Figura A.19
riporta Ie corrispondenti mappe di Karnaugh. Da esse si rkava:
G P
Figura A.18 Somma di parole di 16 bit. nsommatore ecastruito utilizzando 4 sommatori
di 4 bit can calcolo anticipato del riparto. Ciascuno dei sommatori di 4 bit impiega al suo
interno esattamente la stessa rete per il calcolo anticipato del riporto.

) .
1
)
)
)
I
I
I .
j
I.
I
I.
I
I
/
R,
} 00 01 II
10
)
1
,
1 1 I
.BiRI-i
> 00 01 II 10

I
I
I 1
1
A B R_,
S
R
0
0 0
0
0 1
1
0
0 1
0
1 0
0 1
1
0 1
1
0
0
1 0
1
0
1
0 1
1 1
0
0 1
1 1
1
1 1
Tabella A.2 Le funzioni booleane per la e il Riporta.
S,
Figura A.19 Mappe Karnaugh di S; e Ro.
81 Ri-l
Sistemi digit.li 533
S, = A, B,R;_I +A;B,R;_, + A,B, R;-I + A,B,R;_l
R; = A,R;_l + A,B, +B,R;_l
A.7 Unita aritmetiche e logiche
Le precedenti relazioni perrnettono di tracciare 10 schema della rete corrispondente al
sommatote completo. Per rnotivi cbe saranno chiariti pili avanti, conviene esprimere
S, in funzione di R;. A tale scopo si facci. riferimento alla Figura A.20. In Figura
A.20a viene riportata Ia mappa di R;; con l'artiJicio di Figura A.20 b) e di Figura
A.20c la mappa di R; viene ricondotta a quella di S,. AlIa mappa di Figura A.20
corrisponde I'espressione seguente AA e la relativa rete di Figura A.21.
S, = A,R, +B,R, +R;R;-I + A,B,R;_I (A.4)
Si noti che R; eI'uscita di una rete a 2 livelli, mentre per Si la rete ea 4 livelli.
Nell'introduzione (Ofr. 1.7.1) estata costruita una semplice unita aritmetica e logica
che eseguiva la sola operazione logica di complementazione. Si ponga ora il problema
-,
,-,
1.0 80 AI BI RO
R
3
=G+PR_
1
A2 B2 Rl
A3 83 R2
G P
Somma di parole di 4 bit con calcolo anticipato del riporto.
I I ;=-
I I F- I I r- I I
PA
PA )'A
PA


CI pI

"
"
" "
"
.,
R2
I' ,2
"
.1 p'
"
....
"
LOOK-AHEAD CARRY GENERATOR
,-,
f-
I I
Ancora suI sommatore completo
Appendice A
ar,-'2
YI-e
r-
4
y-o ,
r-- R7 RU
'3
PA
FA
FA
FA GJ 1'3
02 1'.
GI Pl
..
SllI-l
su-a
S7-4
33-0
'"
,3 p3
R2 12 p.
R>
"
"
RO
CO pO
" LOOK-AHEAD CARRY GENERATOR
,-,
I I
532
p ;:: P3P2P1PO, R
3
si riscrive come:
Figura A.17


, ,.,
.'!'"
": ,\'!' - - ,"""',
, '" ,\ ,.,;1";,
, . ,.
,.. ''''\1''''''
),." '"
_';r,:t' {'
", -' ,f" .

,'.. ..
'-J'.I:... .'j ';c:,.,
"1"',..-" 'U"
"

.'''.,
' . .-" -..:
. "'.,,::-,
'-/;,- ,.,- .,.
',f;:l!:',':
,I }.iP'i
, :.:' ;:'.,..!7lI ,n, ,,-,
,.
",.",{;
: ',".
h"f:"", ", '
. .
.... ,""",'_
..........."'-! . ,.,- ,
, "
.l' .,..,- ...
:
.. ":;','\1,
'.-
",.. ".;, '".:,.-',."
".(".1" . ..
, .'1:;:.rj\'l;'!1 ,.,Aii',Y"
.
...,-. ' .... -
".''0\' 'J." _.C
.\1' ",,;. "-'<...,
:: ' ".'" , ..
,\. ,.,,",' '. F""'
"'. . ...:'to
I ..." .
/oj.;. t<';-;.
',M' :,1".1':'...,
.." .. ,.,,\"'!".,,
;;.l'i: '"a;
'J.':' " ;!, .
: 'ti-rf, ...

J ," "' ,'It" ..,..
... ' ,,'. ";:';";"'";".
' ' :" rl r
\ .", ";;U ,", ,""'11, "
<, .
"".1;1"::'."
, ' '.
"l<'''' ",,'
.:
'> -.
E quindi possibile impiegare in modo iterativo it calcolo anticipato del riporto
,

reti a piu livelli, Per supponga di volere di
bIt. n pub essere unplegando quattro Sommaton da 4 ?lt
l
?ome
queUo di FIgura A,17, e un ultenore Look Ahead Carry Generator, come In
A.18. . ,
..;,dM.ll
',.' 'lIiliF
Alll-12 AI I-a 1.7-4 1.3-0 .; ..-.
l" ". . .
'\ " ,,;.
',,;:,: ..'41.

"': k6&p'\

.l!", ";w....
"',i(" , " Ii"d::k;
" ;
'.c"," "",
,'. i'

, If"'
- .. *"', ... 'Ph
I"" t. r'.'

,. "jJ;.1;
,,'.
, 1:,'.1;h,.i,
,'1''5':,':.-
'i ,J;(.;'t;:(( :1l"
f
f.k"
,I." . f:'.
,U,."-;,,
."h i. ""!c;;O,'
r. ,010< . ,
:...,,0::;,
,.".- >'1''t.; .
.. . ....:-
i'tl'>"!i<"": ..
,.;;,'l'''';
..
:' .'-"r!I ' ,t:
".' .'';"" ';t,:":'.!:
I .,','
::a;J.':'::
,,' ", ',I"'. ,u'"<.
",rJ1"i(j)..I
..
!;>..::;i,'.' ,
,..
....;>;,. "t>f,'"f:,->
.. .'.,..... ....
''''5''''' " ..,."
....'-'"r.a' "'>1' 'J,;:".;:
" 0;: O'i...,.
,;,." ,,:t; .If:,
.t: ..
,,,,'!'p'<f,
"c""''" .... '
",r: . <I ".,
:"t' ltir ' ...,., '.'
,r '('''-''' .',"",",
j
, ,....".,
: ..
'J"[ ".I""h
,':i.-t ..
.
"'1..l
._""'.{._ 11.?
;;:1;'
'''.'. "..-'
::'1'!;..'1,,' .,
' ..>.. .
.' _"\.;. , ..
" .. .
, ,... ' ".
. ,. 1\": : ,...., 0,;."
A.6.2
,:! ,
Si
Figura A.21 Schema per i1 sommatore completo con uscita Si in fUDzione di Ai, Bi
,
Ri
e R..-l- La rete corrisponde - a menD di differenze irrilevanti - a meta del contenuto del
componente 7482.
Se Cs = 0 e C2 = 1, allora il valore di Ri calcolato dalla rete di Figura A.22 non
risulta alterato rispetto a quello calcolato dalla rete di Figura A.21j dunque se
alla Tabella1.8 si aggiungono due colonne per C3 e C2, 1a tabella risultante, su
tutte Ie linee in cui si ha 01 per la ceppia c, C" eidentica alla Tabella 1.8.
Ri-l
\.
Sistemi digitali 535
Bi
\..
c-
Co
c,
C,
C,
e
Ai
"
A
"
ALU
I
T
"

\..,."1
I 1-
Rl
8
v
11
Y
RS
I
c;'J I 1=
Se C3 = 0, C2 == 0 e R_
1
= 0, allora Ri = 1 per ogni i. Conseguentemente la rete
calcola Si == 1 0+ Ai' 1 + B
i
1 + Ai' B
i
0 = Ai + B
i

10 schema della nueva ALU eripertato in Figura A.23, mentIe in Tabella A.3
viene riportato il dettaglio delle operazioni di rilievo. Ovviamente sono possibili altre
operazioni oltre a queUe riportate in TabellaA.3. Per esempio
1
con la configurazione
di controlle 1- 11- la rete calcela A AND B. .
Vale la pena di osservare che 'nello schema di Figura A.23 Ie linee di control-
10 sana tutte separate. Alternativamente si puo adottare la convenzione di presen-
tare alla ALU un comando in forma codificata e inc1udere nella ALU il necessaria
decodificatore.
S
Figura A.23 Schematizzazione deU'ALU risultante.
Si
Figura A.22 Disattivazione degli effetti dei riporti nel sommatore completo attraverso
l'aggiunta di due Iinee di controllo che rendono disponibile I'AND e POR dei due ingressi
'l' '.';.,

'1iI';'I$,:
,. .
Ii ',!,\
"'-'''''v.
f
'',''-'.
.

';,....h
"c,,'l ''''.'';'
tl' ",' . ,'.
."" .. u.,'-'
,.';--;--;; it ..
i ,','P.:::,
.' .. , ..

."1,' , .,. "
.'.,',. ....
':-"'". .." . ,
.:r.;!,!f_ ,2L'!:! .
': '.:;"'i;,
'.
.,.l'l:lI'l Yo;;!
""1')1. ,. ,'"
.' 'c" i: ",J,.;:.

"."-',,'
..
.. . "",'l
'"l""I'!. . ",

"",,',," ;'l,,;
J:-:'7!-' ,.-,
"\''..0,1' ,I'l;e'
.. '
:' r:i;j' .-
. ".,.,' ....,-
,
..,"\"",' ,'.,....
.'
'I"!') ,
.: :,:, i J7. r-;,
, .,"" .1 '
.. ',', '
.:' "'''''Il..'"
',"1.., . "'w,:"
..
' :ri::Il"":' ',f;v '
',: '-'. ":l;I,ili
"""I"f: .-, ..
", '('1'" ...
""
';',
, . i,Y..-: '
':, ' ...if'. . 1"",".
.,....
...
I .. :r;.,..
",,1:;"'1':'
;ct;'!> {,,,"."'.
"'iJ,.:!W ,:;tot".;.'
,
... ..",.. .
-.:.;.
,c . __ '. , .
.,.J,l;"f,\' '
"'. ".,':'
... ...
,;,;\:r ,-

... .." "....
'. j,t'"!
" I,. ,
.'.'':.:.,< :1-,,,,
>.' :..... ,'"
.__ . :
bt

. 1
-)
.".. ....
", .1::.
"""" '!i{'''''.
.... ,
';,",\elC.,o}I:li': ;il
, ",,' ''''''"!!l'''' '' , .,.,,','.....
.. k
, .. '''..,.pi" .. r, "'.,


, 'I ," ".", . ......
,
" K, ..';tIl' '" ... ,;,
,'.l\il1:>
.".""

..' <, .' ',"1'1'
' "" "
':;',\J;li: :!! ,".'
" .." .. ,
. ,r.'l"t"
.," '.:
.-.j ,t ,
" .. ':;;") , ",
'IWJ):.;
, ""
,';
'., .', "' ... ........ .
I,
,., ";'$:;"6.!J'"

"',- "
, ',"
-.,';'<,
;c... l:c'
..
"" il.'
.

.
.. ' ".' ....
; 'Y;'-"<l. '1".'-,'
. '..:1;-;1',_,< '!F'.'l' "

,:'-"":':\.
.,d!f';:{ "'?1<"'t... :
\: ':j'
",,'-'t;.

"."'''''';,.:;'

, . ,"", 1;;1'"
, ,.tr:""Vr

:":::'':)':I'i: ."
,..
,r"" ..,I'I)
1;
.'>;'
' l' '"" ':1 '''';,
,. I.
':,,'1"
'.... ...
Ri-l
Bi
B,R
,
00 01 11 10

I 1
1 1 1
.
Ai
B; RI-
,
00 01 11
I'
l
1 I
1 I
y
c-
t
)
Hi
'If; 'R", {"It Bl+ Rl.Jl ifl (A-it Bit RH) +"18IRl.!
W .j
Metoda pratico per pervenire a una espressione di Si in funzione eli Ai, B"
, 00 01
"
10
l
,
I l
,
I
Bi R
di estendere tale ALU in modo da incorporarvi anche Ie operazioni logiche di AND e
OR tra i due ingressi A e B.
Ovviamente, Dei semisommatori sana presenti porte AND e OR. In particolare
ogni uscita Si rappresenta l'uscita di una porta OR. Tuttavia 1a presenza dei riporti
,
reode l'uscita Si dipendente dai bit di minor peso. E dunque necessaria annuHare gli
effetti dei riporti. Si faccia per esempio riferimento al sommatore di Figura A.21 e di
supponga di modificarlo come in Figura A.22, dove sono state aggiunte due linee (di
contrello) Cs e C2. .
Si considerino questi casi.
Se Cs = I, allora = 0 ogni i; dunque i1 contributo a Si delle tre porte a
due ingressi in cui entra risulta nullo, mentre 1a porta a tre ingressi fornisce
Ai' B
i
1. In conclusione 1a rete eli FiguraA.22
1
con C3 = 11 calco1a Si = Ai AND
B
i
(si noti che R_
1
eirrilevante. '
Figura A.20
Ri e Ri-l.
534 Appendice A
\
J
I
I
j
!
I
I
I
I
I
I
-
-
-
-
-
-

-
-
-
,:! ,
Si
Figura A.21 Schema per i1 sommatore completo con uscita Si in fUDzione di Ai, Bi
,
Ri
e R..-l- La rete corrisponde - a menD di differenze irrilevanti - a meta del contenuto del
componente 7482.
Se Cs = 0 e C2 = 1, allora il valore di Ri calcolato dalla rete di Figura A.22 non
risulta alterato rispetto a quello calcolato dalla rete di Figura A.21j dunque se
alla Tabella1.8 si aggiungono due colonne per C3 e C2, 1a tabella risultante, su
tutte Ie linee in cui si ha 01 per la ceppia c, C" eidentica alla Tabella 1.8.
Ri-l
\.
Sistemi digitali 535
Bi
\..
c-
Co
c,
C,
C,
e
Ai
"
A
"
ALU
I
T
"

\..,."1
I 1-
Rl
8
v
11
Y
RS
I
c;'J I 1=
Se C3 = 0, C2 == 0 e R_
1
= 0, allora Ri = 1 per ogni i. Conseguentemente la rete
calcola Si == 1 0+ Ai' 1 + B
i
1 + Ai' B
i
0 = Ai + B
i

10 schema della nueva ALU eripertato in Figura A.23, mentIe in Tabella A.3
viene riportato il dettaglio delle operazioni di rilievo. Ovviamente sono possibili altre
operazioni oltre a queUe riportate in TabellaA.3. Per esempio
1
con la configurazione
di controlle 1- 11- la rete calcela A AND B. .
Vale la pena di osservare che 'nello schema di Figura A.23 Ie linee di control-
10 sana tutte separate. Alternativamente si puo adottare la convenzione di presen-
tare alla ALU un comando in forma codificata e inc1udere nella ALU il necessaria
decodificatore.
S
Figura A.23 Schematizzazione deU'ALU risultante.
Si
Figura A.22 Disattivazione degli effetti dei riporti nel sommatore completo attraverso
l'aggiunta di due Iinee di controllo che rendono disponibile I'AND e POR dei due ingressi
'l' '.';.,

'1iI';'I$,:
,. .
Ii ',!,\
"'-'''''v.
f
'',''-'.
.

';,....h
"c,,'l ''''.'';'
tl' ",' . ,'.
."" .. u.,'-'
,.';--;--;; it ..
i ,','P.:::,
.' .. , ..

."1,' , .,. "
.'.,',. ....
':-"'". .." . ,
.:r.;!,!f_ ,2L'!:! .
': '.:;"'i;,
'.
.,.l'l:lI'l Yo;;!
""1')1. ,. ,'"
.' 'c" i: ",J,.;:.

"."-',,'
..
.. . "",'l
'"l""I'!. . ",

"",,',," ;'l,,;
J:-:'7!-' ,.-,
"\''..0,1' ,I'l;e'
.. '
:' r:i;j' .-
. ".,.,' ....,-
,
..,"\"",' ,'.,....
.'
'I"!') ,
.: :,:, i J7. r-;,
, .,"" .1 '
.. ',', '
.:' "'''''Il..'"
',"1.., . "'w,:"
..
' :ri::Il"":' ',f;v '
',: '-'. ":l;I,ili
"""I"f: .-, ..
", '('1'" ...
""
';',
, . i,Y..-: '
':, ' ...if'. . 1"",".
.,....
...
I .. :r;.,..
",,1:;"'1':'
;ct;'!> {,,,"."'.
"'iJ,.:!W ,:;tot".;.'
,
... ..",.. .
-.:.;.
,c . __ '. , .
.,.J,l;"f,\' '
"'. ".,':'
... ...
,;,;\:r ,-

... .." "....
'. j,t'"!
" I,. ,
.'.'':.:.,< :1-,,,,
>.' :..... ,'"
.__ . :
bt

. 1
-)
.".. ....
", .1::.
"""" '!i{'''''.
.... ,
';,",\elC.,o}I:li': ;il
, ",,' ''''''"!!l'''' '' , .,.,,','.....
.. k
, .. '''..,.pi" .. r, "'.,


, 'I ," ".", . ......
,
" K, ..';tIl' '" ... ,;,
,'.l\il1:>
.".""

..' <, .' ',"1'1'
' "" "
':;',\J;li: :!! ,".'
" .." .. ,
. ,r.'l"t"
.," '.:
.-.j ,t ,
" .. ':;;") , ",
'IWJ):.;
, ""
,';
'., .', "' ... ........ .
I,
,., ";'$:;"6.!J'"

"',- "
, ',"
-.,';'<,
;c... l:c'
..
"" il.'
.

.
.. ' ".' ....
; 'Y;'-"<l. '1".'-,'
. '..:1;-;1',_,< '!F'.'l' "

,:'-"":':\.
.,d!f';:{ "'?1<"'t... :
\: ':j'
",,'-'t;.

"."'''''';,.:;'

, . ,"", 1;;1'"
, ,.tr:""Vr

:":::'':)':I'i: ."
,..
,r"" ..,I'I)
1;
.'>;'
' l' '"" ':1 '''';,
,. I.
':,,'1"
'.... ...
Ri-l
Bi
B,R
,
00 01 11 10

I 1
1 1 1
.
Ai
B; RI-
,
00 01 11
I'
l
1 I
1 I
y
c-
t
)
Hi
'If; 'R", {"It Bl+ Rl.Jl ifl (A-it Bit RH) +"18IRl.!
W .j
Metoda pratico per pervenire a una espressione di Si in funzione eli Ai, B"
, 00 01
"
10
l
,
I l
,
I
Bi R
di estendere tale ALU in modo da incorporarvi anche Ie operazioni logiche di AND e
OR tra i due ingressi A e B.
Ovviamente, Dei semisommatori sana presenti porte AND e OR. In particolare
ogni uscita Si rappresenta l'uscita di una porta OR. Tuttavia 1a presenza dei riporti
,
reode l'uscita Si dipendente dai bit di minor peso. E dunque necessaria annuHare gli
effetti dei riporti. Si faccia per esempio riferimento al sommatore di Figura A.21 e di
supponga di modificarlo come in Figura A.22, dove sono state aggiunte due linee (di
contrello) Cs e C2. .
Si considerino questi casi.
Se Cs = I, allora = 0 ogni i; dunque i1 contributo a Si delle tre porte a
due ingressi in cui entra risulta nullo, mentre 1a porta a tre ingressi fornisce
Ai' B
i
1. In conclusione 1a rete eli FiguraA.22
1
con C3 = 11 calco1a Si = Ai AND
B
i
(si noti che R_
1
eirrilevante. '
Figura A.20
Ri e Ri-l.
534 Appendice A
\
J
I
I
j
!
I
I
I
I
I
I
-
-
-
-
-
-

-
-
-
536 Appendice A
Tabella A.3 Principali operazioni effettuate dalla ALl!
A.8.l Madella generale
I-
-
-
I
-
I
I -
1-
1
1-
I-
\
I -
1-
\
I -
1-
1-
) -
]
).
(A.5)
(A.7)
(A.S)
z=
zl
M;2
m
L; 2'
Sistemi digitali 537
can
caD
M ; (J,O,S,j,9)
foSxI-+O
9,SxI-+S
;{O"O" .. ,OM}
S ; {Sl,S'," ,Sd
1
.

n
ReI

yl Yl
Tl

y1
Tl
Yl
x
x
Analogamente si den.niscono gli alfabeti di uscita e di stato :
L'alfabeto di stato e finito, dunque la macchina ha una memoria finita. Di
cODsegueDza il simbalo di uscita dipeDde saltanta dagli ultimi k siml;>ali d'ingressa.
Per questo si parla anche di Macchine ovvero di Automi a Stati Finiti.
nmodello precedente, nel quale l'uscita efunzione d.i S e di I, viene detto modelio
di Mealy. Quando la relazione d1uscita e del tipo: f: S 0, si parla di modello 0
macchina di Moore.
La schema di Figura A.25 el'interpretazione di una rete compo5ta da porte (rac-
chiusa in ReI) e cia elementi di ritardo corrispondenti ai tempi di commutazione delle
porte sugli anelli di retroazione. n modello d.i FiguraA.25 indica chiaramente che 1a
rete 5equenziale 5i trova in uno stato stabile se il vettore Y che forma parte dell'uscita.
della rete combinatoria RCI e ugua1e al vettore y in presenza del vettore complessivo
d'ingresso a ReI dato cia (X,y). Be il vettore d'ingresso X cambia, ReI genera, con
tempo nullo, un nuovo vettore Z e un nuovo vettore Y. Se Y =j:. Y la rete ein uno
stato instabile. Senza perdere d.i generalita, si supponga che il ritardo sugH anelli di
retroazione sia uguale per tutti, e cioe: 11 = 1"2 :::: .. :::: 1', = 1". ,Dopo l'intervallo d.i
tempo I, y diventa uguale aYe, conseguentemente, appare un nuOVO vettore (X,y)
dove I, 0 e S sooo rispettivamente gli alfabeti d'iogresso, d.i uscita e di stato e f e 9
sono Ie due funzioni:
dove it simbolo Oi rappresenta un'uscita del sistema e il simbolo Si rappresenta uno
statO.
Si definisce Macchina Sequenziale la quintupla:
Figura. A.25 Modella generale di rete sequenziale.
,
"'0>
'

'1::"
',' .. ,
,.,. J' ......
>" "',
' ...
..", .,
!p;' . ." '!"
.. ,'. ...... '"
'. 'I"" l!" I
..
-,ilb "'1' ,
.,
""iff!:'!! " '"
'. ". ,
'Jo\:"'I'" h
'
0,
, "-.

,'.
"-:... '.' ",'""
."!"',!,"-- ' ,
." , ''r"f;:.,',
.- '1 ,'{.... :--:
.
,'" .
"'l
"\ '.' '/"", '.".
' ',( ",'i ".
"
.... "".,
, .. ': ,,'
'" , .
.. !.;' .... '-- ',.
' ';'
. "'['!f"'.
.' ''-Oi.''. "".'/
.. :""'"",
... : .,j.,
, ."
'
-"<;;.
.1., ..',.
",', .\' .! ;",
.,'.. '. '.
: I.'
-- "', rl\,' ., ".',,,,
,
," . '.
"'q,,_.. ""c
".
". ,:;.
,
, ..'1 ,."
... ,,&I'- .
,
.. .. '.
" ,',
".:;
, " 'C!' , '..
' '...""/..:,.....!';."
l"f" ""'"
< ..,. ....
,-- '
.. ,.,: :,1,; "
" L\' ",,_ ""","'
.,
, . ',' " .'
' '. .,- -- ":
'" ',I,. ,',,',' i.- "..'!",
'J::.;,.;;.:;J. '.;.' .7

'j"/,:r
t.;? ;.. .

) 10
", ,r :', ,I ".'\'1:'.""
".L.\;,., ...,.... , .
' 'T'';''-t_..
.. .
.
:'1> . ';
.' .,:,.
",;,,'-'.',1.:., ....;;:,
:i:!
.. X1" "j""""
". ""'''','
t ,. ",,!,l:<
'. fl";;' :1' 'J.. ,'.
_'</" .. 1

".Iiii;.?:
"., ."\., .. '".<0:::,
"." '''' ''',' ..
';'",''' ".
.,..... "''''''.
"'(",."fi.- ... '.""""
"":l'h> ''M.,..!
!J'f:' "",..".
: :'2;":\' .
',' '.:JI,,;.!". :;.;;"';'..
, C;,,',..
' ". ,. , , ".
'I'I"J,'
""', '. "''','',,'
",.<1:' '1" \: .... '" "J;.,. __
.>. ",'i.' ...
!;f,l.r:
>c;' 1"'r'O'
" . ", '.
"l'";f., '"1" .. ,

.,j. '"
',.-., .
','{}:
'" ", 1 '."
" .. ' '-
' ,"" 'I""
> l..,; __ ','
"';'" ';" "
..
J
1
>;:,
, ,,;' ,
". '. I .' '.
.' . F".
'
. ." ...
"', .' .',,'.
:.","" '.1'- .;: ,,"
->., ':' i",::'.',
..,.,..
""'-""'1"'::;'
., ,

, ..
";...", .
A
z
= (XIJ'X2, .. ,x
n
)
Z :::: (Zl,Z2, ... ,Zm)
Y ; (Y1,Y',"'Y')
Y; (Yj,Y" .. v,)
L
r
.....
/"
s
R
C3 C,
C1
C(j
R-1
Risultata Carrunenta
0 1 0 0 0
;0+
elezione di B
0 1 0 0 1 S;0+B+1;B+1 Incremento
0 1 0 1 0
S;O+B;B
Complementazione
0 1 0 1 1 S ;0+1I+1;-B
Cambio segno
0 1 1 0 0 S;A+B
Somma
0 1 1 1 1 S;A+B+1;A-B
Difl'erenza
0 0 1 0 0
;A
R omma logica
1 - 1 0 -
S;AANDB
Pradotta logico
- i1 vettore delle variabili
- it vettore delle variabili d.i uscita:
- il vettore delle variabili di state presente:
- i1 vettore delle variabili di stato futuro:
Con X-ilYi,zi,Yi definite sull'insieme {OJ i}.
Una n-pla (X'l ,X2, . ,x
n
) c05tituisce una configurazione d'ingresso 0, pili sempli-
cemente, un ingresso. l' insieme delle N :;;;; 2
n
configurazioni d'ingresso c05tituisce
l'alfabeto d'ingresso I = {h J2 ,.. IN}; ogni configurazione h costituisce un simbolo
dell'alfabeta.
In FiguraA.25 viene riportato il modello del tutto generale di una.rete sequenzial.e.
Si definisce:
A.S Reti sequenziali
Figura A.24 II Latch eli NOR. ntermine anglosassooe Latch significa luccbetto, chiavistello
ed esprime, in modo figurato, il comportamento della rete.

In FiguraA.24, viene presentato il cosiddetto Latch di NOR. E facile verificare che se


ambedue gli ingressi valgono 1, su Z si puo avere sia 1 che O. Illatch di NOR e il piu
semplice esempio di rete sequenziale e la sua uscita dipende non solo dagli ingressi,
rna anche daBo stato.
536 Appendice A
Tabella A.3 Principali operazioni effettuate dalla ALl!
A.8.l Madella generale
I-
-
-
I
-
I
I -
1-
1
1-
I-
\
I -
1-
\
I -
1-
1-
) -
]
).
(A.5)
(A.7)
(A.S)
z=
zl
M;2
m
L; 2'
Sistemi digitali 537
can
caD
M ; (J,O,S,j,9)
foSxI-+O
9,SxI-+S
;{O"O" .. ,OM}
S ; {Sl,S'," ,Sd
1
.

n
ReI

yl Yl
Tl

y1
Tl
Yl
x
x
Analogamente si den.niscono gli alfabeti di uscita e di stato :
L'alfabeto di stato e finito, dunque la macchina ha una memoria finita. Di
cODsegueDza il simbalo di uscita dipeDde saltanta dagli ultimi k siml;>ali d'ingressa.
Per questo si parla anche di Macchine ovvero di Automi a Stati Finiti.
nmodello precedente, nel quale l'uscita efunzione d.i S e di I, viene detto modelio
di Mealy. Quando la relazione d1uscita e del tipo: f: S 0, si parla di modello 0
macchina di Moore.
La schema di Figura A.25 el'interpretazione di una rete compo5ta da porte (rac-
chiusa in ReI) e cia elementi di ritardo corrispondenti ai tempi di commutazione delle
porte sugli anelli di retroazione. n modello d.i FiguraA.25 indica chiaramente che 1a
rete 5equenziale 5i trova in uno stato stabile se il vettore Y che forma parte dell'uscita.
della rete combinatoria RCI e ugua1e al vettore y in presenza del vettore complessivo
d'ingresso a ReI dato cia (X,y). Be il vettore d'ingresso X cambia, ReI genera, con
tempo nullo, un nuovo vettore Z e un nuovo vettore Y. Se Y =j:. Y la rete ein uno
stato instabile. Senza perdere d.i generalita, si supponga che il ritardo sugH anelli di
retroazione sia uguale per tutti, e cioe: 11 = 1"2 :::: .. :::: 1', = 1". ,Dopo l'intervallo d.i
tempo I, y diventa uguale aYe, conseguentemente, appare un nuOVO vettore (X,y)
dove I, 0 e S sooo rispettivamente gli alfabeti d'iogresso, d.i uscita e di stato e f e 9
sono Ie due funzioni:
dove it simbolo Oi rappresenta un'uscita del sistema e il simbolo Si rappresenta uno
statO.
Si definisce Macchina Sequenziale la quintupla:
Figura. A.25 Modella generale di rete sequenziale.
,
"'0>
'

'1::"
',' .. ,
,.,. J' ......
>" "',
' ...
..", .,
!p;' . ." '!"
.. ,'. ...... '"
'. 'I"" l!" I
..
-,ilb "'1' ,
.,
""iff!:'!! " '"
'. ". ,
'Jo\:"'I'" h
'
0,
, "-.

,'.
"-:... '.' ",'""
."!"',!,"-- ' ,
." , ''r"f;:.,',
.- '1 ,'{.... :--:
.
,'" .
"'l
"\ '.' '/"", '.".
' ',( ",'i ".
"
.... "".,
, .. ': ,,'
'" , .
.. !.;' .... '-- ',.
' ';'
. "'['!f"'.
.' ''-Oi.''. "".'/
.. :""'"",
... : .,j.,
, ."
'
-"<;;.
.1., ..',.
",', .\' .! ;",
.,'.. '. '.
: I.'
-- "', rl\,' ., ".',,,,
,
," . '.
"'q,,_.. ""c
".
". ,:;.
,
, ..'1 ,."
... ,,&I'- .
,
.. .. '.
" ,',
".:;
, " 'C!' , '..
' '...""/..:,.....!';."
l"f" ""'"
< ..,. ....
,-- '
.. ,.,: :,1,; "
" L\' ",,_ ""","'
.,
, . ',' " .'
' '. .,- -- ":
'" ',I,. ,',,',' i.- "..'!",
'J::.;,.;;.:;J. '.;.' .7

'j"/,:r
t.;? ;.. .

) 10
", ,r :', ,I ".'\'1:'.""
".L.\;,., ...,.... , .
' 'T'';''-t_..
.. .
.
:'1> . ';
.' .,:,.
",;,,'-'.',1.:., ....;;:,
:i:!
.. X1" "j""""
". ""'''','
t ,. ",,!,l:<
'. fl";;' :1' 'J.. ,'.
_'</" .. 1

".Iiii;.?:
"., ."\., .. '".<0:::,
"." '''' ''',' ..
';'",''' ".
.,..... "''''''.
"'(",."fi.- ... '.""""
"":l'h> ''M.,..!
!J'f:' "",..".
: :'2;":\' .
',' '.:JI,,;.!". :;.;;"';'..
, C;,,',..
' ". ,. , , ".
'I'I"J,'
""', '. "''','',,'
",.<1:' '1" \: .... '" "J;.,. __
.>. ",'i.' ...
!;f,l.r:
>c;' 1"'r'O'
" . ", '.
"l'";f., '"1" .. ,

.,j. '"
',.-., .
','{}:
'" ", 1 '."
" .. ' '-
' ,"" 'I""
> l..,; __ ','
"';'" ';" "
..
J
1
>;:,
, ,,;' ,
". '. I .' '.
.' . F".
'
. ." ...
"', .' .',,'.
:.","" '.1'- .;: ,,"
->., ':' i",::'.',
..,.,..
""'-""'1"'::;'
., ,

, ..
";...", .
A
z
= (XIJ'X2, .. ,x
n
)
Z :::: (Zl,Z2, ... ,Zm)
Y ; (Y1,Y',"'Y')
Y; (Yj,Y" .. v,)
L
r
.....
/"
s
R
C3 C,
C1
C(j
R-1
Risultata Carrunenta
0 1 0 0 0
;0+
elezione di B
0 1 0 0 1 S;0+B+1;B+1 Incremento
0 1 0 1 0
S;O+B;B
Complementazione
0 1 0 1 1 S ;0+1I+1;-B
Cambio segno
0 1 1 0 0 S;A+B
Somma
0 1 1 1 1 S;A+B+1;A-B
Difl'erenza
0 0 1 0 0
;A
R omma logica
1 - 1 0 -
S;AANDB
Pradotta logico
- i1 vettore delle variabili
- it vettore delle variabili d.i uscita:
- il vettore delle variabili di state presente:
- i1 vettore delle variabili di stato futuro:
Con X-ilYi,zi,Yi definite sull'insieme {OJ i}.
Una n-pla (X'l ,X2, . ,x
n
) c05tituisce una configurazione d'ingresso 0, pili sempli-
cemente, un ingresso. l' insieme delle N :;;;; 2
n
configurazioni d'ingresso c05tituisce
l'alfabeto d'ingresso I = {h J2 ,.. IN}; ogni configurazione h costituisce un simbolo
dell'alfabeta.
In FiguraA.25 viene riportato il modello del tutto generale di una.rete sequenzial.e.
Si definisce:
A.S Reti sequenziali
Figura A.24 II Latch eli NOR. ntermine anglosassooe Latch significa luccbetto, chiavistello
ed esprime, in modo figurato, il comportamento della rete.

In FiguraA.24, viene presentato il cosiddetto Latch di NOR. E facile verificare che se


ambedue gli ingressi valgono 1, su Z si puo avere sia 1 che O. Illatch di NOR e il piu
semplice esempio di rete sequenziale e la sua uscita dipende non solo dagli ingressi,
rna anche daBo stato.
Sistemi digitali 539
J " L
Sj I I Si, Ojz
8
"
... -"' I. Iy I. ......
'"
"
..
"
"
"
'I
,;)
" "
" "
Sl
"J
Sl.
"
"
-
"
SI,Oi}' {Sj,Oj
'---'
Iz.Ojz
SI Sl
I,
"
IV I Ix
'1,
"
L'interpretazione eche la rete in presenza della state Sj e dell'ingresso si porta
nella state e genera l'uscita OJ:. Vale 13 pena di.rimarcare che OJ: el'uscita che si
ha neUo stato Sj e can ingresso I:. mentre Si e10 stato in cui si trovera a transizione
effettuata a partire da Sj can Pingresso
ncase di madella di Moore eschematizzato in Figura A.28.. nsimbola di uscita si
trascrive nel cerchio accanto al nome dello stato, mentre 1a tabella d.i flusso si moelifica
in quanta per l'uscita basta scorporare un vettore di L = 2' posizioni.
Figura A.28 Rappresentazione delle uscite col modello di Moore.
-I [,
Figura A.27 Rappresentazioae delle uscite col modello di Mealy.
SuI diagramma di stato e sulla tabella di flusso si riportano anche Ie uscite della
rete. Bisogna perc distinguere tra il modella di Mealy e il madelia Qi Moore. Nel caso
di modello di Mealy Ia rappresentazione equella di FiguraA.27.
tal (b)
Figura A.26 Diagrammi di stato e tabelle di Russo: a) esempio di (parte di) diagramma
di stato; b) tabella di Busso corrispondente.
;
I ,li"
, 1/0'....
.. ',...,
','
,
,'.-
'.:r"i' +\!1,,:r:

.'in,j'
7J.... I.l'><;"
..
'"r
,," ... ,..
..
..\" 1 ..
" '," ,:;
'.
"' ..'t.,,""".....-.
... '1 "
-., ...
.. J t"."
'.1_.,.(.,.. -il'-!-.,;"
- ...
......".....,- "r"
., .. . .,.."
,,,0,,,,,,,1,'" ,.-'
' ...... ...l' ,f",
;'.: ;'.1 .
" ""-'
'. ,j.

-
. ': .. >
", ...''',.....1, ,,'
".' t
.,
\.'. ....
r .,t.
,'.- 1.- ".:. ,., ,
.' A -"""''!-'' .
", '
...... "
.,'
.
..
:<-. -
. ...to
, 1""\1;" . ',' ..--, .'
'," j";", . ',-,,-"
. no, 'c'
-,'.<;-;"'.l. '.{: ,!ol .
:-t' .... ,
" >'1,1'" ;)1.. '1."
.' .,.
',)J ."'!j.' .'
.,.., l' ..
..,'." "
..' ,'. ''''1'
"'1'" t'l .'lI'"
. .,. .." l'i ..
" ',,.--.:' .
... ... - ", \( .. ..., .;,-." .. '
:,:] ,,!1 "
,
.. "..'

.. '.. '@'I\,l;_{'...;:r:::'
,L',',l, 'n,,,-'l, '!iii')""-.'

.'., -.i!.' '1:"
,,'. ;,..... ::.i-.."

...
-',
.
,."r!
"','" .," ).. ",'
- . .
.... ",':'" .
.'--'l"*J:",..-r.r .,',,"
.
,,,...,. .
t . 'l: "'."'1'
.;i:<- .',
.. '
'; I,; .,I'i':
", ":"1';"'" I' 'j,
-
.. :.'.-mt ',/'- "f'
",.' ..
...,
L" ... ,,.,,1. ..'"
,'. . .. h ,,,,,, , ..

:
'1 ,;' t :"'" i=.Ir>;
,l1"l" , .
'Off">'" .
.. .. ,." (
." ',,". ,J ..... ,,,O,I. I1, ll,.
",\.-w.".' .'
.... ,,;


.
... >("
....{r::... " .
, ""'C',.;.-1';,.
, ' .' -., ..
'., .. .,("
-,'. ..-." '-;1' .
.'

, . '"t,-,'J:'.", '. J.;,
'::
-. .
',n ..'1<,\

...., . ". "'-,.j.
,'.
'/' ;"'-r.
"','
>:0'.
,.> '
,.",'''' ".
.
..

,
", ..
',,-
' .. -'. --, ...... , .. "
.."' .":'c,"
; ..
:.

,)"
u;
:.
Jlil'7"
" ,.,.-S., . .,'j"
, '<. "",.'
.
: 1
, ''-'


, :;;.,..
. ... ..
.. ..' .". .'
I 'I .' .
..>1"._.... ,
. '1'"
. ....
.
.' ." ,. "'
.' .... -- ,
:";'.'!'f .
0= f(I,Sp) (A.B)
Sf = g(1,Sp) (A.9)
dove la prima indica che il simbolo di uscita edeterminato dal simbolo d'ingresso e
claUo stato (presente) della rete, mentIe la seconda dice che, 'con it simbol0 d'ingresso
I, la rete si portera. dallo stato presente Sp alio'stato futuro Sf.
Un diagramma di stato eun grafo orientato in cui i nodi rappresentano gli stati
della rete, mentre gli archi rappresentano Ie transizioni. Un framrnento di diagramma
di stato eriportato in FiguraA.26a. Essa indica che se la rete e nello stato Sj, vi
resta fintanto we I = /z. Se a partire dallo stato S,. I'ingresso diventa I
z
1a rete si
porta nella stato Sj e vi rimane per tutto il tempo in cui I = Dallo stato Sj la
rete torna in S, se l'ingresso ridiventa I:, mentre se l'ingresso diventa I'll la rete passa
attraverso uno stato instabile Sk e quindi si porta nello stato stabile St. Da Si. se
l'ingresso diventa I
VI
la rete 5i porta in un qualcbe altro stato non indicata in figura.
n diagramma degli statioffre una rappresentazione molto intuitiva, rna it suo
contenuto non eformalmente elaborabile. Per questa motivo si ricorre aile tabelle di
BussaI traduzione tabellare dei diagrammi d.i stata, facilmente riconducibili a funzieni
booleane in forma tabellare.
n frarpmento eli diagramma di stato eli Figura A.26a estato riportato nella cor-
rispondente tabella di f1usso <Ii FiguraA.26b. Nelle tabelle di Russo di reti asincrone
5i usa cerchiare Ie caselle che corrispondono a condizioni di stabilita.. Per esempio,
10 stato Sj estabile rispetto a mentre einstabile rispetto a Iv e /z (si veda
Figura A.26).
A.8.2 Rappresentazione delle funzioni di stato e uscita
Ci sono due modi per descrivere il comportamento delle macchine a stati finiti: i
diagrammi di state e Ie tabelle eli flusso. In ambedue i casi si tratta di dare una
descrizione delle due funzioni f e 9 che definiscono l'automa e che qui vengono riscritte
come:
in ingresso a ReI. Se
,
per effetto di questa vettore d'ingresso Y non varia, la rete ha
raggiunto uno stato stabile.
E possibile cbe il raggiungimento dello stato stabile ricbieda 11 passaggio attra-
verso una sequenza di stati instabili, rna si cleve assurnere che, per un dato ingresso, lao
rete raggiunga comunque uno stato stabile. Si assume inoltre che per tutto il tempo
richiesto per arrivare al nuovo stato stabile il vettore di ingresso non varL
La precedente discussione e stata riferita al madella di FiguraA.25, dove e'e
una rete combinatoria con tempi d.i cammutazione nu11i e dove tutti i ritardi sano
concentrati sugli anelli di retroazione. E evidente che, tolti gli elementi di ritardo e
riportata la rete combinatoria a una rete reale, il madella di FiguraA.25 costituisce
10 schema di principia d.i una rete sef[Uenziale asincrona.
La rete viene detta asincTona perwe essa reagisce immediatamente alle variazioni
dell'ingresso, portandosi nella stato (futuro) previsto dalla funzione di transizione di
stato. Piu avanti verranno introdotte Ie reti sincrone, nelle quali gli ingressi sono
campionati a istanti precisi e i cambiamenti eli state avvengono solo in corrispondenza
del campionamento degli ingressi.
538 Appendice A
\
1
\
I
\
\
\
\
I
I
I
I

-
-
-
-
.-
Sistemi digitali 539
J " L
Sj I I Si, Ojz
8
"
... -"' I. Iy I. ......
'"
"
..
"
"
"
'I
,;)
" "
" "
Sl
"J
Sl.
"
"
-
"
SI,Oi}' {Sj,Oj
'---'
Iz.Ojz
SI Sl
I,
"
IV I Ix
'1,
"
L'interpretazione eche la rete in presenza della state Sj e dell'ingresso si porta
nella state e genera l'uscita OJ:. Vale 13 pena di.rimarcare che OJ: el'uscita che si
ha neUo stato Sj e can ingresso I:. mentre Si e10 stato in cui si trovera a transizione
effettuata a partire da Sj can Pingresso
ncase di madella di Moore eschematizzato in Figura A.28.. nsimbola di uscita si
trascrive nel cerchio accanto al nome dello stato, mentre 1a tabella d.i flusso si moelifica
in quanta per l'uscita basta scorporare un vettore di L = 2' posizioni.
Figura A.28 Rappresentazione delle uscite col modello di Moore.
-I [,
Figura A.27 Rappresentazioae delle uscite col modello di Mealy.
SuI diagramma di stato e sulla tabella di flusso si riportano anche Ie uscite della
rete. Bisogna perc distinguere tra il modella di Mealy e il madelia Qi Moore. Nel caso
di modello di Mealy Ia rappresentazione equella di FiguraA.27.
tal (b)
Figura A.26 Diagrammi di stato e tabelle di Russo: a) esempio di (parte di) diagramma
di stato; b) tabella di Busso corrispondente.
;
I ,li"
, 1/0'....
.. ',...,
','
,
,'.-
'.:r"i' +\!1,,:r:

.'in,j'
7J.... I.l'><;"
..
'"r
,," ... ,..
..
..\" 1 ..
" '," ,:;
'.
"' ..'t.,,""".....-.
... '1 "
-., ...
.. J t"."
'.1_.,.(.,.. -il'-!-.,;"
- ...
......".....,- "r"
., .. . .,.."
,,,0,,,,,,,1,'" ,.-'
' ...... ...l' ,f",
;'.: ;'.1 .
" ""-'
'. ,j.

-
. ': .. >
", ...''',.....1, ,,'
".' t
.,
\.'. ....
r .,t.
,'.- 1.- ".:. ,., ,
.' A -"""''!-'' .
", '
...... "
.,'
.
..
:<-. -
. ...to
, 1""\1;" . ',' ..--, .'
'," j";", . ',-,,-"
. no, 'c'
-,'.<;-;"'.l. '.{: ,!ol .
:-t' .... ,
" >'1,1'" ;)1.. '1."
.' .,.
',)J ."'!j.' .'
.,.., l' ..
..,'." "
..' ,'. ''''1'
"'1'" t'l .'lI'"
. .,. .." l'i ..
" ',,.--.:' .
... ... - ", \( .. ..., .;,-." .. '
:,:] ,,!1 "
,
.. "..'

.. '.. '@'I\,l;_{'...;:r:::'
,L',',l, 'n,,,-'l, '!iii')""-.'

.'., -.i!.' '1:"
,,'. ;,..... ::.i-.."

...
-',
.
,."r!
"','" .," ).. ",'
- . .
.... ",':'" .
.'--'l"*J:",..-r.r .,',,"
.
,,,...,. .
t . 'l: "'."'1'
.;i:<- .',
.. '
'; I,; .,I'i':
", ":"1';"'" I' 'j,
-
.. :.'.-mt ',/'- "f'
",.' ..
...,
L" ... ,,.,,1. ..'"
,'. . .. h ,,,,,, , ..

:
'1 ,;' t :"'" i=.Ir>;
,l1"l" , .
'Off">'" .
.. .. ,." (
." ',,". ,J ..... ,,,O,I. I1, ll,.
",\.-w.".' .'
.... ,,;


.
... >("
....{r::... " .
, ""'C',.;.-1';,.
, ' .' -., ..
'., .. .,("
-,'. ..-." '-;1' .
.'

, . '"t,-,'J:'.", '. J.;,
'::
-. .
',n ..'1<,\

...., . ". "'-,.j.
,'.
'/' ;"'-r.
"','
>:0'.
,.> '
,.",'''' ".
.
..

,
", ..
',,-
' .. -'. --, ...... , .. "
.."' .":'c,"
; ..
:.

,)"
u;
:.
Jlil'7"
" ,.,.-S., . .,'j"
, '<. "",.'
.
: 1
, ''-'


, :;;.,..
. ... ..
.. ..' .". .'
I 'I .' .
..>1"._.... ,
. '1'"
. ....
.
.' ." ,. "'
.' .... -- ,
:";'.'!'f .
0= f(I,Sp) (A.B)
Sf = g(1,Sp) (A.9)
dove la prima indica che il simbolo di uscita edeterminato dal simbolo d'ingresso e
claUo stato (presente) della rete, mentIe la seconda dice che, 'con it simbol0 d'ingresso
I, la rete si portera. dallo stato presente Sp alio'stato futuro Sf.
Un diagramma di stato eun grafo orientato in cui i nodi rappresentano gli stati
della rete, mentre gli archi rappresentano Ie transizioni. Un framrnento di diagramma
di stato eriportato in FiguraA.26a. Essa indica che se la rete e nello stato Sj, vi
resta fintanto we I = /z. Se a partire dallo stato S,. I'ingresso diventa I
z
1a rete si
porta nella stato Sj e vi rimane per tutto il tempo in cui I = Dallo stato Sj la
rete torna in S, se l'ingresso ridiventa I:, mentre se l'ingresso diventa I'll la rete passa
attraverso uno stato instabile Sk e quindi si porta nello stato stabile St. Da Si. se
l'ingresso diventa I
VI
la rete 5i porta in un qualcbe altro stato non indicata in figura.
n diagramma degli statioffre una rappresentazione molto intuitiva, rna it suo
contenuto non eformalmente elaborabile. Per questa motivo si ricorre aile tabelle di
BussaI traduzione tabellare dei diagrammi d.i stata, facilmente riconducibili a funzieni
booleane in forma tabellare.
n frarpmento eli diagramma di stato eli Figura A.26a estato riportato nella cor-
rispondente tabella di f1usso <Ii FiguraA.26b. Nelle tabelle di Russo di reti asincrone
5i usa cerchiare Ie caselle che corrispondono a condizioni di stabilita.. Per esempio,
10 stato Sj estabile rispetto a mentre einstabile rispetto a Iv e /z (si veda
Figura A.26).
A.8.2 Rappresentazione delle funzioni di stato e uscita
Ci sono due modi per descrivere il comportamento delle macchine a stati finiti: i
diagrammi di state e Ie tabelle eli flusso. In ambedue i casi si tratta di dare una
descrizione delle due funzioni f e 9 che definiscono l'automa e che qui vengono riscritte
come:
in ingresso a ReI. Se
,
per effetto di questa vettore d'ingresso Y non varia, la rete ha
raggiunto uno stato stabile.
E possibile cbe il raggiungimento dello stato stabile ricbieda 11 passaggio attra-
verso una sequenza di stati instabili, rna si cleve assurnere che, per un dato ingresso, lao
rete raggiunga comunque uno stato stabile. Si assume inoltre che per tutto il tempo
richiesto per arrivare al nuovo stato stabile il vettore di ingresso non varL
La precedente discussione e stata riferita al madella di FiguraA.25, dove e'e
una rete combinatoria con tempi d.i cammutazione nu11i e dove tutti i ritardi sano
concentrati sugli anelli di retroazione. E evidente che, tolti gli elementi di ritardo e
riportata la rete combinatoria a una rete reale, il madella di FiguraA.25 costituisce
10 schema di principia d.i una rete sef[Uenziale asincrona.
La rete viene detta asincTona perwe essa reagisce immediatamente alle variazioni
dell'ingresso, portandosi nella stato (futuro) previsto dalla funzione di transizione di
stato. Piu avanti verranno introdotte Ie reti sincrone, nelle quali gli ingressi sono
campionati a istanti precisi e i cambiamenti eli state avvengono solo in corrispondenza
del campionamento degli ingressi.
538 Appendice A
\
1
\
I
\
\
\
\
I
I
I
I

-
-
-
-
.-
Si consideri la rete di FiguraA.29) nella quale al latch di NOR sono state aggiunte
due porte AND e un ulteriore ingresso.
I.) (b)
Figura A.29 Trasforma.zione del latch di NOR in flip-flop sincrono: a) schematizzazione;
b) possibili andamenti temporali dei segnali.
1
1.
)
J
-
\
).
1-
\
I.
).
].
)
).
1.
1.
(A.l1)
. .
- - -- ..
I a 0 1 1
I L 0 0 L
(A.12)
(e)
b) tabella della stata futuro b); c)
JK
,..I CI"ok n I C",k n+ I I
, __
I I
y' = S + Ry
y
,
Ck
R
s
J K y'
J
,
a a y
---l> ok a L a
L I
Y
K
,
I 0 I
y' = yJ +yK
(oj (b)
Figura A.31 n flip-flop JK: a) simbolo schematicoj
mappa dello stato futuro.
n' flip-flop JK Malta simile at flip-flop Set-Reset (FFSR) eil Ilip-flop JK (FFJK)
schematizzato in FiguraA.31a. ncomportamento eidentico per gli ingressi 00, 01 e
10, mentre per Pingresso 11 FFJK cambia sempre stato. n comportamento del FFJK
edescritto dalla tabella di FiguraA.31b, alla quale corrisponde la mappa di Karnaugh
di Figura A.31c e da cui si deriva:
dove y' e10 stato in cui 5i trava il flip-flop, sull'ir:;npulso successivo a queUo Stl cui si
trovava in y.
Sistemi digitali 541
per indicare che 10 stato in cui si trovera. it flip-flop sull'impulso n+L esimo dipende
dallo stato in cui il flip-flop si trovava sull'impulso n..mo e dai valori di S e R su tale
impulso.
II concetto esottile emerita di essere ulteriormente discusso. A tal fine si faccia
riferimento alIa FiguraA,30b. Vimpulso n_
mo
inizia all'istante t
n
; a tale istante
10 stato del flip-flop (conseguente alIa storia passata) e y(n). Durante Ll
1
a causa
dell'ingresso (S,R), che per ipotesi non varia entro .:11, il flip-flop cambia stato e si
porta in y(n+l). Lo stato y(n+l) si mantiene fino all'(n + l)-ma impulso di clock.
Ovvero, 16 stato ip' cui si trova il flip-flop sullo (n + I)_ma impulso di clock deriva
dallo stato in cui si trovava sullo n_
ma
e dal conseguente ingresso.
Frequentemente al posta dellaA.lO si usa 1a notazione semplificata:
.-JI II IL
f'r't-
Figura A.30 Schema convenzionale del flip-flop SR siDcrono e interpretazione dello stato
presente e dello stato futuro rispetto a s1Jcceisivi impulsi di Clock.
(A.tO)
quando si parlera dei Rip-flop si
,--- 1
y(n+l) = S + Ry(n)
s r-J I 1 rL-IlL. _
R !VI I L
Cll n n n n,-_
,
-
,
,
Appendice A


.J>-l I-
L ,
r

,..

"
90'ora in avanti, a menD di indicazione contraria esplicita,
intendera parla.re di Rip-flop sincroni.
11 flip-flop SR La rete di FiguraA.29 costituisce, seppure in forma rudimentale (si
veda pili avanti), un flip-flop SRsincrono. nFFSR sincrono viene schematizzato come
in FiguraA.30
9
.
Ovviamente la funzione di transizione dello stato di FFSR sincrono resta quella
di FFSR asincrono. Tuttavia enecessario mettere in evidenza iI fatto che l'attivita
del flip-flop procede per eventi discreti. A tal fine si USa indicare con y 1a
variabile di stato e si scrive:
",," ,

. ' '.
- ,.:,'i<i..r- .'\$\t.:
I"j ,.,"' ....
I' ,.
- :,' J;.,':'
..
.,
" ,.
'. .... ,
- "fIIl
- ' ....'1.: ,,1''''
1'1 ... ,
.... .. ,
., , 1,
, '.' . ', .....

, I
, ,
'..
.... ..
";t
IT'
.f:,'.,':' '
:,,',., ,
:-;"X'\.'I".i-",'
:
- .
_: ,''';''1<':' '.'!
.. ' ,""
,;.,i- ::;",,,II,! ;:",,' '
:.'.: ' /' ;'.:.\
;!o''' J ," '""ll
....,,, '., ,
-.,.,' ......: ,W "-'

..<....,.
""";'
, />, '>1', ::: '.
_ ".':1 ,i':, ,
",,, ....,
""'M,lt ,
.. :::. "
'.", ;. , ..,

..
.. , ...... """"'"

>,;..
. --; " t "r,. ..OloJ "_

_,-"".:>0" ",/. "'.,
-"',,.'."-
".
.... ,... , '"li,,,'flj-'"

;,

. _
, . ... . .
E faCIle convmcerSI che quando 11 segnale Ck vale zero, 51 ha che SI :;::; 0 e R
1
== 0,
indipendentemente dal valore di S e di R. In altri termini it latch non cambia stato
se = O. invece Ck = 1 po:te AND sono a S e
R, 11 ha m In 51 ha,un
di POSS1blli andamentl temporah. che saranno m segUlto)
il segnale eke oormalmente un segnale penodlco. Anche se non eessenzlale che Ck _"'j..
sia periodico, questa assunzione 5emplifica l'esposizione dei concetti che seguono. Per
tale motivo esso viene denominato clock) a indicate che il successive passaggio a 1 del
segnal.e .Ck, del tempo. .. -
Sl mdlchl con T il penodo dl Ck, con ..::1 1 la frazlOne pI T durante la Quale
Ck == 1 e con ..6.2 la di T la quaIe qk == O. Si inolt:e Pipotesi
che durante l'mtervallo .6. 1 I, S e R non vanno e che ..::1 1 Sla .suffklente a far - ... :
completare I'e:,en.tuale translZIOne dt state del se eprevIsta. ;
La rete dl FlguraA.29a ba questa carattenshca: eaaa al accorge della presenza
di un ingresso di Set 0 d.i solo in corrispondenza degli d.i tempo in cui
Ck = 1. In altre parole) l'agglUDta delle due porte AND e del segnale Ck ha permesso' :
di sincronizzare Pattivita. del latch rispetto a1 segnale Ok. ,::',h#;-'nfflrt.'
C
ff . Ii I t' di . fl' fl .I ",','!. !to",
onVlene so ermarsl sug e emen 1 memOrIa a 'Lp- op.


" ,v"."., "
,r ,'" '"....;'r ..
,S..",."., 0.'
,u,
- ",.,. ,ti\--
!, ...... ,."-
..,-n' ,'r ,',
... .
.. '".,,:,..,.. '
(!i.t I, '
'I
.' 'I'
",,:"J,... ')fi"
, ",.,1 ......... .',:' '
'" ,.::t,-., J..,;r..
, .t I',
, ;;.: f '
).":.1;1 .
-,;':,NM' :1':;-,..
,1" ..-,'-':
" .".'" ... ':e 1,;_.
.,
'.\.,'.. : '
, ,,(.,'>,1,,,:, :J.Q....; .
,.'..... \ ..,
,t;
", .'" ,_ '; Jl.. ,
.. 'rq"f!W.:
... "" I .Y
-,-,
,.... !t.,
,:.,,1;", "';_" , '
".:"\':,'...,.: '. it,
I" ' ." ..
-. ;!r,;l.
. . ,.;:m,'.1
.' ',;0"'"'' 1f.:I-"
.......
A.9 Sincronizzazione
540
Si consideri la rete di FiguraA.29) nella quale al latch di NOR sono state aggiunte
due porte AND e un ulteriore ingresso.
I.) (b)
Figura A.29 Trasforma.zione del latch di NOR in flip-flop sincrono: a) schematizzazione;
b) possibili andamenti temporali dei segnali.
1
1.
)
J
-
\
).
1-
\
I.
).
].
)
).
1.
1.
(A.l1)
. .
- - --
..
I a 0 1 1
I L 0 0 L
(A.12)
(e)
b) tabella della stata futuro b); c)
JK
,..I CI"ok n I C",k n+ I I
, __
I I
y' = S + Ry
y
,
Ck
R
s
J K
y'
J
,
a a y
---l> ok
a L a
L I
Y
K
,
I 0 I
y' = yJ +yK
(oj (b)
Figura A.31 n flip-flop JK: a) simbolo schematicoj
mappa dello stato futuro.
n' flip-flop JK Malta simile at flip-flop Set-Reset (FFSR) eil Ilip-flop JK (FFJK)
schematizzato in FiguraA.31a. ncomportamento eidentico per gli ingressi 00, 01 e
10, mentre per Pingresso 11 FFJK cambia sempre stato. n comportamento del FFJK
edescritto dalla tabella di FiguraA.31b, alla quale corrisponde la mappa di Karnaugh
di Figura A.31c e da cui si deriva:
dove y' e10 stato in cui 5i trava il flip-flop, sull'ir:;npulso successivo a queUo Stl cui si
trovava in y.
Sistemi digitali 541
per indicare che 10 stato in cui si trovera. it flip-flop sull'impulso n+L esimo dipende
dallo stato in cui il flip-flop si trovava sull'impulso n..mo e dai valori di S e R su tale
impulso.
II concetto esottile emerita di essere ulteriormente discusso. A tal fine si faccia
riferimento alIa FiguraA,30b. Vimpulso n_
mo
inizia all'istante t
n
; a tale istante
10 stato del flip-flop (conseguente alIa storia passata) e y(n). Durante Ll
1
a causa
dell'ingresso (S,R), che per ipotesi non varia entro .:11, il flip-flop cambia stato e si
porta in y(n+l). Lo stato y(n+l) si mantiene fino all'(n + l)-ma impulso di clock.
Ovvero, 16 stato ip' cui si trova il flip-flop sullo (n + I)_ma impulso di clock deriva
dallo stato in cui si trovava sullo n_
ma
e dal conseguente ingresso.
Frequentemente al posta dellaA.lO si usa 1a notazione semplificata:
.-JI II IL
f'r't-
Figura A.30 Schema convenzionale del flip-flop SR siDcrono e interpretazione dello stato
presente e dello stato futuro rispetto a s1Jcceisivi impulsi di Clock.
(A.tO)
quando si parlera dei Rip-flop si
,--- 1
y(n+l) = S + Ry(n)
s r-J I 1 rL-IlL. _
R !VI I L
Cll n n n n,-_
,
-
,
,
Appendice A


.J>-l
I-
L ,
r

,..

"
90'ora in avanti, a menD di indicazione contraria esplicita,
intendera parla.re di Rip-flop sincroni.
11 flip-flop SR La rete di FiguraA.29 costituisce, seppure in forma rudimentale (si
veda pili avanti), un flip-flop SRsincrono. nFFSR sincrono viene schematizzato come
in FiguraA.30
9
.
Ovviamente la funzione di transizione dello stato di FFSR sincrono resta quella
di FFSR asincrono. Tuttavia enecessario mettere in evidenza iI fatto che l'attivita
del flip-flop procede per eventi discreti. A tal fine si USa indicare con y 1a
variabile di stato e si scrive:
",," ,

. ' '.
- ,.:,'i<i..r- .'\$\t.:
I"j ,.,"' ....
I' ,.
- :,' J;.,':'
..
.,
" ,.
'. .... ,
- "fIIl
- ' ....'1.: ,,1''''
1'1 ... ,
.... .. ,
., , 1,
, '.' . ', .....

, I
, ,
'..
.... ..
";t
IT'
.f:,'.,':' '
:,,',., ,
:-;"X'\.'I".i-",'
:
- .
_: ,''';''1<':' '.'!
.. ' ,""
,;.,i- ::;",,,II,! ;:",,' '
:.'.: ' /' ;'.:.\
;!o''' J ," '""ll
....,,, '., ,
-.,.,' ......: ,W "-'

..<....,.
""";'
, />, '>1', ::: '.
_ ".':1 ,i':, ,
",,, ....,
""'M,lt ,
.. :::. "
'.", ;. , ..,

..
.. , ...... """"'"

>,;..
. --; " t "r,. ..OloJ "_

_,-"".:>0" ",/. "'.,
-"',,.'."-
".
.... ,... , '"li,,,'flj-'"

;,

. _
, . ... . .
E faCIle convmcerSI che quando 11 segnale Ck vale zero, 51 ha che SI :;::; 0 e R
1
== 0,
indipendentemente dal valore di S e di R. In altri termini it latch non cambia stato
se = O. invece Ck = 1 po:te AND sono a S e
R, 11 ha m In 51 ha,un
di POSS1blli andamentl temporah. che saranno m segUlto)
il segnale eke oormalmente un segnale penodlco. Anche se non eessenzlale che Ck _"'j..
sia periodico, questa assunzione 5emplifica l'esposizione dei concetti che seguono. Per
tale motivo esso viene denominato clock) a indicate che il successive passaggio a 1 del
segnal.e .Ck, del tempo. .. -
Sl mdlchl con T il penodo dl Ck, con ..::1
1
la frazlOne pI T durante la Quale
Ck == 1 e con ..6.2 la di T la quaIe qk == O. Si inolt:e Pipotesi
che durante l'mtervallo .6.
1
I, S e R non vanno e che ..::1
1
Sla .suffklente a far - ... :
completare I'e:,en.tuale translZIOne dt state del se eprevIsta. ;
La rete dl FlguraA.29a ba questa carattenshca: eaaa al accorge della presenza
di un ingresso di Set 0 d.i solo in corrispondenza degli d.i tempo in cui
Ck = 1. In altre parole) l'agglUDta delle due porte AND e del segnale Ck ha permesso' :
di sincronizzare Pattivita. del latch rispetto a1 segnale Ok. ,::',h#;-'nfflrt.'
C
ff . Ii I t' di . fl' fl .I ",','!. !to",
onVlene so ermarsl sug e emen 1 memOrIa a 'Lp- op.


" ,v"."., "
,r ,'" '"....;'r ..
,S..",."., 0.'
,u,
- ",.,. ,ti\--
!, ...... ,."-
..,-n' ,'r ,',
... .
.. '".,,:,..,.. '
(!i.t I, '
'I
.' 'I'
",,:"J,... ')fi"
, ",.,1 ......... .',:' '
'" ,.::t,-., J..,;r..
, .t I',
, ;;.: f '
).":.1;1 .
-,;':,NM' :1':;-,..
,1" ..-,'-':
" .".'" ...
':e 1,;_.
.,
'.\.,'.. : '
, ,,(.,'>,1,,,:, :J.Q....; .
,.'..... \ ..,
,t;
", .'" ,_ '; Jl.. ,
.. 'rq"f!W.:
... "" I .Y
-,-,
,.... !t.,
,:.,,1;", "';_" , '
".:"\':,'...,.: '. it,
I" ' ." ..
-. ;!r,;l.
. . ,.;:m,'.1
.' ',;0"'"'' 1f.:I-"
.......
A.9 Sincronizzazione
540
542 Appendice A
A.I0 Reti sequenziali sincrone
II flip-flop D nflip-flop D (da Delay) realizza un blocco dl ritardo pari al periodo del
clock T. L'ingresso a FFD ela materializzazione del suo state futuro. L'equazioDe di
transizione della stato ebanalmente

543
o
Sistemi digitali
_I I,
,J,'''W .t-
ot 'I ,r-
L'uscita del flip-flop viene riportata in ingresso
o
y

RC
Element!
,I
di
yn
r-
memOrIa
Clock
I
I
I
s
RC R
SFF

Clock
Si indichi con L1pp il tempo rich..iesto dal flip-flop e con L1c quello richiesto dalla
rete combinatoria per commutare. Si suppenga che l'ingresso I sia stabile da prima
del passaggio a 1 del clock e che resti stabile per tutto Ll
1
.
Dopa fjp F dal fronte di salita, se S e R hanno valori cODvenienti rispetto aile state
del FF, si attua il cambiamento di state. A quel punto,e possibile che, pur restando
Figura A.35 Rete sequenziale smerana.
alIa paxte combinatoria
A.IO.I Flip-flop Master-Slave
Si faccia riferimento aHa rete di FiguraA.35, nena quale e rnessa in evidenza la pre-
senza di un FFSR. Vogliamo mostrare che un flip-flop, realizzato come queUo in
FiguraA.29, introduce un serio inconveniente.
Figura A.34 Evidenziazione degli elementi di memoria in una rete smerona..
Prima di esaminare nel dettaglio i1 comportamento delle reti sincrone occorre,
tuttavia, spendere ancora alcune parole sui flip-flop.
.
'."1.::''''
.I"""l

.I-'"
. 110('"
...
,., ""
:;.
,:If:
.,'d'
.,
r.ete. di A.33. cambia sol? in. co.rrispondenza degli impulsi di clock.
: 'r. .IhW;'. Non SI nchlede pm che 1a rete combmatona Sla Ideale: come vedrema al paragrafo
seguente, basta solo che i tempi di commutaziane di RC e 1a frequenza del.clock stiano
nella giusta Ovviame:nte efacile generalizzare 10 schema di
. lo .stato (ClOe la della eB:ser.e vanablh
dl stato dl qualunque tlPO dl Sl model1? dl PlguraA.34
composto da: (a) una rete CUI usclta e dell'lllgreSS? I e della
. stato presente; e (b) da un IllSleme dl flip-flop deputatl alla rappresentazlone dello
h .. "., stato
.," .... ,
; ',)".,"" ."".... '. . .
"._ '''f.,F "1""\"
.. \
' " . .. "'" "','.<
.. ': \
.. , .-..

.'",,:
",.; .. ..
, , I" ,"-".
'1, ", ,.,
.q, ".,." ." ,
".' .:'11. ','t.)
".'''''' I" cO' " .
.:\: .,;r
....... . .
,>, ,
....t\ ,,".'
.. l;j. ";;,

.... ' ;,itl
,'s , .....
" ".. , ....., ..".
""1<"',\:",
I' ., ...'. . h
_" . .

"'''.''
'


': ,i" u;:f '
'-\.\"': ,,".
, . !:;:,-
.,. II ".").,'1>. fl."",
.,
IM""\' ." Jl..,...,. ,

... ".',: ,'. "
',',
." \""';, ",' 1 iii"
".1'''.Jh.,' ....
:,I"I'I"!"'f\' ',11 .
...Ilii .:'1' '
",;.'0\:1";',., "',,1.
'/l:';
.....

,""1
1
)" 1h"
l .

I, ,\'"4:,iC!
''; '1' 'tlp,.t
.. lit;i?:r(

",', ;:'lfi'\,
,,;.. .. "..
..' . :
",
,...:.'." \ ".;, .
...Jh
"fo'.',:),.:.';I( . ".,
{ 'h: .-C
: , I..)'" rr.-\liit.,:
.;0
.' ,'.";",i.
l.
.,....
>f:'il,r
, '
4'01:;.-'"
,.,
'''';''''/'''ifl' 'J'
"',:,' .'1:':
"",,"': ,';'.. '
, "1"" ...
.'t:,.,'"
.!\\I, "1"",'"
""" . '
""',:",'!{ {t'.',,'
". ,. ,"....
,.,,,.; !'; :'.1'"
"..
'. " ". 'i'w, ,
.: ;'., ,'!1u ,"
, .. '
,;. ".:t,..,,<: .. ,,

I .....-.;

:' .. ..
.. ,":"' .
,(:-... ,;
i:.P
, fiit
' .. >,.. '

'
, ,.',.:,
''1'' " .,' ",
.(I'J,; il
,,,.,, ..
.. ,;: ;, '';'"
, -, '...
.... ".
.:' '0;\1'"
'i\c......l.. ;L'
- h . '_
..". . ,..,'. . .. "
.,'......... .i',
(A.13)
,
,
o
T
b) FFT
----1I>Ck
y' = D


RC



;-
-'
,1 ,'1
QD
.
yn . y'n
Q.D
Clock
,
,
I
D
--IfCk _I
nsimbolo del flip-flop ein Figura A.32a. Vale la pena <Ii rimarcare che y', 10 stato
futuro, e10 stato che si avra. nel prossimo impulso di clock in conseguenza dell'ingresso
campionato dall'impulso corrente.
a) FFD
Figura A.32 &hemi convenzionali di FFD e di FFT
Figura A.33 Modello di rete sequenziale smerona.
Nel madelia d.i FiguraA.25 gil elementi Ti introducono ritardi potenzialmente diffe-
reoti, la. cui genesi era davuta ai differenti tempi di commutazione sui vari percorsi
seguiti dai segnali. Se ora. si immagina di sostituire gli elementi Ti con altrettanti
FFD e si suppone che tutti questi vengano azionati dal medesimo clock, il madello di
FiguraA.25 si trasforma nella rete sequenziale sinerona come quella di FiguraA.33.
II flip-flop T nflip-flop T (da Trigger) eschematizzato in Figurak32b. FFT cambia
Jltato quando l'ingresso T vale 1 e testa nella stesso stato se l'ingresso e O. Cia'
comporta questa equazione eli transizione di stato:
y' = Ty (A.14)
I
I
I
I
I
I
J
I
!
I
I
I
I

-
-
-
-
..
-
-
-
542 Appendice A
A.I0 Reti sequenziali sincrone
II flip-flop D nflip-flop D (da Delay) realizza un blocco dl ritardo pari al periodo del
clock T. L'ingresso a FFD ela materializzazione del suo state futuro. L'equazioDe di
transizione della stato ebanalmente

543
o
Sistemi digitali
_I I,
,J,'''W .t-
ot 'I ,r-
L'uscita del flip-flop viene riportata in ingresso
o
y

RC
Element!
,I
di
yn
r-
memOrIa
Clock
I
I
I
s
RC R
SFF

Clock
Si indichi con L1pp il tempo rich..iesto dal flip-flop e con L1c quello richiesto dalla
rete combinatoria per commutare. Si suppenga che l'ingresso I sia stabile da prima
del passaggio a 1 del clock e che resti stabile per tutto Ll
1
.
Dopa fjp F dal fronte di salita, se S e R hanno valori cODvenienti rispetto aile state
del FF, si attua il cambiamento di state. A quel punto,e possibile che, pur restando
Figura A.35 Rete sequenziale smerana.
alIa paxte combinatoria
A.IO.I Flip-flop Master-Slave
Si faccia riferimento aHa rete di FiguraA.35, nena quale e rnessa in evidenza la pre-
senza di un FFSR. Vogliamo mostrare che un flip-flop, realizzato come queUo in
FiguraA.29, introduce un serio inconveniente.
Figura A.34 Evidenziazione degli elementi di memoria in una rete smerona..
Prima di esaminare nel dettaglio i1 comportamento delle reti sincrone occorre,
tuttavia, spendere ancora alcune parole sui flip-flop.
.
'."1.::''''
.I"""l

.I-'"
. 110('"
...
,., ""
:;.
,:If:
.,'d'
.,
r.ete. di A.33. cambia sol? in. co.rrispondenza degli impulsi di clock.
: 'r. .IhW;'. Non SI nchlede pm che 1a rete combmatona Sla Ideale: come vedrema al paragrafo
seguente, basta solo che i tempi di commutaziane di RC e 1a frequenza del.clock stiano
nella giusta Ovviame:nte efacile generalizzare 10 schema di
. lo .stato (ClOe la della eB:ser.e vanablh
dl stato dl qualunque tlPO dl Sl model1? dl PlguraA.34
composto da: (a) una rete CUI usclta e dell'lllgreSS? I e della
. stato presente; e (b) da un IllSleme dl flip-flop deputatl alla rappresentazlone dello
h .. "., stato
.," .... ,
; ',)".,"" ."".... '. . .
"._ '''f.,F "1""\"
.. \
' " . .. "'" "','.<
.. ': \
.. , .-..

.'",,:
",.; .. ..
, , I" ,"-".
'1, ", ,.,
.q, ".,." ." ,
".' .:'11. ','t.)
".'''''' I" cO' " .
.:\: .,;r
....... . .
,>, ,
....t\ ,,".'
.. l;j. ";;,

.... ' ;,itl
,'s , .....
" ".. , ....., ..".
""1<"',\:",
I' ., ...'. . h
_" . .

"'''.''
'


': ,i" u;:f '
'-\.\"': ,,".
, . !:;:,-
.,. II ".").,'1>. fl."",
.,
IM""\' ." Jl..,...,. ,

... ".',: ,'. "
',',
." \""';, ",' 1 iii"
".1'''.Jh.,' ....
:,I"I'I"!"'f\' ',11 .
...Ilii .:'1' '
",;.'0\:1";',., "',,1.
'/l:';
.....

,""1
1
)" 1h"
l .

I, ,\'"4:,iC!
''; '1' 'tlp,.t
.. lit;i?:r(

",', ;:'lfi'\,
,,;.. .. "..
..' . :
",
,...:.'." \ ".;, .
...Jh
"fo'.',:),.:.';I( . ".,
{ 'h: .-C
: , I..)'" rr.-\liit.,:
.;0
.' ,'.";",i.
l.
.,....
>f:'il,r
, '
4'01:;.-'"
,.,
'''';''''/'''ifl' 'J'
"',:,' .'1:':
"",,"': ,';'.. '
, "1"" ...
.'t:,.,'"
.!\\I, "1"",'"
""" . '
""',:",'!{ {t'.',,'
". ,. ,"....
,.,,,.; !'; :'.1'"
"..
'. " ". 'i'w, ,
.: ;'., ,'!1u ,"
, .. '
,;. ".:t,..,,<: .. ,,

I .....-.;

:' .. ..
.. ,":"' .
,(:-... ,;
i:.P
, fiit
' .. >,.. '

'
, ,.',.:,
''1'' " .,' ",
.(I'J,; il
,,,.,, ..
.. ,;: ;, '';'"
, -, '...
.... ".
.:' '0;\1'"
'i\c......l.. ;L'
- h . '_
..". . ,..,'. . .. "
.,'......... .i',
(A.13)
,
,
o
T
b) FFT
----1I>Ck
y' = D


RC



;-
-'
,1 ,'1
QD
.
yn . y'n
Q.D
Clock
,
,
I
D
--IfCk _I
nsimbolo del flip-flop ein Figura A.32a. Vale la pena <Ii rimarcare che y', 10 stato
futuro, e10 stato che si avra. nel prossimo impulso di clock in conseguenza dell'ingresso
campionato dall'impulso corrente.
a) FFD
Figura A.32 &hemi convenzionali di FFD e di FFT
Figura A.33 Modello di rete sequenziale smerona.
Nel madelia d.i FiguraA.25 gil elementi Ti introducono ritardi potenzialmente diffe-
reoti, la. cui genesi era davuta ai differenti tempi di commutazione sui vari percorsi
seguiti dai segnali. Se ora. si immagina di sostituire gli elementi Ti con altrettanti
FFD e si suppone che tutti questi vengano azionati dal medesimo clock, il madello di
FiguraA.25 si trasforma nella rete sequenziale sinerona come quella di FiguraA.33.
II flip-flop T nflip-flop T (da Trigger) eschematizzato in Figurak32b. FFT cambia
Jltato quando l'ingresso T vale 1 e testa nella stesso stato se l'ingresso e O. Cia'
comporta questa equazione eli transizione di stato:
y' = Ty (A.14)
I
I
I
I
I
I
J
I
!
I
I
I
I

-
-
-
-
..
-
-
-
)
J

.
,
1.
1'
I'
),
I
I
).
1
).
I
1'
1-
"
,,-
.,
o
/ ,
r-
,
,
,
rr
Sistemi digitali 545
A.I0.2 Altre con5iderazioni sui flip-flop
Lo schema di funziona.mento del flip-flop Master-Slave ci ha permesso d.i ragionare
secondo i canoni della logica booleana, ovvero tenendo in conto solo i livelli dei segnali.
E ben nato che larga parte dei FF commuta sui fronti di salita 0 di discesa del clock
Gli stessi FF Master-Slave sono costruiti in modo da effettuare 1a commutazione del
master suI ronte di salita e quello dello slave sui fronte di discesa.
E evidente che la corrunutazione sui fronti e alla commutazione sui
livelli. Infatti, per il loro corretto funzionamento esufficiente ehe gli ingressi siano
stabili sui frontL Anche se di durata non nulla} un fronte e comunque un tempo
molto breve. Nella pratica bisogna tuttavia tener canto che c'e un intervallo di tempo'
a cavallo del fronte di commutazione durante il Quale gli ingressi devono rimanere
stabili. Questa intervallo ediviso in due parti, il tempo di set up, prima del fronte di
commutazione e il tempo di hold, dopo it ronte di commutazione.
In FiguraA.38a sono mostrati gli andamenti temporali relativi a un FFD che
comrnuta sui fronti di discesa del clock).
,
E chiaro ora che anche l'ingresso primario I deve cambiare entro ilz, e che
.6
2
cleve essere sufficientemente lungo da permettere' la commutazione dalla parte
combinatoria. In conclusione, si hanna questi vincoli per L1
1
e .1
2
: .
Ll
i
viene scelto in modo da esseie maggiore al tempo di commutazione del pili
lento dei master;
il
z
viene in modo da garantire la commutazione della parte oombinatoria.
L'ingresso primario I deve cambiare entro .6
2
/ in modo da garantire il rispetto di
questa conclizione. Cio accade se I epure sincronizzato can i1 clock,
ovvero se lei' uscita di FF Master-Slave pilotati da!. medesimo clock.
Figura A.3T Generica rete sequenziale sincrona e cambiamenti dei segnali.
Ie porte nella rete combinatoria hanno concluso Ie loro commutazioni. Questo fatto e
schematizzato con Parea ombreggiata in FiguraA.37b. Naturalmente in questa fase il
fatto che cambino gli ingressi ai FF non ha alcuna conseguenza sulle relative uscite.
Si richiede solo chegli ingressi ai'FF siano stabili prima del termine di Ll2 , in modo
che a1 successivo passagio a 1 del clock, gli elementi di memoria campionino ingressi
ben definiti.
y
-
y
s
I
l
/'
l
R
[
Clock
"
Appendice A
Figura A.36 ConJigurazione MasterSlave,
-t,:,
I' '.
i" .


, _
):N'J\
,.'.;-."'-'
"
:,,'t";Itt::: '''ri '

"'1'" .
",. .-
I non modificato, il nuovo y determini in uscita cia RC - dopa iI tempo Llc - una .
coppia (SIR) diversa dalla precedente, la quale, in linea di principia, pub comportare .
un nuovo y: Se .si ,ve;-ifica, FFSR di cqmmuta . . .
altn ter,?1D1 Vlene a generare UD:3 sltu3ZlOne malta da quella lPOtIz..-
zata A.9, e CIO(t l'mgresso (S}R) non nmane costante d,urante il.<1
1
del,clock. " ....
E facile convincersi che se la rete fosse pili complicata, can pili livelli combinatori .'
e pili livelli di memoria, si potrebbe.anche generare una situazione per cui durante.::1}
un FF. volte stato, la 10 stato dipenderebbe in
modo della. dl il.1 e dat. te.mpl dl commutazlOne e pot:ebbe anche
essere diverso da quelJo lffiplicato daJ valorI dl S e R all'atto de1l?assagglo a uno del
clock.
QueUo che si vuole da una rete sincrona eche 10 state futuro sia esatta.mente '
dalla e della rete all'atto dell'impulso ,
dl clock. A tal fine, occorre nvedere 11 modo III CUI It flIp-flop comrnutano. Restando , ,
fedell alla sui livelli, il problema viene risolto can la
Master-Slave dl FIgura A.36. '1',1i'
, ; '

..," il,\>.
. , .',
-'"
'.'"11""'''''
... .
':,',' .l,IIi'lf ','
, ...
",.. "",,1, - '" , 'I' ,.,

. "', ..
, ... ,.
.\l;" . ,t
l,;;:-. 'i':'
. -, i, ..r::,,;;-

I>' 't'::,:

.,' "oW
1;z.'. ',._';.
"" '.
-, ,.'t'
. . '_.
-",,,."', .. , .'
,I, """'/
,..,,,,,',,.. ,., " 1" :':
.. .. G:,:}f':
In ossa sana presenti due latch in cascata, quello a sinistra viene detto Master', ' Ii
quello a iI. clock enello 1 il Master pub stato, 10 .
Slave ha mgressl a zero e qumdi non pub camblare stato. Quando 11 clock passa alIo
stato O} 10 slave si porta nella state raggiunto dal Master, mentre questa non pub piu
commutare, .
. Con rife:imento alla deve essere Ll l maggiore uguale.al tem?o
dl commutazlOne del master pm lento nella rete} affinche quest'ultlmo abbia l'Usclta
stabile ill e quindi 10 slave abbia ingressi stabili quando si verifica la transizione .. : .
che porta 11 clock a zero. ' :
, ",,,.',,. "''''
.r precedenti concetti vengono riassunti in FiguraA.37, La FiguraA.37a
1
rappre- ':,
senta una genericarete. Per. essa si assume che, al momento del passaggio a 1 del
clock, Pingresso I abbia raggiunto una configurazione stabile e che esso non cambi .. -.
, '" ,'.',-
. " -'",1". ,,',
durante ill.
Durante ill i master cambiano stato, rna nessuna delle variabili di stato cambia.
, '" ,.. ,
Poiche I non cambia restano immutati gli ingressi ai FF. Dunque) durante .6
1
nessun ,((./<
segnale cambia stato entre la rete di FiguraA.37. Questo fatto eschematizzato con
la linea continua in FiguraA.37b,
Durante .62 i FF preSentano Ie uscite y; equindi possibile che 5i modificbino gli. ':::::'::' "r;..
ingressi di RC. Di conseguenza nella rete si instaura un transitorio che termina quando .'
. "l'(;Q,il'l"m" 'ii"'"
" '11',...
"""1,",',-
. .", I ...,,,rl;
544
)
J

.
,
1.
1'
I'
),
I
I
).
1
).
I
1'
1-
"
,,-
.,
o
/ ,
r-
,
,
,
rr
Sistemi digitali 545
A.I0.2 Altre con5iderazioni sui flip-flop
Lo schema di funziona.mento del flip-flop Master-Slave ci ha permesso d.i ragionare
secondo i canoni della logica booleana, ovvero tenendo in conto solo i livelli dei segnali.
E ben nato che larga parte dei FF commuta sui fronti di salita 0 di discesa del clock
Gli stessi FF Master-Slave sono costruiti in modo da effettuare 1a commutazione del
master suI ronte di salita e quello dello slave sui fronte di discesa.
E evidente che la corrunutazione sui fronti e alla commutazione sui
livelli. Infatti, per il loro corretto funzionamento esufficiente ehe gli ingressi siano
stabili sui frontL Anche se di durata non nulla} un fronte e comunque un tempo
molto breve. Nella pratica bisogna tuttavia tener canto che c'e un intervallo di tempo'
a cavallo del fronte di commutazione durante il Quale gli ingressi devono rimanere
stabili. Questa intervallo ediviso in due parti, il tempo di set up, prima del fronte di
commutazione e il tempo di hold, dopo it ronte di commutazione.
In FiguraA.38a sono mostrati gli andamenti temporali relativi a un FFD che
comrnuta sui fronti di discesa del clock).
,
E chiaro ora che anche l'ingresso primario I deve cambiare entro il
z,
e che
.6
2
cleve essere sufficientemente lungo da permettere' la commutazione dalla parte
combinatoria. In conclusione, si hanna questi vincoli per L1
1
e .1
2
: .
Ll
i
viene scelto in modo da esseie maggiore al tempo di commutazione del pili
lento dei master;
il
z
viene in modo da garantire la commutazione della parte oombinatoria.
L'ingresso primario I deve cambiare entro .6
2
/ in modo da garantire il rispetto di
questa conclizione. Cio accade se I epure sincronizzato can i1 clock,
ovvero se lei' uscita di FF Master-Slave pilotati da!. medesimo clock.
Figura A.3T Generica rete sequenziale sincrona e cambiamenti dei segnali.
Ie porte nella rete combinatoria hanno concluso Ie loro commutazioni. Questo fatto e
schematizzato con Parea ombreggiata in FiguraA.37b. Naturalmente in questa fase il
fatto che cambino gli ingressi ai FF non ha alcuna conseguenza sulle relative uscite.
Si richiede solo chegli ingressi ai'FF siano stabili prima del termine di Ll2 , in modo
che a1 successivo passagio a 1 del clock, gli elementi di memoria campionino ingressi
ben definiti.
y
-
y
s
I
l
/'
l
R

[
Clock
"
Appendice A
Figura A.36 ConJigurazione MasterSlave,
-t,:,
I' '.
i" .


, _
):N'J\
,.'.;-."'-'
"
:,,'t";Itt::: '''ri '

"'1'" .
",. .-
I non modificato, il nuovo y determini in uscita cia RC - dopa iI tempo Llc - una .
coppia (SIR) diversa dalla precedente, la quale, in linea di principia, pub comportare .
un nuovo y: Se .si ,ve;-ifica, FFSR di cqmmuta . . .
altn ter,?1D1 Vlene a generare UD:3 sltu3ZlOne malta da quella lPOtIz..-
zata A.9, e CIO(t l'mgresso (S}R) non nmane costante d,urante il.<1
1
del,clock. " ....
E facile convincersi che se la rete fosse pili complicata, can pili livelli combinatori .'
e pili livelli di memoria, si potrebbe.anche generare una situazione per cui durante.::1}
un FF. volte stato, la 10 stato dipenderebbe in
modo della. dl il.1 e dat. te.mpl dl commutazlOne e pot:ebbe anche
essere diverso da quelJo lffiplicato daJ valorI dl S e R all'atto de1l?assagglo a uno del
clock.
QueUo che si vuole da una rete sincrona eche 10 state futuro sia esatta.mente '
dalla e della rete all'atto dell'impulso ,
dl clock. A tal fine, occorre nvedere 11 modo III CUI It flIp-flop comrnutano. Restando , ,
fedell alla sui livelli, il problema viene risolto can la
Master-Slave dl FIgura A.36. '1',1i'
, ; '

..," il,\>.
. , .',
-'"
'.'"11""'''''
... .
':,',' .l,IIi'lf ','
, ...
",.. "",,1, - '"
, 'I' ,.,

. "', ..
, ... ,.
.\l;" . ,t
l,;;:-.
'i':'
. -, i, ..r::,,;;-

I>' 't'::,:

.,' "oW
1;z.'. ',._';.
"" '.
-, ,.'t'
. . '_.
-",,,."', .. , .'
,I, """'/
,..,,,,,',,.. ,., " 1" :':
.. .. G:,:}f':
In ossa sana presenti due latch in cascata, quello a sinistra viene detto Master', ' Ii
quello a iI. clock enello 1 il Master pub stato, 10 .
Slave ha mgressl a zero e qumdi non pub camblare stato. Quando 11 clock passa alIo
stato O} 10 slave si porta nella state raggiunto dal Master, mentre questa non pub piu
commutare, .
. Con rife:imento alla deve essere Ll l maggiore uguale.al tem?o
dl commutazlOne del master pm lento nella rete} affinche quest'ultlmo abbia l'Usclta
stabile ill e quindi 10 slave abbia ingressi stabili quando si verifica la transizione .. : .
che porta 11 clock a zero. ' :
, ",,,.',,. "''''
.r precedenti concetti vengono riassunti in FiguraA.37, La FiguraA.37a
1
rappre- ':,
senta una genericarete. Per. essa si assume che, al momento del passaggio a 1 del
clock, Pingresso I abbia raggiunto una configurazione stabile e che esso non cambi .. -.
, '" ,'.',-
. " -'",1". ,,',
durante ill.
Durante ill i master cambiano stato, rna nessuna delle variabili di stato cambia.
, '" ,.. ,
Poiche I non cambia restano immutati gli ingressi ai FF. Dunque) durante .6
1
nessun ,((./<
segnale cambia stato entre la rete di FiguraA.37. Questo fatto eschematizzato con
la linea continua in FiguraA.37b,
Durante .62 i FF preSentano Ie uscite y; equindi possibile che 5i modificbino gli. ':::::'::' "r;..
ingressi di RC. Di conseguenza nella rete si instaura un transitorio che termina quando .'
. "l'(;Q,il'l"m" 'ii"'"
" '11',...
"""1,",',-
. .", I ...,,,rl;
544
I
i
Vale 1a pena spendere alcune parole per illustrare la differenza tra i due modelli eli
I rete sequenziale e Ie implicazioni che ques.te differenze hanno sui eomportamento della
rete.
y',Z
c) !.tappa. di y' e Z
"
0
I

...
,.

M
0.'
l ,q 1
Clo><k
, ,.
e) Realiullzione con FFiK
SF,Z
z
,I I"
CLOCK
0 I

... .-

.- .-
b) Tabelll di !luno
0.'
d) Realiullzione con f'FD

I
I

a

a.l Oil&ramma di slalo
,
Z
CLOCK
1.0
..'

.J
-.0
Figura Sintesi della rete R secondo il modello ill Moore.
Figura A.40 Specifiea ill una rete sequenziale con uscita sincrona: schema di progetto e
relazioni temporali specificate.
Sistemi digitali 547
Conviene ovviamente fare riferimento al modello di Moore. In FiguraA.41a, b
e e vengono riportati it diagramma di state, 1a tabella di Busso e la tabella delle
transizioni corrispondenti alia specifica. Gli schemi della rete sintetizzati con flip-flop
D e con flip-flop JK sono sempre in FiguraAAl.
Col modeUo di Moore Ie uscite sono funzione del solo stato e sieeome 10 stato
cambia in corrispondenza agli impulsi di clock, anehe Ie useite risultano sincronizzate
rispetto al clock. Col modello di Mealy Ie uscite, essendo funzione anche degli ingressi,
possono variare in modo asinerono rispetto al clock.
A titolo di esempio si consideri 1a rete di FiguraA.39a
1
nella quale si suppone di
usare un FFJK che commuta sui fronte di salita.
Si tratta evidentemente di una rete sequenziale. L1uscita e bassa quando l'in-
gresso ealto, mentre, Quando l'ingresso e basso, corrisponde a un segnale periodico
di periodo doppio del clock. In altri termini l'ingresso X ha la funzione di inibitore
del segnale periodico di uscita. In Figura A.39b viene messo in evidenza che 1a forma
d'onda di Z puo presentare un'anomalia al momento del passaggio di X da 1 a O.
Supponiamo ora ehe si debba realizzare la rete can un comportamento analogo a
queUo della preeedente, rna con il vincolo dell'uscita sinerenizzata rispetto at clock. Si
tratta cioe di progettare la rete a un solo ingresso e una sola uscita, ehe deve rispettare
il diagramma di Fi,guraAAO.
;:"t,'
'7'j'l ;l!...

,,,;;,;'lll 11 ij, ,
'!".;-:',
'" .. ,--..
.....,.o'<! ';O",J'"
'J-' 3\-,
......' .,..
"'''',.' ... 'c.-. ,.'
,"',,1 .. ";'l\.'"
, "''''\)I!i ,', {.:
:".. .
... '"Ill""
,::1' lL",;\.
'.':i'r;V,'r -:;'"'.',,,
1.:,';::"
'..' .. ...: ,,. ..
.. - '.'
",,''1',.'' 1,1,';"
.- '.., ',I-. . I.',. I


,'.';l!i: ',?,,:<,
, .' ,r" "r:.,.' \.'
..,
..:> -"fl;...
,..'...

,..,".. "1":'
!,\c,,
:' ...
'.' '.'.'.,
.. .. '.
" ..... ,\1'.
"', ,./,. "iI-'.
-' ::;'

.,.... ,',.1'.1 ..
.. :):1Jk ,.
.. ..:."'>;;:,,; 'l-0t'.
'-.... ':to ....
- ':-.'l:... ..
,'::.../;
.
""""', .. ..
,.......
"""1 ..
", ';'-1;'.' t .
'
.. ", ' ... " .., ",,": .
..., ...'.
if.
, , ...... "....
""":' '"
; ...:. ,
.. '. '';'"
., ....,.. ".'
f', ::!TJ"I- .,. ...
.... d <. i-"
.
'1if);" "",'" ......... ,. ..,.
" .. "" . ...
"'. \
" '" , rffi .'
'.' '.":
'., ''''i!:'\l .' K

"
..

";I: .. ..
";;:1 I t
. ... .." :.. ,
.' '.. ':,
:' ....",. ,.,r. ':;"'.
,,;","<,.
J<!:"., ..
:. " l1:li',E,,' .
.. .."' ,.,,,.,.,
";'.,' ,,;'l;U}!' .
':: ;'.... ' 'Wi"'"
"""""'1'"
.... I'. .... ,."
"'- . t-
;',..i/" ,".\" '.,
;
.. '''''''l'''\r'' ',_
, '.''''Id(' .. :
flr.!I;.,:;
... ' ... . 'Irox:'"
,:;m;1i:
'.', " ....,\'.. '" or.",;:;,'
,. "'M_i/'(, ""

\@"""
.' ;"i'.'

;- > ''''''''>4 ., l.--.
.. "',"/;-" "
'. ... \:'-'"
. :'
-. "''','''',.:1,. , ;
. ?-.:,.
...... , "" ..
1M/\
'I'f.'-
"', '...... I'..
.' ',.A '.
,"., .
, ""'''''l
-'<.;'., . ' .If:> ,.'

..-' C,",'f(.'<'l(. ..,':. ,y
,.,:>.. I'"'l\
:-" , , ::.-
. ..
,
<," ..... ''!;!.j('
. . '\.
;."':
"
.
'1 .
.:
"I"", ' !011'.
:11',
, !"""". "/!'\,
:. "J,' ..
., .
" . .
.,:''!..,.!. '/YJ .'
,'- "I' .. " ;J:r.,-
,"...... ,,-"
:':':',!;'1'.1
.... "
.. ..., '/;"'"
!iI'"\1.'jt.
"A',';'''' I ..
,,; .....
',!
:,.. ..
"
... _' .
" : , .
,
I--

-.L
"

.VJ:< NV I
I I
---.n I I [ 1,-_
z
,
CLOCK
I
,

,-
Z
l Q
OK
,

CLOCK
D
I f L "0"
Set-up tim.. W Hold tim_

a) Schema della.,>ele b} Andamenlo lemporale dei segnali
c
Figura A.3D Esempio di rete con uscita: asincrona.
I flip-flop in commercio, oitre che presentare ingressi di tipo sineTana, spesso
riportano anche ingressi asincroni, detti Preset (PR) e Clear (eL). Questi corrispon-
dono grosso modo ai comandi di Set e Reset (comandano la commutazione in maniera
indipendente da!. clock). In presenza del segnale di clock e di segnali asincroni asseriti,
di solito questi ultimi prevalgono. Thttavia ebene leggere attentamente i dati tecnici
di ciascun integrato, perche, a seconda dei modelli e possibile anche il contrario. I
comandi PR e CL sono comodi nelle fasi di inizializzazione. Per azzerare il flip-flop
alPatto della messa 8Otto tensione, basta un circuito come quello disegnato a destra
in Figura A.38.
A.I0.3 Modelio di Mealy e modelio di Moore
a) Vincolo per l'ingresso a1 Flip-Flop b) Reset all'alirnentazione
Figura A.S8 a) Schematizzazione dei tempi di Hold e Set.up per un D; b) usa degli
ingressi di Preset e Clear ,per l'azzeramento del FF aJ momento dena messa sotto tensione.
Mentre PR passa. imm,ediatamente a. 1, 180 rete RC mantiene basso (asserito) l'ingresso CL
per un tempo dipendente dalla costante Re. Di conseguenza. il flip-flop si porta nello stato 0
quando anche CL passa. a 1; gli ingressi asincroni PR e CL diventano ininfluenti e it flip-flop
puo essere comandato attraverso il clock. _
546 Appendice A
I
I
I
I
I
\
)
I
I
I
I
I
I
I
-
-
-
-

-
-
-
-
-
-
I
i
Vale 1a pena spendere alcune parole per illustrare la differenza tra i due modelli eli
I rete sequenziale e Ie implicazioni che ques.te differenze hanno sui eomportamento della
rete.
y',Z
c) !.tappa. di y' e Z
"
0
I

...
,.

M
0.'
l ,q 1
Clo><k
, ,.
e) Realiullzione con FFiK
SF,Z
z
,I I"
CLOCK
0 I

... .-

.- .-
b) Tabelll di !luno
0.'
d) Realiullzione con f'FD

I
I

a

a.l Oil&ramma di slalo
,
Z
CLOCK
1.0
..'

.J
-.0
Figura Sintesi della rete R secondo il modello ill Moore.
Figura A.40 Specifiea ill una rete sequenziale con uscita sincrona: schema di progetto e
relazioni temporali specificate.
Sistemi digitali 547
Conviene ovviamente fare riferimento al modello di Moore. In FiguraA.41a, b
e e vengono riportati it diagramma di state, 1a tabella di Busso e la tabella delle
transizioni corrispondenti alia specifica. Gli schemi della rete sintetizzati con flip-flop
D e con flip-flop JK sono sempre in FiguraAAl.
Col modeUo di Moore Ie uscite sono funzione del solo stato e sieeome 10 stato
cambia in corrispondenza agli impulsi di clock, anehe Ie useite risultano sincronizzate
rispetto al clock. Col modello di Mealy Ie uscite, essendo funzione anche degli ingressi,
possono variare in modo asinerono rispetto al clock.
A titolo di esempio si consideri 1a rete di FiguraA.39a
1
nella quale si suppone di
usare un FFJK che commuta sui fronte di salita.
Si tratta evidentemente di una rete sequenziale. L1uscita e bassa quando l'in-
gresso ealto, mentre, Quando l'ingresso e basso, corrisponde a un segnale periodico
di periodo doppio del clock. In altri termini l'ingresso X ha la funzione di inibitore
del segnale periodico di uscita. In Figura A.39b viene messo in evidenza che 1a forma
d'onda di Z puo presentare un'anomalia al momento del passaggio di X da 1 a O.
Supponiamo ora ehe si debba realizzare la rete can un comportamento analogo a
queUo della preeedente, rna con il vincolo dell'uscita sinerenizzata rispetto at clock. Si
tratta cioe di progettare la rete a un solo ingresso e una sola uscita, ehe deve rispettare
il diagramma di Fi,guraAAO.
;:"t,'
'7'j'l ;l!...

,,,;;,;'lll 11 ij, ,
'!".;-:',
'" .. ,--..
.....,.o'<! ';O",J'"
'J-' 3\-,
......' .,..
"'''',.' ... 'c.-. ,.'
,"',,1 .. ";'l\.'"
, "''''\)I!i ,', {.:
:".. .
... '"Ill""
,::1' lL",;\.
'.':i'r;V,'r -:;'"'.',,,
1.:,';::"
'..' .. ...: ,,. ..
.. - '.'
",,''1',.'' 1,1,';"
.- '.., ',I-. . I.',. I


,'.';l!i: ',?,,:<,
, .' ,r" "r:.,.' \.'
..,
..:> -"fl;...
,..'...

,..,".. "1":'
!,\c,,
:' ...
'.' '.'.'.,
.. .. '.
" ..... ,\1'.
"', ,./,. "iI-'.
-' ::;'

.,.... ,',.1'.1 ..
.. :):1Jk ,.
.. ..:."'>;;:,,; 'l-0t'.
'-.... ':to ....
- ':-.'l:... ..
,'::.../;
.
""""', .. ..
,.......
"""1 ..
", ';'-1;'.' t .
'
.. ", ' ... " .., ",,": .
..., ...'.
if.
, , ...... "....
""":' '"
; ...:. ,
.. '. '';'"
., ....,.. ".'
f', ::!TJ"I- .,. ...
.... d <. i-"
.
'1if);" "",'" ......... ,. ..,.
" .. "" . ...
"'. \
" '" , rffi .'
'.' '.":
'., ''''i!:'\l .' K

"
..

";I: .. ..
";;:1 I t
. ... .." :.. ,
.' '.. ':,
:' ....",. ,.,r. ':;"'.
,,;","<,.
J<!:"., ..
:. " l1:li',E,,' .
.. .."' ,.,,,.,.,
";'.,' ,,;'l;U}!' .
':: ;'.... ' 'Wi"'"
"""""'1'"
.... I'. .... ,."
"'- . t-
;',..i/" ,".\" '.,
;
.. '''''''l'''\r'' ',_
, '.''''Id(' .. :
flr.!I;.,:;
... ' ... . 'Irox:'"
,:;m;1i:
'.', " ....,\'.. '" or.",;:;,'
,. "'M_i/'(, ""

\@"""
.' ;"i'.'

;- > ''''''''>4 ., l.--.
.. "',"/;-" "
'. ... \:'-'"
. :'
-. "''','''',.:1,. , ;
. ?-.:,.
...... , "" ..
1M/\
'I'f.'-
"', '...... I'..
.' ',.A '.
,"., .
, ""'''''l
-'<.;'., . ' .If:> ,.'

..-' C,",'f(.'<'l(. ..,':. ,y
,.,:>.. I'"'l\
:-" , , ::.-
. ..
,
<," ..... ''!;!.j('
. . '\.
;."':
"
.
'1 .
.:
"I"", ' !011'.
:11',
, !"""". "/!'\,
:. "J,' ..
., .
" . .
.,:''!..,.!. '/YJ .'
,'- "I' .. " ;J:r.,-
,"...... ,,-"
:':':',!;'1'.1
.... "
.. ..., '/;"'"
!iI'"\1.'jt.
"A',';'''' I ..
,,; .....
',!
:,.. ..
"
... _' .
" : , .
,
I--

-.L
"

.VJ:< NV I
I I
---.n I I [ 1,-_
z
,
CLOCK
I
,

,-
Z
l Q
OK
,

CLOCK
D
I f L "0"
Set-up tim.. W Hold tim_

a) Schema della.,>ele b} Andamenlo lemporale dei segnali
c
Figura A.3D Esempio di rete con uscita: asincrona.
I flip-flop in commercio, oitre che presentare ingressi di tipo sineTana, spesso
riportano anche ingressi asincroni, detti Preset (PR) e Clear (eL). Questi corrispon-
dono grosso modo ai comandi di Set e Reset (comandano la commutazione in maniera
indipendente da!. clock). In presenza del segnale di clock e di segnali asincroni asseriti,
di solito questi ultimi prevalgono. Thttavia ebene leggere attentamente i dati tecnici
di ciascun integrato, perche, a seconda dei modelli e possibile anche il contrario. I
comandi PR e CL sono comodi nelle fasi di inizializzazione. Per azzerare il flip-flop
alPatto della messa 8Otto tensione, basta un circuito come quello disegnato a destra
in Figura A.38.
A.I0.3 Modelio di Mealy e modelio di Moore
a) Vincolo per l'ingresso a1 Flip-Flop b) Reset all'alirnentazione
Figura A.S8 a) Schematizzazione dei tempi di Hold e Set.up per un D; b) usa degli
ingressi di Preset e Clear ,per l'azzeramento del FF aJ momento dena messa sotto tensione.
Mentre PR passa. imm,ediatamente a. 1, 180 rete RC mantiene basso (asserito) l'ingresso CL
per un tempo dipendente dalla costante Re. Di conseguenza. il flip-flop si porta nello stato 0
quando anche CL passa. a 1; gli ingressi asincroni PR e CL diventano ininfluenti e it flip-flop
puo essere comandato attraverso il clock. _
546 Appendice A
I
I
I
I
I
\
)
I
I
I
I
I
I
I
-
-
-
-

-
-
-
-
-
-
}-
j
]
J
)
)
),
1-
I'
)-
I
),
1-
)-
un
549
.....
Sistemi digitali
generazione di un segnale di WAIT
GX
X
CPU
GENW
WA(T
WAlT
Clock
Esempio di progetto:
dopa che WAIT etomato basso oecorre che X ritorni alto prima che sia possibile
la generazione di un altro WAIT a causa del campionamento di X baaso. La
precedente specifica viene sintetizzata dal diagramma temporale di FiguraA.45.
per generare WAIT non enecessario che X venga eampionato basso anche sui
secondo clock, basta che sia tale una sola vol,ta;
L se X ealto WAIT ebasso;
2. quando X viene earnpionato basso l'uscita WAIT passa ailo stato alto con
ritardo di un ;periodo di clock;
4. WAIT resta a 1 esattamente per un periodo di clock;
A,ll Esempi di analisi e progetto di reti sequenziali
Vengono ora considerati due casi di studio relativi a problematiche discusse nel segui-
to,
Vogliamo trattare un problema tipico dei sistemi d.i elaborazione, anticipando in parte
alcuni argomenti che verranno distussi piiJ dettagliatamente in seguito.
Capita spesso che la velocita della CPU e superiore a quella consentita dalla
memoria, nel senso che i tempi di esecuzione dei cicli d.i lettura 0 scrittura da parte
della CPU sono piu bassi di quelli richiesti daIJa memoria per effettuare tali operazioni.
Di solito tutte Ie CPU, e in particolare queUe disponibili in forma integrata come
microprocessori, dispongono 'di una linea di ingresso, detta WAIT chef se asserita
durante l'esecuzione di un cicIo di lettura 0 scrittura, fa allungare la durata del cicio
in questione per tutto il tempo in cui la linea viene mantenuta asserita.
In FiguraA,44 viene dato 10 schema di principio.
Figura A.44 Schema eli principio per 1a generazione eli un segnale di WAlT.
La rete GENW genera un segnale di WAIT, della durata di uno 0 piu periodi
di clock, quando viene asserito l'ingresso X. La linea X passa alIo stato di asserito a
seguito per esempio, della generazione da parte della CPU di un indirizzo relativo a
un blocco di memoria per cui OCCorre generare il segnale di WAIT. Si deve progettare
la rete GENW che soddisfa aile seguenti specifiche:

0
,
"
0,0


c) tlappa eli l' e Z
1'.1.
Zsn
Zsl
Zs2
.) Rulluuione con FTJK
I -,
.- ' ---r---- I
,- I
sr,z
0
,

." "

"
0,0
b) Tabell. ell tlueo
(
-,0
ZI
01
72
Rele
02


sequenzia1e


Zn
On
Clock
..
0.
It) Diltgnmm. di stalo

l.r>1

-
dl ReaJiuuione 00[1 FFD
'.0
(
Appenelice A 548
A titolo d.i curiosita vale 1a pena di vedere Quale sarebbe state iI risultato della sintesi
della rete di Figura AAO ricorreodo al modeUo eli Mealy,
In Figura A,42 vengono riportati diagramma di stato, tabella di flusso e delle
transizioni, Cil> the cambia eche Z estato posto a 1 solo io carrispandenza deUa stato
A edell' ingresso O. Conseguentemente Puscita Z puo avere l'anomalia gia osservata
al momento del passaggio di X da alto a basso. In FiguraA.42 vengono' riportate
due realizzazioni derivate dalla tabella delle transizioni di Figura A.42c. Ovviamente,
rispetto al caso precedente, non cambia la logica sequenziale.
Figura A.42 Sintesi della. rete R secondo il modello d.i Mealy.
Figura A.43
.F",'
-
..
.f,i!, " ..
'ila
:.l:t,.
"F"');-
.. -dft<a:
.-' -
-' ... '\" ,"--',;,- -
-"."
-' "."';',"
.. :':;";';.';-
- .. -

'-',:
- \ .. .-"., -
.. -.-
.
"J'c'.. '"
....., .. .... ';: ".:'.'1".:'.
, -,
twXi
.....,.ij l". -". __
...;'r.;l! jo::.' .:. ""
...
.':-
'.'7',';' ;'
):c.';;,', AlII
">'"(1';.-._ ,

;.);':. ,

-,:<:"ff., '.<,;"':.' "
.: oJ; . .'., _
:'-;' ,M:i:i;;; ":'Y;f:" '
'
-':';
.. ._- ..... ". _ .
- Ht.Z:,' ,-

-, ;-,r' ,tf. -
-.-\ ",'" "'.'- ---
;. .:"'".; .... . :_.,
- :
.- -' ""t-. -c'
...... ".,...... -. -
'-:if,>--,'_

."r.;.t.' :; !j.!"_
J"To<" .-.

_>.oMt ,-
c ,<V,.-,,-
-. ;:"it.:'i',;;:"';;:',,;,;,--
.',"',_
.. .
(',')';;f,i. .

.'" .;;r.\,. .
.- t,,!<'1r-,' .

..,/., .';/"i ',-" .
-' <-;," , '", , .. '
.. ,..
-,
.' ...)
.-
, ,::,',"':;";tjl';;tu;,
".;''N'C k"':;>'-'>"
, ''-:.It..<,..
.-
,'.
A conclusione di .questa parte conviene rilevare che, se a una rete si richiedond
uscite si possono .otte.nere con di un ..
numero adeguato di flip-flop, come schematIzzato III FlguraA.43. Tall fhp-f1.op posse-
no essere riguardati come un llregistro" di transito. Si noti che la ret'e sequenziale
precede if essere anche asincrona. C?vviamente del regi- -
stro rallenta II funzlOnamento della rete. In partlco!are, se la rete esmcrona (ovvero
epilotatadal medesimo clock), Ie uscite Z, sono disponibili con un ritardo pari a un
penodo d.i clock. "..
-.- I)'
,. .-, ,tb'"

,_.
" '-;- f< '
.
ii'
!!'-.;(,<.'"
.. ..
.. J>.,!<'l'
'.: -"?-&i;:c'- 3
' "-<,("", ,'-"":'.... '..
,.",,* ...

.. .
:,
:'.' :."
, :.-::! 0')1'.;.... '.',','1<';" _
. "'-"':\;;'-.".

').',j -"_r:".I.' 5
Sincronizzazione delle uscite tramite interposizione eli un registro di transito .

'.:

".'.
.., . ,-

}-
j
]
J
)
)
),
1-
I'
)-
I
),
1-
)-
un
549
.....
Sistemi digitali
generazione di un segnale di WAIT
GX
X
CPU
GENW
WA(T
WAlT
Clock
Esempio di progetto:
dopa che WAIT etomato basso oecorre che X ritorni alto prima che sia possibile
la generazione di un altro WAIT a causa del campionamento di X baaso. La
precedente specifica viene sintetizzata dal diagramma temporale di FiguraA.45.
per generare WAIT non enecessario che X venga eampionato basso anche sui
secondo clock, basta che sia tale una sola vol,ta;
L se X ealto WAIT ebasso;
2. quando X viene earnpionato basso l'uscita WAIT passa ailo stato alto con
ritardo di un ;periodo di clock;
4. WAIT resta a 1 esattamente per un periodo di clock;
A,ll Esempi di analisi e progetto di reti sequenziali
Vengono ora considerati due casi di studio relativi a problematiche discusse nel segui-
to,
Vogliamo trattare un problema tipico dei sistemi d.i elaborazione, anticipando in parte
alcuni argomenti che verranno distussi piiJ dettagliatamente in seguito.
Capita spesso che la velocita della CPU e superiore a quella consentita dalla
memoria, nel senso che i tempi di esecuzione dei cicli d.i lettura 0 scrittura da parte
della CPU sono piu bassi di quelli richiesti daIJa memoria per effettuare tali operazioni.
Di solito tutte Ie CPU, e in particolare queUe disponibili in forma integrata come
microprocessori, dispongono 'di una linea di ingresso, detta WAIT chef se asserita
durante l'esecuzione di un cicIo di lettura 0 scrittura, fa allungare la durata del cicio
in questione per tutto il tempo in cui la linea viene mantenuta asserita.
In FiguraA,44 viene dato 10 schema di principio.
Figura A.44 Schema eli principio per 1a generazione eli un segnale di WAlT.
La rete GENW genera un segnale di WAIT, della durata di uno 0 piu periodi
di clock, quando viene asserito l'ingresso X. La linea X passa alIo stato di asserito a
seguito per esempio, della generazione da parte della CPU di un indirizzo relativo a
un blocco di memoria per cui OCCorre generare il segnale di WAIT. Si deve progettare
la rete GENW che soddisfa aile seguenti specifiche:

0
,
"
0,0


c) tlappa eli l' e Z
1'.1.
Zsn
Zsl
Zs2
.) Rulluuione con FTJK
I -,
.- ' ---r---- I
,- I
sr,z
0
,

." "

"
0,0
b) Tabell. ell tlueo
(
-,0
ZI
01
72
Rele
02


sequenzia1e


Zn
On
Clock
..
0.
It) Diltgnmm. di stalo

l.r>1

-
dl ReaJiuuione 00[1 FFD
'.0
(
Appenelice A 548
A titolo d.i curiosita vale 1a pena di vedere Quale sarebbe state iI risultato della sintesi
della rete di Figura AAO ricorreodo al modeUo eli Mealy,
In Figura A,42 vengono riportati diagramma di stato, tabella di flusso e delle
transizioni, Cil> the cambia eche Z estato posto a 1 solo io carrispandenza deUa stato
A edell' ingresso O. Conseguentemente Puscita Z puo avere l'anomalia gia osservata
al momento del passaggio di X da alto a basso. In FiguraA.42 vengono' riportate
due realizzazioni derivate dalla tabella delle transizioni di Figura A.42c. Ovviamente,
rispetto al caso precedente, non cambia la logica sequenziale.
Figura A.42 Sintesi della. rete R secondo il modello d.i Mealy.
Figura A.43
.F",'
-
..
.f,i!, " ..
'ila
:.l:t,.
"F"');-
.. -dft<a:
.-' -
-' ... '\" ,"--',;,- -
-"."
-' "."';',"
.. :':;";';.';-
- .. -

'-',:
- \ .. .-"., -
.. -.-
.
"J'c'.. '"
....., .. .... ';: ".:'.'1".:'.
, -,
twXi
.....,.ij l". -". __
...;'r.;l! jo::.' .:. ""
...
.':-
'.'7',';' ;'
):c.';;,', AlII
">'"(1';.-._ ,

;.);':. ,

-,:<:"ff., '.<,;"':.' "
.: oJ; . .'., _
:'-;' ,M:i:i;;; ":'Y;f:" '
'
-':';
.. ._- ..... ". _ .
- Ht.Z:,' ,-

-, ;-,r' ,tf. -
-.-\ ",'" "'.'- ---
;. .:"'".; .... . :_.,
- :
.- -' ""t-. -c'
...... ".,...... -. -
'-:if,>--,'_

."r.;.t.' :; !j.!"_
J"To<" .-.

_>.oMt ,-
c ,<V,.-,,-
-. ;:"it.:'i',;;:"';;:',,;,;,--
.',"',_
.. .
(',')';;f,i. .

.'" .;;r.\,. .
.- t,,!<'1r-,' .

..,/., .';/"i ',-" .
-' <-;," , '", , .. '
.. ,..
-,
.' ...)
.-
, ,::,',"':;";tjl';;tu;,
".;''N'C k"':;>'-'>"
, ''-:.It..<,..
.-
,'.
A conclusione di .questa parte conviene rilevare che, se a una rete si richiedond
uscite si possono .otte.nere con di un ..
numero adeguato di flip-flop, come schematIzzato III FlguraA.43. Tall fhp-f1.op posse-
no essere riguardati come un llregistro" di transito. Si noti che la ret'e sequenziale
precede if essere anche asincrona. C?vviamente del regi- -
stro rallenta II funzlOnamento della rete. In partlco!are, se la rete esmcrona (ovvero
epilotatadal medesimo clock), Ie uscite Z, sono disponibili con un ritardo pari a un
penodo d.i clock. "..
-.- I)'
,. .-, ,tb'"

,_.
" '-;- f< '
.
ii'
!!'-.;(,<.'"
.. ..
.. J>.,!<'l'
'.: -"?-&i;:c'- 3
' "-<,("", ,'-"":'.... '..
,.",,* ...

.. .
:,
:'.' :."
, :.-::! 0')1'.;.... '.',','1<';" _
. "'-"':\;;'-.".

').',j -"_r:".I.' 5
Sincronizzazione delle uscite tramite interposizione eli un registro di transito .

'.:

".'.
.., . ,-

WAlT
, "- , ,
Q
,
Q
(
"
" "
"
,
Q
,
Clock

'''''
He..
, ,

"
"
,

"
x
,
J
, ,
L"
"
"
,
Ll<2
, ,
/
lOSi assume che in caso di contlitto l'ingresso asincrono (CL) prevalga su queUo sincrono (clock).
,
A.II.2 Esempio di progetto, rete per I'adattamento
della temporizzazione dei segnali
Sistemi 551
E obbligatorio che iI primo FF di FiguraA,48 commuti suI fronte di discesa.
All
'
inizio X::;:l e tutti i FF hanno l'uscita a 0, La commutazione da 1 a 0 di X causa
la variazione da 0 a 1 dell
'
uscita del primo FF. Al successivo impulso di clock la stessa
variazione si propaga in uscita a1 secondo e contemporaneamente l'uscita del primo
va a 0 per effetto del'CVo, Dopo un altro impulso di clock anche l'uscita dell'ultimo
FF, cioe WAIT, passa a. uno e vi resta solo per un periodo di clock l'uscita
del secondo FF e intanto tornata a O. Si nob che la rete di FiguraA.48 rkonoBee
comunque il passaggio basso di X, La rete di FiguraA,47 richiede invece che X sia
mantenuto basso almeno fino at fronte del clock.
Anche 1a rete che viene ora sintetizzata risolve un problema di cui si tratta nel seguito.
Ci si riferisce all'impiego del controllore per l'accesso diretto alia memoria (DMAC)
8237 con la CPU 8086 funzionante in modo massimo.
II protocollo di interazione tra controllore e unita. centrale eUn normale protocollo
hand-shake. Esso prevede che i1 DMAC richieda Pusa (esclusivo) del sistema eli bus
asserendo la linea di richiesta HLDR e che la CPU risponda asserendo la linea HLDA,
a indicare che il bus estato rilasciato e che questa puo passare sotto iI controUo
Figura A.48 Generazione del WAIT can una rete castruita can metoda intuitivo.
arrivare a una soluzione senza passare attraverso tutti i 'passi del procedime'lto rigo-
roso. Si consideri per esempio 1a rete di FiguraA,48, dove si fa uso anche dell'ingresso
asincrono di CL.
Figura A.47 Genera-tore eli WAlT attraverso una rete swtetizzata col metoda formale.
c

A
K, = Yl
A
WAIT = Y1Y'
o o
J, = y,X;
D o
x. ,
o
Y; = Y'YI + y,X;
c

A
K
1
= X;
A
,
A A
x,
I
x-o x-- x 0
A.O
0
c.' D.O

'--<
.. _. -
x-, -'. \
J1 = Y2;
= y1X +YIY2;
, 1 I 1__
_____1 IlL
Appendice A
CLOCK
WAIT
x
da cui 8i deduce immediatamenLe la topologia della rete nel caso di realizzazione con
FFD (basta porre Y; = D, e Y; = D,). .
Se si usano flip-flop JK si ottiene:
. :
8i noti che l'uscita WAIT = 1 dura il 5010 tempo di permanenza nello stato C,
ovvera un periodo di clock. Se si codificano gli stati nel seguente modo: A = 00,
B = 01, C = 11, D :;:: 10, 5i ottiene: ...
..
"'......
""<1,;..<

.. ,:.}; ,.
t '.' _
... .,,,,,,l!'i;' ,
" ,. ,
", ..' c, .
... ...
,...... '",..
....:,".
,-,i"l
,.,:.", .
.m...
." , ..., .,.
h.- "," '\,; \.
, .., .. '.''''',

.. ,," .
"",<' . r; I;'.... ..
I ,', '",
.,
,-' '.. '..-,'1'11,1, ,:n' . '",
,', '.
":'.",:':':'''''.' f,.." .. " I
.; -!iO;C:' ,,,. ...'" .
", ...
';':"'1.'
" '-"'V', 'j , :.

.. 3t"
),." .
:," ,....;..
,', .
I
.
'" ." .",.
" ".'.' "
.
(;',,i}
",-"t"".,:
"., .ct". ",.,..,.
" '. "';'<t ,'fft'..
, n,.,.r:'I) ,,"j'.l","
"";'t1 .. ,', '
"
'.:k)::\.: ,:.,},.,
I:J'";,:.,.
r
,, ."." ,,'
..
, ...., ...,' .1.",'
"" .' ... ,,,,' .....


,

"
....... 'J
_n .',
..:. ." 'i""}::
I ,.< .'_ .'.J.'
". ,\:<.j' 'Pi:. :.";.
.:,
. /"'" " '. ",
19
J
.' '.",(. " , e'
.. _"tl''' ",..
J'ti4ff>"
" '.'\'f1ii ....
. - " .. ....
........,. . 1,- .

x..o
.
- '''\:;:0'''' ,.',
F
A D' d Ii' . - . '. '.- ......." ... \ "'"
Jgura .46 lagramroa eg statl deUa macchma <li Moore che sintetizza Ie sp.eclficbe
del generat9re di WAlT. ,
;..
:. -.:;:.1?$ti
": .'.<_;!,t-
'.,\,:,:Xj":" ..
f .r,!!," "
",-,'lJ, Jffi ',' J.,'II;i
r
"
; .'" I ...

,. 1;;::.',.,
;., ... ,, " 'H,
, ,,, ,,'-'" "" '
'(::.::"\l'v JL
" ',..- , .... t,,
' .. ...
-, ?I-""" .... "., '.'
. "-.: '-'<!'..};('.'
.-
'. ,UF;i

r.. 1'/"
'. , ..."< I .,.
,-j;'i'..:,!;: '&"V'



..........'.\\1.' ..
"" ,U'.r "
"'.,' '1." '"
i.'. " .. .. ,,,
, .. '. .. .. ,".i',
" " , -,' -
':1 ".;: '_ii""
-"."',;"
. i' S:::
,',' ..
La rete risultante edisegnata in Figura A.47. Vale la pena eli osservare che se si fosse ,'.,
voluto avere WAfT = .1 per di clock, sarebbe bastato 10 C .
una obbligat;a di k stat! (C1,CZ,' .,Ck). In caso ogDl,va:rlazlone
di X nell'mtervallo dallo stato B alio stato Gk compresl sarebbe stato lrnlevante. 'il:"
E anche facile ottenere WAfT = 1 dopo m impulsi di clock anziche dopo 1; basta' \'iW'
t
. 1 B 1 (B B B) ..... If,, l".
sos Iturre a state can a sequenza 1, 2, m' .
, ','
La.rete di Figura A..47 e adottand? un metodo per la sua :'
tesl. Molto spesso il progettlsta IOglco usa tecruche e trucchi <;he gli consentono
.,. .;,
,,,,,
, ....,
"v'
La specifica-impone che l'uscita WAIT duri esattamente un periodo d.i" clock: cio
viene garantito rendenda l'uscita sincrana rispetto at clock, oVYere rendendo 1'uscita
funzione del solo stato della rete. Occarre quj,ndi riferirsi al madelia d.i Moore.
In FiguraA.46 estato disegnato il diagramma di stato deducibile dalle specifiche.
Figura A.45 Diagramma temporale per i1 WAIT.
550
j
j
I
\
I
I
I
I
I
I
I
I
I
I
-
-
-
..
-
-
-
-
...
-
-
WAlT
, "- , ,
Q
,
Q
(
"
" "
"
,
Q
,
Clock

'''''
He..
, ,

"
"
,

"
x
,
J
, ,
L"
"
"
,
Ll<2
, ,
/
lOSi assume che in caso di contlitto l'ingresso asincrono (CL) prevalga su queUo sincrono (clock).
,
A.II.2 Esempio di progetto, rete per I'adattamento
della temporizzazione dei segnali
Sistemi 551
E obbligatorio che iI primo FF di FiguraA,48 commuti suI fronte di discesa.
All
'
inizio X::;:l e tutti i FF hanno l'uscita a 0, La commutazione da 1 a 0 di X causa
la variazione da 0 a 1 dell
'
uscita del primo FF. Al successivo impulso di clock la stessa
variazione si propaga in uscita a1 secondo e contemporaneamente l'uscita del primo
va a 0 per effetto del'CVo, Dopo un altro impulso di clock anche l'uscita dell'ultimo
FF, cioe WAIT, passa a. uno e vi resta solo per un periodo di clock l'uscita
del secondo FF e intanto tornata a O. Si nob che la rete di FiguraA.48 rkonoBee
comunque il passaggio basso di X, La rete di FiguraA,47 richiede invece che X sia
mantenuto basso almeno fino at fronte del clock.
Anche 1a rete che viene ora sintetizzata risolve un problema di cui si tratta nel seguito.
Ci si riferisce all'impiego del controllore per l'accesso diretto alia memoria (DMAC)
8237 con la CPU 8086 funzionante in modo massimo.
II protocollo di interazione tra controllore e unita. centrale eUn normale protocollo
hand-shake. Esso prevede che i1 DMAC richieda Pusa (esclusivo) del sistema eli bus
asserendo la linea di richiesta HLDR e che la CPU risponda asserendo la linea HLDA,
a indicare che il bus estato rilasciato e che questa puo passare sotto iI controUo
Figura A.48 Generazione del WAIT can una rete castruita can metoda intuitivo.
arrivare a una soluzione senza passare attraverso tutti i 'passi del procedime'lto rigo-
roso. Si consideri per esempio 1a rete di FiguraA,48, dove si fa uso anche dell'ingresso
asincrono di CL.
Figura A.47 Genera-tore eli WAlT attraverso una rete swtetizzata col metoda formale.
c

A
K, = Yl
A
WAIT = Y1Y'
o o
J, = y,X;
D o
x. ,
o
Y; = Y'YI + y,X;
c

A
K
1
= X;
A
,
A A
x,
I
x-o x-- x 0
A.O
0
c.' D.O

'--<
.. _. -
x-, -'. \
J1 = Y2;
= y1X +YIY2;
, 1 I 1__
_____1 IlL
Appendice A
CLOCK
WAIT
x
da cui 8i deduce immediatamenLe la topologia della rete nel caso di realizzazione con
FFD (basta porre Y; = D, e Y; = D,). .
Se si usano flip-flop JK si ottiene:
. :
8i noti che l'uscita WAIT = 1 dura il 5010 tempo di permanenza nello stato C,
ovvera un periodo di clock. Se si codificano gli stati nel seguente modo: A = 00,
B = 01, C = 11, D :;:: 10, 5i ottiene: ...
..
"'......
""<1,;..<

.. ,:.}; ,.
t '.' _
... .,,,,,,l!'i;' ,
" ,. ,
", ..' c, .
... ...
,...... '",..
....:,".
,-,i"l
,.,:.", .
.m...
." , ..., .,.
h.- "," '\,; \.
, .., .. '.''''',

.. ,," .
"",<' . r; I;'.... ..
I ,', '",
.,
,-' '.. '..-,'1'11,1, ,:n' . '",
,', '.
":'.",:':':'''''.' f,.." .. " I
.; -!iO;C:' ,,,. ...'" .
", ...
';':"'1.'
" '-"'V', 'j , :.

.. 3t"
),." .
:," ,....;..
,', .
I
.
'" ." .",.
" ".'.' "
.
(;',,i}
",-"t"".,:
"., .ct". ",.,..,.
" '. "';'<t ,'fft'..
, n,.,.r:'I) ,,"j'.l","
"";'t1 .. ,', '
"
'.:k)::\.: ,:.,},.,
I:J'";,:.,.
r
,, ."." ,,'
..
, ...., ...,' .1.",'
"" .' ... ,,,,' .....


,

"
....... 'J
_n .',
..:. ." 'i""}::
I ,.< .'_ .'.J.'
". ,\:<.j' 'Pi:. :.";.
.:,
. /"'" " '. ",
19
J
.' '.",(. " , e'
.. _"tl''' ",..
J'ti4ff>"
" '.'\'f1ii ....
. - " .. ....
........,. . 1,- .

x..o
.
- '''\:;:0'''' ,.',
F
A D' d Ii' . - . '. '.- ......." ... \ "'"
Jgura .46 lagramroa eg statl deUa macchma <li Moore che sintetizza Ie sp.eclficbe
del generat9re di WAlT. ,
;..
:. -.:;:.1?$ti
": .'.<_;!,t-
'.,\,:,:Xj":" ..
f .r,!!," "
",-,'lJ, Jffi ',' J.,'II;i
r
"
; .'" I ...

,. 1;;::.',.,
;., ... ,, " 'H,
, ,,, ,,'-'" "" '
'(::.::"\l'v JL
" ',..- , .... t,,
' .. ...
-, ?I-""" .... "., '.'
. "-.: '-'<!'..};('.'
.-
'. ,UF;i

r.. 1'/"
'. , ..."< I .,.
,-j;'i'..:,!;: '&"V'



..........'.\\1.' ..
"" ,U'.r "
"'.,' '1." '"
i.'. " .. .. ,,,
, .. '. .. .. ,".i',
" " , -,' -
':1 ".;: '_ii""
-"."',;"
. i' S:::
,',' ..
La rete risultante edisegnata in Figura A.47. Vale la pena eli osservare che se si fosse ,'.,
voluto avere WAfT = .1 per di clock, sarebbe bastato 10 C .
una obbligat;a di k stat! (C1,CZ,' .,Ck). In caso ogDl,va:rlazlone
di X nell'mtervallo dallo stato B alio stato Gk compresl sarebbe stato lrnlevante. 'il:"
E anche facile ottenere WAfT = 1 dopo m impulsi di clock anziche dopo 1; basta' \'iW'
t
. 1 B 1 (B B B) ..... If,, l".
sos Iturre a state can a sequenza 1, 2, m' .
, ','
La.rete di Figura A..47 e adottand? un metodo per la sua :'
tesl. Molto spesso il progettlsta IOglco usa tecruche e trucchi <;he gli consentono
.,. .;,
,,,,,
, ....,
"v'
La specifica-impone che l'uscita WAIT duri esattamente un periodo d.i" clock: cio
viene garantito rendenda l'uscita sincrana rispetto at clock, oVYere rendendo 1'uscita
funzione del solo stato della rete. Occarre quj,ndi riferirsi al madelia d.i Moore.
In FiguraA.46 estato disegnato il diagramma di stato deducibile dalle specifiche.
Figura A.45 Diagramma temporale per i1 WAIT.
550
j
j
I
\
I
I
I
I
I
I
I
I
I
I
-
-
-
..
-
-
-
-
...
-
-
-
.
1
,
)
1.
I
I "
\ .
I-
1-
I
1-
1-
1-
1.,
1-
L-
V
-
"-
REL
"
.
-
-

1/
"
GT
".1
82 : la rete resta in questa stato per un solo periodo di clock, durante il quale .
viene asserito basso i1 segnale R. Questo segnale viene utilizzato per generare
l'uscita RQ/GT tramite un buffer three-state;
-83 : viene campionato l'ingresso G. n passaggio al successivo stato 8" si ha
quando l'ingresso risulta a.sserito bassoi
84 : in questa state la rete mantiene a.sserita I'uscita A. Lo stato viene abbando-
nato solo quando il DMAC disasserisee H;
85: la rete resta in questo stato per UJ.l solo periodo di clock durante i1 quale
asserisce il segnale R. La traiettoria di'stato si conclude in 8
1
,
In FiguraA.52 viene riportata la comspondente tabella di fiusso. n diagramma
a scala mostra che tutti gli stati sono distinguibili e che it diagramma degli stati non
pui> essere semplifieato.
Can la eodifica degli stat! di FiguraA.52 si ottengono Ie mappe (di 5 variabili)
di Figura A.53 per Ie uscite ReA e di F,'iguraA.54 per Ie variabili di stato futuro
-Y21 . Si ottengono infine queste relazioni:
81: in questa stato la rete campiona l'ingresso H: se ealto passa nello stato 8
2
,
altrimenti resta in 3
1
;
In Figura A.51 eviene dato il diagramrna di stato, tracciato sulla fa1sariga dei
precedenti ragionamenti. nsignificato degli stati eil seguente:
RQ/GT
HOLDR
GLI(
Figura A.50 Temporizz3zione di una richiesta di bus tramite i segnali RQ/GT.
HOLDA
Sistemi digitali 553
HLDR viene asserito dal DMAC, la rete cleve asserire (sul prossimo clock) la linea
RQ/GT (Request) ehe, a norma eli speeifiea, deve restare asserita per un solo periodo
di clock. Quando la CPU riporta bassa la linea RQ/GT (Grant), la rete deve asserire
HLDA per il eontrollore. Quando da parte eli Quest'ultimo, HLDR viene elisasserito,
la rete disasserisee HLDA e genera l'impulso di rilaseio asserendo aneora RQ/GT per
un periodo di clock.
Siccome la linea RQ/GT risulta essere di ingresso e di uscita, conviene trasformare
la rete di partenza di Figura A. 49 a) in quella di Figura A.49b. A seguito di tale
trasformazione la rete cia progettare equella di Figura A,49c. nsignificato di ReG
eovvio, come pure la lore temporizzazione.
III Schema dl parlenza
Imj
) .. _;.._:, .. :....:.:.: > A
. .. .
)1' .. "','1 ) R
c) Senemll dl proS.Uo
o
H
4?0-
H
RIG
CPU DMAC
A
o
Appendice A
I I j I ':>
H '0) . ,... R
Rio '''''I'
.. I I . I' .:.:: :-:':':'::..:...

"'",..,
"...."
,.:'<;..
..
.
,,'" ,.'Ql 'L ::,:
' __ .... 1
, ';.>.'''':It!-' .. ',,'
,;.i'-i!' .' i :',,..
.. "',..
.. ",.. . -
.... : h:>:
..... ,
-
'
del DMAC. 'futtavia, il microprocessore 8086, quando funziona in modo massimo,
interagisce con Ie unita esterne Bulla base di un protocollo a impulsi. Tale protocollo .'
prevede una sola linea, denominata RQjGT. funzionante come ingresso e come uscita
l
' .. ,:}'},
asseritajosservata in diversi dal richiedente e dalla CPU. :',
nprotoeollo sulla lmea R:Q/G'T e11 seguente. -- '"'' '.
",,-,;tl _<, '-,'
1. Il dispositivQ (per esempio, il DMAC) ehe intende richiedere Puso dei bus genera "%?i:f:::
- - - - ..., ...
un impulso su RQ/GT (ovvero asserisce RQ/GT per un periodo di clock). . :::-J;,- :,iL.-,::
;'-;'-i''.'iJ- :il';L';.
2. La CPU risponde generando UD impulso aulla stessa linea. Si Dati che tale impulso'
pUO manllestarsi suI clock successive a queUo su cui 5i epresentato l'impulso di :
richiesta. L'impulso generato dalla CPU ha funzione di Grant. Sul Grant iI .
dispositivo entra in controllo del bus.
,I;,,;_,:!t
il
'
3, II rilaseio del bus da parte del dispooitivo viene notifieato alia CPU attraverso if
un terZQ Impulso avente sIgmficato dl release.
Ovviamente, siccome DMAC genera illivello HLDR e si aspetta la risposta come
Hvello (alto) di HLDA, l'impiego con 8086 in modo ma.ssimo richiede una rete di
trasformazione livelli in impulsi e viceversa. n rete e
dallo schema di FtguraA.49a. Nella parte che segue Cl apphcheremo a1 progetto dl.
questa rete.
t" 1'lo'V; ,
.'. "'":
Ip.
, 'i!li"'" '
. , . , ", .... ,
'L,: ""01-'" .. t ,:..
'..
'"."",., -1"-
, (,:;.
, .,:l.' 'I $f,"
,.:,.,::...'''j''Il!'1
., .. .' tI1 '" , \'..':d '" r..... \.
"-"'),
v <I..,...
;:. rl-'"''C:
.\.,:;;;,1; ... : " !',,;,
;
,: .. ..
-;;'.l.:l:" "
" 1':;;"" ... '.JW!',{,
".
:.f'>I",a,'1 'Ii'"
.. J :lii\',"
:.-.. . '.
;J, ....... ,'1.'-
- ',.1'.'
- .,;? ,,,'1 '".' ,,,;,.
'" $">!\' "
,,/ ,".o,j(j"','
., ...,r.>, J' "OJ! "
'"
.'.'Ol!,.. .. /'-!;" !j.
.,';<;.;-
,," - ':
,,""-.:,.., ,. ,,,
.. , " .- J
i
,
],!-'/

,. ""'.. -,
\ ,,'
".' . ,_'
\r!&"'I,r"
, "" .:;..,
':
r
.,:/, --,' ;(,-., ,. "'.,
.. ..r,-""'" .....' '
,,.1,,2,,,,.
:;,..-,;;.",."".,,",..... , ,:t',,:,
"
': 'j':, ,
.. '.'?:'p. , ,l \1
b) Sep-.rlltione oil R da G . .' ;:::ttf;t* \)'"
(H) e HLDA (A) negli impulsi RQ/GT (RIG).',.

'\<"'.J.:>'
In Figura A.50 viene data temporizzazione dei segnali
ll
. Si noti che quando .t..
'
- ".' '-.
;""
nNel seguito, per comodita di rappresentazioDe, sui diagrammi di stato e sulle tabelle di
transizione
l
si usano i simholi HI A, RIG rispettivamente per HLDR, HLDA e RQ/GT. ."
., "
552
-
.
1
,
)
1.
I
I "
\ .
I-
1-
I
1-
1-
1-
1.,
1-
L-
V
-
"-
REL
"
.
-
-

1/
"
GT
".1
8
2
: la rete resta in questa stato per un solo periodo di clock, durante il quale .
viene asserito basso i1 segnale R. Questo segnale viene utilizzato per generare
l'uscita RQ/GT tramite un buffer three-state;
-83 : viene campionato l'ingresso G. n passaggio al successivo stato 8" si ha
quando l'ingresso risulta a.sserito bassoi
84 : in questa state la rete mantiene a.sserita I'uscita A. Lo stato viene abbando-
nato solo quando il DMAC disasserisee H;
85: la rete resta in questo stato per UJ.l solo periodo di clock durante i1 quale
asserisce il segnale R. La traiettoria di'stato si conclude in 8
1
,
In FiguraA.52 viene riportata la comspondente tabella di fiusso. n diagramma
a scala mostra che tutti gli stati sono distinguibili e che it diagramma degli stati non
pui> essere semplifieato.
Can la eodifica degli stat! di FiguraA.52 si ottengono Ie mappe (di 5 variabili)
di Figura A.53 per Ie uscite ReA e di F,'iguraA.54 per Ie variabili di stato futuro
-Y21 . Si ottengono infine queste relazioni:
81: in questa stato la rete campiona l'ingresso H: se ealto passa nello stato 8
2
,
altrimenti resta in 3
1
;
In Figura A.51 eviene dato il diagramrna di stato, tracciato sulla fa1sariga dei
precedenti ragionamenti. nsignificato degli stati eil seguente:
RQ/GT
HOLDR
GLI(
Figura A.50 Temporizz3zione di una richiesta di bus tramite i segnali RQ/GT.
HOLDA
Sistemi digitali 553
HLDR viene asserito dal DMAC, la rete cleve asserire (sul prossimo clock) la linea
RQ/GT (Request) ehe, a norma eli speeifiea, deve restare asserita per un solo periodo
di clock. Quando la CPU riporta bassa la linea RQ/GT (Grant), la rete deve asserire
HLDA per il eontrollore. Quando da parte eli Quest'ultimo, HLDR viene elisasserito,
la rete disasserisee HLDA e genera l'impulso di rilaseio asserendo aneora RQ/GT per
un periodo di clock.
Siccome la linea RQ/GT risulta essere di ingresso e di uscita, conviene trasformare
la rete di partenza di Figura A. 49 a) in quella di Figura A.49b. A seguito di tale
trasformazione la rete cia progettare equella di Figura A,49c. nsignificato di ReG
eovvio, come pure la lore temporizzazione.
III Schema dl parlenza
Imj
) .. _;.._:, .. :....:.:.: > A
. .. .
)1' .. "','1 ) R
c) Senemll dl proS.Uo
o
H
4?0-
H
RIG
CPU DMAC
A
o
Appendice A
I I j I ':>
H '0) . ,... R
Rio '''''I'
.. I I . I' .:.:: :-:':':'::..:...

"'",..,
"...."
,.:'<;..
..
.
,,'" ,.'Ql 'L ::,:
' __ .... 1
, ';.>.'''':It!-' .. ',,'
,;.i'-i!' .' i :',,..
.. "',..
.. ",.. . -
.... : h:>:
..... ,
-
'
del DMAC. 'futtavia, il microprocessore 8086, quando funziona in modo massimo,
interagisce con Ie unita esterne Bulla base di un protocollo a impulsi. Tale protocollo .'
prevede una sola linea, denominata RQjGT. funzionante come ingresso e come uscita
l
' .. ,:}'},
asseritajosservata in diversi dal richiedente e dalla CPU. :',
nprotoeollo sulla lmea R:Q/G'T e11 seguente. -- '"'' '.
",,-,;tl _<, '-,'
1. Il dispositivQ (per esempio, il DMAC) ehe intende richiedere Puso dei bus genera "%?i:f:::
- - - - ..., ...
un impulso su RQ/GT (ovvero asserisce RQ/GT per un periodo di clock). . :::-J;,- :,iL.-,::
;'-;'-i''.'iJ- :il';L';.
2. La CPU risponde generando UD impulso aulla stessa linea. Si Dati che tale impulso'
pUO manllestarsi suI clock successive a queUo su cui 5i epresentato l'impulso di :
richiesta. L'impulso generato dalla CPU ha funzione di Grant. Sul Grant iI .
dispositivo entra in controllo del bus.
,I;,,;_,:!t
il
'
3, II rilaseio del bus da parte del dispooitivo viene notifieato alia CPU attraverso if
un terZQ Impulso avente sIgmficato dl release.
Ovviamente, siccome DMAC genera illivello HLDR e si aspetta la risposta come
Hvello (alto) di HLDA, l'impiego con 8086 in modo ma.ssimo richiede una rete di
trasformazione livelli in impulsi e viceversa. n rete e
dallo schema di FtguraA.49a. Nella parte che segue Cl apphcheremo a1 progetto dl.
questa rete.
t" 1'lo'V; ,
.'. "'":
Ip.
, 'i!li"'" '
. , . , ", .... ,
'L,: ""01-'" .. t ,:..
'..
'"."",., -1"-
, (,:;.
, .,:l.' 'I $f,"
,.:,.,::...'''j''Il!'1
., .. .' tI1 '"
, \'..':d '" r..... \.
"-"'),
v <I..,...
;:. rl-'"''C:
.\.,:;;;,1; ... : " !',,;,
;
,: .. ..
-;;'.l.:l:" "
" 1':;;"" ... '.JW!',{,
".
:.f'>I",a,'1 'Ii'"
.. J :lii\',"
:.-.. . '.
;J, ....... ,'1.'-
- ',.1'.'
- .,;? ,,,'1 '".' ,,,;,.
'" $">!\' "
,,/ ,".o,j(j"','
., ...,r.>, J' "OJ! "
'"
.'.'Ol!,.. .. /'-!;" !j.
.,';<;.;-
,," - ':
,,""-.:,.., ,. ,,,
.. , " .- J
i
,
],!-'/

,. ""'.. -,
\ ,,'
".' . ,_'
\r!&"'I,r"
, "" .:;..,
':
r
.,:/, --,' ;(,-., ,. "'.,
.. ..r,-""'" .....' '
,,.1,,2,,,,.
:;,..-,;;.",."".,,",..... , ,:t',,:,
"
': 'j':, ,
.. '.'?:'p. , ,l \1
b) Sep-.rlltione oil R da G . .' ;:::ttf;t* \)'"
(H) e HLDA (A) negli impulsi RQ/GT (RIG).',.

'\<"'.J.:>'
In Figura A.50 viene data temporizzazione dei segnali
ll
. Si noti che quando .t..
'
- ".' '-.
;""
nNel seguito, per comodita di rappresentazioDe, sui diagrammi di stato e sulle tabelle di
transizione
l
si usano i simholi HI A, RIG rispettivamente per HLDR, HLDA e RQ/GT. ."
., "
552
I
664 Appendice A Sistemi digitali 555
H
,
Yz
I
I
-
I
.
S5,00
/
"
0-

~
0
(
Sl,lO S2,00 S3,lO S4,1l

y,
,
w .. U .-
"
, ,
0 0
"
, , , ,
"
, , , ,
"

, , ,
Y3 =0
Yo
,
Yl

.. ..

"

, ,

..
- - - -
u -
-
- -
"
-
- -

Y3=1
y, .. .. u
'"
~
, , , ,

, , , ,
u
, , ,

..
,

Y3=0
y,
"
w o. u

00 0
, , ,
u - - - -
"
-
-
.
..
- - - -
Y3 =1
Y3=1
.. .. ..

..

..
- - -

u

- - -
.. - - -

,
Y3
y,
y,-O
,
00 .. u ..
"

"

"


,
0
"
, ,


y,

S,
S, !!j.:.X:+-_
S. x
...
R A
, ,
, ,
, ,
, ,
,
, ,
S,
S,
S,
S.
S3

..

S, S, S, S,
,
S3 S3 S3 S3
,
S. S3
S,
S.
,
S. S3 S. S.
,
S, S, S, S,
H G
\
I
-
-
I
Figura A.54 Ma.ppe delle variabili di stato.
A.12 Esercizi
- I I
Se si usano flip-flop D si ottiene 1a rete d.i FiguraA.55 (dove vengono usati i noUli
effettivi de; segnali).
Figura A.53 Mappe delle uscite.
R
Esercizio A.3 8i impieghi il teorema di De Morgan per passare daUa prima aHa se-
ccnda forma canonica. in riferimento a una qualunque funzione booleana di 3 variabili
descritta, per esempio, da una tabella di verita.
Esercizio A.4 Si dimostri che qualsiasi espressione puo sempre essere ricondotta in
forma canonica. Si parta da una funzione espressa in forma algebrica qualunque.
Esercizio A.S Si dimostri can trasformazioni algebriche che .per.l'operatore XOR
vale la proprieta associativaj ovvero dimostrare che vale Xl ffi (X2 ffi X3) = Xl ffi X2 ffi X3
Esercizio A.6 Si pragetti un decbdificatore da BCD a Eccesso 3 (il codice BCD
codifica in forma binaria Ie dieci dfre da 0 a 9; il codice Eccesso 3 si ottiene dal
BCD sommando 3). PoicM Ie mappe presentano ben 6 condizioni e poiche niente
esclude che in ingresso si possa presentare una delle configurazioni corrispondenti a
condizioni di indifferenza
j
si dica quanta vale l'uscita per tali ingress'i, per esempio
1101. Sl progetti la rete che segnala gli ingressi non BCD.
Esercizio A.7 Si consideri l'espressione a+b(c +(e +1( .. ))), alia quale corrisponde
una rete a piu di due livelli, detta SPSPSP.... (Somma di Prodotto di Somma di .. ).
Si trovi una regola generale per passare alia corrispondente rete di soli NAND. Si
tratti 10 stesso problema per 11 caso duale di reti in forma PSPS....
Esercizio A.l 8i ilia una dimostrazione algebrica della validita. del teorema di De
Morgan per il caso generale di n variabili.
Esercizio A.2 8i dimostri che Ie forme canoniche sono uniche.
y ~ -1

0

0
"
-
.
- -
,
-
.
0

.

-
A
,
w
"'
u '0


"


,
,

, , , ,
Y3""0
y,
y! -1
,w
0' u
'"
~


..

- - -
u

..

-
y, + HYI
YIY' +Gy, + HYI Y,
HYIY2
Yl + Y,Y,
Y1Y'
y,
,
Yl -
,
Y, -
Ys =
R
A ~
y, -0
,
w 0' u '0

,


"
,

, ,
,


, ,

y,
\
I
l
I
I
-
-
-
-
I
J

I
664 Appendice A Sistemi digitali 555
H
,
Yz
I
I
-
I
.
S5,00
/
"
0-

~
0
(
Sl,lO S2,00 S3,lO S4,1l

y,
,
w .. U .-
"
, ,
0 0
"
, , , ,
"
, , , ,
"

, , ,
Y3 =0
Yo
,
Yl

.. ..

"

, ,

..
- - - -
u -
-
- -
"
-
- -

Y3=1
y, .. .. u
'"
~
, , , ,

, , , ,
u
, , ,

..
,

Y3=0
y,
"
w o. u

00 0
, , ,
u - - - -
"
-
-
.
..
- - - -
Y3 =1
Y3=1
.. .. ..

..

..
- - -

u

- - -
.. - - -

,
Y3
y,
y,-O
,
00 .. u ..
"

"

"


,
0
"
, ,


y,

S,
S, !!j.:.X:+-_
S. x
...
R A
, ,
, ,
, ,
, ,
,
, ,
S,
S,
S,
S.
S3

..

S, S, S, S,
,
S3 S3 S3 S3
,
S. S3
S,
S.
,
S. S3 S. S.
,
S, S, S, S,
H G
\
I
-
-
I
Figura A.54 Ma.ppe delle variabili di stato.
A.12 Esercizi
- I I
Se si usano flip-flop D si ottiene 1a rete d.i FiguraA.55 (dove vengono usati i noUli
effettivi de; segnali).
Figura A.53 Mappe delle uscite.
R
Esercizio A.3 8i impieghi il teorema di De Morgan per passare daUa prima aHa se-
ccnda forma canonica. in riferimento a una qualunque funzione booleana di 3 variabili
descritta, per esempio, da una tabella di verita.
Esercizio A.4 Si dimostri che qualsiasi espressione puo sempre essere ricondotta in
forma canonica. Si parta da una funzione espressa in forma algebrica qualunque.
Esercizio A.S Si dimostri can trasformazioni algebriche che .per.l'operatore XOR
vale la proprieta associativaj ovvero dimostrare che vale Xl ffi (X2 ffi X3) = Xl ffi X2 ffi X3
Esercizio A.6 Si pragetti un decbdificatore da BCD a Eccesso 3 (il codice BCD
codifica in forma binaria Ie dieci dfre da 0 a 9; il codice Eccesso 3 si ottiene dal
BCD sommando 3). PoicM Ie mappe presentano ben 6 condizioni e poiche niente
esclude che in ingresso si possa presentare una delle configurazioni corrispondenti a
condizioni di indifferenza
j
si dica quanta vale l'uscita per tali ingress'i, per esempio
1101. Sl progetti la rete che segnala gli ingressi non BCD.
Esercizio A.7 Si consideri l'espressione a+b(c +(e +1( .. ))), alia quale corrisponde
una rete a piu di due livelli, detta SPSPSP.... (Somma di Prodotto di Somma di .. ).
Si trovi una regola generale per passare alia corrispondente rete di soli NAND. Si
tratti 10 stesso problema per 11 caso duale di reti in forma PSPS....
Esercizio A.l 8i ilia una dimostrazione algebrica della validita. del teorema di De
Morgan per il caso generale di n variabili.
Esercizio A.2 8i dimostri che Ie forme canoniche sono uniche.
y ~ -1

0

0
"
-
.
- -
,
-
.
0

.

-
A
,
w
"'
u '0


"


,
,

, , , ,
Y3""0
y,
y! -1
,w
0' u
'"
~


..

- - -
u

..

-
y, + HYI
YIY' +Gy, + HYI Y,
HYIY2
Yl + Y,Y,
Y1Y'
y,
,
Yl -
,
Y, -
Ys =
R
A ~
y, -0
,
w 0' u '0

,


"
,

, ,
,


, ,

y,
\
I
l
I
I
-
-
-
-
I
J

Esercizio A.13 Si esamini it componente (ALU) 748181 e se ne discutano Ie funzfo-


nalita, Se ne esamini l'impiego ""sieme al componente 74182.
Esercizio A.14 Si, cateoli iI tempo di 'comrnutazi0ne, Ll
s
di un sommatore castruita
con il sommatore c0IDpIeto di Figura LlI. .
-
I
)-
-
),
...
1..
1-
_.
)..
I.
...
I' .
1-
1
)- .
I...
)-
]-
Sistemi digitali 557
,
A.I5 Si progetti 1a rete che costruisce un FFSR cia un FFT.
Esercizio A.16 Al termine della discussione r.elativa at progetto dt una rete per 1a
.generazione di un seguale di WAIT del Paragrafo AIl.1 5i eoaservato che mentre la
rete di FiguraA.48 riconosce comunque i1 passaggio basso di X, la rete di FiguraA.47
richiede che X sia mantenuto basso almena fino al ronte del elo.ek. Si discutano
eventua1i vantaggi 0 svantaggi delle due soluzioni rispetto a questocomportamento.
HU"
..
I-
"
..I-
"
"
'-H>" I-
"""
T
f-+-j,,,, '::J'>--
-Hy::J"':
)
I
Schema del con"ertil<Jr. HLDR/HLDA - RQ/GT.
D
Appendice' A
"} ,
ctACK . Dt Ql
"
RESET cUt "(l
y
,
Figura A.55
-"
, l'
-".. ) . ,
'''j;; ;(;,
"C .:/"'
>;--!"k ...,.'
p'l-' ..
, ' c!.'It\, .
.;. , .
..... '', ..'D'!l
'.' -':!- . ,., ",,;'",-,
.....'1;"1.
.,.,.,;,<j'...
,.,.:,c.,I'f :t"'''!;-.
':,';!'j0,t i'..

, . c.,>". "'"
',". "'''''-,.' ,,'"''
,cJ".,.".."
." .';'" ',:.>"
-. .... >. ",."
......... :A I ,-
- ...
- . ".. _,,1... "
,'-',,:,,,t: ;,"',l':""
:-..,.! .... ,' ,"",,""
'., :: ";.:;' ';""-" i
'.
-..... ".. ,,,,,.I.
'-'.,-;;:.1 . '
-' ... ,.,:;1:. :r.:1:i'- .
.. .#;.:
, -":/i\;:;f"
, ,".' ;'.,vi;; .
'.' .... ,
-'.;.:.r:-; ." '
.
'.' ".' i.i," ..:.
.', . ,<;.... .,,,

.Ii.' .'.11 ",," ..
:; .. :i'
.
..._,."ti,l..
.. . 'r,"
"i'rJ!<';: '<5:1".,:, ,
" .u .. "io." '. ".,.
...... "".,
...
.... ",;, IV':'"
,:t(ll, r,..... ,

" __ ,,111 ..
r"-AJII;""
'.,' ' " .... - ...,..., j ".;...
,',
, ...'.".... ,."",
"" ..

,..' ."
"""
., .. ...,.
...:. ,);c-r
lif
, . ......"::",-
"' ,1\:' " :i\l,,1I, "
""""1' "."
L."
,., .I,iII', J
','
, .,., ,
...;>':>.t'(. .
.';.. .'1'
,....,'.
, ;r:';'ft;;.tJt
Esercizio A.8 Le reti SP (PS) si trasformano direttamente in reti di NAND (NOR},
Ia tecni.ca ill?strata af paragrafo. AA:2.. Si verifichi. .che in
USClta una. ultenol'e ANI? dI em SI devona preosare gh mgressI" Ja,
tr""formazlOne naturale dlventa In retl di NOR (NAND),
Esercizio A.9 Si dimostri <he la rete di Figura A. 10' corri,ponde aU'OR e,e1usivo, ..:.
A..l0 AJ paragrafo la parita..e stata tramite una ";:..
sulla 0 neevuta A.I2}, Net caso del!a , .,.Y);:if1,
senale dI caratten dl n blt, IT calcoIo della panta puo essere effettuato
7
m trasmlssloue .\"
e in Ficezione, da una rete seqnenziafe che cal-coli it bit cii parita s-ulla stringa di . . i;,:--
via trasmessi (ricevuH). 31 progetti: una ,simile' rete per n =' 4 (in trasmissione Hbit,; ',' I:
di parita calcolato deve essere trasmesso corne quinto bit). . .
/';
Esercizlo A.Il Si: faccia riferlrnento ana ceHa del Bommatore compIeto costruita a ::. n;,1.
cia semis.ornmatorL m.adifi.chi la:. rete per farle eseguire Ie operazioni'
dl e Quah ope;azlOm IOglche 51 possona ottenere a basso costo con
J'agglUnta dl opportune hnee' dt controllo.
, 'M,-;':'"
Eser.dzio Si consideri di Figura 1.13 e si di contral-'
10 C3C2CtcoR_f = 1 - -011. Sl mea quanto vale 5, <;:>vvera che operaZlone effettua In :
"LV ':,.
rl.' .' ,',,, " , . .'
.' 1.'I,i}!.l" tw
'::',"-:i:":!-t" ;;;'j"
i&':'.:
. ... " '-i>;-,
'''" '" :,<'.' I '.,' , '
..".',\1 1'[0., .. ;..... ,
..
c,' '''t'
,I,..()r.:;: ..,"
. , }
.),;"'... w:.
'::., !f"

. I ..
, 'I" ',' 1/'''' .
C'".,"" ';
-.' ".-.iof".'
556
Esercizio A.13 Si esamini it componente (ALU) 748181 e se ne discutano Ie funzfo-
nalita, Se ne esamini l'impiego ""sieme al componente 74182.
Esercizio A.14 Si, cateoli iI tempo di 'comrnutazi0ne, Ll
s
di un sommatore castruita
con il sommatore c0IDpIeto di Figura LlI. .
-
I
)-
-
),
...
1..
1-
_.
)..
I.
...
I' .
1-
1
)- .
I...
)-
]-
Sistemi digitali 557
,
A.I5 Si progetti 1a rete che costruisce un FFSR cia un FFT.
Esercizio A.16 Al termine della discussione r.elativa at progetto dt una rete per 1a
.generazione di un seguale di WAIT del Paragrafo AIl.1 5i eoaservato che mentre la
rete di FiguraA.48 riconosce comunque i1 passaggio basso di X, la rete di FiguraA.47
richiede che X sia mantenuto basso almena fino al ronte del elo.ek. Si discutano
eventua1i vantaggi 0 svantaggi delle due soluzioni rispetto a questocomportamento.
HU"
..
I-
"
..I-
"
"
'-H>" I-
"""
T
f-+-j,,,, '::J'>--
-Hy::J"':
)
I
Schema del con"ertil<Jr. HLDR/HLDA - RQ/GT.
D
Appendice' A
"} ,
ctACK . Dt Ql
"
RESET cUt "(l
y
,
Figura A.55
-"
, l'
-".. ) . ,
'''j;; ;(;,
"C .:/"'
>;--!"k ...,.'
p'l-' ..
, ' c!.'It\, .
.;. , .
..... '', ..'D'!l
'.' -':!- . ,., ",,;'",-,
.....'1;"1.
.,.,.,;,<j'...
,.,.:,c.,I'f :t"'''!;-.
':,';!'j0,t i'..

, . c.,>". "'"
',". "'''''-,.' ,,'"''
,cJ".,.".."
." .';'" ',:.>"
-. .... >. ",."
......... :A I ,-
- ...
- . ".. _,,1... "
,'-',,:,,,t: ;,"',l':""
:-..,.! .... ,' ,"",,""
'., :: ";.:;' ';""-" i
'.
-..... ".. ,,,,,.I.
'-'.,-;;:.1 . '
-' ... ,.,:;1:. :r.:1:i'- .
.. .#;.:
, -":/i\;:;f"
, ,".' ;'.,vi;; .
'.' .... ,
-'.;.:.r:-; ." '
.
'.' ".' i.i," ..:.
.', . ,<;.... .,,,

.Ii.' .'.11 ",," ..
:; .. :i'
.
..._,."ti,l..
.. . 'r,"
"i'rJ!<';: '<5:1".,:, ,
" .u .. "io." '. ".,.
...... "".,
...
.... ",;, IV':'"
,:t(ll, r,..... ,

" __ ,,111 ..
r"-AJII;""
'.,' ' " .... - ...,..., j ".;...
,',
, ...'.".... ,."",
"" ..

,..' ."
"""
., .. ...,.
...:. ,);c-r
lif
, . ......"::",-
"' ,1\:' " :i\l,,1I, "
""""1' "."
L."
,., .I,iII', J
','
, .,., ,
...;>':>.t'(. .
.';.. .'1'
,....,'.
, ;r:';'ft;;.tJt
Esercizio A.8 Le reti SP (PS) si trasformano direttamente in reti di NAND (NOR},
Ia tecni.ca ill?strata af paragrafo. AA:2.. Si verifichi. .che in
USClta una. ultenol'e ANI? dI em SI devona preosare gh mgressI" Ja,
tr""formazlOne naturale dlventa In retl di NOR (NAND),
Esercizio A.9 Si dimostri <he la rete di Figura A. 10' corri,ponde aU'OR e,e1usivo, ..:.
A..l0 AJ paragrafo la parita..e stata tramite una ";:..
sulla 0 neevuta A.I2}, Net caso del!a , .,.Y);:if1,
senale dI caratten dl n blt, IT calcoIo della panta puo essere effettuato
7
m trasmlssloue .\"
e in Ficezione, da una rete seqnenziafe che cal-coli it bit cii parita s-ulla stringa di . . i;,:--
via trasmessi (ricevuH). 31 progetti: una ,simile' rete per n =' 4 (in trasmissione Hbit,; ',' I:
di parita calcolato deve essere trasmesso corne quinto bit). . .
/';
Esercizlo A.Il Si: faccia riferlrnento ana ceHa del Bommatore compIeto costruita a ::. n;,1.
cia semis.ornmatorL m.adifi.chi la:. rete per farle eseguire Ie operazioni'
dl e Quah ope;azlOm IOglche 51 possona ottenere a basso costo con
J'agglUnta dl opportune hnee' dt controllo.
, 'M,-;':'"
Eser.dzio Si consideri di Figura 1.13 e si di contral-'
10 C3C2CtcoR_f = 1 - -011. Sl mea quanto vale 5, <;:>vvera che operaZlone effettua In :
"LV ':,.
rl.' .' ,',,, " , . .'
.' 1.'I,i}!.l" tw
'::',"-:i:":!-t" ;;;'j"
i&':'.:
. ... " '-i>;-,
'''" '" :,<'.' I '.,' , '
..".',\1 1'[0., .. ;..... ,
..
c,' '''t'
,I,..()r.:;: ..,"
. , }
.),;"'... w:.
'::., !f"

. I ..
, 'I" ',' 1/'''' .
C'".,"" ';
-.' ".-.iof".'
556
_. I

_. I

_. I
I
--
_. )
_.
-. I

_.
-
-. I
-
-. I
--
I
--
-
_.
-
_..
-
_.
-
--
-
-
I
I
l
1
)

WI'

. '''''AI
. .
...' ,.-
,
' ..,' I';

"'!"!!f "\1;,' ""'",LI ...
. <.. .. ,
,.
";;'. ,1\ .J''!,
-1"'"
',,",".'f; t,;j"';
r,,
;., 'J'
''''\li(, ,. ",' ,
.. : ,(J"
, "'I " -\"
' .. :: i,' '
""":Iii' .
.. ". ".
,";;"",' ;l..; '.'
,,"_
.. ",,'-""'\0.: ri'
...
.:;...
.', ;, ;'\:".".'
'. ..
'.. :':'",.,.
_.( ," .'it.,.,

.,', .... 'rd:.
; A
':;.: ';Jit!' ...


t .. ,
-"J::, :, 'Ii ;,,,..'t:.,, ,
;,..... P,l,!

'iii-i'.""
i ','.,
., . V',,i'r< "".""
",:
", , .... '70 " .
,:..
I."""
,,, ....;-,;11.'
..
,'" ",b-
"i:', nr, 'iIi.'''.,
'f.;'::
: ;,..,;' .; 1 'f,f...
.:' ,1;1 "If .,
-'1: .". '-.-
.., }.,:: ' II' ,
":"',;\'i:. 'f : .. '
rJ>.;,,;

"., .,!,r/! ,i ..",
,,' ..,J, ".'
.' ,'" .. ' ,,'.
'N'!i\':
".,,' "
.. :;,
, ,:'.' :J....,.. '
, "5li"
''''_,a, .. ,,,
:\' :!".
'.' ),'....',}.;';
""1> "" '
. 'l.ib'"
} I, N.l'! .,1".:,=.

.. "'!Il"
.. ,.,.."'''''", .....,,;

,', '::-::1''-'
'If.li'll' '!!f .
.. "ol," " "I!" ..
::' {1
:", '., ViS (11'1':--
\,
", ",.t i'J' . "",
.- "\1 <,'l: ,'" '" A'"
" ,,',.j1t{.I!\j".... ,,'.'
'. " ,1 '..'
"..
'i '. ,<: . ,,/0'

, , 'it
:
.' '>\'..1;. ,
-. " ".,
..;.;"'. 'aI" ..
, "'<"'w"
., .. ,,<;.
, -' .
'" "to"" ..

.;:'",i
., ". ".
".', l'" .""
" .'.,'"
,':1:. '''1-:,-,-:
'., .' .,' ...
.. ',WJ"
,.iiE,;<" :,llit .

, 'i't,'):'
" ,,'

.',," .'. ,. J ,
.' ..,."
.... 'Ii]"'. '
" ...."," '
,....
,.
,-- ....._-
::"".,: ',,,",,,-, ..
"J" , ....' .
'.' 'i'!-I'-','
;.-l.V'j}1
, '.
'';:' '.'-" >Jt':').
',} i'i,J.) ."".... -
''", ';>-1 ..
tit,;,!):;
,,",::
' ,\ 'I' ,.,
.. " '" ,,", "
-"', ','." ''<:
;"'1)"0"'1 i,
' .. d!,
'<,' ......',),' ,\! \,;,,,
,. .',. ,,' ,',
'
'I" '
' ....= ,..
" ,";:;.' .. 'i "

,jl',J: t,'!U 'i"
,.' .,......1'
"':f'
B
L'architettura 8086
Questo capitola e dedicato all'approfondimento dell'architettura iAPX86. Si tratta
di una famiglia di microprocessori che.ha av-uto una forte influenza sullo sviluppo dei
calcalatari e dell'informatica, determinandone in larga parte lar crescita vertiginosa
verificatasi a partire dai primi anni ettanta. ,
La sigla iAPX estata introdotta dall'Intel qualche tempo dopa i'introduzione del-
la CPU 8086. Nel testa si usane in modo equivalente i termini llarchitettura iAPX86" ,
C'famiglia iAPX86
11
, "famiglia x 86" I Uarchitettura80 x 86", Uarchitettura '86" 0, piu
semplicemente, "architettura Intel
n
. Negli anni recenti essendo la produzione corrente
a 32 bit, essendosi l'architettura consolidata come standard di fatto nel mando dei
Personal Computer e infine, in previsione della futura architettura a 64 bit, viene
normalmente usata 13 sigla lA-32, per indicare "Architettura Intel a 32 bit
n
.
La CPU 8086, capo'tipite della farniglia, veune iutrodotta nel 1978 [Int79aj. La
stato della tecnologia del tempo e i vincoli imposti alia progettaziane dell
'
8086 (par-
venza di compatibilita. con 1'8085, integrato a 40 piedini), hanna avuto una notevole
influenza nel determinarne l'architettura e nel renderla non poco comphcata. Non-
ostante questa, l'Intel estata capace di introdurre, negli anni successivi, tutta una
serie di CPU che, seppur basate sulla medesima architettuia, oe hanna esteso Ie pre-
stazioni in modo impressionante, mantenendo la supremazia, nonostaote I'immissione
suI mercato di architetture certamente piu efficaci. Gli istograrnmi di FiguraB.l e di
FiguraB.2 illustrano in modo piu che evidente la cz:escita delle prestazioni offerte dai
vari modelli di CPU. 10 tabelie di FiguraB.3 e di FiguraBA forni,cona un quadro di
sintesi delle caratteristiche dei vari modelli.
ncapitola eorganizzato nel modo seguente. Viene prima esaminato in un certo
dettagho il microprecessere 8086, al nne di mettere in evidenza gli aspetti
minanti dell'architettura. Degli altri membri della famiglia vengono forniti dati di
confronto e trattati quegli aspett.i ritenuti importanti che non trovano altra colloea-
zione nel testo. Tenuto canto che sui. microprocessor; Intel esiste una vasta docu-
mentazione, si evita di scendere eccessivamente nei dettagli tecnici, rimandando agli
appropriati manuaJi. Per quanto si riferisce a questi ultimi, in bibliografia venga-
no riportati i riferimenti a molti manuali del passato. Dall'avvento del World Wide
Web, j'Intel pubblica (praticarnente) tutto su Web. Conviene' partire dall'indirizzo
\l''NW. intel. com e cia n cereare cio che interessa: si trovano manuali aggiornatissimi
sulla corrente architettura Intel oltre cbe istruttiyi tutorial.
_. I

_. I

_. I
I
--
_. )
_.
-. I

_.
-
-. I
-
-. I
--
I
--
-
_.
-
_..
-
_.
-
--
-
-
I
I
l
1
)

WI'

. '''''AI
. .
...' ,.-
,
' ..,' I';

"'!"!!f "\1;,' ""'",LI ...
. <.. .. ,
,.
";;'. ,1\ .J''!,
-1"'"
',,",".'f; t,;j"';
r,,
;., 'J'
''''\li(, ,. ",' ,
.. : ,(J"
, "'I " -\"
' .. :: i,' '
""":Iii' .
.. ". ".
,";;"",' ;l..; '.'
,,"_
.. ",,'-""'\0.: ri'
...
.:;...
.', ;, ;'\:".".'
'. ..
'.. :':'",.,.
_.( ," .'it.,.,

.,', .... 'rd:.
; A
':;.: ';Jit!' ...


t .. ,
-"J::, :, 'Ii ;,,,..'t:.,, ,
;,..... P,l,!

'iii-i'.""
i ','.,
., . V',,i'r< "".""
",:
", , .... '70 " .
,:..
I."""
,,, ....;-,;11.'
..
,'" ",b-
"i:', nr, 'iIi.'''.,
'f.;'::
: ;,..,;' .; 1 'f,f...
.:' ,1;1 "If .,
-'1: .". '-.-
.., }.,:: ' II' ,
":"',;\'i:. 'f : .. '
rJ>.;,,;

"., .,!,r/! ,i ..",
,,' ..,J, ".'
.' ,'" .. ' ,,'.
'N'!i\':
".,,' "
.. :;,
, ,:'.' :J....,.. '
, "5li"
''''_,a, .. ,,,
:\' :!".
'.' ),'....',}.;';
""1> "" '
. 'l.ib'"
} I, N.l'! .,1".:,=.

.. "'!Il"
.. ,.,.."'''''", .....,,;

,', '::-::1''-'
'If.li'll' '!!f .
.. "ol," " "I!" ..
::' {1
:", '., ViS (11'1':--
\,
", ",.t i'J' . "",
.- "\1 <,'l: ,'" '" A'"
" ,,',.j1t{.I!\j".... ,,'.'
'. " ,1 '..'
"..
'i '. ,<: . ,,/0'

, , 'it
:
.' '>\'..1;. ,
-. " ".,
..;.;"'. 'aI" ..
, "'<"'w"
., .. ,,<;.
, -' .
'" "to"" ..

.;:'",i
., ". ".
".', l'" .""
" .'.,'"
,':1:. '''1-:,-,-:
'., .' .,' ...
.. ',WJ"
,.iiE,;<" :,llit .

, 'i't,'):'
" ,,'

.',," .'. ,. J ,
.' ..,."
.... 'Ii]"'. '
" ...."," '
,....
,.
,-- ....._-
::"".,: ',,,",,,-, ..
"J" , ....' .
'.' 'i'!-I'-','
;.-l.V'j}1
, '.
'';:' '.'-" >Jt':').
',} i'i,J.) ."".... -
''", ';>-1 ..
tit,;,!):;
,,",::
' ,\ 'I' ,.,
.. " '" ,,", "
-"', ','." ''<:
;"'1)"0"'1 i,
' .. d!,
'<,' ......',),' ,\! \,;,,,
,. .',. ,,' ,',
'
'I" '
' ....= ,..
" ,";:;.' .. 'i "

,jl',J: t,'!U 'i"
,.' .,......1'
"':f'
B
L'architettura 8086
Questo capitola e dedicato all'approfondimento dell'architettura iAPX86. Si tratta
di una famiglia di microprocessori che.ha av-uto una forte influenza sullo sviluppo dei
calcalatari e dell'informatica, determinandone in larga parte lar crescita vertiginosa
verificatasi a partire dai primi anni ettanta. ,
La sigla iAPX estata introdotta dall'Intel qualche tempo dopa i'introduzione del-
la CPU 8086. Nel testa si usane in modo equivalente i termini llarchitettura iAPX86" ,
C'famiglia iAPX86
11
, "famiglia x 86" I Uarchitettura80 x 86", Uarchitettura '86" 0, piu
semplicemente, "architettura Intel
n
. Negli anni recenti essendo la produzione corrente
a 32 bit, essendosi l'architettura consolidata come standard di fatto nel mando dei
Personal Computer e infine, in previsione della futura architettura a 64 bit, viene
normalmente usata 13 sigla lA-32, per indicare "Architettura Intel a 32 bit
n
.
La CPU 8086, capo'tipite della farniglia, veune iutrodotta nel 1978 [Int79aj. La
stato della tecnologia del tempo e i vincoli imposti alia progettaziane dell
'
8086 (par-
venza di compatibilita. con 1'8085, integrato a 40 piedini), hanna avuto una notevole
influenza nel determinarne l'architettura e nel renderla non poco comphcata. Non-
ostante questa, l'Intel estata capace di introdurre, negli anni successivi, tutta una
serie di CPU che, seppur basate sulla medesima architettuia, oe hanna esteso Ie pre-
stazioni in modo impressionante, mantenendo la supremazia, nonostaote I'immissione
suI mercato di architetture certamente piu efficaci. Gli istograrnmi di FiguraB.l e di
FiguraB.2 illustrano in modo piu che evidente la cz:escita delle prestazioni offerte dai
vari modelli di CPU. 10 tabelie di FiguraB.3 e di FiguraBA forni,cona un quadro di
sintesi delle caratteristiche dei vari modelli.
ncapitola eorganizzato nel modo seguente. Viene prima esaminato in un certo
dettagho il microprecessere 8086, al nne di mettere in evidenza gli aspetti
minanti dell'architettura. Degli altri membri della famiglia vengono forniti dati di
confronto e trattati quegli aspett.i ritenuti importanti che non trovano altra colloea-
zione nel testo. Tenuto canto che sui. microprocessor; Intel esiste una vasta docu-
mentazione, si evita di scendere eccessivamente nei dettagli tecnici, rimandando agli
appropriati manuaJi. Per quanto si riferisce a questi ultimi, in bibliografia venga-
no riportati i riferimenti a molti manuali del passato. Dall'avvento del World Wide
Web, j'Intel pubblica (praticarnente) tutto su Web. Conviene' partire dall'indirizzo
\l''NW. intel. com e cia n cereare cio che interessa: si trovano manuali aggiornatissimi
sulla corrente architettura Intel oltre cbe istruttiyi tutorial.
I,
I-
,

l.
)
r'

-
I
1--
--
-
-
-
..
-
1-
L
I
)-
1--
1--
)-
SpecFP95
DSpeclNT9S
8,2
8,66
9,47
10)
11,)
12,
, , , , , ,
4 6 8 10 12 14 o 2
5,6
7,12
J
} 5::\,11
j),28
:f1

.l-------Jl,J
',I 01
,
,13
J
17
,
PENTIUM 166MHz
PENTIUM 200MHz
PENTIUM )SMHz
PENTIUM I00MHz
PENTIUM 120MHz
PENTIUM 133MHz
Prestazioni delle CPU Intel apartire dal Pentium
PENTIUM IS0MH!
PENTIUM MMX I66MH!
L'architettura 8086 561
PENTIUM MMX 200MHz
PENTIUM MMX 233MHz
PENTIUM PRO 150MHz, 2561< 12
PENTIUM PRO 166MHz. SI2K 12
PENTIUM PRO 180MHz, 258K 12
PENTIUM PRO 200MH!, 512K 12
PENTIUM PRO 200MH!, 1MB 12
PENTIUM II 233MHz
PENTIUM II 266MHz
PENTIUM 11300MHz
PENTIUM II 333MHz
Figura B.2 Andamento delle prestazioni della famiglia 8086, misurate secondo 10 standard
Spec95 per virgola mobile e per interi, a partire daJ Pentium. Da un cetto punto la pub-
blicistica Intel non fornisee piii i da.ti presta.zionali i.n modo jmmediato. n produttore usa
spesso indici di prestazioni a hoc. Del resto, \0 standard Spec95 estato superato dal nuovo
standard Spec2000 (Spec e una organizzazione internazionale ehe ha definito un certo nu-
mero di programmi di benchmark per 1a valutazione delle prestazioni. E del tutto naturale
che col passa.re del tempo i progra.mmi in questione vengano aggiomati.)
f
..


.' lPiJ,e'
<t-;ro\A'!l! '::'1"\,''''
,. '-', ' ,
, -.,', i;',1" :.... '
J'. .
.. ".l1",'
'i:::;-,,'
'.:-:'1V-

- .." ....,;;.'.
..... /r.:.. 1'"
__"'. _
,.:\,,,,.,, <l:fN,,,
',,..-:,,- ,- ,.
;"',;"-"'!I, ',_
".,t!".
::!;.'.
[:1' .
;.' :j.j;
"J' ,,,' ....
"'"
'- :11.',
,N:, ,".1:'1,
.":s:1'" "".' . , ." '",< 'm"
'<"..,,' ,.'
.-,.,.'...... "".
: '-:.1f.'" '
!... "'...;.._
-.,' iliY;;;,
' ..Mw.\ \ "I!;'

'!lJ'O'
,. \:...,
1,\"
.".,.",\.>" "..
,w_,.,') .
"':;-;;.t!/..I!I :i
,/, oj' Jl2.. '. '
,. ",''''',<c' "
',,',"t,,"" 1liU""
,"
'; ,.,J!"1i;,
,;:1; 1,*').
....-
"Cj.,
.;"l.l" " .,.... '.'
" . "". ,,"
''''It'i.'!l}'"

." "11,"','
,;" '.

..... ..
'.
, . ,.. ..
'.
", .. Jit." '"
.' y
".:':'""
, .... ...: ..
'. 'lv,::",+"""
""'fllll'"'' :>it;'"... " ...
"-'hI, ,0; I '.I'e
",',' --"I,'
':.....
,'.', ;O-.... ,
<y, 11''1-'''' . ' ..' .
;,_Li't...""",' '. ',:,,0
, ... 1'::lf,", .
" 'r', :).;!rmrt1:"'
',", ,+Y' iFl" '-" i
/
. (;..
':
'-",... ,. '.
.'.'" 'l';j';''''''''o, .. ,' .
, ..'. . .'. ,.,
:C?ril".' ,
"'A""",,',
.' .. ""'-'.l."
-,."..... ,. t
",'''W>'"If, "f'li!1 . '"..'.
{Of \"':':
,.L I",(I,
'"..
',;.......'. ,"., ""
I*, jt
l
,:>;"
, ".. i'.'. "
.
.'" ,I':':
".; .. - ''''? ,', ..
....
.' .," -v. -,".:' '"
'.;'.\l' ,;r;f,!!}
"j/, .' l'
'01,
"";'';1: '." '('-,'
" j;\f':
. t
:',t',ii. il' J!k;"..
, ,,!:.J"
.....
:.,!,
,(",
":::iJMJj..::. '-;/
'" ""_
.... : t, '!"
, ,,"
, ,.. '1i! ,.
"'. 'I' .
' r't';j:;'
.....,fO.,:;'l;
.),
''',:".' . 'I' ..
", "l):
':' :.. '11::1" "
..
,;, _J "."" ';-;"1.1 ,
",'/,t
1
'.'\,
... ,., '.'.!' 1i''''' '.
""'.j:'!-"
, . '
"!f:i:i;t "
", ... ...
, ,'.'
"." ,,:.:.- ?
':;:d'-,; :e:\.:,
""IP'"
.. ''"
,
",-. H
, ,-,1',,, 'j1!i
l
",'
.''''.
"""\',-<
''i'' v'
.- "
.\,:!N.,,<
',./.t"j';;'-i '
'''''''',
,'""" I'

'." ...:q, ';10' ..'
.. """" ""
'.
'.j,ii-<o'" ,,.
,. ,'-oC'l-
2SO
218,9
200
166,3
1S0
126,5
100
'00
so
"
'"
41
54
15,4
"
25
"
70,7
0,33
Prestazioni in MIPS delle CPU Intel dall'8086 al Pentium
8086 SMf-Iz
BOB68MHz 0,66
8086 10MHz. 0,75
8OB8 5MHz 0,33
wee BMHz 11,75,
(1982) 2868 MHz 1,2
28612MHz 2,66
(1985) 3860X l6MHz 3,6
386DX 25MHt
3860X 33MHz 11,.
386SX 2QMHz. 2,5
386SX 25MHz 2,7
38SSX 33MHz 2,9
386Sl20MHz 4,21
386Sl 25 MHz 5.3
(1989} 4860X 25MHZ
4860X33MHz
486DX SOI.4Hz
486SX 20MHz
486SX 25MHz
486SX33MHz
4860X2 50MHz
4fl60X2 66MH:t
48SSL 20MHz
486SL 25MHz
486Sl33MHz
486DX475MHz
486DX4 l00MHz .
o
(1993) PENTIUM 60MHz
PENTIUM 75MHz
PENTIUM 100MHz
PNTIUM 120MHz
PENTIUM 133MHz
('979)
Figura B.l Incremento delle prestazioni dei microprocessori della famiglia 8086, Le
zioni sono MIPS. nPentium estato I'ultimo modello di CPU Intel per il quale Ie prestazioni
sono state date in MIPS. .
560 Appendice B
I,
I-
,

l.
)
r'

-
I
1--
--
-
-
-
..
-
1-
L
I
)-
1--
1--
)-
SpecFP95
DSpeclNT9S
8,2
8,66
9,47
10)
11,)
12,
, , , , , ,
4 6 8 10 12 14 o 2
5,6
7,12
J
} 5::\,11
j),28
:f1

.l-------Jl,J
',I 01
,
,13
J
17
,
PENTIUM 166MHz
PENTIUM 200MHz
PENTIUM )SMHz
PENTIUM I00MHz
PENTIUM 120MHz
PENTIUM 133MHz
Prestazioni delle CPU Intel apartire dal Pentium
PENTIUM IS0MH!
PENTIUM MMX I66MH!
L'architettura 8086 561
PENTIUM MMX 200MHz
PENTIUM MMX 233MHz
PENTIUM PRO 150MHz, 2561< 12
PENTIUM PRO 166MHz. SI2K 12
PENTIUM PRO 180MHz, 258K 12
PENTIUM PRO 200MH!, 512K 12
PENTIUM PRO 200MH!, 1MB 12
PENTIUM II 233MHz
PENTIUM II 266MHz
PENTIUM 11300MHz
PENTIUM II 333MHz
Figura B.2 Andamento delle prestazioni della famiglia 8086, misurate secondo 10 standard
Spec95 per virgola mobile e per interi, a partire daJ Pentium. Da un cetto punto la pub-
blicistica Intel non fornisee piii i da.ti presta.zionali i.n modo jmmediato. n produttore usa
spesso indici di prestazioni a hoc. Del resto, \0 standard Spec95 estato superato dal nuovo
standard Spec2000 (Spec e una organizzazione internazionale ehe ha definito un certo nu-
mero di programmi di benchmark per 1a valutazione delle prestazioni. E del tutto naturale
che col passa.re del tempo i progra.mmi in questione vengano aggiomati.)
f
..


.' lPiJ,e'
<t-;ro\A'!l! '::'1"\,''''
,. '-', ' ,
, -.,', i;',1" :.... '
J'. .
.. ".l1",'
'i:::;-,,'
'.:-:'1V-

- .." ....,;;.'.
..... /r.:.. 1'"
__"'. _
,.:\,,,,.,, <l:fN,,,
',,..-:,,- ,- ,.
;"',;"-"'!I, ',_
".,t!".
::!;.'.
[:1' .
;.' :j.j;
"J' ,,,' ....
"'"
'- :11.',
,N:, ,".1:'1,
.":s:1'" "".' . , ." '",< 'm"
'<"..,,' ,.'
.-,.,.'...... "".
: '-:.1f.'" '
!... "'...;.._
-.,' iliY;;;,
' ..Mw.\ \ "I!;'

'!lJ'O'
,. \:...,
1,\"
.".,.",\.>" "..
,w_,.,') .
"':;-;;.t!/..I!I :i
,/, oj' Jl2.. '. '
,. ",''''',<c' "
',,',"t,,"" 1liU""
,"
'; ,.,J!"1i;,
,;:1; 1,*').
....-
"Cj.,
.;"l.l" " .,.... '.'
" . "". ,,"
''''It'i.'!l}'"

." "11,"','
,;" '.

..... ..
'.
, . ,.. ..
'.
", .. Jit." '"
.' y
".:':'""
, .... ...: ..
'. 'lv,::",+"""
""'fllll'"'' :>it;'"... " ...
"-'hI, ,0; I '.I'e
",',' --"I,'
':.....
,'.', ;O-.... ,
<y, 11''1-'''' . ' ..' .
;,_Li't...""",' '. ',:,,0
, ... 1'::lf,", .
" 'r', :).;!rmrt1:"'
',", ,+Y' iFl" '-" i
/
. (;..
':
'-",... ,. '.
.'.'" 'l';j';''''''''o, .. ,' .
, ..'. . .'. ,.,
:C?ril".' ,
"'A""",,',
.' .. ""'-'.l."
-,."..... ,. t
",'''W>'"If, "f'li!1 . '"..'.
{Of \"':':
,.L I",(I,
'"..
',;.......'. ,"., ""
I*, jt
l
,:>;"
, ".. i'.'. "
.
.'" ,I':':
".; .. - ''''? ,', ..
....
.' .," -v. -,".:' '"
'.;'.\l' ,;r;f,!!}
"j/, .' l'
'01,
"";'';1: '." '('-,'
" j;\f':
. t
:',t',ii. il' J!k;"..
, ,,!:.J"
.....
:.,!,
,(",
":::iJMJj..::. '-;/
'" ""_
.... : t, '!"
, ,,"
, ,.. '1i! ,.
"'. 'I' .
' r't';j:;'
.....,fO.,:;'l;
.),
''',:".' . 'I' ..
", "l):
':' :.. '11::1" "
..
,;, _J "."" ';-;"1.1 ,
",'/,t
1
'.'\,
... ,., '.'.!' 1i''''' '.
""'.j:'!-"
, . '
"!f:i:i;t "
", ... ...
, ,'.'
"." ,,:.:.- ?
':;:d'-,; :e:\.:,
""IP'"
.. ''"
,
",-. H
, ,-,1',,, 'j1!i
l
",'
.''''.
"""\',-<
''i'' v'
.- "
.\,:!N.,,<
',./.t"j';;'-i '
'''''''',
,'""" I'

'." ...:q, ';10' ..'
.. """" ""
'.
'.j,ii-<o'" ,,.
,. ,'-oC'l-
2SO
218,9
200
166,3
1S0
126,5
100
'00
so
"
'"
41
54
15,4
"
25
"
70,7
0,33
Prestazioni in MIPS delle CPU Intel dall'8086 al Pentium
8086 SMf-Iz
BOB68MHz 0,66
8086 10MHz. 0,75
8OB8 5MHz 0,33
wee BMHz 11,75,
(1982) 2868 MHz 1,2
28612MHz 2,66
(1985) 3860X l6MHz 3,6
386DX 25MHt
3860X 33MHz 11,.
386SX 2QMHz. 2,5
386SX 25MHz 2,7
38SSX 33MHz 2,9
386Sl20MHz 4,21
386Sl 25 MHz 5.3
(1989} 4860X 25MHZ
4860X33MHz
486DX SOI.4Hz
486SX 20MHz
486SX 25MHz
486SX33MHz
4860X2 50MHz
4fl60X2 66MH:t
48SSL 20MHz
486SL 25MHz
486Sl33MHz
486DX475MHz
486DX4 l00MHz .
o
(1993) PENTIUM 60MHz
PENTIUM 75MHz
PENTIUM 100MHz
PNTIUM 120MHz
PENTIUM 133MHz
('979)
Figura B.l Incremento delle prestazioni dei microprocessori della famiglia 8086, Le
zioni sono MIPS. nPentium estato I'ultimo modello di CPU Intel per il quale Ie prestazioni
sono state date in MIPS. .
560 Appendice B
-' I
-. l
-
.. )
-
_. I
-
... I
-
_.! I
-
-.,I
-
_. I
_.
-
_.
-
-.
-
- .
-
-
I
!
I
\
J
)
562 Appendice B
80S11 80286 80386 80486 Pentium
anno
'" rO
U. on.
t.<:,,01081 HMOS HMOS CMOS CMOS Bi-CMOS
(dim....len.)
(oS "Ill)
I'm) .. m) (1 "m) (0,8 "m)
nO t ........i.tor 2g.000 134.000 :ns.ooo 1.200.000 3.100.000
(req. int/est
'I'
8/12 50/26 66/33 200/66
ir"q_ int.-oduaion..
,

" "
60
nO piedin;

..
'"
...
273
bus
"
..
"
"
"
indirini bit
,.
" "
" "
Figura B.3 Caratteristiche dei microprocessori Intel della. famiglia iAPX86.
PeMium Pentium Pentium II Pentium II Pentium III
P,. MMX
Xeo"
&.no_:'.'_

CIM'f>S cfi:;>I(;s
CV:l6S t..,nolog'.
(dim....ion.)
(0,36 JIom) (O,311 JoIm) (0,35 (0,25 I'm) (0,18 I'm)
n 0 tr..
5.500.000 4.600.000 7.500.000 1.600.000 28.100.000
r...q. int/... t
,.."..
23
1
%66
333/66 460/100
800'133
lTeq. IntrodusiOD" 1
'"
400 0
.. Pi..dri:
,&1
,..
'"
32.
'"
bus dati bit .. ..
" "
..
il1diris.i bit
"
"
32 32
"
Figura B.4 Caratteristiche dei microprocessori Intel da.l Pentium Pro in avantL
la terminologia del costruttore si parla di famiglia/architettura P-6 per denotare queste
macchine.
Bol Un po' di storia
Obiettivo dichiarato dall'Intel al momeoto dell'introduzione della CPU 8086 era la
realizzazione di un microprocessore che migliorasse} di un oecline di grandezza} ie
prestazioni del precedente micro 8080/8085, mantenendo con questa una parvenza di
compatibilita
1
.
Fu il primo micro della seconda generazione - 16 bit e spazio degli indirizzi di
almeno 1 Mbyte - a essere disponibite sui mercato, precedendo di circa un anno i
diretti concorrenti: 10 Z8000 (Zilog) e U 68000 (Motorola). Cic permise all'Intel di
conquistarsi una larga fetta del mercato professionale e industriale) anche perche 1a
societa. fu attenta at problema della produzione del software in ambiente industriale,
accompagnando l'introd\lzione del micro con 130 disponibilita di un linguaggio di pro-
grammazione di alto tivello _U PL/M-86, una sorta di PL/I per microprocessori -
can il quaJe si riducevano fortemente i tempi di sviluppo rispetto all}impiego, allora
largamente diffuso, del linguaggio assemblativo. n primo manuale sull'8086 [Int79a]
1In pratica una vera compatibilita non esisteva, anche se essa ha avuto quaJche conseguenza sulle
caratteristiche architetturali della. CPU 8086. La successiva evoluzione dimostrb che queUo della
compatibilita. con il precedente mondo a 8 bit era un problema inesistEmte.
- f : .. or.

fl.j:'
, .. ,. ,.. '
""
l"-" "..
:' -1.\,:;"
;' " ".....", ...

',' .\"-''''
.
,.?;"'i."f? .
:""1;;''<ii .
.,,1" ..',.,
,.1.,,: 4' ," .. ,'"
, "'1" .' .. ,,-.'
,
",
.,',"'ll." ..."
:'t't
i
.:
",_... ,." .."
.....'(:.;.:,..
.
.''"'1\'" ._T'
_.; :'1""
r '.-'
"rf;'" ..
,.'..
_ ,
_-; ;. '
." .'IJ:: .W
" ..," '... ' .-
.' ...",;;";... '
, .1'\'J"'\7 "'.'. :
., .. .'\:.-,i
'I' ....
.. ..
,",r," .;.
..r.
".,.''''I.h ,'I".'
I, '.';' ,,' .;1'"
"",-" ,,'"
, . ", h' ',' ,\
, ... ' I"'j;! \.",,,'-
"-,,.,,\., ."..... ','
.,.."1,''',,,,' :.;f"
it':
.;.' .
:
'\9";"

.!f:.":-'.
"'. ''','.)lwi
',Il'""
'."'l','. ,:r,
.; (,..
1:"\'
"
.. ...
'. " ,", j" " .', .1," ....
, .. ,1"('" .. "
""""i'l't.,,,\'"
'110"/"""'
"""" .,,', ,",,"
, " ... '.,' ,,' .
" , . ,'-' 1'/:..
- ' "" ,"' .
,,,,,,";(1::,. ::;.
, ." . '
'. .,/,. ,; ,
, 'Ii. .'" v....
..}.-,..."... ...:;
\.... "':,1"1"

.... ,.,., ..".,
' .. ;.r ..... -.;-,
.'}'} " .".- >,"'-. ,.,.-.,
.','-' .,tr. ,,(1, .....,'
.. '.l'''' .. ' '" I .. , . '..... :.
,.; .. " : ..
.. .:',.;....."01' .
."'- r
, , ..", , r""
'. :... ,.

.. ..;. '
"r' ":.f. '.
"; "":"l' i." " ...t. '
"','\0 ...1 ;,:'.;[,1'1
.'."'>': ,','1 ',',r, ,:
... ',It ..',.
(,:lo'
,
. ,.r...' . ,"
I;' ',',.,:':,
..,..,,"" .""
....
",:V... 'J ".
",'t'f(' -
.:.... :f.1,;:
.......
,ti:.,',
_., f
.Jf:;:
j, '," ljI: .., ..
-,..,..... "., .

",
",\./;1,. ,,1:"':
.... ".",' .. ," .

" .,.1 ..
,
:1!t.'
.;".1" ., " 1.,,,.-
.-',; ....
,. "
, .......;)" .. ;(
-, .."., ,." .
... .. .,,,",'
I .. "" <.;"\Ii, .
":(jo,',,,..'
i,;....
';:"1;< .:'1':-.'
_. "" .
,. /.. il";
..!J'.... : T


'h,I,, ".
".';';",\" (,11""
',"', -,",',I'
'.. " .,,,,"'>1 ..
...... r.\"'i'" "It;:,
.'
,.' . ,.Il,I!'. .... "

,', lfri
.' ",," ,,0/<.
."n .,lil,J"'
,;. . .lla . #' ..
. ,
L'architettura 8086 563
del' 1979 dedicava un numero non trascurabile di pagine alllimpiego del PL/M-86,
cosa insolita per l'epoca
2
. .
Ma la famiglia 8086 si impose in modo schiacciante con 1'8088, versione a 8
bit de11'8086, introdotta dall'Intel piu di un anna dopo 1'8086. V8088 e una CPU
completamente compatibile can 1'8086. Ha un parallelismo interne di 16 bit, capace
di indirizzare fino a 1Mbyte di memorial rna il bus dati esterno edi 8 bit .
Ne119811'IBM introduceva un Personal Computer} il PC IBM
I
basato sui micro
8088
1
con frequenza di clock pari a 4,77 MHz.
n PC IBM non era il primo Personal Computer a fare la sua comparsa sul
mercato. Da anni era in commercia una varieta di calcolatori personali basati su
microprocessori a 8 bit tipo 8085 0 Z80. Queste macchine impiegavano normal-
mente il sistema operativo CP1M, 10 standard delPepoca, che sembrava non temere
concorrenza e di cecto nessuno ne avrebbe profetizzato una rapida scomparsa. Su
un percorso proprio procedeva la Soc. Apple} the produceva il calcolatore personale
Apple II, basato suI micro 6502 (Rockwell)} pure a 8 bit
l
dotato di un proprio sistema
operativo.
Nello stesso periodo in cui I'IBM introduceva il PC, la Digital Equipment (DEC)
introduceva un calcolatore personale (detto Rainbow) che, dentro la stessa scatola,
conteneva una CPU Z80 e una CPU 8088. Con tale macchina, 1a Digital
l
aUora secon-
do colosso informatica, preceduta soia dalPIBM come fatturato, intendeva mantenere
una totale compatibilita. con il mondo CP1M a 8 bit e} al tempo stesso, percorrere
la strada dei 16 bit e dello spazio di memoria superiore ai 64 kbyte
3
. Seppure tec-
nicamente superiore e sebbene prodotto da un costruttore eli tutto rispetto, questa
calcolatore personale non ebbe un successo degno di nota, schiacciato
l
come tutti gli
altri calcolatori personali, dalPaffermarsi del PC IBM.
Per un'idea del perche iI PC IBM abbia goduto eli tanto favore
l
bisogna
tener presente che} fino agli inizi deglJ anni ottanta) p.egli USA) che in pratica rap-
preseptavano in modo quasi esclusivo it mercato dei calcolatori, la sigla uIBM" e la
parola "calcolatori" erano praticamente sinonimi
4
. Quando PIBM introdusse il PC,
2n linguaggio Cera roba da adepti. I produttori di microprocessori aJ massimo facevano qualche
accenno alia programmazione in Iinguaggio Assembler, senza nascondere it fastidio di dover de
dkare spazio a Questioni considerate insignificanti rispetto a QueUe relative aU'architettura del
microprocessore e al suo impiego nella. proget.tazione elettronico-aistemistica.
3Si tenga presente che la caratteristica cbe distingueva in modo apprezzabile 1'8088 da. 8085, Z80,
6800 e da tutti gli altri microprocessori a 8 bit della precedente generazione, cOnsisteva proprio nel
fatto che questi ultimi avevano uno spazio di indirizzamento limitato a 64 kbyte. L'8088 era il primo
micro a 8 bit a sfondare tale confine e a mettere a disposizione uno apa.zio di memoria - allora
ritenuto sprop.ositatarnente arnpio, tanto che U software di base del PC ne impiego ben un terzo
come memoria ROM - che avrebbe consentito 10 sviluppo di programmi e applicazioni adeguate al
soddisfacimento delle esigenze dell'utente generico. Alcune di queste applicazioni si sana tra.mandate
seppure modificate, fino ai glomi presenti. L'8088 aveva Ie prestazioni di un micro a 16 bit, rna il
fatto di avere un bus dati a 8 bit permetteva di ridurre i cosh dell'elettronica. Del resto, Ie' periferiche
impiegabili su Personal Computer erano praticamente solo a 8 bit, mentre la. velocita de1l'8088 era
perono debordante per Ie tipiche applicazioni deU'epoca.
4Non e il solo caso di identificazione di un marchio di fabbrica con un tipo di prodotto merceo
logico. In Italia, la parola "Ferodo" ricorda il materiale impiegato nei freni degli autoveicoli dal suo
iniziale e principale produttore. Chi ha visto il celebre film di Stanley Kubrick "2001 Odissea nel"
10 spazio" ricordera. che il calcolatore responsabile dena gestione del controllo lao navicella spaziale,
si chiarnava HAL 9000. La sigla HAL era una traBposizione di IBM; si ottiene infatti prendendo
ordinatarnente Ie lettere che nell'ordine alfabetico precedono queUe in IBM.
-' I
-. l
-
.. )
-
_. I
-
... I
-
_.! I
-
-.,I
-
_. I
_.
-
_.
-
-.
-
- .
-
-
I
!
I
\
J
)
562 Appendice B
80S11 80286 80386 80486 Pentium
anno
'" rO
U. on.
t.<:,,01081 HMOS HMOS CMOS CMOS Bi-CMOS
(dim....len.)
(oS "Ill)
I'm) .. m) (1 "m) (0,8 "m)
nO t ........i.tor 2g.000 134.000 :ns.ooo 1.200.000 3.100.000
(req. int/est
'I'
8/12 50/26 66/33 200/66
ir"q_ int.-oduaion..
,

" "
60
nO piedin;

..
'"
...
273
bus
"
..
"
"
"
indirini bit
,.
" "
" "
Figura B.3 Caratteristiche dei microprocessori Intel della. famiglia iAPX86.
PeMium Pentium Pentium II Pentium II Pentium III
P,. MMX
Xeo"
&.no_:'.'_

CIM'f>S cfi:;>I(;s
CV:l6S t..,nolog'.
(dim....ion.)
(0,36 JIom) (O,311 JoIm) (0,35 (0,25 I'm) (0,18 I'm)
n 0 tr..
5.500.000 4.600.000 7.500.000 1.600.000 28.100.000
r...q. int/... t
,.."..
23
1
%66
333/66 460/100
800'133
lTeq. IntrodusiOD" 1
'"
400 0
.. Pi..dri:
,&1
,..
'"
32.
'"
bus dati bit .. ..
" "
..
il1diris.i bit
"
"
32 32
"
Figura B.4 Caratteristiche dei microprocessori Intel da.l Pentium Pro in avantL
la terminologia del costruttore si parla di famiglia/architettura P-6 per denotare queste
macchine.
Bol Un po' di storia
Obiettivo dichiarato dall'Intel al momeoto dell'introduzione della CPU 8086 era la
realizzazione di un microprocessore che migliorasse} di un oecline di grandezza} ie
prestazioni del precedente micro 8080/8085, mantenendo con questa una parvenza di
compatibilita
1
.
Fu il primo micro della seconda generazione - 16 bit e spazio degli indirizzi di
almeno 1 Mbyte - a essere disponibite sui mercato, precedendo di circa un anno i
diretti concorrenti: 10 Z8000 (Zilog) e U 68000 (Motorola). Cic permise all'Intel di
conquistarsi una larga fetta del mercato professionale e industriale) anche perche 1a
societa. fu attenta at problema della produzione del software in ambiente industriale,
accompagnando l'introd\lzione del micro con 130 disponibilita di un linguaggio di pro-
grammazione di alto tivello _U PL/M-86, una sorta di PL/I per microprocessori -
can il quaJe si riducevano fortemente i tempi di sviluppo rispetto all}impiego, allora
largamente diffuso, del linguaggio assemblativo. n primo manuale sull'8086 [Int79a]
1In pratica una vera compatibilita non esisteva, anche se essa ha avuto quaJche conseguenza sulle
caratteristiche architetturali della. CPU 8086. La successiva evoluzione dimostrb che queUo della
compatibilita. con il precedente mondo a 8 bit era un problema inesistEmte.
- f : .. or.

fl.j:'
, .. ,. ,.. '
""
l"-" "..
:' -1.\,:;"
;' " ".....", ...

',' .\"-''''
.
,.?;"'i."f? .
:""1;;''<ii .
.,,1" ..',.,
,.1.,,: 4' ," .. ,'"
, "'1" .' .. ,,-.'
,
",
.,',"'ll." ..."
:'t't
i
.:
",_... ,." .."
.....'(:.;.:,..
.
.''"'1\'" ._T'
_.; :'1""
r '.-'
"rf;'" ..
,.'..
_ ,
_-; ;. '
." .'IJ:: .W
" ..," '... ' .-
.' ...",;;";... '
, .1'\'J"'\7 "'.'. :
., .. .'\:.-,i
'I' ....
.. ..
,",r," .;.
..r.
".,.''''I.h ,'I".'
I, '.';' ,,' .;1'"
"",-" ,,'"
, . ", h' ',' ,\
, ... ' I"'j;! \.",,,'-
"-,,.,,\., ."..... ','
.,.."1,''',,,,' :.;f"
it':
.;.' .
:
'\9";"

.!f:.":-'.
"'. ''','.)lwi
',Il'""
'."'l','. ,:r,
.; (,..
1:"\'
"
.. ...
'. " ,", j" " .', .1," ....
, .. ,1"('" .. "
""""i'l't.,,,\'"
'110"/"""'
"""" .,,', ,",,"
, " ... '.,' ,,' .
" , . ,'-' 1'/:..
- ' "" ,"' .
,,,,,,";(1::,. ::;.
, ." . '
'. .,/,. ,; ,
, 'Ii. .'" v....
..}.-,..."... ...:;
\.... "':,1"1"

.... ,.,., ..".,
' .. ;.r ..... -.;-,
.'}'} " .".- >,"'-. ,.,.-.,
.','-' .,tr. ,,(1, .....,'
.. '.l'''' .. ' '" I .. , . '..... :.
,.; .. " : ..
.. .:',.;....."01' .
."'- r
, , ..", , r""
'. :... ,.

.. ..;. '
"r' ":.f. '.
"; "":"l' i." " ...t. '
"','\0 ...1 ;,:'.;[,1'1
.'."'>': ,','1 ',',r, ,:
... ',It ..',.
(,:lo'
,
. ,.r...' . ,"
I;' ',',.,:':,
..,..,,"" .""
....
",:V... 'J ".
",'t'f(' -
.:.... :f.1,;:
.......
,ti:.,',
_., f
.Jf:;:
j, '," ljI: .., ..
-,..,..... "., .

",
",\./;1,. ,,1:"':
.... ".",' .. ," .

" .,.1 ..
,
:1!t.'
.;".1" ., " 1.,,,.-
.-',; ....
,. "
, .......;)" .. ;(
-, .."., ,." .
... .. .,,,",'
I .. "" <.;"\Ii, .
":(jo,',,,..'
i,;....
';:"1;< .:'1':-.'
_. "" .
,. /.. il";
..!J'.... : T


'h,I,, ".
".';';",\" (,11""
',"', -,",',I'
'.. " .,,,,"'>1 ..
...... r.\"'i'" "It;:,
.'
,.' . ,.Il,I!'. .... "

,', lfri
.' ",," ,,0/<.
."n .,lil,J"'
,;. . .lla . #' ..
. ,
L'architettura 8086 563
del' 1979 dedicava un numero non trascurabile di pagine alllimpiego del PL/M-86,
cosa insolita per l'epoca
2
. .
Ma la famiglia 8086 si impose in modo schiacciante con 1'8088, versione a 8
bit de11'8086, introdotta dall'Intel piu di un anna dopo 1'8086. V8088 e una CPU
completamente compatibile can 1'8086. Ha un parallelismo interne di 16 bit, capace
di indirizzare fino a 1Mbyte di memorial rna il bus dati esterno edi 8 bit .
Ne119811'IBM introduceva un Personal Computer} il PC IBM
I
basato sui micro
8088
1
con frequenza di clock pari a 4,77 MHz.
n PC IBM non era il primo Personal Computer a fare la sua comparsa sul
mercato. Da anni era in commercia una varieta di calcolatori personali basati su
microprocessori a 8 bit tipo 8085 0 Z80. Queste macchine impiegavano normal-
mente il sistema operativo CP1M, 10 standard delPepoca, che sembrava non temere
concorrenza e di cecto nessuno ne avrebbe profetizzato una rapida scomparsa. Su
un percorso proprio procedeva la Soc. Apple} the produceva il calcolatore personale
Apple II, basato suI micro 6502 (Rockwell)} pure a 8 bit
l
dotato di un proprio sistema
operativo.
Nello stesso periodo in cui I'IBM introduceva il PC, la Digital Equipment (DEC)
introduceva un calcolatore personale (detto Rainbow) che, dentro la stessa scatola,
conteneva una CPU Z80 e una CPU 8088. Con tale macchina, 1a Digital
l
aUora secon-
do colosso informatica, preceduta soia dalPIBM come fatturato, intendeva mantenere
una totale compatibilita. con il mondo CP1M a 8 bit e} al tempo stesso, percorrere
la strada dei 16 bit e dello spazio di memoria superiore ai 64 kbyte
3
. Seppure tec-
nicamente superiore e sebbene prodotto da un costruttore eli tutto rispetto, questa
calcolatore personale non ebbe un successo degno di nota, schiacciato
l
come tutti gli
altri calcolatori personali, dalPaffermarsi del PC IBM.
Per un'idea del perche iI PC IBM abbia goduto eli tanto favore
l
bisogna
tener presente che} fino agli inizi deglJ anni ottanta) p.egli USA) che in pratica rap-
preseptavano in modo quasi esclusivo it mercato dei calcolatori, la sigla uIBM" e la
parola "calcolatori" erano praticamente sinonimi
4
. Quando PIBM introdusse il PC,
2n linguaggio Cera roba da adepti. I produttori di microprocessori aJ massimo facevano qualche
accenno alia programmazione in Iinguaggio Assembler, senza nascondere it fastidio di dover de
dkare spazio a Questioni considerate insignificanti rispetto a QueUe relative aU'architettura del
microprocessore e al suo impiego nella. proget.tazione elettronico-aistemistica.
3Si tenga presente che la caratteristica cbe distingueva in modo apprezzabile 1'8088 da. 8085, Z80,
6800 e da tutti gli altri microprocessori a 8 bit della precedente generazione, cOnsisteva proprio nel
fatto che questi ultimi avevano uno spazio di indirizzamento limitato a 64 kbyte. L'8088 era il primo
micro a 8 bit a sfondare tale confine e a mettere a disposizione uno apa.zio di memoria - allora
ritenuto sprop.ositatarnente arnpio, tanto che U software di base del PC ne impiego ben un terzo
come memoria ROM - che avrebbe consentito 10 sviluppo di programmi e applicazioni adeguate al
soddisfacimento delle esigenze dell'utente generico. Alcune di queste applicazioni si sana tra.mandate
seppure modificate, fino ai glomi presenti. L'8088 aveva Ie prestazioni di un micro a 16 bit, rna il
fatto di avere un bus dati a 8 bit permetteva di ridurre i cosh dell'elettronica. Del resto, Ie' periferiche
impiegabili su Personal Computer erano praticamente solo a 8 bit, mentre la. velocita de1l'8088 era
perono debordante per Ie tipiche applicazioni deU'epoca.
4Non e il solo caso di identificazione di un marchio di fabbrica con un tipo di prodotto merceo
logico. In Italia, la parola "Ferodo" ricorda il materiale impiegato nei freni degli autoveicoli dal suo
iniziale e principale produttore. Chi ha visto il celebre film di Stanley Kubrick "2001 Odissea nel"
10 spazio" ricordera. che il calcolatore responsabile dena gestione del controllo lao navicella spaziale,
si chiarnava HAL 9000. La sigla HAL era una traBposizione di IBM; si ottiene infatti prendendo
ordinatarnente Ie lettere che nell'ordine alfabetico precedono queUe in IBM.
L'8086 estato introdotto nel Giugno 1978.
Si trattava di un processore a 16 bit, realizzato con una tecnologia HMOS da 3
per il grande pubblico americano fu come se il PC nascesse in quel momento. I grandi
utenti, quali banche
l
industrie, apparati statali eq:., fino ad allora refrattari all'uso
dei PC, trovarono del tutto naturale it loro impiego, anche in virtu della supposta
possibilita di integrazione can gli esistenti mainframe ffiM. La rivista Time, che tra-
dizionalmente dedica la copertina dell'ultimo numero di ogni annata a1 personaggio
maggiormente distintosi sui pianeta nel corso dell'anno, nel 1981, con sorpresa dei
lettori, dedico la copertina al PC invece che a una persona.
A titolo di curiosita, vale Ia pena di ricordare che l'IBM non aveva posto partico-
lare cura 0 determinazione nel produrre il suo PC. Prova ne sia it fatto che esso venne
progettato e prodotto in una sede periferica, di minor importanza, situata in Florida,
e cioe lontano da quella vasta area nel nord della stato di New York, dove 1a societa
aveva i principali centri di progettazione e produzione. nPC IBM presentava solo due
unita a disco flessibile. n disco rigido comparve qualche tempo dopo sulla versione
PCjXT. Retaggio del precedente mondo dei personal computer a basso casto, suI
retro del PC IBM faceva bella mostra di se un connettore per it collegamento delle
unita. di registrazionejlettura di cassette audio, a110ra molto in yoga tra chi usava i.
microcalcolatori.
-
-
,
1-
-
l-
-
-
1
1-
1-
l-
-
1-
1-
1-
]-
)-
I.
GND
,
40 Vee
A01 ... AIHO
A013 A16/53
ADI:::
A17/5'"
ADll A16/55
AD10 A1Q/S6
AD9 mn:/57
ADO MN/ti:X
AD7
8086
""
ADO
RQ/O'fO (HOLD)
ADO
RQ/CTl (HOLDA)
AD4
LOCK (WRL
AD,
52 (M/IQ)
.AD2 51 (DT/R)
AD. SO (DEN)
ADO .SO (ALE::)
NUl .s,
(INTA)
INTR TES7
eLK READY
GND 20
2' RESET
B.2.l II modello di programmazione
n modello di programmazione dell'8086 si compone dei registri riportati in Figura
8.6. I registri possono essere cosl raggruppati:
otto registri di uso generale, d.i cui:
- quattro (AX. BX, CX e DX) aventi funzione di registri dati,
- quattro (SP, BP, S1 e 01) usati come puntatori 0 registri indice;
quattro registri di segmento (CS, DS, SS e ES);
5Versione Intel (di dimensioni ridotte) della tecoologia NMOS a 3VUotameoto, gia uaata dalla
stessa societa. per il micro 8085.
L'architettura 8086 565
Per 1'8086, il numero medio di deli di clock per istruzione CPI puo essere va-
lutato pari a 15 [MRMP80]. A 5 MHz il tempo medio per eseguire un'istruzione e:
15 . 200 ns = 3}.LS, corrispondente a un livello di prestazioni di circa 0,33 milioni di
istruzioni per secondo (MIPS), L'8088 estato introdotto poco dopo 1'8086 e differisce
da quest'ultimo essenzialmente per il bus dati esterno a 8 bit, a 16. Per quan-
to si riferisce all'architettura interna, se si fa eccezione della coda di pre/etch. delle
istruzioni, i due sono Identici. Qui eli seguito, a meno che non venga espressamente
il contrario, intenderemo riferirci indistintamente all'uno 0 all'altro, anche se
useremo riormalmente 1a sigla 8086.
Figura B.5 Fiedinatura del dispositivo 8086. Tra. parentesi viene indica.to it significato dei
piedini in modo minimo, se diverso da queUo in modo massimo. n significa.to dei piedini
viene spiegato all'occorrenza nel testOj Ie due modalita di funzionamento sono illustrate nel
Paragrafo 8.2.7.
micron
5
, contenuto in chip da 40 piedini, nella versione classica a doppia fila (detta
DIP da Dual In Package) 1 che integrava circa 29.000 transistori. Nella prima versione;
la mMsima frequenza di clock era 5 MHz, In Figura B,5 viene riportata la piedinatura
dell'integrato.
8086

mICrO B,2 Architettura di base: il

,.
..,.
,.I,n::r.i ,'ki"
.'., !it'?,!:Y'
0',. . , '
1
, ;....

.' ,I"",,,,,
j )"", 1 '

";\'f' , .,.;.. ,..':i' ," .>


.'.,"'of,,
" ,,,; -'1,-
f'':;j"-' .
..... ".::,.'
'''''1 n' '.
."........,
" "." .
,",.i;-"" , '.
:' .....6':<.
'I,. .,.Jl .
;.,'t ' i
1;.1.1-"
,"''''_."
", ., ""'$:: ....
'<'., i" "'Jt;;.. ,1
" """$ ",1>". (
-
... ...'- ....,....
',. .. '
'. ," "

\'". '
"'Ill'" . ". "
"",,:" "" ''';-.
_. ,of" '
'-:"-""''<''1
'., ,,',":,&;';",\,j:::' .. .'
, ',. . " "
<',t:, .
',"?-' ,. ';.iM"I.,
.'::"-'
... .:,
,.. ",' nr',", .Jtl' ,
, ':,', ,').::$
: :... ::'.
'" ;;r.:.. .X1"
... /,,/;10',:,
.' :Ii '1,,'1""'-
".
, :.:t:-", ' .......r""'
....c ,:.<0;'- ,,'
.. ';""':1il!",jo" .',
I .
\.'ll; ,:. , ....:;
, ",. ",...." "'''. <W,,, I.:,
,,. ,

", .1..,;,' ,.\'
"'" :,f':;,..-. ,.'.1
"l'i}...., . " ,
..
", :-Hl'(,'"
..,.... , ....".,1" "'S': ,
i:' .. . ;i'!f'oi: t', ,
. . '.... ox
Ci sarebbe da fare anche un po' di storia suI DOS. L'IBM voleva una versione
propria del CP1M, con caratteristiche che la distinguessero rispetto a1 resto dei pro.: '
che produttore del CP (la forte della sua
pOSIZlOne dl predoD1manza suI mercato del slsteml operatlvl per personal computer, .
abbia tenuto una posizione alquanto "distaccata" nei confronti dell'IBM, spingendo
i responsabili del !nformatico a a. una ditta, la
nota allora per un diffuso mterprete BASIC per 1 tnlcro a 8 bIt dell'epoca. La Micro-
soft accetto di buon grade di per it gigante Iniziava tosl i1
percorso che la MIcrosoft a 11 stessa IBM ..
fare del B,tll Gates, aHora poco pill che un ragazzmo, 11 Paperon del '1l;
Paperom del nostn glorm.
AlIa pagina http://vvv.intel.com/pressroom/kits/processon/quickre! .htm if' i1\{::.
Ia lista i Intel a partire.
mIcro a 4 bIt 4040 (rntrodotto agli lIUZI degll anm settanta) fino aU'ultlmo annunclato
in ordin;e' di tempo. Di di essi vengono Ie come
queUe nelle FlgureB:3 e B.4. Ie prIme CPy hsta
Ie prestazlOOl In MIPSj a partire dal Pentmm Ie prestazloOi vengono nportate m Spec;
Pro Ie prestazioni. non. vengono pili ,;},Yli-}
Sltl Intel, Sl trova una messe dl datI Bulle prestazlOlll delle ultune CPU, ill grado di ,.:, ..
soddisfare qualunque curiosita, compresa quella di chi dovesse decidere una scelta '
basata sulla potenza della CPU. .
'-'('.,'-;::;. '.'/i .
:
, I. ;d"
".'
, '. ,-;.'r; ''(''4
,.'"",",;/"",,; "1'.'1':'
'; "!'!;!-.'I, ,:, ...
" ",'
'. ,?I::"'-<:',",' .,.'
,',r<e .
.' "',
" ';;,;'..1:
',",\,: :"". If",!
' .. if:":'
""'i :,,;':"'.:0:,
,,'. ;'; '" ';w.
"',. "'1 .
" .'- ';' ..'
, ,','" '.- '.,\"
04.1:.\
,":' 01";&"
...,-.,;;' '.
:',
,
" ;"'."
..Nf
'.-, ,,",
. iy!'J..

.
564 Appendice B
L'8086 estato introdotto nel Giugno 1978.
Si trattava di un processore a 16 bit, realizzato con una tecnologia HMOS da 3
per il grande pubblico americano fu come se il PC nascesse in quel momento. I grandi
utenti, quali banche
l
industrie, apparati statali eq:., fino ad allora refrattari all'uso
dei PC, trovarono del tutto naturale it loro impiego, anche in virtu della supposta
possibilita di integrazione can gli esistenti mainframe ffiM. La rivista Time, che tra-
dizionalmente dedica la copertina dell'ultimo numero di ogni annata a1 personaggio
maggiormente distintosi sui pianeta nel corso dell'anno, nel 1981, con sorpresa dei
lettori, dedico la copertina al PC invece che a una persona.
A titolo di curiosita, vale Ia pena di ricordare che l'IBM non aveva posto partico-
lare cura 0 determinazione nel produrre il suo PC. Prova ne sia it fatto che esso venne
progettato e prodotto in una sede periferica, di minor importanza, situata in Florida,
e cioe lontano da quella vasta area nel nord della stato di New York, dove 1a societa
aveva i principali centri di progettazione e produzione. nPC IBM presentava solo due
unita a disco flessibile. n disco rigido comparve qualche tempo dopo sulla versione
PCjXT. Retaggio del precedente mondo dei personal computer a basso casto, suI
retro del PC IBM faceva bella mostra di se un connettore per it collegamento delle
unita. di registrazionejlettura di cassette audio, a110ra molto in yoga tra chi usava i.
microcalcolatori.
-
-
,
1-
-
l-
-
-
1
1-
1-
l-
-
1-
1-
1-
]-
)-
I.
GND
,
40 Vee
A01 ... AIHO
A013 A16/53
ADI:::
A17/5'"
ADll A16/55
AD10 A1Q/S6
AD9 mn:/57
ADO MN/ti:X
AD7
8086
""
ADO
RQ/O'fO (HOLD)
ADO
RQ/CTl (HOLDA)
AD4
LOCK (WRL
AD,
52 (M/IQ)
.AD2 51 (DT/R)
AD. SO (DEN)
ADO .SO (ALE::)
NUl .s,
(INTA)
INTR TES7
eLK READY
GND 20
2' RESET
B.2.l II modello di programmazione
n modello di programmazione dell'8086 si compone dei registri riportati in Figura
8.6. I registri possono essere cosl raggruppati:
otto registri di uso generale, d.i cui:
- quattro (AX. BX, CX e DX) aventi funzione di registri dati,
- quattro (SP, BP, S1 e 01) usati come puntatori 0 registri indice;
quattro registri di segmento (CS, DS, SS e ES);
5Versione Intel (di dimensioni ridotte) della tecoologia NMOS a 3VUotameoto, gia uaata dalla
stessa societa. per il micro 8085.
L'architettura 8086 565
Per 1'8086, il numero medio di deli di clock per istruzione CPI puo essere va-
lutato pari a 15 [MRMP80]. A 5 MHz il tempo medio per eseguire un'istruzione e:
15 . 200 ns = 3}.LS, corrispondente a un livello di prestazioni di circa 0,33 milioni di
istruzioni per secondo (MIPS), L'8088 estato introdotto poco dopo 1'8086 e differisce
da quest'ultimo essenzialmente per il bus dati esterno a 8 bit, a 16. Per quan-
to si riferisce all'architettura interna, se si fa eccezione della coda di pre/etch. delle
istruzioni, i due sono Identici. Qui eli seguito, a meno che non venga espressamente
il contrario, intenderemo riferirci indistintamente all'uno 0 all'altro, anche se
useremo riormalmente 1a sigla 8086.
Figura B.5 Fiedinatura del dispositivo 8086. Tra. parentesi viene indica.to it significato dei
piedini in modo minimo, se diverso da queUo in modo massimo. n significa.to dei piedini
viene spiegato all'occorrenza nel testOj Ie due modalita di funzionamento sono illustrate nel
Paragrafo 8.2.7.
micron
5
, contenuto in chip da 40 piedini, nella versione classica a doppia fila (detta
DIP da Dual In Package) 1 che integrava circa 29.000 transistori. Nella prima versione;
la mMsima frequenza di clock era 5 MHz, In Figura B,5 viene riportata la piedinatura
dell'integrato.
8086

mICrO B,2 Architettura di base: il

,.
..,.
,.I,n::r.i ,'ki"
.'., !it'?,!:Y'
0',. . , '
1
, ;....

.' ,I"",,,,,
j )"", 1 '

";\'f' , .,.;.. ,..':i' ," .>


.'.,"'of,,
" ,,,; -'1,-
f'':;j"-' .
..... ".::,.'
'''''1 n' '.
."........,
" "." .
,",.i;-"" , '.
:' .....6':<.
'I,. .,.Jl .
;.,'t ' i
1;.1.1-"
,"''''_."
", ., ""'$:: ....
'<'., i" "'Jt;;.. ,1
" """$ ",1>". (
-
... ...'- ....,....
',. .. '
'. ," "

\'". '
"'Ill'" . ". "
"",,:" "" ''';-.
_. ,of" '
'-:"-""''<''1
'., ,,',":,&;';",\,j:::' .. .'
, ',. . " "
<',t:, .
',"?-' ,. ';.iM"I.,
.'::"-'
... .:,
,.. ",' nr',", .Jtl' ,
, ':,', ,').::$
: :... ::'.
'" ;;r.:.. .X1"
... /,,/;10',:,
.' :Ii '1,,'1""'-
".
, :.:t:-", ' .......r""'
....c ,:.<0;'- ,,'
.. ';""':1il!",jo" .',
I .
\.'ll; ,:. , ....:;
, ",. ",...." "'''. <W,,, I.:,
,,. ,

", .1..,;,' ,.\'
"'" :,f':;,..-. ,.'.1
"l'i}...., . " ,
..
", :-Hl'(,'"
..,.... , ....".,1" "'S': ,
i:' .. . ;i'!f'oi: t', ,
. . '.... ox
Ci sarebbe da fare anche un po' di storia suI DOS. L'IBM voleva una versione
propria del CP1M, con caratteristiche che la distinguessero rispetto a1 resto dei pro.: '
che produttore del CP (la forte della sua
pOSIZlOne dl predoD1manza suI mercato del slsteml operatlvl per personal computer, .
abbia tenuto una posizione alquanto "distaccata" nei confronti dell'IBM, spingendo
i responsabili del !nformatico a a. una ditta, la
nota allora per un diffuso mterprete BASIC per 1 tnlcro a 8 bIt dell'epoca. La Micro-
soft accetto di buon grade di per it gigante Iniziava tosl i1
percorso che la MIcrosoft a 11 stessa IBM ..
fare del B,tll Gates, aHora poco pill che un ragazzmo, 11 Paperon del '1l;
Paperom del nostn glorm.
AlIa pagina http://vvv.intel.com/pressroom/kits/processon/quickre! .htm if' i1\{::.
Ia lista i Intel a partire.
mIcro a 4 bIt 4040 (rntrodotto agli lIUZI degll anm settanta) fino aU'ultlmo annunclato
in ordin;e' di tempo. Di di essi vengono Ie come
queUe nelle FlgureB:3 e B.4. Ie prIme CPy hsta
Ie prestazlOOl In MIPSj a partire dal Pentmm Ie prestazloOi vengono nportate m Spec;
Pro Ie prestazioni. non. vengono pili ,;},Yli-}
Sltl Intel, Sl trova una messe dl datI Bulle prestazlOlll delle ultune CPU, ill grado di ,.:, ..
soddisfare qualunque curiosita, compresa quella di chi dovesse decidere una scelta '
basata sulla potenza della CPU. .
'-'('.,'-;::;. '.'/i .
:
, I. ;d"
".'
, '. ,-;.'r; ''(''4
,.'"",",;/"",,; "1'.'1':'
'; "!'!;!-.'I, ,:, ...
" ",'
'. ,?I::"'-<:',",' .,.'
,',r<e .
.' "',
" ';;,;'..1:
',",\,: :"". If",!
' .. if:":'
""'i :,,;':"'.:0:,
,,'. ;'; '" ';w.
"',. "'1 .
" .'- ';' ..'
, ,','" '.- '.,\"
04.1:.\
,":' 01";&"
...,-.,;;' '.
:',
,
" ;"'."
..Nf
'.-, ,,",
. iy!'J..

.
564 Appendice B
-', I
Figura B.6
-
_.
I
-
_.' 1
_. I I
-', !
D
7
..
0' D'
.T TF SF ZT AT
p,
OT
eoeo
U"S'"
SP (Stack Pointer): ell puntatore alia cima dello stacie
I flag di state sonG i seguenti.
Figura B.7 Formato della parola di stato, Il byte meno significativo coincide con 1a parola
di stato dfi precedenti microprocessori Intel a 8 bit (8080 e 8085).
Il registro di stato It registro di stato dell
'
8086 contiene 9 indicatori di 1 bit,
detti anche flag. Di questi; 6 registrano informazioni sullo stato del processore (flag
di stato) e 3 servono a controllare Ie operazioni del processore (flag di contrello). In
Figura B.7 viene schematizzato il formato del registro di stato.
S1 (Source Index): registro indice di uso generieo. n nome deriva dal fatto che
. certe istruzioni (di stringa.) richiedono che la stringa sorgente sia necessariamente
individuata tramite SL
BP (Base Pointer): viene .principalmente usato corne puntatore entro 10 stack,
rna puo anche essere irnpiegato come generico registro indice.
DI (Destination Index): registro indice di uso generico. n nome deriva dal fatto
che, in certe istruzioni che manipolano stringhe
l
la stringa di destinazione deve
essere necessariamente individuata tramite D1.
L'arcbitettura 8086 567
II registro IP I codici di istruzione vengono sempre prelevati da! segmento di
codice. A questa proposito enecessaria un registro che contenga I'offset dell'istruzione
successiva da eseguire, riferito al segmento di codice corrente, :it questo 10 scopo di
JP (Instruction Pointer),
I
I registri di segmento L'aspetto pili caratteristico della CPU 8086 ela segmen-
tazione della memoria, di cui si pacla at successivo Paragrafo B.2.2. I registri di
segmento vengono impiegati proprio per tenere traccia. della posizione in memoria dei
segmenti in uso.
L'irnpiego usuale dei quattro registri equesta: es identifica il segmento di co-
dice (Code Segment) corrente, DS il Begmento di dati (Data Segment) corrente, SS iI
segmento di stack (Stack Segment) corrente ed ES l'extra segmento (Extra Segment)
corrente.
I registri iudice e i puntatori Questi registri di solito contengono gli scostamenti
all'interno dei segmenti, SP e BP hanno prevalente funzione di puntatori, mentre SI
e D1 vengono usualmente usa.ti come indici .
"',:b,.,
" . ", .
. , ,.".',:;\'1-;
, -" ..:
,.;:-'i :', ':si'2:
,., [Jtl.: ..,i
..
""'''' )r.' ..
. lW, \{" .
:,
,./q., .,,:;1'."
... ..[., .
c'..:, ;,.... - ..
;,"
.... ' .-(.,.
.. iii,)!
'. ,,;<,; ...... ,f
,..' '...r.: "; i,"
,: .. ' i'-"
.- \':\' .
.'. '-,"" .,I'i" J
,.'
-'.'-; ." .,...'

?'.'.'
;:. ':,r.
".,( .::f'-
.'. ;1., :., .. "
,." .. "
,., \'.. ,....
....,i,'" .,1"".
'.' '. ;'r." .
..; .J} c"
..' ,_',101 .; ... '
_,,':::?,;' :{it::!"
i
.
., :,.,', ,,,.
. ''..io'/'

;"".,.-:'10, ;
.'.
.'.', :"",'.:
! ".';.',''::' ..".,
,.,\.....
.;.. "..
,:" .",. ....
.,'.' "'''" jl}"'
.,.(... . ,
__. "" .
.;:.".'" '''".
..,,".'.' \ ,T' ' ..

,:,c ,:L'1.. 'I<'

'7';:-'"
.,:y.;:} I:)
,. ,: .
,.:,;".:':.;_:.>:
;'. c-'''s'' -'.
,.-::__ ,,'4': {'I\;'.
,.. ; ".,,;....,
,
.. , ,if:>"
,.,.",' i.1
_ '1.,.".,./< ;w,t>,....
.. ","".-,;.
., ,'._ . ,..;,
I'
[,;$:;;:4 ,t.
1
,:."
, :,F I'P::
'... '1'.. iJ '\1;"

, .,v.' , :
,;.
; .". ...,,,,;..
'."/';";:":+; ,;t;J,
;,,;,.}'l \, !;":.
..'..<."J '" "'.',
.., ..
'I" ,..
.. "' ".,. r;'"
..
." ,-"
..
,,'..
,-".,,'.' "\ ",."

.
','.1:-..-

:"l.. ",,:t-; ,
'. l' ,. ,1.'>.' '
. '> ''ii, ..
'-,.>f:,;,
_,-"" w.
.. ;[,." '.",'
7, .. ".'0
, ".... '-
_:s-''
:;:.'x\r ..
. ,." ...o1l
,:..;;,-, f,,1''
,:<;::,:"
'.,:.., ".' t,!",.. ..
.. '11_'
i:''';: ..\'
-.; ..1.:).' ',' .. "
":.. ... ':' S\. '
.....
<::;i
.. '; 'd,l),
... '..;;." :r,.': ,.
>."",,' , .'.'
..'.. '
-. .'. 'i 1iJ....
'Vlf'

:,.t ... ' ,10:-"
_'--.'-ili."
\ .,'
.'.t,., ".:.. ..-;
.. ,.' "'"1:" . ;;:;'!';.It J, .;
'''':.. "'.
"
.'. ,!!,
,'..... . :;J
".,.,.",,, . ,.
'., ....... ,,' ;.'
.. ..
D'
S'
BP
SP
"UNT
I ........0" (paw) I
I '" I
CS
ES
DS
SS
RECI$'l"tu D'
"CO"""::NTO
,...,OI"TRI OAT.

.L
OH BL
CH cL
DH DL
Modello di programmazione 8086/88.
6Nella. pubblicistica. Intel del primo periodo di vita dell'8086 veniva posta un forte a.ccento sui
fatto che i registri da.ti rappresentavano un superinsieme dei registri della precedente famiglia a 8 bit
(8080/8085).
un registro (IP) usato come puntatore di istruzione in congiunzione con CSj
un registro eli stato, che nntel chiama registro dei Flag.
I registri Dati Come indicata in Figura B.6, i registri dati passono essere impiegati
sia. come registri cia 16 bit, che come pure da 8. .
Come registri a. 16 bit, vengono individuati con i termini AX, BX, ex, DX
mentre con Ie denominazloni AH, BH, CH, DH e AL, BL, eLl DL 5i identificano
rispettivamente i byte piil emenD significativi dei registri a 16 bit, che passano essere
usati individualmente come registri a 8 bit
6
Nella maggior parte dei casi, questi
registri possono essere impiegati senza alcuna distinzione in operazioni aritmetiche e
logiche. Possono essere anche impiegati attribuendo a essi ruoH specifici.
AX ha funzione tipica di accumulatore. PUQ esser usato in tutte Ie istruzioni
eli I/O. nelle istruzion1 relative alle stringhe e nelle operazioni aritmetiche. Un
numero ristretto di istruzioni richiede obbligatoriamente AX.
BX puo essere usato anche come registro base per il calcolo degli indirizzii per
questa motivo viene indicato come Base Register.
ex viene usato anche come contatore in certe istruzioni; per questa motivo viene
indieato come Count Register,
DX viene designato come Data Register. E richiesto da alcune operazioni di
ingressofuscita, come pure dalle operazioni di moltiplicazione e divisione che
l
coinvolgendo grandi valori
l
presuppongono 1a coppia. DX
l
AJC.
566 Appendice. B
(
\
I
1
)
I
I
I
1
! j
-

-
_.
-.
-
-
-
.. .
-
...
-.
-'
_.
-.
-
..
-', I
Figura B.6
-
_.
I
-
_.' 1
_. I I
-', !
D
7
..
0' D'
.T TF SF ZT AT
p,
OT
eoeo
U"S'"
SP (Stack Pointer): ell puntatore alia cima dello stacie
I flag di state sonG i seguenti.
Figura B.7 Formato della parola di stato, Il byte meno significativo coincide con 1a parola
di stato dfi precedenti microprocessori Intel a 8 bit (8080 e 8085).
Il registro di stato It registro di stato dell
'
8086 contiene 9 indicatori di 1 bit,
detti anche flag. Di questi; 6 registrano informazioni sullo stato del processore (flag
di stato) e 3 servono a controllare Ie operazioni del processore (flag di contrello). In
Figura B.7 viene schematizzato il formato del registro di stato.
S1 (Source Index): registro indice di uso generieo. n nome deriva dal fatto che
. certe istruzioni (di stringa.) richiedono che la stringa sorgente sia necessariamente
individuata tramite SL
BP (Base Pointer): viene .principalmente usato corne puntatore entro 10 stack,
rna puo anche essere irnpiegato come generico registro indice.
DI (Destination Index): registro indice di uso generico. n nome deriva dal fatto
che, in certe istruzioni che manipolano stringhe
l
la stringa di destinazione deve
essere necessariamente individuata tramite D1.
L'arcbitettura 8086 567
II registro IP I codici di istruzione vengono sempre prelevati da! segmento di
codice. A questa proposito enecessaria un registro che contenga I'offset dell'istruzione
successiva da eseguire, riferito al segmento di codice corrente, :it questo 10 scopo di
JP (Instruction Pointer),
I
I registri di segmento L'aspetto pili caratteristico della CPU 8086 ela segmen-
tazione della memoria, di cui si pacla at successivo Paragrafo B.2.2. I registri di
segmento vengono impiegati proprio per tenere traccia. della posizione in memoria dei
segmenti in uso.
L'irnpiego usuale dei quattro registri equesta: es identifica il segmento di co-
dice (Code Segment) corrente, DS il Begmento di dati (Data Segment) corrente, SS iI
segmento di stack (Stack Segment) corrente ed ES l'extra segmento (Extra Segment)
corrente.
I registri iudice e i puntatori Questi registri di solito contengono gli scostamenti
all'interno dei segmenti, SP e BP hanno prevalente funzione di puntatori, mentre SI
e D1 vengono usualmente usa.ti come indici .
"',:b,.,
" . ", .
. , ,.".',:;\'1-;
, -" ..:
,.;:-'i :', ':si'2:
,., [Jtl.: ..,i
..
""'''' )r.' ..
. lW, \{" .
:,
,./q., .,,:;1'."
... ..[., .
c'..:, ;,.... - ..
;,"
.... ' .-(.,.
.. iii,)!
'. ,,;<,; ...... ,f
,..' '...r.: "; i,"
,: .. ' i'-"
.- \':\' .
.'. '-,"" .,I'i" J
,.'
-'.'-; ." .,...'

?'.'.'
;:. ':,r.
".,( .::f'-
.'. ;1., :., .. "
,." .. "
,., \'.. ,....
....,i,'" .,1"".
'.' '. ;'r." .
..; .J} c"
..' ,_',101 .; ... '
_,,':::?,;' :{it::!"
i
.
., :,.,', ,,,.
. ''..io'/'

;"".,.-:'10, ;
.'.
.'.', :"",'.:
! ".';.',''::' ..".,
,.,\.....
.;.. "..
,:" .",. ....
.,'.' "'''" jl}"'
.,.(... . ,
__. "" .
.;:.".'" '''".
..,,".'.' \ ,T' ' ..

,:,c ,:L'1.. 'I<'

'7';:-'"
.,:y.;:} I:)
,. ,: .
,.:,;".:':.;_:.>:
;'. c-'''s'' -'.
,.-::__ ,,'4': {'I\;'.
,.. ; ".,,;....,
,
.. , ,if:>"
,.,.",' i.1
_ '1.,.".,./< ;w,t>,....
.. ","".-,;.
., ,'._ . ,..;,
I'
[,;$:;;:4 ,t.
1
,:."
, :,F I'P::
'... '1'.. iJ '\1;"

, .,v.' , :
,;.
; .". ...,,,,;..
'."/';";:":+; ,;t;J,
;,,;,.}'l \, !;":.
..'..<."J '" "'.',
.., ..
'I" ,..
.. "' ".,. r;'"
..
." ,-"
..
,,'..
,-".,,'.' "\ ",."

.
','.1:-..-

:"l.. ",,:t-; ,
'. l' ,. ,1.'>.' '
. '> ''ii, ..
'-,.>f:,;,
_,-"" w.
.. ;[,." '.",'
7, .. ".'0
, ".... '-
_:s-''
:;:.'x\r ..
. ,." ...o1l
,:..;;,-, f,,1''
,:<;::,:"
'.,:.., ".' t,!",.. ..
.. '11_'
i:''';: ..\'
-.; ..1.:).' ',' .. "
":.. ... ':' S\. '
.....
<::;i
.. '; 'd,l),
... '..;;." :r,.': ,.
>."",,' , .'.'
..'.. '
-. .'. 'i 1iJ....
'Vlf'

:,.t ... ' ,10:-"
_'--.'-ili."
\ .,'
.'.t,., ".:.. ..-;
.. ,.' "'"1:" . ;;:;'!';.It J, .;
'''':.. "'.
"
.'. ,!!,
,'..... . :;J
".,.,.",,, . ,.
'., ....... ,,' ;.'
.. ..
D'
S'
BP
SP
"UNT
I ........0" (paw) I
I '" I
CS
ES
DS
SS
RECI$'l"tu D'
"CO"""::NTO
,...,OI"TRI OAT.

.L
OH BL
CH cL
DH DL
Modello di programmazione 8086/88.
6Nella. pubblicistica. Intel del primo periodo di vita dell'8086 veniva posta un forte a.ccento sui
fatto che i registri da.ti rappresentavano un superinsieme dei registri della precedente famiglia a 8 bit
(8080/8085).
un registro (IP) usato come puntatore di istruzione in congiunzione con CSj
un registro eli stato, che nntel chiama registro dei Flag.
I registri Dati Come indicata in Figura B.6, i registri dati passono essere impiegati
sia. come registri cia 16 bit, che come pure da 8. .
Come registri a. 16 bit, vengono individuati con i termini AX, BX, ex, DX
mentre con Ie denominazloni AH, BH, CH, DH e AL, BL, eLl DL 5i identificano
rispettivamente i byte piil emenD significativi dei registri a 16 bit, che passano essere
usati individualmente come registri a 8 bit
6
Nella maggior parte dei casi, questi
registri possono essere impiegati senza alcuna distinzione in operazioni aritmetiche e
logiche. Possono essere anche impiegati attribuendo a essi ruoH specifici.
AX ha funzione tipica di accumulatore. PUQ esser usato in tutte Ie istruzioni
eli I/O. nelle istruzion1 relative alle stringhe e nelle operazioni aritmetiche. Un
numero ristretto di istruzioni richiede obbligatoriamente AX.
BX puo essere usato anche come registro base per il calcolo degli indirizzii per
questa motivo viene indicato come Base Register.
ex viene usato anche come contatore in certe istruzioni; per questa motivo viene
indieato come Count Register,
DX viene designato come Data Register. E richiesto da alcune operazioni di
ingressofuscita, come pure dalle operazioni di moltiplicazione e divisione che
l
coinvolgendo grandi valori
l
presuppongono 1a coppia. DX
l
AJC.
566 Appendice. B
(
\
I
1
)
I
I
I
1
! j
-

-
_.
-.
-
-
-
.. .
-
...
-.
-'
_.
-.
-
..
" 0
L'ar.chitettura 8086 569
i-
)-
-
-
-
]-
)-
)-
1-
j-
1-
]-
1-
1-
)-
j"
)-
o
SO),(MATORE
; AX +- M(DS,Offset(VAR)]
INDIRIZZO FISICO or 20 BIT
\9
MOV U,VAR
811 quar.to ha. solo una. giuBtlfiea.zione pratica: ,esso veoi:va ottenuto al solo .costo del
relativo registro ES. E980 viene utiliuato per seopi specifici; petaltr.o, in certe .situazioni risu1ta. utile
-dispon"e di un segmento di appoggio.
Fj.gura B.,8Ca1colo dell'indirizzo 6sico dall'indirizzo IOglco, I registri eli segmento conten-
gono ta base del segmento, ovv.ero l'indirizzo di partenza diriso per 16. Questa tecnic:a di.
costruzione deU'indirizoo fisic.o .da quello IOglco ha -COIlBentito d1 indirizzare uno spa.zio di
1 Mbyte di memoria. con registri di segmento di soli 16 anziche 20, Solo l'uscita del sorn-
.mato.r.e" appog,glat'a .suI registroche Interfa.ccia il bus elegli indirizzi, .e di 20 bit. All in
cu-i uscl 1'.8086, 1a densita. di integtazioDe era lantana'dai livelli correnti. Risp.armiar.e .sulla
dimensione dei l'egistri r.endeva disponibile peraltri scopi parte dell'Nea di silicio del chip.
0000 scosnlllENTO' (orFSET)
" 0
REGISTRO DI SEGYENiO I 0000
In Figur.a B,9 viene data una rappresentazione di una. possibile allocazione dei
segmenti,
Vso del r.egis.tri di segmento I registri di. segmento banno una funzione prede-
finita, rna c'e 1a l'oBsibi1i.ta dl akltlli impiegh.i altemativi, come illustrato in Tabella
B.!.
La cGlonna ''Registro N.ormale
n
indica i1 registr.o di segmento ehe viene normal-
mente .codificato nell'istruzione come base del s.egmento. Per esempio, l'istruziolle in
lingua'ggio ,assembler:
Al Paragrao B,2.), si evisto che in CPU ci sono i 4 registri di segmento CS, DS,
SS e ES: in un .datomomento essi contengono l'indirizz.o ill partenza (la base) dei seg-
menti Orrenti. Camblando il'contenuto di questl registri, dal medesimo programma
si possono indirizzare differenti segmenti.
I aegment"i del ,codice, dei dati ,e della stack formano t.re diversi spazi logici asso-
ciabiii 'in modo natur.ale aU'.esecuzione dei progr:ammi. Questa suddivisione porta a
una concettualizzazione dei programmi, secondo la quale c'e una netta. dirisione tra
codice, dati e d'ati temporanei:8,
In Figura B.B viene illustrato it modo in cui vengono calcolati,gli indirizzi fisici da-
gli indir'izzi logici. CODvenzionalmente, un indirizzo logico si scrive come SR.:OFFSETI
dove SR ,f uno dei registri <ii segmento.
c' ,
j'(-"
. I ,
., .,w,.!,.. );!;" ,)190.'"
,
..1. ,.I ", .
"",' .,' ' .. '.' '
"'''''"r'.l '
:,'1'" ',,,,.
,'lli""
., ... "";1'.'
.' . ' ,f'1.'
...' . 'c'
;..0'-1' .'

.

""I't '" " ,'ii,.,. .
.. ' 'i.' ",' i"
"".,.." :\' .!,.-
" I "t'" , ,. '"',.,..
"-, ":l
, .,
.'1 " :
. .. t,

':::;:":: r l'
, ., ". ""
", ' ,
... : " ", 'n- <.
. "f ", ' .. " ,.,
'..,,:. :."' ..
.',\". f';\,'
" j''':;'
.. ,.
, .. '. .
,J .. .,'.
) ,:- >.'
.... " ;
'j ", ..,.:., 1. ';':, .
," ,.:'; ,'(" ;(' ;>.;
',.,' ,.d. ,
::. -.if"
' ... " ,.
, v ,. .. ,.'
.. . .I,. r' ,
". '.
-."." '\'il .
'.' '"".- ..
l1r,;;, "
, .... ,o";;J" .. '
': . '
, " .'. ""." 'I.(!!:' ;
': 1,.1,',',....." ill:;",' '.
.., ',. ,.'"... ',.
1-11."\ '.'
" ", "
'..;
, 0:. t'
, " '
:.. .. k::"1 ": .i':..
)' ,. ...:
'f .:t. :, .
'.' ,'"I, ,.
'r. ' .
f
,.:r 1.\'"1,' .,il, :."
.C ' . .
,';;';.11
""., .
. ,
' ...'f"'
'<'311 'l./.'
".""" .
.. I',i, , .
.
',\. ,y,t .If".,."

" ':"i'''''',,:. ,l:'''''::'
, " ,...,.. """;'
"!:'o':'1'
., .. . ...
.. r .:,
:lh
; .';.;I"! '.'< ,i ._'.
.. \'f'
')i!.v.'-
;\'1',1::.
" .,. ' .
,
1t.\:,/
'....:.. ' ,.. '1&"
'..;:
..\..... ,'!'
...

.' ":"(1" 'i :t!ll;',( "
.': j'.",'S,:.'.
",,',' .",,'i',' ...
:'., ", .."
." ' :ih. '''.
.. 7
.'1\;:....... If'
'\
. "i,lfi(",:.-
... ,." .. \11"
.',
"Ili'
", ' " .. "
, '" ' ",','
",,-.':,,,,,,,,,'1
;:
'. ,"1,
,.oj I 'X ''''''l:.
, '"h{.' , .. 7.... ..
' .. .)......).':. ....:.:,
... to-fl' ' .......;.:.
-""
-, ... "
\'.''''.'J:
'.1.' . ... '
.'.
," '",-f: "i-': ',.,
>,;"j."\ i;':;" .,
'y'I'"
"."".1 ,Tjt.,
" ". .. ' - ",'.',
'...,. '.
':>;':"'.; ;!":I:.:,.
"-':f' ..
J'l,. ,",...., .',<
.,"':>:'"
(':":":"1.". '!'I":,;.' ..'
,.. ",.,
\:.
'," .. 1"" , ,.'
.. '. , .
.',",",' ,,, .,t"
..':
t'/' ,
.'ikt.
';>':' - lli ",.
,"",
,1 '.. "',',
,', \
...jJ.. ,i,.,
La segmentazione Un segmento eun'unita. logica di memoria ebe puo avere una.
estensione massima eli 2
16
:::: 64 kbyte. Ogni segmento si compone di locazioni di
memoria contigue e costituisce una uniU. di memoria indirizzabile separatamente e
indipendt=!lltemente da altri segmenti. Un segmento puo e5Sere sistemato in qualunque
posizione della memoria fisica, purche inizi da una locazione avente un indirizzo di-
visibile esattamente per 16 (un gruppo di 16 byte che inizia a un indirizzo multiplo
di 16 viene detto Paragrafo). A parte l'indirizzo di partenza, non ci sono altre li-
mitazioni. I segmenti possono essere adiacenti, disgiunti
l
parzialmente 0 totalmente
sovrapposti. Conseguentemente, una locazione di memoria fisica puo interessare uno
o pili segmenti.
ZF (Zero Flag): indica se un'istruzione ha generato zero come risultato.
I flag di controllo sono i seguenti.
.' AF (Auxiliary Flag): indica se c'e un riporto dal1bit 3 durante un1addizione 0 un

prestito dal bit 3 durante una sottrazione. E lisate in aritrnetica in BCD.


OF (Overflow Flag): indica se un'istruzione ha generato'un trabocco.
SF (Sign Flag): indica se un'operazione .ha generate un risultato negativo.
DF (Direction Flag): serve a controllare la direzione di manipolazione delle strin-
da parte di alcune istruzioni a esse riservate. DF indica se la stringa viene
letta/scritta a partire dall'elemento che ha indirizzo piu basso 0 da queUo di
indirizzo piu alto.
CF (Carry Flag), indica se un'istruzione ha generato un riporto da! bit pili
significativo.
PF (Parity Flag): indica 5e uri'istruzione ha generato un risuLtato con un numero
pari di bit unitari.
IF (Interrupt Flag): abilita 0 disabilita Ie interruzioni esterne.
TF (Trap Flag): permette l'esecuzione di un'istruzione per volta (single step)j e
fondamentale per il debugging
7
,
711 termine si riferisce figuratamente atl'eliminazione dai programmi di errori di basso Uvello, bugJ
o bachi in gergo informatico. .
B.2.2 Organizzazione della memoria
L'organizzazione della memoria eil tratto piu evidente del micro 8086, La CPU 8086
pub indirizzare fino a un massimo di 1Mbyte di memoria. Questo spazio elogicamente
suddiviso in segrnenti.
56'8 Appendice B
" 0
L'ar.chitettura 8086 569
i-
)-
-
-
-
]-
)-
)-
1-
j-
1-
]-
1-
1-
)-
j"
)-
o
SO),(MATORE
; AX +- M(DS,Offset(VAR)]
INDIRIZZO FISICO or 20 BIT
\9
MOV U,VAR
811 quar.to ha. solo una. giuBtlfiea.zione pratica: ,esso veoi:va ottenuto al solo .costo del
relativo registro ES. E980 viene utiliuato per seopi specifici; petaltr.o, in certe .situazioni risu1ta. utile
-dispon"e di un segmento di appoggio.
Fj.gura B.,8Ca1colo dell'indirizzo 6sico dall'indirizzo IOglco, I registri eli segmento conten-
gono ta base del segmento, ovv.ero l'indirizzo di partenza diriso per 16. Questa tecnic:a di.
costruzione deU'indirizoo fisic.o .da quello IOglco ha -COIlBentito d1 indirizzare uno spa.zio di
1 Mbyte di memoria. con registri di segmento di soli 16 anziche 20, Solo l'uscita del sorn-
.mato.r.e" appog,glat'a .suI registroche Interfa.ccia il bus elegli indirizzi, .e di 20 bit. All in
cu-i uscl 1'.8086, 1a densita. di integtazioDe era lantana'dai livelli correnti. Risp.armiar.e .sulla
dimensione dei l'egistri r.endeva disponibile peraltri scopi parte dell'Nea di silicio del chip.
0000 scosnlllENTO' (orFSET)
" 0
REGISTRO DI SEGYENiO I 0000
In Figur.a B,9 viene data una rappresentazione di una. possibile allocazione dei
segmenti,
Vso del r.egis.tri di segmento I registri di. segmento banno una funzione prede-
finita, rna c'e 1a l'oBsibi1i.ta dl akltlli impiegh.i altemativi, come illustrato in Tabella
B.!.
La cGlonna ''Registro N.ormale
n
indica i1 registr.o di segmento ehe viene normal-
mente .codificato nell'istruzione come base del s.egmento. Per esempio, l'istruziolle in
lingua'ggio ,assembler:
Al Paragrao B,2.), si evisto che in CPU ci sono i 4 registri di segmento CS, DS,
SS e ES: in un .datomomento essi contengono l'indirizz.o ill partenza (la base) dei seg-
menti Orrenti. Camblando il'contenuto di questl registri, dal medesimo programma
si possono indirizzare differenti segmenti.
I aegment"i del ,codice, dei dati ,e della stack formano t.re diversi spazi logici asso-
ciabiii 'in modo natur.ale aU'.esecuzione dei progr:ammi. Questa suddivisione porta a
una concettualizzazione dei programmi, secondo la quale c'e una netta. dirisione tra
codice, dati e d'ati temporanei:8,
In Figura B.B viene illustrato it modo in cui vengono calcolati,gli indirizzi fisici da-
gli indir'izzi logici. CODvenzionalmente, un indirizzo logico si scrive come SR.:OFFSETI
dove SR ,f uno dei registri <ii segmento.
c' ,
j'(-"
. I ,
., .,w,.!,.. );!;" ,)190.'"
,
..1. ,.I ", .
"",' .,' ' .. '.' '
"'''''"r'.l '
:,'1'" ',,,,.
,'lli""
., ... "";1'.'
.' . ' ,f'1.'
...' . 'c'
;..0'-1' .'

.

""I't '" " ,'ii,.,. .
.. ' 'i.' ",' i"
"".,.." :\' .!,.-
" I "t'" , ,. '"',.,..
"-, ":l
, .,
.'1 " :
. .. t,

':::;:":: r l'
, ., ". ""
", ' ,
... : " ", 'n- <.
. "f ", ' .. " ,.,
'..,,:. :."' ..
.',\". f';\,'
" j''':;'
.. ,.
, .. '. .
,J .. .,'.
) ,:- >.'
.... " ;
'j ", ..,.:., 1. ';':, .
," ,.:'; ,'(" ;(' ;>.;
',.,' ,.d. ,
::. -.if"
' ... " ,.
, v ,. .. ,.'
.. . .I,. r' ,
". '.
-."." '\'il .
'.' '"".- ..
l1r,;;, "
, .... ,o";;J" .. '
': . '
, " .'. ""." 'I.(!!:' ;
': 1,.1,',',....." ill:;",' '.
.., ',. ,.'"... ',.
1-11."\ '.'
" ", "
'..;
, 0:. t'
, " '
:.. .. k::"1 ": .i':..
)' ,. ...:
'f .:t. :, .
'.' ,'"I, ,.
'r. ' .
f
,.:r 1.\'"1,' .,il, :."
.C ' . .
,';;';.11
""., .
. ,
' ...'f"'
'<'311 'l./.'
".""" .
.. I',i, , .
.
',\. ,y,t .If".,."

" ':"i'''''',,:. ,l:'''''::'
, " ,...,.. """;'
"!:'o':'1'
., .. . ...
.. r .:,
:lh
; .';.;I"! '.'< ,i ._'.
.. \'f'
')i!.v.'-
;\'1',1::.
" .,. ' .
,
1t.\:,/
'....:.. ' ,.. '1&"
'..;:
..\..... ,'!'
...

.' ":"(1" 'i :t!ll;',( "
.': j'.",'S,:.'.
",,',' .",,'i',' ...
:'., ", .."
." ' :ih. '''.
.. 7
.'1\;:....... If'
'\
. "i,lfi(",:.-
... ,." .. \11"
.',
"Ili'
", ' " .. "
, '" ' ",','
",,-.':,,,,,,,,,'1
;:
'. ,"1,
,.oj I 'X ''''''l:.
, '"h{.' , .. 7.... ..
' .. .)......).':. ....:.:,
... to-fl' ' .......;.:.
-""
-, ... "
\'.''''.'J:
'.1.' . ... '
.'.
," '",-f: "i-': ',.,
>,;"j."\ i;':;" .,
'y'I'"
"."".1 ,Tjt.,
" ". .. ' - ",'.',
'...,. '.
':>;':"'.; ;!":I:.:,.
"-':f' ..
J'l,. ,",...., .',<
.,"':>:'"
(':":":"1.". '!'I":,;.' ..'
,.. ",.,
\:.
'," .. 1"" , ,.'
.. '. , .
.',",",' ,,, .,t"
..':
t'/' ,
.'ikt.
';>':'
- lli ",.
,"",
,1 '.. "',',
,', \
...jJ.. ,i,.,
La segmentazione Un segmento eun'unita. logica di memoria ebe puo avere una.
estensione massima eli 2
16
:::: 64 kbyte. Ogni segmento si compone di locazioni di
memoria contigue e costituisce una uniU. di memoria indirizzabile separatamente e
indipendt=!lltemente da altri segmenti. Un segmento puo e5Sere sistemato in qualunque
posizione della memoria fisica, purche inizi da una locazione avente un indirizzo di-
visibile esattamente per 16 (un gruppo di 16 byte che inizia a un indirizzo multiplo
di 16 viene detto Paragrafo). A parte l'indirizzo di partenza, non ci sono altre li-
mitazioni. I segmenti possono essere adiacenti, disgiunti
l
parzialmente 0 totalmente
sovrapposti. Conseguentemente, una locazione di memoria fisica puo interessare uno
o pili segmenti.
ZF (Zero Flag): indica se un'istruzione ha generato zero come risultato.
I flag di controllo sono i seguenti.
.' AF (Auxiliary Flag): indica se c'e un riporto dal1bit 3 durante un1addizione 0 un

prestito dal bit 3 durante una sottrazione. E lisate in aritrnetica in BCD.


OF (Overflow Flag): indica se un'istruzione ha generato'un trabocco.
SF (Sign Flag): indica se un'operazione .ha generate un risultato negativo.
DF (Direction Flag): serve a controllare la direzione di manipolazione delle strin-
da parte di alcune istruzioni a esse riservate. DF indica se la stringa viene
letta/scritta a partire dall'elemento che ha indirizzo piu basso 0 da queUo di
indirizzo piu alto.
CF (Carry Flag), indica se un'istruzione ha generato un riporto da! bit pili
significativo.
PF (Parity Flag): indica 5e uri'istruzione ha generato un risuLtato con un numero
pari di bit unitari.
IF (Interrupt Flag): abilita 0 disabilita Ie interruzioni esterne.
TF (Trap Flag): permette l'esecuzione di un'istruzione per volta (single step)j e
fondamentale per il debugging
7
,
711 termine si riferisce figuratamente atl'eliminazione dai programmi di errori di basso Uvello, bugJ
o bachi in gergo informatico. .
B.2.2 Organizzazione della memoria
L'organizzazione della memoria eil tratto piu evidente del micro 8086, La CPU 8086
pub indirizzare fino a un massimo di 1Mbyte di memoria. Questo spazio elogicamente
suddiviso in segrnenti.
56'8 Appendice B
I
Tipo di riferimento egistro
Registro
costamento
Normale Alternativo
Fetch CS
-
IF
.Operazioni di Stack SS -
SP
Variabili (eccetto quanto segue) DS CS, ES, SS
EA
Stringhe sorgenti DS CS, ES, SS SI
Stringhe destinazione ES
-
Dr
BP come base) SS CS,DS,ES EA
Lo stack ha ampiezza di parola. Sono previste due operazioni: PUSH e POP.
La prima inserisce sulla testa dello stack 16 bit , 1a seconda Ii prelevaj ovviamente SP
viene aggiornato in modo conseguente.
Mentre SS centiene 1a base dello stack corrente, SP contiene it puntatore alia
cima, 0 testa; in altri termini, SP contiene 10 scostarnento della cima dello stack
rispetto aSS. Si noti pero che, mentre SS da. la cima dello stack, SS non ne da. it
fondo; infatti 10 stack si sviluppa dagli indirizzi alti verso i bassi. In pratica, il valore
iniziale cli. SF e il valore pili grande della scostamento della cima dello stack. La
Figura B.ll illustra il funzionarnento dello stack.
Al fine di semplificare l'uso dello stack, e comunque prevista la possibilita. di
accedervi in via diretta. A tale scopo serve it registro BP. Per esempio:
HOY AX, [BP] ; AX +- H[SS: BP)
L\mpiego di BP risu1ta molto utile per il passaggio dei parametri attraverso 10 stack
nelle chiamate ai sottoprogrammi. SP permette d.i accedere in modo rnretto ai pa-
rametri e consente di evitare lunghe sequenze di POP per ristabilire la posizione
originaria della testa della stack al momento dell'uscita dal
L'architettura 8086 571
L'organizzazione della memoria delr8086 edel tipo Little Endian.
B.2.3 Accesso aHa memoria
10,1",01 "1
'\ .
Codifica del reglstro
dl segmento
Figura B.10 Formato del byte di prefisso eli segmento. n campo di 2 bit indicato come REG
porta codificato iI registro alternativo da. utilizzare, compatibilmente con quanta previsto in
Tabella.
Tabella B.1 Indirizzi logici e loro composizione. Le istruzioni vengono sempre prelevate dal
segmento di codice, mentre IP fornisce 10 scostamento. Alio stessa modo, Ie operazioni che
operano sullo stack (PUSH e POP) usano sempre SS come base e SP come scostamento. In
tabella, con EA si denotal'indirizzo effettivo Effective AddreJ''' (EA), come definito a pagina
578, ovvero it valore dell'indirizzo calcalato dalta CPU, a monte del registro di segmeoto. Si
veda anche il paragrafo B.4.
;ES in luogo di OS; AX +- AX+H[ES:ALT) HOY AX,ES:ALT

................
"'.... r
STACK
Lo stack in memoria n microprocessore gestisce gli stack in memoria centrale
registri 5S e SP. Ovviamente, ttn data programma puc prevedere un
numero qualsivoglia di stack, anche se"a un precise istante di tempo, eattivo solo 10"
stack corrente, individuato tramite SS.
dove VAR eil nome a.ssegnato a. una variabile 0 CQstante definita nel segmento dei
dati, genera un codice che ha Peffetta di in AX il contenuto della locazione
di memoria scostata di Offset(var) dal1a base del segmento individuato da OS.
Per impiegare un alternativo in luogo di DS, il programmatore deve
esplicitamente indicarlo. Per esempio, volendo usare ES, si dovra scrivere:
In questa caso I'assemblatore genera per l'istruzione il medesimo codice generato per
la precedente, rna 10 fa precedere dal prefisso di segmento Segment Override Prefix.
Si tratta <Ii un byte avente il formato di Figura B.IO.
Figura B.9 Esempio di dei quattro segmenti in memoria. Nel caso specifieD,
i segmenti sana teIluti separati, ma niente toglie che due 0 piu di essi possano sovrapporsi,
parzialmente 0 totalmente. In figura si indica tutto to spazio occupabile da! ,segmento; nella
pratica un segmento' sara. limitato a quanta necessaria. Per esempio, se il codice eli un
programma occupa. complessivamente 24 kbyte, il contatore di programma dovrebbe restare
wtro questa limite. Ovviamente, i programmi di dimensione superiore it. 64 kbytc, dovranno
esscrc orga.n.izzati in pin segmenti e i relativi registri di segmento dovranno essere modificati
.per passarc da un segmento all'altro. Per quanta si riferisce a.l codice, passano essere usate
Ie istruzioni di salto intersegmento.
\
(
I
I
I
I
. ,
'.
-.
.. \ 'I
I
-' ' "\
-
-'
..
_.
"
I
Tipo di riferimento egistro
Registro
costamento
Normale Alternativo
Fetch CS
-
IF
.Operazioni di Stack SS -
SP
Variabili (eccetto quanto segue) DS CS, ES, SS
EA
Stringhe sorgenti DS CS, ES, SS SI
Stringhe destinazione ES
-
Dr
BP come base) SS CS,DS,ES EA
Lo stack ha ampiezza di parola. Sono previste due operazioni: PUSH e POP.
La prima inserisce sulla testa dello stack 16 bit , 1a seconda Ii prelevaj ovviamente SP
viene aggiornato in modo conseguente.
Mentre SS centiene 1a base dello stack corrente, SP contiene it puntatore alia
cima, 0 testa; in altri termini, SP contiene 10 scostarnento della cima dello stack
rispetto aSS. Si noti pero che, mentre SS da. la cima dello stack, SS non ne da. it
fondo; infatti 10 stack si sviluppa dagli indirizzi alti verso i bassi. In pratica, il valore
iniziale cli. SF e il valore pili grande della scostamento della cima dello stack. La
Figura B.ll illustra il funzionarnento dello stack.
Al fine di semplificare l'uso dello stack, e comunque prevista la possibilita. di
accedervi in via diretta. A tale scopo serve it registro BP. Per esempio:
HOY AX, [BP] ; AX +- H[SS: BP)
L\mpiego di BP risu1ta molto utile per il passaggio dei parametri attraverso 10 stack
nelle chiamate ai sottoprogrammi. SP permette d.i accedere in modo rnretto ai pa-
rametri e consente di evitare lunghe sequenze di POP per ristabilire la posizione
originaria della testa della stack al momento dell'uscita dal
L'architettura 8086 571
L'organizzazione della memoria delr8086 edel tipo Little Endian.
B.2.3 Accesso aHa memoria
10,1",01 "1
'\ .
Codifica del reglstro
dl segmento
Figura B.10 Formato del byte di prefisso eli segmento. n campo di 2 bit indicato come REG
porta codificato iI registro alternativo da. utilizzare, compatibilmente con quanta previsto in
Tabella.
Tabella B.1 Indirizzi logici e loro composizione. Le istruzioni vengono sempre prelevate dal
segmento di codice, mentre IP fornisce 10 scostamento. Alio stessa modo, Ie operazioni che
operano sullo stack (PUSH e POP) usano sempre SS come base e SP come scostamento. In
tabella, con EA si denotal'indirizzo effettivo Effective AddreJ''' (EA), come definito a pagina
578, ovvero it valore dell'indirizzo calcalato dalta CPU, a monte del registro di segmeoto. Si
veda anche il paragrafo B.4.
;ES in luogo di OS; AX +- AX+H[ES:ALT) HOY AX,ES:ALT

................
"'.... r
STACK
Lo stack in memoria n microprocessore gestisce gli stack in memoria centrale
registri 5S e SP. Ovviamente, ttn data programma puc prevedere un
numero qualsivoglia di stack, anche se"a un precise istante di tempo, eattivo solo 10"
stack corrente, individuato tramite SS.
dove VAR eil nome a.ssegnato a. una variabile 0 CQstante definita nel segmento dei
dati, genera un codice che ha Peffetta di in AX il contenuto della locazione
di memoria scostata di Offset(var) dal1a base del segmento individuato da OS.
Per impiegare un alternativo in luogo di DS, il programmatore deve
esplicitamente indicarlo. Per esempio, volendo usare ES, si dovra scrivere:
In questa caso I'assemblatore genera per l'istruzione il medesimo codice generato per
la precedente, rna 10 fa precedere dal prefisso di segmento Segment Override Prefix.
Si tratta <Ii un byte avente il formato di Figura B.IO.
Figura B.9 Esempio di dei quattro segmenti in memoria. Nel caso specifieD,
i segmenti sana teIluti separati, ma niente toglie che due 0 piu di essi possano sovrapporsi,
parzialmente 0 totalmente. In figura si indica tutto to spazio occupabile da! ,segmento; nella
pratica un segmento' sara. limitato a quanta necessaria. Per esempio, se il codice eli un
programma occupa. complessivamente 24 kbyte, il contatore di programma dovrebbe restare
wtro questa limite. Ovviamente, i programmi di dimensione superiore it. 64 kbytc, dovranno
esscrc orga.n.izzati in pin segmenti e i relativi registri di segmento dovranno essere modificati
.per passarc da un segmento all'altro. Per quanta si riferisce a.l codice, passano essere usate
Ie istruzioni di salto intersegmento.
\
(
I
I
I
I
. ,
'.
-.
.. \ 'I
I
-' ' "\
-
-'
..
_.
"
In generale la segrnentazione ha Ie seguen.ti caratteri-stiche.
\
1-
-
I
1-
-
-
J-
-
-
1-
-
1-
1-
I
J..
1-
I.
I
1.
1.
.. a ...bu. "' ..... (DH)
b ", .. U (DL)
0
.,
-
0
-
...IE
- -
oEL "L
,

,

0'
-
00 0'
-
00
'0
-
00 ".........
7 - 0' ,. .......
,

o
della macchina sonl? a 16 bit
9
. Naturalmente, data la dimensione dei registri, i seg-
menti possono al massimo essere di 64 kbyte; aree di memoria pili grandi richiedono
la suddivisione in due 0 pili segmenti.
Ragioni di compatibilita. hanno impasto a1 costruttore di mantenere Ia segmenta-
zione nei modelli successivi, anche quando, can 13 CPU 80386, i registri sono passati
a 32 bit,
La CPU dell'8086 puo essere vista come suddivisa in due parti: I'Execution Unit
(ED) e la BU3 Interface Unit (BID) (Figura B,13), La suddivisione in due unita
(semi)indipendenti, operanti in salvo Ie necessarie sincronizzazioni, di cui una
deputata alia decodifica ed esecuzione delle istruzione e una deputata alla generazione
degli indirizzi, costituisee una sorta di pipelining elementare..
Per aumentare l'efficacia della suddivisione in due unita, nella Bm stata pre-
vista una coda di prefetch (delle istruzioni), Operando in parallelo con la ED, la BID
occupa gli.eventuali intervalli di tempo, durante i quali il bus non sarebbe impiegato
a causa delle asi di esecuzione delle istruzioni EU, per eseguire il fe.tch delle istruzioni
prossime. In tal modo viene sovrapposta Pattivita. di fetch con quella di decodifica
ed esecuzione. Se la coda si riempie ed EU non richiede operazioni sui bus, si ha un
intervallo di inattivita (a. cui corrisponde un cielo di bus detto Idle cycle).
Ovviamente, 1a coda deve essere SV\lotata quando 1a EU esegue unJistruzione di
saito, In questa case, la BIU riprende a eseguire il fetch delle istruzioni a partire dalla
B.2.5 Struttura interna del microprocessore 8086
9Si tenga presente che 1'8086 integra. solo 29.000 transistori. Registri e percorsi piu ampi avrebbero
comportato una. riduzione della funzionalitA. otferta da.lla CPU.
L'architettura 8086 573
Figura B.12 Organizzazione della memoria nelP8086. n banco dei byte a indirizzo pari e
selezionato da! segnale AO (attivo basso), doe dal bit meno significativo dell'indirizzo, mentre
il banco dispari eselezionato dal segnale BHE (Byte High Enable). Una parola a indiriuo
dispari richiede due cicli di letturafscrittura.. 'Nel primo cido viene presentato I'indirizzo
della parola con BHE asserito" nel secondo cicio viene presentato l'indirizzo successivo e,
quindi, con A
o
asserito.
,
SP 1<>.1,"'_1.
55:S?
I..,. DlllD
I 55
(U"'lle .. plo..)
(Um't. l .. ..l
I"
DJt..Tl
ALTftI
byt... :<l
o

Primo p ....:n
byt._ 11 by... 0
,.
pv._,".j
(Tap 01 0\.01<)
'0'

I
Appendice B
Facilita l'uso di ,aree separate per il cadice, i dati e 10 stack; in tal modo 1
1
0r_"
g'anizzazione del programma in memoria riflette la struttura logica del progr.am-
ma ,8tesso. Per contro, questa suddhrisione tende a.d oscurare la leggibilita del
programma rispetto a uno spazio di indirizzi piatto,
Nel easo specifieo dell'8086, la segmentazione ha permesso ai progettisti cli arri-
vare ,3 uno spazio di indirizzi ampio 1Mbyte? .anche Be i registri ed i percorsi interni
B.2A Osservazioni sull'organizzazione di memoria dell':8086
Permette una facile rilocazione dei programmi in meI1')oriaj ioatt1, essendo gli
indirizz1. fisici ottenuti come somma di uno scostament6 rispetto al contenuto di
un registro, la rilocazione richiede il solo aggiustamento del contenuto dei registri
di segment0.
Nel ,caso dell'8088, le case sono ulteriormente semplificate, in quanta l"accesso
esempre a 8 bit ,e 1a letturaf-scrittura di 16 bit ricbiede eomuaque -due .cieli di bus.
Uintegrato presenta comupque il piedino BHE, che pera viene mantenuto sempre
disasserito.
La CPU pub 8 0 16 bit. Nel .caso .eli let.turalserittura a 16 ':bit,
non si richiede che Ie parole siano se.la parolae a indirizzo paTi l'accesso
richiede un solo cicIo ill 'bus ('8i veda piu avanti) , se 130 parola ea indirizzo dispar'i
Paccesso richiede d.ue deli. In Figura B.12 vi-ene HIustrata 130 modalita di selezione..:
Figura B.Il Lo stack.
572
In generale la segrnentazione ha Ie seguen.ti caratteri-stiche.
\
1-
-
I
1-
-
-
J-
-
-
1-
-
1-
1-
I
J..
1-
I.
I
1.
1.
.. a ...bu. "' ..... (DH)
b ", .. U (DL)
0
.,
-
0
-
...IE
- -
oEL "L
,

,

0'
-
00 0'
-
00
'0
-
00 ".........
7
- 0'
,. .......
,

o
della macchina sonl? a 16 bit
9
. Naturalmente, data la dimensione dei registri, i seg-
menti possono al massimo essere di 64 kbyte; aree di memoria pili grandi richiedono
la suddivisione in due 0 pili segmenti.
Ragioni di compatibilita. hanno impasto a1 costruttore di mantenere Ia segmenta-
zione nei modelli successivi, anche quando, can 13 CPU 80386, i registri sono passati
a 32 bit,
La CPU dell'8086 puo essere vista come suddivisa in due parti: I'Execution Unit
(ED) e la BU3 Interface Unit (BID) (Figura B,13), La suddivisione in due unita
(semi)indipendenti, operanti in salvo Ie necessarie sincronizzazioni, di cui una
deputata alia decodifica ed esecuzione delle istruzione e una deputata alla generazione
degli indirizzi, costituisee una sorta di pipelining elementare..
Per aumentare l'efficacia della suddivisione in due unita, nella Bm stata pre-
vista una coda di prefetch (delle istruzioni), Operando in parallelo con la ED, la BID
occupa gli.eventuali intervalli di tempo, durante i quali il bus non sarebbe impiegato
a causa delle asi di esecuzione delle istruzioni EU, per eseguire il fe.tch delle istruzioni
prossime. In tal modo viene sovrapposta Pattivita. di fetch con quella di decodifica
ed esecuzione. Se la coda si riempie ed EU non richiede operazioni sui bus, si ha un
intervallo di inattivita (a. cui corrisponde un cielo di bus detto Idle cycle).
Ovviamente, 1a coda deve essere SV\lotata quando 1a EU esegue unJistruzione di
saito, In questa case, la BIU riprende a eseguire il fetch delle istruzioni a partire dalla
B.2.5 Struttura interna del microprocessore 8086
9Si tenga presente che 1'8086 integra. solo 29.000 transistori. Registri e percorsi piu ampi avrebbero
comportato una. riduzione della funzionalitA. otferta da.lla CPU.
L'architettura 8086 573
Figura B.12 Organizzazione della memoria nelP8086. n banco dei byte a indirizzo pari e
selezionato da! segnale AO (attivo basso), doe dal bit meno significativo dell'indirizzo, mentre
il banco dispari eselezionato dal segnale BHE (Byte High Enable). Una parola a indiriuo
dispari richiede due cicli di letturafscrittura.. 'Nel primo cido viene presentato I'indirizzo
della parola con BHE asserito" nel secondo cicio viene presentato l'indirizzo successivo e,
quindi, con A
o
asserito.
,
SP 1<>.1,"'_1.
55:S?
I..,. DlllD
I 55
(U"'lle .. plo..)
(Um't. l .. ..l
I"
DJt..Tl
ALTftI
byt... :<l
o

Primo p ....:n
byt._ 11 by... 0
,.
pv._,".j
(Tap 01 0\.01<)
'0'

I
Appendice B
Facilita l'uso di ,aree separate per il cadice, i dati e 10 stack; in tal modo 1
1
0r_"
g'anizzazione del programma in memoria riflette la struttura logica del progr.am-
ma ,8tesso. Per contro, questa suddhrisione tende a.d oscurare la leggibilita del
programma rispetto a uno spazio di indirizzi piatto,
Nel easo specifieo dell'8086, la segmentazione ha permesso ai progettisti cli arri-
vare ,3 uno spazio di indirizzi ampio 1Mbyte? .anche Be i registri ed i percorsi interni
B.2A Osservazioni sull'organizzazione di memoria dell':8086
Permette una facile rilocazione dei programmi in meI1')oriaj ioatt1, essendo gli
indirizz1. fisici ottenuti come somma di uno scostament6 rispetto al contenuto di
un registro, la rilocazione richiede il solo aggiustamento del contenuto dei registri
di segment0.
Nel ,caso dell'8088, le case sono ulteriormente semplificate, in quanta l"accesso
esempre a 8 bit ,e 1a letturaf-scrittura di 16 bit ricbiede eomuaque -due .cieli di bus.
Uintegrato presenta comupque il piedino BHE, che pera viene mantenuto sempre
disasserito.
La CPU pub 8 0 16 bit. Nel .caso .eli let.turalserittura a 16 ':bit,
non si richiede che Ie parole siano se.la parolae a indirizzo paTi l'accesso
richiede un solo cicIo ill 'bus ('8i veda piu avanti) , se 130 parola ea indirizzo dispar'i
Paccesso richiede d.ue deli. In Figura B.12 vi-ene HIustrata 130 modalita di selezione..:
Figura B.Il Lo stack.
572
...
r
"""'&0 """"" -.
,
(
ueo.._ ,.nett
- .
-
,......0 I"n'CH
.I
... I
Poiche Ie CPU 8086 e 8088 possono lavorare accoppiate a coprocessori, 10 stato
della coda ereso disponibile verso I'esterno attraverso la coppia di segnali Q5
0
,Q5
1
.
In Tabella B.2 viene riportato it significato delle quattIO possibili configurazioni.

b) Scrlt,t,u.r&
T'
0-' --- T T
/ .....J
I-' I-'
...",....z"", .TATO
I I I
- ....D<>UZZ. DA'" 0
,
...l,.TO_ .......
"''''T''
"
J

.... ) L ..
_._--
_.
---
T> T2 T T
.....J
f-J
c-f

'., .t'o,,,,z:r., .T... .,O
>
I I
_0_
,,,"'T,,,II<Z' oon
,.
v. " .....0_ "......,
'-
,
,
0 0
No operation. Durante l'ultimo cielo di clock
nessun byte estato estratto dalla coda.
U 1 f'irst oyte. byte estIatto d a coda era
iI primo dell listruzione
1 0 Queue empty. La coda estata reinizialiZzata
in seguito all'esecuzione di un'istruzione di saIto
1 1 :iuosequent byte. 11 byte estIatto a COd. era
successivo il primo byte delllistruzione
"'

0./
iiiN

AD...
m
L'architettura 8086 51.5
I QS, I QS, I Stato Clel1a coda I
Figura B.I5 Temporizzazione dei deli di lettura e di scrittura in modo minima. In modo
massimo la temporizzazione es?Stanzialmente identica, ma la linea MilO non edisponibile,
come pure non esce direttamente dalla CPU la linea WR. In modo massimo i comandi di
lettura e scrittura in memoria e in ingressofuscita sono generati attraverso il componente
8288.
"./"'''_A1
8HE,
All'epoca in cui veniva progettato 1'8086, questieni tecno1ogiche e di casto sembravano
imporre 1a sce1ta del package standard da 40 pin. Questo nurnero di pin ebasso per Ie
esigenze di funzionamento dell'8086 e ha imposto 1a condivisione del bus dati con Ie
16 linee meno significative del bus indirizzi (ADo - AD
1S
)' Per questa motivo i dcli
di lettura/scrittura presentano una prima fase in cui la CPU presenta gli indirizzi e
una seconda. Case in cui si attua. il trasferir:pento dei dati. Questa euno dei motivi per
cui un ciclo di bus dura come minima 4 periodi di clock.
In Figura B.15 viene riportata la temporizzazione dei cicli di lettura. e scrittura.
B.2.6 Cicli di bus
Tabella B.2 Decodifica dei bit di stato della coda.
n,,_ '.... .. *
UCO.u,. ' ....
. I
La prima istruzione elunga


\;'1, ,

- .,." .... :j\ ":"'"
", '''y\' )' r'
"
",. .
. j!;1.-, ._
",-, iI .'
'"'''' " " "
:,.,"",. ,"t" '.I'
',(, Ii"; '; ,,), ,
",-",l-.<";Il,, ""i
"i
, ','. t",., ,_
" .."",,. ',1'"-"
, ....,\-
'-' "."i.:. ,
.... '.1 ''''r.!'
'_e\,' ",'.',
, 'h>... .',".
,' .......
.', t'it..'
; .. .
,\-, .


-.,
, ," "t- o ,
, 0-' ....
",: ': ... .i
.. "'!.oiI-' -, .""';..

'I "":<';r,'" '"" ,.'
, \ ',:';"."l';; :i?'1:
''',"'1 ;""!I'''" ,
'.', '. """ ...... 'r
'"(i',',.;.r.: ,',
' ..
.,,' M, i,'''', '.. :,
, . I l'
,', ... ...\1'. "', "
., j' "I .. '" .... c;
';:'''4'.
,\ f.j't ,t
1l1' i 1::','1
, ,., .'
-,'';'''' . "
. . r:t=i'
,'.,. "." .l<.
" '.. 1"
-",>., ,'''.
:1&'''.':''
. f 'r,I1'''''
'.' :
"'!,.. ..
, . ';
8086. 51 notl ':. '\;" ..t
:l:lit .'
'.' ..
, ., ,'-',., 'r' 'j:"
, ,.'J......
""',,,,,,,, 4'

' ,i
",)" II, ,. "",
1;
'" r...",.. ', ..
J' ... ",J.!' ,
\'., ,-.. " ..
,,, '1,1'",.
: ',!
..... '[1.- ..
. ,,. '.
- l-" ..
..... < . ,: .
.., ......,,\.' - -" .
!;?,

-.t.t:rtll.-: !. i'J::.:,.
, l;oj'"
' >' ""'"
, ..
,.fl<,' """ ,
"''I' ','
" <' . ,I
'.!
",,,'''li ", ;>'..
":/:' '.,. - '" r'l!-
;,j ,',,,,.>,;,,, " ";"
.," '".w,,'"'!
.. , .r.'
... ;,' ....
'',.le,'I:',,,:,,,, '.' .'"
IV """" ,-,;r,\, . '; "
, (,', "f';,...
(1.:1r.'!'
j
.- ...' ,
.",..
" ,,:J\ "., .
....'" " ... ....., .
1'" .,.' ... '
, '!:i,'

, ",'., .
, :"'M' JI I .'
, 1'-"',....
,
""1""'-./';'
';:;:',1",. 1Ul,',.
'.\ .- "" I "'."
I\i!;f"
" ".j : "i' (:I' ",
...... ",'11 'I
','".\ '.',",'
"I" 'I' b) s t.<> "h.p<> 1l p".u"'''o ct..u ,."'. ':':.. 1'>.;,,:;,
.,..!;,';<.:',,,\ lY-J,>."
"
.t'i:r;' ';4;:0'

, ... ' ,
: .. i:t:, ;.
':;.1(... Pop" ,
.", iff?""
" ";:"'.-:.', ,-.
"".;1.,. ....
,. j - 'I .a,.';
J .... r
C
".,,""
".
,:' :',;,:,.:'
",-. 30"'"
.",,' '"""" '>"',,,.,
'" ;H;r.-
"
',' :\!t:'i:', ..
": ':,,';', .. 1',1
'l',:", >
\ .1;", ,
' '"" "'''',
"." :::, ,.'"m '
." ')'"
... .. ""
,,,,, ..,,, ""F
, '" ,4 d: ,:

;.: ;; '/ .
,'. \fi.!ii.\" _
'-EO
"_0 rrt"..
UeOHl>O un:H
'-_ ....... .. E
...eo.. o.
......... '....."2'0"..
.. ) st.... t.o lnlzi ..l ..
Appendice B
""OUIIT"'1

""'<:-lSTRI
O"N-="""-LI n,
SIIl<:-MJI'NTO
..
0.0
......... h. om
C .....-.:""--"'O.....
0.' Tt'DT",ZZ,
't'D""'2.ZI
cO.......01.LO
'.0
---
., ,
I
",,",O'.T'..
.. ,
1

"""T... '
ALU,
.,
O ..T .. o .......
<:0", ...
.,
p ......" .. .,..
l<-
..
I
T.T"u',,"Ot'T

EU BIU
574
Figura B.I3 5chematizzazione della struttura interna. del microprocessore
che nel caso del microprocessore 8088, la coda di prefetch edi soli 4 byte,
locazione destinazione del salta. Tenuta conto che, se 1a parola letta ea un indirizzo
pari, 1'8086 ein grade di leggere 16 bit alIa volta, nel case in cui il salto porti a un
indirizzo disparl, la BIU legge un Bolo byte, in modo da riportarsi in una condiziene
per cui i successivi fetch leggano sempre 16 bit alla volta. Per 10 stesso motivo, se
un'istnizione elunga pili di byte e nella coda sana disponibili tre posizioni, la BIU
esegue il (pre)fetch dei primi sedici bit e attende che si Ii berino almeno due posizioni
prima di effettuare il fetch dei successivi 16 bit. Questo fatto e sche1l'!-atizzato in
Figura B..14,
Figura B.14 La coda di prefetch del microprocessore 8086.
esattamente 1 byte, 1a seconda 2, la terza 3.
I
j
,
I
I
I
I
I
I
I
, .
-,
..
-.
-.
-
--
-
-.
--
. -
.-
.. ,
..
...
r
"""'&0 """"" -.
,
(
ueo.._ ,.nett
- .
-
,......0 I"n'CH
.I
... I
Poiche Ie CPU 8086 e 8088 possono lavorare accoppiate a coprocessori, 10 stato
della coda ereso disponibile verso I'esterno attraverso la coppia di segnali Q5
0
,Q5
1
.
In Tabella B.2 viene riportato it significato delle quattIO possibili configurazioni.

b) Scrlt,t,u.r&
T'
0-' --- T T
/ .....J
I-' I-'
...",....z"", .TATO
I I I
- ....D<>UZZ. DA'" 0
,
...l,.TO_ .......
"''''T''
"
J

.... ) L ..
_._--
_.
---
T> T2 T T
.....J
f-J
c-f

'., .t'o,,,,z:r., .T... .,O
>
I I
_0_
,,,"'T,,,II<Z' oon
,.
v. " .....0_ "......,
'-
,
,
0 0
No operation. Durante l'ultimo cielo di clock
nessun byte estato estratto dalla coda.
U 1 f'irst oyte. byte estIatto d a coda era
iI primo dell listruzione
1 0 Queue empty. La coda estata reinizialiZzata
in seguito all'esecuzione di un'istruzione di saIto
1 1 :iuosequent byte. 11 byte estIatto a COd. era
successivo il primo byte delllistruzione
"'

0./
iiiN

AD...
m
L'architettura 8086 51.5
I QS, I QS, I Stato Clel1a coda I
Figura B.I5 Temporizzazione dei deli di lettura e di scrittura in modo minima. In modo
massimo la temporizzazione es?Stanzialmente identica, ma la linea MilO non edisponibile,
come pure non esce direttamente dalla CPU la linea WR. In modo massimo i comandi di
lettura e scrittura in memoria e in ingressofuscita sono generati attraverso il componente
8288.
"./"'''_A1
8HE,
All'epoca in cui veniva progettato 1'8086, questieni tecno1ogiche e di casto sembravano
imporre 1a sce1ta del package standard da 40 pin. Questo nurnero di pin ebasso per Ie
esigenze di funzionamento dell'8086 e ha imposto 1a condivisione del bus dati con Ie
16 linee meno significative del bus indirizzi (ADo - AD
1S
)' Per questa motivo i dcli
di lettura/scrittura presentano una prima fase in cui la CPU presenta gli indirizzi e
una seconda. Case in cui si attua. il trasferir:pento dei dati. Questa euno dei motivi per
cui un ciclo di bus dura come minima 4 periodi di clock.
In Figura B.15 viene riportata la temporizzazione dei cicli di lettura. e scrittura.
B.2.6 Cicli di bus
Tabella B.2 Decodifica dei bit di stato della coda.
n,,_ '.... .. *
UCO.u,. ' ....
. I
La prima istruzione elunga


\;'1, ,

- .,." .... :j\ ":"'"
", '''y\' )' r'
"
",. .
. j!;1.-, ._
",-, iI .'
'"'''' " " "
:,.,"",. ,"t" '.I'
',(, Ii"; '; ,,), ,
",-",l-.<";Il,, ""i
"i
, ','. t",., ,_
" .."",,. ',1'"-"
, ....,\-
'-' "."i.:. ,
.... '.1 ''''r.!'
'_e\,' ",'.',
, 'h>... .',".
,' .......
.', t'it..'
; .. .
,\-, .


-.,
, ," "t- o ,
, 0-' ....
",: ': ... .i
.. "'!.oiI-' -, .""';..

'I "":<';r,'" '"" ,.'
, \ ',:';"."l';; :i?'1:
''',"'1 ;""!I'''" ,
'.', '. """ ...... 'r
'"(i',',.;.r.: ,',
' ..
.,,' M, i,'''', '.. :,
, . I l'
,', ... ...\1'. "', "
., j' "I .. '" .... c;
';:'''4'.
,\ f.j't ,t
1l1' i 1::','1
, ,., .'
-,'';'''' . "
. . r:t=i'
,'.,. "." .l<.
" '.. 1"
-",>., ,'''.
:1&'''.':''
. f 'r,I1'''''
'.' :
"'!,.. ..
, . ';
8086. 51 notl ':. '\;" ..t
:l:lit .'
'.' ..
, ., ,'-',., 'r' 'j:"
, ,.'J......
""',,,,,,,, 4'

' ,i
",)" II, ,. "",
1;
'" r...",.. ', ..
J' ... ",J.!' ,
\'., ,-.. " ..
,,, '1,1'",.
: ',!
..... '[1.- ..
. ,,. '.
- l-" ..
..... < . ,: .
.., ......,,\.' - -" .
!;?,

-.t.t:rtll.-: !. i'J::.:,.
, l;oj'"
' >' ""'"
, ..
,.fl<,' """ ,
"''I' ','
" <' . ,I
'.!
",,,'''li ", ;>'..
":/:' '.,. - '" r'l!-
;,j ,',,,,.>,;,,, " ";"
.," '".w,,'"'!
.. , .r.'
... ;,' ....
'',.le,'I:',,,:,,,, '.' .'"
IV """" ,-,;r,\, . '; "
, (,', "f';,...
(1.:1r.'!'
j
.- ...' ,
.",..
" ,,:J\ "., .
....'" " ... ....., .
1'" .,.' ... '
, '!:i,'

, ",'., .
, :"'M' JI I .'
, 1'-"',....
,
""1""'-./';'
';:;:',1",. 1Ul,',.
'.\ .- "" I "'."
I\i!;f"
" ".j : "i' (:I' ",
...... ",'11 'I
','".\ '.',",'
"I" 'I' b) s t.<> "h.p<> 1l p".u"'''o ct..u ,."'. ':':.. 1'>.;,,:;,
.,..!;,';<.:',,,\ lY-J,>."
"
.t'i:r;' ';4;:0'

, ... ' ,
: .. i:t:, ;.
':;.1(... Pop" ,
.", iff?""
" ";:"'.-:.', ,-.
"".;1.,. ....
,. j - 'I .a,.';
J .... r
C
".,,""
".
,:' :',;,:,.:'
",-. 30"'"
.",,' '"""" '>"',,,.,
'" ;H;r.-
"
',' :\!t:'i:', ..
": ':,,';', .. 1',1
'l',:", >
\ .1;", ,
' '"" "'''',
"." :::, ,.'"m '
." ')'"
... .. ""
,,,,, ..,,, ""F
, '" ,4 d: ,:

;.: ;; '/ .
,'. \fi.!ii.\" _
'-EO
"_0 rrt"..
UeOHl>O un:H
'-_ ....... .. E
...eo.. o.
......... '....."2'0"..
.. ) st.... t.o lnlzi ..l ..
Appendice B
""OUIIT"'1

""'<:-lSTRI
O"N-="""-LI n,
SIIl<:-MJI'NTO
..
0.0
......... h. om
C .....-.:""--"'O.....
0.' Tt'DT",ZZ,
't'D""'2.ZI
cO.......01.LO
'.0
---
., ,
I
",,",O'.T'..
.. ,
1

"""T... '
ALU,
.,
O ..T .. o .......
<:0", ...
.,
p ......" .. .,..
l<-
..
I
T.T"u',,"Ot'T

EU BIU
574
Figura B.I3 5chematizzazione della struttura interna. del microprocessore
che nel caso del microprocessore 8088, la coda di prefetch edi soli 4 byte,
locazione destinazione del salta. Tenuta conto che, se 1a parola letta ea un indirizzo
pari, 1'8086 ein grade di leggere 16 bit alIa volta, nel case in cui il salto porti a un
indirizzo disparl, la BIU legge un Bolo byte, in modo da riportarsi in una condiziene
per cui i successivi fetch leggano sempre 16 bit alla volta. Per 10 stesso motivo, se
un'istnizione elunga pili di byte e nella coda sana disponibili tre posizioni, la BIU
esegue il (pre)fetch dei primi sedici bit e attende che si Ii berino almeno due posizioni
prima di effettuare il fetch dei successivi 16 bit. Questo fatto e sche1l'!-atizzato in
Figura B..14,
Figura B.14 La coda di prefetch del microprocessore 8086.
esattamente 1 byte, 1a seconda 2, la terza 3.
I
j
,
I
I
I
I
I
I
I
, .
-,
..
-.
-.
-
--
-
-.
--
. -
.-
.. ,
..
B. 2.8 La rase di partenza
B.2.7 Modalita di funzionamento
lOU coslruttore fornisee tutta. una. serle di integrati di supporto, tra cui i1 componente 8282 che
serve a questo scopo. Nel caso specifico, pub comunque esaere usato il componente standard '373
della serie SN74.
11 Peraltro parte delle posizioni dell'ultimo paragrafo di memoria sona riservate a usi speciali.
Quando la CPU viene messa sotto tensione, ovvero suI reset, a CS viene assegnato
il valore FFFF mentre a IF viene assegnato il valore O. Conseguentemente la prima
istruzione eseguita equella alIa lacazione FFFFO. Essendoci pochissime posizioni tra
questa posizione e il confine estremo della memoria
ll
enecessario che essa contenga
1'
).
/.
I
_.
l..
_.
L
]..
].
1'
\
I,.
I.'
)-
I.
1..
'"
J.>TCR
BUS nrolRnZl
""
.
M: TIWfCElVER
BUS OA.n
""'"
828'"
T
.,..
8088/808e
i>T/ll
,..
'"
""'"

""
,

'"
'"
...,
-
'"
0
'"
"'"

"
'"
-
0
C ""
0
ADO-.UllS
.\18-.09
,os
""/'"
- 8288
1llR
-b
-
'" 8z:.U
L'architettura 8086 577
L'8086 ha un repertorio di istruzioni molto ampio, come di solito hanno Ie macchine
microprogrammate. II repertorio puc essere riguardato in due modi diversi: (a) a
livello di eodice assembler e (b) a livelln di cediee maechina. A livello di eodiee as-
sembler 1',8086 ha un repertorio di circa 100 istruzioni; rna a ciascu,n co9.ice assembler
puo corrispondere piu di una istruzione di macchina. Per esempio, I'istruzione MOV,
llsata per 10 spostamento di dati, viene impiegata per trasferire dati da e verso regi-
stri e memoria, a 8 0 a 16 bit. Thttavia aUo mnemonico MOV dellinguaggio assembler
corrispondono 28 istruzioni di macchina (move word register to memory, move byte
immediate to register, ecc.). Uassemblator.e traduce nel codice opportuno l'istruzione
assembler. Naturalmente questa varieta di istruzioni macchina comporta una
tura dei eodiei e dei formati alquanto complieata (Cfr. B.5). In Tabella B-3 vengono
riportate Ie forme mnemoniche di alcune istruzioni raggruppate per classi.
B,3 11 repertorio delle istruzioni
un saito alIa prima effettiva istruzione del programma. E pertic. obbligatorio che
130 parte alta dello spazio degli indirizzi sia coperto da memoria di' tipo ROM, aHo
scopo di garantire che all'atto della messa sotto tensione entri. in scena il firmware
di inizializzare del sistema. Si tratta della parte piu interna. del sistema 'operativo (it
BIOS, da Basic Input/Output System).
Figura B.l6 Impiego del dispositivo 8288 per 1a generazione dei segnali di cantrollo del
bus in modo massimo. Per i latch e i transce1ver.s vengono impiegati gli integra.ti di canedo
for.niti dal costruttore (8282 e 8286), anche se si potrebbe fare uso di componenti della serie
SN74.
Appendice B
II micro 8086 ha due modalita. di funzionamento: modo minima e modo massimo.
La selezione del modo di funzionamento si ottiene attraverso i1 piedino 33
grato (FiguraB.5)1 che viene permanentemente coUegato all'alimentaziqne 0 a massa.
Come si puo osservare in FiguraB.5, alcuni piedini dell'integrato assumono differente
significato a seconda del modo. Per esempio, in modo massimo, i piedini 30 e 31 sono
dedicati ai segnali Request/Grant, utilizzati per la gestione del coprocessore e/o del
proc'essore di ingresso/uscita, mentre in modo minimo servono per il collegamento
diretto di un controllore DMA.
Nel modo minima eesclusa possibilita. di usare it coprocessore matE!matico 8087
(Cfr.B.6) 0 il processore di ingresso/uscita 8089. Questa modalita di funzionamento
viene adottata per sistemi di complessita. minare. Come si vede in Figura B.5) it
modo minima rencle disponibili i segnali di controllo e comando del mondo esterno,
Utilizzando le linee RP, WR e MilO e possibile costruire i segnali di Iettura di
memoria, lettura di I/O, scrittura di memoria e scrittura di I/O.
In modo massimo Don tutti i segnali di cantrallo sono direttamente disponibili.
D costruttore ha previsto uno specifieo componente di appoggio, il controllore .di bus
8288, il quale genera i segnali di comando sul.la base dello stato della CPU (comunicato
attraverso le tre linee SO, 81 e 82). In FiguraB.16 viene presentato un esempio di
configurazione in modo massimo.
. ,
.,'.'
"\k
.';fl.'1;:- Io'f"""
,. :!. .... I,. .!
:
... i
e
- r

.""1. .
.,::' : ,. ':,
.. """k "..
;'.,' .
...
.. { ..
.,. !>l." ,
- .. ... , 1--'
Su T
1
viene presentato Pindirizzo e viene asserita la linea ALE (Address Latch
Enable) I utilizza.ta per memorizzare su un latch esterno 10 stato delle linee condivise ,
ADo - AD
1
5 10, Su T
ZI
a seconda che si tratti di un ciclo di lettura 0 di scrittura
. __ ,,........'.'r, '.0'
vengono asseriti.i rispettivi comandi (Rn 0 WR). Sernpre su T2 viene asserita 1a linea ,t:}:
DEN (Data Enable) che abilita l'eventuale bus transceiver inserito tra microprocessore (:,:F:
i
:,
e sistema di bus esterni. Invece la linea DT/R, usata per selezionare la direzione .:..
di trasferimento al transceiver sul bus dati, e permanentemente asserita per tutto >.. /t:::
il cicIo, in al tipo di cicio stesso. La linea MilO stabilisce se si tratti di un '
cicIo di lettura/scrittura in memoria 0 in ingresso/uscita. Si Doti infine che Ie linee .. ;r(
- AD19. di sta.t? (83 - 87 ) la seconda fase del
clclo. Queste mformazlom possono essere utlhzzate dalla lOgJ.ca esterna.
,,:,". ,rJ .. I,
- ...:, "}"'\'. t'>\i;"":';
.. ,":>,.-.
'\" ... .. "'''(' "
.'.

<'";""' ...
:;t:\:
,.. i'" J":;....'...
-:'.:. ,,,,,-" C'
',:', 0"" r.....
"" ,:ifJ""I' ,""!'"
;,... .. 'lit,:; "
,;,,r ""'", '
: .. "",,...,,
:!,'l...,"

,- 1'.';>,.
,:' :'\o1i:.p 'b"'"
:"'J:
... i\'"'' ',",.e ',;';"
' ..J" , .' ': ... .
",' '1",''"
, v'"," J ,..",(.
",'
'cO' ,t -.'
-:..,":... ..
. '1;,,:<,-"
;,,:.; 'r.:.; ,.,,;:':;
_' "', ',.
ki/ .
'I'
." .':'t,,,,.!.\.,,< ':l
:<:.... T'
, ' ..., , .. ," .
',,--.,',.,,'-j" "",'""
.. ." ,
< i.I

':i '.'1':."
.;:.-,.
-',-', \1.1 't" .., ,"'';:-Il
.,,' .<.... . ,.
., 'iNK' '.",.
'. i:" :ii; ..,
'),"1, ...

.
v': $',-"
. , .. 1>,
:,.";,
'".0 .','i!',:,.'

:0"1; :':t.;;....
.
,-",0/.'.,-. "'fl.'
M'f.'!?.'.-."
. " ""'" ---r'-., ,',1, '.. ..
. , ',' '''t .,.' "".
-_:.t:' J;:;>".'
..
, _,' '. "..'f-,-, ,
...
...,y.,.....
,t.';;:'
C;i:;j!'
.'m" ,,....'n
:,. "" '''':i, '
,. --1'" , .. ., ..
-', 'I' .""
,
, '(;'.'-;"
I' ..
'-;., - .-Q,.
':j,,,,"

'--""'10 ",'>'.".
'll ' >1:,1.
,.. j.ft
, , ' ' -," , ",>', ,.
::;'1 .,I.:T
l', ,,'.>:
,.. .',: 'r':,:,
"j;";.'
'1, " __
.-
..,,'.,,,-
'. .
: ...
"i"iNo"'"
..
" __ , ,'l- '. __ .
.... ',",,"' , ..:{:o.:"
"-- 1'''-0.,' - ,,\:,,,,,
).:,:,;(p'''-"l''
.. ,.
;,.' ..' ' .
",'i' ,'-' '1

576
I
I
I
I
B. 2.8 La rase di partenza
B.2.7 Modalita di funzionamento
lOU coslruttore fornisee tutta. una. serle di integrati di supporto, tra cui i1 componente 8282 che
serve a questo scopo. Nel caso specifico, pub comunque esaere usato il componente standard '373
della serie SN74.
11 Peraltro parte delle posizioni dell'ultimo paragrafo di memoria sona riservate a usi speciali.
Quando la CPU viene messa sotto tensione, ovvero suI reset, a CS viene assegnato
il valore FFFF mentre a IF viene assegnato il valore O. Conseguentemente la prima
istruzione eseguita equella alIa lacazione FFFFO. Essendoci pochissime posizioni tra
questa posizione e il confine estremo della memoria
ll
enecessario che essa contenga
1'
).
/.
I
_.
l..
_.
L
]..
].
1'
\
I,.
I.'
)-
I.
1..
'"
J.>TCR
BUS nrolRnZl
""
.
M: TIWfCElVER
BUS OA.n
""'"
828'"
T
.,..
8088/808e
i>T/ll
,..
'"
""'"

""
,

'"
'"
...,
-
'"
0
'"
"'"

"
'"
-

0
C ""
0
ADO-.UllS
.\18-.09
,os
""/'"
-
8288
1llR
-b
-
'"
8z:.U
L'architettura 8086 577
L'8086 ha un repertorio di istruzioni molto ampio, come di solito hanno Ie macchine
microprogrammate. II repertorio puc essere riguardato in due modi diversi: (a) a
livello di eodice assembler e (b) a livelln di cediee maechina. A livello di eodiee as-
sembler 1',8086 ha un repertorio di circa 100 istruzioni; rna a ciascu,n co9.ice assembler
puo corrispondere piu di una istruzione di macchina. Per esempio, I'istruzione MOV,
llsata per 10 spostamento di dati, viene impiegata per trasferire dati da e verso regi-
stri e memoria, a 8 0 a 16 bit. Thttavia aUo mnemonico MOV dellinguaggio assembler
corrispondono 28 istruzioni di macchina (move word register to memory, move byte
immediate to register, ecc.). Uassemblator.e traduce nel codice opportuno l'istruzione
assembler. Naturalmente questa varieta di istruzioni macchina comporta una
tura dei eodiei e dei formati alquanto complieata (Cfr. B.5). In Tabella B-3 vengono
riportate Ie forme mnemoniche di alcune istruzioni raggruppate per classi.
B,3 11 repertorio delle istruzioni
un saito alIa prima effettiva istruzione del programma. E pertic. obbligatorio che
130 parte alta dello spazio degli indirizzi sia coperto da memoria di' tipo ROM, aHo
scopo di garantire che all'atto della messa sotto tensione entri. in scena il firmware
di inizializzare del sistema. Si tratta della parte piu interna. del sistema 'operativo (it
BIOS, da Basic Input/Output System).
Figura B.l6 Impiego del dispositivo 8288 per 1a generazione dei segnali di cantrollo del
bus in modo massimo. Per i latch e i transce1ver.s vengono impiegati gli integra.ti di canedo
for.niti dal costruttore (8282 e 8286), anche se si potrebbe fare uso di componenti della serie
SN74.
Appendice B
II micro 8086 ha due modalita. di funzionamento: modo minima e modo massimo.
La selezione del modo di funzionamento si ottiene attraverso i1 piedino 33
grato (FiguraB.5)1 che viene permanentemente coUegato all'alimentaziqne 0 a massa.
Come si puo osservare in FiguraB.5, alcuni piedini dell'integrato assumono differente
significato a seconda del modo. Per esempio, in modo massimo, i piedini 30 e 31 sono
dedicati ai segnali Request/Grant, utilizzati per la gestione del coprocessore e/o del
proc'essore di ingresso/uscita, mentre in modo minimo servono per il collegamento
diretto di un controllore DMA.
Nel modo minima eesclusa possibilita. di usare it coprocessore matE!matico 8087
(Cfr.B.6) 0 il processore di ingresso/uscita 8089. Questa modalita di funzionamento
viene adottata per sistemi di complessita. minare. Come si vede in Figura B.5) it
modo minima rencle disponibili i segnali di controllo e comando del mondo esterno,
Utilizzando le linee RP, WR e MilO e possibile costruire i segnali di Iettura di
memoria, lettura di I/O, scrittura di memoria e scrittura di I/O.
In modo massimo Don tutti i segnali di cantrallo sono direttamente disponibili.
D costruttore ha previsto uno specifieo componente di appoggio, il controllore .di bus
8288, il quale genera i segnali di comando sul.la base dello stato della CPU (comunicato
attraverso le tre linee SO, 81 e 82). In FiguraB.16 viene presentato un esempio di
configurazione in modo massimo.
. ,
.,'.'
"\k
.';fl.'1;:- Io'f"""
,. :!. .... I,. .!
:
... i
e
- r

.""1. .
.,::' : ,. ':,
.. """k "..
;'.,' .
...
.. { ..
.,. !>l." ,
- .. ... , 1--'
Su T
1
viene presentato Pindirizzo e viene asserita la linea ALE (Address Latch
Enable) I utilizza.ta per memorizzare su un latch esterno 10 stato delle linee condivise ,
ADo - AD
1
5 10, Su T
ZI
a seconda che si tratti di un ciclo di lettura 0 di scrittura
. __ ,,........'.'r, '.0'
vengono asseriti.i rispettivi comandi (Rn 0 WR). Sernpre su T2 viene asserita 1a linea ,t:}:
DEN (Data Enable) che abilita l'eventuale bus transceiver inserito tra microprocessore (:,:F:
i
:,
e sistema di bus esterni. Invece la linea DT/R, usata per selezionare la direzione .:..
di trasferimento al transceiver sul bus dati, e permanentemente asserita per tutto >.. /t:::
il cicIo, in al tipo di cicio stesso. La linea MilO stabilisce se si tratti di un '
cicIo di lettura/scrittura in memoria 0 in ingresso/uscita. Si Doti infine che Ie linee .. ;r(
- AD
19
. di sta.t? (8
3
- 8
7
) la seconda fase del
clclo. Queste mformazlom possono essere utlhzzate dalla lOgJ.ca esterna.
,,:,". ,rJ .. I,
- ...:, "}"'\'. t'>\i;"":';
.. ,":>,.-.
'\" ... .. "'''(' "
.'.

<'";""' ...
:;t:\:
,.. i'" J":;....'...
-:'.:. ,,,,,-" C'
',:', 0"" r.....
"" ,:ifJ""I' ,""!'"
;,... .. 'lit,:; "
,;,,r ""'", '
: .. "",,...,,
:!,'l...,"

,- 1'.';>,.
,:' :'\o1i:.p 'b"'"
:"'J:
... i\'"'' ',",.e ',;';"
' ..J" , .' ': ... .
",' '1",''"
, v'"," J ,..",(.
",'
'cO' ,t -.'
-:..,":... ..
. '1;,,:<,-"
;,,:.; 'r.:.; ,.,,;:':;
_' "', ',.
ki/ .
'I'
." .':'t,,,,.!.\.,,< ':l
:<:.... T'
, ' ..., , .. ," .
',,--.,',.,,'-j" "",'""
.. ." ,
< i.I

':i '.'1':."
.;:.-,.
-',-', \1.1 't" .., ,"'';:-Il
.,,' .<.... . ,.
., 'iNK' '.",.
'. i:" :ii; ..,
'),"1, ...

.
v': $',-"
. , .. 1>,
:,.";,
'".0 .','i!',:,.'

:0"1; :':t.;;....
.
,-",0/.'.,-. "'fl.'
M'f.'!?.'.-."
. " ""'" ---r'-., ,',1, '.. ..
. , ',' '''t .,.' "".
-_:.t:' J;:;>".'
..
, _,' '. "..'f-,-, ,
...
...,y.,.....
,t.';;:'
C;i:;j!'
.'m" ,,....'n
:,. "" '''':i, '
,. --1'" , .. ., ..
-', 'I' .""
,
, '(;'.'-;"
I' ..
'-;., - .-Q,.
':j,,,,"

'--""'10 ",'>'.".
'll ' >1:,1.
,.. j.ft
, , ' ' -," , ",>', ,.
::;'1 .,I.:T
l', ,,'.>:
,.. .',: 'r':,:,
"j;";.'
'1, " __
.-
..,,'.,,,-
'. .
: ...
"i"iNo"'"
..
" __ , ,'l- '. __ .
.... ',",,"' , ..:{:o.:"
"-- 1'''-0.,' - ,,\:,,,,,
).:,:,;(p'''-"l''
.. ,.
;,.' ..' ' .
",'i' ,'-' '1

576
I
I
I
I
. . \
-
.- 1
I
.-
.-, I
-
.. I
I
-
_. \
.-
..- I
..
_. \
UOvviamente un ope.rando immediat.o pub esscre solo di lettura.
518 Appendice B

.; AX t- H[Offset(VAR)]j,.
"_leo
s
H os I-I-
H ss I-I-
rl cs 1=1-
esso destinato (EA = Offset(VAR)) .
Esempioo HOV AX. VAR
SINGOLO lNDICE
OOPPIO tNDICE
ex
ex
s,
,
ep
ep
0'
COOlf'ICATO
NELI-o\
I
I ISTRUZIONE
lEU
S,
0'
Ef'I"ECTIVE
ADDRESS
[
d
ESPUCITO
=-
""
t-IELLA.
ISTRUZIONl';
Sl::CMENTO
NORMAl,.Ml!:l'ITE
ASSUNTO
OPPURZ
SlI:OMI!:NTO
/l.-LTERN/l.-TIVO
L'architettura 8086 579
Indirizzamento indiretto attraverso un registro: quando l'istruzione non pre-
senta il campo dello scostamento e viene specificate uno dei quattro registri
di sinistra di Figura B.17. EA eit contenuto del registro specificate.
Esempio: HOV [aX], AL ; H[BX] t- AL .
131n realta. Quello che viene caricato in AX eil contenuto della. posizione di memoria. scostata di
EA rispet.to at contenuto di DS (moltiplica.to per 16). In altre parole si doveva. scrivere:
AX +- M[DS:O:ffset(VAR)]. Poiche I'indirizzo fisico deriva. sempre da un logico segmentato, qui e nel
seguito si etrascurato iI registro di segmento implicato. La composizione degli indirizzi logici e stata
illustrata in TabellaB.I.
Indirizzamento con l'impiego di registri La Figura B.17 mostra. che un'istru-
zione pub codificare uno 0 due registri, oltre che 10 scostamento, In 5intesi, 5i
hanno queste' pos5ibilita.
Figura B.17 Metodo di catcolo deU'indirizzo di memoria. Si noti che 10 scostamento pub
essere, aseconda dei casi, di 8 0 di 16 bit. Uindirizzo effettivo Effective Address (EA) equello
calcolato dalla EU a monte del contributo del registro di segmento, A questa acostamento
la BIU somma la base del segmento e cioe il contenuto del registro di segmento moltiplicato
per 16.
:.".::lt
r
, ;.:1" .
.' '1':;,
/

Ii'''
:;:;" .'.
_."" .;.,."
., ...,. "
... '\f," :,,' .,'
"
.....,."'-.1<
, -'1; .,"
!If,':
, '0:
,... .._ .....
,.. ";,,
. 'C,''''

" ..'-' ",'
" . "t""
,',"
-', ",
..
"IN ,"'. '.
,'1;-)
.' t .
, ,,".:n: ,
.' .. .'''':'
, ....
.."'" <.'
t.,. ':t! ", .
... T
,; ."
"'. .-,.',""',
... f1'< ",
, .",' "t"<' ,
" ...., ..,
' .. ' .,,',
,. \", ..
"':'<i'--''; i,' "'!'
.,.1 "'
"' ... ;..:
. '.lI.'
," "dl"-
.,:."('f}
! ;.1"."1,:\ ;,:I,; ,.
,,;:'"1 .''f,';''";'

'
1 ,.. ijl{

.,d /- ..
",.
,,' ,,-, :'ii' ':.'
:" il'r''
,. '1," .,',.
.."\,'.- 'j.:,' :'
,:'...
",,,:,,.' _.it.,.'
.,.,.. .
"-:"",."', ,;'/0"0'
,.:t; :, 01' ;:,'
:....,.';" ':<I
',:1",' ".,'
, '.. r.'!k
'., ,.
:.;-.\"
"'I .... ' .. ....
, "",;;,. ,,,,,..
, ' 'J."'!" .. ,
" .,
., ."
....,
, ,",' "'1"
'\'"!.';i;n
-;.. ;{;, ..
.... , .. ,..},
.,:':. ,,'.l;'"
'j;' .;r-
. <,; , e..
., <
"! ':'-"''':1
.,"""'\}
i.""
>, ".''''' 1 ',",;
," .., ".' ,'"
, " ".". ,,' ",
.,...... '.,..
.. ".';t., . .
:';;"',""'" i'" "",.',.,.,. ,i
I Sf.
,J/'('" ' '
',.' ',.;.;,;; " ",'
, .. ........ ; ".'

;. \ I'" 'm:'

" 1" 1\"
.,'.-;'::
..'. ',- \ ,<'
,.' '., .' '" ....,.
1,",$;
.';..
.. ;..",. '9!'"
'""10:,, .
':}, iii..:
"'i,:;'j
,>. t ,;', .'.. '
,,'. r ."
, ,,\,e .. '. ,\r,.',
",:;.';> .1'
. "
".. -
..
.,',c": '
._..' 1,
.".. : - '"
/".,
, " ,.,'.
""', ."" , .. , '>I,{"
Iii......
, :?:-"
.,; .-).. ,
,.,_i:" l.:i!l'
'': ",:.:;"; .\;:"- ,.
'.' ;'::", .' "/':.-'" "
.' " "''''''' l,tio\
.,,' .:,..;..- ,.
. - ". \ " ..,'
'." , ......
.( ,' .:<,""
:-'" .:.:
'. ''. .,o,
;.,ij{J
. .
" ,'i':/; .x.:,
".." '''.' ," ij'tf,
".::r... ......... :
., '''''',,0\'
.., ,-
.>' ,.tri"...
:
, "'-;..l;';'-;!;
" ..
; AX t- 2475,
;AH f- Bt.
HOV AX,2475
HOV AH,BL
Esempie:
Esempio:
La macchina prevede anche 1a possibilita di specificare gli operandi immediati.
In questa caso, l'operando diventa. parte del codice della istruzione e l'esecuzione
dell'istruzione non richiede un ulteriore cicIo di .lettura dalla memoria, in quanta i1
dato epresente in CPU per efIetto del fetch dell'istruziane
12
.
B.4.1 Indirizzamento degli operandi
A costo di annoiare illettore, invitato comunque a consultare i manuali e la vasta
teratura Intel nella quale trovera. tutti i minimi dettagli aUe questioni trattate
qui di seguita, vale la pena d.i spendere due parole sulle rnodalita. di indirizzamento
e sui formati delle istruzioni. n loro esame mettera. in evidenza la complessita. della
macchina, secondo la tendenza dell'epoca in cui venne progettata, quando l'approccio
alia progettazione era la microprogrammazione.
Indirizzamento in memoria Esiste una varieta. mol to ampia di modi di indiriz-
zament9' In Figura B.17 viene data una schematizzazione che Li riassume tutti.
Indirizzamento dei registri di CPU e degli operandi immediati Le istruzioni
che usane come operandi solo i registri di CPU sono malta compatte,. in quanta 1.a
eodifiea dei (egistri richiede poehi bit.
Gli operandi di un'istruzione possano essere contenuti: nel codice stesso dell'istru
zione, nei registri di CPU, in memoria. e sulle porte di I/O.

Indirizzamento diretto E la forma piu semplice di indirizzamento in memoria,


corrispondente alia situazione in cui non interviene alcun registro di ED. In questo
caso, EA corrisponde at solo scostamento contenuto nel campo dell'istruzione a
BA Modalita di indirizzarnento
Per 8086/8088 estata previsto il coprocessore 8087, un dispositivo che estende il
repertorio di istruzioni aggiungendo un insieme completo di istruzioni per operazioni
. in virgola mobile. n coprocessore esterno estato lisata. fino al 386. A partire dalla
CPU 80486, I'unita per Ie operazioni in virgola mobile estata integrata sullo stesso
chip della CPU.' Inaltre ogni volta in cui e stato introdotto un nuavo madelia di
CPU, sono apparse nuave istruzioni , in rapporto aUe aggiunte potenzialita. In un
caso, quando estata introdotta })aritmetica per elaborazioni multimediali (l'estensione
MMX, Cfr. B.ll), ecomparso tutto un nuovo insieme di istruzioni.
I
\
'J
(
(
I
I
_.
-.
..
"
--
..
-.
-.
--
...
. . \
-
.- 1
I
.-
.-, I
-
.. I
I
-
_. \
.-
..- I
..
_. \
UOvviamente un ope.rando immediat.o pub esscre solo di lettura.
518 Appendice B

.; AX t- H[Offset(VAR)]j,.
"_leo
s
H os I-I-
H ss I-I-
rl cs 1=1-
esso destinato (EA = Offset(VAR)) .
Esempioo HOV AX. VAR
SINGOLO lNDICE
OOPPIO tNDICE
ex
ex
s,
,
ep
ep
0'
COOlf'ICATO
NELI-o\
I
I ISTRUZIONE
lEU
S,
0'
Ef'I"ECTIVE
ADDRESS
[
d
ESPUCITO
=-
""
t-IELLA.
ISTRUZIONl';
Sl::CMENTO
NORMAl,.Ml!:l'ITE
ASSUNTO
OPPURZ
SlI:OMI!:NTO
/l.-LTERN/l.-TIVO
L'architettura 8086 579
Indirizzamento indiretto attraverso un registro: quando l'istruzione non pre-
senta il campo dello scostamento e viene specificate uno dei quattro registri
di sinistra di Figura B.17. EA eit contenuto del registro specificate.
Esempio: HOV [aX], AL ; H[BX] t- AL .
131n realta. Quello che viene caricato in AX eil contenuto della. posizione di memoria. scostata di
EA rispet.to at contenuto di DS (moltiplica.to per 16). In altre parole si doveva. scrivere:
AX +- M[DS:O:ffset(VAR)]. Poiche I'indirizzo fisico deriva. sempre da un logico segmentato, qui e nel
seguito si etrascurato iI registro di segmento implicato. La composizione degli indirizzi logici e stata
illustrata in TabellaB.I.
Indirizzamento con l'impiego di registri La Figura B.17 mostra. che un'istru-
zione pub codificare uno 0 due registri, oltre che 10 scostamento, In 5intesi, 5i
hanno queste' pos5ibilita.
Figura B.17 Metodo di catcolo deU'indirizzo di memoria. Si noti che 10 scostamento pub
essere, aseconda dei casi, di 8 0 di 16 bit. Uindirizzo effettivo Effective Address (EA) equello
calcolato dalla EU a monte del contributo del registro di segmento, A questa acostamento
la BIU somma la base del segmento e cioe il contenuto del registro di segmento moltiplicato
per 16.
:.".::lt
r
, ;.:1" .
.' '1':;,
/

Ii'''
:;:;" .'.
_."" .;.,."
., ...,. "
... '\f," :,,' .,'
"
.....,."'-.1<
, -'1; .,"
!If,':
, '0:
,... .._ .....
,.. ";,,
. 'C,''''

" ..'-' ",'
" . "t""
,',"
-', ",
..
"IN ,"'. '.
,'1;-)
.' t .
, ,,".:n: ,
.' .. .'''':'
, ....
.."'" <.'
t.,. ':t! ", .
... T
,; ."
"'. .-,.',""',
... f1'< ",
, .",' "t"<' ,
" ...., ..,
' .. ' .,,',
,. \", ..
"':'<i'--''; i,' "'!'
.,.1 "'
"' ... ;..:
. '.lI.'
," "dl"-
.,:."('f}
! ;.1"."1,:\ ;,:I,; ,.
,,;:'"1 .''f,';''";'

'
1 ,.. ijl{

.,d /- ..
",.
,,' ,,-, :'ii' ':.'
:" il'r''
,. '1," .,',.
.."\,'.- 'j.:,' :'
,:'...
",,,:,,.' _.it.,.'
.,.,.. .
"-:"",."', ,;'/0"0'
,.:t; :, 01' ;:,'
:....,.';" ':<I
',:1",' ".,'
, '.. r.'!k
'., ,.
:.;-.\"
"'I .... ' .. ....
, "",;;,. ,,,,,..
, ' 'J."'!" .. ,
" .,
., ."
....,
, ,",' "'1"
'\'"!.';i;n
-;.. ;{;, ..
.... , .. ,..},
.,:':. ,,'.l;'"
'j;' .;r-
. <,; , e..
., <
"! ':'-"''':1
.,"""'\}
i.""
>, ".''''' 1 ',",;
," .., ".' ,'"
, " ".". ,,' ",
.,...... '.,..
.. ".';t., . .
:';;"',""'" i'" "",.',.,.,. ,i
I Sf.
,J/'('" ' '
',.' ',.;.;,;; " ",'
, .. ........ ; ".'

;. \ I'" 'm:'

" 1" 1\"
.,'.-;'::
..'. ',- \ ,<'
,.' '., .' '" ....,.
1,",$;
.';..
.. ;..",. '9!'"
'""10:,, .
':}, iii..:
"'i,:;'j
,>. t ,;', .'.. '
,,'. r ."
, ,,\,e .. '. ,\r,.',
",:;.';> .1'
. "
".. -
..
.,',c": '
._..' 1,
.".. : - '"
/".,
, " ,.,'.
""', ."" , .. , '>I,{"
Iii......
, :?:-"
.,; .-).. ,
,.,_i:" l.:i!l'
'': ",:.:;"; .\;:"- ,.
'.' ;'::", .' "/':.-'" "
.' " "''''''' l,tio\
.,,' .:,..;..- ,.
. - ". \ " ..,'
'." , ......
.( ,' .:<,""
:-'" .:.:
'. ''. .,o,
;.,ij{J
. .
" ,'i':/; .x.:,
".." '''.' ," ij'tf,
".::r... ......... :
., '''''',,0\'
.., ,-
.>' ,.tri"...
:
, "'-;..l;';'-;!;
" ..
; AX t- 2475,
;AH f- Bt.
HOV AX,2475
HOV AH,BL
Esempie:
Esempio:
La macchina prevede anche 1a possibilita di specificare gli operandi immediati.
In questa caso, l'operando diventa. parte del codice della istruzione e l'esecuzione
dell'istruzione non richiede un ulteriore cicIo di .lettura dalla memoria, in quanta i1
dato epresente in CPU per efIetto del fetch dell'istruziane
12
.
B.4.1 Indirizzamento degli operandi
A costo di annoiare illettore, invitato comunque a consultare i manuali e la vasta
teratura Intel nella quale trovera. tutti i minimi dettagli aUe questioni trattate
qui di seguita, vale la pena d.i spendere due parole sulle rnodalita. di indirizzamento
e sui formati delle istruzioni. n loro esame mettera. in evidenza la complessita. della
macchina, secondo la tendenza dell'epoca in cui venne progettata, quando l'approccio
alia progettazione era la microprogrammazione.
Indirizzamento in memoria Esiste una varieta. mol to ampia di modi di indiriz-
zament9' In Figura B.17 viene data una schematizzazione che Li riassume tutti.
Indirizzamento dei registri di CPU e degli operandi immediati Le istruzioni
che usane come operandi solo i registri di CPU sono malta compatte,. in quanta 1.a
eodifiea dei (egistri richiede poehi bit.
Gli operandi di un'istruzione possano essere contenuti: nel codice stesso dell'istru
zione, nei registri di CPU, in memoria. e sulle porte di I/O.

Indirizzamento diretto E la forma piu semplice di indirizzamento in memoria,


corrispondente alia situazione in cui non interviene alcun registro di ED. In questo
caso, EA corrisponde at solo scostamento contenuto nel campo dell'istruzione a
BA Modalita di indirizzarnento
Per 8086/8088 estata previsto il coprocessore 8087, un dispositivo che estende il
repertorio di istruzioni aggiungendo un insieme completo di istruzioni per operazioni
. in virgola mobile. n coprocessore esterno estato lisata. fino al 386. A partire dalla
CPU 80486, I'unita per Ie operazioni in virgola mobile estata integrata sullo stesso
chip della CPU.' Inaltre ogni volta in cui e stato introdotto un nuavo madelia di
CPU, sono apparse nuave istruzioni , in rapporto aUe aggiunte potenzialita. In un
caso, quando estata introdotta })aritmetica per elaborazioni multimediali (l'estensione
MMX, Cfr. B.ll), ecomparso tutto un nuovo insieme di istruzioni.
I
\
'J
(
(
I
I
_.
-.
..
"
--
..
-.
-.
--
...
14. Nella terminoiogia Intel vengono COS! chiamati i registri ax 0 BP quando ci riferisce a questo
impiego per I'indirizzamento.
Ovvia.mente, se ie porte.di I/O sono mappate in memoria, valgono tutte Ie modalita previste per
I'indirizzamento in memoria.
1-
-
1-
_.
1-
-
1-
_.
_.
-
-
1
1-
-
\
l-
1-
\-
]-
1-
!_.
]_.
I-
)-
581 L'architettura 8086
1. nessun byte aggiuntivo;
2. due byte di EA (solo per Findirizzamento diretto);
3. uno 0 due byte per 10 scostamento;
4. uno 0 due byte per l'operando immediatoj
5. uno 0 due byte per 10 scostamento e un operando immediato di 1 0 2 byte;
6. due byte per 10 scostamento e due byte per l'indirizzo (base) del segmento_
La decodifica delle istruzioni eba.sata su OP CODE, MOD e RIM (Figura B.18);
1a loro combinazione definisce it formato dell'istruzione corrente e, in ultima analisi,
quanti byte estrarre dalla coda cii prefetch delle istruzioni.
Intersegmento diretto: sostituisce il contenuto di IP con una parle deU'istruzione
e il contenuto di as con un'altra parte deH'istruzione. La scopo di questa modo
di indirizzamento edi provvedere al salto da un segmento all'altTO.
Intersegmento indiretto: sostituisce it contenuto di IF e di as con il contenuto di
due parole consecutive nella memoria, a cui ci si riferisce usando uno qualunque
dei modi di indirizzamento, ad eccezione di queUo immediato.
B,5 Formati delle istruzioni
Un'istruzione 8086 puo occupare cia 1 a 6 byte. I formati delle istruzioni sono moltepli-
ci e piuttosto intricati da decifrare. In questo senso, 1'8086 pub essere preso a modella
di macchina elSC (Complex Instruction Set Computer), concepita in un'epoca in cui
si faceva grande conto sulle possibilita offerle dalla microprogrammazione.
nfatto che i formati non siano semplici complica la fase di decodifica deUe istru-
zioni. Se questo non rappresentava un. problema quando venne introdotto 1'8086, in
quanton microprocessore aveva prestazioni eccellenti per quel tempo, ha invece costi-
tuito uno dei problemi piu spinosi per l'evoluzione della famiglia, per quanto riguarda
1a realizzazione delle pipeline, presenti in forme sempre piu sofisticate a partire cia!
486 (Cfr. B.9).
In Figura. B.18 viene dato il quadro complessivo dei formati previsti. Si noti che
il byte del codice di operazione eil primo (indirizzo piu basso) tra quelli che formano
l'istruzione. Oltre al byte contenente i1 codice di operazione si puo avere:
; M[BX+Dl] <-- AX.
Indirizzamento inmretto attraverso un registro (di base) e indiciato: EA e
1a somma di un registro di base
H
e di un registro indice (SI 0 01). E il caso
del percorso di destra di Figura B.l7.
Esempio: MOV [BX] [Dl] AX
lndirizzamento relativo a un registro: EA e la somma dello scostamento
codificato nell'istruzione e del contenuto del registro specificato.
Esempio: MDV AX. VAR [51] ; AX <-- M[Off set (VAR) +51].
Appendice B 580
,Jr.,.
",",'.'
," ..
''f'' 14..;
.. ,,;..,,
"'i1?o '\ ..?,::-

'. J .
\\il.i: .
.:/ ::::
"., ..,.. ,
'"l,t',"", "
AI,
.". ".'
,:'/,',"'.
I
"'\-;""",., ','
"""'.,.- .,
, ,:.
';i
,. J., _. \1' . 'j , "
.. ,.,.. , .
""""'<'" "A.
-... -,.' .- .
.
..
","J.
, .'
...".<" .-'
, -,,\." ..'-,' . ,', .
;' .;";.,, ,,'0'
j -

-<'.,.
.", ,.. ,
'. - .)
r
'y;' <:--. :-."
Indirizzamento relativo a ,un registro di (base) e a1
caso precedente, con I' agglUnta dello scostamento codIficato. nell 'lstruzlone. ";
j, '.;'1"".0. ,,,..
Esempio: MOV ex. VAR [BX][51] ; ex <-- M[Offset (VAR)

. sulle porte I/O Ci 8i dalle
due operaZlOm di Ingresso/Uscita (IN emIT) prevlste nel set d.i IstruzlOm
l5
.
, .. ''''-:.-.'' .,t.,
Ci sono due modalita.. . ;jj!tq
.....,,,
" .,'.. ,.,,',
L'indirizzo assegnato alia porta ecodificato nell'istruzione. A tale scopo viene m::
impiegato un campo di 8 bit. Ne consegue la possibilitA di indirizzare 256 porte ..,
di ingresso e 256 porte di uscita. _..
o';";'FF'" 'illI;"-t'.
Esempio: IN AL.PORTA ; AL f- PORTA di Ingresso. ....
., 'r. ml.
to :l'.l"
L'indirizzo della porta e contenuto nel registro DX. In questo caso 10 spazio di M: .
I/O indirizzabile si estende fino a raggiungere 64 kbyte di ingresso e 64 kbyte di
to- ....:,1,
uscita.
,.,
Es . OUT [D ] A P [DX] ,,""', 1';"" empI0: X , H ; orta f- AH. "' ........ .;.

. ':),;:e"".
4Ir <!:'';:',,. .. t ....'/
",,, ,',1-:'I
c
" "\r.1- !'
.. ,:". z.,',;. "\"
B.4.2 Indirizzamento Dei salti
"":i'e' ':lH
Sono di due tipi: salti intrasegmento e salti extrasegmento. Nel primo caso viene
modificato solo IF; nel secondo vengono modificati CS e IF. Si hanno Ie seguenti .,; ';f!i%
'bili' , ', ... j ....r, .. ;
POSSI tao " I.E';:o"
. ... .. ,
, '0,._""
Intrasegmento diretto: EA del salta elasomma della scostamento e del cantenuto:"
c?rrente di IF. Lo puo 16 0 8 bit .. Nel secondo casa, si
dl salto carta. Le IstruzlODi dl saIto condizlOnato codIficano solo scostamentl dl
1',.>-,- .,',... --.
8 b'lt .
. ".'-'1''''
,r '.: .
, ,.; -/.,=,.
Intrasegmento indiretto: EA del salta eil contenuto di un registro 0 di una parola .', ..
di memoria a cui si usando uno qualunque dei modi di indirizzamento visti
per gli operandi, ad eccezione del modo immediato. ..

'....'1;
... .. -. 'I!t,
'"
"c, .
"".,.,.,. 'I'"
'.. I ....
. ..
."'. ..

"-'1.' ,:.,'
I '<E>.

'1"
: . .
'.f" I'.
I
14. Nella terminoiogia Intel vengono COS! chiamati i registri ax 0 BP quando ci riferisce a questo
impiego per I'indirizzamento.
Ovvia.mente, se ie porte.di I/O sono mappate in memoria, valgono tutte Ie modalita previste per
I'indirizzamento in memoria.
1-
-
1-
_.
1-
-
1-
_.
_.
-
-
1
1-
-
\
l-
1-
\-
]-
1-
!_.
]_.
I-
)-
581
L'architettura 8086
1. nessun byte aggiuntivo;
2. due byte di EA (solo per Findirizzamento diretto);
3. uno 0 due byte per 10 scostamento;
4. uno 0 due byte per l'operando immediatoj
5. uno 0 due byte per 10 scostamento e un operando immediato di 1 0 2 byte;
6. due byte per 10 scostamento e due byte per l'indirizzo (base) del segmento_
La decodifica delle istruzioni eba.sata su OP CODE, MOD e RIM (Figura B.18);
1a loro combinazione definisce it formato dell'istruzione corrente e, in ultima analisi,
quanti byte estrarre dalla coda cii prefetch delle istruzioni.
Intersegmento diretto: sostituisce il contenuto di IP con una parle deU'istruzione
e il contenuto di as con un'altra parte deH'istruzione. La scopo di questa modo
di indirizzamento edi provvedere al salto da un segmento all'altTO.
Intersegmento indiretto: sostituisce it contenuto di IF e di as con il contenuto di
due parole consecutive nella memoria, a cui ci si riferisce usando uno qualunque
dei modi di indirizzamento, ad eccezione di queUo immediato.
B,5 Formati delle istruzioni
Un'istruzione 8086 puo occupare cia 1 a 6 byte. I formati delle istruzioni sono moltepli-
ci e piuttosto intricati da decifrare. In questo senso, 1'8086 pub essere preso a modella
di macchina elSC (Complex Instruction Set Computer), concepita in un'epoca in cui
si faceva grande conto sulle possibilita offerle dalla microprogrammazione.
nfatto che i formati non siano semplici complica la fase di decodifica deUe istru-
zioni. Se questo non rappresentava un. problema quando venne introdotto 1'8086, in
quanton microprocessore aveva prestazioni eccellenti per quel tempo, ha invece costi-
tuito uno dei problemi piu spinosi per l'evoluzione della famiglia, per quanto riguarda
1a realizzazione delle pipeline, presenti in forme sempre piu sofisticate a partire cia!
486 (Cfr. B.9).
In Figura. B.18 viene dato il quadro complessivo dei formati previsti. Si noti che
il byte del codice di operazione eil primo (indirizzo piu basso) tra quelli che formano
l'istruzione. Oltre al byte contenente i1 codice di operazione si puo avere:
; M[BX+Dl] <-- AX.
Indirizzamento inmretto attraverso un registro (di base) e indiciato: EA e
1a somma di un registro di base
H
e di un registro indice (SI 0 01). E il caso
del percorso di destra di Figura B.l7.
Esempio: MOV [BX] [Dl] AX
lndirizzamento relativo a un registro: EA e la somma dello scostamento
codificato nell'istruzione e del contenuto del registro specificato.
Esempio: MDV AX. VAR [51] ; AX <-- M[Off set (VAR) +51].
Appendice B 580
,Jr.,.
",",'.'
," ..
''f'' 14..;
.. ,,;..,,
"'i1?o '\ ..?,::-

'. J .
\\il.i: .
.:/ ::::
"., ..,.. ,
'"l,t',"", "
AI,
.". ".'
,:'/,',"'.
I
"'\-;""",., ','
"""'.,.- .,
, ,:.
';i
,. J., _. \1' . 'j , "
.. ,.,.. , .
""""'<'" "A.
-... -,.' .- .
.
..
","J.
, .'
...".<" .-'
, -,,\." ..'-,' . ,', .
;' .;";.,, ,,'0'
j -

-<'.,.
.", ,.. ,
'. - .)
r
'y;' <:--. :-."
Indirizzamento relativo a ,un registro di (base) e a1
caso precedente, con I' agglUnta dello scostamento codIficato. nell 'lstruzlone. ";
j, '.;'1"".0. ,,,..
Esempio: MOV ex. VAR [BX][51] ; ex <-- M[Offset (VAR)

. sulle porte I/O Ci 8i dalle
due operaZlOm di Ingresso/Uscita (IN emIT) prevlste nel set d.i IstruzlOm
l5
.
, .. ''''-:.-.'' .,t.,
Ci sono due modalita.. . ;jj!tq
.....,,,
" .,'.. ,.,,',
L'indirizzo assegnato alia porta ecodificato nell'istruzione. A tale scopo viene m::
impiegato un campo di 8 bit. Ne consegue la possibilitA di indirizzare 256 porte ..,
di ingresso e 256 porte di uscita. _..
o';";'FF'" 'illI;"-t'.
Esempio: IN AL.PORTA ; AL f- PORTA di Ingresso. ....
., 'r. ml.
to :l'.l"
L'indirizzo della porta e contenuto nel registro DX. In questo caso 10 spazio di M: .
I/O indirizzabile si estende fino a raggiungere 64 kbyte di ingresso e 64 kbyte di
to- ....:,1,
uscita.
,.,
Es . OUT [D ] A P [DX] ,,""', 1';""
empI0: X , H ; orta f- AH. "' ........ .;.

. ':),;:e"".
4I
r
<!:'';:',,. .. t ....'/
",,, ,',1-:'I
c
" "\r.1- !'
.. ,:". z.,',;. "\"
B.4.2 Indirizzamento Dei salti
"":i'e' ':lH
Sono di due tipi: salti intrasegmento e salti extrasegmento. Nel primo caso viene
modificato solo IF; nel secondo vengono modificati CS e IF. Si hanno Ie seguenti .,; ';f!i%
'bili' , ', ... j ....r, .. ;
POSSI tao " I.E';:o"
. ... .. ,
, '0,._""
Intrasegmento diretto: EA del salta elasomma della scostamento e del cantenuto:"
c?rrente di IF. Lo puo 16 0 8 bit .. Nel secondo casa, si
dl salto carta. Le IstruzlODi dl saIto condizlOnato codIficano solo scostamentl dl
1',.>-,- .,',... --.
8 b'lt .
. ".'-'1''''
,r '.: .
, ,.; -/.,=,.
Intrasegmento indiretto: EA del salta eil contenuto di un registro 0 di una parola .', ..
di memoria a cui si usando uno qualunque dei modi di indirizzamento visti
per gli operandi, ad eccezione del modo immediato. ..

'....'1;
... .. -. 'I!t,
'"
"c, .
"".,.,.,. 'I'"
'.. I ....
. ..
."'. ..

"-'1.' ,:.,'
I '<E>.

'1"


: . .
'.f" I'.
I
- ,
I
582 Appendice B
-
.- 1
, ,
,
,'. I
Da."to I ......... edla.-to
S CO$"t Q.l'"'len-to c: Dis plQ. c:e r1en -t >
RQgl,.,.",.-c 0 M ..... c,.-Io.
R"l;Il."''-o
Moclo
DATA
DISP
R/M
MOD
REG
Figura B,18 Possil;>ili formati delle istruzioni 8086.
.L .., ,H I"",cllc:;g."",o .... ;:s;;:p"''''l::--t:h... g., ........ ''-t..,
ep.....ndo llY>ll'di.. t .... lW..o..l", co;, .....rnto Ii 16 bit.
I DP caDE tEl" caDEB 'I",' I 01"" I DATAL I ,.rAJ; I
s" vie.... UlO.. to ..... dQ1:o dl 16 bit.
LeQe ...... olo.
ap....o.ndo 1...... d1o. tc> ..
\ . [p CODE lGJ'QP-'-DD'EB D/ll/l.L. 1 D/lTA.H 1
s. vl.ne us..to Un ""-to c:ll l' bl\
L'architettura 8086 583
lo. po. .... -te loo.!iiSO ft In po. .... te o.l"tn
R"glsotr-o a/do Hfl'lorlo Scostal'lento
RfQIsko ",/do. Hel'loricl con Scost<lN!nto
1OP CODe ReG B DrsPL I !
Se Us<lto un;! dl L6 btl:
I OPCOOC 18 'EG B
li:.g;rlr-o;o - R"gictr-D
I B' CO" IGJ KG EJ
lstruzlon.- dl un byte ""c:lGU-",,' r- ..gis-"r-I
l cp eDOC IReG I
!SVUZt)nt <II un oyte - oper-Gndl IrlpIICttl
,
I DF CDDE: I
'$'.'.
'111.,
.) "
., .',.
, :'f! I
" ..
';'.:
: -,";jI I;',
.. ';"." ..;
...'.
. ,c . , ,
t:'/.il; !: ;'.
..
"""";r.l'[ .'k,. ,.
" ",>,:;;",' \l.V,
, '. ""I" .'
"""'"\'3" \ 1;' I,
.
'. ,"'-''!'': 'il

._:: !.;:: '.
....:; ..,... ,,:,
.', Ir:,.
,".
,"
<>,,/.
.,'
.. ....
..,-
., ..,' ......,'
.. ".' ..
..
"., ,,','"
'. ..
',. ,
!i:"P"I' . dO.'
_; ',:::
"'.,' ,t1:a ,':; ..
" ..
-.': ''''i-
.. '.-',4.. " .:., ,
.. : '
,."',';"/"!':
,-'-- ",,<!-:" ' ,'.' ','
I":' ;"
,', ,I
.
' ...... ,
,;'.-:f':'<'", I'f.: "

.- ... ,-,W; " ".-
..
_. t
. ."
< '':it
_ .),1;
.,' 'I".'-c--," '"-... :.

.>,
,l',:,I;
..

-: S"":"'i!', .'tl:'".
"C' ... ,,'.

:f\l,.
.. :"c"",!jn .,.
.. ,II'
. "',i,
.,.,,"'.' ".',',
.'
'0. ".C',.;'
.- .. ':'> '. '
't-;: :
..'(.>1.. ..

,;.,;',..::.",

'''it''", .' " "
:':i..ii",l.:!; ,':
".
,,, ""..".,. !ii'..
;. -'l. ','..... ;, .
'.
l'
-.',"'_L'\ ':.' ,'"
'., ,-",""0 ;:'" "

',',
. ;..'
,:' '';!i ....
. '_' "f" I, , .
. , .
. _
..
":I.'>'" '.. I
r;, '1" '.
.. .,\<IjI .,-
... .. I i
a
'
i'",-,.,,:..'''-; ,....,
......,,,.,",;.:' .....
".
.: :;;:;1
" . ..
t,l .....
.'.' . "

','
.'" :'i"
"","1'0(,; I' It, ,10;
,. I
'.:-' ':;':J5'i;>i'. 1 of
.--- .........-- I .\--
''''1' .....
,.' ;"1;l ',r
'. ,,. .. ,
'.. .
... ',:.\;I,'':,,!-'(; '.,:;
.. I ::,"
.'. .. "
..
:..-:::-;.-'"), ,.
""'-< .,., '.t.
' -" .... w
.,,1 , .
.. , .J;\;--:- 'l-\t.
."',' , ,i\O';

<\;;,1:0 . I
..tit
. ."?t'" "" ....
".-'::-h_ "1 f.
. ,..
. ' 'C"';, _,,,s. .J
.' ,0'," ...
" ,,'h: .' ',,,..
'<.J,"<I'._
,. ) -"
'. .. Jf''''", '
,.'
..
' .. < "'f..,."', I'
... . ,.'1; ,
:.f<!,f.','.... Ii!.i
- ",. ".,
'0 ''''},'.'l\l; .,.,
...
. I.
.
Trasferimento dati
HOV un byte 0 una parOJa
PUSH
Impila una parola sullo stack
OUT
Trasferisce un byte 0 una parola in uscita
LEA Load Effective Address
POPF Estrae la parola di state dollo stack
Istruzioni aritmetiche
AOO ' byte 0 parole
CHP
Compara byte 0 parole
AAS Aggiusta ASCII per somma
IHUL Moltiplica (interi) byte 0 parole
Manipolazio7}e dei bit
AND segue I'AND tra due byte 0 due parole
SHL Scorrimento a sinistra
RCR Ruota a destra attraverso il riporto
Manipolazione stringhe
HOVSB una stringa di byte

Confronta stringhe
Ii
lsarto incondizionato
JHP
CALL Chiamata di sottoprogramma
JE Salta se uguale
JNGE Salta se non maggiore 0 uguale
INT Interruzione (software)
lRET Ritorno da (routine) interruzione
Contrallo dena VJ5U
STC "orta a 1 il bit oi riporto
eLI Disabilita it sistema di interruzione
STD Stabilisce la direzione di scansione stringhe
con l; esterno
HLT Passa alJo stato di halt
WAIT Passa aila state di wait
1struzione di non operazione
Non 130 niente NOP
Tabella B.3 Alcune istruzioni del repertorio divise per c1asse.
j
\
]
\
(
I
r
I
I
I
-
.'
....
--.
-
.,
-'
. ,
-
-.
-
.,
-,
-
.,
-
- ,
I
582 Appendice B
-
.- 1
, ,
,
,'. I
Da."to I ......... edla.-to
S CO$"t Q.l'"'len-to c: Dis plQ. c:e r1en -t >
RQgl,.,.",.-c 0 M ..... c,.-Io.
R"l;Il."''-o
Moclo
DATA
DISP
R/M
MOD
REG
Figura B,18 Possil;>ili formati delle istruzioni 8086.
.L .., ,H I"",cllc:;g."",o .... ;:s;;:p"''''l::--t:h... g., ........ ''-t..,
ep.....ndo llY>ll'di.. t .... lW..o..l", co;, .....rnto Ii 16 bit.
I DP caDE tEl" caDEB 'I",' I 01"" I DATAL I ,.rAJ; I
s" vie.... UlO.. to ..... dQ1:o dl 16 bit.
LeQe ...... olo.
ap....o.ndo 1...... d1o. tc> ..
\ . [p CODE lGJ'QP-'-DD'EB D/ll/l.L. 1 D/lTA.H 1
s. vl.ne us..to Un ""-to c:ll l' bl\
L'architettura 8086 583
lo. po. .... -te loo.!iiSO ft In po. .... te o.l"tn
R"glsotr-o a/do Hfl'lorlo Scostal'lento
RfQIsko ",/do. Hel'loricl con Scost<lN!nto
1OP CODe ReG B DrsPL I !
Se Us<lto un;! dl L6 btl:
I OPCOOC 18 'EG B
li:.g;rlr-o;o - R"gictr-D
I B' CO" IGJ KG EJ
lstruzlon.- dl un byte ""c:lGU-",,' r- ..gis-"r-I
l cp eDOC IReG I
!SVUZt)nt <II un oyte - oper-Gndl IrlpIICttl
,
I DF CDDE: I
'$'.'.
'111.,
.) "
., .',.
, :'f! I
" ..
';'.:
: -,";jI I;',
.. ';"." ..;
...'.
. ,c . , ,
t:'/.il; !: ;'.
..
"""";r.l'[ .'k,. ,.
" ",>,:;;",' \l.V,
, '. ""I" .'
"""'"\'3" \ 1;' I,
.
'. ,"'-''!'': 'il

._:: !.;:: '.
....:; ..,... ,,:,
.', Ir:,.
,".
,"
<>,,/.
.,'
.. ....
..,-
., ..,' ......,'
.. ".' ..
..
"., ,,','"
'. ..
',. ,
!i:"P"I' . dO.'
_; ',:::
"'.,' ,t1:a ,':; ..
" ..
-.': ''''i-
.. '.-',4.. " .:., ,
.. : '
,."',';"/"!':
,-'-- ",,<!-:" ' ,'.' ','
I":' ;"
,', ,I
.
' ...... ,
,;'.-:f':'<'", I'f.: "

.- ... ,-,W; " ".-
..
_. t
. ."
< '':it
_ .),1;
.,' 'I".'-c--," '"-... :.

.>,
,l',:,I;
..

-: S"":"'i!', .'tl:'".
"C' ... ,,'.

:f\l,.
.. :"c"",!jn .,.
.. ,II'
. "',i,
.,.,,"'.' ".',',
.'
'0. ".C',.;'
.- .. ':'> '. '
't-;: :
..'(.>1.. ..

,;.,;',..::.",

'''it''", .' " "
:':i..ii",l.:!; ,':
".
,,, ""..".,. !ii'..
;. -'l. ','..... ;, .
'.
l'
-.',"'_L'\ ':.' ,'"
'., ,-",""0 ;:'" "

',',
. ;..'
,:' '';!i ....
. '_' "f" I, , .
. , .
. _
..
":I.'>'" '.. I
r;, '1" '.
.. .,\<IjI .,-
... .. I i
a
'
i'",-,.,,:..'''-; ,....,
......,,,.,",;.:' .....
".
.: :;;:;1
" . ..
t,l .....
.'.' . "

','
.'" :'i"
"","1'0(,; I' It, ,10;
,. I
'.:-' ':;':J5'i;>i'. 1 of
.--- .........-- I .\--
''''1' .....
,.' ;"1;l ',r
'. ,,. .. ,
'.. .
... ',:.\;I,'':,,!-'(; '.,:;
.. I ::,"
.'. .. "
..
:..-:::-;.-'"), ,.
""'-< .,., '.t.
' -" .... w
.,,1 , .
.. , .J;\;--:- 'l-\t.
."',' , ,i\O';

<\;;,1:0 . I
..tit
. ."?t'" "" ....
".-'::-h_ "1 f.
. ,..
. ' 'C"';, _,,,s. .J
.' ,0'," ...
" ,,'h: .' ',,,..
'<.J,"<I'._
,. ) -"
'. .. Jf''''", '
,.'
..
' .. < "'f..,."', I'
... . ,.'1; ,
:.f<!,f.','.... Ii!.i
- ",. ".,
'0 ''''},'.'l\l; .,.,
...
. I.
.
Trasferimento dati
HOV un byte 0 una parOJa
PUSH
Impila una parola sullo stack
OUT
Trasferisce un byte 0 una parola in uscita
LEA Load Effective Address
POPF Estrae la parola di state dollo stack
Istruzioni aritmetiche
AOO ' byte 0 parole
CHP
Compara byte 0 parole
AAS Aggiusta ASCII per somma
IHUL Moltiplica (interi) byte 0 parole
Manipolazio7}e dei bit
AND segue I'AND tra due byte 0 due parole
SHL Scorrimento a sinistra
RCR Ruota a destra attraverso il riporto
Manipolazione stringhe
HOVSB una stringa di byte

Confronta stringhe
Ii
lsarto incondizionato
JHP
CALL Chiamata di sottoprogramma
JE Salta se uguale
JNGE Salta se non maggiore 0 uguale
INT Interruzione (software)
lRET Ritorno da (routine) interruzione
Contrallo dena VJ5U
STC "orta a 1 il bit oi riporto
eLI Disabilita it sistema di interruzione
STD Stabilisce la direzione di scansione stringhe
con l; esterno
HLT Passa alJo stato di halt
WAIT Passa aila state di wait
1struzione di non operazione
Non 130 niente NOP
Tabella B.3 Alcune istruzioni del repertorio divise per c1asse.
j
\
]
\
(
I
r
I
I
I
-
.'
....
--.
-
.,
-'
. ,
-
-.
-
.,
-,
-
.,
-
584 Appendice B
B.6 11 coprocessore 8087
-
I..
-
1'
I.
j.
-
-
-
I-
-
1-
\ -
l-
\ -
1-
1-
\ -
I-
I
'"
_.
"

... ....

u ..

U.OM...I'l
_..
.. ..
a ..
..
"

"
..
",
..

"
"

...::1 I
;..,..... ftJ.I'>
..
..
..
......._ ..b ......

""'""' 0""""""
OperazlOoe 80g6 8087
Addizione' con segno 1,6 msec 141'5
Sottrazione con segno 1
f
6 msec 18 1'5
Moltiplicazione (precisione semplice) 1,6 msec 19 1'5
Molti]:>licazione (precisione doppia) 2) msec 271'5
Divisione (precisione doppia) 3,2 mSe<: 391'5
Confronto 1,3 msec 9 /,S
Caricamento (precisione doppia) 1,7 msec 101'5
Memorizzazione (precisione doppia) 1,2 msec 21 /"
Radice quadrata 19.6 msec 361'5
Tangente 13,0 msec 90 /,S
Elevaz.ione a potenza 17,1 msec 100 1'5
Figura B.19 Madella di programmazione in presenza del coprocessore numerico.
L'architettura 8086 585
o in modo esplicito e formano nno lIstack circolare". A tal fine
l
la logica. usa un
puntatore a 3 bit ST (Stack Top) che individua il registro numerico, a1 momenta,
superficie dello stack. La maggior parte delle istruzioni opera implicitamente sul
registro in superficie alIo stack\ doe suI registro puntato da ST. Tuttavia epossibile
specificare esplicitamente i [egistr1
1
indicandoli in modo relativo rispetto alla testa
dello stack (ST(i) indica il registro i-esimo da ST(O), con 0< i < 7), ST(O) e il
registro in testa aHo stack e viene normalmente indicato con ST. Come esempi diamo
il testo assembler di alcune istruzioni in virgola mobile.
L'istruzione: FADO ST, ST(2) somma il contenuto della testa dello stack con quello
del IegistIo di due posizioni in avanti (se, per esempio
l
in testa aUo stack cle it registro
6, Peffetto dell'i8truzione esommare it contenuto del registro 6 con queUo del registro
Tabella B.4 Conrronto Era 13 velocita. dell'8086 e queUa deU'8087. Ovviamente le operazioni
che non sana direttamente disponibili su 8086 SODa da considerarsi attraverso
program-mi di emutazione.
16Le CPU della precedentll generazione potevano usare dispositivi aritmetici, rna si trattaV3. di parti
che veniva.no solitamente viste come dispositivi di I/O e il programmatore era responsabile dena 10ro
gestione diretta, trCUlmettendo comandi e dati, e leggendo 10 stato e i risultati delle operazioni. Un
esempio di questi dIspositivl era I'integrato 8232, normalmente usato con la CPU 8085.
11 All'epoca della sua introduzione, poehi anni dopo quelladell'8086, 1'8087 rappresentava.
sicuramente il componente commerciaie a piil alto grade di integrazione (750.000 transistori).
Can il coprocessore il modello di programmazione della CPU diventa quello di Figura
B.19. Tutto avviene come se 1a CPU disponesse
1
oUre ai propri registri, di ,altri 8
registri numerici di 80 bit e un certo numero di registri di appoggio. n puntatore alle
istruzioni (ISP) e il puntatore ai dati (DP) non fanno a rigore parte del modello di,
programmazione. n loro contenuto puo pero essere esaminato quando 5i verifica una.
condizione anomala di funzionamento,
Gli 8 registri numerici del coprocessore memorizzano il date esclusivamente in
forma reale, nel formato illustrato. Essi possono essere indirizzati in modo implicito
B.6.1 Modello di programmazione esteso
.'
;1d -
1.,_ ,
;",
",..!.,.
.. :;;.:":'
w""" '",.,
.11...-,'''':,'
/, .
,.j'
'\ .
--. ... . '1
., .. . " ,
,,'j:;::.. :
..
),':
,,, ... .. ,... '." ,
, .. \'., ".. .,' -
: '," .
. ..
All'epoca di introduzione della CPU 8086 i processi di integrazione erano molto lon-
tarn dagli standard attuali. Non potendo integrare nella CPU la parte di logica per
Ie operazioni in virgola mobile, i progettisti pianificarono Puso di un coprocessore, un :::::,tTip;
dispositivQ separato dalla CPUJ rna capace estenderne Ie capacita in maniera traspa- _
" .,.". " ,I,.
rente) in modo tale ehe per i1 programmatore l'accoppiata CPU-coprocessore apparisse
come un'unica macchina (in grade di eseguire operazioni non disponibili per la sola . ":\"
CPU) 16. n concetto di coprocessore non era nuovo,'a parte il fatto che ora diventava
disponibile come singolo integrato: in passato, special mente per Ie macchine di una .. ,,;;;-:,<.'
certa potenza, era-prevista un'opzione (una 0 pili piastre elettroniche), che estendeva
il repertorio di istruzioni e il tipo eli dati trattati da parte della CPU. Jt/
Con il 8087, anche NPX (Nume:ical
Processor eXtens10n) 0 NDP (Numencal Data Processor), 51 agglUngono al1'arch1tet- ;,ir\'
tura della CPU 8 registri in virgola mobile, 5 tipi di dati addizionali e piu di 70
istruzieni, tutte progettate per trattare numeri in virgola mobile. n coprocessorepuo
essere impiegato direttamente sia con 8086 che con 8088
f
come pure con 80186 e 80188.
Nel seguito ha sviluppato i coprocessori 80287 e 80387, in riferimento aile CPU
80286 e 80386. Di questi coprocessori non si parla in questa testo, anche perche, a
parte Ie inevitabili differenze dovute soprattutto ai differenti bus, dal punta di vista
concettuale nOD c'e molto da aggiungere. A partire dal 486 l'unita in virgola mobile e
integrata su Ie .CPU quin?i i hanno perso
CI? ntemamo asSaI lstruttlvo per 1concettl e Ie
soluzlOm tecmche che alia base del .
L'8087 estato reahzzato can tecnologla gate e alloggmto su dl un supporto .
a 40 pin
17
, can un consumo massimo di potenza valutato sui 2400 mW. Fornisce
pre,tazioni 100 volte maggiori rispetto a quelle della CPU 8086 (08088) da ,ala. Per'
rendersi conto della potenza di calcolo di questa dispositivo, basta confrontare i dati
presenti in tabella B.4.
l:.7t",,">,!t,r .:{\.... ,: '
..
.. .. -'i\
""," I, "

.
;_ ..
.."t" " ,,-
:\,
J11t" .. :'
......- ) ,.;
. 0(,
.". ,., , _.
fl.

,,',;
'-: ..'" ,
'.'.

n,"
., 1: .(-', '.
';r,,('

thw.;'
."J-" _.. ,.,,.. .
...
;I'.'JK "



" ... ". '0'"
. . '" b",,".', ".1'"
....,., . '
. ..
. ',.1,,'., ..
... '-\J""
..-,',.. -:('i" '1" , ".,., ..
.. ,....c. , , \'1.,
'.r J\,.
i 'lo ,.11<..
. r... ...
. ,
"':"-,-,;1;, to.,.
.>c,. ',"
, ::;1"""" '.. '"
" "",2..\"" ,.
..
... ,(t, .'
" .',
, '
584 Appendice B
B.6 11 coprocessore 8087
-
I..
-
1'
I.
j.
-
-
-
I-
-
1-
\ -
l-
\ -
1-
1-
\ -
I-
I
'"
_.
"

... ....

u ..

U.OM...I'l
_..
.. ..
a ..
..
"


"
..
",
..

"
"

...::1 I

;..,..... ftJ.I'>
..
..
..
......._ ..b ......

""'""' 0""""""
OperazlOoe
80g6 8087
Addizione' con segno 1,6 msec 141'5
Sottrazione con segno 1
f
6 msec 18 1'5
Moltiplicazione (precisione semplice) 1,6 msec 19 1'5
Molti]:>licazione (precisione doppia) 2) msec 271'5
Divisione (precisione doppia) 3,2 mSe<: 391'5
Confronto 1,3 msec 9 /,S
Caricamento (precisione doppia) 1,7 msec
101'5
Memorizzazione (precisione doppia) 1,2 msec 21 /"
Radice quadrata 19.6 msec 361'5
Tangente 13,0 msec 90 /,S
Elevaz.ione a potenza 17,1 msec 100 1'5
Figura B.19 Madella di programmazione in presenza del coprocessore numerico.
L'architettura 8086 585
o in modo esplicito e formano nno lIstack circolare". A tal fine
l
la logica. usa un
puntatore a 3 bit ST (Stack Top) che individua il registro numerico, a1 momenta,
superficie dello stack. La maggior parte delle istruzioni opera implicitamente sul
registro in superficie alIo stack\ doe suI registro puntato da ST. Tuttavia epossibile
specificare esplicitamente i [egistr1
1
indicandoli in modo relativo rispetto alla testa
dello stack (ST(i) indica il registro i-esimo da ST(O), con 0< i < 7), ST(O) e il
registro in testa aHo stack e viene normalmente indicato con ST. Come esempi diamo
il testo assembler di alcune istruzioni in virgola mobile.
L'istruzione: FADO ST, ST(2) somma il contenuto della testa dello stack con quello
del IegistIo di due posizioni in avanti (se, per esempio
l
in testa aUo stack cle it registro
6, Peffetto dell'i8truzione esommare it contenuto del registro 6 con queUo del registro
Tabella B.4 Conrronto Era 13 velocita. dell'8086 e queUa deU'8087. Ovviamente le operazioni
che non sana direttamente disponibili su 8086 SODa da considerarsi attraverso
program-mi di emutazione.
16Le CPU della precedentll generazione potevano usare dispositivi aritmetici, rna si trattaV3. di parti
che veniva.no solitamente viste come dispositivi di I/O e il programmatore era responsabile dena 10ro
gestione diretta, trCUlmettendo comandi e dati, e leggendo 10 stato e i risultati delle operazioni. Un
esempio di questi dIspositivl era I'integrato 8232, normalmente usato con la CPU 8085.
11 All'epoca della sua introduzione, poehi anni dopo quelladell'8086, 1'8087 rappresentava.
sicuramente il componente commerciaie a piil alto grade di integrazione (750.000 transistori).
Can il coprocessore il modello di programmazione della CPU diventa quello di Figura
B.19. Tutto avviene come se 1a CPU disponesse
1
oUre ai propri registri, di ,altri 8
registri numerici di 80 bit e un certo numero di registri di appoggio. n puntatore alle
istruzioni (ISP) e il puntatore ai dati (DP) non fanno a rigore parte del modello di,
programmazione. n loro contenuto puo pero essere esaminato quando 5i verifica una.
condizione anomala di funzionamento,
Gli 8 registri numerici del coprocessore memorizzano il date esclusivamente in
forma reale, nel formato illustrato. Essi possono essere indirizzati in modo implicito
B.6.1 Modello di programmazione esteso
.'
;1d -
1.,_ ,
;",
",..!.,.
.. :;;.:":'
w""" '",.,
.11...-,'''':,'
/, .
,.j'
'\ .
--. ... . '1
., .. . " ,
,,'j:;::.. :
..
),':
,,, ... .. ,... '." ,
, .. \'., ".. .,' -
: '," .
. ..
All'epoca di introduzione della CPU 8086 i processi di integrazione erano molto lon-
tarn dagli standard attuali. Non potendo integrare nella CPU la parte di logica per
Ie operazioni in virgola mobile, i progettisti pianificarono Puso di un coprocessore, un :::::,tTip;
dispositivQ separato dalla CPUJ rna capace estenderne Ie capacita in maniera traspa- _
" .,.". " ,I,.
rente) in modo tale ehe per i1 programmatore l'accoppiata CPU-coprocessore apparisse
come un'unica macchina (in grade di eseguire operazioni non disponibili per la sola . ":\"
CPU) 16. n concetto di coprocessore non era nuovo,'a parte il fatto che ora diventava
disponibile come singolo integrato: in passato, special mente per Ie macchine di una .. ,,;;;-:,<.'
certa potenza, era-prevista un'opzione (una 0 pili piastre elettroniche), che estendeva
il repertorio di istruzioni e il tipo eli dati trattati da parte della CPU. Jt/
Con il 8087, anche NPX (Nume:ical
Processor eXtens10n) 0 NDP (Numencal Data Processor), 51 agglUngono al1'arch1tet- ;,ir\'
tura della CPU 8 registri in virgola mobile, 5 tipi di dati addizionali e piu di 70
istruzieni, tutte progettate per trattare numeri in virgola mobile. n coprocessorepuo
essere impiegato direttamente sia con 8086 che con 8088
f
come pure con 80186 e 80188.
Nel seguito ha sviluppato i coprocessori 80287 e 80387, in riferimento aile CPU
80286 e 80386. Di questi coprocessori non si parla in questa testo, anche perche, a
parte Ie inevitabili differenze dovute soprattutto ai differenti bus, dal punta di vista
concettuale nOD c'e molto da aggiungere. A partire dal 486 l'unita in virgola mobile e
integrata su Ie .CPU quin?i i hanno perso
CI? ntemamo asSaI lstruttlvo per 1concettl e Ie
soluzlOm tecmche che alia base del .
L'8087 estato reahzzato can tecnologla gate e alloggmto su dl un supporto .
a 40 pin
17
, can un consumo massimo di potenza valutato sui 2400 mW. Fornisce
pre,tazioni 100 volte maggiori rispetto a quelle della CPU 8086 (08088) da ,ala. Per'
rendersi conto della potenza di calcolo di questa dispositivo, basta confrontare i dati
presenti in tabella B.4.
l:.7t",,">,!t,r .:{\.... ,: '
..
.. .. -'i\
""," I, "

.
;_ ..
.."t" " ,,-
:\,
J11t" .. :'
......- ) ,.;
. 0(,
.". ,., , _.
fl.

,,',;
'-: ..'" ,
'.'.

n,"
., 1: .(-', '.
';r,,('

thw.;'
."J-" _.. ,.,,.. .
...
;I'.'JK "



" ... ". '0'"
. . '" b",,".', ".1'"
....,., . '
. ..
. ',.1,,'., ..
... '-\J""
..-,',.. -:('i" '1" , ".,., ..
.. ,....c. , , \'1.,
'.r J\,.
i 'lo ,.11<..
. r... ...
. ,
"':"-,-,;1;, to.,.
.>c,. ',"
, ::;1"""" '.. '"
" "",2..\"" ,.
..
... ,(t, .'
" .',
, '
B.6.2 Tipi di dati
B.6.3 Collegamento con la CPU 8086/8088
18
11 formato IEEE a precisione singola fornisee una precisione di circa 6..;-.7 posti decimali e pub
mimeri appanenenti all'intervallo 1,17 .. 10-
38
--;-- 1,40 .. 10
38
(1,40 .. 10-
45
+- 1,40
10 includendo i Dumen denonnalizzati). I reali lunghi (detti a precisione doppia.) sono di 64 bit
(52 per 1a mantissa espandibili a 53 con la tecnica hidden-bit, 11 per l'esponente e un bit di segno).
Questo tipo di dati foroisce 15-+16 cifre decimali di precisione e pub gestire numeri nel1'intervallo
2,22 10-
308
-+ 1,79 10
308
(4,94 .. 10-
324
--;-- 1,79 .. 10
308
).
In FiguraB.21 viene fornito iI dettaglio della piedinatura dell'integrato.
In FiguraB.22 viene mostrato il collegamento in tipica configurazione con 1a CPU.
Per poter utilizzare il coprocessore la CPU deve lavarare in modo massimo. Si nati
che il coprocessore viene collegato direttamente sia aU'8086 che al1'8088. Attraverso
la linea BHEjS7 la logica del coprocessore determina, all'atto del reset, se la CPU
ea 16 a a 8 bit. lnfatti la prima istruzione che Ie due CPU eseguono all'atto del
rORlUTO
l>lmq,-
"n

olou
(bit)
,

lHTnlO rj,lI.Ol.l.
" "
"

COlll'U:llP;H'Tl:l j, Dllr:

D;tuO cono ..
"

COWPU3l&lfTO .. Dill:
..
...., """"
"

"

toNl'L.EMDlTO j, DUE
"
""'" ""
.. Ie O\Ql
,
X 017 - 00
./- n
x ....
SlNGO'" PRBClflIOH!
"
24 (32)
"""""
"


ODPf'1.I. PJU!ClSlOHI
" "

,
'"
>W!=
..

../--,,3&
,I
PRlClSIOIiI IlSTIIU
"
&4 {$OJ
....
"""""
" "

c) tutte le istruzioni sana della stessa misura (per esempio una parola) e richiedano
10 stesso tempo di esecuzione;
L'architettura 8086 587
'a) solo 1a CPU preleva istruzioni: dalle informazioni di stata disponibili suI bus
il coprocessore riconosce i cieli fetch ed ein grado di catturare all'occarrenza i
codici di istruzione quando questi sono presenti sul bus dati;
Prima di addentrarci nel funzionamento del coprocessore 8087, callviene fare qualche
considerazione di carattere generale sui caprocessori. Per definizione) un coprocessore
eun dispositivo che non preleva Ie istruzioni dalla memoria, rna che osserva il fiusso
delle istruzioni prelevate dalla CPU e interviene quando l'istruzione appartiene al
proprio repertorio. Si faccia riferimento alia schema di FjguraB.23 e si facciano
queste ipotesi semplificative:
b) il repertorio di istruzioni di NPX edisgiunto da quello di CPU;
B.6.4 Coordinamento con la CPU: aspetti generali
Figura B.20 Formato esterno dei tipi di dati tratta.ti dal coprocessore numerico 8087.
reset ealnndirizzo FFFFO. Essendo l'istruzione a indirizzo pari, 1'8086 legge 16 bit,.
asserendo BHE, mentre per 1'8088, che legge sempre 8 bit, il bit BHE/S7 non ha
significato e il corrispondente piedino (S80) esempre alto. In base aUa condizione
rilevata al reset, la logica del coprocessore si autoconfigura, in modo da pater lavorare
su un bus a 16 a a 8 bitj inoltre essa si costruisce la.coda interna in modo da replicare
. quella della corrispondente CPU (6 byte nel caso di 8086, 4 byte nel caso di 8088).
Appendice B
>ii''"
,; "!;,,'l "1..\ n
'.. :.:",,".
"-,-,_., .
,....... "',.!"..
, .. '1 ..,'
:1,"::'
-' _.. '"""

,. >, -,
".'
... /; .., .!:II',..,
:,;':!Nl
'
..' __< ... ,:lol;
,-'. ",,"" .,.. I
, " ,:.':" ,..,..
- -'-
>:-".;/;,:.
....: -,""'-,:: "t, ,
','.:- .:;
) ,,'.. ..
." t .
, ." r
.
.. ':;::gt;
'/'/ :;';.:::C'
-, .
..
,
';: :. ":-' i:
." . :. M) '..
r' ':'}';' 'fil")+
::
.. ' ;.,;. ".'-."l:.J, ''i!i. ..-


. ""<.-:::';';(
.
": :1!lj!:,f.:.
"'."--j"';,, '.'
A titolo di informazione si illustrano i formati dei dati trattati da.l coprocessore ..
- " .-'."'" "".; .
matematico. . .,
dell'808! i dati sempre rappresentati vir.gola mobile su 80 J!C.
can 64 bIt per la mantIssa, 15 blt per l'esponente e un' bit dl segna. Questa tlpa
data (chiamata o. a doppia precisione estesa) puo rappresentare .
dlrettamente numen all'l.lltervall? 1,36 * + 1,19 * 10
4932
(1,65
* 10 4951 --;.. 1,19 * 10
49
2 1 numen denormahzzatl). nformato
una precisione ill circa 19 posti decimali. La rappresentazione interna eal di sopra ..
dello standard IEEE (64 bit); a ogni modo il dispositivo e compatibile con 10 questa ""':-:-:;r>
standard
l8 . .
. ... " .... -..!,. "I"
La FiguraB.20 mostra i sette tipi di dati trattati dall'8087 nel loro formato
esterno. Poiche internamente 1'8087 mantiene tutti i numeri nel formata temporaneo IF
rea.le, Ie istruzioni di e imrnagazzinamento convertono automaticamente .;.
gli opera.ndi rappresentati in memoria come i numeri interi a 16, 32, 64 bit, i numeri ..
a virgola mobile a 32 a 64 bit, i numeri a 18 cifre BCD in formato temporaneo reale
e viceversa. U8087 ha anche la capacita. di controllare in ogni ca.lcolo gli errori di . ;
arrotondamento
,
eli underflow e di overflow. : ' ': .i,\,
'. ,.'. "',.: ",
";'!;":'-""i
Ki
"'" '

."1.....,. , !!J.'l'.,
< '\-
"",0.:'. ,
.:,,'':;"",'
", c .. ,.
,,' . ',.,,'.:" 'l'l'i ." I'
i'.. .
' ..,.... ,.... ",

.' ";:f:(-. .
., ,im,,'.!.lij""
, ... ,,;... ','.. . , .
" .. ' .
.- . ,... ,_. I'"
',<*"c
.. .....
' .. .. ) ..'\"::'
..
.- .',' '.
,:>,.-?
'."'."', .' ' _., "I
.... \. "If.""
'>" :ii*"
.'\,i.. .
.... ;':',';;,;,:'::.'; :'IJh;..
:;, ".;'" '.! ;, .1\,-:
. , .' ... "iif'"
,; ;. ,
'.,' .' "".'
. ""p '.' I'"
; .: i .. ::

f !
, :;,1
"'1 >.
, .. "'-"'
0) .
Uistruzione: FLD num [8X] ba l'effetto ill caricare sulla testa della stack it contenuta
della posizione alPindirizzo 'num[8X]. In questa caso il registro di destinazione - 1a
testa della stack - eimplicito.
nmadelia di programmazione prevede una parola di stato e una parol a di control-
10 the evitiamo di esaminare nel dettaglio. La state del coprocessore puo essere esa-
minato cia programma. moltre it dispositivo puo anche essere programmata in modo
cia generare un'interruzione in caso di anomalie di funzionamento.
n puntatore alle istruzioni (ISP) e il puntatore agli operandi (OP) svolgono un
Tuolo fondamentale nel funzionamenta del dispositivQ e vengono discussi pili avanti.
586
I
I
\
I
I
\
I
\
\
I
I
I
I
I
--
--
_.
--
-
..
-.
_.
_.
_.
-
-.
...
-
-

...
--
...
--
_.
--
-.
..
-'
_.
--
B.6.2 Tipi di dati
B.6.3 Collegamento con la CPU 8086/8088
18
11 formato IEEE a precisione singola fornisee una precisione di circa 6..;-.7 posti decimali e pub
mimeri appanenenti all'intervallo 1,17 .. 10-
38
--;-- 1,40 .. 10
38
(1,40 .. 10-
45
+- 1,40
10 includendo i Dumen denonnalizzati). I reali lunghi (detti a precisione doppia.) sono di 64 bit
(52 per 1a mantissa espandibili a 53 con la tecnica hidden-bit, 11 per l'esponente e un bit di segno).
Questo tipo di dati foroisce 15-+16 cifre decimali di precisione e pub gestire numeri nel1'intervallo
2,22 10-
308
-+ 1,79 10
308
(4,94 .. 10-
324
--;-- 1,79 .. 10
308
).
In FiguraB.21 viene fornito iI dettaglio della piedinatura dell'integrato.
In FiguraB.22 viene mostrato il collegamento in tipica configurazione con 1a CPU.
Per poter utilizzare il coprocessore la CPU deve lavarare in modo massimo. Si nati
che il coprocessore viene collegato direttamente sia aU'8086 che al1'8088. Attraverso
la linea BHEjS7 la logica del coprocessore determina, all'atto del reset, se la CPU
ea 16 a a 8 bit. lnfatti la prima istruzione che Ie due CPU eseguono all'atto del
rORlUTO
l>lmq,-
"n

olou
(bit)
,

lHTnlO rj,lI.Ol.l.
" "
"

COlll'U:llP;H'Tl:l j, Dllr:

D;tuO cono ..
"

COWPU3l&lfTO .. Dill:
..
...., """"
"

"

toNl'L.EMDlTO j, DUE
"
""'" ""
.. Ie O\Ql
,
X 017 - 00
./- n
x ....
SlNGO'" PRBClflIOH!
"
24 (32)
"""""
"


ODPf'1.I. PJU!ClSlOHI
" "

,
'"
>W!=
..

../--,,3&
,I
PRlClSIOIiI IlSTIIU
"
&4 {$OJ
....
"""""
" "

c) tutte le istruzioni sana della stessa misura (per esempio una parola) e richiedano
10 stesso tempo di esecuzione;
L'architettura 8086 587
'a) solo 1a CPU preleva istruzioni: dalle informazioni di stata disponibili suI bus
il coprocessore riconosce i cieli fetch ed ein grado di catturare all'occarrenza i
codici di istruzione quando questi sono presenti sul bus dati;
Prima di addentrarci nel funzionamento del coprocessore 8087, callviene fare qualche
considerazione di carattere generale sui caprocessori. Per definizione) un coprocessore
eun dispositivo che non preleva Ie istruzioni dalla memoria, rna che osserva il fiusso
delle istruzioni prelevate dalla CPU e interviene quando l'istruzione appartiene al
proprio repertorio. Si faccia riferimento alia schema di FjguraB.23 e si facciano
queste ipotesi semplificative:
b) il repertorio di istruzioni di NPX edisgiunto da quello di CPU;
B.6.4 Coordinamento con la CPU: aspetti generali
Figura B.20 Formato esterno dei tipi di dati tratta.ti dal coprocessore numerico 8087.
reset ealnndirizzo FFFFO. Essendo l'istruzione a indirizzo pari, 1'8086 legge 16 bit,.
asserendo BHE, mentre per 1'8088, che legge sempre 8 bit, il bit BHE/S7 non ha
significato e il corrispondente piedino (S80) esempre alto. In base aUa condizione
rilevata al reset, la logica del coprocessore si autoconfigura, in modo da pater lavorare
su un bus a 16 a a 8 bitj inoltre essa si costruisce la.coda interna in modo da replicare
. quella della corrispondente CPU (6 byte nel caso di 8086, 4 byte nel caso di 8088).
Appendice B
>ii''"
,; "!;,,'l "1..\ n
'.. :.:",,".
"-,-,_., .
,....... "',.!"..
, .. '1 ..,'
:1,"::'
-' _.. '"""

,. >, -,
".'
... /; .., .!:II',..,
:,;':!Nl
'
..' __< ... ,:lol;
,-'. ",,"" .,.. I
, " ,:.':" ,..,..
- -'-
>:-".;/;,:.
....: -,""'-,:: "t, ,
','.:- .:;
) ,,'.. ..
." t .
, ." r
.
.. ':;::gt;
'/'/ :;';.:::C'
-, .
..
,
';: :. ":-' i:
." . :. M) '..
r' ':'}';' 'fil")+
::
.. ' ;.,;. ".'-."l:.J, ''i!i. ..-


. ""<.-:::';';(
.
": :1!lj!:,f.:.
"'."--j"';,, '.'
A titolo di informazione si illustrano i formati dei dati trattati da.l coprocessore ..
- " .-'."'" "".; .
matematico. . .,
dell'808! i dati sempre rappresentati vir.gola mobile su 80 J!C.
can 64 bIt per la mantIssa, 15 blt per l'esponente e un' bit dl segna. Questa tlpa
data (chiamata o. a doppia precisione estesa) puo rappresentare .
dlrettamente numen all'l.lltervall? 1,36 * + 1,19 * 10
4932
(1,65
* 10 4951 --;.. 1,19 * 10
49
2 1 numen denormahzzatl). nformato
una precisione ill circa 19 posti decimali. La rappresentazione interna eal di sopra ..
dello standard IEEE (64 bit); a ogni modo il dispositivo e compatibile con 10 questa ""':-:-:;r>
standard
l8 . .
. ... " .... -..!,. "I"
La FiguraB.20 mostra i sette tipi di dati trattati dall'8087 nel loro formato
esterno. Poiche internamente 1'8087 mantiene tutti i numeri nel formata temporaneo IF
rea.le, Ie istruzioni di e imrnagazzinamento convertono automaticamente .;.
gli opera.ndi rappresentati in memoria come i numeri interi a 16, 32, 64 bit, i numeri ..
a virgola mobile a 32 a 64 bit, i numeri a 18 cifre BCD in formato temporaneo reale
e viceversa. U8087 ha anche la capacita. di controllare in ogni ca.lcolo gli errori di . ;
arrotondamento
,
eli underflow e di overflow. : ' ': .i,\,
'. ,.'. "',.: ",
";'!;":'-""i
Ki
"'" '

."1.....,. , !!J.'l'.,
< '\-
"",0.:'. ,
.:,,'':;"",'
", c .. ,.
,,' . ',.,,'.:" 'l'l'i ." I'
i'.. .
' ..,.... ,.... ",

.' ";:f:(-. .
., ,im,,'.!.lij""
, ... ,,;... ','.. . , .
" .. ' .
.- . ,... ,_. I'"
',<*"c
.. .....
' .. .. ) ..'\"::'
..
.- .',' '.
,:>,.-?
'."'."', .' ' _., "I
.... \. "If.""
'>" :ii*"
.'\,i.. .
.... ;':',';;,;,:'::.'; :'IJh;..
:;, ".;'" '.! ;, .1\,-:
. , .' ... "iif'"
,; ;. ,
'.,' .' "".'
. ""p '.' I'"
; .: i .. ::

f !
, :;,1
"'1 >.
, .. "'-"'
0) .
Uistruzione: FLD num [8X] ba l'effetto ill caricare sulla testa della stack it contenuta
della posizione alPindirizzo 'num[8X]. In questa caso il registro di destinazione - 1a
testa della stack - eimplicito.
nmadelia di programmazione prevede una parola di stato e una parol a di control-
10 the evitiamo di esaminare nel dettaglio. La state del coprocessore puo essere esa-
minato cia programma. moltre it dispositivo puo anche essere programmata in modo
cia generare un'interruzione in caso di anomalie di funzionamento.
n puntatore alle istruzioni (ISP) e il puntatore agli operandi (OP) svolgono un
Tuolo fondamentale nel funzionamenta del dispositivQ e vengono discussi pili avanti.
586
I
I
\
I
I
\
I
\
\
I
I
I
I
I
--
--
_.
--
-
..
-.
_.
_.
_.
-
-.
...
-
-

...
--
...
--
_.
--
-.
..
-'
_.
--
19Que3ta ipotesi e manifestamente assurda in quanta, sebbene sia perfettamente accet,tabile per
Ie fasi di acquisizione del cadice, prelievo degli operandi ed esecuzione dell'operazione, per scrivere
i risultati in memoria, NPX deve entrare in controllo del bus. In ogni caso, ai fini del nostro r.agio-
namento, ci viene comado fare questa assunzione che, come molte delle precedenti, abbandoneremo
presto. ,
2oQuaicosa di analogo a quanto detto nel progetto della CPU del Capitolo 3, dove il codice arit-
metico era decodificato a parte rispetto al codice di istruzione e solo quando quest'ultimo inclicava
la presenza di un'istruzione aritmetica. Nel caso dell'architettura Intel la faccenda e complicata,dai
moltepJici formati delle istruzioni e si richiede un campo di 6 bit per il codice di escape.
-
).
-
-
J.
).
I
I.
j -
1-
\
}-
,
)-
r-
I
l-
1
-\ -
01 Iota. <101 ."" <11 ..........
01 COlOI..U- <II !ria Il2M
01 lalott In.ue.t.....
4el b... <II --..
NPX
CPU
rur-
!10M I

-
= "'/"

'"'"

"tNrMTOll


,
.&llO-.w15


-
llQ I eTa


,,=
-
= ..-'"
,

,


( -
).
'"
>on (lSO---{lSI
"

,
- -
-
RQ I OT


'O-.lJQ
-
=


"'"
- --
.</ m
L'architettura 8086 589
Figura B.22 Configurazione di sistema 8086/8088 - 8087. II bus tra CPU e coprocessore
viene detto bus locale; esso si connette al bus eli sistema (controllato da dispositivo 8288)
attraverso latch e transceiver. Sulla 1a linea RQ/GTO si svolge il protocollo eli hand-shaking
per arbitrare I'accesso al bus. Quella mostrata non eI'unica configurazione possibile. II bus
locale potrebbe prevedere anche un processore eli I/O e la seconda.linea RQ/GT (RQ/GTl)
verrebbe collegata: a una linea RQ/GT del processore eli I/O; in questo caso, il protocollo eli
arbitraggio garantirebbe un corretto accesso al bus da parte delle tre unita, attive. L'Intel
prevedeva anche configurazioni di sistema molto piu complesse, can piu CPU, processod eli
I/O e coproeessori collegati variamente sui bus locali e sul bus di sistema.
dell'istruzione WAIT, che determina uno stato di attesa della CPU in funzione
delle stato della linea TEST collegata al piedino BUSY del coproeessore;
d
/
) la CPU ha una coda, edunque necessario che NPX ne tenga traecia. Di fatto
1'8087 ha al suo interne una coda identica a quella della CPU e tramite Ie linee
QSO e QSl mantiene uno state congruente;
e
'
) l'acquisizione delPoperando, come pure Ia scrittura del risultato nOn possono
essere a carica della CPU, per cui NPX deve entrare in cantralla del bus, Cia
riehiede un meceanismo di arbitraggio. Nel easo specifieo tramite il protocollo
RQ/GT,
Figura B.23 Madella semplificato per 10 studio del funzionamento eli un coprocessore. CPU
e coprocessore Sono sullo stesso bus. La prima eresponsabile del flusso di informazioni suI
bus; il secondo ein grado di prelevare Ie informazioni di suo interesse che passano.
,..

AI6 I sa
AI7 I 34
I 35
J.l9 / 36
SHf
I erc
=
RQ I 1:10-
"'
"'
"
.-
"
'"
'"
'"" ,=.

,
..
,
" ,
"

"
,
"
,
"
,
"

"
,
"
"
8087 al
" "
" "
" "
"
"
" "
" "
" "
" "
" "
" "
'"




'"
'"
."
"'
.'


'" C...H.) lDl4
(.113) Dla
(J.l2) ADl2
(All) Allll
(J.lO) All\O
(.19) .109
(..
c')
.'


,
""";::;'i'f, ',.-
- - .. ..;" ..
. -
588 Appendice B
----"-'--'-'----'-'------------------------------- ': ....
. :ig;,.,;:"
".
- ,'_ ... '., ,".'
.'/\.j.


:.. :':'

,. "

",-",.,'
"; ,.,. '; ;...
_:,.:. ';I:/.,'; Vi,;'
, '_ ""J'."" ,.-,.1-"
,; "-.., .. ! ,- ..'."' ' .-
Figura B.2! L'integrato 8087. I piedini a indirizzi/dati, stata, reset, ready, clock,
e alimentazione hanna 1a stessa disposizione di quella dell'8086/8088. I piedini BUSY
e RQ/GT intervengono nel coordinamento con la CPU. II piedino INT e la richiesta di
," '''. 'C, . .,,, ," :'
interruzione C',

d) la CPU, diversamente dal caso 8086/8088, non ha at suo interne alcuna coda i:iffi}.::
istruzioni. Cia equivaie a dire che se e in corso una fase di fetch, l'istruzione df;tT
precedente estata completamente eseguita; _-:'::CiS,,"::'
,"
e) NPX non acquisisce mai controllo del buS
19
. "
Can Ie precedenti assunzioni il sistema di FiguraB.23 ha un funzionamento molto ...
semplice: la CPU comanda il bus, effettua i1 fetch ed esegue norrnalrnente Ie istruzioni,
rna quando viene prelevata un'istruzione del repertorio NPX, Ia logica di CPU las<;ia
a N,PX il di eseguirla. Tra CPU e coprocessore non c'e alcun
nell esecuzlOne. . _. -
Nella pratica Ie cose sono pili complicate, per motivi di earattere generale e per
motivi contingenti legati alIa particolare arehitettura 8086:,::..
... ,'. ".
b') non tutti i codici di operazione di NPX sono distinti da quelli di CPU. Cia
uno specifieo codice che inmvidui quello che segue eome eodice di NPX
20
. neodice '
- '. " '... .' -- "'. C':".'-
in questione ha mnemonico ESC. Pili in generale, ESC serve a indicare che quel
,.,' .'... ','f'
che segue non deve essere trattato dalla CPU, consentendo Feventuale impiego :::Ki;:,/:::
di un coprocessore diverso da 8087;
/,f\:,i?f;:",: ;.M:'i';
Ie istruzioni hanno diversa durata, dunque oecorre un meeeanismo di sincrD-'
nizzazione tra CPU e NPX. Essenzialmente il meccanismo consiste nell'impiego' .:
," .', "1'.,,.
:
,
'.':.\;< .j.!j

'"j';c!';.' ;"."
.j"-'" .:,
,': '. :" ". 'f;i
..

:,,.,!J,> Ii,';,'
'. d.. ''--''
;:
;;!iV'
Ji\',,::
...
": ',l,a,;".
19Que3ta ipotesi e manifestamente assurda in quanta, sebbene sia perfettamente accet,tabile per
Ie fasi di acquisizione del cadice, prelievo degli operandi ed esecuzione dell'operazione, per scrivere
i risultati in memoria, NPX deve entrare in controllo del bus. In ogni caso, ai fini del nostro r.agio-
namento, ci viene comado fare questa assunzione che, come molte delle precedenti, abbandoneremo
presto. ,
2oQuaicosa di analogo a quanto detto nel progetto della CPU del Capitolo 3, dove il codice arit-
metico era decodificato a parte rispetto al codice di istruzione e solo quando quest'ultimo inclicava
la presenza di un'istruzione aritmetica. Nel caso dell'architettura Intel la faccenda e complicata,dai
moltepJici formati delle istruzioni e si richiede un campo di 6 bit per il codice di escape.
-
).
-
-
J.
).
I
I.
j -
1-
\
}-
,
)-
r-
I
l-
1
-\ -
01 Iota. <101 ."" <11 ..........
01 COlOI..U- <II !ria Il2M
01 lalott In.ue.t.....
4el b... <II --..
NPX
CPU
rur-
!10M I

-
= "'/"

'"'"

"tNrMTOll


,
.&llO-.w15


-
llQ I eTa


,,=
-
=
..-'"
,

,


( -
).
'"
>on (lSO---{lSI
"

,
- -
-
RQ I OT


'O-.lJQ

-
=


"'"
- --
.</ m
L'architettura 8086 589
Figura B.22 Configurazione di sistema 8086/8088 - 8087. II bus tra CPU e coprocessore
viene detto bus locale; esso si connette al bus eli sistema (controllato da dispositivo 8288)
attraverso latch e transceiver. Sulla 1a linea RQ/GTO si svolge il protocollo eli hand-shaking
per arbitrare I'accesso al bus. Quella mostrata non eI'unica configurazione possibile. II bus
locale potrebbe prevedere anche un processore eli I/O e la seconda.linea RQ/GT (RQ/GTl)
verrebbe collegata: a una linea RQ/GT del processore eli I/O; in questo caso, il protocollo eli
arbitraggio garantirebbe un corretto accesso al bus da parte delle tre unita, attive. L'Intel
prevedeva anche configurazioni di sistema molto piu complesse, can piu CPU, processod eli
I/O e coproeessori collegati variamente sui bus locali e sul bus di sistema.
dell'istruzione WAIT, che determina uno stato di attesa della CPU in funzione
delle stato della linea TEST collegata al piedino BUSY del coproeessore;
d
/
) la CPU ha una coda, edunque necessario che NPX ne tenga traecia. Di fatto
1'8087 ha al suo interne una coda identica a quella della CPU e tramite Ie linee
QSO e QSl mantiene uno state congruente;
e
'
) l'acquisizione delPoperando, come pure Ia scrittura del risultato nOn possono
essere a carica della CPU, per cui NPX deve entrare in cantralla del bus, Cia
riehiede un meceanismo di arbitraggio. Nel easo specifieo tramite il protocollo
RQ/GT,
Figura B.23 Madella semplificato per 10 studio del funzionamento eli un coprocessore. CPU
e coprocessore Sono sullo stesso bus. La prima eresponsabile del flusso di informazioni suI
bus; il secondo ein grado di prelevare Ie informazioni di suo interesse che passano.
,..

AI6 I sa
AI7 I 34
I 35
J.l9 / 36
SHf
I erc
=
RQ I 1:10-
"'
"'
"
.-
"
'"
'"
'"" ,=.

,
..
,
"
,
"

"
,
"
,
"
,
"

"
,
"
"
8087 al
" "
" "
" "
"
"
" "
" "
" "
" "
" "
" "
'"




'"
'"
."
"'
.'


'"
C...H.) lDl4
(.113) Dla
(J.l2) ADl2
(All) Allll
(J.lO) All\O
(.19) .109
(..
c')
.'


,
""";::;'i'f, ',.-
- - .. ..;" ..
. -
588 Appendice B
----"-'--'-'----'-'------------------------------- ': ....
. :ig;,.,;:"
".
- ,'_ ... '., ,".'
.'/\.j.


:.. :':'

,. "

",-",.,'
"; ,.,. '; ;...
_:,.:. ';I:/.,'; Vi,;'
, '_ ""J'."" ,.-,.1-"
,; "-.., .. ! ,- ..'."' ' .-
Figura B.2! L'integrato 8087. I piedini a indirizzi/dati, stata, reset, ready, clock,
e alimentazione hanna 1a stessa disposizione di quella dell'8086/8088. I piedini BUSY
e RQ/GT intervengono nel coordinamento con la CPU. II piedino INT e la richiesta di
," '''. 'C, . .,,, ," :'
interruzione C',

d) la CPU, diversamente dal caso 8086/8088, non ha at suo interne alcuna coda i:iffi}.::
istruzioni. Cia equivaie a dire che se e in corso una fase di fetch, l'istruzione df;tT
precedente estata completamente eseguita; _-:'::CiS,,"::'
,"
e) NPX non acquisisce mai controllo del buS
19
. "
Can Ie precedenti assunzioni il sistema di FiguraB.23 ha un funzionamento molto ...
semplice: la CPU comanda il bus, effettua i1 fetch ed esegue norrnalrnente Ie istruzioni,
rna quando viene prelevata un'istruzione del repertorio NPX, Ia logica di CPU las<;ia
a N,PX il di eseguirla. Tra CPU e coprocessore non c'e alcun
nell esecuzlOne. . _. -
Nella pratica Ie cose sono pili complicate, per motivi di earattere generale e per
motivi contingenti legati alIa particolare arehitettura 8086:,::..
... ,'. ".
b') non tutti i codici di operazione di NPX sono distinti da quelli di CPU. Cia
uno specifieo codice che inmvidui quello che segue eome eodice di NPX
20
. neodice '
- '. " '... .' -- "'. C':".'-
in questione ha mnemonico ESC. Pili in generale, ESC serve a indicare che quel
,.,' .'... ','f'
che segue non deve essere trattato dalla CPU, consentendo Feventuale impiego :::Ki;:,/:::
di un coprocessore diverso da 8087;
/,f\:,i?f;:",: ;.M:'i';
Ie istruzioni hanno diversa durata, dunque oecorre un meeeanismo di sincrD-'
nizzazione tra CPU e NPX. Essenzialmente il meccanismo consiste nell'impiego' .:
," .', "1'.,,.
:
,
'.':.\;< .j.!j

'"j';c!';.' ;"."
.j"-'" .:,
,': '. :" ". 'f;i
..

:,,.,!J,> Ii,';,'
'. d.. ''--''
;:
;;!iV'
Ji\',,::
...
": ',l,a,;".
11 codice ESC Uistruzione ESC e codificata sui
"11011" (FiguraB.24).
....
",
C., n l.:r" ll.,
,.,
bu.
BUSY:_ ..
Esecuu.,ne

ist<udon.
I BUSY:_
o .1
NPX
cI
Monitorag.
eu,

BUSY: .. l;
Esecuzione
istruzione
- BUSY: "'0
,
Wake up'
"Wake up
---_. __.
'"c
.""
ausY,- 0
S>
Istrud"n.
Sue"lv.
,
....
1101115
NO
CPU
ESC
f-
Altre
eventulI.li
Istru%lonl
WAIT
..
I TEST
L'architettura 8086 591
Istruzioni NPX che non fanno riferimento alIa memoria.
Un esempio di istruzione di questa genere e FADD, non seguita da operandi. n
suo effetto consiste nel sommare i due elementi di testa delle stack. n formato
B.6.5 Coordinarnento con la CPU: il controllo del bus
Fino a questa punto abbiarno evitato di p,arlare dei problemi relativi all\lSO del bus
comune. In particolare non e stata spesa un,a parola su come NPX acquisisce gli
operandi 0 su come scrive i risultati in memona. Conviene distinguere tra i tre casi
sotto illustrati .
Figura 8.26 Effettiva tecnica di interazione fra CPU e 8087.
parola di state e pub essere posta all'attenzione della CPU attraverso la richiesta di
interruzione. .
Figura 8.25 Modello preliminare di interazloue fra CPU e 8087.
I oc..n ...... nl.<> (ll I
MOO
\,,_R/"I
10,_R/" I
Appendice B
1
"0"
_
1,,0"_
, _Il';' J'
'. 'J'
- -'fr':

_.
. ", ". ,II, :L ",
",...ail[' 11'--
,,". ,...... .;:ro-'
: ...;:- ..
. ,

",',' .. ;ii:'.;"
'I, ..lI't.[ "',,:.'
pnml 5 bit dell'istruzione come
. \:'t >.
" '11-\, V ' ,I' .'
',:, "]j';,':'
:... '" ,," .....
", ... ,t _', _.,,'"
. ',: 'I'; .' . ':':l' , ,
'. \.,1. "r,'
.. 'i 'Y'
0' ..',_;::: r..-' .
'--,J .l,
. 1"..r..., ,._._._
.",
.;) .......
.' ;. '. " ,;,

'" ',J.-;!':;: ...
-:' ,::OJ\'''- "1'"
"... '" ',A. '<!l:"

I _ I _ I I I .. ":",.,., ,""
1 1 0 1 1 00/10 RIM .go.U.... nto (LSB) I (WS8) I 'i,' ,,':' .'::.f;
.> , . o"'=.,
Formato che iniziano can !l di ESCAPE. .I1 campo 'fJ::";';'
R:/M ldentifica uno 8. rcgtStrt del coprocessore. puo essere a 24 .
bit, a. secanda. della dimenslone della scostamento, per Ie IstruzlOm de fanno rtfenmento,..
alla bit queUe. de sui registri del coprocessore. Per
tao CPU, se il codice di lStrUZlone contlene ESC, I'lstruzlOne non ha effetto - e come se si
trattasse dell'istruzione di NOP - salvo iJ fatto che, per le istruzioni che fanno riferimento
la .CPU una lettura nell'istruzione stessa.
1 mottvl illustratl nel segwto
,
questa lettura Vlene denommata dummy read. '..:.::,;",;.):q '
. .
.'
.'
,,1.,+;,.11(.
In FiguraB.25 vieno. mostrato ilprincipio generalesu cui si
(alcum llllportantl aspettl delJ!mterazlOoe vengono descnttl poco plU avantl). .
"C3lW'
Se la riconosce .il.c?dice ESC. non esegue. ed entra. in
il coprocessore lIllZla I'esecuzlOoe e la linea BUSY, a mdlcare
e Impegnato.
, .:
. '''\, 'i'}}jlG:'l,h.
sta l'istruzione, CPU puo procedere JO(-
lStr:wOru. purche queste non al repertorlo dl
altnmentl il coprocessore avrebbe un malfunzlonamento. , ,..
, ',', ,jill/!: .
Prima di effettuare un'altra operazione in virgola mobile, la CPU deve
we libero. A tal fine, nel repertorio 8086 e
WAIT, il cw effetto efar attendere la CPU per tutto il in CUI 11
TEST e disasserito (cioe alto). Quando, a operazione conclusa, la logica di
TEST passa allo stato basso e la CPU puo prelevare .
nuova lStruzlone NPX.
, .. .
E facile convincersi che 10 schema precedente e alquanto inefficiente. Nella
ca conviene che l'istruzione WAIT sempre Pistruzione per il coprocessore. In tal At
modo di .e:rore, .inoltre epossibile,stabilire una con.venzione
per CUI ogru codice mnemoruco di lstruzlOne per NPX puo essere automatlcamente :
tradotto dall'assemblatore 0dal compilatore nell'istruzione WAIT e nell'effettiva istru-
zione per il coprocessore. Per esempio l'istruziooe FADD vieoe traclotta nella sequenza: .
WAIT i (ESC, FADD) j dove con (ESC, FADD) si intende l'effettiva istruzione
dell'ESCAPE. Nella pratica, dunque, la sincronizzazione avviene secondo 10 schema W;1
di FiguraB.26. .
. ""W-,,;,,'" J'JNJ'
Se dovesse accadere alia CPU di eseguire il fetch di un'istruzione di NPX
questa eimpegnato, si avrebbe un malfunzionamento. Esso viene segnalato nella:.
. .. '
.;'
. '. ',/
j
,.:
590
1
\
\
I
\
I
I
I
I
I
I
I
I
,
..
-
..
..
.
..

"
.
..
..
.,
..
..
.-
-
11 codice ESC Uistruzione ESC e codificata sui
"11011" (FiguraB.24).
....
",
C., n l.:r" ll.,
,.,
bu.
BUSY:_ ..
Esecuu.,ne

ist<udon.
I BUSY:_
o .1
NPX
cI
Monitorag.
eu,

BUSY: .. l;
Esecuzione
istruzione
- BUSY: "'0
,
Wake up'
"Wake up
---_. __.
'"c
.""
ausY,- 0
S>
Istrud"n.
Sue"lv.
,
....
1101115
NO
CPU
ESC
f-
Altre
eventulI.li
Istru%lonl
WAIT
..
I TEST
L'architettura 8086 591
Istruzioni NPX che non fanno riferimento alIa memoria.
Un esempio di istruzione di questa genere e FADD, non seguita da operandi. n
suo effetto consiste nel sommare i due elementi di testa delle stack. n formato
B.6.5 Coordinarnento con la CPU: il controllo del bus
Fino a questa punto abbiarno evitato di p,arlare dei problemi relativi all\lSO del bus
comune. In particolare non e stata spesa un,a parola su come NPX acquisisce gli
operandi 0 su come scrive i risultati in memona. Conviene distinguere tra i tre casi
sotto illustrati .
Figura 8.26 Effettiva tecnica di interazione fra CPU e 8087.
parola di state e pub essere posta all'attenzione della CPU attraverso la richiesta di
interruzione. .
Figura 8.25 Modello preliminare di interazloue fra CPU e 8087.
I oc..n ...... nl.<> (ll I
MOO
\,,_R/"I
10,_R/" I
Appendice B
1
"0"
_
1,,0"_
, _Il';' J'
'. 'J'
- -'fr':

_.
. ", ". ,II, :L ",
",...ail[' 11'--
,,". ,...... .;:ro-'
: ...;:- ..
. ,

",',' .. ;ii:'.;"
'I, ..lI't.[ "',,:.'
pnml 5 bit dell'istruzione come
. \:'t >.
" '11-\, V ' ,I' .'
',:, "]j';,':'
:... '" ,," .....
", ... ,t _', _.,,'"
. ',: 'I'; .' . ':':l' , ,
'. \.,1. "r,'
.. 'i 'Y'
0' ..',_;::: r..-' .
'--,J .l,
. 1"..r..., ,._._._
.",
.;) .......
.' ;. '. " ,;,

'" ',J.-;!':;: ...
-:' ,::OJ\'''- "1'"
"... '" ',A. '<!l:"

I _ I _ I I I .. ":",.,., ,""
1 1 0 1 1 00/10 RIM .go.U.... nto (LSB) I (WS8) I 'i,' ,,':' .'::.f;
.> , . o"'=.,
Formato che iniziano can !l di ESCAPE. .I1 campo 'fJ::";';'
R:/M ldentifica uno 8. rcgtStrt del coprocessore. puo essere a 24 .
bit, a. secanda. della dimenslone della scostamento, per Ie IstruzlOm de fanno rtfenmento,..
alla bit queUe. de sui registri del coprocessore. Per
tao CPU, se il codice di lStrUZlone contlene ESC, I'lstruzlOne non ha effetto - e come se si
trattasse dell'istruzione di NOP - salvo iJ fatto che, per le istruzioni che fanno riferimento
la .CPU una lettura nell'istruzione stessa.
1 mottvl illustratl nel segwto
,
questa lettura Vlene denommata dummy read. '..:.::,;",;.):q '
. .
.'
.'
,,1.,+;,.11(.
In FiguraB.25 vieno. mostrato ilprincipio generalesu cui si
(alcum llllportantl aspettl delJ!mterazlOoe vengono descnttl poco plU avantl). .
"C3lW'
Se la riconosce .il.c?dice ESC. non esegue. ed entra. in
il coprocessore lIllZla I'esecuzlOoe e la linea BUSY, a mdlcare
e Impegnato.
, .:
. '''\, 'i'}}jlG:'l,h.
sta l'istruzione, CPU puo procedere JO(-
lStr:wOru. purche queste non al repertorlo dl
altnmentl il coprocessore avrebbe un malfunzlonamento. , ,..
, ',', ,jill/!: .
Prima di effettuare un'altra operazione in virgola mobile, la CPU deve
we libero. A tal fine, nel repertorio 8086 e
WAIT, il cw effetto efar attendere la CPU per tutto il in CUI 11
TEST e disasserito (cioe alto). Quando, a operazione conclusa, la logica di
TEST passa allo stato basso e la CPU puo prelevare .
nuova lStruzlone NPX.
, .. .
E facile convincersi che 10 schema precedente e alquanto inefficiente. Nella
ca conviene che l'istruzione WAIT sempre Pistruzione per il coprocessore. In tal At
modo di .e:rore, .inoltre epossibile,stabilire una con.venzione
per CUI ogru codice mnemoruco di lstruzlOne per NPX puo essere automatlcamente :
tradotto dall'assemblatore 0dal compilatore nell'istruzione WAIT e nell'effettiva istru-
zione per il coprocessore. Per esempio l'istruziooe FADD vieoe traclotta nella sequenza: .
WAIT i (ESC, FADD) j dove con (ESC, FADD) si intende l'effettiva istruzione
dell'ESCAPE. Nella pratica, dunque, la sincronizzazione avviene secondo 10 schema W;1
di FiguraB.26. .
. ""W-,,;,,'" J'JNJ'
Se dovesse accadere alia CPU di eseguire il fetch di un'istruzione di NPX
questa eimpegnato, si avrebbe un malfunzionamento. Esso viene segnalato nella:.
. .. '
.;'
. '. ',/
j
,.:
590
1
\
\
I
\
I
I
I
I
I
I
I
I
,
..
-
..
..
.
..

"
.
..
..
.,
..
..
.-
-
L'architettura 8086 593
-
[
-
-
!-
,-
I-
[
\ -
1-
-
1-
,
I ..
) -
I-
]-
1
I-
)
NPX rilascia
it bus
Le. CPU
acconsente
jequivale a FNINlt (inizializzazione se 1'8087 e presente).
;mentre NFl 9i inizializza
jviene azzerata 1a variabile cv.
iFNSTCW (memorizzaz. parela di state) se 1'8087 e presente.
ESC 28,8X
XOR AX, AX
MOV ell ,AX
ESC is,ell
2. La CPU risponde generando un impulso sulla stessa linea. Si noti che tale impulso
puo manifestarsi sul clock successivo a quello della richiesta. L'impulso generato
dalla CPU ha funzione eli Grant, nel senso che esso notifica aI richiedente che il
bus edisponibile. Col consenso deUa CPU il coprocessore entra in controllo del
bus.
AlI'epoca dell'8086, in mancanza di coprocessore era gio.co forza impiegare un qualcbe
pacchetto software per l'aritmetica in virgola mobile. Per quanta tale software,potesse
essere real.izzato in vade maniere, conveniva che esso emulasse il coprocessore, in modo
da ottenere gil stessi identici risultati dai programmi applicativi, indipendentemente
dalla presenza a dall'assenza del coprocessore.
Vale la pena di osservare che nel caso della CPU 8086/88 era necessario che i
programmi fossero configurati per Ie due evenienze. La configurazione poteva essere
fatta fuoTi linea 0 at tempo di esecuzione. Per quanto si riferisce per esempio ai
compilatori
1
era normale che essi fossero configurati in modo da generate codice per
una delle due alternative (le istruzioni 8087 0 Ie chiamate alle routine di emulazione) .
Per certi programmi applicativi (per esempio: programmi per il disegno tecnico) era
normale che il primo passo dopo l'avvio fosse queUo di autoconfigurazione. A tal fine
it programma doveva rilevare se il coprocessore era presente 0 no. Riportiamo qui
sotto un tratto di codice che si sincera della presenza dell'8087, indipendentemente
dal piedino di TEST.
II programma azzera la variabile CW, trasmette il coman-do di inizializzazione al
coprocessore, fa al coprocessore la sua parola di stato in CW e la. esamina,
in modo da decidere se il coprocessore e0 no presente.
RQ/GT
NPX richiede
II bus
Figura 8.27 U protocoUo Request/Grant.
B.6.6 Emulazione del coprocessore
3. Entrato in possesso del bus il coprocessore comanda l'operazione di lettura 0 di
scrittura. n rilascio del bus da parte del coprocessore viene notificato alia CPU
attraverso un terzo impulso avente significato di rilascio.
Le temporizzazioni sono quelle di figura B.27. Nell'Appendice A viene presentato
uu progetto eli rete riguardante il protocollo RQ/GT.
,
.'" '. '. ,':t. "I". :- '

.".. .;0.' .'
:'<'It:'
:"i ..
.:,Wir:.rr,.;,.;;,l
.':.
."'-
;,' .;)..

.. ,"'l'!.;;": :::,'.:
'\,.,_.... v
',:-{ .'-
"r..
-;;>f>
.. i-'"'
",.,.,."''" ":.'.
,;..1,", 'j',
. ,..("," _'I ".
i"'l"'" ..
:.: \ /.
, " -.. , . ."

:., ..
. ' .r. - ','
_.' I"'
, ...... ' ...
'. " \:1'.1. .,.:;
, -1" >,
";'.... '
,",:,c::,;::' '-r .'
.. "
:. ;;;,
..'t- c"" .
, ,.. ,>, .',
_ '., :::'
f/. ... Yo ,.,,(.,-
, . i,.:"fr'.!f;
"1
"
.\1. .,'
.. ' :\\ .",.-'!'
.; .. ;,
'-"'llo;ii' ."-' .. . ,'",.. '

...t'li:'f}; ,
''1'' .
_ :p;;/
,.
..',! -:' ..
... ".,. , .
:i
,..,' ,'"!.,,...
..': .:..";'f.i"

, ,. ,.... rf"<:' ,.,."""
..' "'S!" ,
-.. ,.. ,"'"
.. ':'., ',' '" ,
...... ".'...., .,
\." .>< "'-#,Ii"
'".., i7."y...
,,>.i'.' ',:"I,.;.:Ar.:.\"
, .
f
, .. '\!;: ,Ir
,': ".....
',':,f"Y ,," ,'1*. ,,', ,
.,', .. ".".
, .. ;JC'
, f; .... ':'l.l"""
...,... ..,,,,,,.' ..
.. -,,'" .,...
.t.I,.J.;,'l, "','

... I
k
.
, ,,," '.' ,"'1:" .'.
'I" ".W f /}'
... : . ". "
4'.'<." .
. "(1." '!",. Co
. ,"',;I,
.......t'i
'I;"""'"
.._, "," ,.""" .. '
-i .. '. ,,>. :1'%1[i'
..'

I\>
, ,. ".", .' 'I 'I"
" .".
::!,i.'"{,"',J;. ""
" ,,",;,>""
", ,;.
'j'
>., .
..,..,":;,' ...
:<ll!,1,r.;r;':Ir;'
.--"" ""',<<'" .,' .
-"'''' .... ,'"
-,
":}. t,:i
.,... ' ..
..' ,':'
0;'
"'(
., ...
._"
;. .'. kP;>: '
r" 'r"'
': -
''''':,I,''"'''[llil,.'II1:i:";''
'1:'
' ",-.' 'fit, "
,. ,:-:., .. ,'!t';- .',
<
""'i' ". , .
.. " "1'"
:' :'y
{'." if".\I:o'l' tl
, . !'.,)':"
- ",-', .... ,"
, -",' f';.

,.,., ... ,,, rJ;'" ' ,
..
I'
.' " fr.l,i .\. , ,.,,,
, __ ,.",,,,_ J"
.
., ...,,' .'. .
" i.:, ,1K;:'
. " .'
, ,'t
,:,",,'
"
-,
, -: 1.;," '!!o' .
....",,,,.' .. ...
',f '..,.!.I""' . '.">'"
, ..... ', .
.1,%II!, "lifl'" .. ,:It ..
< ..
c "", .. '
,,1,"1"" ,. ,
&';;
- Jjj.!' '!f .,'.'
oi. i).
Istruzioni NPX che scrivono un data in memoria.
Un esempio di istruzione di questo genere e FST Numero, il cui effetto consiste
nel memorizzare in Numero il contenuto di ST. Si ha questa sequenza:
21Qui e au tutte Ie istruzioni cbe intereasa.no NPX, 180 logica. del coprocesaore preleva. anche l'indi
rizzo deU'istruzione (presente in quel momenta sui bus indirizzi). In case di malfunzionamento; la
lettura di ISP permette di prendere visione dell'indirizzo a. cui si trova l'istruzione che ha determina.to
il malfunzionamento atesso.
22Si capisce l'uso del termine dummy read.
e quello su 2 byte (FiguraB.24). In questa caso, una volta che ha prelevato
l'istruzione, il coprocessore non ha bisogno di altro per eseguirla.
Istruzioni NPX che caricano un data dalla memoria.
Un esempio di istruzione di qMesto genere eFADD Numero, dove NUJIlero eil nome
di una variabile. n suo effetto consiste nel sommare all'elemento di testa dello
stack il valore della variabile, depositando il risultatojsullo stack. nformato puo
essere su 3 0 4 byte (FiguraB.24). Si ha questa sequenza:
1. La CPU esegue il fetch dell'istruzione; NPX preleva il codice dal bus dati".
2. La CPU effettua la lettura della posizione indirizzata. In tal modo NPX pub
acquisire dal bus indirizzi l'indirizzo dell'operando e copiarselo nel registro
OP. Acquisisce inoltre dal bus dati la prima parte dell'operando (& 0 16 bit
a seconda del bus).
3. Tenuto canto che tutti i formati dei dati esc1uso uno (FiguraB.20) occupano
piu di 16 bit, il coprocessore deve normalmente entrare in p6ssesso della
parte del dato che resta. Cib puo richiedere fino a 4 ulteriori letture a 16 bit.
Dal passo precedente NPX dispone dell'indirizzo del dato, rna per.effettuare
la lettura cleve coordinarsi con la CPU che, nel frattempo, sta procedendo
con Ie istruzioni seguenti a quella aritmetica (FiguraB.26). n protocollo
RQ/GT illustratQ piu sotta serve per l'arbitraggio del bus su ogni accesso
da parte eli NPX.
1. come al punto 1 precedentej
2. come al punta 2 precedente, rna questa volta il coprocessore acquisisce solo
l'indirizzo del dato, non la parte di dato suI bus che eirrilevante
22
;
3. NPX scrive il datq in memoria, guadagnando l'accesso at bus quante volte e
necessario, tramite il protocollo RQ/GT.
Il protocollo Request/Grant n protocollo Request/Grant impiega una sola linea
sia per la richiesta che per la
n protocollo su una linea RQ/GT eil seguente.
1. n coprocess9re che intende richiedere 1'uso dei bus genera un impulso su RQ/GT
(ovvero asserisce RQ/GT per un periodo di clock).
592 Appendice B
L'architettura 8086 593
-
[
-
-
!-
,-
I-
[
\ -
1-
-
1-
,
I ..
) -
I-
]-
1
I-
)
NPX rilascia
it bus
Le. CPU
acconsente
jequivale a FNINlt (inizializzazione se 1'8087 e presente).
;mentre NFl 9i inizializza
jviene azzerata 1a variabile cv.
iFNSTCW (memorizzaz. parela di state) se 1'8087 e presente.
ESC 28,8X
XOR AX, AX
MOV ell ,AX
ESC is,ell
2. La CPU risponde generando un impulso sulla stessa linea. Si noti che tale impulso
puo manifestarsi sul clock successivo a quello della richiesta. L'impulso generato
dalla CPU ha funzione eli Grant, nel senso che esso notifica aI richiedente che il
bus edisponibile. Col consenso deUa CPU il coprocessore entra in controllo del
bus.
AlI'epoca dell'8086, in mancanza di coprocessore era gio.co forza impiegare un qualcbe
pacchetto software per l'aritmetica in virgola mobile. Per quanta tale software,potesse
essere real.izzato in vade maniere, conveniva che esso emulasse il coprocessore, in modo
da ottenere gil stessi identici risultati dai programmi applicativi, indipendentemente
dalla presenza a dall'assenza del coprocessore.
Vale la pena di osservare che nel caso della CPU 8086/88 era necessario che i
programmi fossero configurati per Ie due evenienze. La configurazione poteva essere
fatta fuoTi linea 0 at tempo di esecuzione. Per quanto si riferisce per esempio ai
compilatori
1
era normale che essi fossero configurati in modo da generate codice per
una delle due alternative (le istruzioni 8087 0 Ie chiamate alle routine di emulazione) .
Per certi programmi applicativi (per esempio: programmi per il disegno tecnico) era
normale che il primo passo dopo l'avvio fosse queUo di autoconfigurazione. A tal fine
it programma doveva rilevare se il coprocessore era presente 0 no. Riportiamo qui
sotto un tratto di codice che si sincera della presenza dell'8087, indipendentemente
dal piedino di TEST.
II programma azzera la variabile CW, trasmette il coman-do di inizializzazione al
coprocessore, fa al coprocessore la sua parola di stato in CW e la. esamina,
in modo da decidere se il coprocessore e0 no presente.
RQ/GT
NPX richiede
II bus
Figura 8.27 U protocoUo Request/Grant.
B.6.6 Emulazione del coprocessore
3. Entrato in possesso del bus il coprocessore comanda l'operazione di lettura 0 di
scrittura. n rilascio del bus da parte del coprocessore viene notificato alia CPU
attraverso un terzo impulso avente significato di rilascio.
Le temporizzazioni sono quelle di figura B.27. Nell'Appendice A viene presentato
uu progetto eli rete riguardante il protocollo RQ/GT.
,
.'" '. '. ,':t. "I". :- '

.".. .;0.' .'
:'<'It:'
:"i ..
.:,Wir:.rr,.;,.;;,l
.':.
."'-
;,' .;)..

.. ,"'l'!.;;": :::,'.:
'\,.,_.... v
',:-{ .'-
"r..
-;;>f>
.. i-'"'
",.,.,."''" ":.'.
,;..1,", 'j',
. ,..("," _'I ".
i"'l"'" ..
:.: \ /.
, " -.. , . ."

:., ..
. ' .r. - ','
_.' I"'
, ...... ' ...
'. " \:1'.1. .,.:;
, -1" >,
";'.... '
,",:,c::,;::' '-r .'
.. "
:. ;;;,
..'t- c"" .
, ,.. ,>, .',
_ '., :::'
f/. ... Yo ,.,,(.,-
, . i,.:"fr'.!f;
"1
"
.\1. .,'
.. ' :\\ .",.-'!'
.; .. ;,
'-"'llo;ii' ."-' .. . ,'",.. '

...t'li:'f}; ,
''1'' .
_ :p;;/
,.
..',! -:' ..
... ".,. , .
:i
,..,' ,'"!.,,...
..': .:..";'f.i"

, ,. ,.... rf"<:' ,.,."""
..' "'S!" ,
-.. ,.. ,"'"
.. ':'., ',' '" ,
...... ".'...., .,
\." .>< "'-#,Ii"
'".., i7."y...
,,>.i'.' ',:"I,.;.:Ar.:.\"
, .
f
, .. '\!;: ,Ir
,': ".....
',':,f"Y ,," ,'1*. ,,', ,
.,', .. ".".
, .. ;JC'
, f; .... ':'l.l"""
...,... ..,,,,,,.' ..
.. -,,'" .,...
.t.I,.J.;,'l, "','

... I
k
.
, ,,," '.' ,"'1:" .'.
'I" ".W f /}'
... : . ". "
4'.'<." .
. "(1." '!",. Co
. ,"',;I,
.......t'i
'I;"""'"
.._, "," ,.""" .. '
-i .. '. ,,>. :1'%1[i'
..'

I\>
, ,. ".", .' 'I 'I"
" .".
::!,i.'"{,"',J;. ""
" ,,",;,>""
", ,;.
'j'
>., .
..,..,":;,' ...
:<ll!,1,r.;r;':Ir;'
.--"" ""',<<'" .,' .
-"'''' .... ,'"
-,
":}. t,:i
.,... ' ..
..' ,':'
0;'
"'(
., ...
._"
;. .'. kP;>: '
r" 'r"'
': -
''''':,I,''"'''[llil,.'II1:i:";''
'1:'
' ",-.' 'fit, "
,. ,:-:., .. ,'!t';- .',
<
""'i' ". , .
.. " "1'"
:' :'y
{'." if".\I:o'l' tl
, . !'.,)':"
- ",-', .... ,"
, -",' f';.

,.,., ... ,,, rJ;'" ' ,
..
I'
.' " fr.l,i .\. , ,.,,,
, __ ,.",,,,_ J"
.
., ...,,' .'. .
" i.:, ,1K;:'
. " .'
, ,'t
,:,",,'
"
-,
, -: 1.;," '!!o' .
....",,,,.' .. ...
',f '..,.!.I""' . '.">'"
, ..... ', .
.1,%II!, "lifl'" .. ,:It ..
< ..
c "", .. '
,,1,"1"" ,. ,
&';;
- Jjj.!' '!f .,'.'
oi. i).
Istruzioni NPX che scrivono un data in memoria.
Un esempio di istruzione di questo genere e FST Numero, il cui effetto consiste
nel memorizzare in Numero il contenuto di ST. Si ha questa sequenza:
21Qui e au tutte Ie istruzioni cbe intereasa.no NPX, 180 logica. del coprocesaore preleva. anche l'indi
rizzo deU'istruzione (presente in quel momenta sui bus indirizzi). In case di malfunzionamento; la
lettura di ISP permette di prendere visione dell'indirizzo a. cui si trova l'istruzione che ha determina.to
il malfunzionamento atesso.
22Si capisce l'uso del termine dummy read.
e quello su 2 byte (FiguraB.24). In questa caso, una volta che ha prelevato
l'istruzione, il coprocessore non ha bisogno di altro per eseguirla.
Istruzioni NPX che caricano un data dalla memoria.
Un esempio di istruzione di qMesto genere eFADD Numero, dove NUJIlero eil nome
di una variabile. n suo effetto consiste nel sommare all'elemento di testa dello
stack il valore della variabile, depositando il risultatojsullo stack. nformato puo
essere su 3 0 4 byte (FiguraB.24). Si ha questa sequenza:
1. La CPU esegue il fetch dell'istruzione; NPX preleva il codice dal bus dati".
2. La CPU effettua la lettura della posizione indirizzata. In tal modo NPX pub
acquisire dal bus indirizzi l'indirizzo dell'operando e copiarselo nel registro
OP. Acquisisce inoltre dal bus dati la prima parte dell'operando (& 0 16 bit
a seconda del bus).
3. Tenuto canto che tutti i formati dei dati esc1uso uno (FiguraB.20) occupano
piu di 16 bit, il coprocessore deve normalmente entrare in p6ssesso della
parte del dato che resta. Cib puo richiedere fino a 4 ulteriori letture a 16 bit.
Dal passo precedente NPX dispone dell'indirizzo del dato, rna per.effettuare
la lettura cleve coordinarsi con la CPU che, nel frattempo, sta procedendo
con Ie istruzioni seguenti a quella aritmetica (FiguraB.26). n protocollo
RQ/GT illustratQ piu sotta serve per l'arbitraggio del bus su ogni accesso
da parte eli NPX.
1. come al punto 1 precedentej
2. come al punta 2 precedente, rna questa volta il coprocessore acquisisce solo
l'indirizzo del dato, non la parte di dato suI bus che eirrilevante
22
;
3. NPX scrive il datq in memoria, guadagnando l'accesso at bus quante volte e
necessario, tramite il protocollo RQ/GT.
Il protocollo Request/Grant n protocollo Request/Grant impiega una sola linea
sia per la richiesta che per la
n protocollo su una linea RQ/GT eil seguente.
1. n coprocess9re che intende richiedere 1'uso dei bus genera un impulso su RQ/GT
(ovvero asserisce RQ/GT per un periodo di clock).
592 Appendice B
594 Appendice B
b) in modo virtual. protetto.
a) in modo reate;
B.7.l Modello di programmazione
Ua.rchitettura. 8086 595
All'atto del reset la CPU e messa in modo reale. In questa modalita il 286 si
comporta come un 8086: 180 memoria earnpia 1 Mbyte ed esegmentata in segrnenti
di 64kbyte. Gli indirizzi vengono generati secondo 10 schema di Figura B.8. Se l'in-
dirizzamento esce in modo incontrollat,o da un segmento (wraparotind) , a differenza
dell'8086 che non forruva alcuna indicazione, 180 logica del 286 genera un'eccezione
(exception)" .
In modo protetto
24
180 CPU gestisce uno spazio di indirizzi virtuali ampio 1 Gbyte,
mappabile in 16 Mbyte di memoria isica. La memoria virtuale si basa sulla segmen-
tazione. n sistema di gestione della memoria virtua1e presenta caratteristiche uniche
e ha influenzato tutti i modelli di CPU successivi al 286 (386, 486, Pentium, ... ). Oi
esso si parla al capitola espressamente dedicato alla memoria virtuale. La parte che
segue ededicata a illustrare Ie altre differenze rispetto all'8086.
Attorno at 286 venne costruito il PCI AT rna, sia in questa macchina sia in altre,
il 286 estato usato essenzialmente solo come un 8086 piu potente.
TS Indica cbe c'. stato un Task Switch. In presenza di TS asserito, la prossima
istruzione eseguita dal coprocessore determina una eccezione, a seguito della quale
i1 software pub stabilire se il contesto del coprocessore e0 nOll equeUo del task
in esecuzione
26
.
23Si veda la parte dedica.ta.. a.lIe eccezioni nel ca.pitolo relativo alIa protezione.
24Nella terminologia Intel modo protdto e il modo di funzionamento con gestione della memoria
virtuale e can Ia. relativa. tecnica di protezione the di essa e parte insdndibile. Non c'e un modo
virtuale non protetto, ne tantomeno un modo protetto senza la. gestione della memoria. virtua.le.
2sSi noti che con questa accorgimento un programma. che fa \ISO del coprocessore non richiede
ricompilazione se viene eseguito su di un 286. Infatti, tutto cia che serve in assenza. del coprocessore
il programma di emulazione agga.nciato all'eccezione di cui si sta parlando. Tale possibiliU, era
naturalmente esclusa. nell'8086, dove era necessario che i programmi avessero testi diversi a seconda
del fatto che fosse 0 no presente iI coprocessore.
26
11 contesto del coprocessore Don viene infatti modificato da un'operazione di commutazione di
processl.
EM Quando questa bit ...serito, il riconoscimento del prefisso ESC (davanti a
un'istruzione per il coprocessore aritmetico) genera Peccezione numero 7. Oib
permette di passare a una eventuale routine che emula il coprocessore
25
.
MP In mancanza del coprocessore esterno, questo bit (se asserito) determina recce-
zione numero 7 (processor extension not present) sull'esecuzione di un'istruzione
di WAIT, evitando che 180 CPU resti in attesa per un tempo indefinito.
PE Quando easserito, abilita il fUDzionamento in modo protetto.
II modella di programmazione equello dell
'
8086. La macchina presenta tuttavia un
ulteriare registro di stato detto MSW (Machine Status Word). Di MSW vengono solo
usati i 4 bit meno significativi. n loro nome e la loro funzione sono elencati qui di
seguito.
"""j' .";..'
.... ,.J. 1"'1,
1":.1' , 'if

;.. " ,'.,
I -"'l"
''';4./ "-,'"

);r.'
,.".,:'
'." ,
(!. , ,
:'"
... ,,?
\:T'".,., '
'e'\:/ ,.. .
. .... .. '
'._ . ,:.;,.,
,', ":,"'.
".'" "
.,' " :, ... /."",,,.
:'1',.,': ,
'
" t.:.:- " .. ' '.
'.' ",".
,",' '..,."
..
,.
"",1' .... :..
.,. ,,'
.',"./'\.. "n ,
, "':.. ,
....;":1';, ...., ..
'l'l' ',. \(,,'.

,',l.,l ..
, '. ., :.: ..
.. ,.'to!.."
\.;".: ;7'" "f'; " '
"""j",
.' "1, ,. 'f" ,"'.1. .,
"
:(
': i':.; ....
'",;tV,,): ','
....j,. ''', .
'. ..'
' .... ... J, ..
r '
'. '.1":;'. ,...:....

IJt' ....
....
..
.';!'''I
'
(', .,..
'. . , I'
"',,',;11, ...
.'1J.11' 1>1-'
.. ' ..;
"')
".',',.;,,,. ,1'-.'.

"','1,
" /. .. ''I', J :
",' ',. "
"1"" '", '
\':}", it:"," '"

:'-""'.::.
"",.i
h
":,, I",
".",,\... ,.. ' ..
\' t"
',", ",-.'
'; .\ (10'1\

' .l;.....
"'''''', ....
.
<:.0-',
":'<: '.,<--
".,1':" .
, ; ,ii ...

, :., t....1
:Pm"
,.", .. -",,"
'.' .,.,p. ,.... ..
.:. L,,,,, .. ....
1lI't"1] ,-k..
,..""j' ,Ii";'
..'.... 'j'-"
;, .. !
,"" ,\.,'! )'11';\'.'
J.
.... ,r p,' './\1" '
, ,.' "". " ...\. ,
,
.l-".' ..If.'"
',c r;: '!.::.
-,r. ,
..,,"".,;' ," .,\::-
'," "',. '@' ." . ':::.
" . . __:1'"'-
'.'-.. ".
, ';: ,.... -;[.1,--..
...,
",.. . ""
( ,'" .
''',.', . ""
..'. .'
, .:" .
., ", .' ... -,
" " I ;,'l>."...
. .
- .....".:
'" .... '''''''
..'.,
.. t',.. " f,r......;:
"'" ': .""",
-- ',,',,""''-'' "lr1t
,I. -,,'.'k:'..,.: . :",
";>';1Ip "."
."" .., ..
'.-"".,;'
, .' '.' '1ll:
"','" :'ik_.
'I- " ... ..... -- "-
.""," 'i:.'
, ',' ' . .,;1'
'-"" ..

. .: 'K;: ,
.."\
;""-i'"
"-",


,-: ..
:' ,'::: ,'. I>
( .1, ..
, ":'" ,.",.
" I
'
'll', .!. :':
.' Jj;"'l'-., .u,
:., "', ,1".'
.';. ,.elf
"', ,
'., /O l]
','2,"J
....
jew contiene 03FFH S8 1'8087.8 presente.
;salta se 1'8087 non Q presente.
OR AJ.. cw
JZ no 8087
B.7 II microprocessore 80286 (286)
L'80286 (per brevita normalmente designata come 286). stato introdotto nel Febbraio
1982, a poco menD di quattro anni dall'introduzione dell'8086.
n 286 ancora un processore a 16 bit [Int88]. n bus degli indirizzi a 24 bit,
per un indirizzamento massimo di 16 Mbyte. Diversamente dal1'8086, bus dati e bus
indirizzi sonG separati. Nella prima versione, 180 massima frequenza di clock era 8 MHz.
n286 estato realizzato, in tecnologia HMOS da 2 micron, su singolo chip da
68 piedini DIP, integrante circa 13.4000 transistori. ..
n Dumero medio di cicli clock per istruzione CP1 pub essere valutato pari a
6,7 [Hal93]. A 8 MHz il medio per eseguire un'istruzione I di circa 0,8 j;S,
corrispondente a un livello d.i prestazioni di circa 1,2 milioni di istruzioni per secondo
(MIPS), quasi tre volte Ie prestazioni dell'8086 a 5 MHz.
L'insieme di istruzioni I queUo del'8086, salvo atcune istruzioni in piu, Cib
asskura la compatibilita. d.i questa processore con i programmi sviluppati per 1'8086,
Obiettivo primario del progetto fu quello di espandere l'architettura di base 8086
per l'impiego in applicazioni multiutenza e multitasking. A tal line, il 286 introduce la
gestione della memoria virtuale e prevede un insieme di protocolli per l'isolamento dei
processi e per regolare 180 condivisione dei e dei dati cia parte dei processi
stessi. n 286 puo operare in due modi:
Purtroppo la configurazione dei prograrnmi ecosa complessa, infatti ai codici di
istruzione si devono sostituire Ie chiamate di subroutine, con passaggio dei parametri.
Questa fatoo non facilitava l'uso del coprocessore con 8086.
Con l'introduzione della CPU 80286 Ie case migliorarono enormemente, in quanta
la logica di questa CPU ein grade d.i catturare il cantralla nel! casa in cui venga
tentata l'esecuzione eli una istruzione per NPX se questa e nmeccanismo e
il seguente: il registro MSW del processore contiene due bit, MP (Monitor Processor)
e EM (Emulate Processor); il bit MP indica se il' coprocessore presente e il bit EM
indica se il 286 cleve emulare il funzionamento del coprocessore. Se MP=Q e EM=l,
1a CPU genera un'interruzione ogni volta in cui incontra una istruzione che inizia
con ESC. All'interruzione puo essere associata una routine me esamina l'estensione
di codice dell'istruzione ed esegue (via software) Ie operazioni corrispondenti. In tal
modo, se sui sistema epresente il pacchetto di emulazione, 180 presenzaj assenza del
coprocessore non camporta alcuna differenza a livello di programma applicativo. Un
compilatore puo infatti generare sempre 10 stesso codice: se il coprocessore epresente
Ie istruzioni Dl:1meriche vengono eseguite; se non epresente, a ogni istruzione di NPX
si genera un'interruzione che chia.ma in causa il pacchetto di emulazione.
\
\
\
I
I
I
I
I
I
I
I
I
-.
"
-
..
..

..
..
..
-.
.'
-
..
...
-
-

...
...

.
-
594 Appendice B
b) in modo virtual. protetto.
a) in modo reate;
B.7.l Modello di programmazione
Ua.rchitettura. 8086 595
All'atto del reset la CPU e messa in modo reale. In questa modalita il 286 si
comporta come un 8086: 180 memoria earnpia 1 Mbyte ed esegmentata in segrnenti
di 64kbyte. Gli indirizzi vengono generati secondo 10 schema di Figura B.8. Se l'in-
dirizzamento esce in modo incontrollat,o da un segmento (wraparotind) , a differenza
dell'8086 che non forruva alcuna indicazione, 180 logica del 286 genera un'eccezione
(exception)" .
In modo protetto
24
180 CPU gestisce uno spazio di indirizzi virtuali ampio 1 Gbyte,
mappabile in 16 Mbyte di memoria isica. La memoria virtuale si basa sulla segmen-
tazione. n sistema di gestione della memoria virtua1e presenta caratteristiche uniche
e ha influenzato tutti i modelli di CPU successivi al 286 (386, 486, Pentium, ... ). Oi
esso si parla al capitola espressamente dedicato alla memoria virtuale. La parte che
segue ededicata a illustrare Ie altre differenze rispetto all'8086.
Attorno at 286 venne costruito il PCI AT rna, sia in questa macchina sia in altre,
il 286 estato usato essenzialmente solo come un 8086 piu potente.
TS Indica cbe c'. stato un Task Switch. In presenza di TS asserito, la prossima
istruzione eseguita dal coprocessore determina una eccezione, a seguito della quale
i1 software pub stabilire se il contesto del coprocessore e0 nOll equeUo del task
in esecuzione
26
.
23Si veda la parte dedica.ta.. a.lIe eccezioni nel ca.pitolo relativo alIa protezione.
24Nella terminologia Intel modo protdto e il modo di funzionamento con gestione della memoria
virtuale e can Ia. relativa. tecnica di protezione the di essa e parte insdndibile. Non c'e un modo
virtuale non protetto, ne tantomeno un modo protetto senza la. gestione della memoria. virtua.le.
2sSi noti che con questa accorgimento un programma. che fa \ISO del coprocessore non richiede
ricompilazione se viene eseguito su di un 286. Infatti, tutto cia che serve in assenza. del coprocessore
il programma di emulazione agga.nciato all'eccezione di cui si sta parlando. Tale possibiliU, era
naturalmente esclusa. nell'8086, dove era necessario che i programmi avessero testi diversi a seconda
del fatto che fosse 0 no presente iI coprocessore.
26
11 contesto del coprocessore Don viene infatti modificato da un'operazione di commutazione di
processl.
EM Quando questa bit ...serito, il riconoscimento del prefisso ESC (davanti a
un'istruzione per il coprocessore aritmetico) genera Peccezione numero 7. Oib
permette di passare a una eventuale routine che emula il coprocessore
25
.
MP In mancanza del coprocessore esterno, questo bit (se asserito) determina recce-
zione numero 7 (processor extension not present) sull'esecuzione di un'istruzione
di WAIT, evitando che 180 CPU resti in attesa per un tempo indefinito.
PE Quando easserito, abilita il fUDzionamento in modo protetto.
II modella di programmazione equello dell
'
8086. La macchina presenta tuttavia un
ulteriare registro di stato detto MSW (Machine Status Word). Di MSW vengono solo
usati i 4 bit meno significativi. n loro nome e la loro funzione sono elencati qui di
seguito.
"""j' .";..'
.... ,.J. 1"'1,
1":.1' , 'if

;.. " ,'.,
I -"'l"
''';4./ "-,'"

);r.'
,.".,:'
'." ,
(!. , ,
:'"
... ,,?
\:T'".,., '
'e'\:/ ,.. .
. .... .. '
'._ . ,:.;,.,
,', ":,"'.
".'" "
.,' " :, ... /."",,,.
:'1',.,': ,
'
" t.:.:- " .. ' '.
'.' ",".
,",' '..,."
..
,.
"",1' .... :..
.,. ,,'
.',"./'\.. "n ,
, "':.. ,
....;":1';, ...., ..
'l'l' ',. \(,,'.

,',l.,l ..
, '. ., :.: ..
.. ,.'to!.."
\.;".: ;7'" "f'; " '
"""j",
.' "1, ,. 'f" ,"'.1. .,
"
:(
': i':.; ....
'",;tV,,): ','
....j,. ''', .
'. ..'
' .... ... J, ..
r '
'. '.1":;'. ,...:....

IJt' ....
....
..
.';!'''I
'
(', .,..
'. . , I'
"',,',;11, ...
.'1J.11' 1>1-'
.. ' ..;
"')
".',',.;,,,. ,1'-.'.

"','1,
" /. .. ''I', J :
",' ',. "
"1"" '", '
\':}", it:"," '"

:'-""'.::.
"",.i
h
":,, I",
".",,\... ,.. ' ..
\' t"
',", ",-.'
'; .\ (10'1\

' .l;.....
"'''''', ....
.
<:.0-',
":'<: '.,<--
".,1':" .
, ; ,ii ...

, :., t....1
:Pm"
,.", .. -",,"
'.' .,.,p. ,.... ..
.:. L,,,,, .. ....
1lI't"1] ,-k..
,..""j' ,Ii";'
..'.... 'j'-"
;, .. !
,"" ,\.,'! )'11';\'.'
J.
.... ,r p,' './\1" '
, ,.' "". " ...\. ,
,
.l-".' ..If.'"
',c r;: '!.::.
-,r. ,
..,,"".,;' ," .,\::-
'," "',. '@' ." . ':::.
" . . __:1'"'-
'.'-.. ".
, ';: ,.... -;[.1,--..
...,
",.. . ""
( ,'" .
''',.', . ""
..'. .'
, .:" .
., ", .' ... -,
" " I ;,'l>."...
. .
- .....".:
'" .... '''''''
..'.,
.. t',.. " f,r......;:
"'" ': .""",
-- ',,',,""''-'' "lr1t
,I. -,,'.'k:'..,.: . :",
";>';1Ip "."
."" .., ..
'.-"".,;'
, .' '.' '1ll:
"','" :'ik_.
'I- " ... ..... -- "-
.""," 'i:.'
, ',' ' . .,;1'
'-"" ..

. .: 'K;: ,
.."\
;""-i'"
"-",


,-: ..
:' ,'::: ,'. I>
( .1, ..
, ":'" ,.",.
" I
'
'll', .!. :':
.' Jj;"'l'-., .u,
:., "', ,1".'
.';. ,.elf
"', ,
'., /O l]
','2,"J
....
jew contiene 03FFH S8 1'8087.8 presente.
;salta se 1'8087 non Q presente.
OR AJ.. cw
JZ no 8087
B.7 II microprocessore 80286 (286)
L'80286 (per brevita normalmente designata come 286). stato introdotto nel Febbraio
1982, a poco menD di quattro anni dall'introduzione dell'8086.
n 286 ancora un processore a 16 bit [Int88]. n bus degli indirizzi a 24 bit,
per un indirizzamento massimo di 16 Mbyte. Diversamente dal1'8086, bus dati e bus
indirizzi sonG separati. Nella prima versione, 180 massima frequenza di clock era 8 MHz.
n286 estato realizzato, in tecnologia HMOS da 2 micron, su singolo chip da
68 piedini DIP, integrante circa 13.4000 transistori. ..
n Dumero medio di cicli clock per istruzione CP1 pub essere valutato pari a
6,7 [Hal93]. A 8 MHz il medio per eseguire un'istruzione I di circa 0,8 j;S,
corrispondente a un livello d.i prestazioni di circa 1,2 milioni di istruzioni per secondo
(MIPS), quasi tre volte Ie prestazioni dell'8086 a 5 MHz.
L'insieme di istruzioni I queUo del'8086, salvo atcune istruzioni in piu, Cib
asskura la compatibilita. d.i questa processore con i programmi sviluppati per 1'8086,
Obiettivo primario del progetto fu quello di espandere l'architettura di base 8086
per l'impiego in applicazioni multiutenza e multitasking. A tal line, il 286 introduce la
gestione della memoria virtuale e prevede un insieme di protocolli per l'isolamento dei
processi e per regolare 180 condivisione dei e dei dati cia parte dei processi
stessi. n 286 puo operare in due modi:
Purtroppo la configurazione dei prograrnmi ecosa complessa, infatti ai codici di
istruzione si devono sostituire Ie chiamate di subroutine, con passaggio dei parametri.
Questa fatoo non facilitava l'uso del coprocessore con 8086.
Con l'introduzione della CPU 80286 Ie case migliorarono enormemente, in quanta
la logica di questa CPU ein grade d.i catturare il cantralla nel! casa in cui venga
tentata l'esecuzione eli una istruzione per NPX se questa e nmeccanismo e
il seguente: il registro MSW del processore contiene due bit, MP (Monitor Processor)
e EM (Emulate Processor); il bit MP indica se il' coprocessore presente e il bit EM
indica se il 286 cleve emulare il funzionamento del coprocessore. Se MP=Q e EM=l,
1a CPU genera un'interruzione ogni volta in cui incontra una istruzione che inizia
con ESC. All'interruzione puo essere associata una routine me esamina l'estensione
di codice dell'istruzione ed esegue (via software) Ie operazioni corrispondenti. In tal
modo, se sui sistema epresente il pacchetto di emulazione, 180 presenzaj assenza del
coprocessore non camporta alcuna differenza a livello di programma applicativo. Un
compilatore puo infatti generare sempre 10 stesso codice: se il coprocessore epresente
Ie istruzioni Dl:1meriche vengono eseguite; se non epresente, a ogni istruzione di NPX
si genera un'interruzione che chia.ma in causa il pacchetto di emulazione.
\
\
\
I
I
I
I
I
I
I
I
I
-.
"
-
..
..

..
..
..
-.
.'
-
..
...
-
-

...
...

.
-
596 Appendice B
Figura B.28 La struttura funzionale del 286.
B.7.2 La struttura interna
-
-
-
I
-
\
-
\
I
-
I
I
-
1-
-
)-
-
1-
_.
)-
-
j-
\
\
597 1
L'architettura 8086
L'80386 estato introdotto nelI'Ottobre 1985, a meno di quattro anni dall'introduzione
dell'80286.
Il 386 e il primo microprocessore a 32 bit della famiglia iAPX86 [Int88], [Intg8) .
n bus degli indirizzi e a 32 bit, per un indirizzamento massimo di 4 Gbyte. Nella
versione di introduzione, la massima frequenza di clock era 16MHz.
n386 estato realizz-ato in tecnologia CHMOSrll (una variante Intel qella tecno-
logia CMOS) da 1,5 micron. Il chip integra circa 275.000 transistoriede sistemato
su un contenitore ceramico in forma di PGA (Pm Grid A!TlIY) da 132 piedini.
'.
Con riferimento a certe elaborazioni tipiche, l'Intel ha. accertato che il' n1,lmero
-
media di cicli di clock per istruzione CPI e paxi a 4,4. [AA85]. A 16 MHx, il teinpo
medio per eseguire' un'istruzione e: 4,4 11
6
jJ.S== 0,275 JJS, corrispondente a un ritmo
medio di esecuzione di circa 3,6 MIPS, almeno tre volte Ie prestazioni dell'80286 a
8MHz28.
La strutturazione a. 32 bit coinvolge tutti gli aspetti dell'architettura: i percorsi
interni, i registri, le ALU e l'interf;;u:eia. con il bus esterno. Le transazioni sul bus
esterno richiedono solo due cieli di dock; dunque a 16 MHz, il bus pub sostenere un
ritmo di tras(erimento di 32 Mbyte/s.
27La tavola contiene Ie cosiddette porte di intern.u:iont e trovani in qualunque' posizione di
memoria. Per qpesta parte si veda it capitola 8ulla memoria virtuale e sulla protezione.
211 Si Doti che, a parita di fTequenza di clock, il rapporto tra Ie prestazioni IIi riduce a poco pili di
l,S, ovvero il 386 ha un guadagno di prestazione suI 286 solo del 50%.
,
All'atto del reset, 1a logica dispone la CPU in modo reale. In modo reale, i1286 si com- .
porta come un 8086, salvo la.piu versatile gestione del coprocessore e la disponibilita. 1
di tre ulteriori interruzioni, indicate come eccezioni, che serv()no a segnalare anomalie
di funzionamento. Una di queste anomalie e10 sforamento della dimensione massirna
di un Per il 286 e dunque possibile, anche in modo reale, riconoscere e
quindi gestire possibili cause di malfunzionamento. . I
Il passaggio al modo (virtuale) protetto si ottiene semplicemente asserendo il bit
PE di MSW. A tale scopo, estata prevista l'istruzione LHSW (Load Machine Status
Word). Prima di passare ailo state protetto, e tuttavia preparare il 286
attraverso ristruzione LIDT (Load IntefTUpt Descriptor Table register), con la quale
l'apposito registro viene caricato con il descrittore della tavola delle interruzioni in
modo protetto
27
.
In modo virtuale protetto, la CPU e in grado di rilevare ulteriori anomalie di
funzionamento, cui corrisponde la generazione di eccezioni. In particolare, eprevista
un'eccezione per violazione della piotezione (la nUIDeco 13) e una per assenza in
memoria del segrnento indirizzato (la numero 11). Al verificarsi eli tali eccezioni, il
sistema operativo puo eseguire le azioni necessarie a risolver.e situazioni confiittuali e
a gestire 1a memoria virtuale.
B.8 II microprocessore 80386 (386)
B.7.3 Modo protetto
:?;
",",,;.
'. .
..
;_. '1",:'1
"".'" :\" ...
.. , ..
":>..-;.> "
..::' 'I;!
ji.
'.-r, ;.n;;o
, .
J. ,&.. ..

... ' .,.

,I' "'1'. ".. __
.. ".
--,,_ u. .
;,- \. ".
" ..
'Jot ;':'"
,,', ','.,
..r
'",1"'4
;':,.,
;..'
..'.. ",.,
,,' ;:.1'
i?y:,:
'. "., I
", '" .
""" ,
'." --,,;,
""1 " ..
,'-;,,:.;1 .',
'.' .'q
,
',(,',
",.
"" '.. ,
"',.
':";"" "'" ,IC' '0"
'., ,1\." ......
" , .. " \'1'
A1'
'.' "{.'if:
" ...
.... ::\ ,.;" .'.1' .
,,' .. ,.,1 ...."1,,
, ., .,r. ".
.;'
; l' .-1; '.':.::":
",,1- ... "1' ,':;j:,.

"",',.,:
.. ,. ",'

-;1,,',',.
,. - ''',.,
" .


'.',1' ".,'
,.-'1 t.,:' !!:.'; ''''
": ,.-.
:., )"!f;}M

.. 'j,
. -.. ....
' '''lr',
...--'" 1,:Ji.
.. " , '.
',. "cr','
'1frj.
.. ,,"", ,,,., "I"
," ""/.;:'<';'-", ';':.'
..
:'t', .. '-

...'.. '.' ."j;J
' : t!{ (,' .,.,
, , ,:,:. ill" '
' ...", -- .:. .. " if,..
: " (J:
'''\'':' \ " <.
'. ':'. '., ;l;""':'o.: I:'::'
.. ...... ","
'..' \1\".'.' ,'k;
,l;,,;-
",....., ' :/;,A
",' ..'--,"'1:)',"" }W:.
I >.. ;f:..
::'1",. ...
"," ."
" ...... ,.,., '''.''j.'
".",J,. ' .. .
... ..." , ..... "1,1"
"""'( .....,
,,,' "": .
..
,<ct;i' .;'.
.. ' " .
Y,'''.':,;, .' ;;,.
.::<, '.W,c
, , '.,< ,.:
; ".-"
..-: .. ,
J,
; .....' .,'" '-:'"
., . '"
....\: ..

',.' '.'" ,.".\.

". " 'Jil-Y"
:> Jk ..
., ':.,.,. ...
'. .. ';'
1 "w' ".
'.1..... , ..,.
,.
- .
,:;:,<;:;,: ; J"-
. ; ;" .;:." .
,., ...
"I,:.'. "
,''-' '. . ..
{""'.'" ':\Ii'

:,;,,01,' ' ".,l""
",'. .Y'"
.
"
AU
BU
I
RtGISTRl
01
L..,
GENE!l.AZlOliE
'"
lNDlR1'ZZI
BUS .u.u (16 BIT) I
BUS ImllRI-'
wmou.o B
BIT)
CODA 01
PfttrtTCH
"""' ISTR\nIONI
REGISTRl R,OISTRI DECODII"ICA
ttWI"oJWn'J:
G'''''''''
"""'
. J;
ISTRU'ZIONI
CODA Of
ALU ISTRUZlONI
I
UNtU'
f-
DI
nAGS
1-
CONTROLLO
ED
lU
.
Le istruzioni vengono precaricate da BD, che opera in modo del tutto analogo alIa
BIU dell'8086, con la differenza che ora gli indirizzi fisici vengono calcolati dalla AU
per via della tpemoria virtuale. Nella BU epresente un'unita di pre/etch con il compito
di incamerare con anticipo, nella coda lunga 6 byte, Ie prossime istruzioni da eseguire.
A tal fine, l'unita. di prefetch cleve mantenere il Program Counter corrente. Nel easo
di salto, l'indirizzo cli destinazione viene calcolato dalla AU e la coda di prefetch viene
svuotata. A valle di au opera IU, una sezione completamente dedicata alIa decodifica
delle istruzioni. E previsto che IU e EV operino in paral1elo, formando doe due starli
di una pipeline. Ovviamente, in caso di salto, deve essere svuotata anche la coda
entro la IU, contenente 3 istruzioni decodificate.
Pur mantenendo, come detto, la piena compatibilita con 1'8086, il 286 presenta una
struttura funzionale completamente rivista che, aumentandone it parallelisrno interno,
ne accresce Ie prestazioni.
La CPU 286 earticolata nelle 4 unita funzionali schematizzate in Figura B.28:
BU (Bus Unit), IU (Instruction Unit), AU (Address Unit) e EU (Execution Unit).
596 Appendice B
Figura B.28 La struttura funzionale del 286.
B.7.2 La struttura interna
-
-
-
I
-
\
-
\
I
-
I
I
-
1-
-
)-
-
1-
_.
)-
-
j-
\
\
597 1
L'architettura 8086
L'80386 estato introdotto nelI'Ottobre 1985, a meno di quattro anni dall'introduzione
dell'80286.
Il 386 e il primo microprocessore a 32 bit della famiglia iAPX86 [Int88], [Intg8) .
n bus degli indirizzi e a 32 bit, per un indirizzamento massimo di 4 Gbyte. Nella
versione di introduzione, la massima frequenza di clock era 16MHz.
n386 estato realizz-ato in tecnologia CHMOSrll (una variante Intel qella tecno-
logia CMOS) da 1,5 micron. Il chip integra circa 275.000 transistoriede sistemato
su un contenitore ceramico in forma di PGA (Pm Grid A!TlIY) da 132 piedini.
'.
Con riferimento a certe elaborazioni tipiche, l'Intel ha. accertato che il' n1,lmero
-
media di cicli di clock per istruzione CPI e paxi a 4,4. [AA85]. A 16 MHx, il teinpo
medio per eseguire' un'istruzione e: 4,4 11
6
jJ.S== 0,275 JJS, corrispondente a un ritmo
medio di esecuzione di circa 3,6 MIPS, almeno tre volte Ie prestazioni dell'80286 a
8MHz28.
La strutturazione a. 32 bit coinvolge tutti gli aspetti dell'architettura: i percorsi
interni, i registri, le ALU e l'interf;;u:eia. con il bus esterno. Le transazioni sul bus
esterno richiedono solo due cieli di dock; dunque a 16 MHz, il bus pub sostenere un
ritmo di tras(erimento di 32 Mbyte/s.
27La tavola contiene Ie cosiddette porte di intern.u:iont e trovani in qualunque' posizione di
memoria. Per qpesta parte si veda it capitola 8ulla memoria virtuale e sulla protezione.
211 Si Doti che, a parita di fTequenza di clock, il rapporto tra Ie prestazioni IIi riduce a poco pili di
l,S, ovvero il 386 ha un guadagno di prestazione suI 286 solo del 50%.
,
All'atto del reset, 1a logica dispone la CPU in modo reale. In modo reale, i1286 si com- .
porta come un 8086, salvo la.piu versatile gestione del coprocessore e la disponibilita. 1
di tre ulteriori interruzioni, indicate come eccezioni, che serv()no a segnalare anomalie
di funzionamento. Una di queste anomalie e10 sforamento della dimensione massirna
di un Per il 286 e dunque possibile, anche in modo reale, riconoscere e
quindi gestire possibili cause di malfunzionamento. . I
Il passaggio al modo (virtuale) protetto si ottiene semplicemente asserendo il bit
PE di MSW. A tale scopo, estata prevista l'istruzione LHSW (Load Machine Status
Word). Prima di passare ailo state protetto, e tuttavia preparare il 286
attraverso ristruzione LIDT (Load IntefTUpt Descriptor Table register), con la quale
l'apposito registro viene caricato con il descrittore della tavola delle interruzioni in
modo protetto
27
.
In modo virtuale protetto, la CPU e in grado di rilevare ulteriori anomalie di
funzionamento, cui corrisponde la generazione di eccezioni. In particolare, eprevista
un'eccezione per violazione della piotezione (la nUIDeco 13) e una per assenza in
memoria del segrnento indirizzato (la numero 11). Al verificarsi eli tali eccezioni, il
sistema operativo puo eseguire le azioni necessarie a risolver.e situazioni confiittuali e
a gestire 1a memoria virtuale.
B.8 II microprocessore 80386 (386)
B.7.3 Modo protetto
:?;
",",,;.
'. .
..
;_. '1",:'1
"".'" :\" ...
.. , ..
":>..-;.> "
..::' 'I;!
ji.
'.-r, ;.n;;o
, .
J. ,&.. ..

... ' .,.

,I' "'1'. ".. __
.. ".
--,,_ u. .
;,- \. ".
" ..
'Jot ;':'"
,,', ','.,
..r
'",1"'4
;':,.,
;..'
..'.. ",.,
,,' ;:.1'
i?y:,:
'. "., I
", '" .
""" ,
'." --,,;,
""1 " ..
,'-;,,:.;1 .',
'.' .'q
,
',(,',
",.
"" '.. ,
"',.
':";"" "'"
,IC' '0"
'., ,1\." ......
" , .. " \'1'
A1'
'.' "{.'if:
" ...
.... ::\ ,.;" .'.1' .
,,' .. ,.,1 ...."1,,
, ., .,r. ".
.;'
; l' .-1; '.':.::":
",,1- ... "1' ,':;j:,.

"",',.,:
.. ,. ",'

-;1,,',',.
,. - ''',.,
" .


'.',1' ".,'
,.-'1 t.,:' !!:.'; ''''
": ,.-.
:., )"!f;}M

.. 'j,
. -.. ....
' '''lr',
...--'" 1,:Ji.
.. "
, '.
',. "cr','
'1frj.
.. ,,"", ,,,., "I"
," ""/.;:'<';'-", ';':.'
..
:'t', .. '-

...'.. '.' ."j;J
' : t!{ (,' .,.,
, , ,:,:. ill" '
' ...", -- .:. .. " if,..
: " (J:
'''\'':' \ " <.
'. ':'. '., ;l;""':'o.: I:'::'
.. ...... ","
'..' \1\".'.' ,'k;
,l;,,;-
",....., ' :/;,A
",' ..'--,"'1:)',"" }W:.
I >.. ;f:..
::'1",. ...
"," ."
" ...... ,.,., '''.''j.'
".",J,. ' .. .
... ..." , ..... "1,1"
"""'( .....,
,,,' "": .
..
,<ct;i' .;'.
.. ' " .
Y,'''.':,;, .' ;;,.
.::<, '.W,c
, , '.,< ,.:
; ".-"
..-: .. ,
J,
; .....' .,'" '-:'"
., . '"
....\: ..

',.' '.'" ,.".\.

". " 'Jil-Y"
:> Jk ..
., ':.,.,. ...
'. .. ';'
1 "w' ".
'.1..... , ..,.
,.
- .
,:;:,<;:;,: ; J"-
. ; ;" .;:." .
,., ...
"I,:.'. "
,''-' '. . ..
{""'.'" ':\Ii'

:,;,,01,' ' ".,l""
",'. .Y'"
.
"
AU
BU
I
RtGISTRl
01
L..,
GENE!l.AZlOliE
'"
lNDlR1'ZZI
BUS .u.u (16 BIT)
I
BUS ImllRI-'
wmou.o B
BIT)
CODA 01
PfttrtTCH
"""' ISTR\nIONI
REGISTRl
R,OISTRI DECODII"ICA
ttWI"oJWn'J:
G'''''''''
"""'
. J;
ISTRU'ZIONI
CODA Of
ALU
ISTRUZlONI
I
UNtU'
f-
DI
nAGS
1-
CONTROLLO
ED
lU
.
Le istruzioni vengono precaricate da BD, che opera in modo del tutto analogo alIa
BIU dell'8086, con la differenza che ora gli indirizzi fisici vengono calcolati dalla AU
per via della tpemoria virtuale. Nella BU epresente un'unita di pre/etch con il compito
di incamerare con anticipo, nella coda lunga 6 byte, Ie prossime istruzioni da eseguire.
A tal fine, l'unita. di prefetch cleve mantenere il Program Counter corrente. Nel easo
di salto, l'indirizzo cli destinazione viene calcolato dalla AU e la coda di prefetch viene
svuotata. A valle di au opera IU, una sezione completamente dedicata alIa decodifica
delle istruzioni. E previsto che IU e EV operino in paral1elo, formando doe due starli
di una pipeline. Ovviamente, in caso di salto, deve essere svuotata anche la coda
entro la IU, contenente 3 istruzioni decodificate.
Pur mantenendo, come detto, la piena compatibilita con 1'8086, il 286 presenta una
struttura funzionale completamente rivista che, aumentandone it parallelisrno interno,
ne accresce Ie prestazioni.
La CPU 286 earticolata nelle 4 unita funzionali schematizzate in Figura B.28:
BU (Bus Unit), IU (Instruction Unit), AU (Address Unit) e EU (Execution Unit).
.. \

-- I
--
..


-- I

I
--
-- I
r-
..
-- I
-
.- \
-
,
-- \
-
698 Appendice B
a) il modo reale 8086;
ED.
ESP
ESP
ES1
le-BIT :32-81'1'
AX EAX
OX I!;OX
ex EC::<
ax EBX
CS
55
DS
ES
FS
as
23
..
AM AL
DH
DL
CM CL
aH aL
ap
S,
Dl
SP
30 AII'a.tto della. messa. 5Otto tensione (0 a.1 reset) la CPU eotra. in modo reale 8086. Come nel caso
del 286, iI passaggio at modo virtuale protetto si ottiene portando PE a 1 (Cir. B.7.3).
31Ci sono delle condizioni di dettaglio da. rispettare, la cui spiega.zione richiederebbe eccessivo
spazio, senza aggiungere molto alia. comprensione del fenOl;neno. La commutazione aHa modalita
virtuale 8086 epure possibile a- chiusura di un'interruzione. Si rima.nda. aI ma.nuale del costruttore.
0
[ J
L'architettura 8086 599
REC-IS'1'RI DI STATO : DJ CONTROLLO
REG1S'1'RI DI SEC-MENTO
:R.EGISTRI DI usc GENERALE
II passaggio al modo virtuale 8086 epossibile solo dal modo virtuale protetto
30
II
passaggio al modo virtuale si ottiene portando a 1 il flag VM (nuova aggiunta). Cib
accade nella cammutazione tra task (si veda il Capitolo 9), attuata dalle istruzioni
CALL, JMP 0 !RET", II ritorno dallo stato virtuale 8086 allo stato protetto e pos
sibi1e solo attraverso un'interruzione a eccezione che determini una commutazione di
task tale da riportare VM a 0,
Figura B.29 II modeno di programmazione del 386. I registri hanno la stessa denomina-
zione dei corrispondenti registri dell'8086, ma sana preceduti da una E, a indicare "Esteso
a 32 hit". 1 registri di segmento sono diventati 6. La figura DOD mostra i registri per Ie
operazioni in virgola mobile. Inoltre, a partite dal Pentium MMX, e presente un ulteriore
insieme di registri e un insieme di istruzioni per migliorare Ie prestazioni nelle applicazioni
multimediali .
b) il modo virtuale 8086,
estensioni riguardano la. possibilita. di usa.re i registri a 32 bit 0 alcune istruzioni a.ggiunte
a. partire dal Pentium Pro.
In modo reale 8086 il processore si comporta, a parte alcune estensioni
29
, come
un 8086 ed epercib in gracio eli eseguire praticamente tutti i programmi scritti per
quest'ultimo.
In modo virtuale protetto, 1a CPU pub essere portata in modalita. virtuale 8086.
Sirnilmente alia precedente, questa modalita riproduce (salvo Ie estensioni)'l'ambiente
8086, con la dillerema che i programmi 8086 operano come task indipendenti. Questo
permette da un lata di avere un sistema multitasking in cui ogni processo esegue un
programma 8086, dall'altro di far funzionare questi programmi in modalit{i. protetta,
con tutti i vantaggi che da essa conseguono. E possibile per esempio utilizzare la
paginazione, consentenda cosl la mappatura dei programmi 8086, che at massimo
possono raggiungere iI megabyte, sulPintero spazio di memoria fisica disponibile.
B.8.l Emulazione 8086
n386, come tutti i modelli eli CPU che seguiranno, due modi distinti per permettere
1'esecuzione di programmi compilati per 8086: .
-
'j\j""!
, - "- ,", ,"..
,- ;)Sll.tl 1
1


""," .iil . ',"
'," i') ,
; ....
. ,"
.AI " ,.'
'..'.1.1"
, :.o;."'i'" '\.
- "
" :;.... ;

Con l'aggiunta della. paginazione, il 386 migliora 10 schema di gestione della
del 286. La CPU arri:,a a ges:ire ,una memoria fisica. di 4 Gbyte _
e una virtuale di 64 Tbyte. n madelia di memona vlrtuale del 386 epassato senza
successi,vi (486,. Pentium, Tale modella viene _
ana.l.izzato m dedicate alia V1:tuale. . . .' ..:..
D 386 e compatlbile (verso 11 basso) con 1 precedentl memhn della falmgha
iAPX86. In modo reale esso corri$ponde 31 un 8086 potenziato. A differenza dei ;
modelli successivi, il386 non integra un coprocessore matematko ne una cache inter-
na, anche tra gli integrati eli corredo era previsto un dispositivo per la gestione di fl;f,_,
una memona cache esterna. , .
D passaggio a un'architettura a 32 bit e 13 paginazione rappresentano Ie innova-
zioni piu significative del 386. L'architettura del 386 prevede, inoltre, alcuni accorgi- ...
ment.i per Ie In la funzionale del '.
eartlcolata ill 6 Unlta logtche orgamzzate In una sorta dl plpehne. Alcune funzlOlll fltf.l.'.
vengono in logica (m.oltiplicazione!divisione; un barrel shi(-
ter a 64 bIt per Ie operazlow eli shift, 13 lOglca del TLB ill appogglO alia memona ,:'::-)t;< it},!':"
virtuale) , In eli pili alte ha imposto il parziale ab- _
b.andono .delia a cablata. Questa tendenza ....
SI e'Ultenormente rafforzata con 1modelli succeSSlVI.
. Dmodelio eli del ,386 eriportato in Figura B.29. A p.arte
,secondane, questa modelia e a tutte Ie CPU, dal 38.6 10 avanti, e -
pub qwneli essere preso come modello di rifenmento della corrente architettura Intel. J
, ., " "'.,.'."
, ,./
.-",,- "",: 1,"-\.'
"" J.. ,'
" "'1,:;' (I", ':I,-j,
.. <II
: . , ",
..,1' .. .
. ;, ..
-". 'II.,;,""".,
" , "_ "
.... ';':;.:r,"!,'. '1. <',
.. .', .'" '."
.. ...', -,. \' I ." '-""',' '
.' r
_ .'., .0;' \'1. .i.t'li!:."
,', .. _,:.1_,
.-' '.-,,' .'" 'II!':""
.' '" "'., .' '
,,>,,',!<' '","
. ',.",,,,,,

;<e;:\;".L
'w
,..,\:1'1, ..
'.,-:("";"
','1 .... . ""
'. j.', ,.,.,
-'iI. .
, ,. I'" ','"Ii'"
""..
,0(:; ...... , _,1.'

.. .
- \'"'... "!i .
,: ,':,7'::';' :m;.
'. ,".','
-:.,
,..",'.....,. "ffi'
',tr',i,-P",,:, !\
"..h., \ 01:' t
:.::,,.:' J,: :,:W,
.. ",
,:' \:" . l'J,'
""""'1" ..
,.,,'. -, ..
t . ;.:l;t i.!Ti,'.
: ,1;.1',
, ,.... l' 'il':"
'''','
','1.,,',,"
"'i;.","\' " "".
;,. \.,,-f ':. '.'
, .-" tL:i:
- .':", , .
. ''t ...
- .... " ..
, ,> .,'
, ',.,-... ,'",,1
-' '- "...:" .. ' ',.
..,. '11:' '
,.-,," _., " .
.' .., ;"', I .'
. ,!.t.',,' (J,'
,.,. '''1, '
.' '" f .
11'
" , 1"
'. .,."
. " ,
-'("00:' (. , "I'
. '''' t '
>!<., "
..
I
I
-
- ,
. .
., .
.-
--
..
.. \

-- I
--
..


-- I

I
--
-- I
r-
..
-- I
-
.- \
-
,
-- \
-
698 Appendice B
a) il modo reale 8086;
ED.
ESP
ESP
ES1
le-BIT :32-81'1'
AX EAX
OX I!;OX
ex EC::<
ax EBX
CS
55
DS
ES
FS
as
23
..
AM AL
DH
DL
CM CL
aH aL
ap
S,
Dl
SP
30 AII'a.tto della. messa. 5Otto tensione (0 a.1 reset) la CPU eotra. in modo reale 8086. Come nel caso
del 286, iI passaggio at modo virtuale protetto si ottiene portando PE a 1 (Cir. B.7.3).
31Ci sono delle condizioni di dettaglio da. rispettare, la cui spiega.zione richiederebbe eccessivo
spazio, senza aggiungere molto alia. comprensione del fenOl;neno. La commutazione aHa modalita
virtuale 8086 epure possibile a- chiusura di un'interruzione. Si rima.nda. aI ma.nuale del costruttore.
0
[ J
L'architettura 8086 599
REC-IS'1'RI DI STATO : DJ CONTROLLO
REG1S'1'RI DI SEC-MENTO
:R.EGISTRI DI usc GENERALE
II passaggio al modo virtuale 8086 epossibile solo dal modo virtuale protetto
30
II
passaggio al modo virtuale si ottiene portando a 1 il flag VM (nuova aggiunta). Cib
accade nella cammutazione tra task (si veda il Capitolo 9), attuata dalle istruzioni
CALL, JMP 0 !RET", II ritorno dallo stato virtuale 8086 allo stato protetto e pos
sibi1e solo attraverso un'interruzione a eccezione che determini una commutazione di
task tale da riportare VM a 0,
Figura B.29 II modeno di programmazione del 386. I registri hanno la stessa denomina-
zione dei corrispondenti registri dell'8086, ma sana preceduti da una E, a indicare "Esteso
a 32 hit". 1 registri di segmento sono diventati 6. La figura DOD mostra i registri per Ie
operazioni in virgola mobile. Inoltre, a partite dal Pentium MMX, e presente un ulteriore
insieme di registri e un insieme di istruzioni per migliorare Ie prestazioni nelle applicazioni
multimediali .
b) il modo virtuale 8086,
estensioni riguardano la. possibilita. di usa.re i registri a 32 bit 0 alcune istruzioni a.ggiunte
a. partire dal Pentium Pro.
In modo reale 8086 il processore si comporta, a parte alcune estensioni
29
, come
un 8086 ed epercib in gracio eli eseguire praticamente tutti i programmi scritti per
quest'ultimo.
In modo virtuale protetto, 1a CPU pub essere portata in modalita. virtuale 8086.
Sirnilmente alia precedente, questa modalita riproduce (salvo Ie estensioni)'l'ambiente
8086, con la dillerema che i programmi 8086 operano come task indipendenti. Questo
permette da un lata di avere un sistema multitasking in cui ogni processo esegue un
programma 8086, dall'altro di far funzionare questi programmi in modalit{i. protetta,
con tutti i vantaggi che da essa conseguono. E possibile per esempio utilizzare la
paginazione, consentenda cosl la mappatura dei programmi 8086, che at massimo
possono raggiungere iI megabyte, sulPintero spazio di memoria fisica disponibile.
B.8.l Emulazione 8086
n386, come tutti i modelli eli CPU che seguiranno, due modi distinti per permettere
1'esecuzione di programmi compilati per 8086: .
-
'j\j""!
, - "- ,", ,"..
,- ;)Sll.tl 1
1


""," .iil . ',"
'," i') ,
; ....
. ,"
.AI " ,.'
'..'.1.1"
, :.o;."'i'" '\.
- "
" :;.... ;

Con l'aggiunta della. paginazione, il 386 migliora 10 schema di gestione della
del 286. La CPU arri:,a a ges:ire ,una memoria fisica. di 4 Gbyte _
e una virtuale di 64 Tbyte. n madelia di memona vlrtuale del 386 epassato senza
successi,vi (486,. Pentium, Tale modella viene _
ana.l.izzato m dedicate alia V1:tuale. . . .' ..:..
D 386 e compatlbile (verso 11 basso) con 1 precedentl memhn della falmgha
iAPX86. In modo reale esso corri$ponde 31 un 8086 potenziato. A differenza dei ;
modelli successivi, il386 non integra un coprocessore matematko ne una cache inter-
na, anche tra gli integrati eli corredo era previsto un dispositivo per la gestione di fl;f,_,
una memona cache esterna. , .
D passaggio a un'architettura a 32 bit e 13 paginazione rappresentano Ie innova-
zioni piu significative del 386. L'architettura del 386 prevede, inoltre, alcuni accorgi- ...
ment.i per Ie In la funzionale del '.
eartlcolata ill 6 Unlta logtche orgamzzate In una sorta dl plpehne. Alcune funzlOlll fltf.l.'.
vengono in logica (m.oltiplicazione!divisione; un barrel shi(-
ter a 64 bIt per Ie operazlow eli shift, 13 lOglca del TLB ill appogglO alia memona ,:'::-)t;< it},!':"
virtuale) , In eli pili alte ha imposto il parziale ab- _
b.andono .delia a cablata. Questa tendenza ....
SI e'Ultenormente rafforzata con 1modelli succeSSlVI.
. Dmodelio eli del ,386 eriportato in Figura B.29. A p.arte
,secondane, questa modelia e a tutte Ie CPU, dal 38.6 10 avanti, e -
pub qwneli essere preso come modello di rifenmento della corrente architettura Intel. J
, ., " "'.,.'."
, ,./
.-",,- "",: 1,"-\.'
"" J.. ,'
" "'1,:;' (I", ':I,-j,
.. <II
: . , ",
..,1' .. .
. ;, ..
-". 'II.,;,""".,
" , "_ "
.... ';':;.:r,"!,'. '1. <',
.. .', .'" '."
.. ...', -,. \' I ." '-""',' '
.' r
_ .'., .0;' \'1. .i.t'li!:."
,', .. _,:.1_,
.-' '.-,,' .'" 'II!':""
.' '" "'., .' '
,,>,,',!<' '","
. ',.",,,,,,

;<e;:\;".L
'w
,..,\:1'1, ..
'.,-:("";"
','1 .... . ""
'. j.', ,.,.,
-'iI. .
, ,. I'" ','"Ii'"
""..
,0(:; ...... , _,1.'

.. .
- \'"'... "!i .
,: ,':,7'::';' :m;.
'. ,".','
-:.,
,..",'.....,. "ffi'
',tr',i,-P",,:, !\
"..h., \ 01:' t
:.::,,.:' J,: :,:W,
.. ",
,:' \:" . l'J,'
""""'1" ..
,.,,'. -, ..
t . ;.:l;t i.!Ti,'.
: ,1;.1',
, ,.... l' 'il':"
'''','
','1.,,',,"
"'i;.","\' " "".
;,. \.,,-f ':. '.'
, .-" tL:i:
- .':", , .
. ''t ...
- .... " ..
, ,> .,'
, ',.,-... ,'",,1
-' '- "...:" .. ' ',.
..,. '11:' '
,.-,," _., " .
.' .., ;"', I .'
. ,!.t.',,' (J,'
,.,. '''1, '
.' '" f .
11'
" , 1"
'. .,."
. " ,
-'("00:' (. , "I'
. '''' t '
>!<., "
..
I
I
-
- ,
. .
., .
.-
--
..
La sua dimensione (8 kbyte) e dovuta. at limiti tecnologici imposti dal protesso di
fabbricazione dei transistors CMOS da 1 micron. Gli altri parametri invece sono
finalizzati a massimizzarne Pefficienza. La cache eassociativa a quattro vie e viene
gestita tramite un a1goritmo (pseudo) LRU. La dimensione della linea, ottimizzata
mediante la simulazione [Cra90], efissata a 32 byte.
Per mantenere la compatibilita software con i modelli precedenti, che non preve7
dono alcuna istruzione per il contrello della cache (come Ie istruzioni di svuotamento),

1-
_.
_.
L.
I
-
-
1-
I
1-'
--
1-

1-
-
1-
)-.
1-
l-
1-
)--
1-.
32Si Caccia riferimento a Quanta detto al Capitolo 7.
33Si noti che Questa tecnica non euna esclusiva origina.le Intel rna, all'epoca, si etrattato di una
novita per il settore dei Personal Computer.
quest'ultima eresa trasparente al software, ossia coerente con la RAM, attraverso la
tecnica di snooping32 combinata colla scrittura immediata (write-trough).
La snooping eun meccanismo di monitoraggio del bus indirizzi durante la scrit-
tura in memoria da,parte di un dispositivo diverse cial microprocessore: un piedino di
ingresso di quest'ultimo viene asserito dal dispositivo esterno che pilota il bus indirizzi
e, quando viene indirizzata un'area di memoria appartenente alIa cache, la logica del
microprocessore genera un ciclo di invalidazione della linea corrispondente.
n write-through eun protocollo di scrittura in memoria, cbe potenzialmente co-
stituisce un elemento di degradazione delle prestazioni. Infatti, mentre Ia scrittura in
una cella della cache richiede un solo cielo di clock, la scrittura in una cella della RAM
necessita, in genere, di rnolti cicli di clock; 1a tecnica write-through comporterebbe
quindi l'inserimento di cicli di attesa per ogni cicIo di scrittura. Per ovviate a questo
inconveniente, la scrittura in memoria avviene in modo difIerito, grazie all'impiego di
una coda di quattro posizioni (write buffer): se una scrittura richiede 3 cicli di clock,
si possono 5 scritture consecutive prima di trovarsi in una situazione di
attesa (la prima scrittura viene completata prima che la coda sia piena, permettendo
una quinta scrittura).
L'aumento della frequenza di un microprocessore ne incrementa Ie prestazioni, rna
comporta seri problemi realizzativi, legati principalmente alia generazione di armo-
niche multiple della fondamentale. A 50 MHz, per esempio, Ie piste di rame della
scheda madre si comportano da antenne, che trasmettono e ricevono radiofrequenze,
creando al progettista e al fabbricante problemi di know-how tecnologico (topologia
delle piste, qualita dei componenti, schermatura ecc.) e di costo_
Per far rronte a tali problemi, dopo la prima generazione di CPU 80486, de-
nominata DX, il costruttore ha introdotto una seconda generazione, denominata
DX2, con una frequenza interna doppia di quella esterna" - 25(50 MHz, 33(66MHz,
50!lOOMHz - e successivamente una terza gene'razione, denominata DX4, con una
frequenza interna tripla di quella esterna.
I vantaggi sono evidenti: poiche i costi relativi alla moclifica delle piastre e.degli
integrati sono limitati, i costruttori di Personal Computer pOSSODO proporre macchine
dalle prestazioni (teoricamente) raddoppiate a prezzi di poco superiori.
Evidentemente una CPU con clock dimezzato non potra mai avere Ie
prestazioni di un micre con clock esterno uguale a queUo interno: infatti la prima
richiede il doppio del tempo per le transazioni suI bus esterno. Tuttavia, la presenza
della cache interna rende minima la differenza di prestazioni .
Con i1 486 l'Intel ha differenziato 1a frequenza esterna da quella interna, Tale
differenziazione ediventata praticamente obbligatoria nel seguito. Basti pe1l!lare che
alia fine del millennio erano gia sui mercato CPU operanti a frequenze (interne) di
oltre 700 MHz.
B.9.2 L'evoluzione verso frequenze piu elevate
L'architettura 8086 601
80486 (486)

mlCrOprOcessore
B. 9.1 La cache interna
B.9 II
600 Appendice B
.
- ,",,:
""7.li< \ \.
:',h':il' "',::' .
")j;<'" ,
.:\.\.'iljicllO' '!' ,,,
. ,i-
, ,.<.. .
, . ... t.

.," "! ....
,:." ",;,
'"'(;''''10''' "
''''''':,!.;,."""
". . .->t- .-:'<'<.,
,. :.!Ih
"'''''',:'
,:'
, ""'H' ("
__ t.,,: _.
:: ',"<r..'f: .
" ;

\:, ..
V80486 estato introdotto nell
l
Agosto 1989, ancora una volta a poco meno di quattro " ;:t
anni dall'introduzione del precedente membro della famigli. iAPX86 (il 386). ..::,..',c:UJ':.
n 486 e un processore a 32 bit. A parita di frequenza, Ie prestazioni del 486
sana superiori 2 0 3 volte (a seconda del tipo di aIle .
386. Nella vemone DX2 a 66MHz (Cfr. B.9.2) Ie prestazlOllI del 486 ragglUngono I iti.
54 MIPS. Nella versione di introduzione, la massima frequenza di clock era 25 MHz. ..<;,;t,]
',' ',_', 01"
II 486 estato realizzato in tecnologia CMOS da 1 micron. n chip integra circa
1,2 milioni di transistori ed esistemato in un PGA (Pin Grid Array) da 168 piedini.
, , . ,.... .',. J
n significativo incremento del numero di transistori ha costituito il punto di ..
partenza pe: i1 di prestazioni ,486 e.il primo
della famlgba 80x86 che mtegra sullo stesso ChIp l'uruta per 11 ca1colo In vlrgola ".'.:.(t:
mobile (FPU) e una memoria cache (detta onchip cache) di 8 kbyte. , ,,(i01J; V7;"
Al fine di portare il microprocessore a eseguire un'istruzione in un solo cido di .:' :;'t.'j:t.!':
clock [SW89], [CragO], estata poi introdotta un'efIettiva pipeline articolata in
stadi, Prefetch (PF), DecodiJica (Dl), Generazione dell'indirizzo (D2), Esecuzione .
(EX) e Write Back (WB). La realizzazione della pipeline ha richiesto il superamento
di non pochi probleM; infatti, l'esecuzione in pipeline richiederebbe un set di istru
zioni semplice, I'esatto contrario di quanto offerto dall'architettura 8086, concepita ..
nell 'epoca in cui i progettisti lacevano ampio ricorso alIa microprogrammazione.. La
decodifica delle lstruzlODl, che nelle macchme RlSC nchiede uno e talvolta mezzo clclo "..
di clock, nella pipeline del 486 porta via ben due cicli di clock. 'Ii
:-. ,,"..... 1'\'1'
II 486 eovviamente compatibile, dal punta di vista software, con i modelli '
precedenti. La compatibilita. software ha influenzato la maggior parte delle decisioni I::',
prese fa.:'e progetto del 486. Per quanto si. riferisce l'.ottenimento ?,i
prestazlOlll plU elevate alla stessa frequenza di clock e la preVISlone dt frequenze pm ;',
elevate per il futuro, ha imposto un bus esterno notevolmente diverso cia queUo del
386. "i<';". 1-.'
-'., .. 1'\"
La gestione della memoria, identica a quella del 386, viene illustrata nel t t:::.
dedicato alIa memoria virtuale. La gestione della cache viene illustrata nel capitolo de
dicato all.a meI:?0ria cache, rnentre qui di seguito vengono svolte alcune considerazioni "
suJ suo dimenslonamento. ' {\':-';'X" $';.
".,., ,'..,. '1'
,:".>.. ,;;".:"
, ..., l'i"
:.,
" -.: ! ..
""-.1/::
,
'", ,};,'.
. , '-.1':i.,..... l \ .
.': .:"., ""
.. ",'..;/::",.:
" ,,,"r' __ .. ,. ,j ..
-," .... , ,;i;--
",":"!.!-;'-'; ,.'
..
. . ."
, >...... ....
,
" .' ' ..',., ,
- ;g."
, ' "}''','' , . .
." '. .. II'
.. -,' ,. :t' "
.' ,,''':,',<.'>->-: ,:
", '.".-.", ,,'<.'v'

'" ..
:,;:t,\
,
,:;(..';':',. .
. ' . . I,'
,..j!-I:; ,'"
,
;t ,i" (
"'. ;;i,.,"" Ifl, ,
La sua dimensione (8 kbyte) e dovuta. at limiti tecnologici imposti dal protesso di
fabbricazione dei transistors CMOS da 1 micron. Gli altri parametri invece sono
finalizzati a massimizzarne Pefficienza. La cache eassociativa a quattro vie e viene
gestita tramite un a1goritmo (pseudo) LRU. La dimensione della linea, ottimizzata
mediante la simulazione [Cra90], efissata a 32 byte.
Per mantenere la compatibilita software con i modelli precedenti, che non preve7
dono alcuna istruzione per il contrello della cache (come Ie istruzioni di svuotamento),

1-
_.
_.
L.
I
-
-
1-
I
1-'
--
1-

1-
-
1-
)-.
1-
l-
1-
)--
1-.
32Si Caccia riferimento a Quanta detto al Capitolo 7.
33Si noti che Questa tecnica non euna esclusiva origina.le Intel rna, all'epoca, si etrattato di una
novita per il settore dei Personal Computer.
quest'ultima eresa trasparente al software, ossia coerente con la RAM, attraverso la
tecnica di snooping32 combinata colla scrittura immediata (write-trough).
La snooping eun meccanismo di monitoraggio del bus indirizzi durante la scrit-
tura in memoria da,parte di un dispositivo diverse cial microprocessore: un piedino di
ingresso di quest'ultimo viene asserito dal dispositivo esterno che pilota il bus indirizzi
e, quando viene indirizzata un'area di memoria appartenente alIa cache, la logica del
microprocessore genera un ciclo di invalidazione della linea corrispondente.
n write-through eun protocollo di scrittura in memoria, cbe potenzialmente co-
stituisce un elemento di degradazione delle prestazioni. Infatti, mentre Ia scrittura in
una cella della cache richiede un solo cielo di clock, la scrittura in una cella della RAM
necessita, in genere, di rnolti cicli di clock; 1a tecnica write-through comporterebbe
quindi l'inserimento di cicli di attesa per ogni cicIo di scrittura. Per ovviate a questo
inconveniente, la scrittura in memoria avviene in modo difIerito, grazie all'impiego di
una coda di quattro posizioni (write buffer): se una scrittura richiede 3 cicli di clock,
si possono 5 scritture consecutive prima di trovarsi in una situazione di
attesa (la prima scrittura viene completata prima che la coda sia piena, permettendo
una quinta scrittura).
L'aumento della frequenza di un microprocessore ne incrementa Ie prestazioni, rna
comporta seri problemi realizzativi, legati principalmente alia generazione di armo-
niche multiple della fondamentale. A 50 MHz, per esempio, Ie piste di rame della
scheda madre si comportano da antenne, che trasmettono e ricevono radiofrequenze,
creando al progettista e al fabbricante problemi di know-how tecnologico (topologia
delle piste, qualita dei componenti, schermatura ecc.) e di costo_
Per far rronte a tali problemi, dopo la prima generazione di CPU 80486, de-
nominata DX, il costruttore ha introdotto una seconda generazione, denominata
DX2, con una frequenza interna doppia di quella esterna" - 25(50 MHz, 33(66MHz,
50!lOOMHz - e successivamente una terza gene'razione, denominata DX4, con una
frequenza interna tripla di quella esterna.
I vantaggi sono evidenti: poiche i costi relativi alla moclifica delle piastre e.degli
integrati sono limitati, i costruttori di Personal Computer pOSSODO proporre macchine
dalle prestazioni (teoricamente) raddoppiate a prezzi di poco superiori.
Evidentemente una CPU con clock dimezzato non potra mai avere Ie
prestazioni di un micre con clock esterno uguale a queUo interno: infatti la prima
richiede il doppio del tempo per le transazioni suI bus esterno. Tuttavia, la presenza
della cache interna rende minima la differenza di prestazioni .
Con i1 486 l'Intel ha differenziato 1a frequenza esterna da quella interna, Tale
differenziazione ediventata praticamente obbligatoria nel seguito. Basti pe1l!lare che
alia fine del millennio erano gia sui mercato CPU operanti a frequenze (interne) di
oltre 700 MHz.
B.9.2 L'evoluzione verso frequenze piu elevate
L'architettura 8086 601
80486 (486)

mlCrOprOcessore
B. 9.1 La cache interna
B.9 II
600 Appendice B
.
- ,",,:
""7.li< \ \.
:',h':il' "',::' .
")j;<'" ,
.:\.\.'iljicllO' '!' ,,,
. ,i-
, ,.<.. .
, . ... t.

.," "! ....
,:." ",;,
'"'(;''''10''' "
''''''':,!.;,."""
". . .->t- .-:'<'<.,
,. :.!Ih
"'''''',:'
,:'
, ""'H' ("
__ t.,,: _.
:: ',"<r..'f: .
" ;

\:, ..
V80486 estato introdotto nell
l
Agosto 1989, ancora una volta a poco meno di quattro " ;:t
anni dall'introduzione del precedente membro della famigli. iAPX86 (il 386). ..::,..',c:UJ':.
n 486 e un processore a 32 bit. A parita di frequenza, Ie prestazioni del 486
sana superiori 2 0 3 volte (a seconda del tipo di aIle .
386. Nella vemone DX2 a 66MHz (Cfr. B.9.2) Ie prestazlOllI del 486 ragglUngono I iti.
54 MIPS. Nella versione di introduzione, la massima frequenza di clock era 25 MHz. ..<;,;t,]
',' ',_', 01"
II 486 estato realizzato in tecnologia CMOS da 1 micron. n chip integra circa
1,2 milioni di transistori ed esistemato in un PGA (Pin Grid Array) da 168 piedini.
, , . ,.... .',. J
n significativo incremento del numero di transistori ha costituito il punto di ..
partenza pe: i1 di prestazioni ,486 e.il primo
della famlgba 80x86 che mtegra sullo stesso ChIp l'uruta per 11 ca1colo In vlrgola ".'.:.(t:
mobile (FPU) e una memoria cache (detta onchip cache) di 8 kbyte. , ,,(i01J; V7;"
Al fine di portare il microprocessore a eseguire un'istruzione in un solo cido di .:' :;'t.'j:t.!':
clock [SW89], [CragO], estata poi introdotta un'efIettiva pipeline articolata in
stadi, Prefetch (PF), DecodiJica (Dl), Generazione dell'indirizzo (D2), Esecuzione .
(EX) e Write Back (WB). La realizzazione della pipeline ha richiesto il superamento
di non pochi probleM; infatti, l'esecuzione in pipeline richiederebbe un set di istru
zioni semplice, I'esatto contrario di quanto offerto dall'architettura 8086, concepita ..
nell 'epoca in cui i progettisti lacevano ampio ricorso alIa microprogrammazione.. La
decodifica delle lstruzlODl, che nelle macchme RlSC nchiede uno e talvolta mezzo clclo "..
di clock, nella pipeline del 486 porta via ben due cicli di clock. 'Ii
:-. ,,"..... 1'\'1'
II 486 eovviamente compatibile, dal punta di vista software, con i modelli '
precedenti. La compatibilita. software ha influenzato la maggior parte delle decisioni I::',
prese fa.:'e progetto del 486. Per quanto si. riferisce l'.ottenimento ?,i
prestazlOlll plU elevate alla stessa frequenza di clock e la preVISlone dt frequenze pm ;',
elevate per il futuro, ha imposto un bus esterno notevolmente diverso cia queUo del
386. "i<';". 1-.'
-'., .. 1'\"
La gestione della memoria, identica a quella del 386, viene illustrata nel t t:::.
dedicato alIa memoria virtuale. La gestione della cache viene illustrata nel capitolo de
dicato all.a meI:?0ria cache, rnentre qui di seguito vengono svolte alcune considerazioni "
suJ suo dimenslonamento. ' {\':-';'X" $';.
".,., ,'..,. '1'
,:".>.. ,;;".:"
, ..., l'i"
:.,
" -.: ! ..
""-.1/::
,
'", ,};,'.
. , '-.1':i.,..... l \ .
.': .:"., ""
.. ",'..;/::",.:
" ,,,"r' __ .. ,. ,j ..
-," .... , ,;i;--
",":"!.!-;'-'; ,.'
..
. . ."
, >...... ....
,
" .' ' ..',., ,
- ;g."
, ' "}''','' , . .
." '. .. II'
.. -,' ,. :t' "
.' ,,''':,',<.'>->-: ,:
", '.".-.", ,,'<.'v'

'" ..
:,;:t,\
,
,:;(..';':',. .
. ' . . I,'
,..j!-I:; ,'"
,
;t ,i" (
"'. ;;i,.,"" Ifl, ,
.
,

\
..
,
.
.. I
-.
...' I
-
. . I
I
-
.- \
-
_. I

-I
-
B.lO 11 Pentium
L'architettura 8086 603
da 60 a 200 MHz
60 MHz
64-bit
32bit
8 kbyte dati, 8kbyte istruzioni
5 stadi
2-vie '
BTE. 4-vie 256-entrate
2-bit storici
In ardine
Solo per Ie diramazioni
Ftequenza della CPU
Frequenza dei Bus
Bus Dati
Bus Indirizzi
Cache L1 integrata
Pipeline
Superscalare
Branch Prediction
Madella di Esecuziane
Esecuzione Speculativa
Data Nome Transistori Tecnologia Frequenza
1993 P5 3.100.000 0,80 micron 60/66 MHz
1994 P54 3.200.000 0,50 micron 75/90/100/120 MHz
1995 P54 3.300.000 0,35 micron 120/133 MHz
1996 P54 3,300,000 0,35 micron 150/166/200 MHz
36Di solito questa parte viene come Barrel Shifter.
DecodiJica dell'istruzione (D1): nel buffer di prefetch, la logica di CPU decodifica
l'istruzione e genera quella che nella terminologia Intel viene detta parola di
cantrello per it successivo passe di esecuzione. In questa fase si decide se e
possibile l'emissione di due istruzioni in accordo alle regole di accoppiamento
esposte tra poco.
Generazione degli indirizzi (D2): nel buffer di prefetch, 1a logica di CPU cal cola
gli indirizzi di accesso alIa memoria.
Esecuzione (EX): vengono eseguitesia le operazioni ALU sia gli accessi aHa cache
dati; Ie istruzioni che richiedono sia un'operazione ALU sia un accesso alIa cache
dati necessitano piu di un ciclo di clock di permanenza in questo stadia.
Aggiornamento di registri e memoria (WB): in questa fase Ie istruzioni sono
abilitate a modificare 1a state del processore e a completare l'esecuzione. Le
ecceziani e i conflitti di contrello sono risolti prima di giungere a questa stadia.
Le due pipeline non sono ideDtiche. La V-pipe eprovvista deUa logica per effet-
tuare manipolazioni a livello di bit
36
l in modo da poter eseguire tutte le istruzioni,
Tabella B.O Caratteristiche dei microprocessori Pentium, dall'anno dellancio aU'introdu-
zione del Pentium MMX.
Tabella B.5 Caratteristiche prmcipali del Pentium. L'esecuzione speculativa si ha. solo per
queUe istruzioni che, grazie a.Ha preseDza del BTB, vengono preleva.te dopo una diramazione
il cui esito non e aneora nota. Nei proeessori della famiglia P6, l'eseeuzione speculativa e
usata su piu vasta scala grazie alIa esecuzione fuori ordine delle istruzioni.
Appendice B
Prefetch dell'istruzione (PF): la l0f,ca di CPU preleva Ie istruzioni dalla cache
istruzioni verso il buffer di pre/etch 5. '
34La tendenza verso frequenze sempre piil eleva.te non ha. subito saste negli a.nni successivi (sebbene
di tanto in tanto si alzino voci a ricordare che si sta raggiungendo i limiti imposti dalla na.tura.). Afine
1999 erano correntemente in vendita calcolatori personali basati su CPU Intel operanti a frequenze
in zona 500MHz, era gia stata una CPU a 1GHz.
35
11 buffer di pre/etch e una memoria. capace di eontenere un certo numero di istruzioni (vedi
piu avanti) , alimentata. dalla. cache istruzioni. Qui come in altre parti del libro, abbiamo tenuto
una. dizione che non distorce l'originale anglosassone, anziche tradurre con un improbabile
"memoria tampone di pre-prelievo".
La Figura B.30 evidenzia J'architettura superscalare del Pentium. Essa consente ,
cuzione in parallelo di due istruzioni sugH interi: l'unita. di elaberazione degli interi,
in pratica l'unita di controllo, ecostituita da due pipeline (U-pipe e V-pipe) operanti
in parallelo.
I cinque stadi delle pipeline [BM95], mostrati in Figura B.31, sono:
B.IO.I La struttura interna
... ' ..
. -.111,"
-

,
....
" ' ., .-;"," ,','
''', " "Ur: :
"::,,'.
","{j:" t. :
" 1.'"
;'.
,; .
. "..

, ',: '. "" f
'<'." 'ii' 'iii ,)",
Introdotto del 1993 estato il primo microprocessore della famiglia 8086 a ..
varcare la so?ha del "MIPS. "
Nella pnma verslOne, la massuna frequenza dl clock era 60MHz, , ,j(,i!! l",
. n in Bi:Cmos da .0,.8 micron: n integra
3,1 eli su una 2,16 pOlliCI ed e itb:
ill un PGA (Pm Gnd Array) da 273 pledill\. II consumo ragglUngeva I i'I.:
13 Wp' t d I 'b'lit' ft 'dII' d t' '1 P t'
ur man o. a .compatl 1 a s.o ware 1 rna e 1 prece en I, en lUIn , ::</.f;fJ:
prevede alcune lStruzlOfil suppIementan, tra CUl queUe che cansentono aI
di sistema di mettere in atto (Modified, Sha.red, J<
per la della cache m amblente multlprocessorc, per tl Quale vlene,. ..
forrnto il necessana supporto hardware. " . ..
n int:oduce poi aJcune bus dati ;1;"':
no a 64 blt
,
l'architettura superscalare, un'uruta. per il calcolo In vlrgola mobIle In '.'
pipeline, Ia cache interna separata per istruzioni e dati ed un'unita. per la predizione ..
dei salti condizionati. . ;>;';:::
Un ultimo dato da sottolineare ela rapida evoIuzione del Pentium versa frequenze
piu subito la.prima versione a 60MHz
,
che in quel (1993)
masslma frequenza di fuoZlOnamento della CPU 80486, vennero mtrodotte Ie verslOUl .. ....,
a 66 MHz e a 90 MHz e, tra il 1995 ed il 1996, Ia frequenza di clock del Pentium e \;:.
salita fino alIa dei 200 n dissipazione termica estato
.da. con.Ia dI lavaro V), ,;:;,,'
tecruche.di dissIpazlone sempre plU sofistlcate. Le carattenstlche archItetturah
del Pentium sono raccolte In TabellaB.5. T.
La TabellaB.6 riporta dati relativi all'evoluzione di questo modeUo di CPU.
" ..":(;,, ",.,
';1'i;'",t,J,'t',
': ',': 'v:ii::!"l' ,
, .,,'''''', to' " '. ';",
'. "'i'I:/r-\.\lt
" ."',.. ., '.
: .. , . :.:.. .. d:Y'.
, . ,i,"_I ..
' .. \1
"'.' .. ....
"".. .
....." "
..
C,' ill' ...
'/'''II''('-l?'tt
l
-lh"
" ..... "'"
".. , ,

: ',' """,",
'j'!,',.
, .
, \ ,',
,.-.,','. >;'
'o""
'. iI/'<
'"I,
.".',.' .. .
,.;\.:'.,1"", i',<,;",."
"',.. , .', .'
"I '
. ..:,':i, .. ".
',-
, "J>i':':ll:f..,o t,f,:
-,. '
" . '" ,,,. ,
. :"!"t':;ij";" ..
. :v.. : ..;...
,h."-' .', .
. '." f... ,I,.'
. .. li'&" ','
... "/,,,.,:.
):'
',,' I.,", '"
'.,... 'l,".\

'.
',-'
,. 'fh
. ' ,,':
. ..,; , I':
,0,," ">I '
,
". '<
' .. : ",'
, 'i11 '
., .- , ,
.) .. "j ,
Ii"
, "",oe
m
, ',"
.. ,"wt !tl!Ij..
602
1
\
!
,
I
".

0"
-,
-

.
,

\
..
,
.
.. I
-.
...' I
-
. . I
I
-
.- \
-
_. I

-I
-
B.lO 11 Pentium
L'architettura 8086 603
da 60 a 200 MHz
60 MHz
64-bit
32bit
8 kbyte dati, 8kbyte istruzioni
5 stadi
2-vie '
BTE. 4-vie 256-entrate
2-bit storici
In ardine
Solo per Ie diramazioni
Ftequenza della CPU
Frequenza dei Bus
Bus Dati
Bus Indirizzi
Cache L1 integrata
Pipeline
Superscalare
Branch Prediction
Madella di Esecuziane
Esecuzione Speculativa
Data Nome Transistori Tecnologia Frequenza
1993 P5 3.100.000 0,80 micron 60/66 MHz
1994 P54 3.200.000 0,50 micron 75/90/100/120 MHz
1995 P54 3.300.000 0,35 micron 120/133 MHz
1996 P54 3,300,000 0,35 micron 150/166/200 MHz
36Di solito questa parte viene come Barrel Shifter.
DecodiJica dell'istruzione (D1): nel buffer di prefetch, la logica di CPU decodifica
l'istruzione e genera quella che nella terminologia Intel viene detta parola di
cantrello per it successivo passe di esecuzione. In questa fase si decide se e
possibile l'emissione di due istruzioni in accordo alle regole di accoppiamento
esposte tra poco.
Generazione degli indirizzi (D2): nel buffer di prefetch, 1a logica di CPU cal cola
gli indirizzi di accesso alIa memoria.
Esecuzione (EX): vengono eseguitesia le operazioni ALU sia gli accessi aHa cache
dati; Ie istruzioni che richiedono sia un'operazione ALU sia un accesso alIa cache
dati necessitano piu di un ciclo di clock di permanenza in questo stadia.
Aggiornamento di registri e memoria (WB): in questa fase Ie istruzioni sono
abilitate a modificare 1a state del processore e a completare l'esecuzione. Le
ecceziani e i conflitti di contrello sono risolti prima di giungere a questa stadia.
Le due pipeline non sono ideDtiche. La V-pipe eprovvista deUa logica per effet-
tuare manipolazioni a livello di bit
36
l in modo da poter eseguire tutte le istruzioni,
Tabella B.O Caratteristiche dei microprocessori Pentium, dall'anno dellancio aU'introdu-
zione del Pentium MMX.
Tabella B.5 Caratteristiche prmcipali del Pentium. L'esecuzione speculativa si ha. solo per
queUe istruzioni che, grazie a.Ha preseDza del BTB, vengono preleva.te dopo una diramazione
il cui esito non e aneora nota. Nei proeessori della famiglia P6, l'eseeuzione speculativa e
usata su piu vasta scala grazie alIa esecuzione fuori ordine delle istruzioni.
Appendice B
Prefetch dell'istruzione (PF): la l0f,ca di CPU preleva Ie istruzioni dalla cache
istruzioni verso il buffer di pre/etch 5. '
34La tendenza verso frequenze sempre piil eleva.te non ha. subito saste negli a.nni successivi (sebbene
di tanto in tanto si alzino voci a ricordare che si sta raggiungendo i limiti imposti dalla na.tura.). Afine
1999 erano correntemente in vendita calcolatori personali basati su CPU Intel operanti a frequenze
in zona 500MHz, era gia stata una CPU a 1GHz.
35
11 buffer di pre/etch e una memoria. capace di eontenere un certo numero di istruzioni (vedi
piu avanti) , alimentata. dalla. cache istruzioni. Qui come in altre parti del libro, abbiamo tenuto
una. dizione che non distorce l'originale anglosassone, anziche tradurre con un improbabile
"memoria tampone di pre-prelievo".
La Figura B.30 evidenzia J'architettura superscalare del Pentium. Essa consente ,
cuzione in parallelo di due istruzioni sugH interi: l'unita. di elaberazione degli interi,
in pratica l'unita di controllo, ecostituita da due pipeline (U-pipe e V-pipe) operanti
in parallelo.
I cinque stadi delle pipeline [BM95], mostrati in Figura B.31, sono:
B.IO.I La struttura interna
... ' ..
. -.111,"
-

,
....
" ' ., .-;"," ,','
''', " "Ur: :
"::,,'.
","{j:" t. :
" 1.'"
;'.
,; .
. "..

, ',: '. "" f
'<'." 'ii' 'iii ,)",
Introdotto del 1993 estato il primo microprocessore della famiglia 8086 a ..
varcare la so?ha del "MIPS. "
Nella pnma verslOne, la massuna frequenza dl clock era 60MHz, , ,j(,i!! l",
. n in Bi:Cmos da .0,.8 micron: n integra
3,1 eli su una 2,16 pOlliCI ed e itb:
ill un PGA (Pm Gnd Array) da 273 pledill\. II consumo ragglUngeva I i'I.:
13 Wp' t d I 'b'lit' ft 'dII' d t' '1 P t'
ur man o. a .compatl 1 a s.o ware 1 rna e 1 prece en I, en lUIn , ::</.f;fJ:
prevede alcune lStruzlOfil suppIementan, tra CUl queUe che cansentono aI
di sistema di mettere in atto (Modified, Sha.red, J<
per la della cache m amblente multlprocessorc, per tl Quale vlene,. ..
forrnto il necessana supporto hardware. " . ..
n int:oduce poi aJcune bus dati ;1;"':
no a 64 blt
,
l'architettura superscalare, un'uruta. per il calcolo In vlrgola mobIle In '.'
pipeline, Ia cache interna separata per istruzioni e dati ed un'unita. per la predizione ..
dei salti condizionati. . ;>;';:::
Un ultimo dato da sottolineare ela rapida evoIuzione del Pentium versa frequenze
piu subito la.prima versione a 60MHz
,
che in quel (1993)
masslma frequenza di fuoZlOnamento della CPU 80486, vennero mtrodotte Ie verslOUl .. ....,
a 66 MHz e a 90 MHz e, tra il 1995 ed il 1996, Ia frequenza di clock del Pentium e \;:.
salita fino alIa dei 200 n dissipazione termica estato
.da. con.Ia dI lavaro V), ,;:;,,'
tecruche.di dissIpazlone sempre plU sofistlcate. Le carattenstlche archItetturah
del Pentium sono raccolte In TabellaB.5. T.
La TabellaB.6 riporta dati relativi all'evoluzione di questo modeUo di CPU.
" ..":(;,, ",.,
';1'i;'",t,J,'t',
': ',': 'v:ii::!"l' ,
, .,,'''''', to' " '. ';",
'. "'i'I:/r-\.\lt
" ."',.. ., '.
: .. , . :.:.. .. d:Y'.
, . ,i,"_I ..
' .. \1
"'.' .. ....
"".. .
....." "
..
C,' ill' ...
'/'''II''('-l?'tt
l
-lh"
" ..... "'"
".. , ,

: ',' """,",
'j'!,',.
, .
, \ ,',
,.-.,','. >;'
'o""
'. iI/'<
'"I,
.".',.' .. .
,.;\.:'.,1"", i',<,;",."
"',.. , .', .'
"I '
. ..:,':i, .. ".
',-
, "J>i':':ll:f..,o t,f,:
-,. '
" . '" ,,,. ,
. :"!"t':;ij";" ..
. :v.. : ..;...
,h."-' .', .
. '." f... ,I,.'
. .. li'&" ','
... "/,,,.,:.
):'
',,' I.,", '"
'.,... 'l,".\

'.
',-'
,. 'fh
. ' ,,':
. ..,; , I':
,0,," ">I '
,
". '<
' .. : ",'
, 'i11 '
., .- , ,
.) .. "j ,
Ii"
, "",oe
m
, ',"
.. ,"wt !tl!Ij..
602
1
\
!
,
I
".

0"
-,
-

3Sp&" un esame dettagliato di questi aspetti si rimanda ai manuali del c09truttore.


b) come dati:
RIO,2 L'unita per la predizione dei salti condizionati

-
-
J-
-
l-
1-
-
1-
l--
-
1-,
1-
-
-
1-
f-
1--
1-

)---
1--
L'architettura 8086 605
V pipe U pipe
.Instruction prefetch (PF)
Instruction decode (Dl)
.
Address Generation (D2) Address Generation (D2)
Execute (EX) Execute (Bx)
Write Back (WB) Write Bad< (WB)
a) come TAG, i bit 6-31 delFindirizzo delle istruzioni di diramazione. Per indirizzare
1a posizione vengono usati i bit 0-5j
Per far fronte al deterioramento delle prestazioni della pipeline a causa delle istruzioni
di salto condizionato, U Pentium presenta due buffer di prefetch e un Branch Target
Buffer (BTB). II BTB (Figura B.33) euna cache associativa a quattro vie the tiene
traccia delle uitime 256 istruzioni di saIto.
Ciascuno dei 64 elementi (per ogni via) del buffer contione:
di attesa alFistruzione con il minor tempo di 1atenza, prima di dade effettivamente
esecuzione nella pipeli.ne in cui si trova, in modo da tenerla in fase con 1a piu lenta. Se
una coppia di istruzioni non soddisfa i requisiti che ne consentono l'esecuzione simul-
tanea
38
, Punita di cantrollo del microprocessore invia laprima alIa U-pipe e Maoda
1a seconda aHa successiva istruzione decodificata, per verificare se la nuova coppia di
istruzioni puo essere elaborata in sincronia; se questa condizione non esoddisfatta,
viene'ancoraeseguita solo un'istruzione nella V-pipe.
Figura 8,31 Le. due pipeline del Pentium. La U-pipe e 1a pipeline principale e pub ese
guire qualunque istruzione, neUa V-pipe invece, possono essere eseguite soltanto istruzioni
$emplici, che non generano microcodici. .
;;: >
!I',

,.
" .
, '. '., . 'Ir,"
,.... ..... :11""1 '.
I, , >
',',':k.li.f
....,:.i''''';W,

',.;, ,.1 !i'I-';,
'. ''''1'
.; ,;... \'1,'<".:
?
.. ,. .;.t!.i
. :
, r \'
. .Ilk
' . ' ........, 'I
,. :
'-'--''' ...,... :j"-
., '.... .. .
.' , ,"
,: ..
'.,:, ..... ':,.; 'Jf!;'\
':','",1,,",,"' 'I"'"
.. ,' ..J.
.
'!l!-',
.iI';;
'. <,,--<., ,"" .
.. )',.. """
...... ,...- '1:
1
h
.',,,.'.'....... ,:, ' ,
1.'-0>,.'::'



'. ";.'.'''', ;tp"",
$,:r:.
....; ;-:;;-:-':
;J; ...,'
.,' :;;','j.'>, 'J1"'"
'.,.< .... "'.,'
, .' ,<;-:., .1'., ;.",... ,.,
""," -'........ "'P."':
,,'"0' ,'.
'.'" ,

,:'f;;;i/;,
'.
"'._.'. ....". ..
:;!t;.... ""'j..,

".'"", j 'p: ,
' , . ';
','., .,:/"..........: V',,,
,.'. "S ".
1M'.."
1.-- ",
i;jj::,
I" ., 'J"" ' " ''-,''-' ,.'.<, 1'. '.
.. ' .' ", . 'I ,.
' '.., ,.'

"""'1-'\'" ",\;','
':",;: ',:,{I'
, ",.< '''''::'''- '., f,' .
. :\i,\!Il(.,.,
'-.(--,,:}J}':,'" . '.".'.
-"""""'./ .,
\./ I::,
',c' ',... -;-': ,.'"", 1'..11'1,
'.' ,.,."' ....; ':"'1'("
,',' ".'..
., ,c. " .....-;" " .' ..
"'''''i.',:;: .'.
","
:..
..,,:'iJ:', .', ..
.:' .,.,
:--70,,-': '. 'il
" ,.' '" "" ",
1
,,,<" ' c'" '. ., "11 .

'.,.. Poil.
''-';-'-'". t.,
...::.
...
'-". ,"
"'-',"".;,.'""",: , .111"
.. (. :.
, .
'0'.". ",
':
""',';-1:',';.'
" ';"\,."
, :,"'\',('}.-,

"".-.,
,.... '
.(:':' ;:ii/'
';. c' ,
."'.' .
, (.
r',' ".1.
.
... ,
.,,--!... ,., "
1
.
"'.'""
'::'/7t::: '. t'>
itl'"
': c
" ""\,.. .. J
. >' . ".
':-- ,':'''' r .. ,
,:
'>,K" i".
I .
'; ' ..'.,..', .....,. .
.' .,:\',r:
I
. c:
,,:a, . ." '.
-"..
,,-$.:.1. 'I. ,T

bit
Cache del eodlee
Prec1i;ione
del s"lli
2M bit
I
Bu.t1er di pre:fetcb
Unite' to.
vl.rsclll mobile
(P"PU)
U pip. V pipe
bus ddt
Intutaeclll
ALU ALV
-
6<1. bit
III b\ll det daU
"".n
lntllrl
44 bit
"
"
bit bn
n:lolllpl1cl;ton:
ReJi.:llrL
irltm
::iii:
.ommlltorc
,
Cacha daU divlsore
bit
3
7
Si ricordi che l'architettura x86 e stata concepita come una. tipica architettura
microprogrammata.
,
intere 0 in virgo1a mobile, della famiglia 8086. E nella U-pipe che prende avvio l'ese-
delle operazioni in virgola. mobile, completata nella FPU (dalla qua1e pero
entrambe Ie pipeline possono prelevare operandi). La V-pipe invece, puo eseguire solo
Ie cosiddette "istruzioni (intere) semplicP' e l'istruzione in 'virgo/a mobile FxeH.
Vlntel definisce se;mplici Ie istruzioni eseguite attraverso logica cablata e non
microprogrammata.
31
. Le istruzioni semplici sono eseguibili , in generale, in un cielo
di clock (operazioni di ALU). Costituiscono eccezione a. quest'ultirna condizione le
istruzioni di trasferimento (HOVE) da registro a registro e da registro a 'memoria, che
richiedono rispettivamente 2 e 3 deli di clock, rna per Ie quali estata appositamente
prevista una parte di logica cablata che consente di svolgerle corne se fossero istruzioni
semplici.
La. CPU esegue il fetch e 180 decodifica di due istruzioni per volta. Se 180 seconda
eeseguibile dalla V-pipe e se 180 sua esecuzione non econdizionata dal risultato della
prima, Ie due istruzioni vengono assegnate sirnultanearnente alle due pipeline (ins-
truction pairing), che provvedono a eseguir1e in parallelo (Figura B.32). Per garantire
che Ie due pipeline lavorino in sintonia, 180 logica del Pentium pub far subire 1 0 2 deli
Figura B.30 Struttura interna del Pentium. La figura epresa da [AA93J. Sono presenti tre
unit afUDzionali, due intere e una in virgola mobile; due memorie cache, una. per Ie istruziooi
e una per i dati, di 8 kbyte ciascuna. Ci SODO due buffer di prefetch, di 32 byte ciascuno, che
5i alternano nella. funzione di prelevare Ie istruzioni, a secooda delle condizioni determinate
dal flusso delle istruzioni (piu specificatameote, salti condizionati). L'unita. di predizione
diramazionl, contiene un BTB (Branch Target Buffer) a quattro vie e per un totale di
256 elementi.
604 Appendice B
3Sp&" un esame dettagliato di questi aspetti si rimanda ai manuali del c09truttore.
b) come dati:
RIO,2 L'unita per la predizione dei salti condizionati

-
-
J-
-
l-
1-
-
1-
l--
-
1-,
1-
-
-
1-
f-
1--
1-

)---
1--
L'architettura 8086 605
V pipe U pipe
.Instruction prefetch (PF)
Instruction decode (Dl)
.
Address Generation (D2) Address Generation (D2)
Execute (EX) Execute (Bx)
Write Back (WB) Write Bad< (WB)
a) come TAG, i bit 6-31 delFindirizzo delle istruzioni di diramazione. Per indirizzare
1a posizione vengono usati i bit 0-5j
Per far fronte al deterioramento delle prestazioni della pipeline a causa delle istruzioni
di salto condizionato, U Pentium presenta due buffer di prefetch e un Branch Target
Buffer (BTB). II BTB (Figura B.33) euna cache associativa a quattro vie the tiene
traccia delle uitime 256 istruzioni di saIto.
Ciascuno dei 64 elementi (per ogni via) del buffer contione:
di attesa alFistruzione con il minor tempo di 1atenza, prima di dade effettivamente
esecuzione nella pipeli.ne in cui si trova, in modo da tenerla in fase con 1a piu lenta. Se
una coppia di istruzioni non soddisfa i requisiti che ne consentono l'esecuzione simul-
tanea
38
, Punita di cantrollo del microprocessore invia laprima alIa U-pipe e Maoda
1a seconda aHa successiva istruzione decodificata, per verificare se la nuova coppia di
istruzioni puo essere elaborata in sincronia; se questa condizione non esoddisfatta,
viene'ancoraeseguita solo un'istruzione nella V-pipe.
Figura 8,31 Le. due pipeline del Pentium. La U-pipe e 1a pipeline principale e pub ese
guire qualunque istruzione, neUa V-pipe invece, possono essere eseguite soltanto istruzioni
$emplici, che non generano microcodici. .
;;: >
!I',

,.
" .
, '. '., . 'Ir,"
,.... ..... :11""1 '.
I, , >
',',':k.li.f
....,:.i''''';W,

',.;, ,.1 !i'I-';,
'. ''''1'
.; ,;... \'1,'<".:
?
.. ,. .;.t!.i
. :
, r \'
. .Ilk
' . ' ........, 'I
,. :
'-'--''' ...,... :j"-
., '.... .. .
.' , ,"
,: ..
'.,:, ..... ':,.; 'Jf!;'\
':','",1,,",,"' 'I"'"
.. ,' ..J.
.
'!l!-',
.iI';;
'. <,,--<., ,"" .
.. )',.. """
...... ,...- '1:
1
h
.',,,.'.'....... ,:, ' ,
1.'-0>,.'::'



'. ";.'.'''', ;tp"",
$,:r:.
....; ;-:;;-:-':
;J; ...,'
.,' :;;','j.'>, 'J1"'"
'.,.< .... "'.,'
, .' ,<;-:., .1'., ;.",... ,.,
""," -'........ "'P."':
,,'"0' ,'.
'.'" ,

,:'f;;;i/;,
'.
"'._.'. ....". ..
:;!t;.... ""'j..,

".'"", j 'p: ,
' , . ';
','., .,:/"..........: V',,,
,.'. "S ".
1M'.."
1.-- ",
i;jj::,
I" ., 'J""
' " ''-,''-' ,.'.<, 1'. '.
.. ' .' ", . 'I ,.
' '.., ,.'

"""'1-'\'" ",\;','
':",;: ',:,{I'
, ",.< '''''::'''- '., f,' .
. :\i,\!Il(.,.,
'-.(--,,:}J}':,'" . '.".'.
-"""""'./ .,
\./ I::,
',c' ',... -;-': ,.'"", 1'..11'1,
'.' ,.,."' ....; ':"'1'("
,',' ".'..
., ,c. " .....-;" " .' ..
"'''''i.',:;: .'.
","
:..
..,,:'iJ:', .', ..
.:' .,.,
:--70,,-': '. 'il
" ,.' '" "" ",
1
,,,<" ' c'" '. ., "11 .

'.,.. Poil.
''-';-'-'". t.,
...::.
...
'-". ,"
"'-',"".;,.'""",: , .111"
.. (. :.
, .
'0'.". ",
':
""',';-1:',';.'
" ';"\,."
, :,"'\',('}.-,

"".-.,
,.... '
.(:':' ;:ii/'
';. c' ,
."'.' .
, (.
r',' ".1.
.
... ,
.,,--!... ,., "
1
.
"'.'""
'::'/7t::: '. t'>
itl'"
': c
" ""\,.. .. J
. >' . ".
':-- ,':'''' r .. ,
,:
'>,K" i".
I .
'; ' ..'.,..', .....,. .
.' .,:\',r:
I
. c:
,,:a, . ." '.
-"..
,,-$.:.1. 'I. ,T

bit
Cache del eodlee
Prec1i;ione
del s"lli
2M bit
I
Bu.t1er di pre:fetcb
Unite' to.
vl.rsclll mobile
(P"PU)
U pip. V pipe
bus ddt
Intutaeclll
ALU ALV
-
6<1. bit
III b\ll det daU
"".n
lntllrl
44 bit
"
"
bit bn
n:lolllpl1cl;ton:
ReJi.:llrL
irltm
::iii:
.ommlltorc
,
Cacha daU divlsore
bit
3
7
Si ricordi che l'architettura x86 e stata concepita come una. tipica architettura
microprogrammata.
,
intere 0 in virgo1a mobile, della famiglia 8086. E nella U-pipe che prende avvio l'ese-
delle operazioni in virgola. mobile, completata nella FPU (dalla qua1e pero
entrambe Ie pipeline possono prelevare operandi). La V-pipe invece, puo eseguire solo
Ie cosiddette "istruzioni (intere) semplicP' e l'istruzione in 'virgo/a mobile FxeH.
Vlntel definisce se;mplici Ie istruzioni eseguite attraverso logica cablata e non
microprogrammata.
31
. Le istruzioni semplici sono eseguibili , in generale, in un cielo
di clock (operazioni di ALU). Costituiscono eccezione a. quest'ultirna condizione le
istruzioni di trasferimento (HOVE) da registro a registro e da registro a 'memoria, che
richiedono rispettivamente 2 e 3 deli di clock, rna per Ie quali estata appositamente
prevista una parte di logica cablata che consente di svolgerle corne se fossero istruzioni
semplici.
La. CPU esegue il fetch e 180 decodifica di due istruzioni per volta. Se 180 seconda
eeseguibile dalla V-pipe e se 180 sua esecuzione non econdizionata dal risultato della
prima, Ie due istruzioni vengono assegnate sirnultanearnente alle due pipeline (ins-
truction pairing), che provvedono a eseguir1e in parallelo (Figura B.32). Per garantire
che Ie due pipeline lavorino in sintonia, 180 logica del Pentium pub far subire 1 0 2 deli
Figura B.30 Struttura interna del Pentium. La figura epresa da [AA93J. Sono presenti tre
unit afUDzionali, due intere e una in virgola mobile; due memorie cache, una. per Ie istruziooi
e una per i dati, di 8 kbyte ciascuna. Ci SODO due buffer di prefetch, di 32 byte ciascuno, che
5i alternano nella. funzione di prelevare Ie istruzioni, a secooda delle condizioni determinate
dal flusso delle istruzioni (piu specificatameote, salti condizionati). L'unita. di predizione
diramazionl, contiene un BTB (Branch Target Buffer) a quattro vie e per un totale di
256 elementi.
604 Appendice B
.' I
Cicio 1 Cicio 2 Cicio 3 Cicio 4 CleoiD Cicio II Cicio 7 Cicio 8 Cl .. lo"
Figura B.32 Esecuzione parallela delle istruzioni quando illara Russo etale da. mantenere
alimentate entrambe Ie. pipeline deU'u.nita. di elaborazione degli interi.
i) gli indirizzi delle destinazioni associate (vengono memorizzati solo gli indiriz-
zi d.i diramazione effettivaj in caso di fallimento viene prelevata l'istruzione
in sequenza);
ii) Ie statistiche di predizione. La predizione dell'esito della diramazione e
ricavata grazie a semplici predittori a 2-bit.
IDdirizsi di Bit di
Destin...,loDt
I I
I
I
.
.
.
.
llll
bit 05 TAO (bit 631)
00010
L'architettu<a 8086 607
1 SHR EAX,l
2 MOV EBX, [ESI]
3 eM? EAX EBX
4 JB L
L'istruzione 1 si accoppia can la 2 e la 3 can la 4. L'enlrata nel BTB per JB
L e percio collegata all'inmrizzo di SHR EAX ,1. Cia per rendere noto a1 pill presto
possibile l'indirizzo di destinazione predetto.
11110
00001
coutatore a 2 bit a saturazione analogo a queUo rnostrato in Figura 8.34. Le istruzioni
di diramazione non vengono introdotte nel BTB fino a quando non eseguite
can successo. Come gia. stato detto in precedenza, alle istruzioni d.i diramazione non
presenti nel BTB viene data una predizione di fallimento.
Data rarchitettura superscalare sbilanciata del processore (vi euna pipeline prin-
cipale e una secondaria), il meccanismo di predizione considera Ie istruzioni a coppie,
piuttosto che corne singole istruzioni, e fa sempre riferimento all'indirizzo dell'istru-
zione cbe si trova nella pipeline principale, ossia la U-pipe. Le diramazioni possono
quindi essere eseguite anche nella V-pipe solo accoppiandole con istruzioni nella V-
pipe con cui accedere al BTB. Inoltre l'indirizzo al BT.B non equeUo della
coppia di istruzioni della diramazione stessa, bensl quello della. coppia d.i istruzioni
che precedono la diramazione [Fog]. A tal proposito consideriarno questa sequenza di
istruzioni;
Figura B.33 BTB a quattro vie del Pentium. II campo a sinistra ha la funzione di TAG per
la ricerca associativa nella cache. La "storia" ecodificata in due bit, per quattro possibilita
di decisione da parte della logica di predizione del salta. II BTB tiene traccia delle ultime
256 istruzioni di salta condizionato. I bit 0-5 dell'indirizzo di riferimento della diramazione
vengono utiJizzati per accedere a una delie 64 entrate per ciascuna via. I bit 6-31 sono invece
utilizzati come TAG. Poiche la memoria ea 4 vie, il ETE non pub contenere piu di quattro
diramazioni in posizioni aventi inwrizzo con i bit 0-5 uguali.
'./...",';' \,.
.;;.\t' ..,.
;'}:l.. ;',r;. ,it
,-.'.," "
I;
.!
..
( ...
,'.' ... ,
'1.(,,.1:-..1' '. (
;..t.,:!il:
c
;,\ 'i?l
'.. .. '
.....,..,." ....
,'1':,'., ..
,',.' ,:. ,.'
,.'- ,:r.:',
,;,,:: :-\t:..
, ""'" c, ",.'.'
., .,. ',. ,
., .'j ',..
__,'1:;,
. ;;:;,1
.' ..,.. " ...
t'
.\.
OJ ' ,'
,.', .... .. e:,.J
.d.
1
" ,;...
- .l, .
i'-':'..,.; e.
',:' .,_.
.' . ,., ,.
-_t' \: (, .
.. ..

,; .",' 1 '.:C'.
...:'.:./:' 'i""
""",,t. ,
".".,",'" 'j .
': ,. t", I"""
':'."'\lj;i",': "J'.'
" " ..:
-;t"\'V,1 };i/.,
., .;-:: ; 1_
,.. .,
'''''''''i''
.
......
'.... ....., .
... .; ..
,\"....
... '> . M.
C'_:'..\,.... ;...
,'.
.., .,,-
.;.-. ,. 4'",
, ' .dh >. ;.
.. \.... ".
, . ".. . "f .
.. '
.. ( .,:'.
';; "J', : ' J)
'. ,-.;.'. \:
'," .. "",.,
". ','" '. '0"
, .':" ' ,
.,' i'.," 'l:..
"..,,.. ',-'i ":.,
.,,, """'1' ,b,'
,.,.. , ,
:'0. ,' ",
, I',, .,,' _..
,-' .... ,.,
'. :;r'?
..:/: 'Ii-;
%'-::.
.._.,:;.... ..{
.. t. _""
.. .'.'"
.'<' ;',c.' \I. ''''''.
..' ...., !il"'.
':,,''t'!,w,j";
'." <J.r
!.."fi';,'
"."""'1)" . .':r
",;.;'\"." '"
.. , -"..
,:,'-1t:.'i.' ; ,;
," ", .'/"."" " .",

,
,
, " .... _... <" .;,
',!.
.... ,.... ,,'r.:-,
... ..,'
,..... 'jI1.
-'.' .,'. " ' ..
',';;,.,. ...
. : i-:-
.:..,.,;.:{,,.; .j.
".
, , f!,.>.
..
.'1..;.
,.. ..
:'r.': 1\(,
,,,; "'I.:'
. . .
.', i
U
,
t. ..... "
,. it'-),
"til 11(,.
"l"l.<, ,<,"
., .," ...
... ., ,
.. 1';:

, ,'.'
'. *.-:
- '- \<
,;:'. ...:
, ' ."
.. ",,'
."t"., .
Ii::': 1.
:'.' ,.");',
't.oo
, " " ".:,-., ..'
,." -. ">\
!J-:
,. - ".
, .. , . /,.'
':':;:i;:'.':
- ., ),..
":1'
.<.... , ',.
..I'...
"'+"1",'..' .'.
I
" , .,.
....,., .': '"
,' .
'.' .... .
.,""....... .,
u V

u V u V
u V u V u V u V u V
13 I. 15 I. 17 18
IS
Il'
Il 12 13
I'
15
,.
17 18
19 Il<
11 12 13 I. 15 16 17 I.
IS 110
11 12 13 I. 15 16 17 18
IS 110
II 12 13 I. 15 16 17 18
D2
EX
u V
PF
D.
lfB
606 Appendice B
A un data momento, quello dei due buffer di prefetch che ein funzione carica sequen-
zialmente Ie istruzioni dalla cache istruzioni. Se entra un'istruzione di salto condizio-
nato, si attiva il meccanismo di predi?;ione. L'istruzione in questione puo trovarsi 0
no nel BTB (a seconda che un TAG contenga a no il suo indirizzo).
Se l'istruzione epresente in BTB, i bit eli predizione forniscono l'indicazione per
. prevedere l'effetto Se la predizione edi non saltare, il caricamento
delle istruzioni continua in sequenza nel prefetch buffer in funzione, altrimenti
l'altro comincia a caricare istruzioni dall'indirizzo di destinazione del salto (questo
egia in BTB e quindi non rich.iede perdita di tempo per essere calcolato) e
vengono aggiornati i due bit d.i predizione. Se Ie previsioni del BTB sono corrette,
non si verificano condizioni d.i stalla. In caso contrario viene svuotata la pipeline
relativa al percorso dimostratosi inappropriato, e riprende il caricamento delle
istruzioni lungo il percorso corretto, con un ritardo minimo d.i 3 dcli di clock se
l'istruzione ein V, 4 se l'istruzione ein V (vedi pill avanti).
Se il BTB non dispone delle informazioni relative all'istruzione di salto corrente,
predice che il salto non si verifichera e continua a caricare sequenzialmente. Anche
in questa caso, se la previsione eerrata, si ha un ritardo di almena- tre deli di
clock: il Pentium archivia Del 8TB la nuova istruzione di salta, corredata di
tutte Ie informazioni necessarie (compresi i due bit di predizione), sostituendola
a un'altra gia presente (nel caso in cui il buffer fosse pieno), dopodiche azzera la
pipeline e carica l'istruzione all'indirizzo dovuto.
La sostituzione degli elementi del BTB eregolata da un algoritmo di sostituzione
pseudo ca.cmale, che elimina Wl'entrata quando si hanno 4 entrate nel BTB e una. quin-
. ta in arrivo con gli stcssi bit 0-5. L'algoritmo di predizione eottenuto attraverso un
II
I
(
I
l
I
I
!
I
I
I
I
-.
_.
-.
-.

-.
.
_.
.
-.
-

-.
-
_.
.
.
.
.' I
Cicio 1 Cicio 2 Cicio 3 Cicio 4 CleoiD Cicio II Cicio 7 Cicio 8 Cl .. lo"
Figura B.32 Esecuzione parallela delle istruzioni quando illara Russo etale da. mantenere
alimentate entrambe Ie. pipeline deU'u.nita. di elaborazione degli interi.
i) gli indirizzi delle destinazioni associate (vengono memorizzati solo gli indiriz-
zi d.i diramazione effettivaj in caso di fallimento viene prelevata l'istruzione
in sequenza);
ii) Ie statistiche di predizione. La predizione dell'esito della diramazione e
ricavata grazie a semplici predittori a 2-bit.
IDdirizsi di Bit di
Destin...,loDt
I I
I
I
.
.
.
.
llll
bit 05 TAO (bit 631)
00010
L'architettu<a 8086 607
1 SHR EAX,l
2 MOV EBX, [ESI]
3 eM? EAX EBX
4 JB L
L'istruzione 1 si accoppia can la 2 e la 3 can la 4. L'enlrata nel BTB per JB
L e percio collegata all'inmrizzo di SHR EAX ,1. Cia per rendere noto a1 pill presto
possibile l'indirizzo di destinazione predetto.
11110
00001
coutatore a 2 bit a saturazione analogo a queUo rnostrato in Figura 8.34. Le istruzioni
di diramazione non vengono introdotte nel BTB fino a quando non eseguite
can successo. Come gia. stato detto in precedenza, alle istruzioni d.i diramazione non
presenti nel BTB viene data una predizione di fallimento.
Data rarchitettura superscalare sbilanciata del processore (vi euna pipeline prin-
cipale e una secondaria), il meccanismo di predizione considera Ie istruzioni a coppie,
piuttosto che corne singole istruzioni, e fa sempre riferimento all'indirizzo dell'istru-
zione cbe si trova nella pipeline principale, ossia la U-pipe. Le diramazioni possono
quindi essere eseguite anche nella V-pipe solo accoppiandole con istruzioni nella V-
pipe con cui accedere al BTB. Inoltre l'indirizzo al BT.B non equeUo della
coppia di istruzioni della diramazione stessa, bensl quello della. coppia d.i istruzioni
che precedono la diramazione [Fog]. A tal proposito consideriarno questa sequenza di
istruzioni;
Figura B.33 BTB a quattro vie del Pentium. II campo a sinistra ha la funzione di TAG per
la ricerca associativa nella cache. La "storia" ecodificata in due bit, per quattro possibilita
di decisione da parte della logica di predizione del salta. II BTB tiene traccia delle ultime
256 istruzioni di salta condizionato. I bit 0-5 dell'indirizzo di riferimento della diramazione
vengono utiJizzati per accedere a una delie 64 entrate per ciascuna via. I bit 6-31 sono invece
utilizzati come TAG. Poiche la memoria ea 4 vie, il ETE non pub contenere piu di quattro
diramazioni in posizioni aventi inwrizzo con i bit 0-5 uguali.
'./...",';' \,.
.;;.\t' ..,.
;'}:l.. ;',r;. ,it
,-.'.," "
I;
.!
..
( ...
,'.' ... ,
'1.(,,.1:-..1' '. (
;..t.,:!il:
c
;,\ 'i?l
'.. .. '
.....,..,." ....
,'1':,'., ..
,',.' ,:. ,.'
,.'- ,:r.:',
,;,,:: :-\t:..
, ""'" c, ",.'.'
., .,. ',. ,
., .'j ',..
__,'1:;,
. ;;:;,1
.' ..,.. " ...
t'
.\.
OJ ' ,'
,.', .... .. e:,.J
.d.
1
" ,;...
- .l, .
i'-':'..,.; e.
',:' .,_.
.' . ,., ,.
-_t' \: (, .
.. ..

,; .",' 1 '.:C'.
...:'.:./:' 'i""
""",,t. ,
".".,",'" 'j .
': ,. t", I"""
':'."'\lj;i",': "J'.'
" " ..:
-;t"\'V,1 };i/.,
., .;-:: ; 1_
,.. .,
'''''''''i''
.
......
'.... ....., .
... .; ..
,\"....
... '> . M.
C'_:'..\,.... ;...
,'.
.., .,,-
.;.-. ,. 4'",
, ' .dh >. ;.
.. \.... ".
, . ".. . "f .
.. '
.. ( .,:'.
';; "J', : ' J)
'. ,-.;.'. \:
'," .. "",.,
". ','" '. '0"
, .':" ' ,
.,' i'.," 'l:..
"..,,.. ',-'i ":.,
.,,, """'1' ,b,'
,.,.. , ,
:'0. ,' ",
, I',, .,,' _..
,-' .... ,.,
'. :;r'?
..:/: 'Ii-;
%'-::.
.._.,:;.... ..{
.. t. _""
.. .'.'"
.'<' ;',c.' \I. ''''''.
..' ...., !il"'.
':,,''t'!,w,j";
'." <J.r
!.."fi';,'
"."""'1)" . .':r
",;.;'\"." '"
.. , -"..
,:,'-1t:.'i.' ; ,;
," ", .'/"."" " .",

,
,
, " .... _... <" .;,
',!.
.... ,.... ,,'r.:-,
... ..,'
,..... 'jI1.
-'.' .,'. " ' ..
',';;,.,. ...
. : i-:-
.:..,.,;.:{,,.; .j.
".
, , f!,.>.
..
.'1..;.
,.. ..
:'r.': 1\(,
,,,; "'I.:'
. . .
.', i
U
,
t. ..... "
,. it'-),
"til 11(,.
"l"l.<, ,<,"
., .," ...
... ., ,
.. 1';:

, ,'.'
'. *.-:
- '- \<
,;:'. ...:
, ' ."
.. ",,'
."t"., .
Ii::': 1.
:'.' ,.");',
't.oo
, " " ".:,-., ..'
,." -. ">\
!J-:
,. - ".
, .. , . /,.'
':':;:i;:'.':
- ., ),..
":1'
.<.... , ',.
..I'...
"'+"1",'..' .'.
I
" , .,.
....,., .': '"
,' .
'.' .... .
.,""....... .,
u V

u V u V
u V u V u V u V u V
13 I. 15 I. 17 18
IS
Il'
Il 12 13
I'
15
,.
17 18
19 Il<
11 12 13 I. 15 16 17 I.
IS 110
11 12 13 I. 15 16 17 18
IS 110
II 12 13 I. 15 16 17 18
D2
EX
u V
PF
D.
lfB
606 Appendice B
A un data momento, quello dei due buffer di prefetch che ein funzione carica sequen-
zialmente Ie istruzioni dalla cache istruzioni. Se entra un'istruzione di salto condizio-
nato, si attiva il meccanismo di predi?;ione. L'istruzione in questione puo trovarsi 0
no nel BTB (a seconda che un TAG contenga a no il suo indirizzo).
Se l'istruzione epresente in BTB, i bit eli predizione forniscono l'indicazione per
. prevedere l'effetto Se la predizione edi non saltare, il caricamento
delle istruzioni continua in sequenza nel prefetch buffer in funzione, altrimenti
l'altro comincia a caricare istruzioni dall'indirizzo di destinazione del salto (questo
egia in BTB e quindi non rich.iede perdita di tempo per essere calcolato) e
vengono aggiornati i due bit d.i predizione. Se Ie previsioni del BTB sono corrette,
non si verificano condizioni d.i stalla. In caso contrario viene svuotata la pipeline
relativa al percorso dimostratosi inappropriato, e riprende il caricamento delle
istruzioni lungo il percorso corretto, con un ritardo minimo d.i 3 dcli di clock se
l'istruzione ein V, 4 se l'istruzione ein V (vedi pill avanti).
Se il BTB non dispone delle informazioni relative all'istruzione di salto corrente,
predice che il salto non si verifichera e continua a caricare sequenzialmente. Anche
in questa caso, se la previsione eerrata, si ha un ritardo di almena- tre deli di
clock: il Pentium archivia Del 8TB la nuova istruzione di salta, corredata di
tutte Ie informazioni necessarie (compresi i due bit di predizione), sostituendola
a un'altra gia presente (nel caso in cui il buffer fosse pieno), dopodiche azzera la
pipeline e carica l'istruzione all'indirizzo dovuto.
La sostituzione degli elementi del BTB eregolata da un algoritmo di sostituzione
pseudo ca.cmale, che elimina Wl'entrata quando si hanno 4 entrate nel BTB e una. quin-
. ta in arrivo con gli stcssi bit 0-5. L'algoritmo di predizione eottenuto attraverso un
II
I
(
I
l
I
I
!
I
I
I
I
-.
_.
-.
-.

-.
.
_.
.
-.
-

-.
-
_.
.
.
.
,
608 Appendice B
Un effetto malta particolare di questa gestione delle diramazioni eQuello di per.
mettere a tali istruzioni di occupare piu di una entrata del BTB. Consideriamo infatti"
iJ seguente frammento di programma:
"
[
l:
r
,
r
I:
-
I-
-
I-
-
l'
r-
I-
t -
I'
1-
311per questo motivo, I'esecuzione simultanea di due operazion.i in virgola. mobile e pOSllibile solo
nel easel in cui una. delle due sia.I'lstruzione nCH, che puo essere avviata nella Vpipe in parallelo COD
la magglor parte delle altre operazloni in virgola mobile e che CODsente i1 trasferimento immediato
nelliaccumulatore dei risultati di tali operazioni. . .
'lOLa separuione dena cache ha. componato alcune eomplicazioni relativamente aJ ma.ntenimento
della. coerenza nei programmi che si automodificano, doe dei programmi che in corso di esecuzione
scrivono pa.rti the verranno eseguite, ovvero: (a.) cbe scrivono a. un indlrizzo daJ Quale nel seguito
viene fatto i1 fetch di un'istruzione; (b) che prelevano come codice il contenuto di una. ce!la. che
in seguito potrebbe essere modificata da una scrittura. In pratica, in queste con9izioni, si pone il
problema di quale delle due cache deve tenere copia della pa.rola indirizzata.
RIOA Le due cache interne
L'architettura. 8086 609
A differenza della CPU 80486, il Pentium ha la cache istruzioni separata dalla cache
dati. Ambedue Ie cache sono di 8 kbyte e di tipo associativo a due viej Ie linee sop.o di
32 byte. La cache del Pentium in modo write-back 0 write-through, diversamente
dalla cache del 486 che lavorava solo con la seconda modalita..
n costruttore ha motivato 1a separazione della cache interna con la necessita. di
evitare interferenze tra il fetch delle istruzioni e I'accesso ai. dati, interferenze che
sarebbero piu marcate a causa della doppia pIpeline 40. In realta, Ie interferenze si
hanno anche con una singola pipeline, come nel micro '80486, per il quale la cache e
unificata.
La lentezza del calcolo in virgola mobile era sempre stata il punto debole della famiglia
8086, anche perche i progettisti Intel avevano sempre giudicato non particolarmente
vantaggioso migliorare questa aspetto funzionale, vista Ie applicazioni tra.dizionali
su Personal Computer non richiedevano una particolare rapidita. nelle operazioni in
virgola mobile. La sempre maggiore importanza assunta dalle applicazioni grafiche
ha reso necessario velocizzare questo processo.
r 3,1 milioni di transistori del Pentium hanno consentito un incremento del 350%,
rispetto alia CPU 80486, delle prestazioni del calcolo in virgola mobile (che salgona a
56.9 SPECfp92), grazie alIa realizzazione, all'interno della FPU, di sezioni dedicate per
j'addizione, la moltiplicazione e la divisione. Gli effetti di Questa logica dedicata sono
sorprendenti: a prescindere dalla precisione, Ie unita. di addizione e di mo1tiplicazione
completano Ie rispettive operazioni in 3 deli di elockj questi tempi d.i latenza sono
nettamente inferiori a quelli del micro 80486, nel Quale un'istruzione FADD richiede 10
deli di e un'istruzione FMUL puo richiederne da 12 a 15.
La FPU del Pentium ein pipeline e si articola in 8 stadi, di cui i primi 4 sono
quelli dell'unita di elaborazione degli interi. Un)operazione in virgola mobile impiega
sia la U-pipe che la V-pipe per eseguire il fetch degli operandi (64 bit), anche se la
sua esecuzione prende posta nella U_pipe
39
.
Grazie alIa pipeline nella FPU, un'operazione di addizione 0 di moitiplicazione,
pur avendo una l",tenza di 3 deli di clock, puo essere avviata in ogni cielo: se 180 pipeline
puc essere mantenuta piena, iI Pentium raggiunge il throughp'Ut di un'addizione 0 una
moltiplicazione per ogni cielo.
B,lO,3 L'unitil per il calcolo in virgola mobile
, ..
, ..
'" ','\>I"'i .
'. .\
.'1


:'
" .,. i:""
"'.
':,,,:;
'.' , .. (,- '
;; c" ,.!;ol
,.,.., ... . ... '
.. '
,. .. :
"\,,:' " .,j', .',
'L "';.
,"'''' '.

. '. \. ..
""" '\.
.. '. i ' "
. ,
, ' .
. ...
, , '
... ' .. oj'
'" ,.;'
.' . '-'J"
..
,
,'"
'. 'I:;;"
_. ..1
", \ . . ..l-"
f .' ' ..
." '., ,r ,
,.... ,11' .
, .
.," "r, i,'"
.":;": ,.0.
,,'" ''''',
.' . ' ..'
'':',.,.. 1.
.
" ., ,., .'
\.{,.
... ,." . I./"
':<V:
J


"',
__ ,/.: :f.'
.' :.' .;.1. i'i
. ';
..t" ",:1'
, .... ," ..
,-;::, ,.. ':'.,' ,
'.' .,
...,..
.. ct
,. '." ' .. '
':;1:::,
."..\ .. ,.roo
- ,. ",." .
,.,..>,"Y .. :"
,,'," ';",'
,.".\ " 'rr.,
.' , .. ,' ....., ", i';
'., >:oJ",
..... t .....
, ,.
.' .
",. , F '\,(+'
';'; '
,:.:<'-;' ,'"
-:,; .':;,.r:'/'
",?:\,:;/',
".J,.,;" ,,,,.:1
".",' 'IL'"
" .
.1 .. "i'"
'.. ''.' P', ..
," .."" .",
/.;' 'h<,
..' '.,.
." ". .
:,.
' .... ;1'.:,:, '1/('
.7/:':";'; ,i:f
.; .... .. ,
,!;;.' io""
, ..;,.""
'. ..e'
;..... :, 'iii'
:..,,' 7
,
... ''-. '. '1'
,-. ,"
',."'.
. , ' ...'
.. ' ". , ,\ 1
..
; ''',,'
' ..".'
., , '11":-
j' ":{'.
.. .ti.'
' V
" .;
,,::-2' )0:'
." .. ' '.,,"'.
;l! .
.. ,, 'to
.,-; ..', ",,'
, :-"'1
" ' ,',
" ... . .. ",
:;;;:;{.j
-.. ' ..
..," 1 " 1.\' ,.
.' . , \
..,
" ,. '.
,. . .' ... '.' ."'t"-'
.... ,-
" ',. t.' t' ' , . \ ,..
. .j ....
f.,' .-
'"",', ..;p',
'\;,.
,.. ',"', .r:'
.,,' it, . "
.
. :'i'':.''::;'\''
_. ':1'<. ,,'
SuccPiso

1 JZ Ll
2 MOV EAX,l
3 L2, HOV EBX,2
4 HOV ECX,3
5 JC L2

-------
(11
,
10
/ .
"
"- ./
00 01
'-
/'
'-
CI
'Se l'istruzione JZ Ll fallisce, allera l'istruziene 2 si accoppia con la 3 e la 4 con
la 5, per cui l'entrata del BTB relativa a JC L2 elegata al1'indirizzo di MOV EAX, 1. Se
invece JZ Ll ha successo, l'istruzione 3 si accoppia con l'istruzione 4 e JC L2 rimane
disaccoppiata e) l'elemento nel ETB a esso relativo si lega all'indirizzo di MOV EBX, 2.
Questa effetto ha tuttavia un vantaggio in quanta viene sfruttata la' correlazione tra
Ie istruzioni 1 e 5, e si ottengono predizioni differenti a seconda della particolare
evoluzione del programma.
Nel C.MO di corretta predizione, non 5i hanno penalizzazioni. In caso di errata
predizione, U ritardo dipende dalla pipeline d'esecuzione. Nella U-pipe, it ritardo
edi 3 cieli, in quanta l'esito della diramazione si conosce allo stadio EX, Nella V-
pipe, il ritardo einvece di 4 deli in quanta, visto che la diramazione eeseguita in
parallelo a un'altra istruzione, che potrebbe modificare i flag condizionali , l'esito della
diramazione diviene noto solo nello stadio WB.
CI
Figura B.34 Diagramma a stati del predittore a 2 bit utilizzato nel Pentium. Si tratta
di un contatore a saturazione che fornisce i due 'bit di predizione del BTE. Gli stati 00 e
01 portano a. una predizione di fallimento, gli stati 10 e 11 (in grasset,to) portano a una
predizione di succe.sso. Uingresso di un nuovo elemento in BTB si ba solo se la diramazione
viene effettivamente eseguita, conseguentemente 10 stato di ingresso e11.
,
608 Appendice B
Un effetto malta particolare di questa gestione delle diramazioni eQuello di per.
mettere a tali istruzioni di occupare piu di una entrata del BTB. Consideriamo infatti"
iJ seguente frammento di programma:
"
[
l:
r
,
r
I:
-
I-
-
I-
-
l'
r-
I-
t -
I'
1-
311per questo motivo, I'esecuzione simultanea di due operazion.i in virgola. mobile e pOSllibile solo
nel easel in cui una. delle due sia.I'lstruzione nCH, che puo essere avviata nella Vpipe in parallelo COD
la magglor parte delle altre operazloni in virgola mobile e che CODsente i1 trasferimento immediato
nelliaccumulatore dei risultati di tali operazioni. . .
'lOLa separuione dena cache ha. componato alcune eomplicazioni relativamente aJ ma.ntenimento
della. coerenza nei programmi che si automodificano, doe dei programmi che in corso di esecuzione
scrivono pa.rti the verranno eseguite, ovvero: (a.) cbe scrivono a. un indlrizzo daJ Quale nel seguito
viene fatto i1 fetch di un'istruzione; (b) che prelevano come codice il contenuto di una. ce!la. che
in seguito potrebbe essere modificata da una scrittura. In pratica, in queste con9izioni, si pone il
problema di quale delle due cache deve tenere copia della pa.rola indirizzata.
RIOA Le due cache interne
L'architettura. 8086 609
A differenza della CPU 80486, il Pentium ha la cache istruzioni separata dalla cache
dati. Ambedue Ie cache sono di 8 kbyte e di tipo associativo a due viej Ie linee sop.o di
32 byte. La cache del Pentium in modo write-back 0 write-through, diversamente
dalla cache del 486 che lavorava solo con la seconda modalita..
n costruttore ha motivato 1a separazione della cache interna con la necessita. di
evitare interferenze tra il fetch delle istruzioni e I'accesso ai. dati, interferenze che
sarebbero piu marcate a causa della doppia pIpeline 40. In realta, Ie interferenze si
hanno anche con una singola pipeline, come nel micro '80486, per il quale la cache e
unificata.
La lentezza del calcolo in virgola mobile era sempre stata il punto debole della famiglia
8086, anche perche i progettisti Intel avevano sempre giudicato non particolarmente
vantaggioso migliorare questa aspetto funzionale, vista Ie applicazioni tra.dizionali
su Personal Computer non richiedevano una particolare rapidita. nelle operazioni in
virgola mobile. La sempre maggiore importanza assunta dalle applicazioni grafiche
ha reso necessario velocizzare questo processo.
r 3,1 milioni di transistori del Pentium hanno consentito un incremento del 350%,
rispetto alia CPU 80486, delle prestazioni del calcolo in virgola mobile (che salgona a
56.9 SPECfp92), grazie alIa realizzazione, all'interno della FPU, di sezioni dedicate per
j'addizione, la moltiplicazione e la divisione. Gli effetti di Questa logica dedicata sono
sorprendenti: a prescindere dalla precisione, Ie unita. di addizione e di mo1tiplicazione
completano Ie rispettive operazioni in 3 deli di elockj questi tempi d.i latenza sono
nettamente inferiori a quelli del micro 80486, nel Quale un'istruzione FADD richiede 10
deli di e un'istruzione FMUL puo richiederne da 12 a 15.
La FPU del Pentium ein pipeline e si articola in 8 stadi, di cui i primi 4 sono
quelli dell'unita di elaborazione degli interi. Un)operazione in virgola mobile impiega
sia la U-pipe che la V-pipe per eseguire il fetch degli operandi (64 bit), anche se la
sua esecuzione prende posta nella U_pipe
39
.
Grazie alIa pipeline nella FPU, un'operazione di addizione 0 di moitiplicazione,
pur avendo una l",tenza di 3 deli di clock, puo essere avviata in ogni cielo: se 180 pipeline
puc essere mantenuta piena, iI Pentium raggiunge il throughp'Ut di un'addizione 0 una
moltiplicazione per ogni cielo.
B,lO,3 L'unitil per il calcolo in virgola mobile
, ..
, ..
'" ','\>I"'i .
'. .\
.'1


:'
" .,. i:""
"'.
':,,,:;
'.' , .. (,- '
;; c" ,.!;ol
,.,.., ... . ... '
.. '
,. .. :
"\,,:' " .,j', .',
'L "';.
,"'''' '.

. '. \. ..
""" '\.
.. '. i ' "
. ,
, ' .
. ...
, , '
... ' .. oj'
'" ,.;'
.' . '-'J"
..
,
,'"
'. 'I:;;"
_. ..1
", \ . . ..l-"
f .' ' ..
." '., ,r ,
,.... ,11' .
, .
.," "r, i,'"
.":;": ,.0.
,,'" ''''',
.' . ' ..'
'':',.,.. 1.
.
" ., ,., .'
\.{,.
... ,." . I./"
':<V:
J


"',
__ ,/.: :f.'
.' :.' .;.1. i'i
. ';
..t" ",:1'
, .... ," ..
,-;::, ,.. ':'.,' ,
'.' .,
...,..
.. ct
,. '." ' .. '
':;1:::,
."..\ .. ,.roo
- ,. ",." .
,.,..>,"Y .. :"
,,'," ';",'
,.".\ " 'rr.,
.' , .. ,' ....., ", i';
'., >:oJ",
..... t .....
, ,.
.' .
",. , F '\,(+'
';'; '
,:.:<'-;' ,'"
-:,; .':;,.r:'/'
",?:\,:;/',
".J,.,;" ,,,,.:1
".",' 'IL'"
" .
.1 .. "i'"
'.. ''.' P', ..
," .."" .",
/.;' 'h<,
..' '.,.
." ". .
:,.
' .... ;1'.:,:, '1/('
.7/:':";'; ,i:f
.; .... .. ,
,!;;.' io""
, ..;,.""
'. ..e'
;..... :, 'iii'
:..,,' 7
,
... ''-. '. '1'
,-. ,"
',."'.
. , ' ...'
.. ' ". , ,\ 1
..
; ''',,'
' ..".'
., , '11":-
j' ":{'.
.. .ti.'
' V
" .;
,,::-2' )0:'
." .. ' '.,,"'.
;l! .
.. ,, 'to
.,-; ..', ",,'
, :-"'1
" ' ,',
" ... . .. ",
:;;;:;{.j
-.. ' ..
..," 1 " 1.\' ,.
.' . , \
..,
" ,. '.
,. . .' ... '.' ."'t"-'
.... ,-
" ',. t.' t' ' , . \ ,..
. .j ....
f.,' .-
'"",', ..;p',
'\;,.
,.. ',"', .r:'
.,,' it, . "
.
. :'i'':.''::;'\''
_. ':1'<. ,,'
SuccPiso

1 JZ Ll
2 MOV EAX,l
3 L2,
HOV EBX,2
4 HOV ECX,3
5 JC L2

-------
(11
,
10
/ .
"
"-
./
00
01
'-
/'
'-
CI
'Se l'istruzione JZ Ll fallisce, allera l'istruziene 2 si accoppia con la 3 e la 4 con
la 5, per cui l'entrata del BTB relativa a JC L2 elegata al1'indirizzo di MOV EAX, 1. Se
invece JZ Ll ha successo, l'istruzione 3 si accoppia con l'istruzione 4 e JC L2 rimane
disaccoppiata e) l'elemento nel ETB a esso relativo si lega all'indirizzo di MOV EBX, 2.
Questa effetto ha tuttavia un vantaggio in quanta viene sfruttata la' correlazione tra
Ie istruzioni 1 e 5, e si ottengono predizioni differenti a seconda della particolare
evoluzione del programma.
Nel C.MO di corretta predizione, non 5i hanno penalizzazioni. In caso di errata
predizione, U ritardo dipende dalla pipeline d'esecuzione. Nella U-pipe, it ritardo
edi 3 cieli, in quanta l'esito della diramazione si conosce allo stadio EX, Nella V-
pipe, il ritardo einvece di 4 deli in quanta, visto che la diramazione eeseguita in
parallelo a un'altra istruzione, che potrebbe modificare i flag condizionali
,
l'esito della
diramazione diviene noto solo nello stadio WB.
CI
Figura B.34 Diagramma a stati del predittore a 2 bit utilizzato nel Pentium. Si tratta
di un contatore a saturazione che fornisce i due 'bit di predizione del BTE. Gli stati 00 e
01 portano a. una predizione di fallimento, gli stati 10 e 11 (in grasset,to) portano a una
predizione di succe.sso. Uingresso di un nuovo elemento in BTB si ba solo se la diramazione
viene effettivamente eseguita, conseguentemente 10 stato di ingresso e11.
Packed Byte: 8 byte impa.cchettati
63 32 31 16 15 8 7 0
I I I I I I I II
L'arcbitettura. 8086 611
Estato introdotto nel Novembre del 1995. Nella prima versione, la massima frequenza
di clock era pari a 150 MHz,
Packed Word: 4,parole impaccbettate
63 32 31 16 15 0
I ! I I I
Packed Double-Word: 2 doppie parole impaccbettate
63 32 31 0
[ I I
II Pentium MMX presenta un'architettura superscalare can 2 pipeline intere articolate
in 6 stadi e una pipeline MMX a 9 stadi parzialmente integrata in una delle due pipe-
line intere (come mostrato in FiguraB,36): rispetto alIa pipeline intera del Pentium,
ogni pipeline dispone di uno stadio aggiuntivo, indicato con F (fetch) in FiguraB.36,
per 1a deterrninazione della lunghezza. delle istruzioni; tra questa stadio aggiuntivo e
il successivo epresente una FIFOI che evita il blocco della pipeline in seguito a uno
stallo nello stadio di fetch, La stadio F avvia due istruzioni MMX se ciascuna di esse
,
I pili corta di 7 byte. E stato raddoppiato il numero dei buffer di scrittura: si passa
dai 2 buffer del Pentium (uno per ciascuna pipeline) ai 4 buffer del PentiUIll MMX
(condivi,i daUe due pipeline),
B,12 Il Pentium Pro
B.IL2 La struttura interna
Figura B.35 Nuov,a tipologia di dati per tecnologia MMX. Notare che l'estensione MMX
cODsidera la parola come formata da 16 bit contro gli usuali 32,
n software compilativo per la tecnologia MMX e il piu efficiente meccanismo di pre-
dizione dei salti condizionati incrementano del 60% -rispetto at Pentium Ie prestazioni
multimediali.
..
'.'. '''','
..,{ ,
','l, '.
" :..
',. f::! (

",
,"I"
:'-
...
.' ,:r;
" .... '"
",
" ',,',---'
.J '/l';
.. ' 'I":
--.,',
". "
I
;tJ
,-.
I
,,,
,ji".'.

",1,
'.
, ", - '.' '10','_ ": 'Lo}
':, ..... '\".,'
(....
." .,.
: .... ,.. ' ., .
,
:.,./']1'\'\-'
, .. .,.
F\-equenza
166/200/233 MHz
266 MHz
Tecnologia
0,28 micron
0,25 micron
Transistor
4,500,000
4,500,000
Nome
P55
P55
Data
1997
1998
Appendice B
In realU" i TAG della. cache dei dati sana a tripla. porta.: la lena porta. rende possibile 130 lettura.
da parte dei circuiti per 130 coerenza. della cache in ambiente multiprocessing.
4:lNaturaJmente, Ie due ALU non poasono accedere conteroporaneamente a. uno stesso blocco della.
cache dei dati.
43Prima del Pentium MMX, era sta.to introdotto il Pentium Pro_ Quest'ultimo ba rappresentato
un salta generazionale rispetto al Pentium, mentre il Pentium MMX resta. nella linea architetturale
del Pentium. Per questo motivo si e ritenuto dj far precedere I'esposizione del Pentium MMX a
quella del Penuum Pro.
La Multi-Media Extension mette a disposizione 8 nuovi registri di uso generale (de
nominati MMO, .. "MM7) e 57 istruzioni supplementari SIMD (Single Instruction-
Multiple Data) che p'ossono operare in par-allelo su insiemi di dati (8 byte, 4 word, 2
doubleword, come mostrato in Figura B,35), velocizzando cosl i cieli di calcolo del mi'
croprocessore. I nuovi registri sene presenti nelle successive CPU Intel e vanno quindi
considerati come un'estensione a.I modelio di programmazione di FiguraB.29. L'e
stensione MMX consente alte prestazioni (gra.fiche, audio, video e di comunicazione).
B.Il.I L'estensione MMX
Tabella B.7 Caratteristiche dei microprocessori Pentium con tecnologia MMX.
-,'hPf..
r., "".':,;, '.
,I .
,-Jtm:
"",.,,' .
;; ..
r;
,: (; ;.,' .
';,,", ," "oiI
:",,;' ,
. '_" ," tl..
; :-;', .
, ,-... -
"""" ,,',
: ...J '"' '",_,
.....,-,- ,-.
, . :".1: ;
- ......:.'...... - "j'
. '-,'; ", .. -..
'"',:.,.. '.f.",'.'-'
, '.
ix..
,A':
-;;;,'t',\'; ':, ..
- .'0.",,'.' ,!':, ,.
"', -'., -,,,:
" :', ,;,
.. ,.\.!. '
. .
. ,;;',".l .

, <,--.,:1.,'
:;- ..
E . intro?otto del .Si trat.ta una macchiD:a nella linea.
che. mtegra. ClI'ca IDlhom dl :on tecnol:>gm da, <':1::':: ..
0,35 m Sistemato III un PGA da 296 pledlDL Nella pnma verslone, la if,':
masslma frequenza dt clock era 166 MHz.
Rispetto al Pentium, raddoppia anche la dimensione delle due cache integrate" iii:.{t;"
che eliventano di 16 kbyte ciascuna. Conseguentemente il costruttore ha valutato di -
portare a 4 il grade eli associativita, suddividendola in 4 vie: '
. , ." .',
L'innovazione el'estensione MMX per la multimedialita:,
t .
. La Tabella. B.7 mostra Ie diverse realizzazioni del processore Pentium MMX fi.I1? '
all'mtroduzione del Pentium II. .
: ..
I.';""
,-:.:, v',,'

.-":,'.:;:
" '" " ." 1_:
'" ..-"":.,' ,:'.;!"

.;:<;:,,' >
'c'; j ".:! .pi:."
;0;,,'
... .:.;
.- ,'ru':
, :" ;:c;i/\:t
l
., ;;"\".'
"",,-;:<-.. ,f-f',
','..'<,'-:.. :,
.. ,-::: ,.,..
-
, -..:'>';;:,' -Ti.
,. - 0, ",
c. (",c' ,. '.'1... '
,- ,'I, ,'''1 .
,,' .. , t,.,
.-. '.. ,;',-
'-' ..
,
' ".' ' ',,' '
., .. ..:- :::. 'f.')-
.' ",: ,: '
, - " '" ' j"
. it,'
" 't,

, ' ,>, '
-.'" 'l:'
.,
", '(' ','
" "
." .'/,..
B.ll Xl Pentium con tecnologia MMX
610
Per rendere possibile l'accesso simultaoeo agli operandi da. parte di due istruzioni,
i TAG della cache dei dati sene a doppia porta, cioe leggibili contemporaneamente da
parte di entrambe Ie ALU
41
. La cache dei dati non ea doppia porta, rna esuddivisa
in 8 moduli intedacciati
42
.
\
I
J
\
)
)
\
\
'I
I
j
,
\
, I
Packed Byte: 8 byte impa.cchettati
63 32 31 16 15 8 7 0
I I I I I I I II
L'arcbitettura. 8086 611
Estato introdotto nel Novembre del 1995. Nella prima versione, la massima frequenza
di clock era pari a 150 MHz,
Packed Word: 4,parole impaccbettate
63 32 31 16 15 0
I ! I I I
Packed Double-Word: 2 doppie parole impaccbettate
63 32 31 0
[ I I
II Pentium MMX presenta un'architettura superscalare can 2 pipeline intere articolate
in 6 stadi e una pipeline MMX a 9 stadi parzialmente integrata in una delle due pipe-
line intere (come mostrato in FiguraB,36): rispetto alIa pipeline intera del Pentium,
ogni pipeline dispone di uno stadio aggiuntivo, indicato con F (fetch) in FiguraB.36,
per 1a deterrninazione della lunghezza. delle istruzioni; tra questa stadio aggiuntivo e
il successivo epresente una FIFOI che evita il blocco della pipeline in seguito a uno
stallo nello stadio di fetch, La stadio F avvia due istruzioni MMX se ciascuna di esse
,
I pili corta di 7 byte. E stato raddoppiato il numero dei buffer di scrittura: si passa
dai 2 buffer del Pentium (uno per ciascuna pipeline) ai 4 buffer del PentiUIll MMX
(condivi,i daUe due pipeline),
B,12 Il Pentium Pro
B.IL2 La struttura interna
Figura B.35 Nuov,a tipologia di dati per tecnologia MMX. Notare che l'estensione MMX
cODsidera la parola come formata da 16 bit contro gli usuali 32,
n software compilativo per la tecnologia MMX e il piu efficiente meccanismo di pre-
dizione dei salti condizionati incrementano del 60% -rispetto at Pentium Ie prestazioni
multimediali.
..
'.'. '''','
..,{ ,
','l, '.
" :..
',. f::! (

",
,"I"
:'-
...
.' ,:r;
" .... '"
",
" ',,',---'
.J '/l';
.. ' 'I":
--.,',
". "
I
;tJ
,-.
I
,,,
,ji".'.

",1,
'.
, ", - '.' '10','_ ": 'Lo}
':, ..... '\".,'
(....
." .,.
: .... ,.. ' ., .
,
:.,./']1'\'\-'
, .. .,.
F\-equenza
166/200/233 MHz
266 MHz
Tecnologia
0,28 micron
0,25 micron
Transistor
4,500,000
4,500,000
Nome
P55
P55
Data
1997
1998
Appendice B
In realU" i TAG della. cache dei dati sana a tripla. porta.: la lena porta. rende possibile 130 lettura.
da parte dei circuiti per 130 coerenza. della cache in ambiente multiprocessing.
4:lNaturaJmente, Ie due ALU non poasono accedere conteroporaneamente a. uno stesso blocco della.
cache dei dati.
43Prima del Pentium MMX, era sta.to introdotto il Pentium Pro_ Quest'ultimo ba rappresentato
un salta generazionale rispetto al Pentium, mentre il Pentium MMX resta. nella linea architetturale
del Pentium. Per questo motivo si e ritenuto dj far precedere I'esposizione del Pentium MMX a
quella del Penuum Pro.
La Multi-Media Extension mette a disposizione 8 nuovi registri di uso generale (de
nominati MMO, .. "MM7) e 57 istruzioni supplementari SIMD (Single Instruction-
Multiple Data) che p'ossono operare in par-allelo su insiemi di dati (8 byte, 4 word, 2
doubleword, come mostrato in Figura B,35), velocizzando cosl i cieli di calcolo del mi'
croprocessore. I nuovi registri sene presenti nelle successive CPU Intel e vanno quindi
considerati come un'estensione a.I modelio di programmazione di FiguraB.29. L'e
stensione MMX consente alte prestazioni (gra.fiche, audio, video e di comunicazione).
B.Il.I L'estensione MMX
Tabella B.7 Caratteristiche dei microprocessori Pentium con tecnologia MMX.
-,'hPf..
r., "".':,;, '.
,I .
,-Jtm:
"",.,,' .
;; ..
r;
,: (; ;.,' .
';,,", ," "oiI
:",,;' ,
. '_" ," tl..
; :-;', .
, ,-... -
"""" ,,',
: ...J '"' '",_,
.....,-,- ,-.
, . :".1: ;
- ......:.'...... - "j'
. '-,'; ", .. -..
'"',:.,.. '.f.",'.'-'
, '.
ix..
,A':
-;;;,'t',\'; ':, ..
- .'0.",,'.' ,!':, ,.
"', -'., -,,,:
" :', ,;,
.. ,.\.!. '
. .
. ,;;',".l .

, <,--.,:1.,'
:;- ..
E . intro?otto del .Si trat.ta una macchiD:a nella linea.
che. mtegra. ClI'ca IDlhom dl :on tecnol:>gm da, <':1::':: ..
0,35 m Sistemato III un PGA da 296 pledlDL Nella pnma verslone, la if,':
masslma frequenza dt clock era 166 MHz.
Rispetto al Pentium, raddoppia anche la dimensione delle due cache integrate" iii:.{t;"
che eliventano di 16 kbyte ciascuna. Conseguentemente il costruttore ha valutato di -
portare a 4 il grade eli associativita, suddividendola in 4 vie: '
. , ." .',
L'innovazione el'estensione MMX per la multimedialita:,
t .
. La Tabella. B.7 mostra Ie diverse realizzazioni del processore Pentium MMX fi.I1? '
all'mtroduzione del Pentium II. .
: ..
I.';""
,-:.:, v',,'

.-":,'.:;:
" '" " ." 1_:
'" ..-"":.,' ,:'.;!"

.;:<;:,,' >
'c'; j ".:! .pi:."
;0;,,'
... .:.;
.- ,'ru':
, :" ;:c;i/\:t
l
., ;;"\".'
"",,-;:<-.. ,f-f',
','..'<,'-:.. :,
.. ,-::: ,.,..
-
, -..:'>';;:,' -Ti.
,. - 0, ",
c. (",c' ,. '.'1... '
,- ,'I, ,'''1 .
,,' .. , t,.,
.-. '.. ,;',-
'-' ..
,
' ".' ' ',,' '
., .. ..:- :::. 'f.')-
.' ",: ,: '
, - " '" ' j"
. it,'
" 't,

, ' ,>, '
-.'" 'l:'
.,
", '(' ','
" "
." .'/,..
B.ll Xl Pentium con tecnologia MMX
610
Per rendere possibile l'accesso simultaoeo agli operandi da. parte di due istruzioni,
i TAG della cache dei dati sene a doppia porta, cioe leggibili contemporaneamente da
parte di entrambe Ie ALU
41
. La cache dei dati non ea doppia porta, rna esuddivisa
in 8 moduli intedacciati
42
.
\
I
J
\
)
)
\
\
'I
I
j
,
\
, I

)
\
I
I
I
r
I
\
\
1
I
1
12 stadi
3-vie
5
BTB 4-vie 512-entrate
4-bit di storia, predittore a 2-livelli
Fuod ordine
Si
da 150 a 200 MHz
60 MHz
64-bit
36-bit
8 kbyte dati, 8 kbyte istruzioni
Modello di Esecuziane
Esecuzione Speculativa
Frequenza di CPU
Frequenza Bus
Bus Dati
Bus Indirizzi
Cache Ll integrata
Cache L2 da 256 a 1024 kbyte
Pipeline
Superscalare
Unita. di Esecuzione
Branch Prediction
L'architettura 8086 613
Le earatteristiehe salienti della CPU sono riportate in Tabella B,8,
Dispatch/Execute Corrisponde ai 2 successivi stadi della pipeline (ROB-Rd, HE)
e costituisce il nueleo di esecuzione fuori ordine. La stadio RS termina con un
certo numero porte alle quali sono attaccate Ie unita. d.i esecuzione (ciascuna con
compiti specifici).
Retirement: Corrisponde agli ultimi 2 stadi della pipeline e c05tituisce l'unita di
recupero in ordine. Si chiama recupero (Retirement) il processo che modifica Io
stato della tnacchina con i risultati speculativi. n recupero deve avvenire secondo
l'ordine originario di programma.
Le relazioni tra Ie tre unita sono evidenziate in FigUra B.39. _
L'organizzaziane di FiguraB.39 consente d.i syincolarsi dalla rigida sequenzialita.
delle istruzioni del programma. Le tre unita comunicano attraverso una memoria
(di tipo assoeiativo), l'Instruction Pool 0 Reordering Buffer (ROB) (Cfr, 10.4), come
schematizzato in FiguraB.39. nPentium Pro ha un madello di esecuzione leggermente
B.12.1 La pipeline e l'esecuzione dinamica
La pipeline del Pentium Pro eillustrata in Figura B.38. Essa puo essere riguardata
come suddivisa in 3 parti [Intb], [Inte] , corrispondenti aile tre seguenti unita. funzionali.
Fetch/Decode Corrisponde ai primi stadi della pipeline fino allo stadio RAT incluso,
e costituisce il front-end di emissione in ordine.
In FiguraB.37 viene data una schematizzazione dettagliata della CPU. La figura
ci guidera. nell'illustrazione successiva delle unita. che rendono possibile l'esecuzione
dinamica.
Tabella B.a Caratteristiche principaU del Pentium Pro.
Stadi deUa
- pipeUne MMX
dis&Ccoppiati

Solo
pipeline
Wmul MR/W
..............................

t::::::::==:::: :.. .
, E1 , i E3
: ...... , ........:. _. _ ... i
StacH
MMX
lIItegra.ti nella.
inhra

Appendice B
I "" I " I n, I D' I e 1"";Vii""
ULa cache dati e di 8 kbyte associativa. a 2 vie, con linee di 32 byte. La. cache istruzioni e pure di
8 kbyte , con linee di 32 byte, rna eorganizzata su 4 vie.
, I
..
'''",
-, .:.,' ,

,
' .. , h ,-
, . '.'-"." " ,"
.. r',.
.",
-';'''''"" .-.
;.'j.<,;. .. ,.
, - ,,,,.,
d,",:
',;,' ........ 01' ".'.
-:...
,
"... ,U'},:.:.::.
",' _,_(COo,
" ',... ",,, .
."\.,
", -.."., .'
.:'" .
, ,. ;;.. "
-.',"' ",'
'", i:.; -:; '.> ,
:. .;.
, < "j
\:,',
',' . ',.' "!;' "\,
. -.'." , -
.:,.. ::,- " "
,
.;,. J;.. " .. ,:t .,
.:' '";,:;.,

..-- V.,
Figura B.36 Struttura. della pipeline MMX. Rispetto alIa pipeline del Pentium compare
\0 stadia: 10 stadia F responsabile della decodifica dei preAssi. Gli stadi PF,F, Dl. D2 ed 'T,,/
E sooo iotegrati nella pipeline intera. Gli stadi MR/W, Mex, Wm/M2 M3 e Wmul sono
invece disaccoppiati. Gli stadi MMX svolgono Ie seguenti funzioni. MR/W: lettura in '::;':;;:Jt>r't;i""
per .Ie MMX.; M.ex: delle 0 :iclo per .;, ',:'.:.;
Ie molttphcazlOD.lj Wm/M2: memonzzazlOoe delle operazlOOl esegutte In un ctcio dt ciock 0 'l<:
secondo cicIo per Ie moltiplicazioni; M3: Terzo cicio di clock per Ie moltiplicazioni; Wmul:
memorizzazione dei risultati delle ::: ';;;:'-,:,:',
,..
',:;;i-;'-":--:f
"."' .... , f,
: ..' ': . ,! ".'
nPentium Pro [Inte], [Intb] estato realizzato in teenologia CMOS da 0,35 micron,""?",;,'::,, ..
11 chip integra circa 5,5 milioni di transistori ed esistemato in un PGA a doppia cavita ',j't'
, " \: ,. .....G;,'.', __."... ..
da 387 pledllli. ' ...::,:<vi'J':::.:;;
.,.,. . ..',
Pur mantenendo la. compatibilita software con i modelli precedenti
1
il
Pro introduce alcune significative innovazioni, corne l'architettura superpipelined, una'
cache di secondo livello e, soprattutto, il meccanismo di esecuzione dinamica (detta.
anche esecuzione speculativaL che comp'prta una revisione della stessa struttura
terna del microprocessore rispetto a quella del Pentium. Per rimarcare questa f(i
si parla di arehitettura P6, a denotare l'architettura del Pentium Pro e dei succes-
sivi. n saIto generazionale del Pentium Pro rispetto al Pentium eun
architetturale piuttosto che tecnologico.
nmodello di programmazione eancora queUci di FiguraB.39
1
tuttavia il Pentium
Pro al suo interno dispone di 40 registri di uso generale, non visibili al programmatore,' ':7:':7,']{? lfti:':
su cui Ie effettive e modelIo di. ..;:1.:t:!;"P:', '
prograrnmazlOne vengono automatlcamente mappatJ SUI regtstn mterm secondo un ',. '1r::'-
tecnica come register renaming. L'incremento del numero di registri aumenta .
molto I effielenza della CPU, ' . ' ""'"" ,
. n Pen.tium Pro presenta superscalare. con la pi?eline
m 12 stadt. L'aumento del numero dJ stadJ) consente dt norma dt semphficare
operazioni di stadio, con cio di aumentare la
afferma che la plpehne a 12 stadi LDcrementa del 50% la frequenza mterna nspetto al ",' :i{;:/:.,
Pentium, riducendo del 33% il tempo di permanenza in ogni singolo stadio. :'"
Oltre aIle due cache di primo Iivell0
44
,gia presenti nel Pentium, il Pentium Pro ttl
presenta una cache (unificata) di secondo livello (di 256 kbyte, 512 kbyte 0 1024 kbyte",.,:;F;/
a seconda del modello), montata sui contenitore ceramico che alloggia la CPU, can .. \ ... '
cui comunica attraverso un bus a 64 bit ottimizzato per- questa impiego. . ..
:y.
'" .,.1:...' -:1':;
i'_''', ,,,{,.
,:q."":,, '''1;,'
"'.: ':". 'I'{'
.-,:'.; .....,
<.:-;:i;':; ',.:};.,
.. ..

,1: "'1 :If;'"
.......
612

)
\
I
I
I
r
I
\
\
1
I
1
12 stadi
3-vie
5
BTB 4-vie 512-entrate
4-bit di storia, predittore a 2-livelli
Fuod ordine
Si
da 150 a 200 MHz
60 MHz
64-bit
36-bit
8 kbyte dati, 8 kbyte istruzioni
Modello di Esecuziane
Esecuzione Speculativa
Frequenza di CPU
Frequenza Bus
Bus Dati
Bus Indirizzi
Cache Ll integrata
Cache L2 da 256 a 1024 kbyte
Pipeline
Superscalare
Unita. di Esecuzione
Branch Prediction
L'architettura 8086 613
Le earatteristiehe salienti della CPU sono riportate in Tabella B,8,
Dispatch/Execute Corrisponde ai 2 successivi stadi della pipeline (ROB-Rd, HE)
e costituisce il nueleo di esecuzione fuori ordine. La stadio RS termina con un
certo numero porte alle quali sono attaccate Ie unita. d.i esecuzione (ciascuna con
compiti specifici).
Retirement: Corrisponde agli ultimi 2 stadi della pipeline e c05tituisce l'unita di
recupero in ordine. Si chiama recupero (Retirement) il processo che modifica Io
stato della tnacchina con i risultati speculativi. n recupero deve avvenire secondo
l'ordine originario di programma.
Le relazioni tra Ie tre unita sono evidenziate in FigUra B.39. _
L'organizzaziane di FiguraB.39 consente d.i syincolarsi dalla rigida sequenzialita.
delle istruzioni del programma. Le tre unita comunicano attraverso una memoria
(di tipo assoeiativo), l'Instruction Pool 0 Reordering Buffer (ROB) (Cfr, 10.4), come
schematizzato in FiguraB.39. nPentium Pro ha un madello di esecuzione leggermente
B.12.1 La pipeline e l'esecuzione dinamica
La pipeline del Pentium Pro eillustrata in Figura B.38. Essa puo essere riguardata
come suddivisa in 3 parti [Intb], [Inte] , corrispondenti aile tre seguenti unita. funzionali.
Fetch/Decode Corrisponde ai primi stadi della pipeline fino allo stadio RAT incluso,
e costituisce il front-end di emissione in ordine.
In FiguraB.37 viene data una schematizzazione dettagliata della CPU. La figura
ci guidera. nell'illustrazione successiva delle unita. che rendono possibile l'esecuzione
dinamica.
Tabella B.a Caratteristiche principaU del Pentium Pro.
Stadi deUa
- pipeUne MMX
dis&Ccoppiati

Solo
pipeline
Wmul
MR/W
..............................

t::::::::==:::: :.. .
, E1 , i E3
: ...... , ........:. _. _ ... i
StacH
MMX
lIItegra.ti nella.
inhra

Appendice B
I "" I " I n, I D' I e 1"";Vii""
ULa cache dati e di 8 kbyte associativa. a 2 vie, con linee di 32 byte. La. cache istruzioni e pure di
8 kbyte , con linee di 32 byte, rna eorganizzata su 4 vie.
, I
..
'''",
-, .:.,' ,

,
' .. , h ,-
, . '.'-"." " ,"
.. r',.
.",
-';'''''"" .-.
;.'j.<,;. .. ,.
, - ,,,,.,
d,",:
',;,' ........ 01' ".'.
-:...
,
"... ,U'},:.:.::.
",' _,_(COo,
" ',... ",,, .
."\.,
", -.."., .'
.:'" .
, ,. ;;.. "
-.',"' ",'
'", i:.; -:; '.> ,
:. .;.
, < "j
\:,',
',' . ',.' "!;' "\,
. -.'." , -
.:,.. ::,- " "
,
.;,. J;.. " .. ,:t .,
.:' '";,:;.,

..-- V.,
Figura B.36 Struttura. della pipeline MMX. Rispetto alIa pipeline del Pentium compare
\0 stadia: 10 stadia F responsabile della decodifica dei preAssi. Gli stadi PF,F, Dl. D2 ed 'T,,/
E sooo iotegrati nella pipeline intera. Gli stadi MR/W, Mex, Wm/M2 M3 e Wmul sono
invece disaccoppiati. Gli stadi MMX svolgono Ie seguenti funzioni. MR/W: lettura in '::;':;;:Jt>r't;i""
per .Ie MMX.; M.ex: delle 0 :iclo per .;, ',:'.:.;
Ie molttphcazlOD.lj Wm/M2: memonzzazlOoe delle operazlOOl esegutte In un ctcio dt ciock 0 'l<:
secondo cicIo per Ie moltiplicazioni; M3: Terzo cicio di clock per Ie moltiplicazioni; Wmul:
memorizzazione dei risultati delle ::: ';;;:'-,:,:',
,..
',:;;i-;'-":--:f
"."' .... , f,
: ..' ': . ,! ".'
nPentium Pro [Inte], [Intb] estato realizzato in teenologia CMOS da 0,35 micron,""?",;,'::,, ..
11 chip integra circa 5,5 milioni di transistori ed esistemato in un PGA a doppia cavita ',j't'
, " \: ,. .....G;,'.', __."... ..
da 387 pledllli. ' ...::,:<vi'J':::.:;;
.,.,. . ..',
Pur mantenendo la. compatibilita software con i modelli precedenti
1
il
Pro introduce alcune significative innovazioni, corne l'architettura superpipelined, una'
cache di secondo livello e, soprattutto, il meccanismo di esecuzione dinamica (detta.
anche esecuzione speculativaL che comp'prta una revisione della stessa struttura
terna del microprocessore rispetto a quella del Pentium. Per rimarcare questa f(i
si parla di arehitettura P6, a denotare l'architettura del Pentium Pro e dei succes-
sivi. n saIto generazionale del Pentium Pro rispetto al Pentium eun
architetturale piuttosto che tecnologico.
nmodello di programmazione eancora queUci di FiguraB.39
1
tuttavia il Pentium
Pro al suo interno dispone di 40 registri di uso generale, non visibili al programmatore,' ':7:':7,']{? lfti:':
su cui Ie effettive e modelIo di. ..;:1.:t:!;"P:', '
prograrnmazlOne vengono automatlcamente mappatJ SUI regtstn mterm secondo un ',. '1r::'-
tecnica come register renaming. L'incremento del numero di registri aumenta .
molto I effielenza della CPU, ' . ' ""'"" ,
. n Pen.tium Pro presenta superscalare. con la pi?eline
m 12 stadt. L'aumento del numero dJ stadJ) consente dt norma dt semphficare
operazioni di stadio, con cio di aumentare la
afferma che la plpehne a 12 stadi LDcrementa del 50% la frequenza mterna nspetto al ",' :i{;:/:.,
Pentium, riducendo del 33% il tempo di permanenza in ogni singolo stadio. :'"
Oltre aIle due cache di primo Iivell0
44
,gia presenti nel Pentium, il Pentium Pro ttl
presenta una cache (unificata) di secondo livello (di 256 kbyte, 512 kbyte 0 1024 kbyte",.,:;F;/
a seconda del modello), montata sui contenitore ceramico che alloggia la CPU, can .. \ ... '
cui comunica attraverso un bus a 64 bit ottimizzato per- questa impiego. . ..
:y.
'" .,.1:...' -:1':;
i'_''', ,,,{,.
,:q."":,, '''1;,'
"'.: ':". 'I'{'
.-,:'.; .....,
<.:-;:i;':; ',.:};.,
.. ..

,1: "'1 :If;'"
.......
612

richiesto questo ulteriore passag&'J,
Sana Ie micro-op a entrare nel ROB.
Una volta eseguite Ie istruzioni vengono reimrnesse nel pool e cia qui prelevate
neB'ordine di programma, concludendo con la fase WB.
615
Ltarchitettura 8086
Fetch/
Dispatch/
Retire
Decode
Execute
Unit
Unit
Unit
"
,
, "
pon
Pon pon
2
3

lFUO
I U1
IFU2 II
ROB
I
I
IRRFI
RAT
RS
8T80 8T81 'DO
ID1
Rd
pon pon
a 1
Figura B.39 Schematizzazione delle interrelazioni tra Ie principali unita. del Pentium Pro
di interesse per quanto riguarda I'esecuzione fuori ordine. In questa e nelle figure che seguono
si sono mantenute Ie dizioni in lingua inglese. Le istruzioni entrano nel pool- il ROB - dopo
essere state decodificate e trasformate in sequenze di micro-op dall'unita Fetch/Decode, da
qui possono essere prelevate ed eseguite in ordine non strettamente sequenziale dall'unita di
Dispatch/Execute che Ie reimmette nel pool una volta eseguite, ,Le istruzioni vengono defi-
nitivamente estratte dall'unita. Retire, nelPordine originale dettato dal programma, quando
risultano completate.
La parte fuori ordine esamina Ie micro-ap in ROB e se ci sono Ie concti,zioni per
la lorn esecuzione vengono avviate (scheduled) alia porta dovuta, Le coodizio-
ni per l'esecuzione si riferiscono aBe dipendenze e alla disponibiJita d.i risorse
(porte/unita),
Figura B.38 La pipeline del Pentium Pro, La. pipeline e a 12 s.tadi. La parte corrispon-
dente aBe porte non viene conta.ta come stadio della pipeline; alle porte sono collegate Ie
unita. esecutive, come illustrato nella figura roe segue. La pipeline resta sostanzialmente
invariata nei 'modelli successivi della ser'ie P6 (Pentium II e Pentium III). Le differenze so-
no essenzialmente dovute al maggior numero di unita. esecutive; per esempio, a partire cial
Pentium II estata integrata l'estensione MMX come unita funzion3.Ie collegata. a una delle
porte.
j."
e""
.. .",'

,-" .--
...".
..
,. ..
.. ,'::
.-' .: .";'
,r., ;'<
, .. ,;" "
; ,.,,'.'..'"
','.'
.... ... . ;
."-,
f
,,',.," c,' i.,
-- " '"
,,'
" ." ..

.'_C' "., ..
;l'.", :,-r.
" ,'::'i '.,"
I' ",'"'-" . ,' .-'
",.',;;" :',:;'

_-' .).
"";. ,-;' ,',,'
'; , ,I" '. ,
,. '. !
:.... ;(/::'t :;i<'
... ,.;.':':; ." ....

},:C" "j ... ",
: f:
,":'" ";...
':'i-""-' 'Ir:" ,
,.;__ ,.1:':....,.

.
: !,frj:
,'-.. , .... '
, ::0,"",

..., .... .",'.
...'''.. ... ,./
',."'.-.'.'"
,'., .. -- .,
,;',tr<:';
.,'t.-,
.....",'
.<
..... .. ;:fi'i",
.
. .:. . ,,'
.',,' "' ".

.. JI:l:f:'
\... , .. ' '.
''';;.. .:
...-<.:.'.' ,f .
.. '
",
,: ...,,' ,"
';,
,-, ,'" "

.. ..v.';/'
) ..
.. ... Y.
"'>t_:
'., ' .. ", .' ..
. A ....
." "ft'-"
',.. ',;-:"

"1',"
" . ," :,..:;-,
'..


," ,n" :,1".. "
i;': ,"<:'.':,
, """,,;,"", 'jk":':-
.. ".,. .
.. ,.>.' .
- - .
.,.. (Y;=':
_ ,/i'.
,;, ."'. .
, "
.. '
<..
':
- ,.'-
, f'. :"":,,,_';, ,r';
''':'
-, ...
, . " v', .
'."',>;:.: ::,;"&;::'
'\:.,.,,,;:
.,-", '" ,.c
.,.,';:"-' ". ..t;:
,',;,.! 'I"
'i<:;:t!([
, . ,.' >:. ' ,
' 1;,'-

,.' ',,-'
"
"'<;"'1"'"
.. .. ,,, ..
,
" "Y"'.'J .'(1"
' .. r.i <
"
'.'"
."11f,j<'!,,."", s..... '
Appendice B
diverso rispetto a queUo illustrato al Capitolo 10, in cui si ipotizzava che Ie istruzioni
non eseguibili a causa della dipendenza dal risultato delle precedenti veniva trattenuto
nell'unita di emissione. Nel Pentium Pro Ie istruzioni una volta decodificate vengono
avviate al ROB (sempre che ci sia posta; it ROB ha 40 posizioni) ed equi che vengono
prelevate queUe in condizione di eseguire,
Schematicamente il funzionamento eil seguente,
<l.6Evidentemente i formati originali delle istruzioni architetturali non erano adeguati e hanna
n front-end eli emissione in ardine effettua il prelievo) la decodifica e Pemissione
delle istruzioni verso it pool. A parte Ie complicazioni di dettaglio, legate a1
numero di quali e Quante istruzioni possono essere decodificate per colpo di clock,
la decodifica delle istruzioni produce sequenze di micro-operazioni 0 micro-op45.
..'
Figura B.3T Struttura. dettagliata del Pentium Pro. La figura mostra che il processore
presenta due bus verso llesterno: uno e il bus eli sistema, l'altro e il bus verso lao cache
di secondo llvello_ La logica di CPU gestisce i due bus in modo indipendentej si parla di
a.rcmtettura nm (Dual Independent Bus). Ovvia.mente, la possibilitA. di accedere ai due bus.
in modo parallelo e indipendente migliora le prestazioni.
S,dtfll BUI
12 (ilhr
12(Khe 1M
,
Bus InlfrlOll:tOnit
flll lion fdth Lnit
II KUhe
Nut-IP
Unit
IrIslf\Ktion llt<odtt
Br\(h
S....ple Sinoplt
hrl)tt

Buffer lotegtr
Irntrudilll Instruction lnslrudioo
Urn,
llt<061r Ot<Olltr ()e(odtr
t'licriCOdt
Indrudion
R.gishr Aliu hbl.
I
S.qUtnur
Rtlir. Unit
Intel
1I OCICM
l'Iemory
RtOrdtl' Buffer Inslrudion Poall
A.reNtte!... r.
RtOriStr
Rtljishrs
Buffer
Ruernlion StIDon
j
I I I
j

IrItt9'"
....'"
Hlmry
P_l
'0;-.1 klt.r!lct
Uri'
Uril
Uril
\lo,'
\lo,'
,
To BUrKh rtsd Built!"
I
,
IrIltfNl. DlIh-Rnulh BU1U llnslr\l(rion PooU
\
\
"
I,
\
1
I
)
!
I
I
I
I
,

richiesto questo ulteriore passag&'J,
Sana Ie micro-op a entrare nel ROB.
Una volta eseguite Ie istruzioni vengono reimrnesse nel pool e cia qui prelevate
neB'ordine di programma, concludendo con la fase WB.
615
Ltarchitettura 8086
Fetch/
Dispatch/
Retire
Decode
Execute
Unit
Unit
Unit
"
,
, "
pon
Pon pon
2
3

lFUO
I U1
IFU2 II
ROB
I
I
IRRFI
RAT
RS
8T80 8T81 'DO
ID1
Rd
pon pon
a 1
Figura B.39 Schematizzazione delle interrelazioni tra Ie principali unita. del Pentium Pro
di interesse per quanto riguarda I'esecuzione fuori ordine. In questa e nelle figure che seguono
si sono mantenute Ie dizioni in lingua inglese. Le istruzioni entrano nel pool- il ROB - dopo
essere state decodificate e trasformate in sequenze di micro-op dall'unita Fetch/Decode, da
qui possono essere prelevate ed eseguite in ordine non strettamente sequenziale dall'unita di
Dispatch/Execute che Ie reimmette nel pool una volta eseguite, ,Le istruzioni vengono defi-
nitivamente estratte dall'unita. Retire, nelPordine originale dettato dal programma, quando
risultano completate.
La parte fuori ordine esamina Ie micro-ap in ROB e se ci sono Ie concti,zioni per
la lorn esecuzione vengono avviate (scheduled) alia porta dovuta, Le coodizio-
ni per l'esecuzione si riferiscono aBe dipendenze e alla disponibiJita d.i risorse
(porte/unita),
Figura B.38 La pipeline del Pentium Pro, La. pipeline e a 12 s.tadi. La parte corrispon-
dente aBe porte non viene conta.ta come stadio della pipeline; alle porte sono collegate Ie
unita. esecutive, come illustrato nella figura roe segue. La pipeline resta sostanzialmente
invariata nei 'modelli successivi della ser'ie P6 (Pentium II e Pentium III). Le differenze so-
no essenzialmente dovute al maggior numero di unita. esecutive; per esempio, a partire cial
Pentium II estata integrata l'estensione MMX come unita funzion3.Ie collegata. a una delle
porte.
j."
e""
.. .",'

,-" .--
...".
..
,. ..
.. ,'::
.-' .: .";'
,r., ;'<
, .. ,;" "
; ,.,,'.'..'"
','.'
.... ... . ;
."-,
f
,,',.," c,' i.,
-- " '"
,,'
" ." ..

.'_C' "., ..
;l'.", :,-r.
" ,'::'i '.,"
I' ",'"'-" . ,' .-'
",.',;;" :',:;'

_-' .).
"";. ,-;' ,',,'
'; , ,I" '. ,
,. '. !
:.... ;(/::'t :;i<'
... ,.;.':':; ." ....

},:C" "j ... ",
: f:
,":'" ";...
':'i-""-' 'Ir:" ,
,.;__ ,.1:':....,.

.
: !,frj:
,'-.. , .... '
, ::0,"",

..., .... .",'.
...'''.. ... ,./
',."'.-.'.'"
,'., .. -- .,
,;',tr<:';
.,'t.-,
.....",'
.<
..... .. ;:fi'i",
.
. .:. . ,,'
.',,' "' ".

.. JI:l:f:'
\... , .. ' '.
''';;.. .:
...-<.:.'.' ,f .
.. '
",
,: ...,,' ,"
';,
,-, ,'" "

.. ..v.';/'
) ..
.. ... Y.
"'>t_:
'., ' .. ", .' ..
. A ....
." "ft'-"
',.. ',;-:"

"1',"
" . ," :,..:;-,
'..


," ,n" :,1".. "
i;': ,"<:'.':,
, """,,;,"", 'jk":':-
.. ".,. .
.. ,.>.' .
- - .
.,.. (Y;=':
_ ,/i'.
,;, ."'. .
, "
.. '
<..
':
- ,.'-
, f'. :"":,,,_';, ,r';
''':'
-, ...
, . " v', .
'."',>;:.: ::,;"&;::'
'\:.,.,,,;:
.,-", '" ,.c
.,.,';:"-' ". ..t;:
,',;,.! 'I"
'i<:;:t!([
, . ,.' >:. ' ,
' 1;,'-

,.' ',,-'
"
"'<;"'1"'"
.. .. ,,, ..
,
" "Y"'.'J .'(1"
' .. r.i <
"
'.'"
."11f,j<'!,,."", s..... '
Appendice B
diverso rispetto a queUo illustrato al Capitolo 10, in cui si ipotizzava che Ie istruzioni
non eseguibili a causa della dipendenza dal risultato delle precedenti veniva trattenuto
nell'unita di emissione. Nel Pentium Pro Ie istruzioni una volta decodificate vengono
avviate al ROB (sempre che ci sia posta; it ROB ha 40 posizioni) ed equi che vengono
prelevate queUe in condizione di eseguire,
Schematicamente il funzionamento eil seguente,
<l.6Evidentemente i formati originali delle istruzioni architetturali non erano adeguati e hanna
n front-end eli emissione in ardine effettua il prelievo) la decodifica e Pemissione
delle istruzioni verso it pool. A parte Ie complicazioni di dettaglio, legate a1
numero di quali e Quante istruzioni possono essere decodificate per colpo di clock,
la decodifica delle istruzioni produce sequenze di micro-operazioni 0 micro-op45.
..'
Figura B.3T Struttura. dettagliata del Pentium Pro. La figura mostra che il processore
presenta due bus verso llesterno: uno e il bus eli sistema, l'altro e il bus verso lao cache
di secondo llvello_ La logica di CPU gestisce i due bus in modo indipendentej si parla di
a.rcmtettura nm (Dual Independent Bus). Ovvia.mente, la possibilitA. di accedere ai due bus.
in modo parallelo e indipendente migliora le prestazioni.
S,dtfll BUI
12 (ilhr
12(Khe 1M
,
Bus InlfrlOll:tOnit
flll lion fdth Lnit
II KUhe
Nut-IP
Unit
IrIslf\Ktion llt<odtt
Br\(h
S....ple Sinoplt
hrl)tt

Buffer lotegtr
Irntrudilll Instruction lnslrudioo
Urn,
llt<061r Ot<Olltr ()e(odtr
t'licriCOdt
Indrudion
R.gishr Aliu hbl.
I
S.qUtnur
Rtlir. Unit
Intel
1I OCICM
l'Iemory
RtOrdtl' Buffer Inslrudion Poall
A.reNtte!... r.
RtOriStr
Rtljishrs
Buffer
Ruernlion StIDon
j
I I I
j

IrItt9'"
....'"
Hlmry
P_l
'0;-.1 klt.r!lct
Uri'
Uril
Uril
\lo,'
\lo,'
,
To BUrKh rtsd Built!"
I
,
IrIltfNl. DlIh-Rnulh BU1U llnslr\l(rion PooU
\
\
"
I,
\
1
I
)
!
I
I
I
I
,
616 Appendice B
46La conversione ein forma di triple di micro-op, ovvero con due sarg.enti logicbe e una. destinazione
logica. per ogni microop. .1
L'unita Fetch/Decode La struttura di questa unita. e rappresentata in Figura
B,40,
I
I
1
I
I
\
\
I
\
1
617 L'architettura 8086
R08-ReOrder 81J1tl!r
RS_Rul!rvlItilNl Shlion
[U[llt(U!iOl'l Unit
Point EU
IEU-Inhger [U
JEU-M:19 EU
Gl!nention Unit
Storr d"h
Stort lIddrus
lOlld
RS I FEU
Por t C lEU
I lEU
ROB
lEU Port 1
Port 2 AGU
Pori 1 AGU
,...
Port 4 AGU
f-<
To/from
L'unita di Dispatch/Execute seleziona dal ROB Ie micro-op in alloro sta-
to dati e disponibilita degli operandi) e alla disponibilita. delle risorse 1
necessarie alIa loro esecuzione (questa ricerca pub avanzare anche di 20 0 30 istruzio-
ni all'interno del codice). Le microop che soddisfano ai requisiti suddetti vengono
prelevate da! ROB e passate alle effettive unita. di esecuzione. n processo di sele-
zione si svolge in RS (Reservation Station). RS dispone di 5 porte di comunicazione
con Ie risorse deputate all'esecuzione delle micro-op, anche se per ogni cicio di clock
ne possono essere avviate 3 (e non 5). I risultati (incerti) dell'esecuz!one speculati-
va non possono, ovviamente
J
essere passati come risultati effettivi e vengono percie
immagazzinati nuovamente nel ROB.
Quando la predizione di un saito condizionato da parte del BTB 8i rivela errata,
10 stato di tutte Ie micro-op eseguite in maniera speculativa in seguito al salto vengono
rimosse dal ROB. La vera destinazione del" salto condizionato viene quindi passata al
BTH, che provvede ad aggiornare i bit di p!edizione.
Per Ie operazioni intere, diciamo un'addizione registro-registro, la fase di esecu-
zione edi un solo cielo di c;lock. Le ad.dizioni floating necessitano di 3 deli, ed Scono
a un tasso (throughput) di una per cielo. Le moltiplicazioni floating hanno bisogno di
5 deli e hanno un tasso di una ogni 2 dcli di clock. Le moltiplicazioni intere hanno
una latenza di 4 deli e un tasso di una per ogni cicIo. La divisione Boating non e
pipelined e ha bisogno di 17 cicli nel caso singola precisione, di 32 cicli net caso di
doppia precisione e di 37 deli nel caso di precisione estesa.
L'unita di Retire La struttura dellJunita. erappresentata in Figura B.42
In un cielo di clock) l'unita di Retire preleva Instruction Pool Ie micro-
op gia. eseguite, ripristinando Pordine originate dettato dal programma. n processo
di recupero non solo cleve osservare I'online originaIe di programma, rna deve gestire

",' "',
n
o

j.
"
.
.' ... '.',....
.,".
'.. f.. :'"
',i"/y,:':' .
,.. ....

:t':\.":F
,.
1,
, " ',.',
"" .'
'. .. .
,
.. ' _" ..r'.
" .

;',:,';;:, "',

- -'".
, '-, " ',--
",.; . I
. .
-:- ':y
ii,.: \' ,
'. -';., ,
... " .
'c. .-', ..
'.; ''''.C.
...,....\. ".' "
,,'" :r"!.",:" ;.-
. \O.
....
'1'; ,
-- ., .. ,"
;.,
"', '," \; .. " ..

' ,
".' -:,i,
,.'
.
0.. ....
",'
, '.' -,' .'.
: ';:,:.

': " '
.'4'.>.. .:> .. '.
'-'" j..' .'. ;'.
:' ,,'. ,. .,';'
:." .. "'.'
;r"-" "
'" -,.. ' .. ',.'
;,"'*.\'".!,\',
.......'
I :,;<.!,,'; .

n,'",.';'\..
. .,.-.' 1 .) $

_..,r., v:;:.-
'. '''.,.'.''-- ,.J
- ',t', '.,'
' ." ......' '<"\,'
'...-.
'\.L","_ ".. '
"::;'" ' .. "ii"
" .;',. ;..
J "> ,-'. '.J..'
: .''i!. ,:
.,.... ,._'
",',""','-
..' '.,'.}.
'.;'1;.":'-
..r:': ;)"1'
."'.-/,,:,-.- '1",
_. "."..1 it

" '''W'
.. : .
:.: . t':
\ "',,"1' _ '\l'
,.... ,'......". ,':"'"
..
,,: ' ,J ..;.... , <'.
- .. , '.. :t.'...
i1-', ;t ',"
,.I M .'
" " ', ,.j>
;..',
,', .. ..
.;': ;: ,'. oil ',:,1
:' :li'
.. -f/"" .-..;
,. ..'f.',':'.
, "rt;,i.: i',
c' fl., . , '
, .' .. - .-
.' ',. .
'\' "r'

-., ...,_ ,f
'\',,,,:'\'., l:rh
,..,' .;.<;' .. -:..... '1
,
. .
. 'J,':' "',.'"
- ;',' -,,;.
, '.,.-' ''-'1','' ,: .. ,
;'_. .:fl..'('
,'r'.
,,:<:;,
...,.. -
,'.- :. ,,'
....

,:,,;\"::1\''', '"
" ,'" '. .I
'" ,,'... ,,"- ..
"', 'If<' -" .. ,
:" ,',. :.<,- -" ,';'
',"II' '.
-;' .j, }_' \to:',
. ,-...... ; , .,',
; :'\l.\;, ..' ,':.:,
'-"'1."," "'"
... ., .... -. *",.
, 1";"';:':'- :' '
... " ,
. <
..
..
+
ElU-Bus Umt
IV-Integer Unit
ROB-ReOrder Buffer
ID-Inslruclion Decoder
BTB-Branch Target Buffer
MIS-Microcode Instruction Sequencer
RAT-Register Alias Table
NIP-Next-IP Unit
IU
ROB
Da/a BlU
ICache NIP
D.
BTE
ID MIS
RAT
AI
L'unita di Dispatch/Execute La struttura di questa unita e rappresentata in
Figura B.4l.
Le istruzioni vengono prelevate dalla relativa cache in base al1
1
indirizzo indicato
daUo stadia NIP (che tiene canto di diversi elementi: predizione fornita cial BTB, sta-
to delle interruzioni, indicazioni di predizioni errate fornite dalla sezione di esecuzione
intera). In 3 deli di clock
1
vengono presenta ai 3 decodificatori contehuti in ID, in
parallelo, 16 byte allineati. I tre decodificatori individuano e decodificano 'Ie istruzioni
contenute in questa flusso di byte e Ie convertono in una serie di micro-operazioni 0
micro_op46. La maggior parte delle istruzioni sono eonvertite direttamente in singole'
micro-op, altre sono eonvertite in gruppi di quattro micro-ap, altre aneora necessitano
di microcodice (sequenza preprogrammata di micro-op); in queseultimo caso inter-
viene il MIS. I manuali Intel forniscono la traduzione delle istruzioni architetturali in
micro-aperazioni.
Le micro-ap sono messe in lista e passate alIa stadia RAT/Allocator, Pultimo
del front-end in ardine, Questa stadia'cantiene la RAT (Register Alias Table), Essa
mappa gli otto registri di usa generate delParchitettura Intel sull'insieme dei 40 regi.
stri fisid. Le micro-op vengono quindi trasmesse' a1 ROB e a ciascuna di esse viene
assegnato un numero progressivo di ingresso.
Figura BAD Voita. di Fetch/Decode. 8i faeda riferimento anche a.1I0 schema dettagliato
per posizionare i blocchi che qui compaiono. n bloceo ID ein realta. composto da. tre unita,
di cui due decodificano Ie istruzioni semplici (logiea cablata), mentre una. tratta. Ie istru-
zioni complesse (microcodice). II BTB del Pentium Pro dispone eli 512 posizioni e foroisee
1a predizione dei salti condizionati con una precisione del 90%, impiegando un'estensione
dell'algodtmo di Yeh ([yP91)),
I
,
I
I
I
I
I
I
616 Appendice B
46La conversione ein forma di triple di micro-op, ovvero con due sarg.enti logicbe e una. destinazione
logica. per ogni microop. .1
L'unita Fetch/Decode La struttura di questa unita. e rappresentata in Figura
B,40,
I
I
1
I
I
\
\
I
\
1
617 L'architettura 8086
R08-ReOrder 81J1tl!r
RS_Rul!rvlItilNl Shlion
[U[llt(U!iOl'l Unit
Point EU
IEU-Inhger [U
JEU-M:19 EU
Gl!nention Unit
Storr d"h
Stort lIddrus
lOlld
RS
I FEU
Por t C lEU
I lEU
ROB
lEU Port 1
Port 2 AGU
Pori 1 AGU
,...
Port 4 AGU
f-<
To/from
L'unita di Dispatch/Execute seleziona dal ROB Ie micro-op in alloro sta-
to dati e disponibilita degli operandi) e alla disponibilita. delle risorse 1
necessarie alIa loro esecuzione (questa ricerca pub avanzare anche di 20 0 30 istruzio-
ni all'interno del codice). Le microop che soddisfano ai requisiti suddetti vengono
prelevate da! ROB e passate alle effettive unita. di esecuzione. n processo di sele-
zione si svolge in RS (Reservation Station). RS dispone di 5 porte di comunicazione
con Ie risorse deputate all'esecuzione delle micro-op, anche se per ogni cicio di clock
ne possono essere avviate 3 (e non 5). I risultati (incerti) dell'esecuz!one speculati-
va non possono, ovviamente
J
essere passati come risultati effettivi e vengono percie
immagazzinati nuovamente nel ROB.
Quando la predizione di un saito condizionato da parte del BTB 8i rivela errata,
10 stato di tutte Ie micro-op eseguite in maniera speculativa in seguito al salto vengono
rimosse dal ROB. La vera destinazione del" salto condizionato viene quindi passata al
BTH, che provvede ad aggiornare i bit di p!edizione.
Per Ie operazioni intere, diciamo un'addizione registro-registro, la fase di esecu-
zione edi un solo cielo di c;lock. Le ad.dizioni floating necessitano di 3 deli, ed Scono
a un tasso (throughput) di una per cielo. Le moltiplicazioni floating hanno bisogno di
5 deli e hanno un tasso di una ogni 2 dcli di clock. Le moltiplicazioni intere hanno
una latenza di 4 deli e un tasso di una per ogni cicIo. La divisione Boating non e
pipelined e ha bisogno di 17 cicli nel caso singola precisione, di 32 cicli net caso di
doppia precisione e di 37 deli nel caso di precisione estesa.
L'unita di Retire La struttura dellJunita. erappresentata in Figura B.42
In un cielo di clock) l'unita di Retire preleva Instruction Pool Ie micro-
op gia. eseguite, ripristinando Pordine originate dettato dal programma. n processo
di recupero non solo cleve osservare I'online originaIe di programma, rna deve gestire

",' "',
n
o

j.
"
.
.' ... '.',....
.,".
'.. f.. :'"
',i"/y,:':' .
,.. ....

:t':\.":F
,.
1,
, " ',.',
"" .'
'. .. .
,
.. ' _" ..r'.
" .

;',:,';;:, "',

- -'".
, '-, " ',--
",.; . I
. .
-:- ':y
ii,.: \' ,
'. -';., ,
... " .
'c. .-', ..
'.; ''''.C.
...,....\. ".' "
,,'" :r"!.",:" ;.-
. \O.
....
'1'; ,
-- ., .. ,"
;.,
"', '," \; .. " ..

' ,
".' -:,i,
,.'
.
0.. ....
",'
, '.' -,' .'.
: ';:,:.

': " '
.'4'.>.. .:> .. '.
'-'" j..' .'. ;'.
:' ,,'. ,. .,';'
:." .. "'.'
;r"-" "
'" -,.. ' .. ',.'
;,"'*.\'".!,\',
.......'
I :,;<.!,,'; .

n,'",.';'\..
. .,.-.' 1 .) $

_..,r., v:;:.-
'. '''.,.'.''-- ,.J
- ',t', '.,'
' ." ......' '<"\,'
'...-.
'\.L","_ ".. '
"::;'" ' .. "ii"
" .;',. ;..
J "> ,-'. '.J..'
: .''i!. ,:
.,.... ,._'
",',""','-
..' '.,'.}.
'.;'1;.":'-
..r:': ;)"1'
."'.-/,,:,-.- '1",
_. "."..1 it

" '''W'
.. : .
:.: . t':
\ "',,"1' _ '\l'
,.... ,'......". ,':"'"
..
,,: ' ,J ..;.... , <'.
- .. , '.. :t.'...
i1-', ;t ',"
,.I M .'
" " ', ,.j>
;..',
,', .. ..
.;': ;: ,'. oil ',:,1
:' :li'
.. -f/"" .-..;
,. ..'f.',':'.
, "rt;,i.: i',
c' fl., . , '
, .' .. - .-
.' ',. .
'\' "r'

-., ...,_ ,f
'\',,,,:'\'., l:rh
,..,' .;.<;' .. -:..... '1
,
. .
. 'J,':' "',.'"
- ;',' -,,;.
, '.,.-' ''-'1','' ,: .. ,
;'_. .:fl..'('
,'r'.
,,:<:;,
...,.. -
,'.- :. ,,'
....

,:,,;\"::1\''', '"
" ,'" '. .I
'" ,,'... ,,"- ..
"', 'If<' -" .. ,
:" ,',. :.<,- -" ,';'
',"II' '.
-;' .j, }_' \to:',
. ,-...... ; , .,',
; :'\l.\;, ..' ,':.:,
'-"'1."," "'"
... ., .... -. *",.
, 1";"';:':'- :' '
... " ,
. <
..
..
+
ElU-Bus Umt
IV-Integer Unit
ROB-ReOrder Buffer
ID-Inslruclion Decoder
BTB-Branch Target Buffer
MIS-Microcode Instruction Sequencer
RAT-Register Alias Table
NIP-Next-IP Unit
IU
ROB
Da/a BlU
ICache NIP
D.
BTE
ID MIS
RAT
AI
L'unita di Dispatch/Execute La struttura di questa unita e rappresentata in
Figura B.4l.
Le istruzioni vengono prelevate dalla relativa cache in base al1
1
indirizzo indicato
daUo stadia NIP (che tiene canto di diversi elementi: predizione fornita cial BTB, sta-
to delle interruzioni, indicazioni di predizioni errate fornite dalla sezione di esecuzione
intera). In 3 deli di clock
1
vengono presenta ai 3 decodificatori contehuti in ID, in
parallelo, 16 byte allineati. I tre decodificatori individuano e decodificano 'Ie istruzioni
contenute in questa flusso di byte e Ie convertono in una serie di micro-operazioni 0
micro_op46. La maggior parte delle istruzioni sono eonvertite direttamente in singole'
micro-op, altre sono eonvertite in gruppi di quattro micro-ap, altre aneora necessitano
di microcodice (sequenza preprogrammata di micro-op); in queseultimo caso inter-
viene il MIS. I manuali Intel forniscono la traduzione delle istruzioni architetturali in
micro-aperazioni.
Le micro-ap sono messe in lista e passate alIa stadia RAT/Allocator, Pultimo
del front-end in ardine, Questa stadia'cantiene la RAT (Register Alias Table), Essa
mappa gli otto registri di usa generate delParchitettura Intel sull'insieme dei 40 regi.
stri fisid. Le micro-op vengono quindi trasmesse' a1 ROB e a ciascuna di esse viene
assegnato un numero progressivo di ingresso.
Figura BAD Voita. di Fetch/Decode. 8i faeda riferimento anche a.1I0 schema dettagliato
per posizionare i blocchi che qui compaiono. n bloceo ID ein realta. composto da. tre unita,
di cui due decodificano Ie istruzioni semplici (logiea cablata), mentre una. tratta. Ie istru-
zioni complesse (microcodice). II BTB del Pentium Pro dispone eli 512 posizioni e foroisee
1a predizione dei salti condizionati con una precisione del 90%, impiegando un'estensione
dell'algodtmo di Yeh ([yP91)),
I
,
I
I
I
I
I
I
B.12.2 Ridenominazione dei registri
47E; sta.to osservato che se la descrizione di una CPU pula di registro accumula.tore, di sicuro si
tratta. di un'architettura. progettata prima degli anni ottanta,
correttamente Ie interruzioni, gli errari di varia natura, e ripristinare uno stato carrette
in caso eli predizione errata delle diramazioni.
Quando una. micro-istruzione viene ritirata, il ROB scrive it risultato di quella
micro-operazione nell'appropriata entrata in RRF (Register Retirement File) e 10
notifica alia RAT cosi che'possa essere attivato un nuovo register renaming. Ad ogni
cielo d.i clock possono essere ritirate fino a 3 micro-operazioni.
L'architettura del Pentium Pro deriva direttamente da quella dell'8086. Abbiamo
gia notato che il modello di programmazione mette a disposizione un numero esiguo
di registri, almene in rappono agli standard attuali, E stato illustrate come gli
8 registri dichiarati di carattere generale in realta sono in buona parte specializzati
(Cfr. B.2.1). Originariamente il registro AX, diventato EAX col passaggio a 32 bit
(386) era indicato come registro accwnulatore47, I
Consideriamo, sequenza di istruzioni:

in parallelo all'altra MOV perche c'e una sola porta per gli indirizzi di load, e quindi
dovrebbe attendere un clock),
La ridenominazione dei registri (Register Renaming) permette di far fronte alla
Iimitazione arcbitetturale e di n Pentium Pro dispone di 40 registri
fisici internL I registri architetturali vengono rnappati sui registri interni nella stadio
RAT e Ie unita. funzionali operano su questi registrL Nel momento in cui Ie istruzioni
vengono preIevate dal ROB il valore ealcolato nel registro fisico viene copiato suI
registro arehitetturale che 10 ha mappato. ,
Nel caso specifieo possiamo assumere che Ia prima istruzione determini la map-
patura di EAX sui registro fisko 10 e che quindi questa venga caricato con il numero
50. ncontenuto del registro 10 viene usato per la somma. della seeonda istruzione. La
terza istruzione, eorrispondendo a un pereorso di tiusso dati" indipendente da quel-
10 delle due istruzioni preeedenti, determina la mappatura di EAX in un differente
registro interno (diciamo iI registro 11)1 nel quale viene caricato il numero 77, Ora
Ie operazioni che coinvolgono i registri 10 e 11 pessono essere emesse ed eseguite in
parallelo (sempre che ci siano risorse disponibili per trattarle).

E compito della logica del RAT identificare i tratti di codice corrispondenti a


flussi di dati indipendenti,
Si osservi ehe il rneeeanismo potrebbe essere usato anche in una macchina can
molti registri, Infatti, il programmatore non consapevole della modalita di esecuzione
superscalare potrebbe essere tentato di usare sempre 10 stesso registro (diciamo Rl),
5e la maechina non possiede 1a ridenominazione dei registri, il ripetuto usa dello

stesso registro farebbe perdere il parallelismo, E questo un ulteriore motivo per


evitare di programmare in assembler Ie macchine di questa genere: un compilatore
presumibilmente utilizza"i registri in modo ottimaIe e, anche se non c'e it register
renaming, ein grado di ottenere il massimo del parallelismo facendo uso appropriato
dei (tanti) registri delle rnacchine RlSC,
I manuaJi Intel forniseono tutti i dettagli (peraltro di non facile lettura) della
trasformazione da istruzioni architetturali a micro-eperazioni. Sono disponibili anche
alcuni interessanti tu.torial che iUustrano con esempi il processo di esecuzione del
Pentium Pro, 5i tratta di aver pazienza e navigare nel Web della societa.,
E stato introdotto nel Maggio del 1997, con frequenza di clock pari a 233 MHz,
n Pentium II e stato realizzato in tecnologia. CMOS da 0,35 micron. n chip
integra circa 7,5 milioni di transistori e presenta 528 piedini. E sistemato in una
cartuccia SEC (Single Edge Contact, si veda piiJ avanti la FiguraB,45) da 242 piedini,
progettata per ridurre l'ingombro e Ie interazioni can gli altri dispositivi della scheda
madre.
A differenza del Pentium Pro, ebe opera a 3
1
3 V, il Pentium II funziona a 2,8 VI
permettendo atte frequenze di lavoro senza accrescere eccessivamente i consumi, Men-
tre un Pentium Pro a 200 MHz can una cache 512 kbyte consuma circa 37,9 W di
alimentazione, un Pentium II a 266 MHz con una cache 512kbyte richiede 37,0 W,
B.13 Il Pentium II
L'architettura- 8086 619
,
" "
'"
I
i ". ., \,
."',
): '
"
,
",oj;
,-
,,," ",.

?
,
." I""'"
" ,... \;i:
","'.'
" , ,( "
I
"',
,>
..
,. ! ' ,I; .
..
,..
" l'
", ".
, "
- :..,'
"-
'."
,I"
.<1'
, .;. "
.'\",.
'. :,. I.
..,.. ..
" " ""
-. " ",',
_. " .',-
. ,. ,
I
" ,
<" ,;.
" \'
'. \ .
;; ,.;.
, ,
'I " ,
'. . "
.. ....
, .'. -,:
, -
" ".,',
.
"" ' fj: ..
;"'\ :<"
," ,,':'
".. "
,- "
'. ; ,
.

>"
...!
..:, 'I"'
'{ }"
",-. ..,.
,.
",
'" ',"', :i'"
-.
,', , " "','-
"-:, 'J'.;
.. ..."
. "'.:"
,"."
," ;,"'.. .111_"
,'I ". ,
. IJ'
' " . ,
'-,'
_....:. .. -4.:;
'"
".. ".
'\':" }; f':

. ,;,
q,-: .-
"'. .:;:::,
'. :.'.
",
",',
:\,
, 'I.:
'.' I" .. ,

, <:1'
. '.,
"'
',' ' '
, I ....,
,''Ii'
:",
, " 'At-
". .':
-' ..,"
, .' !tl
'-" "t; "
\,
';.--," ,. ' "
'-'\::-
,
"".'
RAT -Regior.ter All<ls Table
RS-Reservalion Slation
MIU-Memory Interface Unit
RRF-Retirement Register File
Archiledure Registersl
(ache
mRAT
To/From II C
RS MIU
RRF
MOV EAX,50"
AOO MEM1,EAX
MOV EAX,77
AOD MEM2,EAX
Una macchina superscalare come il Pentium Pro non potrebbe sfruttare a pieno 1a sua
capacita. di avviare ed esegWre piu operazioni in parallelo se il secondo caricamento
in EAX cleve attendere il completamento dell'istruzione precedente, In realta tra Ie
seconde due istruzioni non c'e alcuna dipendenza dati: e un puro accidente (probabil-
mente legato al basso numero di registri a disposizione) che il programmatore abbia
usato sempre il registro EAX, Se per 13 seconda coppia di istruzioni avesse usato un
ipotetico registro EAZ (se questa esistesse) I l'istruzione MOV EAZ, 77 avrebbe potuto
essere avviata in parallelo con Pistruzione che 1a precede (nOD potrebbe essere avviata
To/From Instruction Pool
Figura B.42 Unita d.i Retire.
Fro
618 Appendice B
J
I
I
1
I
I
I

B.12.2 Ridenominazione dei registri


47E; sta.to osservato che se la descrizione di una CPU pula di registro accumula.tore, di sicuro si
tratta. di un'architettura. progettata prima degli anni ottanta,
correttamente Ie interruzioni, gli errari di varia natura, e ripristinare uno stato carrette
in caso eli predizione errata delle diramazioni.
Quando una. micro-istruzione viene ritirata, il ROB scrive it risultato di quella
micro-operazione nell'appropriata entrata in RRF (Register Retirement File) e 10
notifica alia RAT cosi che'possa essere attivato un nuovo register renaming. Ad ogni
cielo d.i clock possono essere ritirate fino a 3 micro-operazioni.
L'architettura del Pentium Pro deriva direttamente da quella dell'8086. Abbiamo
gia notato che il modello di programmazione mette a disposizione un numero esiguo
di registri, almene in rappono agli standard attuali, E stato illustrate come gli
8 registri dichiarati di carattere generale in realta sono in buona parte specializzati
(Cfr. B.2.1). Originariamente il registro AX, diventato EAX col passaggio a 32 bit
(386) era indicato come registro accwnulatore47, I
Consideriamo, sequenza di istruzioni:

in parallelo all'altra MOV perche c'e una sola porta per gli indirizzi di load, e quindi
dovrebbe attendere un clock),
La ridenominazione dei registri (Register Renaming) permette di far fronte alla
Iimitazione arcbitetturale e di n Pentium Pro dispone di 40 registri
fisici internL I registri architetturali vengono rnappati sui registri interni nella stadio
RAT e Ie unita. funzionali operano su questi registrL Nel momento in cui Ie istruzioni
vengono preIevate dal ROB il valore ealcolato nel registro fisico viene copiato suI
registro arehitetturale che 10 ha mappato. ,
Nel caso specifieo possiamo assumere che Ia prima istruzione determini la map-
patura di EAX sui registro fisko 10 e che quindi questa venga caricato con il numero
50. ncontenuto del registro 10 viene usato per la somma. della seeonda istruzione. La
terza istruzione, eorrispondendo a un pereorso di tiusso dati" indipendente da quel-
10 delle due istruzioni preeedenti, determina la mappatura di EAX in un differente
registro interno (diciamo iI registro 11)1 nel quale viene caricato il numero 77, Ora
Ie operazioni che coinvolgono i registri 10 e 11 pessono essere emesse ed eseguite in
parallelo (sempre che ci siano risorse disponibili per trattarle).

E compito della logica del RAT identificare i tratti di codice corrispondenti a


flussi di dati indipendenti,
Si osservi ehe il rneeeanismo potrebbe essere usato anche in una macchina can
molti registri, Infatti, il programmatore non consapevole della modalita di esecuzione
superscalare potrebbe essere tentato di usare sempre 10 stesso registro (diciamo Rl),
5e la maechina non possiede 1a ridenominazione dei registri, il ripetuto usa dello

stesso registro farebbe perdere il parallelismo, E questo un ulteriore motivo per


evitare di programmare in assembler Ie macchine di questa genere: un compilatore
presumibilmente utilizza"i registri in modo ottimaIe e, anche se non c'e it register
renaming, ein grado di ottenere il massimo del parallelismo facendo uso appropriato
dei (tanti) registri delle rnacchine RlSC,
I manuaJi Intel forniseono tutti i dettagli (peraltro di non facile lettura) della
trasformazione da istruzioni architetturali a micro-eperazioni. Sono disponibili anche
alcuni interessanti tu.torial che iUustrano con esempi il processo di esecuzione del
Pentium Pro, 5i tratta di aver pazienza e navigare nel Web della societa.,
E stato introdotto nel Maggio del 1997, con frequenza di clock pari a 233 MHz,
n Pentium II e stato realizzato in tecnologia. CMOS da 0,35 micron. n chip
integra circa 7,5 milioni di transistori e presenta 528 piedini. E sistemato in una
cartuccia SEC (Single Edge Contact, si veda piiJ avanti la FiguraB,45) da 242 piedini,
progettata per ridurre l'ingombro e Ie interazioni can gli altri dispositivi della scheda
madre.
A differenza del Pentium Pro, ebe opera a 3
1
3 V, il Pentium II funziona a 2,8 VI
permettendo atte frequenze di lavoro senza accrescere eccessivamente i consumi, Men-
tre un Pentium Pro a 200 MHz can una cache 512 kbyte consuma circa 37,9 W di
alimentazione, un Pentium II a 266 MHz con una cache 512kbyte richiede 37,0 W,
B.13 Il Pentium II
L'architettura- 8086 619
,
" "
'"
I
i ". ., \,
."',
): '
"
,
",oj;
,-
,,," ",.

?
,
." I""'"
" ,... \;i:
","'.'
" , ,( "
I
"',
,>
..
,. ! ' ,I; .
..
,..
" l'
", ".
, "
- :..,'
"-
'."
,I"
.<1'
, .;. "
.'\",.
'. :,. I.
..,.. ..
" " ""
-. " ",',
_. " .',-
. ,. ,
I
" ,
<" ,;.
" \'
'. \ .
;; ,.;.
, ,
'I " ,
'. . "
.. ....
, .'. -,:
, -
" ".,',
.
"" ' fj: ..
;"'\ :<"
," ,,':'
".. "
,- "
'. ; ,
.

>"
...!
..:, 'I"'
'{ }"
",-. ..,.
,.
",
'" ',"', :i'"
-.
,', , " "','-
"-:, 'J'.;
.. ..."
. "'.:"
,"."
," ;,"'.. .111_"
,'I ". ,
. IJ'
' " . ,
'-,'
_....:. .. -4.:;
'"
".. ".
'\':" }; f':

. ,;,
q,-: .-
"'. .:;:::,
'. :.'.
",
",',
:\,
, 'I.:
'.' I" .. ,

, <:1'
. '.,
"'
',' ' '
, I ....,
,''Ii'
:",
, " 'At-
". .':
-' ..,"
, .' !tl
'-" "t; "
\,
';.--," ,. ' "
'-'\::-
,
"".'
RAT -Regior.ter All<ls Table
RS-Reservalion Slation
MIU-Memory Interface Unit
RRF-Retirement Register File
Archiledure Registersl
(ache
mRAT
To/From II C
RS MIU
RRF
MOV EAX,50"
AOO MEM1,EAX
MOV EAX,77
AOD MEM2,EAX
Una macchina superscalare come il Pentium Pro non potrebbe sfruttare a pieno 1a sua
capacita. di avviare ed esegWre piu operazioni in parallelo se il secondo caricamento
in EAX cleve attendere il completamento dell'istruzione precedente, In realta tra Ie
seconde due istruzioni non c'e alcuna dipendenza dati: e un puro accidente (probabil-
mente legato al basso numero di registri a disposizione) che il programmatore abbia
usato sempre il registro EAX, Se per 13 seconda coppia di istruzioni avesse usato un
ipotetico registro EAZ (se questa esistesse) I l'istruzione MOV EAZ, 77 avrebbe potuto
essere avviata in parallelo con Pistruzione che 1a precede (nOD potrebbe essere avviata
To/From Instruction Pool
Figura B.42 Unita d.i Retire.
Fro
618 Appendice B
J
I
I
1
I
I
I

,J
,-"
, ,.
I
1
1
L'architettura 8086 621
Lo Xeon conserva l'architettura DIB, con eotrambi i bus capaci di effettuare 1a
correzione automatica degli errori sU: singolo bit e segnalare gli eITori su due bit. Le
cache interne sono corne nel Pentium II, mentre 1a cache di secondo liveUo va da
512 kbyte 2 Mbyte e, differenz. del Pentium II, lavora aUa stessa velocita della
CPU. Il bus di sistema opera. 100 MHz.
11 Pentium II ha 1a limitazione di non poter impiegare pili di 2 CPU nei sistemi
multiprocessore. n Pentium II Xeon
49
supera questa Iimitazione e da 1a possibilita di
costruire sistemi multiprocessore simmetrici (SMP) can 4 0 8 processori e oltre.
, .
..
..
, .,.
.. ,;
,
'.' I' ,I'
... ,
' ... .- '
," .; ,
,
'. , I i
.
..-
.' ,
<
. .;;.,...

. '."." './:.
.: ....\",'.,., i
'. ,j....... ',
,. r: ' .
t:
:f
,
. '..'
620 Appendice B
n Pentium II coniuga Parchitettura s'Uperpipelined e il meccanismo di esecuzione
dinamica del Pentium Pro con ie funzionalita MMX. Nel Pentium II ritroviamo Par
chitettura DIB (Dual Independent Bus), caratterizzata dalla presenza, all'esterno del
microprocessore, di 2 bus distinti: il bus di sistema (usato per l'accesso aUa memoria
centrale e per le ricmeste di I/O) e il bus per la cache L2. n bus di sistema pub
arrivare fino a 100 MHz, mentre it bus della cache, essendo questa non integrata sullo
stesso silicio, opera a una frequenza meta. di quella della CPU.
,',
'. Ic,
'. , " . "t;
! . 'I"

;'; '.;
".
',: , 1
1
d'.
. "".
'., .. " ....,
, -, ",,'. '!'.'
'.- '. ".. ,1,"
,.' .,;. ':.!::
. ,---,.'0".",\,1.('/'
,..,...... '-'+
.. " i
" ,..".... .' >.,. ,..
,,';..,........ f'
/ .. '1.....:
"'w" ",.
. .., ., ': '! i, . .
';,t', .
"' ,1 ".
," fl
1
., ,.
j.,:,'

'j__ > .1,'
'., "
... ..
..
'., . "
." ( ,
'-", ' ,j ',';'
". .'
,'.
." .. ' .,..
:". ':-'. i '
; 1,
'f,
'," Ii, . .
. c' .. .
.. ' .
...; -..
.
I
I

\
I
I
I
I
I.
I
I
I
Frequenza
450/500(550 MHz
500(550 MHz
500 to 800 MHz
Nome Transistor L2 Cache Tecnologia
Katmai 9.500.000 512 kbyte 0,25 micron
Tanner 9.500.000 512 kbyte(lMB(2MB 0,25 micron
Coppermine 28.100.000 256kbyte (on die) 0,18 micron
Tabella B.9 Caratteristiche dei microprocessori Pentium III
nnuovo processore introduce un certo numero di nuove istruzioni: per veiocizzare
i in virgola mobile, per la multimedialita e la gestione della cache. n Pentium
III permette l'identificaziane individuale dei singoli processori, aggiungendo un DU-
mero seriale per ogni campione prodotto. A parte questa non ci sono miglioramenti
architetturali rispetto al suo predecessore. .
Nell'Ottobre del 1999 estato ianciato il Pentium ill con tecnologia di processo
d. 0,18 micron. L. dimensione della cache L2 estat. dimezzat. a 256 kbyte, ma e
stata portata suI medesimo silicio, per faria lavorare alia stessa veiocita del processore
piuttosto che a velocita dimezzata.
Introdotto nel Febbraio del 1999, in due versioni una a frequenza di 450, l'altr.a di
500 MHz. E stato il primo micro Intel a raggiungere la soglia del GHz
50
.
n Pentium III e stato realizzato in tecnologi. CMOS d. 0,25 mi.cron. n chip
integra circa 9,5 milioni di transistori ed esistemato in una cartuccia SEC da 242
piedini. Nelle versioni iniziali, Ia cache di secondo liveUo era separata daUa CPU e
lavorava a meta frequenza.
La Tabella B.9 mostra Ie diverse realizzazioni del processore Pentium m fino a
ogg! .
B.14 Il Pentium III
,
I, '.
.. ::; .
, '.'
../" ..:..
, : ,,'
,. :.. ....
, ."',' , ,.,.
, -. 'i';
.>:. '.
- .
<.! . ';
_. '\ ',I
;' ":"
... , .....
" ' .,'
I.,.. ..
".
.', "f'
,,"
, ." "
, i:
, r.
,/'"
.h:'" " :,'
, . "
.'.,., . ,I
<, ..
-,;:
..: tt.
. ')J:"
e'l" "j
,. , .. ,t.
'.'
, .' ...' .;

,,,,,,I' "t'

"'.,. , .......
Celeron n Celeron e una versione del Pentium II indirizzata al settore dei PC a
basso costo e dei portatili. Inizialmente estato prodotto senza cache di secondo HveHo,
operanti a frequenze da 266 MHz a 300 MHz. n dispositivo integrava 7,5 milioni di
transistori. . .
La mancanza di cache L2 ha decretato uno scarso successo sui mercato, non
essendoci particolari vantaggi rispetto alle CPU compatibili di altri produttori. Per
questo motivo la gamma estata. arricchita con una cache eli livello 2 da 128kbyte,
integrata sullo stesso chip e lavorante alia massima veiocita della CPU. Questa nuova
versione integra 19 milioni di transistori e arriva a frequenze di 500 MHz.
Il Pentium II Xeon Introdotto nel Giugno del 1998, iJ Pentium II Xeon [Int.],
nella versione iniziale integrava circa7,5 di transistori, con tecnologia CMOS
da 0,25 micron, ed era montato, con i chip della cache di secondo Hvella, Sll una
cartuccia SEC da 330 piedini. Subito dopo una prima. versione a 400 MHz, ne estata
introdotta una seconda versione can una frequenza di pari a 450 MHz.
Il Pentiwn II Xeon estato prodetto principalmente per il settore delle macchine
server, cercando di raggiungere it massimo delle prestazioni e di sicurezza operativa.
AIeuni aspetti rilevanti della Xeon hanno a che fare con la gestione del sistema, it
monitoraggio della tensione, della temperatura e della frequenza.
B.13.1 La struttura interna
n Pentium II rappresenta un avanzamento tecnologico del Pentium Pro, del quale
mantiene identica struttura interna per quanta si riferisce alla pipeline e all'esecu-
zione speculativa. Come per il Pentium Pro, per ogni dclo di clock possono ess'ere
decodificate fino a 3 istfUZioni.
Le 2 cache di primo Uvello, di 16kbyte ciascuna, sono organizzate in modo 'asso-
ciativo a 4 vie, con Linee da. 32 byte e sono gestite con iJ c1assico algoritmo Intel pseudo-
LRUI introdotto con il 486. La cache dei dati eaccessibile contemporaneamente da
un'istruzione di load e da un'istruzione di store.
La cache di secondo liveUo, sistemata nel cartridge, lavora a meta della frequenza
del microprocessore
48
.
48Nel Pentium Pro la cache di secondo livello funziona alia frequenza del rnicroprocessore. II
Pentium invece non ha cache di secondo Hvello; essa puo essere aggiunta esternamente rna lavora
a.lIa frequenza del bus di sistema.
".. '
,J
.'J ,
':'-:'0' ,:1.:,
.... '),.
.... -\,.' .
... ' -'-'1,'. ;lj .
" ......;,. ,:,h'
<;10.
4iOvviamente la questione e fortemente dipendente dai chipset di supporto.
60Bi90gna dire che iI primo a va.rcare la soglia di 1GHz e stato il micro Atblon di AMD a fine
1999.
I
,J
,-"
, ,.
I
1
1
L'architettura 8086 621
Lo Xeon conserva l'architettura DIB, con eotrambi i bus capaci di effettuare 1a
correzione automatica degli errori sU: singolo bit e segnalare gli eITori su due bit. Le
cache interne sono corne nel Pentium II, mentre 1a cache di secondo liveUo va da
512 kbyte 2 Mbyte e, differenz. del Pentium II, lavora aUa stessa velocita della
CPU. Il bus di sistema opera. 100 MHz.
11 Pentium II ha 1a limitazione di non poter impiegare pili di 2 CPU nei sistemi
multiprocessore. n Pentium II Xeon
49
supera questa Iimitazione e da 1a possibilita di
costruire sistemi multiprocessore simmetrici (SMP) can 4 0 8 processori e oltre.
, .
..
..
, .,.
.. ,;
,
'.' I'
,I'
... ,
' ... .- '
," .; ,
,
'. , I i
.
..-
.' ,
<
. .;;.,...

. '."." './:.
.: ....\",'.,., i
'. ,j....... ',
,. r: ' .
t:
:f
,
. '..'
620 Appendice B
n Pentium II coniuga Parchitettura s'Uperpipelined e il meccanismo di esecuzione
dinamica del Pentium Pro con ie funzionalita MMX. Nel Pentium II ritroviamo Par
chitettura DIB (Dual Independent Bus), caratterizzata dalla presenza, all'esterno del
microprocessore, di 2 bus distinti: il bus di sistema (usato per l'accesso aUa memoria
centrale e per le ricmeste di I/O) e il bus per la cache L2. n bus di sistema pub
arrivare fino a 100 MHz, mentre it bus della cache, essendo questa non integrata sullo
stesso silicio, opera a una frequenza meta. di quella della CPU.
,',
'. Ic,
'. , " . "t;
! . 'I"

;'; '.;
".
',: , 1
1
d'.
. "".
'., .. " ....,
, -, ",,'. '!'.'
'.- '. ".. ,1,"
,.' .,;. ':.!::
. ,---,.'0".",\,1.('/'
,..,...... '-'+
.. " i
" ,..".... .' >.,. ,..
,,';..,........ f'
/ .. '1.....:
"'w" ",.
. .., ., ': '! i, . .
';,t', .
"' ,1 ".
," fl
1
., ,.
j.,:,'

'j__ > .1,'
'., "
... ..
..
'., . "
." ( ,
'-", ' ,j ',';'
". .'
,'.
." .. ' .,..
:". ':-'. i '
; 1,
'f,
'," Ii,
. .
. c'
.. .
.. ' .
...; -..
.
I
I

\
I
I
I
I
I.
I
I
I
Frequenza
450/500(550 MHz
500(550 MHz
500 to 800 MHz
Nome Transistor L2 Cache Tecnologia
Katmai 9.500.000 512 kbyte 0,25 micron
Tanner 9.500.000 512 kbyte(lMB(2MB 0,25 micron
Coppermine 28.100.000 256kbyte (on die) 0,18 micron
Tabella B.9 Caratteristiche dei microprocessori Pentium III
nnuovo processore introduce un certo numero di nuove istruzioni: per veiocizzare
i in virgola mobile, per la multimedialita e la gestione della cache. n Pentium
III permette l'identificaziane individuale dei singoli processori, aggiungendo un DU-
mero seriale per ogni campione prodotto. A parte questa non ci sono miglioramenti
architetturali rispetto al suo predecessore. .
Nell'Ottobre del 1999 estato ianciato il Pentium ill con tecnologia di processo
d. 0,18 micron. L. dimensione della cache L2 estat. dimezzat. a 256 kbyte, ma e
stata portata suI medesimo silicio, per faria lavorare alia stessa veiocita del processore
piuttosto che a velocita dimezzata.
Introdotto nel Febbraio del 1999, in due versioni una a frequenza di 450, l'altr.a di
500 MHz. E stato il primo micro Intel a raggiungere la soglia del GHz
50
.
n Pentium III e stato realizzato in tecnologi. CMOS d. 0,25 mi.cron. n chip
integra circa 9,5 milioni di transistori ed esistemato in una cartuccia SEC da 242
piedini. Nelle versioni iniziali, Ia cache di secondo liveUo era separata daUa CPU e
lavorava a meta frequenza.
La Tabella B.9 mostra Ie diverse realizzazioni del processore Pentium m fino a
ogg! .
B.14 Il Pentium III
,
I, '.
..
::; .
, '.'
../" ..:..
, : ,,'
,. :.. ....
, ."',' , ,.,.
, -. 'i';
.>:. '.
- .
<.! . ';
_. '\ ',I
;' ":"
... , .....
" ' .,'
I.,.. ..
".
.', "f'
,,"
, ." "
, i:
, r.
,/'"
.h:'" " :,'
, . "
.'.,., . ,I
<, ..
-,;:
..: tt.
. ')J:"
e'l" "j
,. , .. ,t.
'.'
, .' ...' .;

,,,,,,I' "t'

"'.,. , .......
Celeron n Celeron e una versione del Pentium II indirizzata al settore dei PC a
basso costo e dei portatili. Inizialmente estato prodotto senza cache di secondo HveHo,
operanti a frequenze da 266 MHz a 300 MHz. n dispositivo integrava 7,5 milioni di
transistori. . .
La mancanza di cache L2 ha decretato uno scarso successo sui mercato, non
essendoci particolari vantaggi rispetto alle CPU compatibili di altri produttori. Per
questo motivo la gamma estata. arricchita con una cache eli livello 2 da 128kbyte,
integrata sullo stesso chip e lavorante alia massima veiocita della CPU. Questa nuova
versione integra 19 milioni di transistori e arriva a frequenze di 500 MHz.
Il Pentium II Xeon Introdotto nel Giugno del 1998, iJ Pentium II Xeon [Int.],
nella versione iniziale integrava circa7,5 di transistori, con tecnologia CMOS
da 0,25 micron, ed era montato, con i chip della cache di secondo Hvella, Sll una
cartuccia SEC da 330 piedini. Subito dopo una prima. versione a 400 MHz, ne estata
introdotta una seconda versione can una frequenza di pari a 450 MHz.
Il Pentiwn II Xeon estato prodetto principalmente per il settore delle macchine
server, cercando di raggiungere it massimo delle prestazioni e di sicurezza operativa.
AIeuni aspetti rilevanti della Xeon hanno a che fare con la gestione del sistema, it
monitoraggio della tensione, della temperatura e della frequenza.
B.13.1 La struttura interna
n Pentium II rappresenta un avanzamento tecnologico del Pentium Pro, del quale
mantiene identica struttura interna per quanta si riferisce alla pipeline e all'esecu-
zione speculativa. Come per il Pentium Pro, per ogni dclo di clock possono ess'ere
decodificate fino a 3 istfUZioni.
Le 2 cache di primo Uvello, di 16kbyte ciascuna, sono organizzate in modo 'asso-
ciativo a 4 vie, con Linee da. 32 byte e sono gestite con iJ c1assico algoritmo Intel pseudo-
LRUI introdotto con il 486. La cache dei dati eaccessibile contemporaneamente da
un'istruzione di load e da un'istruzione di store.
La cache di secondo liveUo, sistemata nel cartridge, lavora a meta della frequenza
del microprocessore
48
.
48Nel Pentium Pro la cache di secondo livello funziona alia frequenza del rnicroprocessore. II
Pentium invece non ha cache di secondo Hvello; essa puo essere aggiunta esternamente rna lavora
a.lIa frequenza del bus di sistema.
".. '
,J
.'J ,
':'-:'0' ,:1.:,
.... '),.
.... -\,.' .
... ' -'-'1,'. ;lj .
" ......;,. ,:,h'
<;10.
4iOvviamente la questione e fortemente dipendente dai chipset di supporto.
60Bi90gna dire che iI primo a va.rcare la soglia di 1GHz e stato il micro Atblon di AMD a fine
1999.
I
I
623
Bu. PC!
L'architettura 8086
UlCACHE
Conl Pentium
'"0
"'"
BU$ dl Slolem.
.....
-
....
PCI Sel
R.O..M
I
t ".
...
1,,,<1.'



51 Essendo il Pentium II funzionalmente ugua.le al suo predecessore, sono sta.ti realizzati adatta.tori
da Socket 8 a Slot 1 per consentire di montare processori Pentium Pro anche in schede madri Slot 1.
Per l'architettura DIE estato introdotta una. nuova versione di zoccolo, deno-
minata Socket 8. Anche in questa caso, il nome Socket 8 ediventato identificativQ
dell'architettura. della scheda. Una scheda contraddistinta da tale denominazione esi-
bisce una architettura corne quell a di FiguraB.44. Dal Pentium Pro in poi si eavuta
una netta corrispondenza tra ciascun tipo e marca di processori e il connettore suI
quale essi vengono rnontati. Per sulle schede Socket 7 si potevano mon-
tare una vasta gammadi microprocessori di diver.se marcbe (Intel, AMD, Cyrix ecc.),
mentre, dal Pentium Pro in poi, ogni CPU di una certa marCa e caratterizzato dal
proprio tipo di connettore.
Con l'avvento del Pentium II e tramontata (temporaneamente) l'era dei micro
Intel impacchettati in un singolo chip e si eaperta quella dei processori in contenitori
SECC (Single Edge Contact Cartdrige). Come si vede in FiguraB.45, Es'i ,ono im
pacchettati in una cartuccia delle dimensioni piu 0 meno eli una scheda eli espansione,
che si inserisce in un connettore a 242 contatti denominato Slot 1:11. n cambiamento
di nome del connettore della CPU da. "Socket
U
a "Slot", vuole evidenziare che la CPU
non epiu pensata come un circuito integrato, rna come una vera a propria scheda1 da
inserire su un apposito connettore.
A difIerenza del Pentium Pro
l
la cache L2 del Pentium II e realizzata usando
componenti separati invece che sulla stessa. base di silicio, come illustrato nella Figura
B.46. Questa estata 1a ragione delPadozione della cartuccia SECC. La cache L2
funziona a una frequenza pari alIa meta della rrequenza di lavoro della CPU, invece
che a piena velocita come nel Pentium Pro. Per contro il bUB di sistema, puo lavorare
aHa frequenza di 100 MHz invece che a 66 MHz come accadeva col suo predecessore.
n Celeron, - il primo modello era denominato \'CoviJ;1gton" - estato introdotto
senza la cache di secondo livello e racchiuso in una scheda denominata SEPP (Single
Figura B.44 L'immagine eli sinistra mostra i1 microprocessore Pentium Pro (cui estato
rimosso l'involucro protettivo) nella versione con 1024 kbyte. Sul supporto ceramico il. chip
della CPU ea sinistra, mentre i due chip della cache 50110 a destra. NeUe prime versioni,
che prevedevano 256 kbyte di questa era costituita da un solo chip. La figura a destra
schematizza \'architettura Socket 8.
.

."

." '
, ,.'.
'. ' i'
,.
..
...
,.
I
, '..
"1.1:
' .. ...
" I"
. "
..' .'.
.", :.
,,' IT '.
' ....
.'. '1::', .
'.
.' ."
r'i"::' '::
L
.::, ....
.,.
". " '
__ : "
,'.:-r
. ' ;: ...
::. i (.'
, .. , ...
" , ...
, ',:
... - ".:-
1 ..
" .
''.1' ','I'
:'...
..
.. .,1 "
I'
,.. ',-{.
.,;". .".
.' ".
,.
,. ,. ..
.{.,:':":

..
-'., .'
.,,;' _'1;-,
rl::;'
-'.
.' JJ;' .
"
,.' ,:,1'1.:'
:t,::
.:;
..
" Ilil,
.,.: ..
.... ','
,',:.,'
" .:..!' .
'11.'
. ' . :,;;-'
.' '.' 'J\{:.
"f
' >.,
, ,'.
I ;$,:,
'::..:"
.. 'i n
iW;'
, , .

c
...
.' 't-,
o t!"
"."
,,
-" ,:.,
,.'
-t; ,
; - '
,
.. \.,-
"
t
.,.
,..
" ::,
I
'
" . ." ,.
,.
.
'"', "
; , /;':, '
.. 1
...
.. >;'
" .i f,
..
.' .. ..
, ,
, '. '.. 1:.'1.
!. I}i'
, :.;0<
.. ' " '::i;-'
-.., ,1",'
.
,.. .."
',.,",
" .. ,I, ,;1'" .
. 'r" .ff,.
,",.' 1"1.'.
.. ,.' ."".
., .,,".
PENTIUM
.... BUI dl SIstema
L2 CACHE
-
PCI ...
ro-
M,moIls
"""
/
I
BUI PCI
,,,"'"
""...
B.15 La forma.esterna, i bus e altro
622 Appendice B
I
J
Conviene esaminare anche come si eandata evolvendo 1a produzione delle CPU Intel
in riferimento alIa loro forma esteroa, a1 numero di piedini, alia di montaggio
ecc. Anche perche, data I'alto livello di integrazione raggiunta e 1a complessita dei
dispositivi, questi aspetti souo determinanti nella costruzione della scheda madre dei
PC.
Figura B.43 A siniBtra viene mostrato lo zoccolo Socket 1 usato per it Pentium. A destra
viene mostrata l'architettura Socket 7. L'Intel denota come PCl Set l'i.nsieme di integrati cbe
(anno da supporto alla CPU e la collegano al resto del sistema. n bus lavora. a 66 MHz. Su
di esse passano i dati destinati alla memoria. cache di secondo livello e alIa memoria centrale,
oltre the all'l/O. nbus rischia di diventare facilmente un collo di bottiglia, specialmente con
processori a frequenza piu alta dei 66 MHz.
1'8068 e il 286 erano in forma di integrato con piedini disposti in doppia fila.
Con il 386 einiziata la produzione PGA e corrispondentemente sui PC sonG apparsi
gh zoccoli ("ocket) ZIF (Zero I""ertio" Force). II 486 veniva montato BU uno zoccolo
denominato Socket 3.
II Pentium estato montato su uno zoccolo denominato Socket 7, di cui si ciporta
in l'immagine in FiguraB.43.
A partire dal Pentium, la CPU necessita sempre piu di specifici integrati di sup-
porto e il nome Socket 7 6nisce col denotare molto di piu di uno zoccolo di montaggio,
e diventa. indicativo dell'architettura della scheda madre e della varieta. di
cessori compatibili con Ie schede madri basate sui chipset per il Pentium (Cfr. 11.5).
Si di schede Socket 7 per indicare schede madri la cui architettura e quella di
\
FiguraB.43.
n Pentium Pro limita il collo di bottiglia del bus del Pentium, integrando sullo
stesso supporto la cache eli secondo liveUo (FiguraB.44) e prevedendo per eSBa un bus
\
separato, operante alIa ,tesa velocit.. della CPU. Si tratta della cosiddetta architet
tura DIB. Fornendo 2 canali di comunicazione separati e quindi eliminando iI traffico
I relativo alla cache L2 da! bus di sistema, viene eliminato il colla di bottiglia che si
veniva a creare nei sistemi Socket 7.
\
\
I
I
I
I
623
Bu. PC!
L'architettura 8086
UlCACHE
Conl Pentium
'"0
"'"
BU$ dl Slolem.
.....
-
....
PCI Sel
R.O..M
I
t ".
...
1,,,<1.'



51 Essendo il Pentium II funzionalmente ugua.le al suo predecessore, sono sta.ti realizzati adatta.tori
da Socket 8 a Slot 1 per consentire di montare processori Pentium Pro anche in schede madri Slot 1.
Per l'architettura DIE estato introdotta una. nuova versione di zoccolo, deno-
minata Socket 8. Anche in questa caso, il nome Socket 8 ediventato identificativQ
dell'architettura. della scheda. Una scheda contraddistinta da tale denominazione esi-
bisce una architettura corne quell a di FiguraB.44. Dal Pentium Pro in poi si eavuta
una netta corrispondenza tra ciascun tipo e marca di processori e il connettore suI
quale essi vengono rnontati. Per sulle schede Socket 7 si potevano mon-
tare una vasta gammadi microprocessori di diver.se marcbe (Intel, AMD, Cyrix ecc.),
mentre, dal Pentium Pro in poi, ogni CPU di una certa marCa e caratterizzato dal
proprio tipo di connettore.
Con l'avvento del Pentium II e tramontata (temporaneamente) l'era dei micro
Intel impacchettati in un singolo chip e si eaperta quella dei processori in contenitori
SECC (Single Edge Contact Cartdrige). Come si vede in FiguraB.45, Es'i ,ono im
pacchettati in una cartuccia delle dimensioni piu 0 meno eli una scheda eli espansione,
che si inserisce in un connettore a 242 contatti denominato Slot 1:11. n cambiamento
di nome del connettore della CPU da. "Socket
U
a "Slot", vuole evidenziare che la CPU
non epiu pensata come un circuito integrato, rna come una vera a propria scheda1 da
inserire su un apposito connettore.
A difIerenza del Pentium Pro
l
la cache L2 del Pentium II e realizzata usando
componenti separati invece che sulla stessa. base di silicio, come illustrato nella Figura
B.46. Questa estata 1a ragione delPadozione della cartuccia SECC. La cache L2
funziona a una frequenza pari alIa meta della rrequenza di lavoro della CPU, invece
che a piena velocita come nel Pentium Pro. Per contro il bUB di sistema, puo lavorare
aHa frequenza di 100 MHz invece che a 66 MHz come accadeva col suo predecessore.
n Celeron, - il primo modello era denominato \'CoviJ;1gton" - estato introdotto
senza la cache di secondo livello e racchiuso in una scheda denominata SEPP (Single
Figura B.44 L'immagine eli sinistra mostra i1 microprocessore Pentium Pro (cui estato
rimosso l'involucro protettivo) nella versione con 1024 kbyte. Sul supporto ceramico il. chip
della CPU ea sinistra, mentre i due chip della cache 50110 a destra. NeUe prime versioni,
che prevedevano 256 kbyte di questa era costituita da un solo chip. La figura a destra
schematizza \'architettura Socket 8.
.

."

." '
, ,.'.
'. ' i'
,.
..
...
,.
I
, '..
"1.1:
' .. ...
" I"
. "
..' .'.
.", :.
,,' IT '.
' ....
.'. '1::', .
'.
.' ."
r'i"::' '::
L
.::, ....
.,.
". " '
__ : "
,'.:-r
. ' ;: ...
::. i (.'
, .. , ...
" , ...
, ',:
... - ".:-
1 ..
" .
''.1' ','I'
:'...
..
.. .,1 "
I'
,.. ',-{.
.,;". .".
.' ".
,.
,. ,. ..
.{.,:':":

..
-'., .'
.,,;' _'1;-,
rl::;'
-'.
.' JJ;' .
"
,.' ,:,1'1.:'
:t,::
.:;
..
" Ilil,
.,.: ..
.... ','
,',:.,'
" .:..!' .
'11.'
. ' . :,;;-'
.' '.' 'J\{:.
"f
' >.,
, ,'.
I ;$,:,
'::..:"
.. 'i n
iW;'
, , .

c
...
.' 't-,
o t!"
"."
,,
-" ,:.,
,.'
-t; ,
; - '
,
.. \.,-
"
t
.,.
,..
" ::,
I
'
" . ." ,.
,.
.
'"', "
; , /;':, '
.. 1
...
.. >;'
" .i f,
..
.' .. ..
, ,
, '. '.. 1:.'1.
!. I}i'
, :.;0<
.. ' " '::i;-'
-.., ,1",'
.
,.. .."
',.,",
" .. ,I, ,;1'" .
. 'r" .ff,.
,",.' 1"1.'.
.. ,.' ."".
., .,,".
PENTIUM
.... BUI dl SIstema
L2 CACHE
-
PCI ...
ro-
M,moIls
"""
/
I
BUI PCI
,,,"'"
""...
B.15 La forma.esterna, i bus e altro
622 Appendice B
I
J
Conviene esaminare anche come si eandata evolvendo 1a produzione delle CPU Intel
in riferimento alIa loro forma esteroa, a1 numero di piedini, alia di montaggio
ecc. Anche perche, data I'alto livello di integrazione raggiunta e 1a complessita dei
dispositivi, questi aspetti souo determinanti nella costruzione della scheda madre dei
PC.
Figura B.43 A siniBtra viene mostrato lo zoccolo Socket 1 usato per it Pentium. A destra
viene mostrata l'architettura Socket 7. L'Intel denota come PCl Set l'i.nsieme di integrati cbe
(anno da supporto alla CPU e la collegano al resto del sistema. n bus lavora. a 66 MHz. Su
di esse passano i dati destinati alla memoria. cache di secondo livello e alIa memoria centrale,
oltre the all'l/O. nbus rischia di diventare facilmente un collo di bottiglia, specialmente con
processori a frequenza piu alta dei 66 MHz.
1'8068 e il 286 erano in forma di integrato con piedini disposti in doppia fila.
Con il 386 einiziata la produzione PGA e corrispondentemente sui PC sonG apparsi
gh zoccoli ("ocket) ZIF (Zero I""ertio" Force). II 486 veniva montato BU uno zoccolo
denominato Socket 3.
II Pentium estato montato su uno zoccolo denominato Socket 7, di cui si ciporta
in l'immagine in FiguraB.43.
A partire dal Pentium, la CPU necessita sempre piu di specifici integrati di sup-
porto e il nome Socket 7 6nisce col denotare molto di piu di uno zoccolo di montaggio,
e diventa. indicativo dell'architettura della scheda madre e della varieta. di
cessori compatibili con Ie schede madri basate sui chipset per il Pentium (Cfr. 11.5).
Si di schede Socket 7 per indicare schede madri la cui architettura e quella di
\
FiguraB.43.
n Pentium Pro limita il collo di bottiglia del bus del Pentium, integrando sullo
stesso supporto la cache eli secondo liveUo (FiguraB.44) e prevedendo per eSBa un bus
\
separato, operante alIa ,tesa velocit.. della CPU. Si tratta della cosiddetta architet
tura DIB. Fornendo 2 canali di comunicazione separati e quindi eliminando iI traffico
I relativo alla cache L2 da! bus di sistema, viene eliminato il colla di bottiglia che si
veniva a creare nei sistemi Socket 7.
\
\
I
I
I
I
I
I
I
I
I
I
I
\
I
I
I
1
625 L1architettura 8086
..
Figura B.47 II processore in versione PPGA (PlQ3tic Pin Grid A1T't1y)visto da
sopra. Si notano i piedini affogati nella plastica, visibili anche da! lato superiore e la zona
centrale metallica che permette 10 scambio termico con il dissipatore. A destra 'il processore
Pentium III nel package FC-PGA.
alIa stessa frequenza della CPU. Questa earatteristica ha permesso anche per questa
processore il ritorno nel package PGA, piu precisamente nella sua variante FC-PGA
(Flip Chip-Pin Grid Array) che rnostriarno in Figura B.47. nPentium ill in package
Fe-PGA 370 si inserisce nel Socket 370 gia. rammentato per il processore
Celeron.
Figura B.46 A sinistra e riportato 10 stampato che costituisce il Pentium IIi l'integrato
piu grosso, al centro, e il microprocessore, i due integrati a destra costituiscono Ie cache. A
destra e riportato il processore Celeron Convington (versione di introduzione). La scheda e
priva del rivestimento plastico e viene denominata SEPP (Single Edge Pf"'0Ce3sor Packa.ge).
Successivamente e stata aggiunta sulla scheda una cache da 128 kbyte; la scheda e stata
rivestita e chiamata ancora SECC. In ultimo, il Celeron viene prodotto in versione PPGA.
Le due immagini sono in scala 1:2 (circa).
"
.'
.
.' .
"
..
..
<,"
I )!
j
:1 i
' .
..

;l..
..
...,
.'
......
..
' .. ' I.
. .
. .
.',' .....
,.

, Ii
'.

'"
" .... . I
,... '
". j , I .
,
". .;' ,
. '-
..-; '.. .-' ,: .
". ,'" . ;.
,,; ,'" ,
'}' .
, '\,1-'"'
-, .'1,,,'; i, __
.: N ..., ,
..1:: ?t;
"'/"
., : ,- .'
" ., . .
..... ',..,
....."... :i',1
' .. , '.. .",'
'" , .'
',/.
..... '. ..
; , , ,:"
.. ' .'.
.. ' , 1'1,
..... '
. 'l;i,'"
,\',"::, ',,"
.,', , I . , '0"(."
".:
..... .'
'., .. w..
, "',,
,.:.,,::
\ !."', I.,
... '.'
'.. ...
.. ,' .
.,.. "fl'
-, .' .,
"
.},.
:,f', ..
'. I .'. ".
,- )

., ., ,
. " " , I 1"..
', .. " ."',
,. ""
"
"
..,' ,
uc- II'
,.:< I' '.
,.", ,.'''' .
' .. ".', ". '."
_:../i;;
", ".<
'.' ". I ,
,. ,
5:1 Anche per il Celeron in versione PPGA c'e comunque un adattatore per montarlo au scbede Slot.
13cm
Edge Processor Package), priva di custodia di plastica protettiva} rna ancora campa-
tibile con Slot 1 (FiguraB.46). Successivamente sono stati aggiunti 128 kbyte di cache
L2, integrata sulla stesaa piastrina di silicio della CPU, capace cii funzionare aHa sua
stessa veloeita. I modeUi successivi, realizzati in tecnologia 0,25 e 0,18 micron (gli
ultimi) e eapaci di raggiungere 1a frequenza cii 600MHz
l
hanna decretato ilritorno
a! package PGA in una nuova variante chiarnata PPGA (Plastic Pin Grid Array),
mostrato in Figura BA7.
Questo dispositivo, a prima vista molto simile a quello dei processori Pentium, ha
370 piedini e si monta su uno zoccolo leggermente pili grande del Socket 7
52
. E stata
abbandonata la progressione numerica tenuta fino a Socket 8 ed estato denominato
Socket 370 (da! numero di piedini). Corne conseguenza si eavuto la rinascita delle
scheele madri con CPU montate non pili su connettori rna su zoccali.
n Pentium ill} erealizzato in tecnologia 0,18 micron, funziona alIa tensione di
1,65 V ed eil primo microprocessore appartenente aHa famiglia x 86 a raggiungere 1a
frequenza di lavoro di 1 GHz. I primi modelli di questo processore avevano la cache
L2 separata come nel Pentium IT e
1
quindi
1
venivano forniti in forma SECe, con
interfaccia di collegamento di tipo Slot 1. I modelli successivi invece hanno integrato
nello atesso chip della CPU anche i 256 kbyte di cache L2, i quali ora funzionano
,
Figura B.4S n package SECC Single Edge Contact Ca.rtridge utiiizzato nel Pentium II. La
figura e in scala }; 1.
624 Appendice B
I
I
I
I
I
I
I
I
\
I
I
I
1
625
L1architettura 8086
..
Figura B.47 II processore in versione PPGA (PlQ3tic Pin Grid A1T't1y)visto da
sopra. Si notano i piedini affogati nella plastica, visibili anche da! lato superiore e la zona
centrale metallica che permette 10 scambio termico con il dissipatore. A destra 'il processore
Pentium III nel package FC-PGA.
alIa stessa frequenza della CPU. Questa earatteristica ha permesso anche per questa
processore il ritorno nel package PGA, piu precisamente nella sua variante FC-PGA
(Flip Chip-Pin Grid Array) che rnostriarno in Figura B.47. nPentium ill in package
Fe-PGA 370 si inserisce nel Socket 370 gia. rammentato per il processore
Celeron.
Figura B.46 A sinistra e riportato 10 stampato che costituisce il Pentium IIi l'integrato
piu grosso, al centro, e il microprocessore, i due integrati a destra costituiscono Ie cache. A
destra e riportato il processore Celeron Convington (versione di introduzione). La scheda e
priva del rivestimento plastico e viene denominata SEPP (Single Edge Pf"'0Ce3sor Packa.ge).
Successivamente e stata aggiunta sulla scheda una cache da 128 kbyte; la scheda e stata
rivestita e chiamata ancora SECC. In ultimo, il Celeron viene prodotto in versione PPGA.
Le due immagini sono in scala 1:2 (circa).
"
.'
.
.' .
"
..
..
<,"
I )!
j
:1 i
' .
..

;l..
..
...,
.'
......
..
' .. ' I.
. .
. .
.',' .....
,.

, Ii
'.

'"
" .... . I
,... '
". j , I .
,
". .;' ,
. '-
..-; '.. .-' ,: .
". ,'" . ;.
,,; ,'" ,
'}' .
, '\,1-'"'
-, .'1,,,'; i, __
.: N ..., ,
..1:: ?t;
"'/"
., : ,- .'
" ., . .
..... ',..,
....."... :i',1
' .. , '.. .",'
'" , .'
',/.
..... '. ..
; , , ,:"
.. ' .'.
.. ' , 1'1,
..... '
. 'l;i,'"
,\',"::, ',,"
.,', , I . , '0"(."
".:
..... .'
'., .. w..
, "',,
,.:.,,::
\ !."', I.,
... '.'
'.. ...
.. ,' .
.,.. "fl'
-, .' .,
"
.},.
:,f', ..
'. I .'. ".
,- )

., ., ,
. " " , I 1"..
', .. " ."',
,. ""
"
"
..,' ,
uc- II'
,.:< I' '.
,.", ,.'''' .
' .. ".', ". '."
_:../i;;
", ".<
'.' ". I ,
,. ,
5:1 Anche per il Celeron in versione PPGA c'e comunque un adattatore per montarlo au scbede Slot.
13cm
Edge Processor Package), priva di custodia di plastica protettiva} rna ancora campa-
tibile con Slot 1 (FiguraB.46). Successivamente sono stati aggiunti 128 kbyte di cache
L2, integrata sulla stesaa piastrina di silicio della CPU, capace cii funzionare aHa sua
stessa veloeita. I modeUi successivi, realizzati in tecnologia 0,25 e 0,18 micron (gli
ultimi) e eapaci di raggiungere 1a frequenza cii 600MHz
l
hanna decretato ilritorno
a! package PGA in una nuova variante chiarnata PPGA (Plastic Pin Grid Array),
mostrato in Figura BA7.
Questo dispositivo, a prima vista molto simile a quello dei processori Pentium, ha
370 piedini e si monta su uno zoccolo leggermente pili grande del Socket 7
52
. E stata
abbandonata la progressione numerica tenuta fino a Socket 8 ed estato denominato
Socket 370 (da! numero di piedini). Corne conseguenza si eavuto la rinascita delle
scheele madri con CPU montate non pili su connettori rna su zoccali.
n Pentium ill} erealizzato in tecnologia 0,18 micron, funziona alIa tensione di
1,65 V ed eil primo microprocessore appartenente aHa famiglia x 86 a raggiungere 1a
frequenza di lavoro di 1 GHz. I primi modelli di questo processore avevano la cache
L2 separata come nel Pentium IT e
1
quindi
1
venivano forniti in forma SECe, con
interfaccia di collegamento di tipo Slot 1. I modelli successivi invece hanno integrato
nello atesso chip della CPU anche i 256 kbyte di cache L2, i quali ora funzionano
,
Figura B.4S n package SECC Single Edge Contact Ca.rtridge utiiizzato nel Pentium II. La
figura e in scala }; 1.
624 Appendice B
626 Appendice B
B.16 Esercizi
Esercizio B.3 In riferimento all'8086, si illustri Peffetto dell'istruzione MOV AX, 127
(BX) (Sr).
8i discuta quant.o vale BP durante l'esecuzione del corpo della funzione (si assuma
che prima della chiamata BP valga BPO). Si schematizzi 10 stato della stad durante
Ilesecuzione.
c
L'architettura PowerPC
L'architettura PowerPC enata da un accordo, siglato agli inizi degli anni novanta,
per un progetto in comune di tre colossi del settore elettronicojinformatico: IBM,
Motorola e Apple, ciascuno dei quali portava un bagaglio inestimabile di conoscenze.
L'IBM era tradizionalmente il pill grande produttore di sistemi informatici e portava
nel progetto Ie sue competenze in termini di architetture hardware e software, acquisite
in anni di supremazia sul mercato; in particolare rendeva disponibile l'architettura
POWER, sviluppata in precedenza
l
che avrebbe costituito 1a base di parteoza del
progetto. La Motorola, uno dei pili grandi produttori moodiali ,di cireuiti integrati,
titolare dell'architettura 68000 (che, anche in conseguenza di questa progetto, sarebbe
stata praticamente abbandonata), portava competenze nel campo dei processi e della
produzione di componenti allo stato solido. La. Apple, portava la sua esperienza nel
campo dei calcoJatori per50nali e, in particolare, nel campo del software.
Le premesse clerano tutte per far ritenere che
l
nel giro di qualche anno dall'inizio
dell'impresa, sarebbe nata una stella eapace di oscurare quella dell'Intel. A distanza
di oltre dieci anni dall'avvio dell'iniziativa, che, come vedremo, ha prodotto peraltro
macehine pregevolissime sotto it profilo arehitettonico, il mereato eaneor pill salda-
mente in mano a Intel. Non eil caso di svolgere qui un'analisi approfondita su come si
eevoluto il mercato, rna risulta evidente che hanno giocato a favore dell'Intell'enorme
parco gia. installato (macchine e soprattutto software), il costante miglioramento delle
prestazioni delle sue CPU e it sostanziale appoggio della Microsoft, che si etrovata a
essere iI principale propugnatore di questa architettura.
Anche se Ie CPU PowerPC non hanna Ie vendite delle CPU Intel, esse vengono
ampiamente usate: 130 Apple Ie impiega nella linea corrente dei McIntosh, la IBM
ci costruisce stazioni di lavoro. Inoltre ffiM produce i sistemi AS400 (diffusissimi
in Italia nel campo dell'elaborazione dati) utilizzando processori di questa famiglia,
in sostituzione di una precedente architettura proprietaria. D CMO eparticolarmente
interessante perche it repertorio di istruzioni del PowerPc edifferente rispetto a quello
originale del sistema AS/400.
In questa capitolo si esaminano in un certo dettaglio i modelli 601 e 604. Nel
capitola si cerca per quanta possibile di mantenere la terminologia dei manuali Mo-
torola.
..
1
1
..
..
,."
I
"
-,
..
..!
" i
"
l" .
,\".;
, '. , .. ,J' ,
-
;t
",.

, '".
; 1'"
, .. '10'
"
, , '.'
,
.- \
,I "
..
', ..
.. .
,.'
"
::'. ,".
,.
,..
c
"'-.. ' t-
, ',.'
.. '.
"
..' ,'-
.' '" '/:'
, I 1'
''', -' ' ',"
',h'

i
III',
..
"e' "
... ,. "
-' lI:;
, - .'.. '-"
. r -
,i , ..
, .
"": 'i',:'
.. ..
"'. '.
,;,. ',; ",
'1 ' e," !.
,., .' .. :,.',
:
, ",'
'.'

I " '!
"" ;'- ..
, ,.,
.,

,
.,,-., 'c'
... .
.
" " '. ' ,
.. " ,

i., ' ;" .


" ' ' .
".,
.':' :,
'_.' 'r ."
, ,,' ."'

.'
... I[
'! '."

..'
, j.,.
.
,- ,.' .. '\
;.' r
,
.i. :.
,',
", .
"
, ' ,,I : "
,.
emp eah, 11 jne L1
bloeeo B
(eseguito frequentemente)
jmp FINE
L1: blocco A
(eseguito raramente)
fINE:
/* men interi*/
1* variabile locale intera*/
1* corpo della funzione*/
int x;
}
emp eah, 11 je Ll
bloceo A
(eseguito raramente)
jmp FINE
Ll: blocco B
(eseguito frequentemente)
FINE:
Esercizio B.4 8i valuti il numero di cieli di clock richiesto dall'istruzione PUSH
AX, assumendo che 10 stack sia allineato, Ie operazioni di letturafscrittura in me-
moria richiedano 4 cicli.d.i clock, e che l'esecuzione dell'istruzione oltre ai cieli di
letturafscrittura richieda 3 cicli di clock addizionalJ,.
8i valuti il numero di cicli di clock richiesto dall'istruzione, POP HEM, assumendo
che 10 stack sia aIlineato, Ie operazioni di letturafscrittura in memoria richiedano 4
cieli di clock, e che l'esecuzione dell'istruzione oltre ai cicli di lettura/scrittura richieda
4 dcli eli clock adelizionali.
Esercizio B.5 8i serivano in modo rigoroso i due criteri generaH per la protezione
ad anelli nei sistemi Intel: (1) criterio per la protezione dei datij (2) criteria per la
prot.ezione nei trasferimenti di controllo.
Esercizio B.6 In riferimento at Pentium. (0 a un suo successore), quando si presenta
una dirarnazione the non ein BTB, 1a logica segue 1a regola secondo cui, se dirama-
zione ein avanti, essa non avra. luogo. Tenuto conto di questa regola si indichi .quale
tra i due tratti 1 e 2 d.i codice assembler epreferibile.
Esercizio B.1 Le operazioni PUSH e POP dell'B086 muovono sempre 16 bit. Se 10
stack non e allineato agli indirizzi pari dgni accesso aUo stack richiede due deli di
lettura. 0 scrittura anziche uno. 5i ipotizzi un programma nel Quale ci sia un 20% di
istruzioni operanti sullo stack. Di quanta 5i degradano Ie prestazioni?
Esercizio B.2 8i diacuta la funzione del registro BP neUe chiamate ai sottoprogram-
mi, nel passaggio dei parametri e per l'allocazione variabili locali. In particolare,
si Caccia riferimento alIa seguente funzione C, assumendo che un intera aecupi 16 bit
e che la chiamata sia eli tipo near:
lot f(m,n)
int m, n;
{
I
I
I
,
I
I
I
I
I
I
I

I
I
Esercizio B.7 8i forni.sca una descrizione della tecnica detta register renaming.
.. ..
.'
.. 1
"..: ',' -
1:'. ,"
.. I
,,' ,,'.....
.. L'
. ,
626 Appendice B
B.16 Esercizi
Esercizio B.3 In riferimento all'8086, si illustri Peffetto dell'istruzione MOV AX, 127
(BX) (Sr).
8i discuta quant.o vale BP durante l'esecuzione del corpo della funzione (si assuma
che prima della chiamata BP valga BPO). Si schematizzi 10 stato della stad durante
Ilesecuzione.
c
L'architettura PowerPC
L'architettura PowerPC enata da un accordo, siglato agli inizi degli anni novanta,
per un progetto in comune di tre colossi del settore elettronicojinformatico: IBM,
Motorola e Apple, ciascuno dei quali portava un bagaglio inestimabile di conoscenze.
L'IBM era tradizionalmente il pill grande produttore di sistemi informatici e portava
nel progetto Ie sue competenze in termini di architetture hardware e software, acquisite
in anni di supremazia sul mercato; in particolare rendeva disponibile l'architettura
POWER, sviluppata in precedenza
l
che avrebbe costituito 1a base di parteoza del
progetto. La Motorola, uno dei pili grandi produttori moodiali ,di cireuiti integrati,
titolare dell'architettura 68000 (che, anche in conseguenza di questa progetto, sarebbe
stata praticamente abbandonata), portava competenze nel campo dei processi e della
produzione di componenti allo stato solido. La. Apple, portava la sua esperienza nel
campo dei calcoJatori per50nali e, in particolare, nel campo del software.
Le premesse clerano tutte per far ritenere che
l
nel giro di qualche anno dall'inizio
dell'impresa, sarebbe nata una stella eapace di oscurare quella dell'Intel. A distanza
di oltre dieci anni dall'avvio dell'iniziativa, che, come vedremo, ha prodotto peraltro
macehine pregevolissime sotto it profilo arehitettonico, il mereato eaneor pill salda-
mente in mano a Intel. Non eil caso di svolgere qui un'analisi approfondita su come si
eevoluto il mercato, rna risulta evidente che hanno giocato a favore dell'Intell'enorme
parco gia. installato (macchine e soprattutto software), il costante miglioramento delle
prestazioni delle sue CPU e it sostanziale appoggio della Microsoft, che si etrovata a
essere iI principale propugnatore di questa architettura.
Anche se Ie CPU PowerPC non hanna Ie vendite delle CPU Intel, esse vengono
ampiamente usate: 130 Apple Ie impiega nella linea corrente dei McIntosh, la IBM
ci costruisce stazioni di lavoro. Inoltre ffiM produce i sistemi AS400 (diffusissimi
in Italia nel campo dell'elaborazione dati) utilizzando processori di questa famiglia,
in sostituzione di una precedente architettura proprietaria. D CMO eparticolarmente
interessante perche it repertorio di istruzioni del PowerPc edifferente rispetto a quello
originale del sistema AS/400.
In questa capitolo si esaminano in un certo dettaglio i modelli 601 e 604. Nel
capitola si cerca per quanta possibile di mantenere la terminologia dei manuali Mo-
torola.
..
1
1
..
..
,."
I
"
-,
..
..!
" i
"
l" .
,\".;
, '. , .. ,J' ,
-
;t
",.

, '".
; 1'"
, .. '10'
"
, , '.'
,
.- \
,I "
..
', ..
.. .
,.'
"
::'. ,".
,.
,..
c
"'-.. ' t-
, ',.'
.. '.
"
..' ,'-
.' '" '/:'
, I 1'
''', -' ' ',"
',h'

i
III',
..
"e' "
... ,. "
-' lI:;
, - .'.. '-"
. r -
,i , ..
, .
"": 'i',:'
.. ..
"'. '.
,;,. ',; ",
'1 ' e," !.
,., .' .. :,.',
:
, ",'
'.'

I " '!
"" ;'- ..
, ,.,
.,

,
.,,-., 'c'
... .
.
" " '. ' ,
.. " ,

i., ' ;" .


" ' ' .
".,
.':' :,
'_.' 'r ."
, ,,' ."'

.'
... I[
'! '."

..'
, j.,.
.
,- ,.' .. '\
;.' r
,
.i. :.
,',
", .
"
, ' ,,I : "
,.
emp eah, 11 jne L1
bloeeo B
(eseguito frequentemente)
jmp FINE
L1: blocco A
(eseguito raramente)
fINE:
/* men interi*/
1* variabile locale intera*/
1* corpo della funzione*/
int x;
}
emp eah, 11 je Ll
bloceo A
(eseguito raramente)
jmp FINE
Ll: blocco B
(eseguito frequentemente)
FINE:
Esercizio B.4 8i valuti il numero di cieli di clock richiesto dall'istruzione PUSH
AX, assumendo che 10 stack sia allineato, Ie operazioni di letturafscrittura in me-
moria richiedano 4 cicli.d.i clock, e che l'esecuzione dell'istruzione oltre ai cieli di
letturafscrittura richieda 3 cicli di clock addizionalJ,.
8i valuti il numero di cicli di clock richiesto dall'istruzione, POP HEM, assumendo
che 10 stack sia aIlineato, Ie operazioni di letturafscrittura in memoria richiedano 4
cieli di clock, e che l'esecuzione dell'istruzione oltre ai cicli di lettura/scrittura richieda
4 dcli eli clock adelizionali.
Esercizio B.5 8i serivano in modo rigoroso i due criteri generaH per la protezione
ad anelli nei sistemi Intel: (1) criterio per la protezione dei datij (2) criteria per la
prot.ezione nei trasferimenti di controllo.
Esercizio B.6 In riferimento at Pentium. (0 a un suo successore), quando si presenta
una dirarnazione the non ein BTB, 1a logica segue 1a regola secondo cui, se dirama-
zione ein avanti, essa non avra. luogo. Tenuto conto di questa regola si indichi .quale
tra i due tratti 1 e 2 d.i codice assembler epreferibile.
Esercizio B.1 Le operazioni PUSH e POP dell'B086 muovono sempre 16 bit. Se 10
stack non e allineato agli indirizzi pari dgni accesso aUo stack richiede due deli di
lettura. 0 scrittura anziche uno. 5i ipotizzi un programma nel Quale ci sia un 20% di
istruzioni operanti sullo stack. Di quanta 5i degradano Ie prestazioni?
Esercizio B.2 8i diacuta la funzione del registro BP neUe chiamate ai sottoprogram-
mi, nel passaggio dei parametri e per l'allocazione variabili locali. In particolare,
si Caccia riferimento alIa seguente funzione C, assumendo che un intera aecupi 16 bit
e che la chiamata sia eli tipo near:
lot f(m,n)
int m, n;
{
I
I
I
,
I
I
I
I
I
I
I

I
I
Esercizio B.7 8i forni.sca una descrizione della tecnica detta register renaming.
.. ..
.'
.. 1
"..: ',' -
1:'. ,"
.. I
,,' ,,'.....
.. L'
. ,
)
I
I
I
I
I
)
I
I
I
1
I
I
\
I
I
1
31
"
,
"
.0
.,
" OP RT RA RB EO IR-
FRT FRA FRB
RS
FRS
"
,
"
"
I .OP RT RA 0
FRT SI

UI
L'a.rchitettura PowerPC 629
o e 11 Ie <:1 22
1 OP 1 RT I RA I RB ffij EO'"
RT Regbtro destinulone
RA,RB,RS Registro sergent!!
D , Scostamento
EO.Xa,EO Estensione codiee operativo
MB Inltio maseher8
SH Scorrlmento
FRT Regislro destinazione floating
FRA,FRB,FRC,FRS Registro sorgenle Hoallng
SI,U1 Immediato con/seen segno
OE Abililazione trabocco
ME Fine mascher&.
Re Record bil
U Deslin8.zione sallo
80 Opzlone per il nllo condizlonato
80 Scostamenlo destinazlone sallo condhionalo
AA Indirizzo 8.sso1ulo/relativo
LK Collegare/non collegare
Figura C.I Formato delle i.struzioni. 8i noti la regolarita dei campi. Alcuni formati
non sono rappresentati. Il primo formato dall'alto erelativo alle operazioni. di caricamen-
to/memorizzazione nei/dei registri. It secondo relativa alle operazioni aritmetiche e logicbe,
sia per interi che per numeri in virgola mobile. nterzo formato e le operazioni tra interi.
t bit Rc e OE.indicano se tenere 0 no canto del riporto e del trabocco. n primo formato dal
basso erelativo aile istruzioni di saito condizionato, queUo sopra all'istruzione di salto. Per
questi due formati i1 bit AA indica se il campo LI 0 BD devono essere presi come assoluti
o relativi, mentre il bit LK indica se il valore di PC corrente deve 0 no essere salvato 'nel
registro di denominato LINK, come eventuale indixizzo di ritorno.
. ,
o 6 Il Ie 3031
lor IRS IRAI BO m
o 6 II Ie 2l 26 31
lop IFRT IFRA I FRB I FRC I xo
o e 11 Ie 21 :::e 31
lop IRS
o ,
I or 1",,========:::::iL:========""
_ IJ
\, Ie
., 1)
,..

'::.... J....
"'. '.' y' .f
", ..
.. " , '.
.
";j.',
.-
" .','
i ,.
, :': ..;.]. ,
': '\""}"
_ "r\ '.':.
:',t '-',
, . H',., .
. C""" !'
", ',I .:
.... , '.
.. .:.-';.,' "
,:"',",' 1 ,,,,,,:,.H" ':'
'.
..<,:,;,
"" "j, ,1, ",
..
'-' .' "
,,, .. ; ..... ,
-, , ..
,
.;r.', ., ,..
'. ",,,
, .. .. '
,":..') :,j'
.- ':';:,:.
'j '", 'I "
'.-i '<'
,.' ' ... ,. ,
;' "dl ;'
.' .. '.' ,
. . ,.'.-......1. "
".:
__ , . .t':"

'1,{"I,.j,t.,
,. I ;:::
'. ,'i".... .
..
I "
"".... I' '
.. ';,1
,'.. _T" ,',
,
.' .,' .
.'
, ,.' ,
',,'Jl: i :,.! '
, ".:
......;.',' ;',
.;,' ...,-
" ...:,',.. "/
.. ..,."'" ,' ..
, '.,:":: !
.:.:
, .\:, l' ,
, "', .;., '
",\;,1',: '.
. ..I."'.' "
.:,
0, if V
..
'. ;. ,. ,..'
.d "
,
, , ,
,'.,
.;r:},
"., < '.
,..... "


'"

';' ", "
::"" ,
,/',:,
.}':",
'.
... .
;
,
" ",
C.l.I Formati istruzione
definire iI modelJo architetturale in modo da rendere chiara la distinzione Era
architettura e realizzazione in una tecnologia specifica;
mantenere semplice l'architettura, in modo da consentire la realizzazione di mi-
croprocessori a basso-costo su singolo chip per I'industria dei PC e per il comparto
industrialej
escludere Ie istruzioni ehe compromettono 1a capacita di realizzare processori Con
clock veloci.
C.l.2 Organizzazione
In termini generali , l'architettura PowerPC si l;>asa su 3 unita di esecuzione, come
nella schema di Figura C.2.
L'unita in virgola fissa (IU).
Responsabile per Ie operaziani intere e per tutte Ie operazioni ehe fanno rife-
rimento alIa memoria, sia intere che in virgola mobile. In pratica essa tratta
la maggior parte delle istruzioni dell'architettura PQwerPC. Al suo interno si
trovano 32 registri di usa generale,
rimuovere Ie barriere che impediscono realizzazioni con alto grade di esecuzione
superscalare e meccanismi cii esecuzione fuori ordine;
aggiungere i meccanismi per Ia costruzione di sistemi multiprocessorej
assicurare un hingo cicIo di vita aWarchitettura estendendola a 64 bit.
lei sono poi un certo numero di formati utitizzati solamente neUe reali2za.zioni a. 64 bit e sona
mostrati in Figura C.l.
COSI come per Ie tipiche architetture RISC, Ie istruzioni sono tutte Iunghe 32 bit. e
hanno i loro campi allineati in modo simile in tutti i formati. La maggior parte delle
istruzioni utilizza uno dei formati mostrati in Figura C.I
I
.
628 Appendice C
C.l Architettura PowerPC
PowerPC rappresenta la terna generazione di architettura RISC. L'architettura deriva
dalla precedente architettura POWER [WS94]' sviluppata da IBM per il mercato deUe
stazioni di lavoro tecnico-scientifiche.
Gli obiettivi del progetto sonO stati:
)
I
I
I
I
I
)
I
I
I
1
I
I
\
I
I
1
31
"
,
"
.0
.,
" OP RT RA RB
EO IR-
FRT FRA FRB
RS
FRS
"
,
"
"
I
.OP
RT RA 0
FRT SI

UI
L'a.rchitettura PowerPC 629
o e 11 Ie <:1 22
1 OP 1 RT I RA I RB ffij EO'"
RT Regbtro destinulone
RA,RB,RS Registro sergent!!
D , Scostamento
EO.Xa,EO Estensione codiee operativo
MB Inltio maseher8
SH Scorrlmento
FRT Regislro destinazione floating
FRA,FRB,FRC,FRS Registro sorgenle Hoallng
SI,U1 Immediato con/seen segno
OE Abililazione trabocco
ME Fine mascher&.
Re Record bil
U Deslin8.zione sallo
80 Opzlone per il nllo condizlonato
80 Scostamenlo destinazlone sallo condhionalo
AA Indirizzo 8.sso1ulo/relativo
LK Collegare/non collegare
Figura C.I Formato delle i.struzioni. 8i noti la regolarita dei campi. Alcuni formati
non sono rappresentati. Il primo formato dall'alto erelativo alle operazioni. di caricamen-
to/memorizzazione nei/dei registri. It secondo relativa alle operazioni aritmetiche e logicbe,
sia per interi che per numeri in virgola mobile. nterzo formato e le operazioni tra interi.
t bit Rc e OE.indicano se tenere 0 no canto del riporto e del trabocco. n primo formato dal
basso erelativo aile istruzioni di saito condizionato, queUo sopra all'istruzione di salto. Per
questi due formati i1 bit AA indica se il campo LI 0 BD devono essere presi come assoluti
o relativi, mentre il bit LK indica se il valore di PC corrente deve 0 no essere salvato 'nel
registro di denominato LINK, come eventuale indixizzo di ritorno.
. ,
o 6 Il Ie 3031
lor IRS IRAI BO m
o 6 II Ie 2l 26 31
lop IFRT IFRA I FRB I FRC I xo
o e 11 Ie 21 :::e 31
lop IRS
o ,
I or 1",,========:::::iL:========""
_ IJ
\, Ie
., 1)
,..

'::.... J....
"'. '.' y' .f
", ..
.. " , '.
.
";j.',
.-
" .','
i ,.
, :': ..;.]. ,
': '\""}"
_ "r\ '.':.
:',t '-',
, . H',., .
. C""" !'
", ',I .:
.... , '.
.. .:.-';.,' "
,:"',",' 1
,,,,,,:,.H" ':'
'.
..<,:,;,
"" "j, ,1, ",
..
'-' .' "
,,, .. ; ..... ,
-, , ..
,
.;r.', ., ,..
'. ",,,
, .. .. '
,":..') :,j'
.- ':';:,:.
'j '", 'I "
'.-i '<'
,.' ' ... ,. ,
;' "dl ;'
.' .. '.' ,
. . ,.'.-......1. "
".:
__ , . .t':"

'1,{"I,.j,t.,
,. I ;:::
'. ,'i".... .
..
I "
"".... I' '
.. ';,1
,'.. _T" ,',
,
.' .,' .
.'
, ,.' ,
',,'Jl: i :,.! '
, ".:
......;.',' ;',
.;,' ...,-
" ...:,',.. "/
.. ..,."'" ,' ..
, '.,:":: !
.:.:
, .\:, l' ,
, "', .;., '
",\;,1',: '.
. ..I."'.' "
.:,
0, if V
..
'. ;. ,. ,..'
.d "
,
, , ,
,'.,
.;r:},
"., < '.
,..... "


'"

';' ", "
::"" ,
,/',:,
.}':",
'.
... .
;
,
" ",
C.l.I Formati istruzione
definire iI modelJo architetturale in modo da rendere chiara la distinzione Era
architettura e realizzazione in una tecnologia specifica;
mantenere semplice l'architettura, in modo da consentire la realizzazione di mi-
croprocessori a basso-costo su singolo chip per I'industria dei PC e per il comparto
industrialej
escludere Ie istruzioni ehe compromettono 1a capacita di realizzare processori Con
clock veloci.
C.l.2 Organizzazione
In termini generali
,
l'architettura PowerPC si l;>asa su 3 unita di esecuzione, come
nella schema di Figura C.2.
L'unita in virgola fissa (IU).
Responsabile per Ie operaziani intere e per tutte Ie operazioni ehe fanno rife-
rimento alIa memoria, sia intere che in virgola mobile. In pratica essa tratta
la maggior parte delle istruzioni dell'architettura PQwerPC. Al suo interno si
trovano 32 registri di usa generale,
rimuovere Ie barriere che impediscono realizzazioni con alto grade di esecuzione
superscalare e meccanismi cii esecuzione fuori ordine;
aggiungere i meccanismi per Ia costruzione di sistemi multiprocessorej
assicurare un hingo cicIo di vita aWarchitettura estendendola a 64 bit.
lei sono poi un certo numero di formati utitizzati solamente neUe reali2za.zioni a. 64 bit e sona
mostrati in Figura C.l.
COSI come per Ie tipiche architetture RISC, Ie istruzioni sono tutte Iunghe 32 bit. e
hanno i loro campi allineati in modo simile in tutti i formati. La maggior parte delle
istruzioni utilizza uno dei formati mostrati in Figura C.I
I
.
628 Appendice C
C.l Architettura PowerPC
PowerPC rappresenta la terna generazione di architettura RISC. L'architettura deriva
dalla precedente architettura POWER [WS94]' sviluppata da IBM per il mercato deUe
stazioni di lavoro tecnico-scientifiche.
Gli obiettivi del progetto sonO stati:
..
630 Appendice C
..""1 ' ,
"
1' '; , '
, .
L'arcbitettura. Power PC 631
,
'.- '1-:'; ,
,
" 1-; , ",
,. .
"' :, I "'"
,":'
,.' e,
500 400

...
620 150 MHz
C.2 La CPU MPC 601
601 66 MHz
PowerPC 603: processore a basso consumo di potenza, orientato ai calcolatori
personali portatili.
PowerPC 604: processore di elevate prestazioni utilizzato in calcolatori personali
da tavolo e in stazioni di lavoro (singolo processore 0 multiprocessore); ,in pratica
rappresenta l'evoluzione del 601.
603 50 MHz
PowerPC 620: processore a 64 bit a elevate prestaziani, utilizzato in stazioni di
lavoro, sistemi server e sistemi multiprocessore.
PowerPC 601: processore di medie prestazioni utilizzato principalmente in cal-
colatori personali da tavolo e in stazioni di lavoro.
604 100 MHz
o 100 200 300
Figura C.3 Prestazioni relative di processori PowerPC.
Riportiamo qui sotto le caratteristiche di quattro CPU PowerPC; Ie cui prestazioni
relative sono mostrate in Figura C.3.
C.1.3 Caratteristiche e prestazioni di alcuni modelli
'.
" I

<0 I, '
I
'
", , .
,
", , J'
, "',"
,
I)'
"i "':
,
:,
'..
,. >'
,r
, ..
, ,', ,,;,::'
, .
- I

..
, i"
...
, .
'c.j;

" . ..
.' I'

, . "
" '. f'
... ". ",
"
" .' ,
J ",.:", '._'
..
." , -II"
.I, , J,"
,.'.,",
..

'" ',r I
.','., ,",,:';:,:'
...
''" "
, '/' "
.,' :,' '!-
" ';':
-- I ,._
-

'::.., t'
..
.' ',.
'I'
, " "
T ,,,,.,, '.
'; "
"
,..
I"
.. ",r ,
" :'1',
.';', "',
r "
,', ,
',' " ,
.' " ; .
t .. t: " ,-,,,

"','
,
I ;'. ;.
1"



BPU ISTRUZ.
[
EMISSiONE
I
IU
FPU
Interi
Floo.ting
CACHE DATI
CACHE
ISTRUZIONI
MEMORIA
L1unita. di trattamento dei salti (BPU, Branch Processing Unit).
Responsabile del trattamento delle istruzioni di saIto, la quale basa la sua attivita
sul contenuto di alcum registri, tra cui in particolare il registro CR (Condition
register). BPU eannegata ne1l'unita istruzioni, assieme alia coda di istruzioni e
,
alia logica di emissione delle istruzioni. E l'unita istruzioni a dirigere il Busso di
istruzioni alla ro, alla FPU e alia stessa BPU.
L'unitil in virgola mobile (FPU).
'IIatta Ie operazioni in virgola mobile; a tal fine essa contiene 32 registri a 64 bit
dedicati a questa tipo di dati.
,.
Le tIe unita IUI FPU e BPU, sano tea lora indipendenti e lavorano in parallelo,
conferendo al PowerPC caratteristiche di architettura superscalare.
A seconda del modello eli CPU Ie unita sopra delineate presentano soluzioni di-
verse e, per esempio, possono contenere aJ lora interne piu unita operanti in parallelo.
Per questo motivo l'illustrazione dell'architettura richiede che si faccia riferimento
a specifici modelli di CPU. Nella parte che segue verranno trattati e confrontati i
modelli 601 e 604. Prima pero si danno alcune indicazioni circa Ie caratteristiche di
alcune CPU.
UNITA' ISTRUZIONI
j
l
I
I
I
I
I
I
I

-.
_.
-
-.
-.
-
-
-.
...
.-
.
..
.

-
-
,
I
J
Figura C.2 Architettura Power PC: relazione tra. i principali componenti. L'unita. istruzioni
eresponsabile dell'emissione delle istruzioni aUe tre unita BPU, IU e FPU. L'architettura.
prevede la separazione della cache istruzioni da.l1a cache dei dati (tuttavia il microprocessore
MPC601, il primo a essere prodotto, e stato realizzato con cache unificata _ un retaggio
dell'architettux. POWER).
t"
'Ii ", c
'. f'"
, ; ,
.'
...
, ' , ;::,
, .., ,;
'. , .
n 601 e considerato la prima realizzazione dell'architettura PowerPC, anche se ill
realta. esso rappresenta un. ponte fra l'architettura POWER e quella PowerPC, dato
che presenta caratteristiche di entrambe Ie architetture (il suo repertorio istruzioni
include istruzioni tipiche dell'architettura POWER), e una cache unificata (mentre
l'architettura PowerPC 1a prevede separata). La schema a blocchi del processore
[Mot93] ein Figura CA.
..
630 Appendice C
..""1 ' ,
"
1' '; , '
, .
L'arcbitettura. Power PC 631
,
'.- '1-:'; ,
,
" 1-; , ",
,. .
"' :, I "'"
,":'
,.' e,
500 400

...
620 150 MHz
C.2 La CPU MPC 601
601 66 MHz
PowerPC 603: processore a basso consumo di potenza, orientato ai calcolatori
personali portatili.
PowerPC 604: processore di elevate prestazioni utilizzato in calcolatori personali
da tavolo e in stazioni di lavoro (singolo processore 0 multiprocessore); ,in pratica
rappresenta l'evoluzione del 601.
603 50 MHz
PowerPC 620: processore a 64 bit a elevate prestaziani, utilizzato in stazioni di
lavoro, sistemi server e sistemi multiprocessore.
PowerPC 601: processore di medie prestazioni utilizzato principalmente in cal-
colatori personali da tavolo e in stazioni di lavoro.
604 100 MHz
o 100 200 300
Figura C.3 Prestazioni relative di processori PowerPC.
Riportiamo qui sotto le caratteristiche di quattro CPU PowerPC; Ie cui prestazioni
relative sono mostrate in Figura C.3.
C.1.3 Caratteristiche e prestazioni di alcuni modelli
'.
" I

<0 I, '
I
'
", , .
,
", , J'
, "',"
,
I)'
"i "':
,
:,
'..
,. >'
,r
, ..
, ,', ,,;,::'
, .
- I

..
, i"
...
, .
'c.j;

" . ..
.' I'

, . "
" '. f'
... ". ",
"
" .' ,
J ",.:", '._'
..
." , -II"
.I, , J,"
,.'.,",
..

'" ',r I
.','., ,",,:';:,:'
...
''" "
, '/' "
.,' :,' '!-
" ';':
-- I ,._
-

'::.., t'
..
.' ',.
'I'
, " "
T ,,,,.,, '.
'; "
"
,..
I"
.. ",r ,
" :'1',
.';', "',
r "
,', ,
',' " ,
.' " ; .
t .. t: " ,-,,,

"','
,
I ;'. ;.
1"



BPU ISTRUZ.
[
EMISSiONE
I
IU
FPU
Interi
Floo.ting
CACHE DATI
CACHE
ISTRUZIONI
MEMORIA
L1unita. di trattamento dei salti (BPU, Branch Processing Unit).
Responsabile del trattamento delle istruzioni di saIto, la quale basa la sua attivita
sul contenuto di alcum registri, tra cui in particolare il registro CR (Condition
register). BPU eannegata ne1l'unita istruzioni, assieme alia coda di istruzioni e
,
alia logica di emissione delle istruzioni. E l'unita istruzioni a dirigere il Busso di
istruzioni alla ro, alla FPU e alia stessa BPU.
L'unitil in virgola mobile (FPU).
'IIatta Ie operazioni in virgola mobile; a tal fine essa contiene 32 registri a 64 bit
dedicati a questa tipo di dati.
,.
Le tIe unita IUI FPU e BPU, sano tea lora indipendenti e lavorano in parallelo,
conferendo al PowerPC caratteristiche di architettura superscalare.
A seconda del modello eli CPU Ie unita sopra delineate presentano soluzioni di-
verse e, per esempio, possono contenere aJ lora interne piu unita operanti in parallelo.
Per questo motivo l'illustrazione dell'architettura richiede che si faccia riferimento
a specifici modelli di CPU. Nella parte che segue verranno trattati e confrontati i
modelli 601 e 604. Prima pero si danno alcune indicazioni circa Ie caratteristiche di
alcune CPU.
UNITA' ISTRUZIONI
j
l
I
I
I
I
I
I
I

-.
_.
-
-.
-.
-
-
-.
...
.-
.
..
.

-
-
,
I
J
Figura C.2 Architettura Power PC: relazione tra. i principali componenti. L'unita. istruzioni
eresponsabile dell'emissione delle istruzioni aUe tre unita BPU, IU e FPU. L'architettura.
prevede la separazione della cache istruzioni da.l1a cache dei dati (tuttavia il microprocessore
MPC601, il primo a essere prodotto, e stato realizzato con cache unificata _ un retaggio
dell'architettux. POWER).
t"
'Ii ", c
'. f'"
, ; ,
.'
...
, ' , ;::,
, .., ,;
'. , .
n 601 e considerato la prima realizzazione dell'architettura PowerPC, anche se ill
realta. esso rappresenta un. ponte fra l'architettura POWER e quella PowerPC, dato
che presenta caratteristiche di entrambe Ie architetture (il suo repertorio istruzioni
include istruzioni tipiche dell'architettura POWER), e una cache unificata (mentre
l'architettura PowerPC 1a prevede separata). La schema a blocchi del processore
[Mot93] ein Figura CA.
632 Appendice C
Figura C.4 Schema a. blocehi del microprocessore MPC6010 8i noti che dell'unita istruzioni
fa parte una coda, che pub contenere fino a 8 istruzioni, e la logica di emissione. In condizioni
fa-vorevali 1a 199ica di emissione puo trasmettere tIe istr\lzioni: una per.IU, una per BPU e
una per FPU. I registri di usa generaJ.e (GPR) sana in Wi i registri in virgola mobile (FPR)
sono in FPU; BPU prende decisioni sulla. base eli registri di condizione. La. cache eunificata.
e si osservi che il bus tra la. cache e la coda istruzioni ha un paraltelismo di 8 parole. MMU
el'unita. di gestione deUa memoria. Per ridWTe la penalizzazione nell'accesso alIa memoria
principale sono previste sia una coda di lettura cbe una. d.i scrittura.
-
I
I .
\
1- .
I-
,- .
I..
1.
c
I
1'"
I
I
I
I- ,
I
I-
\.
I .
,
)-
1
Prima di illustrare Ie modalita secondo cui opera Punita. istruzioni, esa.miniamo per
grandi linee gli aspetti legati alIa memoria.
MMU1 unita di gestione della memoria, gestisce fino a 4Tbyte
z
di memoria vir
tuale e 4 Gbyte di memoria fisica, La gestione della memoria virtuale neU'architettura
PowerPe estata deseritta in altra parte del libro. 14 G byte sono divisi in: (a) seg-
menti di dimensione fissa (256 M byte); (b) blocchi di dimensione variabile (128 kbyte
- 8 Mbyte); (c) pagine di dimensione lissa (4kbyte). MMU contiene tre TLB,
UTLB Cache associativa a 2 vie, unificata (indirizzi di istruzioni e di dati) di 256
.. .
POSIZIODl.
ITLB Cache completamente associativa di 4 posizioni , usata solo per Ie istruzioni.
Contiene Ie traduzioni di indirizzo relative aUe 4 pagine usate pin di recente.
BTLB Cache completamente associativa di 4 posiz-ioni , contenente Ie traduz-ioni di
indirizzo per i 4 blocchi usati piu di recente.
Per comprendere Ia pipeline del PowerPC e necessario prima esaminare la coda
istruz-ioni. La coda del 601 e mostrata In C.5,
II bus tra cache e coda istruzioni consente di trasferire fino a 8 istruzioni per cicio
di c1ock
3
, Gli stadi IQ4.. .IQ7 svolgono solo un azione di buffering delle istruz-ioni,
mentre negli stadi IQO.. .lQ3 vengono anche iniziate Ie operazioni di ,decodifica. Le
unita funzionaJi FPU e BPU possono prelevare una qualunque delle istruzioni presenti
in IQO.. .IQ3, a differenza dell'IU che pub accedere solo alI'istruzione contenuta in IQO,
come mostrato in Figura C.5. In tal modo epossibile, a'ogni colpo d.i clock, emettere
C,2,2 La coda istruzioni del 601
Dati. La. ricerca in questa caso avviene solo in UTLB e in BTLB.
Se la ricerca fallisce in tutti i TLB, l'informazione viene ricercata nella memoria
principale.
La cache integrata nella CPU edi 32 kbyte, a 8 vie, uni6cata. Le linee sana di 64
byte ognuna delle quali edivisa in due settori di 8 parole. L'unita. di memoria contiene
2 code una di lettura (da due posti di 8 parole) e una di scrittura (da tre posti di
8 parole)" che fanno da buffer per Ie operaz-ioni fra la cache e l'esterno. Essendo la
cache unificata, quando si ha un accesso contemporaneo a istruzioni e dati, l'accesso
ai dati eprioritario.
L'architettura PowerPC 633
La traduz-ione procede nel seguente modo.
Istruzioni. Viene prima esaminato ITLB. Se la ricerca in ITLB fallisc.e, prosegue
in parallelo in UTLB e in BTLB.
'IT sta per tera: 10
9
kbyte, dove lk sta per 1024.
30vviamente, si ha un trasferimeDto di 256 bit solo quando la coda evuota. (a causa dei salti).
C.2.1 Gestione della memoria
", ;
..,
I,",
,I' ,
,
,,',
,t,
'l>
,
"
',I, '
,.
:h
,
..
'.'
" ..
"
II','
"
,
I ".
I/."
;;,c.
, "
" I :.
-,,,
. '

" " .

:'\!
J
" .,\'
',(
,

..
'. ..'
':
,,, ,'I' :.
, ..
-
.. \.
'"
" " '. '
t! ,'.,
',., ,. ".'.
.' ")',:\
, ,
"I .. '
; ".
- I'" .
" ' '.,
..;
t. --:
.....
,

" I.'"
"
" I';'"
: ::;..'
..; '. .
, .
, ' ..
.. ,.
,,,',: I .
'\, ' ...
", ;;,:, ,
, .';':'
.... '.
"
;
,.
.'.. t:,
, "';.
..
.. " .
....., ;'! 'r.' .....
" ." .
!. :
...
>,
.'
..-, ../. "','

X
,j:
.:1.\1 "
" .... , .
.. ",", .
'." ;/. ,,':

':'.'" " ."


, " ...

.. . ,,'.
I
I
I
I
UNITA' I
rSTR'IZrONr
I
I
"'''
I
IS'I ROzroHI I
IE

V
I
8 parol. I
,
I
I
',,",
I
!D''''
I
"'"""''''
I
1
I
,
ru
BPU
FPU
I
I
(;]
EEl IZl
EEl (;]
EE11Zl
I
I
ffi
,
m n>.
,
I"'" I
... ....
II'PSCR 1 I
if,.,..,.
I
',n
r putl. I
I
\KDIRIZZO
I
I
I
MMU
CACHE
I
I
Otlluuno n!M:O
32- KB I 1mB
'""
(Islr. e dati)
I
I ""' I
I
I
IHDmrzZC
I
. ,
UNITA' DI MEMORIA
I
"n
I

I
WRITE OUEUE
I
READ
"n
QUEUE SHOOP
a puol.
B
,
""""""
"n
Z pUt.
I
I
,
I
,
INTERFACCIA AL SISTEMA
I
I
I
I
I
I
, l... ___________
--
__________________________J
BUS DArt (64 BIT)
BUS INDIRlZZI (32 BIT)

I I
, : PnUno <1.11. Llll'\lllolll I
I
I
I
I
I
,
I
I
I
I
I
I
,
I
I
I
I
I
I
I
I
I
I
632 Appendice C
Figura C.4 Schema a. blocehi del microprocessore MPC6010 8i noti che dell'unita istruzioni
fa parte una coda, che pub contenere fino a 8 istruzioni, e la logica di emissione. In condizioni
fa-vorevali 1a 199ica di emissione puo trasmettere tIe istr\lzioni: una per.IU, una per BPU e
una per FPU. I registri di usa generaJ.e (GPR) sana in Wi i registri in virgola mobile (FPR)
sono in FPU; BPU prende decisioni sulla. base eli registri di condizione. La. cache eunificata.
e si osservi che il bus tra la. cache e la coda istruzioni ha un paraltelismo di 8 parole. MMU
el'unita. di gestione deUa memoria. Per ridWTe la penalizzazione nell'accesso alIa memoria
principale sono previste sia una coda di lettura cbe una. d.i scrittura.
-
I
I .
\
1- .
I-
,- .
I..
1.
c
I
1'"
I
I
I
I- ,
I
I-
\.
I .
,
)-
1
Prima di illustrare Ie modalita secondo cui opera Punita. istruzioni, esa.miniamo per
grandi linee gli aspetti legati alIa memoria.
MMU1 unita di gestione della memoria, gestisce fino a 4Tbyte
z
di memoria vir
tuale e 4 Gbyte di memoria fisica, La gestione della memoria virtuale neU'architettura
PowerPe estata deseritta in altra parte del libro. 14 G byte sono divisi in: (a) seg-
menti di dimensione fissa (256 M byte); (b) blocchi di dimensione variabile (128 kbyte
- 8 Mbyte); (c) pagine di dimensione lissa (4kbyte). MMU contiene tre TLB,
UTLB Cache associativa a 2 vie, unificata (indirizzi di istruzioni e di dati) di 256
.. .
POSIZIODl.
ITLB Cache completamente associativa di 4 posizioni , usata solo per Ie istruzioni.
Contiene Ie traduzioni di indirizzo relative aUe 4 pagine usate pin di recente.
BTLB Cache completamente associativa di 4 posiz-ioni , contenente Ie traduz-ioni di
indirizzo per i 4 blocchi usati piu di recente.
Per comprendere Ia pipeline del PowerPC e necessario prima esaminare la coda
istruz-ioni. La coda del 601 e mostrata In C.5,
II bus tra cache e coda istruzioni consente di trasferire fino a 8 istruzioni per cicio
di c1ock
3
, Gli stadi IQ4.. .IQ7 svolgono solo un azione di buffering delle istruz-ioni,
mentre negli stadi IQO.. .lQ3 vengono anche iniziate Ie operazioni di ,decodifica. Le
unita funzionaJi FPU e BPU possono prelevare una qualunque delle istruzioni presenti
in IQO.. .IQ3, a differenza dell'IU che pub accedere solo alI'istruzione contenuta in IQO,
come mostrato in Figura C.5. In tal modo epossibile, a'ogni colpo d.i clock, emettere
C,2,2 La coda istruzioni del 601
Dati. La. ricerca in questa caso avviene solo in UTLB e in BTLB.
Se la ricerca fallisce in tutti i TLB, l'informazione viene ricercata nella memoria
principale.
La cache integrata nella CPU edi 32 kbyte, a 8 vie, uni6cata. Le linee sana di 64
byte ognuna delle quali edivisa in due settori di 8 parole. L'unita. di memoria contiene
2 code una di lettura (da due posti di 8 parole) e una di scrittura (da tre posti di
8 parole)" che fanno da buffer per Ie operaz-ioni fra la cache e l'esterno. Essendo la
cache unificata, quando si ha un accesso contemporaneo a istruzioni e dati, l'accesso
ai dati eprioritario.
L'architettura PowerPC 633
La traduz-ione procede nel seguente modo.
Istruzioni. Viene prima esaminato ITLB. Se la ricerca in ITLB fallisc.e, prosegue
in parallelo in UTLB e in BTLB.
'IT sta per tera: 10
9
kbyte, dove lk sta per 1024.
30vviamente, si ha un trasferimeDto di 256 bit solo quando la coda evuota. (a causa dei salti).
C.2.1 Gestione della memoria
", ;
..,
I,",
,I' ,
,
,,',
,t,
'l>
,
"
',I, '
,.
:h
,
..
'.'
" ..
"
II','
"
,
I ".
I/."
;;,c.
, "
" I :.
-,,,
. '

" " .

:'\!
J
" .,\'
',(
,

..
'.
..'
':
,,, ,'I' :.
, ..
-
.. \.
'"
" " '. '
t! ,'.,
',., ,. ".'.
.' ")',:\
, ,
"I .. '
; ".
- I'" .
" ' '.,
..;
t. --:
.....
,

" I.'"
"
" I';'"
: ::;..'
..; '. .
, .
, ' ..
.. ,.
,,,',: I .
'\, ' ...
", ;;,:, ,
, .';':'
.... '.
"
;
,.
.'.. t:,
, "';.
..
.. " .
....., ;'! 'r.' .....
" ." .
!. :
...
>,
.'
..-, ../. "','

X
,j:
.:1.\1 "
" .... , .
.. ",", .
'." ;/. ,,':

':'.'" " ."


, " ...

.. . ,,'.
I
I
I
I
UNITA' I
rSTR'IZrONr
I
I
"'''
I
IS'I ROzroHI I
IE

V
I
8 parol. I
,
I
I
',,",
I
!D''''
I
"'"""''''
I
1
I
,
ru
BPU
FPU
I
I
(;]
EEl IZl
EEl (;]
EE11Zl
I
I
ffi
,
m n>.
,
I"'" I
... ....
II'PSCR 1
I
if,.,..,.
I
',n
r putl. I
I
\KDIRIZZO
I
I
I
MMU
CACHE
I
I
Otlluuno n!M:O
32- KB
I
1mB
'""
(Islr. e dati)
I
I ""' I
I
I
IHDmrzZC
I
. ,
UNITA' DI MEMORIA
I
"n
I

I
WRITE OUEUE
I
READ
"n
QUEUE SHOOP
a puol.
B
,
""""""
"n
Z pUt.
I
I
,
I
,
INTERFACCIA AL SISTEMA
I
I
I
I
I
I
, l... ___________
--
__________________________J
BUS DArt (64 BIT)
BUS INDIRlZZI (32 BIT)

I I
, : PnUno <1.11. Llll'\lllolll I
I
I
I
I
I
,
I
I
I
I
I
I
,
I
I
I
I
I
I
I
I
I
I
I ,634 Appendice C
Le istruzioni rimaste nella. coda vengono spostate verso IQO in modo cia compat-
tare la coda stessa. Si ha cosl 180 seguente situazione,
fino a 3 istruzioni. NOD appena alcune istruzioni lasciano la coda, delle nuove vengono
caricate dalla cache.
Per comprendere meglio il funzionamento della coda istruzioni consideriamo un
esempio. Supponiamo che in un data istante 10 stato della coda sia il seguente (il
sirnbolo posto a suffisso d.i <lIstr" indica a Quale unita. ediretta l'istruzione):
IQ7 -) Vuoto
IQ6 -) Vuoto
IQ5 -> Vuoto
IQ4 -) Istr.FPU
IQ3 -) Istr.FPU
IQ2 -) Istr.FPU
IQl -) Istr.BPU
IQO -) Istr.IU
Al clock successivQ vengono eseguite Ie seguenti operazioni:
Le istruzioni presenti in rQ2, rQl e rQo vengono .mandate rispettivamente nella
FPU nella BPU e nella IV.
I"
I"
I"
I"
I"
I"
1 I

[QO(N [100."'.1
",U lu'ler
",U 0...0<1.
- I lU IIWr.. I lop\) IN<l/t... 1
,
,
!
trPli Eo.out.t I
I lU h.o,," I
,
U [ ..""to.2 - IJo&djdou t
I Wr1tU...,k I
I I
Le istruzioni vengono emesse dalla IQ verso Ie unita Del seguente modo.
La pipeline ernostrata in figura C.6.
L'architettura. PowerPC 635
Figura C.G La pipeline del MPC 601.
Pru1.""'.lllc t.t""",!o"t
......,ho lilt......
Le posizioni vuote vengono caricate con istruzioni provenienti dalla cache.
C,2.3 La pipeline del 601
Le tre unita lU, BPU e FPU permettono l'esecuzione speculativa (0 fuori ordine)
delle istruzioni [IBM94bJ. Si supponga che la CPU stia eseguendo I'istruzione A; sia
B un'istruzione che segue A nell'ordine del programma: l'esecuzione speculativa di B
puo essere fatta purche le risorse che vengono impiegate per essa non vengano sottratte
all'esecuzione dell'istruzione A. Se l'esecuzione delle altre istruzioni che precedono B
nell'ordine testuale non genera interruzioni 0 deviazioni del Busse delle istruzioni, i
risultati prodotti da B vengono scritti, altrimenti essi vengono abbandonati.
Si osservi che non tutte le operazioni possono essere eseguite in modo speculativo:
in genere non possono essere eseguite fuori ordine Ie istruzioni di load/store in quante
modificherebbero in modo non sequenziale 10 stato della rnacchina.
,,',
,
,
'"
.,(>,
I
, '
'!' "
,
I
",
,-
. .'
,
',\"','

, .
,
!
1::' , '
'. '.',
.<' .. ":'
'..,:" "';'.
': ,,-, 'Ii" '
.,', 'fi,a,
!
.,,,
,;- V,,'i;'
".,:: '.-oj , ,
,'" '.,
',:, ,", "!'"":
'", ,:, ' :
"'';' 1'-"
"" 't-' .
" .
, , "t
: ' :;,
.,.
,
.,' " ,j1.
" ."' ,,'
','" ,,' ":' :'
" r,',, ,
;
"j" '
., .
, '.\ ' "",!
..,' "1''''''
" ," 1"
::".:'
'! ," :-t:
:"; \:"
, .'
..
'y
" ,.,
."'
., . , .'-
. . ,
f;
"
, ....
'k'
" .. I,i
,,,'
, f(J':
"
".,
" ..
.- ";
.. ,
..

\ ,
',"" ;\',

" J
,

I'
";- ,',i'
,.

I',"
IJ
"," ,
",
,...
'Ji'il'
"
.11
, ,
'."
/.' ,
,
.. 'E'i
-', ,',' ,
, I ' . >
N,
';-'- .."
,.""

';
!.,j ;
..
"'( ,I
, ;,: "t.i
,
" .'-
-,., '
,,' ','
.r.; !'\:'
",'

aHa BPU
dalla cache
lQ7 -> Vuoto
lQ6 -> Vuoto
lQ5 -> Vuoto
1Q4 -> Vuoto
IQ3 -) Vuoto
IQ2 -) Vuoto
IQl -) Istr.FPU
IQO -) Istr.FPU
-
IQ7
IQ6
IQ5
IQ4
.
IQ3
IQ2
IQl
. IQO -
Logica di
Emissione
t t
alla IU Ilolla F'PU
Figura C.S Coda istruzioni del 601.
\
(
\
I
I
I
I
I
I
I
_.
-.
-
-.

,-
, ..
-
-
...
..
-
-
-
.-
-
I ,634 Appendice C
Le istruzioni rimaste nella. coda vengono spostate verso IQO in modo cia compat-
tare la coda stessa. Si ha cosl 180 seguente situazione,
fino a 3 istruzioni. NOD appena alcune istruzioni lasciano la coda, delle nuove vengono
caricate dalla cache.
Per comprendere meglio il funzionamento della coda istruzioni consideriamo un
esempio. Supponiamo che in un data istante 10 stato della coda sia il seguente (il
sirnbolo posto a suffisso d.i <lIstr" indica a Quale unita. ediretta l'istruzione):
IQ7 -) Vuoto
IQ6 -) Vuoto
IQ5 -> Vuoto
IQ4 -) Istr.FPU
IQ3 -) Istr.FPU
IQ2 -) Istr.FPU
IQl -) Istr.BPU
IQO -) Istr.IU
Al clock successivQ vengono eseguite Ie seguenti operazioni:
Le istruzioni presenti in rQ2, rQl e rQo vengono .mandate rispettivamente nella
FPU nella BPU e nella IV.
I"
I"
I"
I"
I"
I"
1 I

[QO(N [100."'.1
",U lu'ler
",U 0...0<1.
- I lU IIWr.. I lop\) IN<l/t... 1
,
,
!
trPli Eo.out.t I
I lU h.o,," I
,
U [ ..""to.2 - IJo&djdou t
I Wr1tU...,k I
I I
Le istruzioni vengono emesse dalla IQ verso Ie unita Del seguente modo.
La pipeline ernostrata in figura C.6.
L'architettura. PowerPC 635
Figura C.G La pipeline del MPC 601.
Pru1.""'.lllc t.t""",!o"t
......,ho lilt......
Le posizioni vuote vengono caricate con istruzioni provenienti dalla cache.
C,2.3 La pipeline del 601
Le tre unita lU, BPU e FPU permettono l'esecuzione speculativa (0 fuori ordine)
delle istruzioni [IBM94bJ. Si supponga che la CPU stia eseguendo I'istruzione A; sia
B un'istruzione che segue A nell'ordine del programma: l'esecuzione speculativa di B
puo essere fatta purche le risorse che vengono impiegate per essa non vengano sottratte
all'esecuzione dell'istruzione A. Se l'esecuzione delle altre istruzioni che precedono B
nell'ordine testuale non genera interruzioni 0 deviazioni del Busse delle istruzioni, i
risultati prodotti da B vengono scritti, altrimenti essi vengono abbandonati.
Si osservi che non tutte le operazioni possono essere eseguite in modo speculativo:
in genere non possono essere eseguite fuori ordine Ie istruzioni di load/store in quante
modificherebbero in modo non sequenziale 10 stato della rnacchina.
,,',
,
,
'"
.,(>,
I
, '
'!' "
,
I
",
,-
. .'
,
',\"','

, .
,
!
1::' , '
'. '.',
.<' .. ":'
'..,:" "';'.
': ,,-, 'Ii" '
.,', 'fi,a,
!
.,,,
,;- V,,'i;'
".,:: '.-oj , ,
,'" '.,
',:, ,", "!'"":
'", ,:, ' :
"'';' 1'-"
"" 't-' .
" .
, , "t
: ' :;,
.,.
,
.,' " ,j1.
" ."' ,,'
','" ,,' ":' :'
" r,',, ,
;
"j" '
., .
, '.\ ' "",!
..,' "1''''''
" ," 1"
::".:'
'! ," :-t:
:"; \:"
, .'
..
'y
" ,.,
."'
., . , .'-
. . ,
f;
"
, ....
'k'
" .. I,i
,,,'
, f(J':
"
".,
" ..
.- ";
.. ,
..

\ ,
',"" ;\',

" J
,

I'
";- ,',i'
,.

I',"
IJ
"," ,
",
,...
'Ji'il'
"
.11
, ,
'."
/.' ,
,
.. 'E'i
-', ,',' ,
, I ' . >
N,
';-'- .."
,.""

';
!.,j ;
..
"'( ,I
, ;,: "t.i
,
" .'-
-,., '
,,' ','
.r.; !'\:'
",'

aHa BPU
dalla cache
lQ7 -> Vuoto
lQ6 -> Vuoto
lQ5 -> Vuoto
1Q4 -> Vuoto
IQ3 -) Vuoto
IQ2 -) Vuoto
IQl -) Istr.FPU
IQO -) Istr.FPU
-
IQ7
IQ6
IQ5
IQ4
.
IQ3
IQ2
IQl
. IQO -
Logica di
Emissione
t t
alla IU Ilolla F'PU
Figura C.S Coda istruzioni del 601.
\
(
\
I
I
I
I
I
I
I
_.
-.
-
-.

,-
, ..
-
-
...
..
-
-
-
.-
-
l
]
)
\ .
I
10 9 B 7
b) Sequenza di istruzionl
,
I
L'architettura POW"erPC
637
]
0 Iwz Rl,30(R2)
I
I
add R3,Rl.R2
2 fadd F'Rt.FR2,FR3
3
fadd
FR4,FR2,FR5
].

add R2.R4.Rl
0 tadd FR3,FR2,FR7
6
.dd R6,Rl,R3
I,
7 bub FR6,FR-4.J'R2
6 o

3 2
IU bufter
Scriltura nel rCiister tile
Primo stadia di esecuziane FPU
Secondo slacl10 di esecuzione FPU
FPU bWfer
manlenimenlo nell'iQ
c) nusso islruzioni nella pipeline
Accesso alla memoria
1
Stadia e3ecutlva ]U
Stadia di decod.111ca
o
clock 0 clock 1 clock 2 clock 3 clock 4 clock 5
1.
A o aaa 6
A d sub
R I
.d
3 tadd
0 7 bub
4 add B
a
a
:lub.
, , , , , , , , , ,
I
I
I
I
I
, .. ".,'., I
17 D I w I EX2 I WB I
I0 Iwz t=rl:J;x LllliLI WlLJ i I
I I
! . I l I I ( I I I
0 I EX I EX I WlLJ i
I I
I . I I I I I I I I
12 'AddliiBl!! D [!:Xl I EX2 I WE I i
I I
1- 1 I I II! I I
I wi EX21 WE I
I I
I . '( I I I I I I I
14 I I EX I WE I
I I
I - I I I I I I I I
15 l:X.l OX2 I WB
I I
t tIl \ 1 I I I
LEX L!LI
I I
1 I II.",
, ,
a) Slgni1icalo del simboU
d) Sll.uazione nella coda ist.ruzioni
Figura C.7 Esempio di flusso istruzionl nella pipeline del 601. In figura non si tiene conto
di come la coda viene riempita, mano a mano che si svuota,
- ".....
! -_.
''-,
',-
'- ,-
"
':,,' .
'. ,-;"
.. I. , ., . " ,
.":',' : -' '
':1
.,cr.:'" ".
, '.', ,
i<'
,d, co'"
:
,i,;.:,-:J: 'j;-
: 'I -/.,:: ('
-, <p::.:,
.' ':" ".-
,. r .-' i
;.
, l. ,
__,'''''''' !'t.
-_. ";'':",i':-;.,-,
;- ,.,.:,'
" ,.. ., '
., ' ,
. ..:. '
':'1'"
_..' I
, _.', '" " .,
" I i'
.:d "
"1 r-
':,-'-" \','.
..;! ,:,'

.", ,'" t'"
,-.
" ,,,p.... ,;, 'I",
"".1 ""
",y.....
: "
.. ' l.
,.,,:,:,;,),. ::,:",
,.'j."
:;:-.:.. ';'1
,",' ,':;1-.(:' ' \:i:
. , "
" ',. '1'
.... ; .. ' .
-; :
.' -, ,'. "i'
.' , .. '"" l. . \ _.:. ,_.r,,-
-.,'"
',,; ,,..,,
,'. fd;;.
" "
. ..
: '
,:f:1iC,;'
.., I. "'"
:-<;i.i:i
',?f '-"', ;, .4

;. t _J:r.
;",.' Z<:>-..
.. ' ..... -
"'i'.
.
_ I" p' ''II :,.
",' "I'
i
:-'<'\
, ,,,,.' _.
':<";';:' ','
:..- ,,'I
, -,... .
",' ._,,- ,,,,.",'
' , ";.,
. :;','
.
"':'
:.'{' .,' I
_,.'_.".
,;c- ;j;j
' ::>{;
--':" 1,.\ .,
",'
_:
.>-,,-:"
:". 7'-/
-, -. .
.
;-,-: .',' ".,.'
. ff!,
- 'J.-
,i " ,'1"
,.i'" ,.,.
,,';. ';:"':':
,:'- ,.'.>
< 1:, -
-. ....-
. .', ".'
, ", :'i.'
e 1i.:.'-'

!
\

:,:'_. ";.1. 1
". ..' .,,,
..-'.' ..".
';:'.i, '.' .... ;;:
.,!" ... ';',:.
o allo stadia WB per la scrittura nei registri, se si tratta di un'istruzione interai
o ana stadia di accesso alia cache, se si tratta di un'istruzione di load/store e,
successivamente, in quello write-back.
Quando l'istruzione ha completato la sua fase esecutiva, essa passa:
o svuotare IQO anche se IV eimpegnata nella precedente istruzione tra interij
o dar modo all'istruzione di attendere, senza entrare in esecuzione, se non sono
disponibili gli operanti (prodatti da una precedente istruzione, non ancora
terminata)5.
4Si usa questo termine per indicare Ie istruzioni che in sensa generale corrispondono a operazioni
tra. interi e che vengono trattate da IU,
noti che questa .possibile attesa. ha.l'efietto di rimettere nell'ordine testuale l'eventuale esecu
zione fuori ardine, Per questa motivo il 601 non prevede un buffer di riordinamento come il 604 (si
veda piu avanti),
Le istruzioni intere
4
vengono emesse verso IV solo dallo stadia IQO, nel Quale
vengono anche decodificate. Esse quindi sana eseguite in ardine.
Le istruzioni dirette verso FPU e verso BPU sono emesse dagli stadi IQO-IQ3:
esse possono dunque essere eseguite fuori ardine.
La maggior parte delle istruzioni impiega un solo cielo di clock nello stadia esecu-
tivo, rnentre la moltiplicazione, la divisione e Ie operazioni su parole multiple in
memoria impiegano alcuni colpi di clock.. ru eperc fornita di cammini di bypass,
per cui le istruzioni seguenti non devono attendere it completamento della fase
WB. Si ha stallo solo se viene effettuato un caricamento (e usa) immediato del
data.

Pipeline FPU.
Le istruzioni in virgola mobile, emesse da uno Qualunque dei quattro elementi
in fonda alIa coda istruzioni, vanna in un buffer posta fra la coda e 10 stadio di
decodifica. Uistruzione rimane nel buffer fino a quando 10 stadia di decodifica
non si rende disponibile. Una volta decodificata, l'istruzione passa ai due stadi
di esecuzione (se essi sono disponibili) dove viene eseguita e infine aIlo stadia
WB. Non essendoci un percorso di propagazione fra l'uscita del secondo stadia
di esecuzione e l'ingressa del primo, un'istruzione dipendente da! risultata di una
precedente, deve per forza attendere che il risuItato venga scritto nel registro di
destinaziane prima di passare alIa stadio esecutivo.
Per quanta si riferisce aile tre unita, esse pure operano in pipeline, come illustrato
in Figura C.6, secondo Ie modalita seguenti.
Pipeline ru.
Un'istruzione intera viene decodificata in IQO e inviata alIa stadia di esecuzione.
5i noti che Bulla pipeline IV epresente un buffer. Questa serve a due seopi:
636 Appendice C
l
]
)
\ .
I
10 9 B 7
b) Sequenza di istruzionl
,
I
L'architettura POW"erPC
637
]
0
Iwz Rl,30(R2)
I
I
add
R3,Rl.R2
2 fadd
F'Rt.FR2,FR3
3
fadd
FR4,FR2,FR5
].

add R2.R4.Rl
0
tadd
FR3,FR2,FR7
6
.dd
R6,Rl,R3
I,
7 bub FR6,FR-4.J'R2
6 o

3 2
IU bufter
Scriltura nel rCiister tile
Primo stadia di esecuziane FPU
Secondo slacl10 di esecuzione FPU
FPU bWfer
manlenimenlo nell'iQ
c) nusso islruzioni nella pipeline
Accesso alla memoria
1
Stadia e3ecutlva ]U
Stadia di decod.111ca
o
clock 0 clock 1 clock 2 clock 3 clock 4 clock 5
1.
A o aaa
6
A d sub
R
I
.d
3 tadd
0 7 bub
4 add B
a
a
:lub.
, , , , , , , , , ,
I
I
I
I
I
, .. ".,'., I
17 D I w I EX2 I WB I
I0 Iwz t=rl:J;x LllliLI WlLJ i I
I I
! . I l I I ( I I I
0 I EX I EX I WlLJ i
I I
I . I I I I I I I I
12 'AddliiBl!! D [!:Xl I EX2 I WE I i
I I
1- 1 I I II! I I
I wi EX21 WE I
I I
I . '( I I I I I
I I
14 I I EX I WE I
I I
I - I I I I I I I I
15 l:X.l OX2 I WB
I I
t tIl \ 1 I I I
LEX L!LI
I I
1 I II.",
, ,
a) Slgni1icalo del simboU
d) Sll.uazione nella coda ist.ruzioni
Figura C.7 Esempio di flusso istruzionl nella pipeline del 601. In figura non si tiene conto
di come la coda viene riempita
,
mano a mano che si svuota,
- ".....
! -_.
''-,
',-
'- ,-
"
':,,' .
'. ,-;"
.. I. , ., . " ,
.":',' : -' '
':1
.,cr.:'" ".
, '.', ,
i<'
,d, co'"
:
,i,;.:,-:J: 'j;-
: 'I -/.,:: ('
-, <p::.:,
.' ':" ".-
,. r .-' i
;.
, l. ,
__,'''''''' !'t.
-_. ";'':",i':-;.,-,
;- ,.,.:,'
"
,.. ., '
., ' ,
. ..:. '
':'1'"
_..' I
, _.', '" "
.,
" I i'
.:d "
"1 r-
':,-'-" \','.
..;! ,:,'

.", ,'" t'"
,-.
" ,,,p.... ,;, 'I",
"".1 ""
",y.....
: "
.. ' l.
,.,,:,:,;,),. ::,:",
,.'j."
:;:-.:.. ';'1
,",' ,':;1-.(:' ' \:i:
. , "
" ',. '1'
.... ; .. ' .
-; :
.' -, ,'. "i'
.' , .. '"" l. . \
_.:. ,_.r,,-
-.,'"
',,; ,,..,,
,'. fd;;.
" "
. ..
: '
,:f:1iC,;'
.., I. "'"
:-<;i.i:i
',?f '-"', ;, .4

;. t _J:r.
;",.' Z<:>-..
.. ' ..... -
"'i'.
.
_ I" p' ''II :,.
",' "I'
i
:-'<'\
, ,,,,.' _.
':<";';:' ','
:..- ,,'I
, -,... .
",' ._,,- ,,,,.",'
' , ";.,
. :;','
.
"':'
:.'{' .,' I
_,.'_.".
,;c- ;j;j
' ::>{;
--':" 1,.\
.,
",'
_:
.>-,,-:"
:". 7'-/
-, -. .
.
;-,-: .',' ".,.'
. ff!,
- 'J.-
,i " ,'1"
,.i'" ,.,.
,,';. ';:"':':
,:'- ,.'.>
< 1:, -
-. ....-
. .', ".'
, ", :'i.'
e 1i.:.'-'

!
\

:,:'_. ";.1.
1
". ..' .,,,
..-'.' ..".
';:'.i, '.' .... ;;:
.,!" ... ';',:.
o allo stadia WB per la scrittura nei registri, se si tratta di un'istruzione interai
o ana stadia di accesso alia cache, se si tratta di un'istruzione di load/store e,
successivamente, in quello write-back.
Quando l'istruzione ha completato la sua fase esecutiva, essa passa:
o svuotare IQO anche se IV eimpegnata nella precedente istruzione tra interij
o dar modo all'istruzione di attendere, senza entrare in esecuzione, se non sono
disponibili gli operanti (prodatti da una precedente istruzione, non ancora
terminata)5.
4Si usa questo termine per indicare Ie istruzioni che in sensa generale corrispondono a operazioni
tra. interi e che vengono trattate da IU,
noti che questa .possibile attesa. ha.l'efietto di rimettere nell'ordine testuale l'eventuale esecu
zione fuori ardine, Per questa motivo il 601 non prevede un buffer di riordinamento come il 604 (si
veda piu avanti),
Le istruzioni intere
4
vengono emesse verso IV solo dallo stadia IQO, nel Quale
vengono anche decodificate. Esse quindi sana eseguite in ardine.
Le istruzioni dirette verso FPU e verso BPU sono emesse dagli stadi IQO-IQ3:
esse possono dunque essere eseguite fuori ardine.
La maggior parte delle istruzioni impiega un solo cielo di clock nello stadia esecu-
tivo, rnentre la moltiplicazione, la divisione e Ie operazioni su parole multiple in
memoria impiegano alcuni colpi di clock.. ru eperc fornita di cammini di bypass,
per cui le istruzioni seguenti non devono attendere it completamento della fase
WB. Si ha stallo solo se viene effettuato un caricamento (e usa) immediato del
data.

Pipeline FPU.
Le istruzioni in virgola mobile, emesse da uno Qualunque dei quattro elementi
in fonda alIa coda istruzioni, vanna in un buffer posta fra la coda e 10 stadio di
decodifica. Uistruzione rimane nel buffer fino a quando 10 stadia di decodifica
non si rende disponibile. Una volta decodificata, l'istruzione passa ai due stadi
di esecuzione (se essi sono disponibili) dove viene eseguita e infine aIlo stadia
WB. Non essendoci un percorso di propagazione fra l'uscita del secondo stadia
di esecuzione e l'ingressa del primo, un'istruzione dipendente da! risultata di una
precedente, deve per forza attendere che il risuItato venga scritto nel registro di
destinaziane prima di passare alIa stadio esecutivo.
Per quanta si riferisce aile tre unita, esse pure operano in pipeline, come illustrato
in Figura C.6, secondo Ie modalita seguenti.
Pipeline ru.
Un'istruzione intera viene decodificata in IQO e inviata alIa stadia di esecuzione.
5i noti che Bulla pipeline IV epresente un buffer. Questa serve a due seopi:
636 Appendice C
I
- \
.. )
I
I
Unita istruzioni E aneora costituita dalla BPU, dalla coda istruzioni e dall'unita.
di emissione. Questa volta perOt come mostra la Figur.a C.g, Ie istruzioni vengono
caricate nei quattro e1ementi in testa alIa coda istruzioni DEQ (Decode Queue), dove
vengono decodificate e poi spostate verso i quattro elementi in fondo alia coda DSQ
(Dispatch Queue). Da DSQ Ie istruzioni vengono instradate aIle unita. appropriate.
unita in virgola mobile (FPU);
unit.. trattamento .alti (BPU);
unit.. Load/store (LSU);.
tre unita. interi(IU), di cui:
Unita di completamento L'unita di comp1etamento ritira Ie istruzioni eseguite da
uno specia:.le buffer, il buffer di riordinamento (ROB), e aggiorna i registri. Un'istru-
zione viene ritirata dal ROB quando ess,a ha terminato l'esecuzione e tutte Ie istruzioni
che la precedono sono state completate. Cio consente la conclusione in armonia con
I'ordine stabilito da! testa del programma. n ROB del 604 pub contenere fino a 16
istruzioni.
clock 6 _ Le istruzioni fadd(3) e add(4) terminano 1a loro esecuzione con la rase
di scrittura.; fadd(5) si trova ne1 secondo stadio di esecuzione della FPU; add(6)
ein esecuzione e f s..ub ancora nel buffer,
clack 7 . fadd(5) e add(6) scrivano i loro risultati nel register file (WB), mentre
1a fsub puo finalmente essere decodmcata e iniziare 1a sua esecuzione a1 ciclo di
clock successivo.
Si noti che alcune istruzioni sono state eseguite fuod sequenza.
o due singolo cicio (SCID)
o una multiciclo (MCID)
L'architettura PowerPC 639
In figura C.8 e mostrato 10 schema a blocchi della CPU, In aggiunta aile unita
di esecuzione sopra menzionate e alIa differente struttura delle MMU e della cache,
gli aspetti pili rilevanti, anche in confronto al 601, riguardano una differente gestione
della coda delle istruzioni e, soprattutto, l'introduzione deWunita. di completamento
per il riordino delle istruzioni eseguite ood ardine,
C.4 La CPU MPC 604
11604 [Mat94] ela terza ,ealizzazione dell'architettura PowerPC (dapo il601 e iI603).
Diversamente dal 601 esso segue completamente i1 modella architetturale PowerPC.
IL 604 eun processore a 32-bit, superscalare, capace di inviare fino a quattro istruzioni
simultaneamente, verso le sue 6 unita di esecuzione indipendenti, che sono:
".
',' ',.

":.: ,:':, '
, "."

.. ",j\'
'
"
.) '
.' ,': "


," ,,nt; 'I
.. "
..,

"," "
Appendice C
clock 5 - Le istruzioni add(l) e fadd(2) scrivano i lora risultati nel register file,
1a fadd(3) si trova nel secondo stadio di esecuzione della FPY; la add(4) enello
stadio di esecuzione, la fadd(5) si trova nel primo stadio di esecuzione della FPU;
la add(6) viene decodificata e lascia la IQ; I'istruziane fsub(7) resta nel buffer
della FPU, perche essa dipende da! risultato della f add(3). Paiche non epassibile
l'anticipazione del risultato nella FPU) la fsub deve attendere 1a fine della rase
WB di f add prima di passare alia stadia di decodifica.
, ' ",
-
\;"
''1
"",,:' ,'.. ".
'f" . (
. ,:. ,:..1
- ,,\.:> , "
,.'. " . ' '
." " '"

., '.,.'-,,', .i
, (0-,., ". .'-
:"-".: "

', .. ' 'I
" ;':" ,
.. "
".' ". ' I.
o ,c- ... _ ,
- -":.J" w"
,,,, -, .. .
:;-'::'"
. '.' -, ".'
" .., -
.. -,
,
: ..
;r:-'
... '\ '., ,
., 'oJ"'"
,..-?:.. :,;,
,,' .. '
- " :
- . .'.,
-".... ;,'\: -', 1';-
',:'",.' i
',.", '". ,
'H>
_":':""':, l",
":'- '
.-, '. I ',' ";ir "
".,":: ..; ...
,': .t ,< .
"-":./.: -:

'. '?;"'-
clock 3 - L'istruzione lwz si trova nello stadia MEM dove avviene Paccesso al-
, ".. ",:
la memoria, alia fine di questa fase il dato edisponibile (ipotizzando un cache ..',
hit)i l'istruzione add(l) enella fase,esecutiva, ma dipendendo da llJZ deve atten- ':_ .n.; .', ..
dere la fine della fase MEM di essa per pater ricevere il risu1tato anticipato del -,,:":
caricamento, L'istruzione fadd(2) si trova nel primo stadio di esecuzione deUa '"
FPU mentre Ie istruziow fadd(3) e add(4) sono nella'stadio di decodifica delle ., ..,,:.,
rispettive unita, L'istruzione fadd(5) si trova nel buffer della FPU. . ,::.',', ,:' i2':: ,
::,.:., "'. ,1;" .
clock 4 - L'istruzione lwz scrive il risultato del caricamento nel register file (stadio ." .
WBL 1a add(l) pub essere eseguita sin da questo momenta per via del bypass;
1a fadd(2) si trova nel secondo stadio eli esecuzione della FPU mentre fadd(3) e '.' ':r;'.
.- . ,
nel primo. L'istruzione add(4) trovando 10 stadio di esecuzione occupato viene ..
mantenuta nel buffer della ru. L'istruzione fadd(5) viene decodificata e la fsub(7) :,:t
.
" trova nel buffer della FPU. . '.. .,':
, 'itL
r-" ...
, '.' !':f':
, . ':-',
, ,. :of'
,
,.;, . f
<,:';-':, idl'
.....
. , ,- .-.
. .;, . :;;(',.,
,v__
,;.'
, . "'..
... \ " , 'if
,v"
. i ;,I'."
,,;:;,f\" r:(,
<:,\). ,.f,.
' . t .
, .-;;
,', .. ",
clock 1 - Le istruzioni 1wz(0) e fadd(2) vengono inviate alle rispettive unit.. di
esecuzione, 13 lvz viene decodificata in IQO e va verso 10 stadio di esecuzione
della pipeline della ru, la fadd viene invece posta nel buffer della FPU.
L'istruzione add(l) viene mantenuta nella coda istruzioni poiche diretta alia stes-
sa unita. di esecuzione di lwz, inoltre essendo essa un'istruzione della IU1 per essere
inviata deve trovarsi necessariamente in IQO.
clock 2 - L'istruzione lwz si trova nello stadio di esecuzione (dove viene calcolato
l'indirizzo per l'accesso alia memoria) mentre 1a fadd enello stadio di decodifica.
In questa rase, 1a add(l) viene decodificata in IQO e inviata verso la rase di
esecuzione, mentre la fadd(3) .i trova nel buffer della FPU.
Pipeline BPU.
Nello stadio Dec/Exe l'istruzione viene decodificata, eseguita e risolta, oppure
predetta. L'MPC 601 effettua una predizione statica del salto Del caso di salti
condizionati. Se l'esito della condizione risulta positivo, I'istruzione di destina-
zione viene prelevata in anticipo. Le istruzioni d.i salto incondizionato vengono
sempre 'anticipate per quanta possibile.
C.3 Un esempio di fiusso istruzioni per il 601
Studiamo con l'ausilio di Figura C, 7 un esempio di Busso di istruzioni nel 601.
Con la sequenza eli istruzioni di FiguraC.7b, ipotizziamo che la coda istruzioni,
inizialmente vuota, a.l colpo di clock 0 venga riempita can 8 istruzioni provenienti
dalla cache e vediamo come si evolve la situazione.
638
\
\
I
j
l
\
I
I
-.
-
-

_.
-

..
..
..
-
. .
-
. -
-
.. -
-
..
.
..
.'
I
- \
.. )
I
I
Unita istruzioni E aneora costituita dalla BPU, dalla coda istruzioni e dall'unita.
di emissione. Questa volta perOt come mostra la Figur.a C.g, Ie istruzioni vengono
caricate nei quattro e1ementi in testa alIa coda istruzioni DEQ (Decode Queue), dove
vengono decodificate e poi spostate verso i quattro elementi in fondo alia coda DSQ
(Dispatch Queue). Da DSQ Ie istruzioni vengono instradate aIle unita. appropriate.
unita in virgola mobile (FPU);
unit.. trattamento .alti (BPU);
unit.. Load/store (LSU);.
tre unita. interi(IU), di cui:
Unita di completamento L'unita di comp1etamento ritira Ie istruzioni eseguite da
uno specia:.le buffer, il buffer di riordinamento (ROB), e aggiorna i registri. Un'istru-
zione viene ritirata dal ROB quando ess,a ha terminato l'esecuzione e tutte Ie istruzioni
che la precedono sono state completate. Cio consente la conclusione in armonia con
I'ordine stabilito da! testa del programma. n ROB del 604 pub contenere fino a 16
istruzioni.
clock 6 _ Le istruzioni fadd(3) e add(4) terminano 1a loro esecuzione con la rase
di scrittura.; fadd(5) si trova ne1 secondo stadio di esecuzione della FPU; add(6)
ein esecuzione e f s..ub ancora nel buffer,
clack 7 . fadd(5) e add(6) scrivano i loro risultati nel register file (WB), mentre
1a fsub puo finalmente essere decodmcata e iniziare 1a sua esecuzione a1 ciclo di
clock successivo.
Si noti che alcune istruzioni sono state eseguite fuod sequenza.
o due singolo cicio (SCID)
o una multiciclo (MCID)
L'architettura PowerPC 639
In figura C.8 e mostrato 10 schema a blocchi della CPU, In aggiunta aile unita
di esecuzione sopra menzionate e alIa differente struttura delle MMU e della cache,
gli aspetti pili rilevanti, anche in confronto al 601, riguardano una differente gestione
della coda delle istruzioni e, soprattutto, l'introduzione deWunita. di completamento
per il riordino delle istruzioni eseguite ood ardine,
C.4 La CPU MPC 604
11604 [Mat94] ela terza ,ealizzazione dell'architettura PowerPC (dapo il601 e iI603).
Diversamente dal 601 esso segue completamente i1 modella architetturale PowerPC.
IL 604 eun processore a 32-bit, superscalare, capace di inviare fino a quattro istruzioni
simultaneamente, verso le sue 6 unita di esecuzione indipendenti, che sono:
".
',' ',.

":.: ,:':, '
, "."

.. ",j\'
'
"
.) '
.' ,': "


," ,,nt; 'I
.. "
..,

"," "
Appendice C
clock 5 - Le istruzioni add(l) e fadd(2) scrivano i lora risultati nel register file,
1a fadd(3) si trova nel secondo stadio di esecuzione della FPY; la add(4) enello
stadio di esecuzione, la fadd(5) si trova nel primo stadio di esecuzione della FPU;
la add(6) viene decodificata e lascia la IQ; I'istruziane fsub(7) resta nel buffer
della FPU, perche essa dipende da! risultato della f add(3). Paiche non epassibile
l'anticipazione del risultato nella FPU) la fsub deve attendere 1a fine della rase
WB di f add prima di passare alia stadia di decodifica.
, ' ",
-
\;"
''1
"",,:' ,'.. ".
'f" . (
. ,:. ,:..1
- ,,\.:> , "
,.'. " . ' '
." " '"

., '.,.'-,,', .i
, (0-,., ". .'-
:"-".: "

', .. ' 'I
" ;':" ,
.. "
".' ". ' I.
o ,c- ... _ ,
- -":.J" w"
,,,, -, .. .
:;-'::'"
. '.' -, ".'
" .., -
.. -,
,
: ..
;r:-'
... '\ '., ,
., 'oJ"'"
,..-?:.. :,;,
,,' .. '
- " :
- . .'.,
-".... ;,'\: -', 1';-
',:'",.' i
',.", '". ,
'H>
_":':""':, l",
":'- '
.-, '. I ',' ";ir "
".,":: ..; ...
,': .t ,< .
"-":./.: -:

'. '?;"'-
clock 3 - L'istruzione lwz si trova nello stadia MEM dove avviene Paccesso al-
, ".. ",:
la memoria, alia fine di questa fase il dato edisponibile (ipotizzando un cache ..',
hit)i l'istruzione add(l) enella fase,esecutiva, ma dipendendo da llJZ deve atten- ':_ .n.; .', ..
dere la fine della fase MEM di essa per pater ricevere il risu1tato anticipato del -,,:":
caricamento, L'istruzione fadd(2) si trova nel primo stadio di esecuzione deUa '"
FPU mentre Ie istruziow fadd(3) e add(4) sono nella'stadio di decodifica delle ., ..,,:.,
rispettive unita, L'istruzione fadd(5) si trova nel buffer della FPU. . ,::.',', ,:' i2':: ,
::,.:., "'. ,1;" .
clock 4 - L'istruzione lwz scrive il risultato del caricamento nel register file (stadio ." .
WBL 1a add(l) pub essere eseguita sin da questo momenta per via del bypass;
1a fadd(2) si trova nel secondo stadio eli esecuzione della FPU mentre fadd(3) e '.' ':r;'.
.- . ,
nel primo. L'istruzione add(4) trovando 10 stadio di esecuzione occupato viene ..
mantenuta nel buffer della ru. L'istruzione fadd(5) viene decodificata e la fsub(7) :,:t
.
" trova nel buffer della FPU. . '.. .,':
, 'itL
r-" ...
, '.' !':f':
, . ':-',
, ,. :of'
,
,.;, . f
<,:';-':, idl'
.....
. , ,- .-.
. .;, . :;;(',.,
,v__
,;.'
, . "'..
... \ " , 'if
,v"
. i ;,I'."
,,;:;,f\" r:(,
<:,\). ,.f,.
' . t .
, .-;;
,', .. ",
clock 1 - Le istruzioni 1wz(0) e fadd(2) vengono inviate alle rispettive unit.. di
esecuzione, 13 lvz viene decodificata in IQO e va verso 10 stadio di esecuzione
della pipeline della ru, la fadd viene invece posta nel buffer della FPU.
L'istruzione add(l) viene mantenuta nella coda istruzioni poiche diretta alia stes-
sa unita. di esecuzione di lwz, inoltre essendo essa un'istruzione della IU1 per essere
inviata deve trovarsi necessariamente in IQO.
clock 2 - L'istruzione lwz si trova nello stadio di esecuzione (dove viene calcolato
l'indirizzo per l'accesso alia memoria) mentre 1a fadd enello stadio di decodifica.
In questa rase, 1a add(l) viene decodificata in IQO e inviata verso la rase di
esecuzione, mentre la fadd(3) .i trova nel buffer della FPU.
Pipeline BPU.
Nello stadio Dec/Exe l'istruzione viene decodificata, eseguita e risolta, oppure
predetta. L'MPC 601 effettua una predizione statica del salto Del caso di salti
condizionati. Se l'esito della condizione risulta positivo, I'istruzione di destina-
zione viene prelevata in anticipo. Le istruzioni d.i salto incondizionato vengono
sempre 'anticipate per quanta possibile.
C.3 Un esempio di fiusso istruzioni per il 601
Studiamo con l'ausilio di Figura C, 7 un esempio di Busso di istruzioni nel 601.
Con la sequenza eli istruzioni di FiguraC.7b, ipotizziamo che la coda istruzioni,
inizialmente vuota, a.l colpo di clock 0 venga riempita can 8 istruzioni provenienti
dalla cache e vediamo come si evolve la situazione.
638
\
\
I
j
l
\
I
I
-.
-
-

_.
-

..
..
..
-
. .
-
. -
-
.. -
-
..
.
..
.'

..
c
]-

-
-
I
j .
]-
)-
l-
I
]-
)-
1-
I-
1-
I-
).
1-
I
1-
641
CZJ DSQ
CEl DEQ
Loa1cl,l dl
emisslone
t [ i I
V.rllO I. unil.
dl ...eu1:ion.
." ';..' .".
':,::lQ'l .. :.
"-': " ",I, .., I-
;;", .. .. ',.:u
..............
.. - -
;. :
- .
L'architettura PowerPC
:'.:;J>Il!'.': :


_.- _. - ..
i," .. r
,... '.1
0
3.',.
l
'. '-' ,,'. ... '.

dalla cache (4 parole)
I
Fetch (IF) Questo stadio erespoosabile del caricamento delle istruzioni dalla cache
e della determinazione dell'indirizzo della nuova istruzione da caricare. Le istru-
zioni vengono paste nella coda istruzioni. La coda ha 8 posizioni come nel 601,
ed edivisa in 2 settori da 4 posizioni ciascuno. Le istruzioni vengono decodificate
nella parte superiore DEQ (Decode Queue) e vengono iOviate alle unit], funzionali
nella parte inferiore DSQ (Dispatch Queue). Le.istruzioni vengono caricate dalla
cache alIa massima velocita di 4 per clock e devono necessariameote apparteneie
aHa stessa linea di cache.
CA,l La pipeline del 604
Decode (D) istruzioni che si trovano nella DEQ vengoDo decodificate e scorrano
a gruppi di 2 0 4 verso la DSQ.
Dispatch (DS) In questo stadio vengono letti gli operandi sorgente dal banco dei
registri e vengono inviati insieme aUe istruzioni verso Ie unita di esecuzione. AlIa
La pipeline del 604 erappresentata in Figura C.lO ed ecostituita da sei stadi. La
stadia di esecuzione ea sua volta. castituito da 6 stadi paralieli, corrispondenti alle 6
unita di esecuzione sapra menzionate. Quando e possibile, atcune combi-
nano gli ultimi due stadi, in un singolo cicIo di clock, mentre altre richiedono stadi
di esecuzione multipli. Ne consegue che a seconda dell'unita funzionale competente e
a seconda dell'istruzione stessa 1a fase di esecuzione varia come durata da istruzione
a istruziane. In figura C.ll emostrato il dettag1io pipeline dei differenti tipi di
unita di esecuzione.
DescriviatnQ ora i vari stadi della pipeline, mantenendo 1a stessa teiminologia
Motorola.
Figura e.9 Coda istruzioni MPC 604
"/.
" ..
'.' 'I';,

.,.......
i;f'
,
", .
''''',,-
' ...' ,
. :. 'j'
. ;.f.\'

.. .:. .
,,' .,;;;,.;... '
. -';:;-.4:,"",
;.
. '"
'.
-.1 ";j
_,
.J.
," ?
- '-;-'1:":1
/.:",:'. .,
_ ."
.. :;\:
:, ..
F
,:' -':' '.
'. "1"""

.
, I" '" ,
'. '.'
<2('; /i:
"
';'.(;.::".- :-t.
',,':;'" ,
"','i"
i },.' .;,--
i"
ft:,
h
: ,-.,; ,f;.. 0:"
A.iW{
.: ..;', ..
;:r"

.....
'.: f';;':":, .,'
".1:;;:''''
"- '<- "
; , .., .. --
". ,.r.. '
-..i'-"
., ..".....,.

.."-'
'l r.- h ,... ;\:,"
_.< ',,,
N.;,
'.

",,;.,
. "',,:,;[;":1";.' ,!;',.:.
, : .... 'j
.:t.
trio:.:

','.'.i.:(,-.:' 1"-
,fc//';'
.,.J:
.. ,-;;'.':.- .j.'
.. i .
.-;1;'
'1.. :" :-..;;:'
.c'
'rF
','.
!.:,.
,.., '-.;-
..
,':
' .... ; " '
,'"', ,.. ,.
. , '... 'i'-
.,. '
--

,
,I - N


!!is
"0

.-J

8

,
.'
d

"


o
IDl

o 00
-;;
i

0
.,

c_
-
N


:

iiiiiiiii ;i:'!i
is

c
"
lit /il
" II
"'0 3-
f .
.- ._.,! 11 :l
0'
-
-_eO
:;:l S" ....
..... I. <0
., ..
."-
e: ;&

N
'1:1 t: 1!8:" f')
o ... ,.,.
':;l a =,11
,

J !mi1H
c
'c ',,"" ','""i'i "I
:;l rAJ ,::. ",. :,':';":': :
H
. "'. 'i.""'"
'6 .'
u Q
cr: E
.a

E
.
L.U, N . + ,.
r------n tI C : .. ,,:'
,J
-

8
"
0

,-
-

" "
"
<
c 0
,,3
-
,
$
" "
-

"

c o
,
, -
0 -"


'"
Appendice C

-
,
I
,
<
"
N
"
-
- < 0

001

..

-
640

..
c
]-

-
-
I
j .
]-
)-
l-
I
]-
)-
1-
I-
1-
I-
).
1-
I
1-
641
CZJ DSQ
CEl DEQ
Loa1cl,l dl
emisslone
t [ i I
V.rllO I. unil.
dl ...eu1:ion.
." ';..' .".
':,::lQ'l .. :.
"-': " ",I, .., I-
;;", .. .. ',.:u
..............
.. - -
;. :
- .
L'architettura PowerPC
:'.:;J>Il!'.': :


_.- _. - ..
i," .. r
,... '.1
0
3.',.
l
'. '-' ,,'. ... '.

dalla cache (4 parole)
I
Fetch (IF) Questo stadio erespoosabile del caricamento delle istruzioni dalla cache
e della determinazione dell'indirizzo della nuova istruzione da caricare. Le istru-
zioni vengono paste nella coda istruzioni. La coda ha 8 posizioni come nel 601,
ed edivisa in 2 settori da 4 posizioni ciascuno. Le istruzioni vengono decodificate
nella parte superiore DEQ (Decode Queue) e vengono iOviate alle unit], funzionali
nella parte inferiore DSQ (Dispatch Queue). Le.istruzioni vengono caricate dalla
cache alIa massima velocita di 4 per clock e devono necessariameote apparteneie
aHa stessa linea di cache.
CA,l La pipeline del 604
Decode (D) istruzioni che si trovano nella DEQ vengoDo decodificate e scorrano
a gruppi di 2 0 4 verso la DSQ.
Dispatch (DS) In questo stadio vengono letti gli operandi sorgente dal banco dei
registri e vengono inviati insieme aUe istruzioni verso Ie unita di esecuzione. AlIa
La pipeline del 604 erappresentata in Figura C.lO ed ecostituita da sei stadi. La
stadia di esecuzione ea sua volta. castituito da 6 stadi paralieli, corrispondenti alle 6
unita di esecuzione sapra menzionate. Quando e possibile, atcune combi-
nano gli ultimi due stadi, in un singolo cicIo di clock, mentre altre richiedono stadi
di esecuzione multipli. Ne consegue che a seconda dell'unita funzionale competente e
a seconda dell'istruzione stessa 1a fase di esecuzione varia come durata da istruzione
a istruziane. In figura C.ll emostrato il dettag1io pipeline dei differenti tipi di
unita di esecuzione.
DescriviatnQ ora i vari stadi della pipeline, mantenendo 1a stessa teiminologia
Motorola.
Figura e.9 Coda istruzioni MPC 604
"/.
" ..
'.' 'I';,

.,.......
i;f'
,
", .
''''',,-
' ...' ,
. :. 'j'
. ;.f.\'

.. .:. .
,,' .,;;;,.;... '
. -';:;-.4:,"",
;.
. '"
'.
-.1 ";j
_,
.J.
," ?
- '-;-'1:":1
/.:",:'. .,
_ ."
.. :;\:
:, ..
F
,:' -':' '.
'. "1"""

.
, I" '" ,
'. '.'
<2('; /i:
"
';'.(;.::".- :-t.
',,':;'" ,
"','i"
i },.' .;,--
i"
ft:,
h
: ,-.,; ,f;.. 0:"
A.iW{
.: ..;', ..
;:r"

.....
'.: f';;':":, .,'
".1:;;:''''
"- '<- "
; , .., .. --
". ,.r.. '
-..i'-"
., ..".....,.

.."-'
'l r.- h ,... ;\:,"
_.< ',,,
N.;,
'.

",,;.,
. "',,:,;[;":1";.' ,!;',.:.
, : .... 'j
.:t.
trio:.:

','.'.i.:(,-.:' 1"-
,fc//';'
.,.J:
.. ,-;;'.':.- .j.'
.. i .
.-;1;'
'1.. :" :-..;;:'
.c'
'rF
','.
!.:,.
,.., '-.;-
..
,':
' .... ; " '
,'"', ,.. ,.
. , '... 'i'-
.,. '
--

,
,I -
N


!!is
"
0

.-J

8

,
.'
d

"


o
IDl

o 00
-
;;
i

0
.,

c_
-
N


:

iiiiiiiii ;i:'!i
is

c
"
lit /il
" II
"'0 3-
f .
.- ._.,! 11 :l
0'
-
-_eO
:;:l S" ....
..... I. <0
., ..
."-
e: ;&

N
'1:1 t: 1!8:" f')
o ... ,.,.
':;l a =,11
,

J !mi1H
c
'c ',,"" ','""i'i "I
:;l rAJ ,::. ",. :,':';":': :
H
. "'. 'i.""'"
'6 .'
u Q
cr: E
.a

E
.
L.U, N . + ,.
r------n tI C : .. ,,:'
,J
-

8
"
0

,-
-

" "
"
<


c 0
,,3
-
,
$
"
"
-

"

c o
,
, -
0
-"


'"
Appendice C

-
,
I

,
<
"
N
"
-
- < 0

001

..

-
640
.. D.nd. r'lcl<
'elc.b DoelHl. Dlspolel< t.>.c"le Cornplrle 'I'll
__I" 'I 1< "rr1
VIRGOLA MOBllI:
hlc.b Decoo. DUpalcb ....114.'. eompl.h
' .4.". 'rd.... ,d.t\.
I ' ' I
.'. .,
, .,'
INTER!
SALT! CONDIZtoNATI
L'architettura PowerPC 643
'-Ell"cute-'
r<tch Ce."". llUp.tol< each. JJl(o. C....pl.to n
I r'-:< "I "" ..-.
LOAD/STORE
C.5 Un esempio di flusso istruzioni per il 604
Write-back (WB) E 10 stadio che scrive i registri con Ie informazioni contenute nel
rename bufJer.che Don e possibile scrivere nello stadio di completamento.
In figura C.12c e mostrato un esempio del fiusso ist.ruzioni Del MPC 604. Si puo
notare come Ie istruzioni vengano emesse in ordine aile unita. di esecuzione. Nel
nostro esempio supponiamo che Ie istruzioni da caricare siano presenti nella cache
(cache hitL quindi vi eun solo dclo di clock fra 1a richiesta da parte della fetch unit
e l'istante in cui Ie istruzioni entrano nella coda. Supponiamo
1
inoItre, che 1a coda
sia iniziaimente vuota e vediamo cosa accade ai vari deli di clock. La situazione
all'interno della coda istruzioni emostrata in figura C.12d.
clock 0 - Quattro istruzioni (0-3) vengono caricate a partire dalla seconda doppia
parola di un blocco nella cache istruzioni, questo significa, che al cicIo di clock
successivo solo Ie rirnanenti due istruzioni del blocco possono essere caricate,
poiche, come abbiamo gia detto\ Ie istruzioni durante la fase di fetch devono
appartenere allo stesso blocco della cache.
clock 1 - Le ultime due istruzioni del blocco veogono caricate mentre 1e prime
quattro vengono decodificate passate nella DSQ.
. clock 2 - Quattro istruzioni vengono caricate dal DU9VO blocco della cache istru-
zioni , Ie istruzioni 0-2 vengono inviate alle rispettive unita. di esecuzio.ne mentre
la fsub(3) rimane nello stadio di dispatch poiche 10 stadio esecutivo della FPU
e occupato dall'istruzione fadd(2). Le istruzioni 4 e 5 vengono decodificate e
spostate in DSQ. Vengono caricate Ie altre quattro istruzioni dalla nuova linea di
cache.
Figura C.ll La pipeline delle varie unita. di esecuzione.
"",I'llt\'
I .4",'I;ljl. .

;i',-.
,,' -:" :'l;J;:,l'
.. ;.:
,:,!-.:.,
"''-:''

if,

-'t:
i
') ..:'
,..;.,.
'. P:'" \< r.-.
'"
,,'.iJ,." Y"
;,,t.::};, \:'.-',
...,. it',
'. 'v:..: "',:
,.,{ ,;- ,.
,
", ','
',.'" ;1,'"
:,c,:,\
,,"

'.
.',"',-",;.t'." ''''1'',
':. ;L.
';: ,;;;. __ '

",.,.i,; :-,:_
" .,"
"


, ,"'", ""-.-'


" ',,,. . -,..'
... :t,
, , ., '. ,
-.n
":..';;: :<
,I ,iI'",;'
",' ;'" ""'"

.... ''''.'''-
-",,' _" .'l"I,
" ' ..
'",:: 'C' "';;"".,'
':,;:' J',
' ....."., .. -t.:,
,'.. -:. I., ..,.;.
.10... '". --e.Y,
'.":;::!'::.-, J!.';"
.. 'I: ,,,:.:i: "-'.
",', '., ..<" ...;
';':/}k::-" f'
; .-'.'
.. .. 'I' .
.", ", . ,"
'
;"'1,:,:.;.".
'. (":,':';\"<
"":'':''''<'0
",,:':,,(',:' t,
' .' j;',
!, I;' , 'of), ,'.
. 'k:,
." "I.',".,
' .. " .....
.' ..... .:t",
:'
"':'. . ,
4,'"
'f-' .-

'.:',,',J.. '.', ;I;f."
','i ' ',., :,' 'I:.'"
'.' "".'-'; Y, "
.
'. r, -:'"
.' ",
"'- '; '.'" '"
I.,; " : .-,r,:.':'

:), t:
,
',of'; "j; ::!:;.
.. ('" ".. ;:"
':F
" ;" .. li'
.-" , "" ,ot
"
,'" '?\',"
""..,'
, ..,':.' '/r'"
" .... '-,' .." ',;; ..
J:{
';,.'" ;'.
;.. 'N
, .'<

- ":'0"

,...\ '. ",c."
f ,.
;.. ."i,:.c.
'. .' J ,
' ..'
.., ""'"
""
". ;';' ! ...
! .,:
"''''','' '..' . , ,.-,,.., .
t,;.
- J
-- - --- -- -,
.. -,i
r BPU LSU I
'i.patch (os)

WrileBllck(lIB):
MCIU SClU2

r-------------
I
:" z
'-----------
r",kh {IF}
I
(lD)
I
fine di questa !:ltaclio, Ie istruzioni sono memorizzate nelle stazioni di prenota.,
zione (reservation) delle singole unita di esecuzione. Queste stazioni servono a
mantenere Ie istruzioni nel caso in cui gli operandi non siano disponibili, e quindi
l'istruzione. debba attendere, liberando poste nella coda istruzioni.
Complete (C) Lo stadio di completamento mantiene il corretto state architetturale
della macchina, conslderando un numero di istruzioni residenti in ROB Reorder
Buffer e usanda informazioni circa 10 state delle istruzioni fomite dallo stadio
di esecuzione. Quando Ie istruzioni vengono emesse assumono una posizione
nel reorder buffer che mantengono fino alloro completamento. nreorder buffer e
gestito come una FIFO, quindi esam..ina Ie istruzioni nella stesso ordine in cui esse
sono sta.te inviate, questo consente i1 completarnento delle istruzioni nell'ordine
sequenziale specificato dal programma.
A ogni cicIo di clock vengono esaminate 4 istruzioni e si determina se i risultati
possono essere scritti, questo consente il completamento di un massimo di 4
istruzioni per cicio di clock (massimo throughput).
Nel caso in cui Ie porte e i risultati sono disponibili, Ia fase di write-back avviene
durante 10 stadio di complete, altrimenti esso euno stadia a parte.

Execute (EX) E 10 stadia d.i esecuzione delle istruzioni, ha durata variabile a se-
canda dell'unita. cii esecuzione coinvolta. Alia fine cii questa stadic l'unita. cii
esecuzione scrive i risultati nell'apposito rename buffer e comunica allo stadio di
cOPlpletamento complete che l'esecuzione eterminata.
Figura C.IO La pipeline del MPC 604
642 Appendice C
\
\.
1
I
\
\
\
I
I
I
1
..
..
-
-.
,
-
..-.
--
'-,
-'
-
...
-
--
..
-
_.
,-
-'
"
-
-.
I
.. D.nd. r'lcl<
'elc.b DoelHl. Dlspolel< t.>.c"le Cornplrle 'I'll
__I" 'I 1< "rr1
VIRGOLA MOBllI:
hlc.b Decoo. DUpalcb ....114.'. eompl.h
' .4.". 'rd.... ,d.t\.
I ' ' I
.'. .,
, .,'
INTER!
SALT! CONDIZtoNATI
L'architettura PowerPC 643
'-Ell"cute-'
r<tch Ce."". llUp.tol< each. JJl(o. C....pl.to n
I r'-:< "I "" ..-.
LOAD/STORE
C.5 Un esempio di flusso istruzioni per il 604
Write-back (WB) E 10 stadio che scrive i registri con Ie informazioni contenute nel
rename bufJer.che Don e possibile scrivere nello stadio di completamento.
In figura C.12c e mostrato un esempio del fiusso ist.ruzioni Del MPC 604. Si puo
notare come Ie istruzioni vengano emesse in ordine aile unita. di esecuzione. Nel
nostro esempio supponiamo che Ie istruzioni da caricare siano presenti nella cache
(cache hitL quindi vi eun solo dclo di clock fra 1a richiesta da parte della fetch unit
e l'istante in cui Ie istruzioni entrano nella coda. Supponiamo
1
inoItre, che 1a coda
sia iniziaimente vuota e vediamo cosa accade ai vari deli di clock. La situazione
all'interno della coda istruzioni emostrata in figura C.12d.
clock 0 - Quattro istruzioni (0-3) vengono caricate a partire dalla seconda doppia
parola di un blocco nella cache istruzioni, questo significa, che al cicIo di clock
successivo solo Ie rirnanenti due istruzioni del blocco possono essere caricate,
poiche, come abbiamo gia detto\ Ie istruzioni durante la fase di fetch devono
appartenere allo stesso blocco della cache.
clock 1 - Le ultime due istruzioni del blocco veogono caricate mentre 1e prime
quattro vengono decodificate passate nella DSQ.
. clock 2 - Quattro istruzioni vengono caricate dal DU9VO blocco della cache istru-
zioni , Ie istruzioni 0-2 vengono inviate alle rispettive unita. di esecuzio.ne mentre
la fsub(3) rimane nello stadio di dispatch poiche 10 stadio esecutivo della FPU
e occupato dall'istruzione fadd(2). Le istruzioni 4 e 5 vengono decodificate e
spostate in DSQ. Vengono caricate Ie altre quattro istruzioni dalla nuova linea di
cache.
Figura C.ll La pipeline delle varie unita. di esecuzione.
"",I'llt\'
I .4",'I;ljl. .

;i',-.
,,' -:" :'l;J;:,l'
.. ;.:
,:,!-.:.,
"''-:''

if,

-'t:
i
') ..:'
,..;.,.
'. P:'" \< r.-.
'"
,,'.iJ,." Y"
;,,t.::};, \:'.-',
...,. it',
'. 'v:..: "',:
,.,{ ,;- ,.
,
", ','
',.'" ;1,'"
:,c,:,\
,,"

'.
.',"',-",;.t'." ''''1'',
':. ;L.
';: ,;;;. __ '

",.,.i,; :-,:_
" .,"
"


, ,"'", ""-.-'


" ',,,. . -,..'
... :t,
, , ., '. ,
-.n
":..';;: :<
,I ,iI'",;'
",' ;'" ""'"

.... ''''.'''-
-",,' _" .'l"I,
" ' ..
'",:: 'C' "';;"".,'
':,;:' J',
' ....."., .. -t.:,
,'.. -:. I., ..,.;.
.10... '". --e.Y,
'.":;::!'::.-, J!.';"
.. 'I: ,,,:.:i: "-'.
",', '., ..<" ...;
';':/}k::-" f'
; .-'.'
.. .. 'I' .
.", ", . ,"
'
;"'1,:,:.;.".
'. (":,':';\"<
"":'':''''<'0
",,:':,,(',:' t,
' .' j;',
!, I;' , 'of), ,'.
. 'k:,
." "I.',".,
' .. " .....
.' ..... .:t",
:'
"':'. . ,
4,'"
'f-' .-

'.:',,',J.. '.', ;I;f."
','i ' ',., :,' 'I:.'"
'.' "".'-'; Y, "
.
'. r, -:'"
.' ",
"'- '; '.'" '"
I.,; " : .-,r,:.':'

:), t:
,
',of'; "j; ::!:;.
.. ('" ".. ;:"
':F
" ;" .. li'
.-" , "" ,ot
"
,'" '?\',"
""..,'
, ..,':.' '/r'"
" .... '-,' .." ',;; ..
J:{
';,.'" ;'.
;.. 'N
, .'<

- ":'0"

,...\ '. ",c."
f ,.
;.. ."i,:.c.
'. .' J ,
' ..'
.., ""'"
""
". ;';' ! ...
! .,:
"''''','' '..' . , ,.-,,.., .
t,;.
- J
-- - --- -- -,
.. -,i
r BPU LSU I
'i.patch (os)

WrileBllck(lIB):
MCIU SClU2

r-------------
I
:" z
'-----------
r",kh {IF}
I
(lD)
I
fine di questa !:ltaclio, Ie istruzioni sono memorizzate nelle stazioni di prenota.,
zione (reservation) delle singole unita di esecuzione. Queste stazioni servono a
mantenere Ie istruzioni nel caso in cui gli operandi non siano disponibili, e quindi
l'istruzione. debba attendere, liberando poste nella coda istruzioni.
Complete (C) Lo stadio di completamento mantiene il corretto state architetturale
della macchina, conslderando un numero di istruzioni residenti in ROB Reorder
Buffer e usanda informazioni circa 10 state delle istruzioni fomite dallo stadio
di esecuzione. Quando Ie istruzioni vengono emesse assumono una posizione
nel reorder buffer che mantengono fino alloro completamento. nreorder buffer e
gestito come una FIFO, quindi esam..ina Ie istruzioni nella stesso ordine in cui esse
sono sta.te inviate, questo consente i1 completarnento delle istruzioni nell'ordine
sequenziale specificato dal programma.
A ogni cicIo di clock vengono esaminate 4 istruzioni e si determina se i risultati
possono essere scritti, questo consente il completamento di un massimo di 4
istruzioni per cicio di clock (massimo throughput).
Nel caso in cui Ie porte e i risultati sono disponibili, Ia fase di write-back avviene
durante 10 stadio di complete, altrimenti esso euno stadia a parte.

Execute (EX) E 10 stadia d.i esecuzione delle istruzioni, ha durata variabile a se-
canda dell'unita. cii esecuzione coinvolta. Alia fine cii questa stadic l'unita. cii
esecuzione scrive i risultati nell'apposito rename buffer e comunica allo stadio di
cOPlpletamento complete che l'esecuzione eterminata.
Figura C.IO La pipeline del MPC 604
642 Appendice C
\
\.
1
I
\
\
\
I
I
I
1
..
..
-
-.
,
-
..-.
--
'-,
-'
-
...
-
--
..
-
_.
,-
-'
"
-
-.
I
l-
)_.
\
r
)-
\
1-
1
I'
11
I
I
I
I
I
I
I
,
I
I
I
,
,
10 9
,
b) Seq".nu di lst.r.at011l
7
,
5

3
,
'-
1

a) Slpll1calo del ,Ir:nboll


.
,
I
I
I
c) flUII.o lrtruziOQl nella plpellnll
10 ang I D bd EX c\ft I 1 : 1 :
bor j D i DS i EX em j' 1 '; l ;
[! ';:dal 0 ! os I EX '"' I EX Icswrrj: :
b:J!llkJ 0 I DS I os 1ct I I:lI ox IC\WJl i :
: Idd,1 P I os I EX Icc IcS.. I :
b'UbCcoi::::D os i c; I c c ' I \ I
: r. [rnAda a I ps I I:lI EX I EX I C\l!l) j i
h D I os I os bd EX I '" Lc,..j
I. mI 0 I os I os I EX I c I c Ics.. I
1..,,10 los I os b:x=l c I c leS.. \
I \'oladdJ biD lJrl, EX I EX I EX Icsw1
I 4'loubib=1 0 I DS I os bd EX' W em !
: II2.dd!=fi=1 0 Ips los I EX I c I c los.. j
: b ,ubi D I 0 I os I as I tIC I c lei cs.. j
1
- -
........
1:!1 8
....
'N'
1-
, ..
..., ''''''b
A_
".
1
I.'
5 rubto: .
,
, ..
bu.
,
,
..... ....... 0 ..lid,
, ..
Ci IIlllfc
, ......
'N"
d d d
-
J

...
:I r......
n.
)- .-

, , ,

<1) Siluzlone neUe. ooda .I,It.ru%lon)
-
,
-
Figura C.12 Flusso istruzioni MPC 604
)-
Appendice C
clock 11 - Le ultime 3 istruzioni completano e scrivono i loro risultati nei registri.
clock 9 - Le istruzioni 7-9 completano e scrivono i loro risultati nei registri; 1a
f adds(lO) si trova nel terzo stadio esecutivo della FPU, mentre :tsubs (11) si trova
nel secondo; le istruzioni e 13 devono attendere nel completion buffer la loro
terminazione.
clock 10 La fadds(10) completa e scrive i risultati nei registri; la fsubs(li) si
trova nel terzo stadio esecutivQ della' FPU; Ie istruzioni 12 e 13 attendono nel
completion bufferche essa termini l'esecuzione.
clock 8 ' La fmadd(6) completa e scrive il risultato ne! register file; fmsub(7) si
trova nel terzo stadio di esecuzione della FPU. Le istruziani 8 e 9 attendono nel
completion buffer che essa termini l'esecuziane, la fadds(1q) si trovs. nelsecondo
stadia esecutivo della FPU, mentre, fsubs(ll) si trova nel primo, Ie istruzioni 12
e 13 sana nella stadio esecutivo delle SOIU.
clock 7 - Le istruzioni 3-5 completano e scrivono i loro risultati nei registri;
fmadd(6) si trova nel terzo stadio esecutivo della FPU, mentre, fmsub(7) enel
secondo, Ie istruzionl 8-9 devono attendere nel completion buffer la terminazione
delle precedenti. La fadde(lO) si trova nel primo stadio di esecuzione della FPU,
mentre Ie rimanenti 3 istruzioni possono essere inviate aile rispettive unita.
clock 6 - La fadd(2) termina la sua esecuzione, completa e scrive il risultato
nel register file; la fsub(3) si trova nel terzo stadio esecutivo della FPU; 1a 4 e
la 5 attendono nel completion buffer il completamento di essa. La fmadd(6) si
trova nel seco.ndo stadio esecutivo della FPU, mentre, fmsub(7) enel primo. Le
istruzioni 8 e 9 sono nello stadia di esecuzione; la fadds(lO) viene inviata mentre
Ie seguenti 11-13 devono attendere nella DSQ,

";.
."' "
"','::'i!'I' I
" -J., 'I' o ""
. '1::" . .,,',," I ". ".:
., :1 (,1:-'.'"
: :t>'.f!:.l1 :1iI,
. ,;..
_ '/ ;:'
. - j;"
" I
.,.... ,."'!., .'1:".
... ;(.. y''''''
..
'_ :j!'
, " ",_' .
.",", "j;." ....
i ::;'
--,:.,,;;;};': i"L'
',": . 'J:' ,;,
.' '.,-, ","
'.', ./,::.
- .., '.,
", ',' ,
';:C':,,'''': /1.,'.
,'.: ,t,,:'. " 'If
..,: ';J,: ..).:, " <
'.

:'<.\.-." "'r''''
_. iJ,'
:-),'
,-" , l.',
.'
" . AA .. ,.,
' ..oJ:""'I.',
.
".-'. ': ,', , ..
" ",,I".,,
.,>.,.. .,.'
., ',T>"
,'"'r ," "
:; /j:
clock 5 .. La fadd(2) si trova ne! terzo stadia esecutivo della FPU; fsub(3) nel '-"",i;{ t'::
secondo, Ie istruzioni 4-5 hanno terminato laloro esecuzione rna devono attendere, l.i:
nello stadia di completa.mento, fino a che Ie istruzioni precedenti , non abbiano:'X:Z:;;k ,i:V,
a lora volta terminato resecuzione. La fmadd(6) si trova nel primo stadio di
esecuzione della FPU; Ie istruzioni 7-9 possono essere inviate alle rispettive unita, - :!t
mentre 1e ultime 4 vengono decodificate.
,,>!j}f,;
A':-'


.. 'M
, 1;0;;1"
)':'
,'. ',' -'f'J"", 1>,,'
';': ,
('
, Ii...
" ,. ,:-'.:. "'.'
.. , ,'",-
",'j"" !":;,,
'.,
:,,'
. """, ' i:'
- .,
,;L','
,\:'
""",' - 11.,
,,' ---.,.. '" "r
., .,,-, "
.:., 'f;,' r",' 'I
to,;
, " ", !\
',',:'F: 1(\1'
__ " "', ;,1'>','
..
, ',",'.
- .... ' '"
' ..
.. ,,', ,

''', ,I,.,

'. /:'I'
,' ... 0:"

"', -,'.
,ft
, .', ;
"" ,.,',
", ,""
:,:
; .... ,
, ' ,
" '\:'. ',"
.," <, .i.
.- ,.!, ,.

.:,:.;,,:,;:. f'
o '.' "
n,.- __ 0 w",
".'..
.' \ 'V
-. ",'.. '
", ,.'" ,
J::
; (,
.. 1<'
'.,.,",
.. 1..,'
,
clock 4 - Le prime due istruzioni and(O) e or(l) completano e scrivono i loro
risultati nel register file. La f add(2) si trova nel secondo stadio esecutivo della
FPU, mentre fSllb(3) enel primo, Ie istruzioni 4 e 5 vengono eseguite. L'istru-
zione fmadd(6) puo essere inviata verso il primo stadia esecutivo della FPU, la
fmsub(7) cleve attendere nello stadio di dispatch, COSt come Ie seguenti istruzioni
8 e 9 (invio in delle istruzioni). Le istruzioni 10-13, non trovando posta in
DSQ, devono attendere in DEQ (in reaIta in DSQ ci sarebbe un posta disponibile,'
rna Ie istruzioni possono eSsere trasferite solo a gruppi di 2 0 di 4),
clock 3 - Le istruzioni 0 e I vengono eseguite, la 2 si trova nel primo stadio di
esecuzione della FPU, 1a 3 viene inviata verso lo stadio esecutivo della FPU, la 4
e 1a 5 vengono inviate alIo stadia esecutivo delle scm. Le istruzioni 6-9 vengono
decodificate.
644
l-
)_.
\
r
)-
\
1-
1
I'
11
I
I
I
I
I
I
I
,
I
I
I
,
,
10 9
,
b) Seq".nu di lst.r.at011l
7
,
5

3
,
'-
1

a) Slpll1calo del ,Ir:nboll


.
,
I
I
I
c) flUII.o lrtruziOQl nella plpellnll
10 ang I D bd EX c\ft I 1 : 1 :
bor j D i DS i EX em j' 1 '; l ;
[! ';:dal 0 ! os I EX '"' I EX Icswrrj: :
b:J!llkJ 0 I DS I os 1ct I I:lI ox IC\WJl i :
: Idd,1 P I os I EX Icc IcS.. I :
b'UbCcoi::::D os i c; I c c ' I \ I
: r. [rnAda a I ps I I:lI EX I EX I C\l!l) j i
h D I os I os bd EX I '" Lc,..j
I. mI 0 I os I os I EX I c I c Ics.. I
1..,,10 los I os b:x=l c I c leS.. \
I \'oladdJ biD lJrl, EX I EX I EX Icsw1
I 4'loubib=1 0 I DS I os bd EX' W em !
: II2.dd!=fi=1 0 Ips los I EX I c I c los.. j
: b ,ubi D I 0 I os I as I tIC I c lei cs.. j
1
- -
........

1:!1
8
....
'N'
1-
, ..
..., ''''''b
A_
".
1
I.'
5 rubto:
.
,
, ..
bu.
,
,
..... ....... 0 ..lid,
, ..
Ci IIlllfc
, ......
'N"
d d d
-
J

...
:I r......
n.
)- .-

, ,
,



<1) Siluzlone neUe. ooda .I,It.ru%lon)
-
,
-
Figura C.12 Flusso istruzioni MPC 604
)-
Appendice C
clock 11 - Le ultime 3 istruzioni completano e scrivono i loro risultati nei registri.
clock 9 - Le istruzioni 7-9 completano e scrivono i loro risultati nei registri; 1a
f adds(lO) si trova nel terzo stadio esecutivo della FPU, mentre :tsubs (11) si trova
nel secondo; le istruzioni e 13 devono attendere nel completion buffer la loro
terminazione.
clock 10 La fadds(10) completa e scrive i risultati nei registri; la fsubs(li) si
trova nel terzo stadio esecutivQ della' FPU; Ie istruzioni 12 e 13 attendono nel
completion bufferche essa termini l'esecuzione.
clock 8 ' La fmadd(6) completa e scrive il risultato ne! register file; fmsub(7) si
trova nel terzo stadio di esecuzione della FPU. Le istruziani 8 e 9 attendono nel
completion buffer che essa termini l'esecuziane, la fadds(1q) si trovs. nelsecondo
stadia esecutivo della FPU, mentre, fsubs(ll) si trova nel primo, Ie istruzioni 12
e 13 sana nella stadio esecutivo delle SOIU.
clock 7 - Le istruzioni 3-5 completano e scrivono i loro risultati nei registri;
fmadd(6) si trova nel terzo stadio esecutivo della FPU, mentre, fmsub(7) enel
secondo, Ie istruzionl 8-9 devono attendere nel completion buffer la terminazione
delle precedenti. La fadde(lO) si trova nel primo stadio di esecuzione della FPU,
mentre Ie rimanenti 3 istruzioni possono essere inviate aile rispettive unita.
clock 6 - La fadd(2) termina la sua esecuzione, completa e scrive il risultato
nel register file; la fsub(3) si trova nel terzo stadio esecutivo della FPU; 1a 4 e
la 5 attendono nel completion buffer il completamento di essa. La fmadd(6) si
trova nel seco.ndo stadio esecutivo della FPU, mentre, fmsub(7) enel primo. Le
istruzioni 8 e 9 sono nello stadia di esecuzione; la fadds(lO) viene inviata mentre
Ie seguenti 11-13 devono attendere nella DSQ,

";.
."' "
"','::'i!'I' I
" -J., 'I' o ""
. '1::" . .,,',," I ". ".:
., :1 (,1:-'.'"
: :t>'.f!:.l1 :1iI,
. ,;..
_ '/ ;:'
. - j;"
" I
.,.... ,."'!., .'1:".
... ;(.. y''''''
..
'_ :j!'
, " ",_' .
.",", "j;." ....
i ::;'
--,:.,,;;;};': i"L'
',": . 'J:' ,;,
.' '.,-, ","
'.', ./,::.
- .., '.,
", ',' ,
';:C':,,'''': /1.,'.
,'.: ,t,,:'. " 'If
..,: ';J,: ..).:, " <
'.

:'<.\.-." "'r''''
_. iJ,'
:-),'
,-" , l.',
.'
" . AA .. ,.,
' ..oJ:""'I.',
.
".-'. ': ,', , ..
" ",,I".,,
.,>.,.. .,.'
., ',T>"
,'"'r ," "
:; /j:
clock 5 .. La fadd(2) si trova ne! terzo stadia esecutivo della FPU; fsub(3) nel '-"",i;{ t'::
secondo, Ie istruzioni 4-5 hanno terminato laloro esecuzione rna devono attendere, l.i:
nello stadia di completa.mento, fino a che Ie istruzioni precedenti , non abbiano:'X:Z:;;k ,i:V,
a lora volta terminato resecuzione. La fmadd(6) si trova nel primo stadio di
esecuzione della FPU; Ie istruzioni 7-9 possono essere inviate alle rispettive unita, - :!t
mentre 1e ultime 4 vengono decodificate.
,,>!j}f,;
A':-'


.. 'M
, 1;0;;1"
)':'
,'. ',' -'f'J"", 1>,,'
';': ,
('
, Ii...
" ,. ,:-'.:. "'.'
.. , ,'",-
",'j"" !":;,,
'.,
:,,'
. """, ' i:'
- .,
,;L','
,\:'
""",' - 11.,
,,' ---.,.. '" "r
., .,,-, "
.:., 'f;,' r",' 'I
to,;
, " ", !\
',',:'F: 1(\1'
__ " "', ;,1'>','
..
, ',",'.
- .... ' '"
' ..
.. ,,', ,

''', ,I,.,

'. /:'I'
,' ... 0:"

"', -,'.
,ft
, .', ;
"" ,.,',
", ,""
:,:
; .... ,
, ' ,
" '\:'. ',"
.," <, .i.
.- ,.!, ,.

.:,:.;,,:,;:. f'
o '.' "
n,.- __ 0 w",
".'..
.' \ 'V
-. ",'.. '
", ,.'" ,
J::
; (,
.. 1<'
'.,.,",
.. 1..,'
,
clock 4 - Le prime due istruzioni and(O) e or(l) completano e scrivono i loro
risultati nel register file. La f add(2) si trova nel secondo stadio esecutivo della
FPU, mentre fSllb(3) enel primo, Ie istruzioni 4 e 5 vengono eseguite. L'istru-
zione fmadd(6) puo essere inviata verso il primo stadia esecutivo della FPU, la
fmsub(7) cleve attendere nello stadio di dispatch, COSt come Ie seguenti istruzioni
8 e 9 (invio in delle istruzioni). Le istruzioni 10-13, non trovando posta in
DSQ, devono attendere in DEQ (in reaIta in DSQ ci sarebbe un posta disponibile,'
rna Ie istruzioni possono eSsere trasferite solo a gruppi di 2 0 di 4),
clock 3 - Le istruzioni 0 e I vengono eseguite, la 2 si trova nel primo stadio di
esecuzione della FPU, 1a 3 viene inviata verso lo stadio esecutivo della FPU, la 4
e 1a 5 vengono inviate alIo stadia esecutivo delle scm. Le istruzioni 6-9 vengono
decodificate.
644
....
.
" . " ..
I - - - ! "" .
I
I I I
-
I I
I
FMUL

1 1,75
FPU
FPU Fm\t 01 1,U
1 1 1,0
IFsuti
1 1 1,U .4,75 4,75

1 1 29,75
scm 1,2 1 1 6,5
A'Wr,UK
1 1 2,25 38,50
lVll 2 1
U,"5
1U MC1U Vi v vv 21 19 0,25 0,50
WI,
1 1 18,25
o'l'W 1 1 10,5
LSU LFiJ 1 1 4,5
1 1 2,0
",.11 vv 1 1 1,75 76,00 37,00

1 1 3,0
BPU BPU 1 1

19,25 19,25
Totale istruzioni 100,00 100,00 100,00
L'architettura PowerPC 647
I 60' IUF "0' I Istruzione I 601c
r
604=1 x' I hOl XI" 604 I
,
'. ,: -'\>"'"
., 1..
... ':
.
, I,
,
,,' -,.
,.. .-:",;.,
-.".,.".

"):"'.1:::
';.ir.t",
:: .
:';';J',
, ' ,',

.. '" .
.' " ..
'.':',' "
", '.d "
'" ,'.-
: .
,."'
",
.
;.' '.""
--,'
t, ,
.".
.. i' .,',"
'..." .' ;
, .-' , ,
., '."',' ,,'.
<'.
..
'.' ;;r:!L .';;,'
viene valutato il nwnero medio (nominale) di istruzioni per periodo di clock
eseguibile da ciascuna unita e dalla CPU nel suo complesso;
646 Appendice C
C.6 Un confronto tra Ie prestazioni del 601 e 604
Al Paragrafo2.4.1 estato discusso il problema della valutazione e del confronto delle
prestazioni delle CPU. Vogliamo ora applicare i concetti ivi esposti per effettuare un
confronto tra il 601 e il 604.
n confronta in questione risulta semplificato rispetto al caso generale in quanta
Ie due macchine hanna il medesimo repertorio di istruzioni. InaItre, essendo 180 valu-
tazione a parita. ill frequenza di clock, il confronto si riduce alIa sola comparazione del
C
p
] delle due macchine. E' stato detto (efr. 2.4.1) che se non si tiene conto dellJeffet_
to della memoria, CPf puo essere calcolato in base ai Cpi rilevabili dai manuali aItre
che dalle frequenze di esecuzione Xi delle differenti istruzioni.
Nella valutazione che segue, non disponendo di dati misurati direttamente sulle
macchine in operazione, il profilo di esecuzione estato ricavato adattando alI'archi-
tettura PowerPC i profili di riportati in [HP93]6. Da tale adattamento e
risultata Ia distribuzione delle frequenze Xi di TabellaC.I.
n confronto viene eseguito secondo i seguenti criteri:
\ .
\
]
I
I

--
--
.,
-.
-
. -
.,
.-
.. I
-
-<\
-
.. I
_.
.. I
Xid,u = Ipcn,u/ I pcn
Bisogna ora confrontare Xid,u con Xu' Se Xu > Xid,u, allora l'unita. u sotto-
posta a un carico superiore a queUo ideale e si deve concludere che cia determi-
na un rallentamento del flusso delle istruzioni, con conseguente peggioramento delle
prestazioni.
Cia permette di definire, per Ie unita sovraccariche, un fattore di penalizzazione
rapporto fra Xu e Xid,u:
Fpen,u = Xu/Xid,u (con Xu > Xid,u)
Calcolo del fattore di penalizzazione IPCn rappresenta il numero di istruzioni
che sarebbero eseguite per cido di dock dalla macchina se si riuscisse a mantenere
costantemente alimentate Ie singole unita.
Ipotizzando che tale condizione sia verificata, si puo calcolare in riferimento a
essa 1a frequenza media delle istruzioni per ciascuna unita.. Si tratta ovviamente di
una frequenza ideale, che corrisponde a1 massimo della potenzialita della macchina
con il profilo di esecuzione dato. Indicando can Xid,tJ questa frequenza, essa edata
da:
Tabella C.l Dati di partenza per i1 cOnfronto delle 'prestazioni tra 601 e 604. La colonna
Istruzione elenca Ie istruzioni che compaiono nel profilo. La colonna Xi da.la frequenza media
rilevata per ciascuna istruzione (si noti che e stato fatto 100 il numero totale di istruzioni
N
i3t
). Le due co1onne (:Pi riportano il numero di clock per istruzione per Ie due differenti
CPU. Le colonne Xu riportano 1e frequenze medie (le percentuali) di istruzioni eseguite da
ciascuna unita. funzionale UFo Ne1 604 si hanno due unita. SCIU; dunque 1a percentuale 38,5
eda ritenersi ripartita tra 1e due.
,.':; .
'" "

.l' ,
.1.
.. , ,':)i,
<, ..
. .." J . "..
,
-,
-, '.
(''1
, '.', ;
'-,' ..
'-;.':".
,,":." 'J',cI,
"'.,' ',', h.-'
;';'" .r;",
";
:':
-I:
, , ....
,.,
,--:'"
,,':':j",- ,\i
'" .,,;,
,.,,--. "i., :,.;"
,<;t;iV'

:: ?,-,-,'
:l :>
'g
,; .. :'i;.,
".:1;'
8i usa il massimo tra i fattori di penalizzazione per aggiustare il valore di Ipc
della CPU.
viene valutato il carico ideale (la percentuale di istruzioni) che terrebbe occupate
al 100% Ie singole unita.. Tale carico viene confrontato con queUo effettivo sulle
singole unita; vengono individuate Ie unita. sovraccariche e viene valutato il fattore
eli penalizzazione per Ie medesirne.
Ipcn,tJ = xu / L: CpiXi
Calcolo I
pc
nominale Cominciamo col calcolare il numero di istruzioni per ci-
clo di clock che sarebbero eseguite dalle singole unita. con it profilo di esecuzione di
Tabellae.!. Tale numero, indicato con Ipcn,u, edetto Ipc nominale dell'unita. u;
Essendo Xu Ia quota di istruzioni relative alIa generica unita. u ed essendo L: CpiXi
il corrispondente numero di cicli di clock) si ha:
Ipcn = 'LJPCn,u
con 1a somma estesa aile differenti sull'unita. funzionali del processore.
con Ia somma estesa aile sole istruzioni eseguite sull 'unita. u.
Poiche i processori sono superscalari e Ie unita. eli esecuzione lavorano in parallelo,
il numero di istruzioni nominale medio eseguito per ciclo di clock dal processore (Ipcn)
edato da:
61 profili citati in [HP93] 3000 relativi a.l a1cuni programmi campione, che 30no: (a) il ci?mpila.
tore Gee per linguaggio Cj (b) il programma Spice per la simulazione di circuiti analogicij (c) iJ
compilatore di testo TeX; il compilatore Cobol USSteel.
I,
)
I
I
- .
-.
_..

....
.
" . " ..
I - - - ! "" .
I
I I I
-
I I
I
FMUL

1 1,75
FPU
FPU Fm\t 01 1,U
1 1 1,0
IFsuti
1 1 1,U .4,75 4,75

1 1 29,75
scm 1,2 1 1 6,5
A'Wr,UK
1 1 2,25 38,50
lVll 2 1
U,"5
1U MC1U Vi v vv 21 19 0,25 0,50
WI,
1 1 18,25
o'l'W 1 1 10,5
LSU LFiJ 1 1 4,5
1 1 2,0
",.11 vv 1 1 1,75 76,00 37,00

1 1 3,0
BPU BPU 1 1

19,25 19,25
Totale istruzioni 100,00 100,00 100,00
L'architettura PowerPC 647
I 60' IUF "0' I Istruzione I 601c
r
604=1 x' I hOl XI" 604 I
,
'. ,: -'\>"'"
., 1..
... ':
.
, I,
,
,,' -,.
,.. .-:",;.,
-.".,.".

"):"'.1:::
';.ir.t",
:: .
:';';J',
, ' ,',

.. '" .
.' " ..
'.':',' "
", '.d "
'" ,'.-
: .
,."'
",
.
;.' '.""
--,'
t, ,
.".
.. i' .,',"
'..." .' ;
, .-' , ,
., '."',' ,,'.
<'.
..
'.' ;;r:!L .';;,'
viene valutato il nwnero medio (nominale) di istruzioni per periodo di clock
eseguibile da ciascuna unita e dalla CPU nel suo complesso;
646 Appendice C
C.6 Un confronto tra Ie prestazioni del 601 e 604
Al Paragrafo2.4.1 estato discusso il problema della valutazione e del confronto delle
prestazioni delle CPU. Vogliamo ora applicare i concetti ivi esposti per effettuare un
confronto tra il 601 e il 604.
n confronta in questione risulta semplificato rispetto al caso generale in quanta
Ie due macchine hanna il medesimo repertorio di istruzioni. InaItre, essendo 180 valu-
tazione a parita. ill frequenza di clock, il confronto si riduce alIa sola comparazione del
C
p
] delle due macchine. E' stato detto (efr. 2.4.1) che se non si tiene conto dellJeffet_
to della memoria, CPf puo essere calcolato in base ai Cpi rilevabili dai manuali aItre
che dalle frequenze di esecuzione Xi delle differenti istruzioni.
Nella valutazione che segue, non disponendo di dati misurati direttamente sulle
macchine in operazione, il profilo di esecuzione estato ricavato adattando alI'archi-
tettura PowerPC i profili di riportati in [HP93]6. Da tale adattamento e
risultata Ia distribuzione delle frequenze Xi di TabellaC.I.
n confronto viene eseguito secondo i seguenti criteri:
\ .
\
]
I
I

--
--
.,
-.
-
. -
.,
.-
.. I
-
-<\
-
.. I
_.
.. I
Xid,u = Ipcn,u/ I pcn
Bisogna ora confrontare Xid,u con Xu' Se Xu > Xid,u, allora l'unita. u sotto-
posta a un carico superiore a queUo ideale e si deve concludere che cia determi-
na un rallentamento del flusso delle istruzioni, con conseguente peggioramento delle
prestazioni.
Cia permette di definire, per Ie unita sovraccariche, un fattore di penalizzazione
rapporto fra Xu e Xid,u:
Fpen,u = Xu/Xid,u (con Xu > Xid,u)
Calcolo del fattore di penalizzazione IPCn rappresenta il numero di istruzioni
che sarebbero eseguite per cido di dock dalla macchina se si riuscisse a mantenere
costantemente alimentate Ie singole unita.
Ipotizzando che tale condizione sia verificata, si puo calcolare in riferimento a
essa 1a frequenza media delle istruzioni per ciascuna unita.. Si tratta ovviamente di
una frequenza ideale, che corrisponde a1 massimo della potenzialita della macchina
con il profilo di esecuzione dato. Indicando can Xid,tJ questa frequenza, essa edata
da:
Tabella C.l Dati di partenza per i1 cOnfronto delle 'prestazioni tra 601 e 604. La colonna
Istruzione elenca Ie istruzioni che compaiono nel profilo. La colonna Xi da.la frequenza media
rilevata per ciascuna istruzione (si noti che e stato fatto 100 il numero totale di istruzioni
N
i3t
). Le due co1onne (:Pi riportano il numero di clock per istruzione per Ie due differenti
CPU. Le colonne Xu riportano 1e frequenze medie (le percentuali) di istruzioni eseguite da
ciascuna unita. funzionale UFo Ne1 604 si hanno due unita. SCIU; dunque 1a percentuale 38,5
eda ritenersi ripartita tra 1e due.
,.':; .
'" "

.l' ,
.1.
.. , ,':)i,
<, ..
. .." J . "..
,
-,
-, '.
(''1
, '.', ;
'-,' ..
'-;.':".
,,":." 'J',cI,
"'.,' ',', h.-'
;';'" .r;",
";
:':
-I:
, , ....
,.,
,--:'"
,,':':j",- ,\i
'" .,,;,
,.,,--. "i., :,.;"
,<;t;iV'

:: ?,-,-,'
:l :>
'g
,; .. :'i;.,
".:1;'
8i usa il massimo tra i fattori di penalizzazione per aggiustare il valore di Ipc
della CPU.
viene valutato il carico ideale (la percentuale di istruzioni) che terrebbe occupate
al 100% Ie singole unita.. Tale carico viene confrontato con queUo effettivo sulle
singole unita; vengono individuate Ie unita. sovraccariche e viene valutato il fattore
eli penalizzazione per Ie medesirne.
Ipcn,tJ = xu / L: CpiXi
Calcolo I
pc
nominale Cominciamo col calcolare il numero di istruzioni per ci-
clo di clock che sarebbero eseguite dalle singole unita. con it profilo di esecuzione di
Tabellae.!. Tale numero, indicato con Ipcn,u, edetto Ipc nominale dell'unita. u;
Essendo Xu Ia quota di istruzioni relative alIa generica unita. u ed essendo L: CpiXi
il corrispondente numero di cicli di clock) si ha:
Ipcn = 'LJPCn,u
con 1a somma estesa aile differenti sull'unita. funzionali del processore.
con Ia somma estesa aile sole istruzioni eseguite sull 'unita. u.
Poiche i processori sono superscalari e Ie unita. eli esecuzione lavorano in parallelo,
il numero di istruzioni nominale medio eseguito per ciclo di clock dal processore (Ipcn)
edato da:
61 profili citati in [HP93] 3000 relativi a.l a1cuni programmi campione, che 30no: (a) il ci?mpila.
tore Gee per linguaggio Cj (b) il programma Spice per la simulazione di circuiti analogicij (c) iJ
compilatore di testo TeX; il compilatore Cobol USSteel.
I,
)
I
I
- .
-.
_..

..

.".i"f'" .",
..";', ;"
.. ,.
-
648 Appendice C
La lora somma da luoga a
Dalla tabella C.l si ricava invece che i1 nostro programma ha:
C.6.l Le prestazioni del 601
-
-
-
-
1
\-
-
-
-
)
(
\
r
)-
)-
1-
1-
)-
1
r
]-
)-
)-
)-
4,24/1,57 = 2,7
0,' - 1
lXO,2S+19xO,25 - ,
4,75 -014
2Xl,1S+31Xl+lx1+1Xl - 1
38,5 - 1
29,75+6,5+2,25 - ,
19,25
3,0+16,25 = 1,0
37,0 _ 1
18,25+10,5+4,5+2,0+1,75 - ,
IPCe ,604
IPCn,LSU =
IPCn FPU =
,
fPCn,BPU =
!PCn,MCIU =
I PCn,SCIU
1
" =
Fn,FPU = 4,75/3,2 = 1,47
Fpen,LSU = 37,0/23,6 = 1,57
quindi il fattore di penalizzazione da utilizzare per ricavare [pet. equello relativo
alIa LSU, per cui si ottiene:
fPCn
Fpt.n
L'architettura Power PC 649
Tenuto conto che suI 604 ci sono due unita scm e che quindi OCcorre raddoppiare
il relativo contributo calcolato, il numero medio nominale di istruzioni eseguihili per
cicio di cIock epari a:
C.6.2 Le prestazioni del 604
Utilizzando i dati della tabella C.l per il 604 si ottengono i seguenti valori.
fPCn = 4,24
n programma ideale, per sfruttare al masshno Ie potenzialitA. de1l'hardware,
dovrebbe essere, in questa caso, cos1 strutturato:
X'd,FPU = 0,14/4,24 = 0,032 (3,3%)
X'd,SCW = 2 x 1,00/4,24 =0,472 (47,2%)
X'd.MCW = 0,10/4,24 = 0,024 (2,3%)
X'd,LSU = 1,00/4,24 = 0,236 (23,6%)
X'd.BPU = 1,00/4,24 =0,236 (23,6%)
Dalla tabella C.1 si ricava invece che il nostro programma ha:
XFPU = 4,75%
xSClU = 38,5%
XMClU = 0,5%
XLSU = 37,0%
XBPU = 19,25%
Per il 604 le unita sovraccaricate sono due (LSU e FPU) con fattod di penaliz-
. . .
zaZlOne pan a:
' .. '
, ';.
':"" "'.
.-C:-
.. ",
," .. "' ,'
' .....
'-:::;t:', ..(:

, , ' .' .
, "T
'::,-
::rt-
.-::... I < ,

..' .'.. " ,
': ,,"
;:';'C> I'
'". !;:( .r,
',;,-
",'
,
, .". .".-
... "
i, '::.::' ',>
'.' ,,;:,.
'j . ., '. .\
,,', '. ,.
-
.,
'0.
i:.
,.
,
.,
-

"'. ,
., ..,...... :.,
,..
" ..-:.
...', ....,.-
, . '..

if
J" .. ,."I.
"'>\
:...,....
'. :',C'", ";>"

kr,-'
,"'::;:;,
;},::'.
, ..
- '"
." "',
",'.- 'i"
,
:;,.,;.

".> .>1.
. , ,';.--

'.. li; :z.-::
,- 'X... ,
.'. -:)!.
,'. "" -,,\.,
, ,p" ".'
.- ;1.d;;
- ", ,-,.,..--
".. ii'>,
,>,
'. ,. ..
...
... '. . 'Il
... ",,' ;.i,'
.,..",,. ",'
" ! '
".. "", ,,):I,
" -
, .."' ..
"", .
'':;.
:;f.,

.'C


", " ..
. "".,
",.' :" ls
"" .. '., ::';'
"'''!::<;,. .;t-:;
(6,1%)
(45,4%)
(48,5%)
Ie potenzialita della macchina
- 76,00%
19,25%
4,75%
0,13/2,06 = 0,061
0,94/2,06 = 0,454
1,00/2,06 = 0,485
IPCe
XJU
XBPU
XPPU
Fn = 76,0/45,4 = 1,68
istruzioni di quelle che pub eseguire
,
con un fattore di
4,75 -013
2Xl,75+32xl+lx!+lXl- I
19,25
3,0+16,25 - 1,00
29.7:>+6,5+2.25+2 x0.25+21 18.2:>+10.:>+4 ,5+2.0-1-1. 75 - 0,94
Xid,FPU
Xid,IU
Xid,BPU
fPCn = 2,06
Ipcn,Ju =
IPCn,FPU =
fPCn,BPU =
C
fpcn /
IP .601 = 2,06 1,68 = 1,23
..n
Calcolo di fpc effettivo Posto Fpen = max{Fpen,u}, il numero medio etfettivo di
istruzioni eseguite dal processore per cicIo di clock si ottiene nel modo seguente.:
[PCn
F
plm
Utilizzando i dati della tabella C.1 si ettengono i seguenti valeri di [pqn per Ie
differenti unita del 601.
II programma ideale, per sfruttare al massimo
dovrebbe essere cosl strutturato:
Conseguentemente il numero medio efl"ettivo di istruzioni per cielo di clock che diventa:
Quindi la IU riceve piu
penalizzazione pari a:
..

.".i"f'" .",
..";', ;"
.. ,.
-
648 Appendice C
La lora somma da luoga a
Dalla tabella C.l si ricava invece che i1 nostro programma ha:
C.6.l Le prestazioni del 601
-
-
-
-
1
\-
-
-
-
)
(
\
r
)-
)-
1-
1-
)-
1
r
]-
)-
)-
)-
4,24/1,57 = 2,7
0,' - 1
lXO,2S+19xO,25 - ,
4,75 -014
2Xl,1S+31Xl+lx1+1Xl - 1
38,5 - 1
29,75+6,5+2,25 - ,
19,25
3,0+16,25 = 1,0
37,0 _ 1
18,25+10,5+4,5+2,0+1,75 - ,
IPCe ,604
IPCn,LSU =
IPCn FPU =
,
fPCn,BPU =
!PCn,MCIU =
I PCn,SCIU
1
" =
Fn,FPU = 4,75/3,2 = 1,47
Fpen,LSU = 37,0/23,6 = 1,57
quindi il fattore di penalizzazione da utilizzare per ricavare [pet. equello relativo
alIa LSU, per cui si ottiene:
fPCn
Fpt.n
L'architettura Power PC 649
Tenuto conto che suI 604 ci sono due unita scm e che quindi OCcorre raddoppiare
il relativo contributo calcolato, il numero medio nominale di istruzioni eseguihili per
cicio di cIock epari a:
C.6.2 Le prestazioni del 604
Utilizzando i dati della tabella C.l per il 604 si ottengono i seguenti valori.
fPCn = 4,24
n programma ideale, per sfruttare al masshno Ie potenzialitA. de1l'hardware,
dovrebbe essere, in questa caso, cos1 strutturato:
X'd,FPU = 0,14/4,24 = 0,032 (3,3%)
X'd,SCW = 2 x 1,00/4,24 =0,472 (47,2%)
X'd.MCW = 0,10/4,24 = 0,024 (2,3%)
X'd,LSU = 1,00/4,24 = 0,236 (23,6%)
X'd.BPU = 1,00/4,24 =0,236 (23,6%)
Dalla tabella C.1 si ricava invece che il nostro programma ha:
XFPU = 4,75%
xSClU = 38,5%
XMClU = 0,5%
XLSU = 37,0%
XBPU = 19,25%
Per il 604 le unita sovraccaricate sono due (LSU e FPU) con fattod di penaliz-
. . .
zaZlOne pan a:
' .. '
, ';.
':"" "'.
.-C:-
.. ",
," .. "' ,'
' .....
'-:::;t:', ..(:

, , ' .' .
, "T
'::,-
::rt-
.-::... I < ,

..' .'.. " ,
': ,,"
;:';'C> I'
'". !;:( .r,
',;,-
",'
,
, .". .".-
... "
i, '::.::' ',>
'.' ,,;:,.
'j . ., '. .\
,,', '. ,.
-
.,
'0.
i:.
,.
,
.,
-

"'. ,
., ..,...... :.,
,..
" ..-:.
...', ....,.-
, . '..

if
J" .. ,."I.
"'>\
:...,....
'. :',C'", ";>"

kr,-'
,"'::;:;,
;},::'.
, ..
- '"
." "',
",'.- 'i"
,
:;,.,;.

".> .>1.
. , ,';.--

'.. li; :z.-::
,- 'X... ,
.'. -:)!.
,'. "" -,,\.,
, ,p" ".'
.- ;1.d;;
- ", ,-,.,..--
".. ii'>,
,>,
'. ,. ..
...
... '. . 'Il
... ",,' ;.i,'
.,..",,. ",'
" ! '
".. "", ,,):I,
" -
, .."' ..
"", .
'':;.
:;f.,

.'C


", " ..
. "".,
",.' :" ls
"" .. '., ::';'
"'''!::<;,. .;t-:;
(6,1%)
(45,4%)
(48,5%)
Ie potenzialita della macchina
- 76,00%
19,25%
4,75%
0,13/2,06 = 0,061
0,94/2,06 = 0,454
1,00/2,06 = 0,485
IPCe
XJU
XBPU
XPPU
Fn = 76,0/45,4 = 1,68
istruzioni di quelle che pub eseguire
,
con un fattore di
4,75 -013
2Xl,75+32xl+lx!+lXl- I
19,25
3,0+16,25 - 1,00
29.7:>+6,5+2.25+2 x0.25+21 18.2:>+10.:>+4 ,5+2.0-1-1. 75 - 0,94
Xid,FPU
Xid,IU
Xid,BPU
fPCn = 2,06
Ipcn,Ju =
IPCn,FPU =
fPCn,BPU =
C
fpcn /
IP .601 = 2,06 1,68 = 1,23
..n
Calcolo di fpc effettivo Posto Fpen = max{Fpen,u}, il numero medio etfettivo di
istruzioni eseguite dal processore per cicIo di clock si ottiene nel modo seguente.:
[PCn
F
plm
Utilizzando i dati della tabella C.1 si ettengono i seguenti valeri di [pqn per Ie
differenti unita del 601.
II programma ideale, per sfruttare al massimo
dovrebbe essere cosl strutturato:
Conseguentemente il numero medio efl"ettivo di istruzioni per cielo di clock che diventa:
Quindi la IU riceve piu
penalizzazione pari a:
I 1
"1
.. (
.. \
1Preferiamo usare questo tennine piuttosto che ricorrere a un improponibile "linguaggio
assemblativo
n
.
2I1 iettore non si senta defraudato. I1linguaggio assembler dei modelli successivi esostanzia.lmente
identico, salvo it fatto che, a partire dal 386, i registri a 32 bit vengono designati con un simbolo
che inizia con 130 lettera E (per esempio EAX). lnoltre, con la c"rescita della capa.cita. dei processori
si sana aggiunte svariate istruzioni. Si tratta di complicazioni pTatiche, senza Ue8Suoa differeoza
concettuale.
.
D
II linguaggio assembler
n Iinguaggio assemble,-J ela forma pili rudimentale di linguaggio di programmazione,
in quanto permette solo poco pili che 1a scrittura in forma mnemonica delle istruzio-
ni di macchina. Sinteticamente, il supporto offerto al. programmatore dal Iinguaggio
assembler si riduce a consentire l'impiego di "nomi simbolici" in luogo di indirizzi,
di quantita numeriche 0 testuali. In pratica non si tratta di un vero linguaggio di
prograrnmazione, in quanto non ne possiede Ie caratteristiche fondarnentali: l'orien-
tamento verso 1a soluzione di classi di problemi e l'indipendenza dall'architettura
della macchina su cui opera. A mareate questa sostanziale differenza, il programma
che traduce da teste assembler a coelice di macchina viene detto assemblatore e non
compilatore.
Per ragioni di concretezza e in sintonia con quanto esposte in altre parti di questa
libro, si fa riferimento al linguaggio assembler per l'architettura x86, limitandoci
all'assembler per 1a CPU 8086/88
2
In particolare ci si riferisce alIa versione 4.0
dell'assemblatore Microsoft. Nel corso del teste l'assemblatore verra. spesso designato
eon la sigla MASM (Macro assemblatore). Di questo linguaggio assembler adotteremo
la notazione e Ie convenzioni.
L'analisi approfondita dell' assembler non rientra negli scopi di questa libra. Si
puo fare riferirnento a testi specializzati [Yeu84], [Tho86L oltre che ai manuali dei
produttori. n lettore e comunque invitato a sperimentare direttamente Ie proble-
matiche relative alIa programmazione assembler; da questa sperimentazione ricavera
una approfondita conoscenza dei dettagli dell'architettura di macchina, conoscenza
difficilmente acquisibile per altra via.
Un 'avvertimento: assembler 8086 rifiette necessariamente l'architettura della
macchina cui e destinato, per cui risulta impossibile prescindere totalmente dagli
aspetti specifici che 180 caratterizzano. In particolare) la segmentazione della memo-
.,

".. ,
0
.'
.

"'" -
., "
...
'-
\'.
'1 .'
. "
.'
).;.
....\.

".
t. '
.. ,. :1;.
,
a.', ',_ /,.

..',
,",
..
I
,:,
i"
\.
,;';'
.
..-....
,. , 1..,'
",..'
:>,,'0; ;i\f:i*.
.... .;
.... I;. ,"'
" I",
'. "oJ..
,.,
, .: '
..\'
.' '01.", ..

I
' .
.. ".,
..- ,,'
I "'.
t
':i
.
.: \::

.,
',.j.."
...., """,
..
. ,:
\ ':
,;"
':,;:;' ,' ..
< 1 .....
" i" '
.
..' " -
"-' ", , ,".
,', .', .
' . <' '"
"",/,' ':. r

.., . '.
, " , . .,
.\
:ii"
.....,.

.'. ".,
". '.
'v
'.,':'
..
i
..
""'1'"
':?::,'
.... ,,:
: "
,
."",
.,:. (
,
': ' :i.'.'

rJP\J 601
P'fuu
[pen
Xid... x.
F".
[PCn
Xid "
X. to"pen
0,13 6,1'70

0,14 3,3'7'0 4,75% 1,44
sCru,., 0,94 45,4'10 7 , 0% 1,68 100 47,2'10 38,5 0
=&U
1,00 48,5% 19,25% M 0,10. 2,3% 0,5 0

1,00 23,6
0
37,0'70 1,58
[pc. I I
1,00 23,6 0 19,25'10
lPCn 1 4,24 1
I
rft'C; [PC.TF'p<. -1,23 IPl/
e
- pcnTF;en::::: 2,7
Tabella C.2 IPC delle varie unita e totale
Se ora si fa il rapporto fra. Ie prestazioni si ottiene:
IPC
e
,604 2,7 '"
P'O'j'OI = [PC = 1 23 = 2,2
e,601 I
Ie prestazioni del 604 risultana pili che dapPle rispetto a queUe del 601. In FiguraC.3
10 searto sembra maggiore, ma. si deve tener conto che 1a precedente valutazione ea
parita di frequenza di clock.
Ovviamente, il risultato precedente non ha valore assoluto, rna solo in riferimento
a.i dati utilizzati nel confronto. Avendo il nostro programma una grande percentuale
(76%) d.i istruzioni intere, esso carica eccessivamente tale unita nel 601, mentre nel
604 queste istruzioni vengono a essere suddivise fra 4 diverse (Ie due SeIDl la
Mcm e la LSU) per cui chiaramente il 604 riesee a eseguire meglio tale programma.
Se invece gil stessi calcoli vengono ripetuti con programmi contenenti una grande
percentuale d.i istruzioni floating point 0 di branch> Ie prestazioni dei due processori
tendono a avvicinaTsi visto che entrambi hanno unlunica unita. floating point (FPU)
e un'unica unita di branch (BPU).
Nella tabella C.2 vengono riassunti i risultati ottenuti per i due processori.
C.6.3 Prestazioni relative
650 Appendice C
\
I
I
I
I
I

--
< -
"
"

-.
..
--
-' \
--
., \
--
--
<' \
l
j
I 1
"1
.. (
.. \
1Preferiamo usare questo tennine piuttosto che ricorrere a un improponibile "linguaggio
assemblativo
n
.
2I1 iettore non si senta defraudato. I1linguaggio assembler dei modelli successivi esostanzia.lmente
identico, salvo it fatto che, a partire dal 386, i registri a 32 bit vengono designati con un simbolo
che inizia con 130 lettera E (per esempio EAX). lnoltre, con la c"rescita della capa.cita. dei processori
si sana aggiunte svariate istruzioni. Si tratta di complicazioni pTatiche, senza Ue8Suoa differeoza
concettuale.
.
D
II linguaggio assembler
n Iinguaggio assemble,-J ela forma pili rudimentale di linguaggio di programmazione,
in quanto permette solo poco pili che 1a scrittura in forma mnemonica delle istruzio-
ni di macchina. Sinteticamente, il supporto offerto al. programmatore dal Iinguaggio
assembler si riduce a consentire l'impiego di "nomi simbolici" in luogo di indirizzi,
di quantita numeriche 0 testuali. In pratica non si tratta di un vero linguaggio di
prograrnmazione, in quanto non ne possiede Ie caratteristiche fondarnentali: l'orien-
tamento verso 1a soluzione di classi di problemi e l'indipendenza dall'architettura
della macchina su cui opera. A mareate questa sostanziale differenza, il programma
che traduce da teste assembler a coelice di macchina viene detto assemblatore e non
compilatore.
Per ragioni di concretezza e in sintonia con quanto esposte in altre parti di questa
libro, si fa riferimento al linguaggio assembler per l'architettura x86, limitandoci
all'assembler per 1a CPU 8086/88
2
In particolare ci si riferisce alIa versione 4.0
dell'assemblatore Microsoft. Nel corso del teste l'assemblatore verra. spesso designato
eon la sigla MASM (Macro assemblatore). Di questo linguaggio assembler adotteremo
la notazione e Ie convenzioni.
L'analisi approfondita dell' assembler non rientra negli scopi di questa libra. Si
puo fare riferirnento a testi specializzati [Yeu84], [Tho86L oltre che ai manuali dei
produttori. n lettore e comunque invitato a sperimentare direttamente Ie proble-
matiche relative alIa programmazione assembler; da questa sperimentazione ricavera
una approfondita conoscenza dei dettagli dell'architettura di macchina, conoscenza
difficilmente acquisibile per altra via.
Un 'avvertimento: assembler 8086 rifiette necessariamente l'architettura della
macchina cui e destinato, per cui risulta impossibile prescindere totalmente dagli
aspetti specifici che 180 caratterizzano. In particolare) la segmentazione della memo-
.,

".. ,
0
.'
.

"'" -
., "
...
'-
\'.
'1 .'
. "
.'
).;.
....\.

".
t. '
.. ,. :1;.
,
a.', ',_ /,.

..',
,",
..
I
,:,
i"
\.
,;';'
.
..-....
,. , 1..,'
",..'
:>,,'0; ;i\f:i*.
.... .;
.... I;. ,"'
" I",
'. "oJ..
,.,
, .: '
..\'
.' '01.", ..

I
' .
.. ".,
..- ,,'
I "'.
t
':i
.
.: \::

.,
',.j.."
...., """,
..
. ,:
\ ':
,;"
':,;:;' ,' ..
< 1 .....
" i" '
.
..' " -
"-' ", , ,".
,', .', .
' . <' '"
"",/,' ':. r

.., . '.
, " , . .,
.\
:ii"
.....,.

.'. ".,
". '.
'v
'.,':'
..
i
..
""'1'"
':?::,'
.... ,,:
: "
,
."",
.,:. (
,
': ' :i.'.'

rJP\J 601
P'fuu
[pen
Xid... x.
F".
[PCn
Xid "
X. to"pen
0,13 6,1'70

0,14 3,3'7'0 4,75% 1,44
sCru,., 0,94 45,4'10 7 , 0% 1,68 100 47,2'10 38,5 0
=&U
1,00 48,5% 19,25% M 0,10. 2,3% 0,5 0

1,00 23,6
0
37,0'70 1,58
[pc. I I
1,00 23,6 0 19,25'10
lPCn 1 4,24 1
I
rft'C; [PC.TF'p<. -1,23 IPl/
e
- pcnTF;en::::: 2,7
Tabella C.2 IPC delle varie unita e totale
Se ora si fa il rapporto fra. Ie prestazioni si ottiene:
IPC
e
,604 2,7 '"
P'O'j'OI = [PC = 1 23 = 2,2
e,601 I
Ie prestazioni del 604 risultana pili che dapPle rispetto a queUe del 601. In FiguraC.3
10 searto sembra maggiore, ma. si deve tener conto che 1a precedente valutazione ea
parita di frequenza di clock.
Ovviamente, il risultato precedente non ha valore assoluto, rna solo in riferimento
a.i dati utilizzati nel confronto. Avendo il nostro programma una grande percentuale
(76%) d.i istruzioni intere, esso carica eccessivamente tale unita nel 601, mentre nel
604 queste istruzioni vengono a essere suddivise fra 4 diverse (Ie due SeIDl la
Mcm e la LSU) per cui chiaramente il 604 riesee a eseguire meglio tale programma.
Se invece gil stessi calcoli vengono ripetuti con programmi contenenti una grande
percentuale d.i istruzioni floating point 0 di branch> Ie prestazioni dei due processori
tendono a avvicinaTsi visto che entrambi hanno unlunica unita. floating point (FPU)
e un'unica unita di branch (BPU).
Nella tabella C.2 vengono riassunti i risultati ottenuti per i due processori.
C.6.3 Prestazioni relative
650 Appendice C
\
I
I
I
I
I

--
< -
"
"

-.
..
--
-' \
--
., \
--
--
<' \
l
j
..
-
\
/-
1-
1
\-
)-
\
1-
)-
]-
)-
1-
1-
)-
653
Mappa
di
Memoria
Lisle
'"
"
+
GESTORE
LlBRERIE
"
\.
y
I
Programma
Eseguibile
I
Librerie
1l1inguaggio assembler (8086)
Moduli
Sorgente
1
ASSEMBLATORE
y
COLLEGATORE
Moduli
Oggetto
Figura D.l Generazione di un programma. eseguibile a. partire da piu moduli sorgente,
Satta DOS del PC i file sorgente assembler hanno estensione standard . ASK; i file oggetto
.OBJ; i file di libreria. . LIB; i file eseguibili . EXE 0 . COM.
"

"j':
,
, .i, t">
..
" '"
':j' '

, " \')i' "
'. l'
" . '.
", ;1'

,',
.'
\' ,

"
" I ." ,,:,
". '
,
c' '.
.. "
.. '".'

", .
' ..
"
:", \.,
. , 'i:
, ....... J 'f.'
.. ',' .. . .
"-" . ..
" .
.','i','''' ,
,,!:l'P!,
.-,",'
-': ' .
,,<1:-;;.',-
, .'" .. ,
:.
-.;; (
,
Appendice D
il callegamento.
a) Ia traduzione;
b)
3Bisogna dire che, benche Ie versioni attuali dell' assemblatore pre!lentino costrutti che permettono
di !lemplificare alquanto il trattamento della !legrneotaziooe, il programmatore cleve comunque tenerne
canto. Per quest.a ragione, si preferisce dare uoa descrizione che tenga compiutamente co.nto del
problema che essa rappresenta. ,
4Per esempio: a meno di impiegare l'adeguato operatore, l'assemblatore segnala errore se si tenta
di caricare una q1;lantita. di 16 bit in MO registro di 8 bit.
5Nel case del DOS del PC, il caricatore fa parte del !listema operativo e viene invocato
indirett-amente quando viene battuto come comando il nome di un file eseguibile,
" .
.." ..." ,,'-.'
. ,- :.

'L ,,' ,\' ",
, , '(" ,,'.
",. ":",.:,, :"r'
f:: ,it', "
,', .': :';;'
' i, " .i
.:,;
Di norma un modulo sorgente corrisponde a un unieo file sorgente. La traduzione
da testo assembler a modulo oggetto avviene attraverso il programma assemblatore. {'i:',',"
La traduzlone di un file da luogo a un nuovo file, i1 file (0 modulo) oggetto. In Fi- "<1:;:'
. " ),' ,,'!"'.
guraD.l si assume che i moduli sorgente siano tutti scritti in assembler, E possibile, ,:\',.:, ,Tr;:
che partedei moduli sorgente ai.ano scritti in un linguaggio di alto livelto. In que- . ;':" ,,'.'::: ,i:'.'
ste case i1 traduttore cleve essere il relative campilatore. Naturalmente eompilatori
e assemblatore devono produrre codice congruente, rispettando alcuni standard'di ,',:,
. . fr d I' , "'1'1':"
cornumcazlOne a mo u 1. . ''',.,:'''' '''OJ 'A',
I vari file oggetto vengono poi eollegati tramite ii programma collegatore (linker)," '. ..
per fonnare un uniee file eseguibile. La FiguraD.l moatra che il collegamento puo . j,;
,." :;.-
prevedere l'impiego dl librerie. Queste possono essere standard di sistema
1

costrui.te tramite un? speciale (Librarian) di gestione delle Ybrerie
a partire da moduli oggetto prodottl dal programmatore stesso. Dl norma il file.; , ....
eseguibile ein una forma non definitiva, nel sensa che esso ha un indirizzo di partenza d;C
convenzionale. '. :' '/ ':';,,',',: ','
, " ,.. , " ,,'
Per pater essere eseguito il programma deve eSSere caricato. in memoria. Que:..'
sta e una funzione del C':Uicatore (Loader), un programma di sistema che provvede .. ,/;, 'r:; 1:;
a rilocarlo", assegnandogli un oppbrtuno indirizzo fisieo di partenza e apportari-" '.,\,:;',:::';,::;;,
do Ie modifiche che questa passaggio impone
s
. n caricatore ha anche il compito gi ':'
inizializzare ii Program Counter, 10 Stack e quant1altro serve all'avvio del programma_. : ':
:, .
" " ',.',
"
',', ' .. ' .. ' "', --.,,'
, , ",', 'r'
" '." ' '.. I"
., . , : ,,' ,
'" , ' I"
" '.' .'
",' ".\,'
" ..' '. '"
" .. '
, ,., :li-:, ;,
, .
, if.t..
':'.
,}-
." -, , .
. ,
....
".
ria introduce complicazioni di cui non c'e traccia nelle architetture non segrnentate
3
.
Inoltre, Passernbler di cui si parla presenta alcune caratteristiche che 10
no ai linguaggi di alto Hvella. Per esempio: introduce una differenziazione tra eti-
chette. variabili e costanti, differenziazione non presente in assembler convenzionali.
L1assemblatore opera un minime di centrella tra i Utipi
1l4
.
D.l Generalita
In FiguraD.l viene schematizzato Hprocesso di generazione di un programma esegui-
bile a partire dai moduli sorgente. Questo processo si compone di due fasi:
652
..
-
\
/-
1-
1
\-
)-
\
1-
)-
]-
)-
1-
1-
)-
653
Mappa
di
Memoria
Lisle
'"
"
+
GESTORE
LlBRERIE
"
\.
y
I
Programma
Eseguibile
I
Librerie
1l1inguaggio assembler (8086)
Moduli
Sorgente
1
ASSEMBLATORE
y
COLLEGATORE
Moduli
Oggetto
Figura D.l Generazione di un programma. eseguibile a. partire da piu moduli sorgente,
Satta DOS del PC i file sorgente assembler hanno estensione standard . ASK; i file oggetto
.OBJ; i file di libreria. . LIB; i file eseguibili . EXE 0 . COM.
"

"j':
,
, .i, t">
..
" '"
':j' '

, " \')i' "
'. l'
" . '.
", ;1'

,',
.'
\'
,

"
" I ." ,,:,
". '
,
c' '.
.. "
.. '".'

", .
' ..
"
:", \.,
. , 'i:
, ....... J 'f.'
.. ',' .. . .
"-" .
..
" .
.','i','''' ,
,,!:l'P!,
.-,",'
-': ' .
,,<1:-;;.',-
, .'" .. ,
:.
-.;; (
,
Appendice D
il callegamento.
a) Ia traduzione;
b)
3Bisogna dire che, benche Ie versioni attuali dell' assemblatore pre!lentino costrutti che permettono
di !lemplificare alquanto il trattamento della !legrneotaziooe, il programmatore cleve comunque tenerne
canto. Per quest.a ragione, si preferisce dare uoa descrizione che tenga compiutamente co.nto del
problema che essa rappresenta. ,
4Per esempio: a meno di impiegare l'adeguato operatore, l'assemblatore segnala errore se si tenta
di caricare una q1;lantita. di 16 bit in MO registro di 8 bit.
5Nel case del DOS del PC, il caricatore fa parte del !listema operativo e viene invocato
indirett-amente quando viene battuto come comando il nome di un file eseguibile,
" .
.." ..." ,,'-.'
. ,- :.

'L ,,' ,\' ",
, , '(" ,,'.
",. ":",.:,, :"r'
f:: ,it', "
,', .': :';;'
' i, " .i
.:,;
Di norma un modulo sorgente corrisponde a un unieo file sorgente. La traduzione
da testo assembler a modulo oggetto avviene attraverso il programma assemblatore. {'i:',',"
La traduzlone di un file da luogo a un nuovo file, i1 file (0 modulo) oggetto. In Fi- "<1:;:'
. " ),' ,,'!"'.
guraD.l si assume che i moduli sorgente siano tutti scritti in assembler, E possibile, ,:\',.:, ,Tr;:
che partedei moduli sorgente ai.ano scritti in un linguaggio di alto livelto. In que- . ;':" ,,'.'::: ,i:'.'
ste case i1 traduttore cleve essere il relative campilatore. Naturalmente eompilatori
e assemblatore devono produrre codice congruente, rispettando alcuni standard'di ,',:,
. . fr d I' , "'1'1':"
cornumcazlOne a mo u 1. . ''',.,:'''' '''OJ 'A',
I vari file oggetto vengono poi eollegati tramite ii programma collegatore (linker)," '. ..
per fonnare un uniee file eseguibile. La FiguraD.l moatra che il collegamento puo . j,;
,." :;.-
prevedere l'impiego dl librerie. Queste possono essere standard di sistema
1

costrui.te tramite un? speciale (Librarian) di gestione delle Ybrerie
a partire da moduli oggetto prodottl dal programmatore stesso. Dl norma il file.; , ....
eseguibile ein una forma non definitiva, nel sensa che esso ha un indirizzo di partenza d;C
convenzionale. '. :' '/ ':';,,',',: ','
, " ,.. , " ,,'
Per pater essere eseguito il programma deve eSSere caricato. in memoria. Que:..'
sta e una funzione del C':Uicatore (Loader), un programma di sistema che provvede .. ,/;, 'r:; 1:;
a rilocarlo", assegnandogli un oppbrtuno indirizzo fisieo di partenza e apportari-" '.,\,:;',:::';,::;;,
do Ie modifiche che questa passaggio impone
s
. n caricatore ha anche il compito gi ':'
inizializzare ii Program Counter, 10 Stack e quant1altro serve all'avvio del programma_. : ':
:, .
" " ',.',
"
',', ' .. ' .. ' "', --.,,'
, , ",', 'r'
" '." ' '.. I"
., . , : ,,' ,
'" , ' I"
" '.' .'
",' ".\,'
" ..' '. '"
" .. '
, ,., :li-:, ;,
, .
, if.t..
':'.
,}-
." -,
, .
. ,
....
".
ria introduce complicazioni di cui non c'e traccia nelle architetture non segrnentate
3
.
Inoltre, Passernbler di cui si parla presenta alcune caratteristiche che 10
no ai linguaggi di alto Hvella. Per esempio: introduce una differenziazione tra eti-
chette. variabili e costanti, differenziazione non presente in assembler convenzionali.
L1assemblatore opera un minime di centrella tra i Utipi
1l4
.
D.l Generalita
In FiguraD.l viene schematizzato Hprocesso di generazione di un programma esegui-
bile a partire dai moduli sorgente. Questo processo si compone di due fasi:
652
., ;
-,>
655
Illinguaggio assembler (8086)
7
o
DB
OW
MOV AX, BX
MOV AX, VAR
VAR
;alloca spazio per un byte
;alloca spazio per una parola inizializzata a 0,
;alla quale viene implicitamente associato
; il nome VAR
Si noti che l'ultimo statement definisce una variabile, di una parola, di nome VAR,
inizializzata a. zero.
MASM prevede anche la definizione esplicita dei simbeli, Per esempio Ie due
scritture:
; Copia BX in AX
Carica AX con il contenuto della ..
.. posizione di VAR
producono differenti codici di macchina, inoltre la seconda istruzione viene codificata
in un maggior numero di byte della prima
9
.
Una direttiva costituisce un comando per l'assemblatore. Si hanna direttive
di definizione dati, di definizione di simboli, di definizione di segmenti, di cantrollo
dell'assemblatore. I seguenti sono esempio di definizione di dati:
10 mnemonico di un'istruzione di macchina;
Codice di operazione ncampo OP puo contenere:
Diversamente cia altri assemblatori , dove il campo corrispondente a Nome viene
considerato sempre e comunque un'etichetta, il Nome rappresenta. l'identificatore di
un "oggetto" 0 "simbolo" I e serve per fare riferimento all'oggetto stesso. Un simbolo
e un'entita. costituita da un Nome, da un Tipo e da un insieme di Attributi. Esempi
di simboli MASM sono le variabili, Ie etichette (LabeQ, le costa.nti numeriche e Ie
stringhe, i nomi di procedura, di segmenta, eli macro ecc.
n tipe del simbele definisce ruse cbe del simboJp si puo fare all'interne del pro-
gramma. La n-pia di valori assunti dagli attributi di un simbolo verdi jndicata come
Valore del simbolo stesso. Per esempio se un simbolo e del tipo variabile, i valori
assunti dai suoi attributi sono l'indirizzo della prima cella di occupata dalla
variabile) ii nome del segrnento cui appartiene, se 130 variabile eun byte, una parola,
una doppia par-ola ecc. Un simbolo definito come nome di una stringa assume come
valore sequenza codificata dei caratteri presente nella definizione:
1
Dei simboli definiti da! programmatore si parla nel Paragrafo D.3.

FINE LABEL NEAR


RET
9Per queste problematiche si veda.l'Appendice dedica.ta all'architettura. 8086.
una direttiva per l'assemblatore.
Nel primo caso j'assemblatore genera il coclice di rnacchina, tenendo conto del
nuto del campo degli operandi. A uno mnemonico corrisponde in genere pili di una
codifica binaria, in dipendeoza dagli operandi specificati. Pel' .esempio 10 mnemanico
MOV pub dar Juogo a una molteplicita. di codici binari. Le due istruzioni:
,: .".'
'<':'"
1
'-: .
.. '
"
_t',l-_",
, ",: ,j,;;
.. '1 '
.' ,-,',',
.'. ,
.c ;'. ;1:"
,t
.,
,-' .
. .\ .
.'

, '
. f
,
';<>
." _.
)'L.
.,- "
:. ,,:',;,
.. ,;
, "",'
- ,."..
:f,'
'''',
:;
1,

", ,,:,
. ;"'.. rl'",';
" .,,, '" ..
"", !!'ii""
:! ;.:;;;;',i ;1:,
:{.' .
;
,., ,
'.' .' ',;' ..
'-'-.
'.;'..
'.,' . _..
..... ,.
.' - .. ,
- , ...
. . - .
-" ?",'
, :., '... "
"",
,t
.l' ..
:,c
,: "
,I' .
, ..
.".:1 ...
i:
I
'"
,- - .... ,
" :;. .
.',
,
" ...
" ,.-:,
-".
"
,
J _j
-. ., "
'. ;l,-
"
..
,.,..
- -"
,.... 1.-"
,
. " .. ,',
" ," f':;" .,
, I- .- ..
.'" .--',
.
.'
,', I'"
.,
> '. "
,".
,
[;Commento] [Operandi] [Codice operazioneJ
Appendice D
[Nome]
D.l.I Sintassi
654
COMMENT Delimitatore
Testo
Delimitatore [statement]
j dove Delimitatore e un qualunque carattere ASCII che non appare a11'interno di
\ Testo. Esso funge da coppia di parentesi raccruudenti il commento.
I _=: ---,-_---,-_---,----,-_
'I GDiversamente da molti assembla.tori del passato, quello Intellascia una certa Iiberta. nello scrivere
il testo del programma.. Per esempio: non enecessario che i1 [Nome] inizi nella prima colonna della
riga. Nel seguito, per motivi di leggibilita, adotteremo Ia. convenzione di scrivere il nome sempre a.
partire dalla. prima. colonna deUa riga. Se in prima colonna. c't un carattere di spazio si deve assumere
Iche 10 mnemonico che segue eun codice di operazione.
I
, 7 Nell3, programmazione a.ssembler i commenti sana importanti almena quanta le istruzioni, poiche
il livello di autodocumentaaione dellinguaggio epressoche nullo.
sNon fa differenza. tra maiuscole e minuscole.
I
N omi ncampo Nome, quando epresente, deve contenere un identificatore scelto dal
progranunatore: una qualunque coDcatenazione di lettere, cifre e caratteri speciali, che
inizi con una lettera 0 COD uno dei caratteri "-", "?", "$" 0 Se nOD e specificato
diversa.mente tramite apposita direttiva, non c'e differenza tra caratteri rnaiuscoli 0
I
minuscoli. Sono petcio nomi corretti: TABLE. ON. Off, DiSpLaY, _JOB1, ARRAY_l.
Non 10 sono lARRAYe K=2; nel prin;lO caso, infatti, il nome inizia con una cifra "I" i nel
secondo si utilizza un carattere non consentito. Posto che sia sintatticamente corretto,
un nome Don deve coincidere con alcune delle parole chiave dellinguaggio (si veda piu
I
avanti), oode ambiguit.a.. 8i teoga inoltre presente che Ie parole chiave sono
comunque case insensitive8, perch) un nome deve sempre essere lessicalmente diverso
da esse.
D campo del Codice operazione, normalmente indicato come campo OP, deter-
mina l'interpretazione degli altri campi
6
.
\
I
\
Comrnenti Prima di procedere emeglio parlare dei commenti
7
. Dcampo del corn-
mento deve necessariamente iniziare con II; ". Se il primo carattere di una linea -
I
esclusi eventuali caratteri di spaziatura - eil carattere "; II , allora tutta la linea viene
considerata come un commento. C'e un ultimo modo per introdurre un cornmento:
usare il codice di operazione COMMENT, con il quale epossibile aprire un commento
che occupa un numero arbitrario di linee, secondo la seguente sintassi:
Un. testa assembler e fatto eli linee. Ogni linea e una stringa di caratteri ASCII,
terminante con la combinazione Camage Retu.rn-Line Feed (CR-LF). Se si escludono
\
i commenti multilinea) ogni linea rappresenta uno statement.
La sintassi di un statement prevede i seguenti 4 separati da
almena una spaziatura (le'parentesi quadre - qui e nel seguito - racchiudono elementi
opziona.ti):
\
I
., ;
-,>
655
Illinguaggio assembler (8086)
7
o
DB
OW
MOV AX, BX
MOV AX, VAR
VAR
;alloca spazio per un byte
;alloca spazio per una parola inizializzata a 0,
;alla quale viene implicitamente associato
; il nome VAR
Si noti che l'ultimo statement definisce una variabile, di una parola, di nome VAR,
inizializzata a. zero.
MASM prevede anche la definizione esplicita dei simbeli, Per esempio Ie due
scritture:
; Copia BX in AX
Carica AX con il contenuto della ..
.. posizione di VAR
producono differenti codici di macchina, inoltre la seconda istruzione viene codificata
in un maggior numero di byte della prima
9
.
Una direttiva costituisce un comando per l'assemblatore. Si hanna direttive
di definizione dati, di definizione di simboli, di definizione di segmenti, di cantrollo
dell'assemblatore. I seguenti sono esempio di definizione di dati:
10 mnemonico di un'istruzione di macchina;
Codice di operazione ncampo OP puo contenere:
Diversamente cia altri assemblatori , dove il campo corrispondente a Nome viene
considerato sempre e comunque un'etichetta, il Nome rappresenta. l'identificatore di
un "oggetto" 0 "simbolo" I e serve per fare riferimento all'oggetto stesso. Un simbolo
e un'entita. costituita da un Nome, da un Tipo e da un insieme di Attributi. Esempi
di simboli MASM sono le variabili, Ie etichette (LabeQ, le costa.nti numeriche e Ie
stringhe, i nomi di procedura, di segmenta, eli macro ecc.
n tipe del simbele definisce ruse cbe del simboJp si puo fare all'interne del pro-
gramma. La n-pia di valori assunti dagli attributi di un simbolo verdi jndicata come
Valore del simbolo stesso. Per esempio se un simbolo e del tipo variabile, i valori
assunti dai suoi attributi sono l'indirizzo della prima cella di occupata dalla
variabile) ii nome del segrnento cui appartiene, se 130 variabile eun byte, una parola,
una doppia par-ola ecc. Un simbolo definito come nome di una stringa assume come
valore sequenza codificata dei caratteri presente nella definizione:
1
Dei simboli definiti da! programmatore si parla nel Paragrafo D.3.

FINE LABEL NEAR


RET
9Per queste problematiche si veda.l'Appendice dedica.ta all'architettura. 8086.
una direttiva per l'assemblatore.
Nel primo caso j'assemblatore genera il coclice di rnacchina, tenendo conto del
nuto del campo degli operandi. A uno mnemonico corrisponde in genere pili di una
codifica binaria, in dipendeoza dagli operandi specificati. Pel' .esempio 10 mnemanico
MOV pub dar Juogo a una molteplicita. di codici binari. Le due istruzioni:
,: .".'
'<':'"
1
'-: .
.. '
"
_t',l-_",
, ",: ,j,;;
.. '1 '
.' ,-,',',
.'. ,
.c ;'. ;1:"
,t
.,
,-' .
. .\ .
.'

, '
. f
,
';<>
." _.
)'L.
.,- "
:. ,,:',;,
.. ,;
, "",'
- ,."..
:f,'
'''',
:;
1,

", ,,:,
. ;"'.. rl'",';
" .,,, '" ..
"", !!'ii""
:! ;.:;;;;',i ;1:,
:{.' .
;
,., ,
'.' .' ',;' ..
'-'-.
'.;'..
'.,' . _..
..... ,.
.' - .. ,
- , ...
. . - .
-" ?",'
, :., '... "
"",
,t
.l' ..
:,c
,: "
,I' .
, ..
.".:1 ...
i:
I
'"
,- - .... ,
" :;. .
.',
,
" ...
" ,.-:,
-".
"
,
J _j
-. ., "
'. ;l,-
"
..
,.,..
- -"
,.... 1.-"
,
. " .. ,',
" ," f':;" .,
, I- .- ..
.'" .--',
.
.'
,', I'"
.,
> '. "
,".
,
[;Commento] [Operandi] [Codice operazioneJ
Appendice D
[Nome]
D.l.I Sintassi
654
COMMENT Delimitatore
Testo
Delimitatore [statement]
j dove Delimitatore e un qualunque carattere ASCII che non appare a11'interno di
\ Testo. Esso funge da coppia di parentesi raccruudenti il commento.
I _=: ---,-_---,-_---,----,-_
'I GDiversamente da molti assembla.tori del passato, quello Intellascia una certa Iiberta. nello scrivere
il testo del programma.. Per esempio: non enecessario che i1 [Nome] inizi nella prima colonna della
riga. Nel seguito, per motivi di leggibilita, adotteremo Ia. convenzione di scrivere il nome sempre a.
partire dalla. prima. colonna deUa riga. Se in prima colonna. c't un carattere di spazio si deve assumere
Iche 10 mnemonico che segue eun codice di operazione.
I
, 7 Nell3, programmazione a.ssembler i commenti sana importanti almena quanta le istruzioni, poiche
il livello di autodocumentaaione dellinguaggio epressoche nullo.
sNon fa differenza. tra maiuscole e minuscole.
I
N omi ncampo Nome, quando epresente, deve contenere un identificatore scelto dal
progranunatore: una qualunque coDcatenazione di lettere, cifre e caratteri speciali, che
inizi con una lettera 0 COD uno dei caratteri "-", "?", "$" 0 Se nOD e specificato
diversa.mente tramite apposita direttiva, non c'e differenza tra caratteri rnaiuscoli 0
I
minuscoli. Sono petcio nomi corretti: TABLE. ON. Off, DiSpLaY, _JOB1, ARRAY_l.
Non 10 sono lARRAYe K=2; nel prin;lO caso, infatti, il nome inizia con una cifra "I" i nel
secondo si utilizza un carattere non consentito. Posto che sia sintatticamente corretto,
un nome Don deve coincidere con alcune delle parole chiave dellinguaggio (si veda piu
I
avanti), oode ambiguit.a.. 8i teoga inoltre presente che Ie parole chiave sono
comunque case insensitive8, perch) un nome deve sempre essere lessicalmente diverso
da esse.
D campo del Codice operazione, normalmente indicato come campo OP, deter-
mina l'interpretazione degli altri campi
6
.
\
I
\
Comrnenti Prima di procedere emeglio parlare dei commenti
7
. Dcampo del corn-
mento deve necessariamente iniziare con II; ". Se il primo carattere di una linea -
I
esclusi eventuali caratteri di spaziatura - eil carattere "; II , allora tutta la linea viene
considerata come un commento. C'e un ultimo modo per introdurre un cornmento:
usare il codice di operazione COMMENT, con il quale epossibile aprire un commento
che occupa un numero arbitrario di linee, secondo la seguente sintassi:
Un. testa assembler e fatto eli linee. Ogni linea e una stringa di caratteri ASCII,
terminante con la combinazione Camage Retu.rn-Line Feed (CR-LF). Se si escludono
\
i commenti multilinea) ogni linea rappresenta uno statement.
La sintassi di un statement prevede i seguenti 4 separati da
almena una spaziatura (le'parentesi quadre - qui e nel seguito - racchiudono elementi
opziona.ti):
\
I
656 Appendice D
,"j
;J" ...
"
"v'! '
.' r, ,
:'. ",
;. '.', I'
"., ..
" ':' .
, .-, ,',
.., I'
::-",,',

e
, .
.
";"
,'"
FINE: RET
mnemonici delle direttive.
mnemonici degli operatori;
mnemonici delle istruzioni;
)
)
)
)
I
I
I
I
J
(f NomeClasse']
[Combinabili tAl
[Allineamento]
SEGMENT
-
NomeSeg
D.2 Segmenti e moduli
L'architettura x86 (Cfr. Appendice A) prevede un madello di memoria segmentata
11
.
La segmentazione ela diretta traduzione del modella di elaborazione, secondo cui
I'algoritmo eseparato dagli oggetti manipolati e temporanee: I'algoritmo
(Ie istn,lzioni) si traduce nel segmento di codice, gli oggetti (1e costallti e Ie variabili)
nel segmento dati, Ie entitA temporanee nello stack.
NeU'assembler 8086 si usano Ie direttive SEGMENT e ENDS per defin4e un (fram-
menta di) segmento logico, secondo questa sintassi:
UTRH
HAUE
lCOUT
..,...u.
.XLIST
D.2.1 Direttive per Ia gestione dei segmenti
Figura D.2 Direttive e operatori del MASM.
I
Un programma puo essere vista Come un insieme di istruzioni e di dati. A livel-
10 sirnbolico questi sonG raccold in a Uvello di eseguibile Sono raccolti in
segrnenti.
.11111
.:lllllp
COIolUt:HT
.ERR
,ERRDI,.
.EIl:RNZ
R"T
ELSE
'" 'FNfl

".
L-ENCTH
HE
QWORD
"".
."'P'
'"
DWOAD
ULa segmentazione eun aspetto caratteristico di questa architettura.. Da eB8a dipende in modo
sostanziale it trattamento da parte di MASM di variabili, etichette, costanti ece.
A partire dat 386, 1a segmentazione potrebbe anche essere evitata con un artificio conaistente nel
prevedere un unico grosso segmento, corrispondente a tutto 10 spazio di memoria indirizzabile dal
programma, all'interno del quale la struttura degJi indirizzi lineare. In ogni caso, la segrnentazione
resta un caposaldo di questa architettura.
',.' :,
.' .::,,;
;.

,. '.
.-
.-
:";.,"<;.1'
... d'
,,' ' I
, ,."
, I
" " .1
,J"."
.' .':.J'
'. ,i,,'--' . '.'
,.:" .. i
"'
....
':>.
, . ,-""
,.
'
" ,
, :,:--:.'-'
.' .'J:; ,}
.. , ';:>
'. -':;'
,0.' I"
. ..
,:":;,::
",
. ,..' ( .. '
'.'-, "."
'" ..
" ' ,.
.f
"\';",
'J ,n"
,.''-. .''''
','., .
. ',:1'
" .:!::
".Y.-:"-';' ..)
,.". E,", ,

, .""
,__


1'" ' ,
'.:.';' '.. ",:
"" .' ,--.-J

-i; ",.,-
",.'. -:i'

.'::": <-
,,;...
-'
, ,.-. ,.y,
;.'"
"-'" ",.. ,
"",-,,' , .,"-
,", ;,.'...'.;..; ;if"
,;,,;,:,::,::
, -.-, .'"
':. ..
,,'; ,';-\'
'" t)",
, r Cl;'"
1'-
'0' f{,:'
.... ,. '::;'7::
'; !t,',
.,' "1'" :t:
i' ;.:;:"
/;/1._, 1 ;r._..
,.",. ...... ,l't
.' >
25
;stabilisce che il repertorio delle istruzioni
; e' quello del processors 80286
EQU
.286
Nwnero_25
Con tale statement, l'assemblatore viene comandato a considerare 1a stringa Numero..25
del tutto equivalente alla stringa 25. In altre parole Numero.25 e una costante
numerica di valore 25.
Ci sono direttive che modificano Ie caratteristiche complessive del caclice, see.
gliendo, per esempio, il repertorio di istruzioni macchina da usare
lO
,ola base in cui
vengono Ie costanti numeriche. Per esempio:
sono equivalenti e possano essere utilizzate per assegnare Petichetta FINE all'indirizzo
nel cadice binario in cui si trova l'istruzione RET. Nel primo caso estata usata 1a
definizione esplicita del simbolo FINE, lisato come etichetta, mentre nel secondo quella
implicita.
n seguente statement mostra una direttiva per 1a definizione dei simboli:
Parole riservate Le parole chiave del MASM possone essere divise in quattro classi:
Operandi n contenuto del campo Operandi deve essere congruente con il contenuto
del campo OP. In questo campo possono trovarsi espressioni contenenti simboli definiti
dal programmatore, assieme a operatori del linguaggio 5tesso (Cft. FiguraD.2). Di
questa si parla nel Paragrafo D.3.
mnemonici dei registri della CPUi
IOn repertorio si estende passando dai microprocesson di base della famiglia a quelli avanzati e
con la presenza di eventuali coprocessori.
In FiguraD.2 vengono riportate Ie parole chiave corrispondenti aIle direttive e
agE operatod.
Le direttive sono state divise in sei gruppi. A quelle dei primi tre gruppi 5i e
accennato in precedenza e di esse si riparla nella parte seguente. Le direttive dei tre
gruppi restanti serveno a richiedere all'assemblatore l'esecuzione di specifiche azioni,
quali la segnalazione di anoma1e 0 1a lettura di file ausiliari, l'assemblaggio
condizionato di frammenti di testo, il formato e Ie caratteristiche della lista generata.
656
Appendice D
,"j
;J" ...
"
"v'! '
.' r, ,
:'. ",
;. '.', I'
"., ..
" ':' .
, .-, ,',
.., I'
::-",,',

e
, .
.
";"
,'"
FINE: RET
mnemonici delle direttive.
mnemonici degli operatori;
mnemonici delle istruzioni;
)
)
)
)
I
I
I
I
J
(f NomeClasse']
[Combinabili tAl
[Allineamento]
SEGMENT
-
NomeSeg
D.2 Segmenti e moduli
L'architettura x86 (Cfr. Appendice A) prevede un madello di memoria segmentata
11
.
La segmentazione ela diretta traduzione del modella di elaborazione, secondo cui
I'algoritmo eseparato dagli oggetti manipolati e temporanee: I'algoritmo
(Ie istn,lzioni) si traduce nel segmento di codice, gli oggetti (1e costallti e Ie variabili)
nel segmento dati, Ie entitA temporanee nello stack.
NeU'assembler 8086 si usano Ie direttive SEGMENT e ENDS per defin4e un (fram-
menta di) segmento logico, secondo questa sintassi:
UTRH
HAUE
lCOUT
..,...u.
.XLIST
D.2.1 Direttive per Ia gestione dei segmenti
Figura D.2 Direttive e operatori del MASM.
I
Un programma puo essere vista Come un insieme di istruzioni e di dati. A livel-
10 sirnbolico questi sonG raccold in a Uvello di eseguibile Sono raccolti in
segrnenti.
.11111
.:lllllp
COIolUt:HT
.ERR
,ERRDI,.
.EIl:RNZ
R"T
ELSE
'" 'FNfl

".
L-ENCTH
HE
QWORD
"".
."'P'
'"
DWOAD
ULa segmentazione eun aspetto caratteristico di questa architettura.. Da eB8a dipende in modo
sostanziale it trattamento da parte di MASM di variabili, etichette, costanti ece.
A partire dat 386, 1a segmentazione potrebbe anche essere evitata con un artificio conaistente nel
prevedere un unico grosso segmento, corrispondente a tutto 10 spazio di memoria indirizzabile dal
programma, all'interno del quale la struttura degJi indirizzi lineare. In ogni caso, la segrnentazione
resta un caposaldo di questa architettura.
',.' :,
.' .::,,;
;.

,. '.
.-
.-
:";.,"<;.1'
... d'
,,' ' I
, ,."
, I
" " .1
,J"."
.' .':.J'
'. ,i,,'--' . '.'
,.:" .. i
"'
....
':>.
, . ,-""
,.
'
" ,
, :,:--:.'-'
.' .'J:; ,}
.. , ';:>
'. -':;'
,0.' I"
. ..
,:":;,::
",
. ,..' ( .. '
'.'-, "."
'" ..
" ' ,.
.f
"\';",
'J ,n"
,.''-. .''''
','., .
. ',:1'
" .:!::
".Y.-:"-';' ..)
,.". E,", ,

, .""
,__


1'" ' ,
'.:.';' '.. ",:
"" .' ,--.-J

-i; ",.,-
",.'. -:i'

.'::": <-
,,;...
-'
, ,.-. ,.y,
;.'"
"-'" ",.. ,
"",-,,' , .,"-
,", ;,.'...'.;..; ;if"
,;,,;,:,::,::
, -.-, .'"
':. ..
,,'; ,';-\'
'" t)",
, r Cl;'"
1'-
'0' f{,:'
.... ,. '::;'7::
'; !t,',
.,' "1'" :t:
i' ;.:;:"
/;/1._, 1 ;r._..
,.",. ...... ,l't
.' >
25
;stabilisce che il repertorio delle istruzioni
; e' quello del processors 80286
EQU
.286
Nwnero_25
Con tale statement, l'assemblatore viene comandato a considerare 1a stringa Numero..25
del tutto equivalente alla stringa 25. In altre parole Numero.25 e una costante
numerica di valore 25.
Ci sono direttive che modificano Ie caratteristiche complessive del caclice, see.
gliendo, per esempio, il repertorio di istruzioni macchina da usare
lO
,ola base in cui
vengono Ie costanti numeriche. Per esempio:
sono equivalenti e possano essere utilizzate per assegnare Petichetta FINE all'indirizzo
nel cadice binario in cui si trova l'istruzione RET. Nel primo caso estata usata 1a
definizione esplicita del simbolo FINE, lisato come etichetta, mentre nel secondo quella
implicita.
n seguente statement mostra una direttiva per 1a definizione dei simboli:
Parole riservate Le parole chiave del MASM possone essere divise in quattro classi:
Operandi n contenuto del campo Operandi deve essere congruente con il contenuto
del campo OP. In questo campo possono trovarsi espressioni contenenti simboli definiti
dal programmatore, assieme a operatori del linguaggio 5tesso (Cft. FiguraD.2). Di
questa si parla nel Paragrafo D.3.
mnemonici dei registri della CPUi
IOn repertorio si estende passando dai microprocesson di base della famiglia a quelli avanzati e
con la presenza di eventuali coprocessori.
In FiguraD.2 vengono riportate Ie parole chiave corrispondenti aIle direttive e
agE operatod.
Le direttive sono state divise in sei gruppi. A quelle dei primi tre gruppi 5i e
accennato in precedenza e di esse si riparla nella parte seguente. Le direttive dei tre
gruppi restanti serveno a richiedere all'assemblatore l'esecuzione di specifiche azioni,
quali la segnalazione di anoma1e 0 1a lettura di file ausiliari, l'assemblaggio
condizionato di frammenti di testo, il formato e Ie caratteristiche della lista generata.
I
I
\
BloccoStatement
NomeSeg ENDS '
Le direttive SEGMENT e ENDS (end of segment) costituiscono la coppia di delimitatori di
apertura e chiusura della definizione del frammento di segmento rappresentato dalla
\
sequenza di statement BloccoStatement. .
. NomeSeg e}'identificatore del segmento cui iI frammento appartiene. Si parla di
frammento d.i segmento perche in uno stesso modulo di programma 10 stesso segmento
puo essere aperto e chiuso piu volte. Le definizioni di segmenti possono anche essere
1
'
annidate, rna. non possono risultare sovrapposte. E percio possibile dichiarare un
segmento a1J'intemo di un altro, come mostrato qui sotto. Non einvece consentito
aprire un nuovO frammento del. segmento corrente. In altri termini, non si puo avere,
Del campo di azione di una direttiva SEGMENT, un'altra SEGMENT con 10 stesso NomeSeg.
\CSEG SEGMENT
D.2.2 Generazione dei riferimenti: la direttiva ASSUME
n lingua.ggio assembler (8086) 659
Per consentire all'assemblatore di generare correttamente e automaticamente i rife-
rimenti in memoria, Dccorre foroirgH una informazione di fondamentale importanza,
che esso non puo ricavare implicitamente in nessun modo cial codiee: la configurazione
dei registri di segmento al momento deH'esecuzione.
nenti variabili condivise sulla base della posizione, anziche del nome; analogamente a1
COMMON del Fortran.
La combinabilita. STACK viene usata' per i frammenti che definiscono l'area di
memoria da usare per 10 stack del programma. ncollegatore tratta i frammenti STACK
in modo anaJogo a quelli PUBLIC, con la differenza che per i1 segmento risultante viene
necessariamente assunto 5S come registro d.i segmentol mentre SP viene inizializzato
con la climensione finale complessiva del segmento, pari aHa somma di quella di tutti
i frammenti componenti.
L'ultima opzione (AT) permette di specificare, mediante una espressione semplice
posta come operando della AT, il segmento fisico in cui il segmento logico deve essere
allocate. Tale opzione, insieme con la direttiva ORG, consente di avere il controllo
diretto, a liyello assembler, degli indirizzi fisici di allocazione degli oggetti generati.
L'ultimo possibile parametro, NomeClasse, definisce 1a "classen a cui appartiene
it segrnento. La c1asse rappresenta un ulteriore strumento, dopo il nome del segmento,
per al momento del coUegamento
l
frammenti di segmento di tipo correlato.
Tutti i segmenti di una classe vengono caricati in zone di memoria contigue. Se tale
parametro viene omesso, il coUegatore dispone i segmenti logici de1I'eseguibile nello
stesso ordine in cui li incontra nella scansione dei moduli rilocabili da collegare. Non
c'e alcun limite superiore aHa dimensione dello spazio di memoiia che ,ma classe
puo complessivamente occupare (ferme restando i limiti aile dimensioni dei segmenti
imposti dai differenti modelli di CPU; per esempio 64 kbyte per 8086/8088).
Ragioni di efficienza possono consigliare 130 riduzione del numero dei segmenti
fisici utilizzati da un programma. Quando due 0 piu segmenti hanno dimensione
complessiva. inferiore aUa dimensione massima possibile per un segmento, 1a direttiva
GROUP consente di costruire un uDico segmento logico con piiI segmenti di diverso
nome. La sintassi equesta:
Nome GROUP NomeSeg [, NomeSeg, ... ]
Nome, viene assunto come identificatore del gruppo, ha le stesse caratteristiche degli
identificatori di segmento e puo apparire negli stat'ement in tutti i luoghi in cui e
ammesso uno di questi, salvo un1altra GROUP. n gruppo risulta costituito dai segmenti
i cui norni appaiono nella !ista che costituisce I'operando della direttiva.
, .
E necessario porre 1a massima attenzione suI fatto che 130 direttiva GROUP non
assicura di per se ll aHocazione contigua dei segmenti del gruppo. Infatti essa riguarda
esclusivamente 130 generazione degli scostamenti degli oggetti contenuti nel gruppo, per
i quali si avranno due valori diversi, uno riferito alIa base del gruppo e uno a quella
del proprio segmento. Ne segue che altri segmenti potrebbero frapporsi tra quelli
del gruppo, rendenda eventualmente impossibile la sua costruzione. La continuita.
dell'aHocazione piu essere assicurata raccogliendo in una stessa classe i segmenti del
gruppo.
.
,,
,II- '
,,?j,
., :'
'0 .
'!'
, ..

',.

",
\:
'I,c.: ,
.,.,
..

'l
'"
"'.


,
, .
'-i:' ,
,
'....

I
:'
" .
, .

:' .
,
,. .

,
"
I
"- .
'.
.i
\
,
,
\
I
I
I
I
\
"J :' .
'IT
,.: .:
, ,J:.,.l
..}., .'
.

. .
,
, "','"
.. '."
,.,
;Inizio segmento annidato
...
ENDS
SEGMENT
Appendice D
;Fine segmento annidato
;Continuazione segmento CSEG
\CSEG ENDS ;Fine segmento CSEG
I parametri Allineamento, Combinabilitae NomeClasse servono per controllare
iJ modo in cui i1 collegatore combina i frammenti di uno 0 piiI segmenti definiti in
)vari influenzando anche la disposizione con cui questi verranno caricati in
\memona.
L'Allineamento (Align Type) specifica da dove deve essere caricato il frammento
di segmento. Esso pub valere: BYTE, WORD, PARA 0 PAGE. Se l'allineamento non viene
l'assemblatore assume allineamento al paragrafe (PARA), cioe a un indirizzo
di 16. L'allineamento alla parola fa allocare il segmento a un indirizzo pari;
pub essere usate per evitare che dati aventi la dimensione di una parola siano allocati
,3 indirizzi dispari con conseguente allungamento del tempo di accesso. L'allineamento
ial byte minimizza l'occupazione di memoria, rna ha senso solo per frammenti di codice,
,n quanta il pre/etch della macchina rende irrilevante l'allineamente per it codice.
nparametro Combinabilita (combine type) determina it modo in cui i vari seg-

possono essere combinati tra lore da! collegatore nel castruire i1 . EXE. Le al-
emative possibili sono: PUBLIC, COMMON, STACK, MEMORY, AT. Se 1a combinabilita non
iene specificata
l
il segmento viene ritenuto non combinabile con a1tri segmenti, anche
dello stesso nome, definiti in altri moduli.
Se la combinabilita ePUBLIC (0 MEMORY) 11 segmento epubblico, Al momento del
esse viene concatenato con tutti i segmenti pubb1ici di uguaJe nome,
negli altri moduli
l
in modo da formare un nuovo segmento avente 10 stesso
nome dei frammenti componenti e di lunghezza pari alIa somma delle lore lunghezze.
Se la combinabilita eCOMMON, i frammenti di uguale nome provenienti da moduli
aiversi vengono collegati per sovrapposizione, anziche giustapposizione, generando un'
segmento che ha lunghezza pari alla lunghezza del framrnento di dimensione
massima. L'opzione COMMON viene normalmente usata per definire aree dati conte-
ICONST
CONST
1
658
I
I
\
BloccoStatement
NomeSeg ENDS '
Le direttive SEGMENT e ENDS (end of segment) costituiscono la coppia di delimitatori di
apertura e chiusura della definizione del frammento di segmento rappresentato dalla
\
sequenza di statement BloccoStatement. .
. NomeSeg e}'identificatore del segmento cui iI frammento appartiene. Si parla di
frammento d.i segmento perche in uno stesso modulo di programma 10 stesso segmento
puo essere aperto e chiuso piu volte. Le definizioni di segmenti possono anche essere
1
'
annidate, rna. non possono risultare sovrapposte. E percio possibile dichiarare un
segmento a1J'intemo di un altro, come mostrato qui sotto. Non einvece consentito
aprire un nuovO frammento del. segmento corrente. In altri termini, non si puo avere,
Del campo di azione di una direttiva SEGMENT, un'altra SEGMENT con 10 stesso NomeSeg.
\CSEG SEGMENT
D.2.2 Generazione dei riferimenti: la direttiva ASSUME
n lingua.ggio assembler (8086) 659
Per consentire all'assemblatore di generare correttamente e automaticamente i rife-
rimenti in memoria, Dccorre foroirgH una informazione di fondamentale importanza,
che esso non puo ricavare implicitamente in nessun modo cial codiee: la configurazione
dei registri di segmento al momento deH'esecuzione.
nenti variabili condivise sulla base della posizione, anziche del nome; analogamente a1
COMMON del Fortran.
La combinabilita. STACK viene usata' per i frammenti che definiscono l'area di
memoria da usare per 10 stack del programma. ncollegatore tratta i frammenti STACK
in modo anaJogo a quelli PUBLIC, con la differenza che per i1 segmento risultante viene
necessariamente assunto 5S come registro d.i segmentol mentre SP viene inizializzato
con la climensione finale complessiva del segmento, pari aHa somma di quella di tutti
i frammenti componenti.
L'ultima opzione (AT) permette di specificare, mediante una espressione semplice
posta come operando della AT, il segmento fisico in cui il segmento logico deve essere
allocate. Tale opzione, insieme con la direttiva ORG, consente di avere il controllo
diretto, a liyello assembler, degli indirizzi fisici di allocazione degli oggetti generati.
L'ultimo possibile parametro, NomeClasse, definisce 1a "classen a cui appartiene
it segrnento. La c1asse rappresenta un ulteriore strumento, dopo il nome del segmento,
per al momento del coUegamento
l
frammenti di segmento di tipo correlato.
Tutti i segmenti di una classe vengono caricati in zone di memoria contigue. Se tale
parametro viene omesso, il coUegatore dispone i segmenti logici de1I'eseguibile nello
stesso ordine in cui li incontra nella scansione dei moduli rilocabili da collegare. Non
c'e alcun limite superiore aHa dimensione dello spazio di memoiia che ,ma classe
puo complessivamente occupare (ferme restando i limiti aile dimensioni dei segmenti
imposti dai differenti modelli di CPU; per esempio 64 kbyte per 8086/8088).
Ragioni di efficienza possono consigliare 130 riduzione del numero dei segmenti
fisici utilizzati da un programma. Quando due 0 piu segmenti hanno dimensione
complessiva. inferiore aUa dimensione massima possibile per un segmento, 1a direttiva
GROUP consente di costruire un uDico segmento logico con piiI segmenti di diverso
nome. La sintassi equesta:
Nome GROUP NomeSeg [, NomeSeg, ... ]
Nome, viene assunto come identificatore del gruppo, ha le stesse caratteristiche degli
identificatori di segmento e puo apparire negli stat'ement in tutti i luoghi in cui e
ammesso uno di questi, salvo un1altra GROUP. n gruppo risulta costituito dai segmenti
i cui norni appaiono nella !ista che costituisce I'operando della direttiva.
, .
E necessario porre 1a massima attenzione suI fatto che 130 direttiva GROUP non
assicura di per se ll aHocazione contigua dei segmenti del gruppo. Infatti essa riguarda
esclusivamente 130 generazione degli scostamenti degli oggetti contenuti nel gruppo, per
i quali si avranno due valori diversi, uno riferito alIa base del gruppo e uno a quella
del proprio segmento. Ne segue che altri segmenti potrebbero frapporsi tra quelli
del gruppo, rendenda eventualmente impossibile la sua costruzione. La continuita.
dell'aHocazione piu essere assicurata raccogliendo in una stessa classe i segmenti del
gruppo.
.
,,
,II- '
,,?j,
., :'
'0 .
'!'
, ..

',.

",
\:
'I,c.: ,
.,.,
..

'l
'"
"'.


,
, .
'-i:' ,
,
'....

I
:'
" .
, .

:' .
,
,. .

,
"
I
"- .
'.
.i
\
,
,
\
I
I
I
I
\
"J :' .
'IT
,.: .:
, ,J:.,.l
..}., .'
.

. .
,
, "','"
.. '."
,.,
;Inizio segmento annidato
...
ENDS
SEGMENT
Appendice D
;Fine segmento annidato
;Continuazione segmento CSEG
\CSEG ENDS ;Fine segmento CSEG
I parametri Allineamento, Combinabilitae NomeClasse servono per controllare
iJ modo in cui i1 collegatore combina i frammenti di uno 0 piiI segmenti definiti in
)vari influenzando anche la disposizione con cui questi verranno caricati in
\memona.
L'Allineamento (Align Type) specifica da dove deve essere caricato il frammento
di segmento. Esso pub valere: BYTE, WORD, PARA 0 PAGE. Se l'allineamento non viene
l'assemblatore assume allineamento al paragrafe (PARA), cioe a un indirizzo
di 16. L'allineamento alla parola fa allocare il segmento a un indirizzo pari;
pub essere usate per evitare che dati aventi la dimensione di una parola siano allocati
,3 indirizzi dispari con conseguente allungamento del tempo di accesso. L'allineamento
ial byte minimizza l'occupazione di memoria, rna ha senso solo per frammenti di codice,
,n quanta il pre/etch della macchina rende irrilevante l'allineamente per it codice.
nparametro Combinabilita (combine type) determina it modo in cui i vari seg-

possono essere combinati tra lore da! collegatore nel castruire i1 . EXE. Le al-
emative possibili sono: PUBLIC, COMMON, STACK, MEMORY, AT. Se 1a combinabilita non
iene specificata
l
il segmento viene ritenuto non combinabile con a1tri segmenti, anche
dello stesso nome, definiti in altri moduli.
Se la combinabilita ePUBLIC (0 MEMORY) 11 segmento epubblico, Al momento del
esse viene concatenato con tutti i segmenti pubb1ici di uguaJe nome,
negli altri moduli
l
in modo da formare un nuovo segmento avente 10 stesso
nome dei frammenti componenti e di lunghezza pari alIa somma delle lore lunghezze.
Se la combinabilita eCOMMON, i frammenti di uguale nome provenienti da moduli
aiversi vengono collegati per sovrapposizione, anziche giustapposizione, generando un'
segmento che ha lunghezza pari alla lunghezza del framrnento di dimensione
massima. L'opzione COMMON viene normalmente usata per definire aree dati conte-
ICONST
CONST
1
658

".!'d., f"
. ,.
, .. .-,' ",
1'
" .'...,'
)
660 Appendice D
l'lE possibile ancbe la. forma. ASSUME NOTHING.
13lnutile dire che CS e IP sono necessariamente inizializzati dal DOS ne! momenta in cui il centrelle
passa al progtamma (con un'ist.ruzione da DOS).
Bisogna evidenziare che l'istruzione mov AX, DATA viene interpretata in modo inusuale '
daU'assemblatore. Infatti
,
poiche l'operando e il nome di un segmento
,
l'istruzione
non viene tnidotta nell'operazione di rnaechma che carica in AX il contenuto della pri-
ma posizione del segmento stesso. Viene invece generata un'operazione incompleta:
nel campo del codice di operazione dell'istruzione l'assemblatore inserisce 1& cadifi-
ca dell'operazione di caricamenta immediato in AX, mentre il campo dell'operando
\
I
1
J
)
l
)
I
)
I
)
1
]
1
1
I
14Un'annotazione margiIia.le: vengono usate due istruziODi UD1ipotizzabile aov OS,DA.TA,
percbe non esiste I'operazione di maccbina "ca.ricamento immediato in OS" .
16Le variabili statiche sono queUe per cui 10 spazio di memoria viene allocate at momento della
compil32iene.
lllinguaggio assembler (8086) 661
Un lI modulo assembler" comprende sempre uno. o. piu segmenti. La direttiva END
chiude it modulo e puo specificare l'etichetta, che corrisponde all'indirizzo iniziale,
punta di entrata (entry point) dell'intero programma. n modulo che contiene la
specifica del punto di entrata prende it nome di ((modulo principale" e gil altri moduli
. .
prendono il nome di "moduli secondari" .
I segmenti che costituiscono un programma eseguibile possono essere cIassificati
secondo tre differenti bpi: codice, dati e stack. Se un programma ecostituito da pili di
un segmento di codice, a ogni istante solo uno di essi eattivo: queUo il cui identificatore
si trova nel registro CS. I segmenti dati contengono Ie costanti e Ie variabili statiche
lS
del programma. In realta. epossibile allocare dati anche nei segmenti di tipo codice.
Cio va in generate evitato per le ragioni illustrate pili avanti, legate alla protezione.
In base al numero e al tipo dei segmenti che 10 costituiscono
l
un programma
viene c1assificato secondo diversi "modem di utilizzo della memoria". Tali modelli
vengono spesso indicati con i nomi Small, Compact, Medium, Large e Huge. Si va
dal modelIo Small, che prevede un solo segmento nel quale sono allocati il codice, i
dati e 10 stack, con it vincolo che la somma delle dimensioni delle aree occupate non
ecceda la dimensione massima d.i 64 kbyte, al modelIa Huge, dove non c'e
al numero di segmenti, alIa lora dimensione e alIa dimensione delle singole variabili.
La suddivisione di un programma in moduli risulta ortogonale rispetto a quella
in segmenti. Infatti un modulo pub definire diversi segmenti uno stesso segmento
puo derivare da parti definite in moduli differenti. Un modulo pub definire uno 0 piu
frammenti dello stesso segmento. Attraverso le fasi con cui si passa da! programma
simbolico a quello eseguibite, i frammenti vengono raccolti in modo da formare un
unito segmento.
La FiguraD.3 mostra un esempio molto semplice: tre moduli definiscono due
segmenti codice (A e B), due segmenti dati (Dl e D2) e un segmento sta<:k (8).
L'esempio puo essere interpretato secondo 10 schema di un programma principale
(modulo 2) utilizzante un sottoprogramma intemo e uno di utilitil (modulo 3), con
area dati in common (modulo 1). Si osservi come il segmento codice B sia in
diviso in due parti costituite dai frammenti definiti nei moduli 2 e 3. La stessa C03a
accade per i1 segmento stack. La frammentazione del segmento B corrisponde alIa
ripartizione del codice complessivo dei sottoprogrammi tra queUo contenuto nel mo-
dulo principale (2) e quello compilato separatamente (3)j mentre quella del segmento
S emotivata da! fatto che it sottoprogramma corrispondente a! co4ice 2 richiede l'uso
D,2.3 Relazione tra segmenti e moduli
immediato non viene riempito con uno scostamento. Viene invece inserita l'informa-
zione che in tale campo it caricatore deve inserire l'indirizzo fisico - diviso per 16 -
a cui viene caricato il segmento. Quando il segmento viene caricato in memoria, il
caricatore ha Pinformazione necessaria per inserire l'indirizzo nel campo dell'operando
immediato, cornpletando il corlice di istruzione
14
.
'I'i'
,.
" "
"
e '..'
,"

.,'


,r
..
'1"

)':.

11\,"
,'\...
'I')
..
'\,:
.
..
..
If,"
if
., '..
;:
"t .
" .
.,,', ;-,
-- Ii...
"
,
,"
I,
'"

,],: "
J
\
"
,
."
,;, '
r, t!
"
.L
'"
,
.,
,
,;>
.r"; .
I
' .
iI "

che usi DS
;segmento dati
di qualunque indirizzamento
;Caricamento in OS ...
; .. della base di DATA
CS:NomeSC
istruzioni
AX, DATA
DS,AX
. . . . . . . . . . .
ENDS
SEGMENT PUBLIC ;segmento di codice
ASSUME CS:CSEG,OS:DATA iAssunzioni:CS di CSEG
ASSUME SS:STACK,ES:nothing ;OS base di DATA, 55 base stack
SEGMENT
ASSUME
prossJ.me
mov
mov
. . . .. .
,
;1e
DATA
CSEG
DATA
dove NomeSC eil nome-del segmento di cadke corrente 0 di un gruppo che 10 contiene.
E anche bene mettere una ulteriore ASSUME dopo ogni istruzione che alteri il
contenuto di un registro di segmento.
. E il caso di osservare che ASSUME, essendo una semplice dichiarazione per l'as-
semblaton;, non assicura in nessun modo che al momento dell'esecuzione i registri di
segmento contengano quanto specificato con la direttiva. E compito del programma-
tore fare in modo che, al tempo di esecuzione, i registri di segmento non inizializzati.
automaticamente dal sistem"a operativo contengano quanto estato fatt6 assumere
all'assemblatore. Nel caso del PC-DOS, per esempio, it registro 5S viene inizializzato
dal DOS stesso
13
. D registro os non viene invece inizializzato: cleve provvedere il pra:.
grammatore
,
prima di un qualunque indirizzamento attraverso OS, come nell'esemI;lio
qui riportato:
Per tale scopa edefinita. la direttiva ASSUME che ha la seguente sintassi:
ASSUME RS:SpecificaRS[,RS:SpecificaRS, ... ]
dove (nel caso 8086/88) RS puo essere CS, OS, ES 0 SS, e SpecificaRS puo essere il
nome di un segmento 0 di un gruppo, ovvero la parola chiave NOTHING
12
.
La direttiva. informa l'assemblatore che, dal punto in cui essa si trova in poi,
uno 0 piu registri eli segmento contengono gli indirizzi di segmento corrispondenti agli
identificatori simbolici specificati. nsecondo formato cancella ogni precedente ASSUME
per tutti i registri contemporaneamente.
,
E bene porre la direttiva immediatameote dopa l'apertur3 di agoi segmento
codice, in modo valga l'assunzione che CS individua it segmento in questione:

".!'d., f"
. ,.
, .. .-,' ",
1'
" .'...,'
)
660 Appendice D
l'lE possibile ancbe la. forma. ASSUME NOTHING.
13lnutile dire che CS e IP sono necessariamente inizializzati dal DOS ne! momenta in cui il centrelle
passa al progtamma (con un'ist.ruzione da DOS).
Bisogna evidenziare che l'istruzione mov AX, DATA viene interpretata in modo inusuale '
daU'assemblatore. Infatti
,
poiche l'operando e il nome di un segmento
,
l'istruzione
non viene tnidotta nell'operazione di rnaechma che carica in AX il contenuto della pri-
ma posizione del segmento stesso. Viene invece generata un'operazione incompleta:
nel campo del codice di operazione dell'istruzione l'assemblatore inserisce 1& cadifi-
ca dell'operazione di caricamenta immediato in AX, mentre il campo dell'operando
\
I
1
J
)
l
)
I
)
I
)
1
]
1
1
I
14Un'annotazione margiIia.le: vengono usate due istruziODi UD1ipotizzabile aov OS,DA.TA,
percbe non esiste I'operazione di maccbina "ca.ricamento immediato in OS" .
16Le variabili statiche sono queUe per cui 10 spazio di memoria viene allocate at momento della
compil32iene.
lllinguaggio assembler (8086) 661
Un lI modulo assembler" comprende sempre uno. o. piu segmenti. La direttiva END
chiude it modulo e puo specificare l'etichetta, che corrisponde all'indirizzo iniziale,
punta di entrata (entry point) dell'intero programma. n modulo che contiene la
specifica del punto di entrata prende it nome di ((modulo principale" e gil altri moduli
. .
prendono il nome di "moduli secondari" .
I segmenti che costituiscono un programma eseguibile possono essere cIassificati
secondo tre differenti bpi: codice, dati e stack. Se un programma ecostituito da pili di
un segmento di codice, a ogni istante solo uno di essi eattivo: queUo il cui identificatore
si trova nel registro CS. I segmenti dati contengono Ie costanti e Ie variabili statiche
lS
del programma. In realta. epossibile allocare dati anche nei segmenti di tipo codice.
Cio va in generate evitato per le ragioni illustrate pili avanti, legate alla protezione.
In base al numero e al tipo dei segmenti che 10 costituiscono
l
un programma
viene c1assificato secondo diversi "modem di utilizzo della memoria". Tali modelli
vengono spesso indicati con i nomi Small, Compact, Medium, Large e Huge. Si va
dal modelIo Small, che prevede un solo segmento nel quale sono allocati il codice, i
dati e 10 stack, con it vincolo che la somma delle dimensioni delle aree occupate non
ecceda la dimensione massima d.i 64 kbyte, al modelIa Huge, dove non c'e
al numero di segmenti, alIa lora dimensione e alIa dimensione delle singole variabili.
La suddivisione di un programma in moduli risulta ortogonale rispetto a quella
in segmenti. Infatti un modulo pub definire diversi segmenti uno stesso segmento
puo derivare da parti definite in moduli differenti. Un modulo pub definire uno 0 piu
frammenti dello stesso segmento. Attraverso le fasi con cui si passa da! programma
simbolico a quello eseguibite, i frammenti vengono raccolti in modo da formare un
unito segmento.
La FiguraD.3 mostra un esempio molto semplice: tre moduli definiscono due
segmenti codice (A e B), due segmenti dati (Dl e D2) e un segmento sta<:k (8).
L'esempio puo essere interpretato secondo 10 schema di un programma principale
(modulo 2) utilizzante un sottoprogramma intemo e uno di utilitil (modulo 3), con
area dati in common (modulo 1). Si osservi come il segmento codice B sia in
diviso in due parti costituite dai frammenti definiti nei moduli 2 e 3. La stessa C03a
accade per i1 segmento stack. La frammentazione del segmento B corrisponde alIa
ripartizione del codice complessivo dei sottoprogrammi tra queUo contenuto nel mo-
dulo principale (2) e quello compilato separatamente (3)j mentre quella del segmento
S emotivata da! fatto che it sottoprogramma corrispondente a! co4ice 2 richiede l'uso
D,2.3 Relazione tra segmenti e moduli
immediato non viene riempito con uno scostamento. Viene invece inserita l'informa-
zione che in tale campo it caricatore deve inserire l'indirizzo fisico - diviso per 16 -
a cui viene caricato il segmento. Quando il segmento viene caricato in memoria, il
caricatore ha Pinformazione necessaria per inserire l'indirizzo nel campo dell'operando
immediato, cornpletando il corlice di istruzione
14
.
'I'i'
,.
" "
"
e '..'
,"

.,'


,r
..
'1"

)':.

11\,"
,'\...
'I')
..
'\,:
.
..
..
If,"
if
., '..
;:
"t .
" .
.,,', ;-,
-- Ii...
"
,
,"
I,
'"

,],: "
J
\
"
,
."
,;, '
r, t!
"
.L
'"
,
.,
,
,;>
.r"; .
I
' .
iI "

che usi DS
;segmento dati
di qualunque indirizzamento
;Caricamento in OS ...
; .. della base di DATA
CS:NomeSC
istruzioni
AX, DATA
DS,AX
. . . . . . . . . . .
ENDS
SEGMENT PUBLIC ;segmento di codice
ASSUME CS:CSEG,OS:DATA iAssunzioni:CS di CSEG
ASSUME SS:STACK,ES:nothing ;OS base di DATA, 55 base stack
SEGMENT
ASSUME
prossJ.me
mov
mov
. . . .. .
,
;1e
DATA
CSEG
DATA
dove NomeSC eil nome-del segmento di cadke corrente 0 di un gruppo che 10 contiene.
E anche bene mettere una ulteriore ASSUME dopo ogni istruzione che alteri il
contenuto di un registro di segmento.
. E il caso di osservare che ASSUME, essendo una semplice dichiarazione per l'as-
semblaton;, non assicura in nessun modo che al momento dell'esecuzione i registri di
segmento contengano quanto specificato con la direttiva. E compito del programma-
tore fare in modo che, al tempo di esecuzione, i registri di segmento non inizializzati.
automaticamente dal sistem"a operativo contengano quanto estato fatt6 assumere
all'assemblatore. Nel caso del PC-DOS, per esempio, it registro 5S viene inizializzato
dal DOS stesso
13
. D registro os non viene invece inizializzato: cleve provvedere il pra:.
grammatore
,
prima di un qualunque indirizzamento attraverso OS, come nell'esemI;lio
qui riportato:
Per tale scopa edefinita. la direttiva ASSUME che ha la seguente sintassi:
ASSUME RS:SpecificaRS[,RS:SpecificaRS, ... ]
dove (nel caso 8086/88) RS puo essere CS, OS, ES 0 SS, e SpecificaRS puo essere il
nome di un segmento 0 di un gruppo, ovvero la parola chiave NOTHING
12
.
La direttiva. informa l'assemblatore che, dal punto in cui essa si trova in poi,
uno 0 piu registri eli segmento contengono gli indirizzi di segmento corrispondenti agli
identificatori simbolici specificati. nsecondo formato cancella ogni precedente ASSUME
per tutti i registri contemporaneamente.
,
E bene porre la direttiva immediatameote dopa l'apertur3 di agoi segmento
codice, in modo valga l'assunzione che CS individua it segmento in questione:
\ I
,

I
II
I;,
,
I
Ii'
,.1-
.'
,.
II
i\
"
A
D'
S/'
D2
S/2
8/1
0/2
s.,,,r:nen.U U.I",l
3-' ,,"' -
-----------
B - , .
-----------
Staok
T... t.
I
D.t...
I
I
e-.--uppl
Segmento S di lipo Stack
S"'grnenlo B di t..ipo Codic'"
Segmento Dl di lipo Dati
Seemento A di tipo Codlce
Segemenlo D2 di lipo Dati
Allo", ..::tione In :on.=oM.. oon aruppi
Se....... nU 10,,101
S
0'
O"U
S 02
D ..u
S., A
Codi"'.
S

CocUe.
,
-----------
S B
Codi",o 2
S S
st.a.c:1o(
,
-----------
S S
St..ck 2
S/2
B/2
B/'
'/'
A
0'
02
rr..:rnrn.,nt.l

Seg 01 Dati
Seg 02 OaU
,
Sea A Codice
0
"
Seg B Codice 1
0
U
Se& B Codice 2

Seg S Stack 1
Seg S Stack 2
Figura D.6 Effetto delle classi e dei gruppi.
II linguaggio assembler (8086) 663
L'accorpamento dei segmenti
,
sempre possibile se Ia somma deUe dimensioni dei
segmenti da raggruppare einferiore alia dimensione massima possibile per un segmen-
to (64kbyte per 1'8086), consente di aumentare l'eflicienza del programma riducendo
il numero dei caricamenti dei registri di segmento. D'altra parte non e opportuno
che la compattazione sia effettuata tenendo corito della sola dimensione dei segmen-
Alloeazione in tncrnori'" per el",sse
Si osservi che in ogni caso i due segmenti codice A e B e i due segmenti dati D1
e D2 sono rimasti distinti. Se si vuole accorpare diversi segmenti logici di uguale tipo
in uno stesso segmento fisico si puo ricorrere al concetto di gruppo, La FiguraD,6
evidenzia quanto accade nel caso dell'esempio se vengono definiti 3 gruppi: Data,
Text e Stack. La differenza rispetto al caso precedente sta nel fatto we gli indirizzi
l.0gici contenuti nell'eseguibile fanno riferimento a 3 soli segmenti
l
contro i 5 originari.
E bene ricordare che l'appartenenza di due 0 pili segmeoti a uno stesso gruppo non
implica la lora contiguita. in memoria, che invece euna prerogativa delle classi.
Figura D.S Effetto delle classi can riferimento ai segmenti delle precedenti figure.
definendo tre ClassL Codice, Dati e Stade

'"
1
..
,.. "
" ,\". ,
'..-
. "-"-'
f
j:
y."'
,--
,
,1-",
,

,
'J ;'
' .. -,


''1'

'I'
."
" - -
"
lo."':
,I'.:"
I;,:..
" ,
'"
, .
,
l '
[
'
" ':
, '!; ':
I ,
f
\' "
,
(
,
"
', .. "
I
1;-
I

1
t
I
c,
. .
,.
1 .
,
f
L
I" ,
j
i
,
1,

I
J
''" '
,
.::. '!:,
!'. ; ..

3
5., 5
Stack Z
Sell: B
Codice 2
Seg D2
Dall
z
MODUU
S ........ ent.o S dl upo st... ", ...
Se.rnento B <11 Upo Codle.
S =ento D2 <11 tlpo O.tI
5 =ento D1 dl Upo D .. tI
S =_nto " al tlpo Codlo.
Seg A
Codice
Seg S
St.. ck 1
Seg B
Codiee 1
.... Uo", ... lon. In rn...... orl ..
1
Ses; 01
Dati
s 0'
Oall
S A
Cod.lo.
S., S
St. .. ok
,
-----------
S S
St. ..",k 2
So, B
CocU", ..
,
-----------
So, B
Codlce 2
S 02
O..ti

"
'"
ro
Dislocazione in memoria. dei segmenti della. figura precedente in base ai soli
L'allocazione in memoria mostrata in FiguraDA non puo essere considerata par-
ticolarmente soddisfacente, in quanto difetta di ordine. lnfatti i dati e il codice del
si trovano dispersi in aree differenti e separate cia zone contenenti oggetti
\
\ tipo diverso. La struttura della figura. einaccettabile, per esempio
,
se il codice e
ad andare in una ROM (Read Only Memory) in cui, ovviamente
J
non puo
essere contenuta l'area d.i stack.
\ Per facilitare un'allocazione di memoria piu logica e ordinata, ciascun segmento
\ pico puo essere associato a una dasse, in modo che i segmenti appartenenti alIa stessa
t asse, pur continuando a rimanere distinti, vengono allocati in modo contiguo in
memoria. La FiguraD.5 mostra la disposizione che si otterrebbe nel caso precedente,
I 19ura 0.4
nOmJ.
I
l
stack. Cautelativamente, il J?rogrammatore ha scelta di definire in questa mo-
aula 10 spazio d.i stack richiesto. E importante infine asservare che un modulo puo
anche .contenere solo definizioni di dati (0 solo codice, 0 solo stack) accade nel
1 1"'0 del modulo 1 della figura.
J I La FiguraD.4 da. un'indicazione d.i massima su quanta avviene, supponendo che si
proceda a1 collegamento dei moduli neU'ordine con cui essi appaiono nella FiguraD.3.
Si osservi come i due frammenti dei segmenti B e S siano stati riuniti e giustapposti,
(I
\ I j
J .1'(igura 0.3 Segmenti e Moduli.
, \
1\
'r2 Appendice D
i I
\ I
,

I
II
I;,
,
I
Ii'
,.1-
.'
,.
II
i\
"
A
D'
S/'
D2
S/2
8/1
0/2
s.,,,r:nen.U U.I",l
3-' ,,"' -
-----------
B - , .
-----------
Staok
T... t.
I
D.t...
I
I
e-.--uppl
Segmento S di lipo Stack
S"'grnenlo B di t..ipo Codic'"
Segmento Dl di lipo Dati
Seemento A di tipo Codlce
Segemenlo D2 di lipo Dati
Allo", ..::tione In :on.=oM.. oon aruppi
Se....... nU 10,,101
S
0'
O"U
S 02
D ..u
S., A
Codi"'.
S

CocUe.
,
-----------
S B
Codi",o 2
S S
st.a.c:1o(
,
-----------
S S
St..ck 2
S/2
B/2
B/'
'/'
A
0'
02
rr..:rnrn.,nt.l

Seg 01 Dati
Seg 02 OaU
,
Sea A Codice
0
"
Seg B Codice 1
0
U
Se& B Codice 2

Seg S Stack 1
Seg S Stack 2
Figura D.6 Effetto delle classi e dei gruppi.
II linguaggio assembler (8086) 663
L'accorpamento dei segmenti
,
sempre possibile se Ia somma deUe dimensioni dei
segmenti da raggruppare einferiore alia dimensione massima possibile per un segmen-
to (64kbyte per 1'8086), consente di aumentare l'eflicienza del programma riducendo
il numero dei caricamenti dei registri di segmento. D'altra parte non e opportuno
che la compattazione sia effettuata tenendo corito della sola dimensione dei segmen-
Alloeazione in tncrnori'" per el",sse
Si osservi che in ogni caso i due segmenti codice A e B e i due segmenti dati D1
e D2 sono rimasti distinti. Se si vuole accorpare diversi segmenti logici di uguale tipo
in uno stesso segmento fisico si puo ricorrere al concetto di gruppo, La FiguraD,6
evidenzia quanto accade nel caso dell'esempio se vengono definiti 3 gruppi: Data,
Text e Stack. La differenza rispetto al caso precedente sta nel fatto we gli indirizzi
l.0gici contenuti nell'eseguibile fanno riferimento a 3 soli segmenti
l
contro i 5 originari.
E bene ricordare che l'appartenenza di due 0 pili segmeoti a uno stesso gruppo non
implica la lora contiguita. in memoria, che invece euna prerogativa delle classi.
Figura D.S Effetto delle classi can riferimento ai segmenti delle precedenti figure.
definendo tre ClassL Codice, Dati e Stade

'"
1
..
,.. "
" ,\". ,
'..-
. "-"-'
f
j:
y."'
,--
,
,1-",
,

,
'J ;'
' .. -,


''1'

'I'
."
" - -
"
lo."':
,I'.:"
I;,:..
" ,
'"
, .
,
l '
[
'
" ':
, '!; ':
I ,
f
\' "
,
(
,
"
', .. "
I
1;-
I

1
t
I
c,
. .
,.
1 .
,
f
L
I" ,
j
i
,
1,

I
J
''" '
,
.::. '!:,
!'. ; ..

3
5., 5
Stack Z
Sell: B
Codice 2
Seg D2
Dall
z
MODUU
S ........ ent.o S dl upo st... ", ...
Se.rnento B <11 Upo Codle.
S =ento D2 <11 tlpo O.tI
5 =ento D1 dl Upo D .. tI
S =_nto " al tlpo Codlo.
Seg A
Codice
Seg S
St.. ck 1
Seg B
Codiee 1
.... Uo", ... lon. In rn...... orl ..
1
Ses; 01
Dati
s 0'
Oall
S A
Cod.lo.
S., S
St. .. ok
,
-----------
S S
St. ..",k 2
So, B
CocU", ..
,
-----------
So, B
Codlce 2
S 02
O..ti

"
'"
ro
Dislocazione in memoria. dei segmenti della. figura precedente in base ai soli
L'allocazione in memoria mostrata in FiguraDA non puo essere considerata par-
ticolarmente soddisfacente, in quanto difetta di ordine. lnfatti i dati e il codice del
si trovano dispersi in aree differenti e separate cia zone contenenti oggetti
\
\ tipo diverso. La struttura della figura. einaccettabile, per esempio
,
se il codice e
ad andare in una ROM (Read Only Memory) in cui, ovviamente
J
non puo
essere contenuta l'area d.i stack.
\ Per facilitare un'allocazione di memoria piu logica e ordinata, ciascun segmento
\ pico puo essere associato a una dasse, in modo che i segmenti appartenenti alIa stessa
t asse, pur continuando a rimanere distinti, vengono allocati in modo contiguo in
memoria. La FiguraD.5 mostra la disposizione che si otterrebbe nel caso precedente,
I 19ura 0.4
nOmJ.
I
l
stack. Cautelativamente, il J?rogrammatore ha scelta di definire in questa mo-
aula 10 spazio d.i stack richiesto. E importante infine asservare che un modulo puo
anche .contenere solo definizioni di dati (0 solo codice, 0 solo stack) accade nel
1 1"'0 del modulo 1 della figura.
J I La FiguraD.4 da. un'indicazione d.i massima su quanta avviene, supponendo che si
proceda a1 collegamento dei moduli neU'ordine con cui essi appaiono nella FiguraD.3.
Si osservi come i due frammenti dei segmenti B e S siano stati riuniti e giustapposti,
(I
\ I j
J .1'(igura 0.3 Segmenti e Moduli.
, \
1\
'r2 Appendice D
i I
Ll sara. usata per i riferimenti dall'intemo dello stesso segmento, e Ll..:far dall'esterno.
Dlinguaggio assembler (8086) 665
dove Oistanza puo essere NEAR oppure FAR. L'esempio precedente potrebbe essere
cos1 scritto in modo esplicito:
dal valore delle scostamento e del segmento; cio indipendentemente dal segmento
in cui si trava iI riferimento.
}
J
)
J
)
I
)
)
I
1:
t
1
,
Distanza LABEL
NEAR
L2
L2
LABEL FAR
JMP L2
LABEL
JMP
JMP
D.3.2 Variabili
Ll_far
Ll ,
Ll
NomeEtichetta
Le variabili sono i simboli con cui it programmatore fa riferimento ai dati.
Gli attributi di una variabile sono, (1) !'indirizzo; (2) il tipo e (3) la visibilita.
L'indirizzo e la visibilita hanno significato identico a quello illustrato per Ie etiebette,
rnentre il tipo ha l'interpretazione descritta in seguito.
Come gia. anticipato, ('assembler della famiglia x86 risulta fortemente Iltipiz-
zatd
'
, nel senso che nel riferimento a un dato, costante 0 variabile, l'assernblatore
La definizione implicita delle eticbette consente di definite solo etichette NEAR.
La. definizione delle etichette di tipo FAR richiede necessariamente 180 direttiva LABEL.
.Se un'etichetta eriferita. spesso aU'interno di un programma, ebene che essa sia di
tipo NEAR, D'altra parte se un punto del programma deve essere riferito anche da altri
segmenti, aHora all0 stesso indirizzo puo essere associata un'altra etichetta di nome
diverse e di tipo FAR, come mostrato nell'esempio che segue:
Ll:
dichiara l'etichetta L1. Trattandosi di una dicbiarazione implicita Ll e necessaria-
mente NEAR e INTERNAL aI. modulo in cu,i appare. Dunque l'insieme degli attributi di
Ll edato dalla quadrupla:
<segmento.scostamento.NEAR,INTERNAL>.
Un)etichetta puo essere definita anche esplicitamente mediante 180 direttiva LABEL,
con 1a sintassi seguente:
L'attributo visibilita specifica se l'etichetta deve essere nota solo all'interno del
modulo in cui edefinita, se puo essere riferita anche in altri moduli, ovvero se e
definita in un modulo diverso da queUo corrente. n valore assunto nei tre casi e
INTERNAL, PUBLIC, EXTERN. Se un'etichetta non edichiarata global.e 0 esterna,
1a sua visibilita si lirpita al modulo (cioe interna).
n modo piu sem'plice per dichiarare una etichetta e queUo della dichiarazione
implicita, che consis.te nel porre Usuo identificatore, seguito dall'operatore II:", nel
campo Nome della statement a cui essa deve essere a.ssociata. Per esempio 10 statement
seguente:
,
'f
.
,
,..'
:,.:.
"

,<!
,l,?:.

\ .'
".,".
.. ,.'.
. .
. :' '.. " .,
1
.\ .
,
t',
.\'
," ,', ,.
,
'f

j
r
1

I
'i"
,
,.
,.
j,
,
'f.
,
1:
.1'
o t' .
,
.:' .';:
, . 1 ,'.--


'.
1:
.'. .' ,..
., ,,'..'.
ti, ..
,.;,
i.>.
c

I .
'.,
,'.
1'i:.
;
v.. .,' ?: .
.. :. lii.-
, .",
.. ',.
i1- .
'It ..
, .. .
,'.'.
,

'I:'
,'.,
'1:1,;

p'
, >
I
'
..
17';.
'U
i
'.
" .. .
..
. . '.'

., ...
,v ...
1
"
'.; "
.:.'

I"
z
....
t-..
1'" ,
..
",
"...
.... '1.'7.
.
D.3.1 Etichette
ti, viceversa enecessario fare in modo che i segmenti logici accorpati appartengano
a oggetti logici affini 0 comunque correlati. Un buon esempio pub essere queUo del
codice delle procedure destinate a uno stesso scopo (gestione del video, conversione
del formate dei dati per I/O, funzioni matematiche ecc.). In effetti l'operazione di
accorpamento dei segmenti logici infl.uisce direttamente Bulla localita. del programma,
che e di importa.nza fondamentale in presenza di un sistema di memoria virtuale e,
piu in generale, di una qualUnque forma di gerarchia di memoria (cache).
Sebbene 1a segmentazione della memoria spinga fortemente verso una program-
rnazione modulare) esempre possibile imbattersi in prograrnmi che mescolano istru-
zioni, dati e stack alPinterno di uno stesso segmento. Tali programmi possono operare
correttamente alla stessa stregua di un programma modulare, rna di soli to i! costo del-
la loro messa a punto e manutenzione risulta pili elevato. In agni' caso occorre tener
presente me, se un programma non estrutturato a segmenti, i meccanismi di prote-
zione del modo virtuale protetto, disponibili nei processori piil avanzati della famiglia,
risultano inefficaci.
Nel}larchitettura x86 un indirizzo ha due componenti: segmento e scostamento.
Per MASM, 1'indirizzo equivale 801 nome del segmento in cui si trova l'etichetta e
allo scostamento entre i1 segmento stesso.
L'attributo distanza corrisponde, impropriamente, al lltipo" di etichetta. Esso
puo assumere solo valore NEAR 0 FAR. Nel primo caso I'etichetta pub essere riferi-
ta solo dall'interno del segmento in cui edefinita. Nel secondo puo essere anche
riferita da altri segmenti. Se non viene esplicitamente indicata it contrario, la
distanza di una etichetta viene assunta NEAR. A ogni riferimento di un'etichetta
NEAR, l'assemblatore pone nella codifica dell'indirizzo solo it valore dello scosta-
menta. Se invece l'etichetta edefinita. FAR, viene generato un indirizzo formato
Le etichette sono simboli utilizzati per identi.ficare l'indirizzo di una istruzione. Esse
sono normalmente usate nene istruzioni di trasferimento del controllo, cioe salti e
crnamate di procedura.
Gli attributi di una etichetta sono, (1) l'indirizzo; (2) la distanza e (3)!a visibi!ita.
D.3 I simboli definiti dal programmatore
La possibilita. offerta at programmatore di definue simboli utilizzabili per riferire gli
oggetti (segmenti, istruzioni, dati, costanti ecc.) presenti all'interno di un program-
ma, costituisce la base di tutte Ie funzionalita. fornite qal linguaggio assembler. Nel
riferire un oggetto mediante un simbolo, irprogrammatare viene sollevata dalla neces-
sita- di specificate direttamente l'indirizzo, lasciando al sistema 1a responsabilita. della
definizione. " '.
MASM gestisce diversi tipi di simboli. Nel seguito si considerano i seguenti tipi di
simbolo: Ie variabili, Ie costanti e Ie etichette. I nomi di segmento sonG stati trattati
nella sezione precedente.
664 Appendice D
Ll sara. usata per i riferimenti dall'intemo dello stesso segmento, e Ll..:far dall'esterno.
Dlinguaggio assembler (8086) 665
dove Oistanza puo essere NEAR oppure FAR. L'esempio precedente potrebbe essere
cos1 scritto in modo esplicito:
dal valore delle scostamento e del segmento; cio indipendentemente dal segmento
in cui si trava iI riferimento.
}
J
)
J
)
I
)
)
I
1:
t
1
,
Distanza LABEL
NEAR
L2
L2
LABEL FAR
JMP L2
LABEL
JMP
JMP
D.3.2 Variabili
Ll_far
Ll ,
Ll
NomeEtichetta
Le variabili sono i simboli con cui it programmatore fa riferimento ai dati.
Gli attributi di una variabile sono, (1) !'indirizzo; (2) il tipo e (3) la visibilita.
L'indirizzo e la visibilita hanno significato identico a quello illustrato per Ie etiebette,
rnentre il tipo ha l'interpretazione descritta in seguito.
Come gia. anticipato, ('assembler della famiglia x86 risulta fortemente Iltipiz-
zatd
'
, nel senso che nel riferimento a un dato, costante 0 variabile, l'assernblatore
La definizione implicita delle eticbette consente di definite solo etichette NEAR.
La. definizione delle etichette di tipo FAR richiede necessariamente 180 direttiva LABEL.
.Se un'etichetta eriferita. spesso aU'interno di un programma, ebene che essa sia di
tipo NEAR, D'altra parte se un punto del programma deve essere riferito anche da altri
segmenti, aHora all0 stesso indirizzo puo essere associata un'altra etichetta di nome
diverse e di tipo FAR, come mostrato nell'esempio che segue:
Ll:
dichiara l'etichetta L1. Trattandosi di una dicbiarazione implicita Ll e necessaria-
mente NEAR e INTERNAL aI. modulo in cu,i appare. Dunque l'insieme degli attributi di
Ll edato dalla quadrupla:
<segmento.scostamento.NEAR,INTERNAL>.
Un)etichetta puo essere definita anche esplicitamente mediante 180 direttiva LABEL,
con 1a sintassi seguente:
L'attributo visibilita specifica se l'etichetta deve essere nota solo all'interno del
modulo in cui edefinita, se puo essere riferita anche in altri moduli, ovvero se e
definita in un modulo diverso da queUo corrente. n valore assunto nei tre casi e
INTERNAL, PUBLIC, EXTERN. Se un'etichetta non edichiarata global.e 0 esterna,
1a sua visibilita si lirpita al modulo (cioe interna).
n modo piu sem'plice per dichiarare una etichetta e queUo della dichiarazione
implicita, che consis.te nel porre Usuo identificatore, seguito dall'operatore II:", nel
campo Nome della statement a cui essa deve essere a.ssociata. Per esempio 10 statement
seguente:
,
'f
.
,
,..'
:,.:.
"

,<!
,l,?:.

\ .'
".,".
.. ,.'.
. .
. :' '.. " .,
1
.\ .
,
t',
.\'
," ,', ,.
,
'f

j
r
1

I
'i"
,
,.
,.
j,
,
'f.
,
1:
.1'
o t' .
,
.:' .';:
, . 1 ,'.--


'.
1:
.'. .' ,..
., ,,'..'.
ti, ..
,.;,
i.>.
c

I .
'.,
,'.
1'i:.
;
v.. .,' ?: .
.. :. lii.-
, .",
.. ',.
i1- .
'It ..
, .. .
,'.'.
,

'I:'
,'.,
'1:1,;

p'
, >
I
'
..
17';.
'U
i
'.
" .. .
..
. . '.'

., ...
,v ...
1
"
'.; "
.:.'

I"
z
....
t-..
1'" ,
..
",
"...
.... '1.'7.
.
D.3.1 Etichette
ti, viceversa enecessario fare in modo che i segmenti logici accorpati appartengano
a oggetti logici affini 0 comunque correlati. Un buon esempio pub essere queUo del
codice delle procedure destinate a uno stesso scopo (gestione del video, conversione
del formate dei dati per I/O, funzioni matematiche ecc.). In effetti l'operazione di
accorpamento dei segmenti logici infl.uisce direttamente Bulla localita. del programma
,
che e di importa.nza fondamentale in presenza di un sistema di memoria virtuale e,
piu in generale, di una qualUnque forma di gerarchia di memoria (cache).
Sebbene 1a segmentazione della memoria spinga fortemente verso una program-
rnazione modulare) esempre possibile imbattersi in prograrnmi che mescolano istru-
zioni, dati e stack alPinterno di uno stesso segmento. Tali programmi possono operare
correttamente alla stessa stregua di un programma modulare, rna di soli to i! costo del-
la loro messa a punto e manutenzione risulta pili elevato. In agni' caso occorre tener
presente me, se un programma non estrutturato a segmenti, i meccanismi di prote-
zione del modo virtuale protetto, disponibili nei processori piil avanzati della famiglia,
risultano inefficaci.
Nel}larchitettura x86 un indirizzo ha due componenti: segmento e scostamento.
Per MASM, 1'indirizzo equivale 801 nome del segmento in cui si trova l'etichetta e
allo scostamento entre i1 segmento stesso.
L'attributo distanza corrisponde, impropriamente, al lltipo" di etichetta. Esso
puo assumere solo valore NEAR 0 FAR. Nel primo caso I'etichetta pub essere riferi-
ta solo dall'interno del segmento in cui edefinita. Nel secondo puo essere anche
riferita da altri segmenti. Se non viene esplicitamente indicata it contrario, la
distanza di una etichetta viene assunta NEAR. A ogni riferimento di un'etichetta
NEAR, l'assemblatore pone nella codifica dell'indirizzo solo it valore dello scosta-
menta. Se invece l'etichetta edefinita. FAR, viene generato un indirizzo formato
Le etichette sono simboli utilizzati per identi.ficare l'indirizzo di una istruzione. Esse
sono normalmente usate nene istruzioni di trasferimento del controllo, cioe salti e
crnamate di procedura.
Gli attributi di una etichetta sono, (1) l'indirizzo; (2) la distanza e (3)!a visibi!ita.
D.3 I simboli definiti dal programmatore
La possibilita. offerta at programmatore di definue simboli utilizzabili per riferire gli
oggetti (segmenti, istruzioni, dati, costanti ecc.) presenti all'interno di un program-
ma, costituisce la base di tutte Ie funzionalita. fornite qal linguaggio assembler. Nel
riferire un oggetto mediante un simbolo, irprogrammatare viene sollevata dalla neces-
sita- di specificate direttamente l'indirizzo, lasciando al sistema 1a responsabilita. della
definizione. " '.
MASM gestisce diversi tipi di simboli. Nel seguito si considerano i seguenti tipi di
simbolo: Ie variabili, Ie costanti e Ie etichette. I nomi di segmento sonG stati trattati
nella sezione precedente.
664 Appendice D
1
666

Appendice D
.1.
t

"
,
,.
lllingu.ggio assembler (8086)
667
\
,
DB 100 DUP (0)
}aI1oca un'area di memoria eli 100 byte inizializzati a O. n frammento di codice:
10
-----
DB 100 DUP (0)
Q]
100
2
DB 10 DUP ('STACK')
[._.1 ,,1
DUP ('a',2 DUP ('b'.2 DUP ('e'), 'b').'a')
DUP .(' STACK')
10
10
1
DB
'S'I'T'
Array_Mono_Dim
1
0
1
0
1
0
1
1 2 3
mov AX, WDRD PTR C
dove l'operatore PTR informa I'assemblatore di generare Pistruzione che carica in modo
congruente a AX quanto sta all'indirizzo di C, determinando in tal modo una conver-
sione tra i tipi. n risultato dell'esecuzione dell'istruzione sara il caricarnento in AL di
10 e io AH di 11.
ARRAY DB 10 DUP Ca', 2 DU? ('a'. 2 DU? Cc). 'b'), 's')
'aTb' 'c' 'C'\'b']'b'I'c']'c'I'b'I'a'I-I, ,1, .. 1, ,I, ,[..,1 .. ,1. ,I, ,I ..
La FiguraD.7 mostra l'effetto delle tre dichiarazioni precedenti .
Oltre ai tipi scalari e agli array, l'assembler 8086 mette a disposizione del programma-
tore due tipi di variabile con struttura a record, definiti con Ie direttive STRUC/ENDS
e RECDRD.
La direttiva STRUC/ENDS viene usata per definire Ie strutture MASM, analoghe
ai record Pascal, i cui campi sono variabili di tipo qualsiasi tra quelli predefiniti.
La sintassi della direttiva ela seguente:
La tipizzazione forte dell'assembler 8086 risulta, in taluni .casi, come un ostacolo
ai fini della ottimizzazione dell'efficienza di un programma. n programmatore puo co-
munque eludere la tipizzazione, usando esplicitarnente alcuni operatori. Per esempio,
facendo riferimento alIa variabile C definita. in precedenza epossibile scrivere:
D.3.3 Variabili strutturate
1 10
Figura D. 7 Allocazione della memoria per le tre definizioni eli array nel testa.
ARRAY DB
causa 1a ripetizione per 10 volte della stringa "STACK". Si noti che a quest'area
memoria non estato associato alcun nome di variabile. .
Poiche il DUP e un operatore
l
puo essere utilizzato in modo ricorsivo. Cia
consente di dichiarare variabili complesse usando DUP in modo annidato. Per esempio
ecorretta la seguente dichiarazione:
.

..
,

,,:
.. .
-. ..
..
,.
'", ,
,
I.
,
-
, '

I
.,
l
,

....
..
..
"
-.
I
.. ,
,

..
;C-.
t"
..
,
..
..

l
, .
."
,
!. ,
I:',
l'
!,'
! .
"
"'
,..
r-:,
r
;!'

," .
h,
., ,

""
,,;,.' !
/"
:: -,
(, !'

r ....
-'-,-'
""
-:;.

'.. ,
".'
,
l' .
i.<','- .
t,
j
te":
..
..
..
1

,
".
,
..
,
,

....
,
j
. .
..
. ."
l' '.
J
'"

'STACK'
83,84,65,67,75
DB
DB
\ I
i )
sono perfettamente equivalenti da un punto di vista funzionale, anche se la prima ha
un significato molto pili chiaro della seconda.
1
L'operatore DUP permette di effettuare in modo conciso dichiarazioni di variabili
variamente strutturate. Esso ha Ia seguenle sintassi:
Repliche DUP (Valorelniziale[.Valorelniziale ])
Idove il valore di Repliche it numer:o di volte che deve essere ripetuta la
kiichiarazione delle variabili i cui valori iniziali sono definiti entro Ie parentesi.
La. Crase assembler:
1definisce una variabile eli nome C, d.i tipo byte, costituita da 5 elementi, di cui il
quarto non ha un valore iniziale specificato, mentre i valori iniziali degli altri sono
ordinatamente 10 ,11 ,12, e 14. 1 cinque elementi sono a indirizzi contigui crescenti.
L'istruzione mav BL. C+2 carica 12 in BL.
I
Se Valorelniziale e una stringa eli caratteri, allora il codice ASCII relativo
a ciascun carattere e posta ordinatamente nella sequenza di byte che costituisce la
variabile. Per esempio Ie due dichiarazioni:
verifica che il suo usa sia congruente rispetto al tipo dichiarato al momento della sua
\
definizione. Per esempio, se la variabile var estata definita di tipo byte tramite 1a
. direttiva DB, 10 statement mov var. AX non eammeS80 in quante AX corrisponde a 2
" byte.
Per definire Ie variabili Passemblatore mette a disposizione del programmatore
)e alcuni tipi eli data elementare, che vengono indicati come tipi base 0 primitivi, e
corrispondono essenzialmente a Quelli del processore. Uutente puo definite egli stesso
. dei nuovi tipi, quasi come avviene nei moderni linguaggi di alto HveHo.
I tipi predefiniti in MASM BOno il Byte, la Word, la Doubleword, la Quadword
e il Tenbyte, corrispondenti a dati cbe occupano 1, 2, 4, 8, 10 byte. Essi possono
essere usati per definire Ie attraverso la direttiva Define, 13 cui sintassi ela
seguente:
y[NomeVar] Dx Valorelniziale [, Valorelniziale .... ]
), dove x pub essere una qualunque delle lettere B, W, D, Q, T, corrispondenti a ciascuno
dei tipi di dato.
r
La definizione d.i una variabile causa l'allocazione in memoria del numero di byte
corrispondente al Tipo, e in piu specifica, mediante Valorelniziale, il valore con
cui essa deve essere inizializzata staticamente al momento del caricamento.
La specifica di una lista eli Valorelniziale nella direttiva Define causa l'alIo-
I cazione di un insieme d.i oggetti dello stesso tipo, alia stregua di un array; l'indirizzo
>associato alla variabile equeUo del primo elemento. La dichiarazione:
C DB 1D.11,12.?14

.
1
666

Appendice D
.1.
t

"
,
,.
lllingu.ggio assembler (8086)
667
\
,
DB 100 DUP (0)
}aI1oca un'area di memoria eli 100 byte inizializzati a O. n frammento di codice:
10
-----
DB 100 DUP (0)
Q]
100
2
DB 10 DUP ('STACK')
[._.1 ,,1
DUP ('a',2 DUP ('b'.2 DUP ('e'), 'b').'a')
DUP .(' STACK')
10
10
1
DB
'S'I'T'
Array_Mono_Dim
1
0
1
0
1
0
1
1 2 3
mov AX, WDRD PTR C
dove l'operatore PTR informa I'assemblatore di generare Pistruzione che carica in modo
congruente a AX quanto sta all'indirizzo di C, determinando in tal modo una conver-
sione tra i tipi. n risultato dell'esecuzione dell'istruzione sara il caricarnento in AL di
10 e io AH di 11.
ARRAY DB 10 DUP Ca', 2 DU? ('a'. 2 DU? Cc). 'b'), 's')
'aTb' 'c' 'C'\'b']'b'I'c']'c'I'b'I'a'I-I, ,1, .. 1, ,I, ,[..,1 .. ,1. ,I, ,I ..
La FiguraD.7 mostra l'effetto delle tre dichiarazioni precedenti .
Oltre ai tipi scalari e agli array, l'assembler 8086 mette a disposizione del programma-
tore due tipi di variabile con struttura a record, definiti con Ie direttive STRUC/ENDS
e RECDRD.
La direttiva STRUC/ENDS viene usata per definire Ie strutture MASM, analoghe
ai record Pascal, i cui campi sono variabili di tipo qualsiasi tra quelli predefiniti.
La sintassi della direttiva ela seguente:
La tipizzazione forte dell'assembler 8086 risulta, in taluni .casi, come un ostacolo
ai fini della ottimizzazione dell'efficienza di un programma. n programmatore puo co-
munque eludere la tipizzazione, usando esplicitarnente alcuni operatori. Per esempio,
facendo riferimento alIa variabile C definita. in precedenza epossibile scrivere:
D.3.3 Variabili strutturate
1 10
Figura D. 7 Allocazione della memoria per le tre definizioni eli array nel testa.
ARRAY DB
causa 1a ripetizione per 10 volte della stringa "STACK". Si noti che a quest'area
memoria non estato associato alcun nome di variabile. .
Poiche il DUP e un operatore
l
puo essere utilizzato in modo ricorsivo. Cia
consente di dichiarare variabili complesse usando DUP in modo annidato. Per esempio
ecorretta la seguente dichiarazione:
.

..
,

,,:
.. .
-. ..
..
,.
'", ,
,
I.
,
-
, '

I
.,
l
,

....
..
..
"
-.
I
.. ,
,

..
;C-.
t"
..
,
..
..

l
, .
."
,
!. ,
I:',
l'
!,'
! .
"
"'
,..
r-:,
r
;!'

," .
h,
., ,

""
,,;,.' !
/"
:: -,
(, !'

r ....
-'-,-'
""
-:;.

'.. ,
".'
,
l' .
i.<','- .
t,
j
te":
..
..
..
1

,
".
,
..
,
,

....
,
j
. .
..
. ."
l' '.
J
'"

'STACK'
83,84,65,67,75
DB
DB
\ I
i )
sono perfettamente equivalenti da un punto di vista funzionale, anche se la prima ha
un significato molto pili chiaro della seconda.
1
L'operatore DUP permette di effettuare in modo conciso dichiarazioni di variabili
variamente strutturate. Esso ha Ia seguenle sintassi:
Repliche DUP (Valorelniziale[.Valorelniziale ])
Idove il valore di Repliche it numer:o di volte che deve essere ripetuta la
kiichiarazione delle variabili i cui valori iniziali sono definiti entro Ie parentesi.
La. Crase assembler:
1definisce una variabile eli nome C, d.i tipo byte, costituita da 5 elementi, di cui il
quarto non ha un valore iniziale specificato, mentre i valori iniziali degli altri sono
ordinatamente 10 ,11 ,12, e 14. 1 cinque elementi sono a indirizzi contigui crescenti.
L'istruzione mav BL. C+2 carica 12 in BL.
I
Se Valorelniziale e una stringa eli caratteri, allora il codice ASCII relativo
a ciascun carattere e posta ordinatamente nella sequenza di byte che costituisce la
variabile. Per esempio Ie due dichiarazioni:
verifica che il suo usa sia congruente rispetto al tipo dichiarato al momento della sua
\
definizione. Per esempio, se la variabile var estata definita di tipo byte tramite 1a
. direttiva DB, 10 statement mov var. AX non eammeS80 in quante AX corrisponde a 2
" byte.
Per definire Ie variabili Passemblatore mette a disposizione del programmatore
)e alcuni tipi eli data elementare, che vengono indicati come tipi base 0 primitivi, e
corrispondono essenzialmente a Quelli del processore. Uutente puo definite egli stesso
. dei nuovi tipi, quasi come avviene nei moderni linguaggi di alto HveHo.
I tipi predefiniti in MASM BOno il Byte, la Word, la Doubleword, la Quadword
e il Tenbyte, corrispondenti a dati cbe occupano 1, 2, 4, 8, 10 byte. Essi possono
essere usati per definire Ie attraverso la direttiva Define, 13 cui sintassi ela
seguente:
y[NomeVar] Dx Valorelniziale [, Valorelniziale .... ]
), dove x pub essere una qualunque delle lettere B, W, D, Q, T, corrispondenti a ciascuno
dei tipi di dato.
r
La definizione d.i una variabile causa l'allocazione in memoria del numero di byte
corrispondente al Tipo, e in piu specifica, mediante Valorelniziale, il valore con
cui essa deve essere inizializzata staticamente al momento del caricamento.
La specifica di una lista eli Valorelniziale nella direttiva Define causa l'alIo-
I cazione di un insieme d.i oggetti dello stesso tipo, alia stregua di un array; l'indirizzo
>associato alla variabile equeUo del primo elemento. La dichiarazione:
C DB 1D.11,12.?14

.
D.3.4 Costanti
16MASM dispone anche della. direttiva RECORD, analoga. alIa. precedente, che serve perb a definire
tipi di record i cui campi sono costituiti da bit, anziche byte, per un totale di 8 0 16 bit.
NomeStruttura STRUC
DefinizioneCampi
NomeStruttura ENDS
Ci sene due direttive che consentono di associaTe un nome simbolico a un valore
numerico od alfanumerico. Esse sono la EQU e 1a =. Si noti che in questa caso il
carattere " = " specifica un codice operativo, ossia una parola chiave che va nel
campo OP dello statement, e non un operatore. La sintassi della prima e:
\
J
\
I
\
I
,
i
\
l
I
t
I
I
]
\
I
I
I
,
669 Il lingu.ggio assembler (8086)
TOP_OF_STACK
EspressioneSemplice
10
11
12 * B + A
EQU
A
B
A
NomeCostante
CIMA
La definizione di una costante non causa allocazione di memoria e, quindi, puc
trovarsi al di fuori della definizione di qualsiasi frammento. Se 1a definizione si trova
alJ'interno di un segmento, 10 ILC attivo (si veda piu avanti) non viene incrementato.
In effetti Ie costanti definite con EQU costituiscono 1e costanti del procesao di
blaggio, mentre queUe definite con:: sono Ie variabilii entrambe costituiscono parte
dello state interno dell'assemblatore ed esistono solo durante il processo di traduzione.
EspressioneSemplice. e un'espressione il cui valore eeli tipo assoluto (ossia un
numero 0 una stringa ) noto completamente al momento dell'assemblaggio. Tale
valere risultera associato a1 NomeCostante daUo statement di definizione in poi, fino
a una successiva direttiva .. con lo stesso NomeCostante, oppure fino ana fine del
modulo.
Gli esempi che segnono mostrano l'uso della direttiva:
I1Se non diversamente specificato la base numerica e10. Tramite la direttiva .RADIX, epossibile
far assumere a MASM Ie basi 2, 8, e 16.
A una costante eassociato, come attributo, it tipo del risultato deUa espressione che
figura nella sua defi.nizione. Cosl alIa costante Anell'esempio precedente eassociato il
tipo intero, a PI e a Bil tipo reale, mentre alla costante ERROR2 e alauo alias ERROR e
associato il tipo stringa. Si Doti la definizione di numeri non decimali. Oode evitare
possibili ambiguita con i oomi, iI numerale esadecimale FOOl estato prefisso con uno
O. Un'altra possibile ambiguita. nasce quando la base e 16 e il numerale termina
con una cifra BoD. Per convenzione, se un numerale termina con una lettera che
corrisponde a un identificatore di base, il MASM l'interpreta sempre in tale maniera;
pertanto, nell1esempio, Xeinterpretato come binario
l
mentre Ycome esadecimale
17
.
Con la direttiva EQU si possono anche assegnare valori di tipo riloca.bile. Per
esempio, se il simbo1o TOP_OF..sTACK estate definito nel segmento di stack, to state-
ment:
CUR_LOC EQU \$
che assegna al sirnbolo CUR...LOC il valore, rilocabile, corrispondente alIa locazione
corrente entro i1 segI!lento corrente di assemblaggio. Supponendo che sia ILC=0009
e il "valore" del simbolo CUR..LOC edato dalla quadrupla
<CSEG,0009,NEAR,INTERNAL>
Un simbole definito con la EQU non puo essere ridefinito; tale direttivc;t. ha un
campo di azione pari a tutte il modulo in cui si trova. Costanti modificabili possono
essere viceversa definite mediante la direttiva =, che ha la seguente sintassi:
definisce il simbolo CIMA come sinonimo (alias) di TOP_OF_STACK. CIMA ha percic tutti
gli attributi di TOP_OF-STACK.
Un caso particolarmente interessante edato daUo statement: ,
';.
,I':'
..
l
1
1;:.-
)r
'1>-
f
l:.
j,
I"
'II:
fi



;1'-'
.If;
t:'
r
a
'j .
,..
,.,
.r., .
,:....
!
I
1
i
,' ,
- ,t
,..
t
'r
, .. {
1
, '
-. 'k
. :to
, (:
1.
t

,
I
'1
,.

t
I
1
,
,
,.
."
tr
"
rr" .
"", ,
,r;
'I"

,.
,.

v
r
I,
, .
.
c-,
.f: "
p;
".
I;"
,IJJf
'""I
_:' .
.- -: >

r
; ,
,
,
,
<[Valorelniziale[,Valorelniziale , ... ]>
;A e' un numero intero di val are 100
;PI e' il numero reale 3,14
;B e' il numero reale 314,0.
Found' ;ERROR2 e' una stringa ASCII
; Alias di ERROR2
;Esadecimale FOOl
;Binario 101 (decimale 5)
;Esadecimale 101B (decimale 4123)
100
3.14
PI*A
'File Not
ERROR2
OF001H
0101B
0101Bh
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
Appendice D
A
PI
B
ERROR2
ERROR
Alcool
X
y
[NomeVarJ NomeStruttura
nsuo effetto equello di definire una struttura, chiamata NomeStruttura
1
contenente i
campi specificati in Def inizioneCampi. La definizione di un campo esintatticamente
identica a quella di una variabile. Pertanto i campi sono essenzialmente variabili in
cui Pattributo indirizzo corrisponde alia spiazzamento entro la struttura.
La direttiva STRUC/ENDS non causa allocazione di memoria. Questa verra. allocata
al momento della definizione di ciascuna variabile. Una variabile di tipo struttura puo
essere definita con uno statement avente la seguente sintassi:
NomeCostante EQU Espressione
A NomeCostante viene associato il tipo "costante" e il valore ottenuto dalla valuta-
zione della Espressione. II va10re pub essere di tipo intero, reale, stringa, alias ( cioe
sinonimo di a1tri simboli ) 0 rilocabile. Per esempio sono valide Ie seguenti definizioni
di costanti:
dove NomeStruttura cleve essere it nome di una struttura definita precedentemente,
e le parentesi acute sana obbligatorie
16
.
Per fare riferimento a un campo di una variabile di tipo struttura, in modo
analogo ai linguaggi di programmazione di alto Hvello, l'assemblatore mette a dispo-
sizione una notazione estremamente comoda, basata sull'operatore spiazzamento (.),
per esprimere tale somma.
668
D.3.4 Costanti
16MASM dispone anche della. direttiva RECORD, analoga. alIa. precedente, che serve perb a definire
tipi di record i cui campi sono costituiti da bit, anziche byte, per un totale di 8 0 16 bit.
NomeStruttura STRUC
DefinizioneCampi
NomeStruttura ENDS
Ci sene due direttive che consentono di associaTe un nome simbolico a un valore
numerico od alfanumerico. Esse sono la EQU e 1a =. Si noti che in questa caso il
carattere " = " specifica un codice operativo, ossia una parola chiave che va nel
campo OP dello statement, e non un operatore. La sintassi della prima e:
\
J
\
I
\
I
,
i
\
l
I
t
I
I
]
\
I
I
I
,
669 Il lingu.ggio assembler (8086)
TOP_OF_STACK
EspressioneSemplice
10
11
12 * B + A
EQU
A
B
A
NomeCostante
CIMA
La definizione di una costante non causa allocazione di memoria e, quindi, puc
trovarsi al di fuori della definizione di qualsiasi frammento. Se 1a definizione si trova
alJ'interno di un segmento, 10 ILC attivo (si veda piu avanti) non viene incrementato.
In effetti Ie costanti definite con EQU costituiscono 1e costanti del procesao di
blaggio, mentre queUe definite con:: sono Ie variabilii entrambe costituiscono parte
dello state interno dell'assemblatore ed esistono solo durante il processo di traduzione.
EspressioneSemplice. e un'espressione il cui valore eeli tipo assoluto (ossia un
numero 0 una stringa ) noto completamente al momento dell'assemblaggio. Tale
valere risultera associato a1 NomeCostante daUo statement di definizione in poi, fino
a una successiva direttiva .. con lo stesso NomeCostante, oppure fino ana fine del
modulo.
Gli esempi che segnono mostrano l'uso della direttiva:
I1Se non diversamente specificato la base numerica e10. Tramite la direttiva .RADIX, epossibile
far assumere a MASM Ie basi 2, 8, e 16.
A una costante eassociato, come attributo, it tipo del risultato deUa espressione che
figura nella sua defi.nizione. Cosl alIa costante Anell'esempio precedente eassociato il
tipo intero, a PI e a Bil tipo reale, mentre alla costante ERROR2 e alauo alias ERROR e
associato il tipo stringa. Si Doti la definizione di numeri non decimali. Oode evitare
possibili ambiguita con i oomi, iI numerale esadecimale FOOl estato prefisso con uno
O. Un'altra possibile ambiguita. nasce quando la base e 16 e il numerale termina
con una cifra BoD. Per convenzione, se un numerale termina con una lettera che
corrisponde a un identificatore di base, il MASM l'interpreta sempre in tale maniera;
pertanto, nell1esempio, Xeinterpretato come binario
l
mentre Ycome esadecimale
17
.
Con la direttiva EQU si possono anche assegnare valori di tipo riloca.bile. Per
esempio, se il simbo1o TOP_OF..sTACK estate definito nel segmento di stack, to state-
ment:
CUR_LOC EQU \$
che assegna al sirnbolo CUR...LOC il valore, rilocabile, corrispondente alIa locazione
corrente entro i1 segI!lento corrente di assemblaggio. Supponendo che sia ILC=0009
e il "valore" del simbolo CUR..LOC edato dalla quadrupla
<CSEG,0009,NEAR,INTERNAL>
Un simbole definito con la EQU non puo essere ridefinito; tale direttivc;t. ha un
campo di azione pari a tutte il modulo in cui si trova. Costanti modificabili possono
essere viceversa definite mediante la direttiva =, che ha la seguente sintassi:
definisce il simbolo CIMA come sinonimo (alias) di TOP_OF_STACK. CIMA ha percic tutti
gli attributi di TOP_OF-STACK.
Un caso particolarmente interessante edato daUo statement: ,
';.
,I':'
..
l
1
1;:.-
)r
'1>-
f
l:.
j,
I"
'II:
fi



;1'-'
.If;
t:'
r
a
'j .
,..
,.,
.r., .
,:....
!
I
1
i
,' ,
- ,t
,..
t
'r
, .. {
1
, '
-. 'k
. :to
, (:
1.
t

,
I
'1
,.

t
I
1
,
,
,.
."
tr
"
rr" .
"", ,
,r;
'I"

,.
,.

v
r
I,
, .
.
c-,
.f: "
p;
".
I;"
,IJJf
'""I
_:' .
.- -: >

r
; ,
,
,
,
<[Valorelniziale[,Valorelniziale , ... ]>
;A e' un numero intero di val are 100
;PI e' il numero reale 3,14
;B e' il numero reale 314,0.
Found' ;ERROR2 e' una stringa ASCII
; Alias di ERROR2
;Esadecimale FOOl
;Binario 101 (decimale 5)
;Esadecimale 101B (decimale 4123)
100
3.14
PI*A
'File Not
ERROR2
OF001H
0101B
0101Bh
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
Appendice D
A
PI
B
ERROR2
ERROR
Alcool
X
y
[NomeVarJ NomeStruttura
nsuo effetto equello di definire una struttura, chiamata NomeStruttura
1
contenente i
campi specificati in Def inizioneCampi. La definizione di un campo esintatticamente
identica a quella di una variabile. Pertanto i campi sono essenzialmente variabili in
cui Pattributo indirizzo corrisponde alia spiazzamento entro la struttura.
La direttiva STRUC/ENDS non causa allocazione di memoria. Questa verra. allocata
al momento della definizione di ciascuna variabile. Una variabile di tipo struttura puo
essere definita con uno statement avente la seguente sintassi:
NomeCostante EQU Espressione
A NomeCostante viene associato il tipo "costante" e il valore ottenuto dalla valuta-
zione della Espressione. II va10re pub essere di tipo intero, reale, stringa, alias ( cioe
sinonimo di a1tri simboli ) 0 rilocabile. Per esempio sono valide Ie seguenti definizioni
di costanti:
dove NomeStruttura cleve essere it nome di una struttura definita precedentemente,
e le parentesi acute sana obbligatorie
16
.
Per fare riferimento a un campo di una variabile di tipo struttura, in modo
analogo ai linguaggi di programmazione di alto Hvello, l'assemblatore mette a dispo-
sizione una notazione estremamente comoda, basata sull'operatore spiazzamento (.),
per esprimere tale somma.
668

; I;
II
."
'II '
'[
,
,
",I

111
I' :
I:
.,
,!
'.II
i
,
:l
\

I ' , .
,
!Ii
;1 ;
.;j
,j I
I
',:
671 II linguaggio assembler (8086)
NomeFile
NomeC,Nome, ... ]
Nome: Tipo [, Nome: Tipo, ... J
INCLUDE
EXTRN
PUBLIC
che definisce uno 0 pili simboli esterni al modulo. n tipo puo essere NEAR 0 FAR per
Ie eticbette, BYTE, WORD, OWORD, FWORD, QWDRD, TBYTE per Ie variabili.
Ovviarnente per un simbolo esterno non e definito l'indirizzo. Le istruzioni che
fanno riferimento a un simbolo esterne vengono tradotte in modo incompleto. Spetta
allinker completare i codici di istruzione, utilizzando Ie informazioni della tabella dei
riferimenti esterni (Cfr. D.6.1).
Va osservato che un simbol0 dichiaratQ globale deve eomunque essere definito
can uno statement a parte, mentre la dichiarazione d.i un simbolo esterno costituisce
a tutti gli effetti la sua definizione.
D.4.3 La direttiva INCLUDE
dove NomeFile eun nome di file eontenente eodice simbolieo. L'azione corrispondente
eseguita dal1'assemblatore consiste nella sostituzione delle statement INCLUDE con

la sequenza di statement contenuti neU'archivio. E ovvio che se, per esempio, la


definizione di tutti i simboli tramite EQU efatta in un file, basta includere it file stesso
in tutti i moduli che usano Ie relative definizioni. In altre parole la direttiva consente,
oltre a evitare la riscrittura dei frammenti di codice che risultano di uso frequente, di
La direttiva END chiude il modulo simbolieo. E gia state detto (Cfr. D.2.3) che a essa
eanche demandato il compito di specificare l'indirizzo di partenza del programma,
che l'assemblatore passa a1 collegatore nel modulo oggetto e che questa pIOvvede a
comunicare at caricatore nelJleseguibile. La sintassi e:
END [etichetta]
dove etichetta rappresenta l'indirizzo della prima istruzione da eseguire.
L'etichetta deve essere specificata solo nella END del modulo corrispondente al
programma principale.
La necessita di specificare esplicitamente l'indirizzo eli avvio del programma e
dovuta al fatto che non esiste aicuna restrizione ne convenzione che 10 definisca
implicitamente, come invece accade nei linguaggi ad alto livello.
D.4.2 La direttiva END
Un problema che si presenta quando un programma e eostituito da molti moduli e
quello di mantenere la consistenza tra Ie definizioni dei vari oggetti presenti al loro
interno. La direttiva INCLUDE costituisce unO strumento potente per affrontare questa
(e non solo questa) problema.
La sua sintassi ha la forma:
..
Per fare riferirnento a un simbolo pubblico definito in un altro modulo, oecorre
dichiararlo mediante la elirettiva EXTRN
I
secondo la sintassi:
'1.
"
[1\
+-
/,

,
"
i
"
, ,.
, .;.
l-
I
',
..
":. '
,,
I ,

r
I
i' .
; ;
,
.'
,-" .
t
h.


"
I
.

: ..:
, .
t
'

, ,"
, , "
,

,'."
,
,

I
I
;
I
J
I
"
,
l
1 .
I':'
I
,
I
i
1

I
.'
,
-
I,
f
I: ..
'., ,
t
.
,
,

,:
"
. .
,I
Appendice D
Nome PROC [DistanzaJ
BloccoStatement
\ Nome ENDP
}dove BloccoStatement euna sequenza d.i statement che ne costituisce il torpa e Nome
eun simbolo che verra. assunto come suo identificatore ed associato al suo entry point.
,Infatti un di procedura.e a gli una che,
I, della defilllzlOue, Distanza gli asSQCla una dlstanza. che Vlene conslderata 11 bpo della
}procedura. Se tale parametro opzionale non especificato, viene assunta Near.
La presenza delle parenlesi PROC!ENDP edi fondamentale importanza, in quan-
l
tD da esse dipende il modo in cui l'assemblatore eodifica Ie istruzioni di ritorno da
sottoprogramma (RET). lnfatti, se la proeedura eNear, l'istruzione di ritorno dovra
efettuare solo il prelievo di If daUo stack (ritorno near), mentre se eFar dovra. pre-
levare anche CS (ritorno far).' Ovviamente aUe due azioni eorrispondono eodifiche
macchina differenti.
, E il easo di osservare che, mentre a una etichetta Far epossibile. fare un salta
..Near dall'interno del segmento in eui edefinita, cio eassolutamente impossibile per
una chiamata di in quanta si avrebbe una ineonsistenza tra il modo di
,chiamata e queUo di ritorno. .
)
DA Direttive per il collegamento dei moduli
\ 670
D.3.5 Procedure
\
1
\, Contrariamente a quanta a.ccade nei linguaggi a5semblativi della prima generazio-
ne. }'a.ssembler 8086 consente d.i specificare it fatto che una sequenza di statement
costituisce una. procedura.
1 La dichiarazione di una procedura ha la seguente sintassi:
,
\
lAlcune delle direttive dell'assemblatore souo in realta. significative anche per i pro-
grammi che operano a valle, e in partieolare per il eollegatore. Qui di seguito
si considerano tre direttive, la END, 1a PUBLIC e la (EXTRN), Ie eui funzioni sono
. jPeeificatamente legate alia fase del eoUegamento.
D.4.1 Direttive per la programmazione modulare
della programmazione modulare esostanzialmente Queno di incapsulare,
entro confini precisi, Ie funzioni richieste dal programma e Ie strutture di dati necessa-
rie per realizzarle, consentendone l'utilizzo da ogni punto della applicazione, rna solo
)ei modi previsti. Tali confini sono, nel easo della progra.mmazione assembler, i limiti
lei vari moduli.
Per rendere un simbolo disponibile anche in moduli diversi cia queUo in cui e
definito occorre dicbiararlo pubblico in quello cbe 10 definisce. A tale scopo edestinata
direttiVa PUBLIC (da non confondere con il valore omonimo della combinabilita. di
In frammento d.i segmento), con la quale l'assemblatore foroisee visibilita globale al
sirobolo. Essa ha la seguente sintassi:

; I;
II
."
'II '
'[
,
,
",I

111
I' :
I:
.,
,!
'.II
i
,
:l
\

I ' , .
,
!Ii
;1 ;
.;j
,j I
I
',:
671 II linguaggio assembler (8086)
NomeFile
NomeC,Nome, ... ]
Nome: Tipo [, Nome: Tipo, ... J
INCLUDE
EXTRN
PUBLIC
che definisce uno 0 pili simboli esterni al modulo. n tipo puo essere NEAR 0 FAR per
Ie eticbette, BYTE, WORD, OWORD, FWORD, QWDRD, TBYTE per Ie variabili.
Ovviarnente per un simbolo esterno non e definito l'indirizzo. Le istruzioni che
fanno riferimento a un simbolo esterne vengono tradotte in modo incompleto. Spetta
allinker completare i codici di istruzione, utilizzando Ie informazioni della tabella dei
riferimenti esterni (Cfr. D.6.1).
Va osservato che un simbol0 dichiaratQ globale deve eomunque essere definito
can uno statement a parte, mentre la dichiarazione d.i un simbolo esterno costituisce
a tutti gli effetti la sua definizione.
D.4.3 La direttiva INCLUDE
dove NomeFile eun nome di file eontenente eodice simbolieo. L'azione corrispondente
eseguita dal1'assemblatore consiste nella sostituzione delle statement INCLUDE con

la sequenza di statement contenuti neU'archivio. E ovvio che se, per esempio, la


definizione di tutti i simboli tramite EQU efatta in un file, basta includere it file stesso
in tutti i moduli che usano Ie relative definizioni. In altre parole la direttiva consente,
oltre a evitare la riscrittura dei frammenti di codice che risultano di uso frequente, di
La direttiva END chiude il modulo simbolieo. E gia state detto (Cfr. D.2.3) che a essa
eanche demandato il compito di specificare l'indirizzo di partenza del programma,
che l'assemblatore passa a1 collegatore nel modulo oggetto e che questa pIOvvede a
comunicare at caricatore nelJleseguibile. La sintassi e:
END [etichetta]
dove etichetta rappresenta l'indirizzo della prima istruzione da eseguire.
L'etichetta deve essere specificata solo nella END del modulo corrispondente al
programma principale.
La necessita di specificare esplicitamente l'indirizzo eli avvio del programma e
dovuta al fatto che non esiste aicuna restrizione ne convenzione che 10 definisca
implicitamente, come invece accade nei linguaggi ad alto livello.
D.4.2 La direttiva END
Un problema che si presenta quando un programma e eostituito da molti moduli e
quello di mantenere la consistenza tra Ie definizioni dei vari oggetti presenti al loro
interno. La direttiva INCLUDE costituisce unO strumento potente per affrontare questa
(e non solo questa) problema.
La sua sintassi ha la forma:
..
Per fare riferirnento a un simbolo pubblico definito in un altro modulo, oecorre
dichiararlo mediante la elirettiva EXTRN
I
secondo la sintassi:
'1.
"
[1\
+-
/,

,
"
i
"
, ,.
, .;.
l-
I
',
..
":. '
,,
I ,

r
I
i' .
; ;
,
.'
,-" .
t
h.


"
I
.

: ..:
, .
t
'

, ,"
, , "
,

,'."
,
,

I
I
;
I
J
I
"
,
l
1 .
I':'
I
,
I
i
1

I
.'
,
-
I,
f
I: ..
'., ,
t
.
,
,

,:
"
. .
,I
Appendice D
Nome PROC [DistanzaJ
BloccoStatement
\ Nome ENDP
}dove BloccoStatement euna sequenza d.i statement che ne costituisce il torpa e Nome
eun simbolo che verra. assunto come suo identificatore ed associato al suo entry point.
,Infatti un di procedura.e a gli una che,
I, della defilllzlOue, Distanza gli asSQCla una dlstanza. che Vlene conslderata 11 bpo della
}procedura. Se tale parametro opzionale non especificato, viene assunta Near.
La presenza delle parenlesi PROC!ENDP edi fondamentale importanza, in quan-
l
tD da esse dipende il modo in cui l'assemblatore eodifica Ie istruzioni di ritorno da
sottoprogramma (RET). lnfatti, se la proeedura eNear, l'istruzione di ritorno dovra
efettuare solo il prelievo di If daUo stack (ritorno near), mentre se eFar dovra. pre-
levare anche CS (ritorno far).' Ovviamente aUe due azioni eorrispondono eodifiche
macchina differenti.
, E il easo di osservare che, mentre a una etichetta Far epossibile. fare un salta
..Near dall'interno del segmento in eui edefinita, cio eassolutamente impossibile per
una chiamata di in quanta si avrebbe una ineonsistenza tra il modo di
,chiamata e queUo di ritorno. .
)
DA Direttive per il collegamento dei moduli
\ 670
D.3.5 Procedure
\
1
\, Contrariamente a quanta a.ccade nei linguaggi a5semblativi della prima generazio-
ne. }'a.ssembler 8086 consente d.i specificare it fatto che una sequenza di statement
costituisce una. procedura.
1 La dichiarazione di una procedura ha la seguente sintassi:
,
\
lAlcune delle direttive dell'assemblatore souo in realta. significative anche per i pro-
grammi che operano a valle, e in partieolare per il eollegatore. Qui di seguito
si considerano tre direttive, la END, 1a PUBLIC e la (EXTRN), Ie eui funzioni sono
. jPeeificatamente legate alia fase del eoUegamento.
D.4.1 Direttive per la programmazione modulare
della programmazione modulare esostanzialmente Queno di incapsulare,
entro confini precisi, Ie funzioni richieste dal programma e Ie strutture di dati necessa-
rie per realizzarle, consentendone l'utilizzo da ogni punto della applicazione, rna solo
)ei modi previsti. Tali confini sono, nel easo della progra.mmazione assembler, i limiti
lei vari moduli.
Per rendere un simbolo disponibile anche in moduli diversi cia queUo in cui e
definito occorre dicbiararlo pubblico in quello cbe 10 definisce. A tale scopo edestinata
direttiVa PUBLIC (da non confondere con il valore omonimo della combinabilita. di
In frammento d.i segmento), con la quale l'assemblatore foroisee visibilita globale al
sirobolo. Essa ha la seguente sintassi:

672 Appendice D
"j". ','
.' , ... -
." 'I, ,:
,. .. 4i '
.., :'1\
, ;F
"
II lingu.ggio assembler (8086)
673
)
,
\
D.4.4 II sistema macro del MASM
centralizzare Ie definizioni. Un importante campo di impiego della direttiva si ha con
l'impiego delle macro, cui si accenna qui di seguito.
dove NomeMacro e un nome e la ListaParametriFormali, eventualmente vuota,
contiene una sequenza di uno 0 pili nomi, separati da virgole. I nomi a.ssegnati ai
parametri formali SODO una classe speciale di simbali che si distingue da tutte Ie altre,
pettauto epossibile usare gli stessi nomi nella definizione di pili macro e, qualora un
nome coincida con queUo di un altro simbolo definito nel modulo, viene comunque
considerato diverso da esso.
n BloccoStatement e una sequenza di statement assembler di qualsiasi tipo,
comprese Ie chiamate di macro e anebe Ie direttive di definizione di altre macro, che
cosl risulteranno annidate al suo interno.
Uimpiego di una macro} detto impropriamente chiamata, consiste nell'indicare il
suo nome nel campo OP di uno statement, fomende in queUo Operandi gli eventuali
parametri attuali, ciascuno dei quali verra fatto corrispondere posizionalmente con
uno formale della definizione. La sintassi di ebiamata di una macro e:
dove 1a ListaParametriAttuali, eventualmente vuota., contiene una. sequenza di uno
o piu simboli separati da virgole, questf possono essere identificatori , nomi di registri ,
costanti numeriche ejo caratteri e altri. Durante l'assemblaggio, a ogni occorrenza
nome di una macro, viene sostituito il blocco di statement the ne costituisce i1 carpo,
effettuando casll'l(espansione" della macro. In questa fase i parametri attuali, specifi-
cati nella chiamata, vengono sostituiti ai corrispondenti pararnetri formali, operando
una sostituzione di stringa. n codice ottenuto viene poi normalmente assemblato.
Una discussione dettagliata sulle macro esula dai contini di questa appendice.
Qui di seguito viene mostrato un esempio che dovrebbe chiarirne l'utilita.
Si supponga che da pili parti di un programma 5i debba pre5entare brevi mes5aggi
di testo sui video. A tal fine 5i pub utilizzare Ie funzioni offerte dal DOS. La chiamata
al DOS si effettua con Pistruzione int 21H} passando nel registro AH il numero 9
,
identificativo della funzione di presentazione di una stringa di caratteri suI display.
I
]
\
j
I
!
1
1
J
\
I
!
\
\
1
DOS
coata.nti
13 ;ritorno carrello
10 ; nuova linea.
;msg e' il formale
; (DS:DX) = indirizzo di msg
;(AH) = codice della funzione
; Oefinizione
CR equ
LF equ
; Interfaccia con l'esterno
,sall .; soppress, espansione macro nel testo
endif
extrn SUB1: near
public Ma.in

,
._--------------------------------------

page ,132
TITLE ESEKPIO
Comment *
File sorgente: ESEHPIO.ASM
end of COl!llllent *
HESSAGGID
msg
OX,offset msg
ah.g
21H
DISPLAY
mov
mov
illt
eridm
Per presentare la stringa di nome MESSAGGIO, basta sctivere:
1
2
3
4
S
6
7
8
9
10
11
12
13
14 .. OOOD
15 OOOA
II modulo ESEHPIO, ASH,
18Per convenieoza nel riportare i listati saGO state esduse alcune Iinee degli originali ritenute prive
di interesse.
Viene ora mdstrato e cornmentato un semplice esempio di programma assembler. n
programma efatto dei due moduli: il modulo ESEMPIO, che contiene il programma
principale e il modulo SUBl che contiene un sottoprogramma. Sia il modulo principale
sia il sottoprogramma non fanno altro che presentare un messaggio a video. A tale
scopo} l'uno e l'altro fanno uso della macro DISPLAY appena introdotta.
Vengono presentati i listati prodotti dall'assemblatore. Questi, rispetto al testo
del programma sorgente contengono Ie informazioni corrispondenti alia traduzione e
Ie tavole dei simboli
18
.
,
D.5 Un esempio di programma assembler
DISPLAY macro
L'indirizzo della stringa viene passato al DOS, come solo scostamento) in ox, n DOS
assume che il registro il segmento in cui si trova 1a stringa sia quello individuato da
DS. Si pub definire la macro DISPLAY nel modo seguente:
,'
!(
....
t
..
(.!

}-:;
;:.'
;...
!;:-
'H
r::'
". ,.:
"
It

'I;' .
I t: -'

.
..
..
..
1,;
:; .,
..

k'
"
rr:,.
:n
.
....
.\_.
1
"
! '!;,.,
i :.-,
, ':

.,
, ;'"i:-.
".. , " C'
, . "
J"
I. ' ..,
"
'I
,' '!",
"

, ,
, "' i ',f'
..
.' i
.. ,
" 'I'
",i " ". ' . ,.- , . _.
..
..
f:,,'
, .
'f' ,
,
:. ':
;..
,.
, ,;1-
'J.: .
.. ... . ID""
, .' .
,
,1
,'1:":
, ....

, '
..
.
. t'"
., .1 ,

[ListaParametriAttuali] NomeMacro
L'uso delle macro consente di ripetere in IJ.laniera semplice ed efficace la codifica di
un insieme di istruzioni utilizzato piu volte nel codice. Esse sano peTcie un vaUda
strumento per queUe funzioni, identificate nella rase di progetto, trappo minute per
giustificare 1a realizzazione con una procedura, oppure per Ie quali i requisiti tempbrali
siano incompatibili con l'overhead di chiamata. Una macro evita l'uso delle istruzioni
per 1a chiamata e il passaggio dei parametri necessari nel caso delle procedure. Per
contro si incorrera. in un aumenta delle dimensioni del codice, poiche Ie istruzioni che
realizzano la funzione appariranno tante volte Quante sono Ie chiamate.
Una macro viene den.nita utilizzando la coppia di direttive MACRO/ENDM, secondo
la sintassi:
NomeMacro MACRO [ListaParametriFormali]
BloccoStatement
ENDH
.,"..;,
Ie';:-
672 Appendice D
"j". ','
.' , ... -
." 'I, ,:
,. .. 4i '
.., :'1\
, ;F
"
II lingu.ggio assembler (8086)
673
)
,
\
D.4.4 II sistema macro del MASM
centralizzare Ie definizioni. Un importante campo di impiego della direttiva si ha con
l'impiego delle macro, cui si accenna qui di seguito.
dove NomeMacro e un nome e la ListaParametriFormali, eventualmente vuota,
contiene una sequenza di uno 0 pili nomi, separati da virgole. I nomi a.ssegnati ai
parametri formali SODO una classe speciale di simbali che si distingue da tutte Ie altre,
pettauto epossibile usare gli stessi nomi nella definizione di pili macro e, qualora un
nome coincida con queUo di un altro simbolo definito nel modulo, viene comunque
considerato diverso da esso.
n BloccoStatement e una sequenza di statement assembler di qualsiasi tipo,
comprese Ie chiamate di macro e anebe Ie direttive di definizione di altre macro, che
cosl risulteranno annidate al suo interno.
Uimpiego di una macro} detto impropriamente chiamata, consiste nell'indicare il
suo nome nel campo OP di uno statement, fomende in queUo Operandi gli eventuali
parametri attuali, ciascuno dei quali verra fatto corrispondere posizionalmente con
uno formale della definizione. La sintassi di ebiamata di una macro e:
dove 1a ListaParametriAttuali, eventualmente vuota., contiene una. sequenza di uno
o piu simboli separati da virgole, questf possono essere identificatori , nomi di registri ,
costanti numeriche ejo caratteri e altri. Durante l'assemblaggio, a ogni occorrenza
nome di una macro, viene sostituito il blocco di statement the ne costituisce i1 carpo,
effettuando casll'l(espansione" della macro. In questa fase i parametri attuali, specifi-
cati nella chiamata, vengono sostituiti ai corrispondenti pararnetri formali, operando
una sostituzione di stringa. n codice ottenuto viene poi normalmente assemblato.
Una discussione dettagliata sulle macro esula dai contini di questa appendice.
Qui di seguito viene mostrato un esempio che dovrebbe chiarirne l'utilita.
Si supponga che da pili parti di un programma 5i debba pre5entare brevi mes5aggi
di testo sui video. A tal fine 5i pub utilizzare Ie funzioni offerte dal DOS. La chiamata
al DOS si effettua con Pistruzione int 21H} passando nel registro AH il numero 9
,
identificativo della funzione di presentazione di una stringa di caratteri suI display.
I
]
\
j
I
!
1
1
J
\
I
!
\
\
1
DOS
coata.nti
13 ;ritorno carrello
10 ; nuova linea.
;msg e' il formale
; (DS:DX) = indirizzo di msg
;(AH) = codice della funzione
; Oefinizione
CR equ
LF equ
; Interfaccia con l'esterno
,sall .; soppress, espansione macro nel testo
endif
extrn SUB1: near
public Ma.in

,
._--------------------------------------

page ,132
TITLE ESEKPIO
Comment *
File sorgente: ESEHPIO.ASM
end of COl!llllent *
HESSAGGID
msg
OX,offset msg
ah.g
21H
DISPLAY
mov
mov
illt
eridm
Per presentare la stringa di nome MESSAGGIO, basta sctivere:
1
2
3
4
S
6
7
8
9
10
11
12
13
14 .. OOOD
15 OOOA
II modulo ESEHPIO, ASH,
18Per convenieoza nel riportare i listati saGO state esduse alcune Iinee degli originali ritenute prive
di interesse.
Viene ora mdstrato e cornmentato un semplice esempio di programma assembler. n
programma efatto dei due moduli: il modulo ESEMPIO, che contiene il programma
principale e il modulo SUBl che contiene un sottoprogramma. Sia il modulo principale
sia il sottoprogramma non fanno altro che presentare un messaggio a video. A tale
scopo} l'uno e l'altro fanno uso della macro DISPLAY appena introdotta.
Vengono presentati i listati prodotti dall'assemblatore. Questi, rispetto al testo
del programma sorgente contengono Ie informazioni corrispondenti alia traduzione e
Ie tavole dei simboli
18
.
,
D.5 Un esempio di programma assembler
DISPLAY macro
L'indirizzo della stringa viene passato al DOS, come solo scostamento) in ox, n DOS
assume che il registro il segmento in cui si trova 1a stringa sia quello individuato da
DS. Si pub definire la macro DISPLAY nel modo seguente:
,'
!(
....
t
..
(.!

}-:;
;:.'
;...
!;:-
'H
r::'
". ,.:
"
It

'I;' .
I t: -'

.
..
..
..
1,;
:; .,
..

k'
"
rr:,.
:n
.
....
.\_.
1
"
! '!;,.,
i :.-,
, ':

.,
, ;'"i:-.
".. , " C'
, . "
J"
I. ' ..,
"
'I
,' '!",
"

, ,
, "' i ',f'
..
.' i
.. ,
" 'I'
",i " ". ' . ,.- , . _.
..
..
f:,,'
, .
'f' ,
,
:. ':
;..
,.
, ,;1-
'J.: .
.. ... . ID""
, .' .
,
,1
,'1:":
, ....

, '
..
.
. t'"
., .1 ,

[ListaParametriAttuali] NomeMacro
L'uso delle macro consente di ripetere in IJ.laniera semplice ed efficace la codifica di
un insieme di istruzioni utilizzato piu volte nel codice. Esse sano peTcie un vaUda
strumento per queUe funzioni, identificate nella rase di progetto, trappo minute per
giustificare 1a realizzazione con una procedura, oppure per Ie quali i requisiti tempbrali
siano incompatibili con l'overhead di chiamata. Una macro evita l'uso delle istruzioni
per 1a chiamata e il passaggio dei parametri necessari nel caso delle procedure. Per
contro si incorrera. in un aumenta delle dimensioni del codice, poiche Ie istruzioni che
realizzano la funzione appariranno tante volte Quante sono Ie chiamate.
Una macro viene den.nita utilizzando la coppia di direttive MACRO/ENDM, secondo
la sintassi:
NomeMacro MACRO [ListaParametriFormali]
BloccoStatement
ENDH
.,"..;,
Ie';:-
1 674 Appendice D
I
CLOSE . . .
6
I
DISPLAY


3
J
KBDIN
2
{ OPEN ..
6
675
assemble< (8085)
,132
SOTIOPROGRAMHA SUBt
. saIl
eudit
public SUBl
page
TITLE
File sorgente: SUEt.ASH
Definizione costanti
CR equ 13
LF equ 10
,---------------------------------------
Text
' [2J'
Number
0000
L BYTE
0018 DATA
Number OOOA
F PROe
0000 CSEG
Global Length 0016
NEAR
0000 DATA
L FAR
0000 Erternal
L WORD 00C8 STACK

.
Lines
Lines

.
a Warning Errors
o Severe Errors
= 0000
'" OOOA
48888 Bytes symbol space.1ree
51 Source
54 Total
37 Symbols
II modulo SUBl.ASH:
Segments and Groups:
N a ru e
Size
Align Combine Class
CSEG .
0016
PARA PUBLIC 'CODE'
DATA .
001C
PARA PUBLIC 'DATA'
STACK
00C8
PARA STACK 'STACK'
Symbols:
Name
Type Value Attr
CLEARSCRN
CR .
EOL
LF .
HAlN
MESSAGGIO
SUBl
TOSl . . .
"
A; ,
'j'
,
f
,
;
j
I
!"
,
I
I
I
t"
t:
r
I
i
,
;>

! .
L
',::
",'
I.' '
f
I' .
,
,.
I
!..
r
-1'
I
: "
't
, .
..
I:
, ' , .
'!


1
;Codice Escape
;Pulisce il video
dal Main!'
;Mette in OS 1a base
; del segmento DATA
;Messaggio iniziale
;chiama subr. esterna
;Viene salvato 05:0000
; per tornare al DOS
; con l'istruzione RET
PUBLIC 'DATA'
WORD
cr ,If
If,'$'
LABEL
ENDS
08
DB
ends
PUSH OS
SUB AX,AI
PUSH AX
MOV AX ,DATA
MOV OS ,AX
DISPLAY Hessaggio
call SUB1
EOL
CSEG SEGMENT PUBLIC 'CODE' ; seg. codice
Main proc FAR
Assume CS:CSEG,DS:DATA,SS:STACK,ES:nothing
ClearSCRN equ [2J'
DATA
DATA segment
Messaggio EQU $
DB 27
db ClearSCRN
DB 'Buongiorno
RET ;a1 DOS (pop, CS,IP PPS,OOOO)
Main endp
CSEG ENDS
END
,---------------------------------------
TOSI
STACK
;---------------------------------------
STACK SEGMENT STACK 'STACK'
08 40 DUP('STACK')
,---------------------------------------
Lines
88 ---- R
8E D8
lE
28 CO
50
Macros:

\ N a m e
I
I
)
16
17
18 0000
19 0000 0028 [
20 53 54 41 43 48
I 21 1
22
23 00C8
24 OOC8
I
25
26 0000
I 27". DODO
28 0000 18
29 0001 58 32 4.1
30 0004 42 75 6F 6E 67 69 6F
31 72 6E 6F 20 64 61 6e
32 20 4D 61 69 6E 21
33 0018 00 OA
34 OOlA OA 24
35 001C
36
37 0000
\
38 DODO
39
I 40
41 0000
42 0001
I
43 0003
44
45 0004
46 0007
47
48
49 0010 9.1 0000 ---- E
50
51 0015 CB
, 52
I 53 0016
I 54
I
I
I

-
-
-
-
-
-
-
-
- \
-
-
-
-
-
-
-

-
1-
-
I
I
0000
DATA SEGMENT PUBLlC 'DATA'
1 674 Appendice D
I
CLOSE . . .
6
I
DISPLAY


3
J
KBDIN
2
{ OPEN ..
6
675
assemble< (8085)
,132
SOTIOPROGRAMHA SUBt
. saIl
eudit
public SUBl
page
TITLE
File sorgente: SUEt.ASH
Definizione costanti
CR equ 13
LF equ 10
,---------------------------------------
Text
' [2J'
Number
0000
L BYTE
0018 DATA
Number OOOA
F PROe
0000 CSEG
Global Length 0016
NEAR
0000 DATA
L FAR
0000 Erternal
L WORD 00C8 STACK

.
Lines
Lines

.
a Warning Errors
o Severe Errors
= 0000
'" OOOA
48888 Bytes symbol space.1ree
51 Source
54 Total
37 Symbols
II modulo SUBl.ASH:
Segments and Groups:
N a ru e
Size
Align Combine Class
CSEG .
0016
PARA PUBLIC 'CODE'
DATA .
001C
PARA PUBLIC 'DATA'
STACK
00C8
PARA STACK 'STACK'
Symbols:
Name
Type Value Attr
CLEARSCRN
CR .
EOL
LF .
HAlN
MESSAGGIO
SUBl
TOSl . . .
"
A; ,
'j'
,
f
,
;
j
I
!"
,
I
I
I
t"
t:
r
I
i
,
;>

! .
L
',::
",'
I.' '
f
I' .
,
,.
I
!..
r
-1'
I
: "
't
, .
..
I:
, ' , .
'!


1
;Codice Escape
;Pulisce il video
dal Main!'
;Mette in OS 1a base
; del segmento DATA
;Messaggio iniziale
;chiama subr. esterna
;Viene salvato 05:0000
; per tornare al DOS
; con l'istruzione RET
PUBLIC 'DATA'
WORD
cr ,If
If,'$'
LABEL
ENDS
08
DB
ends
PUSH OS
SUB AX,AI
PUSH AX
MOV AX ,DATA
MOV OS ,AX
DISPLAY Hessaggio
call SUB1
EOL
CSEG SEGMENT PUBLIC 'CODE' ; seg. codice
Main proc FAR
Assume CS:CSEG,DS:DATA,SS:STACK,ES:nothing
ClearSCRN equ [2J'
DATA
DATA segment
Messaggio EQU $
DB 27
db ClearSCRN
DB 'Buongiorno
RET ;a1 DOS (pop, CS,IP PPS,OOOO)
Main endp
CSEG ENDS
END
,---------------------------------------
TOSI
STACK
;---------------------------------------
STACK SEGMENT STACK 'STACK'
08 40 DUP('STACK')
,---------------------------------------
Lines
88 ---- R
8E D8
lE
28 CO
50
Macros:

\ N a m e
I
I
)
16
17
18 0000
19 0000 0028 [
20 53 54 41 43 48
I 21 1
22
23 00C8
24 OOC8
I
25
26 0000
I 27". DODO
28 0000 18
29 0001 58 32 4.1
30 0004 42 75 6F 6E 67 69 6F
31 72 6E 6F 20 64 61 6e
32 20 4D 61 69 6E 21
33 0018 00 OA
34 OOlA OA 24
35 001C
36
37 0000
\
38 DODO
39
I 40
41 0000
42 0001
I
43 0003
44
45 0004
46 0007
47
48
49 0010 9.1 0000 ---- E
50
51 0015 CB
, 52
I 53 0016
I 54
I
I
I

-
-
-
-
-
-
-
-
- \
-
-
-
-
-
-
-

-
1-
-
I
I
0000
DATA SEGMENT PUBLlC 'DATA'
N arne Type Value Attr
CR '
.
Number 0000
LF '
. , , .. ..
Number OOOA.
SIGNTUR
L BYTE 0000 DATA
SUB1 '
F PROC 0000 CSEG
Global Length 0008
15
,
17 0000
42 75 5F 5E 67 69 6F
SIGNTUR db
'Buongiorno da SUB1!' ,cr,lO,lf
18
72 5E 6F 20 64 51 20
19
53 55 42 31 21 00 OA
20 OA
21 0016 24
db ' $'
22 0017
DATA ENDS
23
24 0000
CSEG
SEGMENT PUBLIC 'CODE'
25 0000
SUBI
proc . FAR
25
ASSUME CS:CSEG,DS:DATA,SS:nothing
27
28
DISPLAY SIGNTUR
29 0007 G3
ret
; near al chiamante
30
SUBI endp
31 0008
CSEG ends
32
end
Vale la pena di ricmamare Pattenzione sui seguenti punti.
49950 Bytes symbol space tree
,I
j-
-
P
Ii
)1
jc
-
~
jJ
,
,
1]
\ ~
-
P
1
1
,j
\-
d
I
1;
Class
STACK
Start Stop Length Name
OOOOOH 000C7H 000C8H STACK
II lingu.ggio assembler (8085) 577
Le prime istruzioni in Main hanno l'effetto di salvare l'indirizzo d.i ritomo a.l
DOS. La convenzione eche il DOS, nel passare il controllo, ha in OS la base di
un segmento di memoria che, aHo scostamento 0, contiene un'istruzione di saito
come ritorno al DOS stesso. Salvando nella stack la coppia DS:OOOO, URET in
Main ha l'effetto di far passare il contralto alta locazione di memoria che contiene
il saito al DOS'o,
II listato non mostra l'espansione delle macro per via dello statement. sall. In-
oltre il testo di esempio contiene due ulteriori linee ill programma, if1 e include
DOS, MAC, L. seconda dice di indudere il file DOS', MAC che comprende le macro
listate nella relativa tavola, tra cui DISPLAY, rna, per via della direttiva if 1., non
viene letta che a passo 1 e per questa non riportata nel listato, come del resto
non eriportata la direttiva if 1 stessa
19
.
L'unica azione svolta in SUB1 ela presentaziane della stringa SIGNTIJR.
Subito dopo la preparazione del ritorno a1 DOS, OS viene portato a puntare al
segmento DATA.
Le azioru svolte da Main sono: (1) presentazione del Messaggioj (2) chiamata a
SUB!; (3) ritorno at DOS. Si faccia attenzione alle definizioni nel segmento dati
del modulo ESEMPIO.
11 sottoprogramma SUB1 esviluppato come modulo separato da ESEMPIO, dunque
viene dichiarato esterno. Inoltre la pracedura SUB1 edichiarata NEAR, A questa
proposito si confronti il codice prodotto dall'assemblatore per 10 statement RET
in SUBl (C3) con il codice prodotta per il medesimo statement in Main (CB) , Nel
primo caso l'istruzione determina estrazione daUo stack del solo IP, nel secondo
caso dell. coppi. IP ,CS,
Con la illrettiva END si stabilisce che il punto d.i entrata corrisponde a1 simbolo
Main, dichiarato FAR,
19Si tralta ovviamente di scelte progettuali, alquanto discutibili, di chi ha proget.tato
I'assemblatore.
20Un modo alternaliVQ per tornare a! DOS consist'e nell'impiegare una delle funziooi DOS previste
per questo scopo.
A fine dei listati sono riportate la tavola delle macro, la tavola dei segmenti e
quella dei simboli. n lettore einvitato a un attento esame di queste tavole ( a
parte quella delle macro the, in questa caso, aggiunge paca infarmazione), Per
esempio: il simbolo Main e una procedura FAR, globale, che sta nel segmento
CSEG, a partire dallo scostamento ed occupa 16 byte.
Viene ora riportata la mappa dei simbali prodotta dal linker, Essa dice come
sonG posizionati e quanto occupano i segmenti dopa il processo di collegamento.
',J'-
,
f
J,
..
.1',
"
~ p
..
,.
I
..;,
,j .'
"
ii',
Ji:
..
"
,
,
r
,
"
,

."'"
ir
,
,
l;'
~
..
, ,
. ,
.!,
~ ;:.
l'"
~ f
~ ~
,
..
"
.f
Ii:
..
~ .
1>
,
~ : - .
I
t
t
.\' .
"
ll:
I'
,,
.
..
..
J
'j'
.,
,'
{
I
\.
'f
r
,
,

,
,'
,
".'
I'

,
J:
1;
I
t,
t
,
T.
:r
3
6
, ,
Combine Class
PUBLIC 'CODE'
PUBLIC 'DATA'
6 DISPLAY
2 OPEN . .
0008 PARA
0017 PARA
Size Align
,
Lines
, ,
N arne
Symbols:
a Warning Errors
a Severe Errors
31 Source Lines
34 Total Lines
32 Symbols
CSEG
DATA
Segments and Groups:
N arne
CLOSE
KBDIN
Macros:
676 Appendice D
N arne Type Value Attr
CR '
.
Number 0000
LF '
. , , .. ..
Number OOOA.
SIGNTUR
L BYTE 0000 DATA
SUB1 '
F PROC 0000 CSEG
Global Length 0008
15
,
17 0000
42 75 5F 5E 67 69 6F
SIGNTUR db
'Buongiorno da SUB1!' ,cr,lO,lf
18
72 5E 6F 20 64 51 20
19
53 55 42 31 21 00 OA
20 OA
21 0016 24
db ' $'
22 0017
DATA ENDS
23
24 0000
CSEG
SEGMENT PUBLIC 'CODE'
25 0000
SUBI
proc . FAR
25
ASSUME CS:CSEG,DS:DATA,SS:nothing
27
28
DISPLAY SIGNTUR
29 0007 G3
ret
; near al chiamante
30
SUBI endp
31 0008
CSEG ends
32
end
Vale la pena di ricmamare Pattenzione sui seguenti punti.
49950 Bytes symbol space tree
,I
j-
-
P
Ii
)1
jc
-
~
jJ
,
,
1]
\ ~
-
P
1
1
,j
\-
d
I
1;
Class
STACK
Start Stop Length Name
OOOOOH 000C7H 000C8H STACK
II lingu.ggio assembler (8085) 577
Le prime istruzioni in Main hanno l'effetto di salvare l'indirizzo d.i ritomo a.l
DOS. La convenzione eche il DOS, nel passare il controllo, ha in OS la base di
un segmento di memoria che, aHo scostamento 0, contiene un'istruzione di saito
come ritorno al DOS stesso. Salvando nella stack la coppia DS:OOOO, URET in
Main ha l'effetto di far passare il contralto alta locazione di memoria che contiene
il saito al DOS'o,
II listato non mostra l'espansione delle macro per via dello statement. sall. In-
oltre il testo di esempio contiene due ulteriori linee ill programma, if1 e include
DOS, MAC, L. seconda dice di indudere il file DOS', MAC che comprende le macro
listate nella relativa tavola, tra cui DISPLAY, rna, per via della direttiva if 1., non
viene letta che a passo 1 e per questa non riportata nel listato, come del resto
non eriportata la direttiva if 1 stessa
19
.
L'unica azione svolta in SUB1 ela presentaziane della stringa SIGNTIJR.
Subito dopo la preparazione del ritorno a1 DOS, OS viene portato a puntare al
segmento DATA.
Le azioru svolte da Main sono: (1) presentazione del Messaggioj (2) chiamata a
SUB!; (3) ritorno at DOS. Si faccia attenzione alle definizioni nel segmento dati
del modulo ESEMPIO.
11 sottoprogramma SUB1 esviluppato come modulo separato da ESEMPIO, dunque
viene dichiarato esterno. Inoltre la pracedura SUB1 edichiarata NEAR, A questa
proposito si confronti il codice prodotto dall'assemblatore per 10 statement RET
in SUBl (C3) con il codice prodotta per il medesimo statement in Main (CB) , Nel
primo caso l'istruzione determina estrazione daUo stack del solo IP, nel secondo
caso dell. coppi. IP ,CS,
Con la illrettiva END si stabilisce che il punto d.i entrata corrisponde a1 simbolo
Main, dichiarato FAR,
19Si tralta ovviamente di scelte progettuali, alquanto discutibili, di chi ha proget.tato
I'assemblatore.
20Un modo alternaliVQ per tornare a! DOS consist'e nell'impiegare una delle funziooi DOS previste
per questo scopo.
A fine dei listati sono riportate la tavola delle macro, la tavola dei segmenti e
quella dei simboli. n lettore einvitato a un attento esame di queste tavole ( a
parte quella delle macro the, in questa caso, aggiunge paca infarmazione), Per
esempio: il simbolo Main e una procedura FAR, globale, che sta nel segmento
CSEG, a partire dallo scostamento ed occupa 16 byte.
Viene ora riportata la mappa dei simbali prodotta dal linker, Essa dice come
sonG posizionati e quanto occupano i segmenti dopa il processo di collegamento.
',J'-
,
f
J,
..
.1',
"
~ p
..
,.
I
..;,
,j .'
"
ii',
Ji:
..
"
,
,
r
,
"
,

."'"
ir
,
,
l;'
~
..
, ,
. ,
.!,
~ ;:.
l'"
~ f
~ ~
,
..
"
.f
Ii:
..
~ .
1>
,
~ : - .
I
t
t
.\' .
"
ll:
I'
,,
.
..
..
J
'j'
.,
,'
{
I
\.
'f
r
,
,

,
,'
,
".'
I'

,
J:
1;
I
t,
t
,
T.
:r
3
6
, ,
Combine Class
PUBLIC 'CODE'
PUBLIC 'DATA'
6 DISPLAY
2 OPEN . .
0008 PARA
0017 PARA
Size Align
,
Lines
, ,
N arne
Symbols:
a Warning Errors
a Severe Errors
31 Source Lines
34 Total Lines
32 Symbols
CSEG
DATA
Segments and Groups:
N arne
CLOSE
KBDIN
Macros:
676 Appendice D
II processo di traduzione da modulo sorgente a modulo oggetto, 0 modulo rilocabile,
edi norma in due passi, che si rendono necessari in quanta un generieD statement
\
puo fare riferimento a oggetti non ancora definiti (riferimenti in avanti). n processo
di assemblaggio eschematizzato in Figura D.8.
lFigura D.8 Assemblatore a due passi.
Program entry point at 0011:0000
OOODOH OOl06H 00037H DATA
OOIIOH OOl37H 00028H CSEG
Ii

il
"
I
I
I
d
,
I
,:I
,,
,
I
,I
II 'I
\
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
________ ...J
Tabelle dinamiche
I Tabella Macro I
I Tabella Segmenti I
1 Tabella Simboli I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
IL _
r------------------,
L

Codice
lnter-
media
1
r
Modulo sorgente
I
.
Pass.o 1
Tabelle interne
Stalo
r------------------l
I
\ I Conlalari I
I
I
i \ Segmento corrente 1
I
L J
lliinguaggio assembler (8086) 619
r------------------l
i I Direltive I U
I I
I I
: I Operatari It
I I
I I
: 1 lstruzioni I :
I I
L J
" .

1
1: '
,.
.
'J




',"
r t,
'li'
r
' ,,'.
'i.,


I;";'
,
[' " .
, '"
r,
"i".
",",'
, ..
, ql'
;;I,
.
.'

e;,
'C.
..
: ';""
, ..
, .
, ',,,
" ' I '
,
. ." , . !Jt '
,.. 'r'"
'. .
'.' ,\
l' " ' .' ..
,1 ' '
i.
,
. 1\"
. '.
,'
,



,
:'"
,
,{:
,
.i'l;;
,
.
'. . !
,- ,'",
.:"';" '
. .i,,'
DATA
CODE
Appendice D
/' """
)
( Sorgente PI P2 Oggetto
r
--- _. -.
I Tabelle I
'--------'
codice
inlermedio
D.6 11 processo di traduzione
618
\
1
\
\
I
!

-
-

-
-

-
-
-
l
n primo passe ha il compito di associare un indirizzo ai nomi di variabili e alle,
etichette che compaiono nel testo. Ovviamente un indirizzo e formata cia, due .
i1 selettore e 10 scostamento. nselettore eun simbolo, ed edata cial Dome.
del segmento in cui I'oggetto edichiarato. La scostamente erelative alIa posizione
\ dell'cggetto rispetto all'inizio del segmento 5tessc. '.
Per tener traccia. delle scostamento, Passemblatore utilizza una. variabile desi-
\
gnata come ILC (Instruction Location Cou.nter). ILC viene azzerata alPinizio di un
segmento e viene incrementata man mano che vengono esaminati i vari comandi.
cremento epari al numero di byte ricrnesti per 1a traduzione in linguaggio macchina
della statement in esame.
Si noti che J!indirizzo assegnato dalJ!assemblatore non edefinitivo e non corris-
1ponde all'indirizzo fisico a cui l'oggetto verra. assegnato in memoriaj si tratta pi.uttosto
di un indirizzo preso in un spazio degli indirizzi, che parte convenzionalmente
dalla posizione zero per tutti i segmenti. nlinker, nel generate il . exe, puo modificare
I
I
f,
g
'j'
<', ,
.
'1:

u'"

li'
t
}.

!
I

.
',,'
'il,
',. '
;;' .
f

T'
.f.
T
.t'.,
1,-

Passo 2
Modulo
oggelto Lisle
Figura D.9 Schema di funzionamento di un assemblatore a due passi. Lo schema si riferisce
sostanzialmente a.l MASM, rna, a parte alcllni dettagli specifici (per esempio, la tabella dei
segmenti), ha valore generale. I prodotti del Passo 1 sana; il codice intermedio e Ie tabeUe
dinamiche,
I ,
,
, I
I
,
,
II processo di traduzione da modulo sorgente a modulo oggetto, 0 modulo rilocabile,
edi norma in due passi, che si rendono necessari in quanta un generieD statement
\
puo fare riferimento a oggetti non ancora definiti (riferimenti in avanti). n processo
di assemblaggio eschematizzato in Figura D.8.
lFigura D.8 Assemblatore a due passi.
Program entry point at 0011:0000
OOODOH OOl06H 00037H DATA
OOIIOH OOl37H 00028H CSEG
Ii

il
"
I
I
I
d
,
I
,:I
,,
,
I
,I
II 'I
\
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
________ ...J
Tabelle dinamiche
I Tabella Macro I
I Tabella Segmenti I
1 Tabella Simboli I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
IL _
r------------------,
L

Codice
lnter-
media
1
r
Modulo sorgente
I
.
Pass.o 1
Tabelle interne
Stalo
r------------------l
I
\ I Conlalari I
I
I
i \ Segmento corrente 1
I
L J
lliinguaggio assembler (8086) 619
r------------------l
i I Direltive I U
I I
I I
: I Operatari It
I I
I I
: 1 lstruzioni I :
I I
L J
" .

1
1: '
,.
.
'J




',"
r t,
'li'
r
' ,,'.
'i.,


I;";'
,
[' " .
, '"
r,
"i".
",",'
, ..
, ql'
;;I,
.
.'

e;,
'C.
..
: ';""
, ..
, .
, ',,,
" ' I '
,
. ." , . !Jt '
,.. 'r'"
'. .
'.' ,\
l' " ' .' ..
,1 ' '
i.
,
. 1\"
. '.
,'
,



,
:'"
,
,{:
,
.i'l;;
,
.
'. . !
,- ,'",
.:"';" '
. .i,,'
DATA
CODE
Appendice D
/' """
)
( Sorgente PI P2 Oggetto
r
--- _. -.
I Tabelle I
'--------'
codice
inlermedio
D.6 11 processo di traduzione
618
\
1
\
\
I
!

-
-

-
-

-
-
-
l
n primo passe ha il compito di associare un indirizzo ai nomi di variabili e alle,
etichette che compaiono nel testo. Ovviamente un indirizzo e formata cia, due .
i1 selettore e 10 scostamento. nselettore eun simbolo, ed edata cial Dome.
del segmento in cui I'oggetto edichiarato. La scostamente erelative alIa posizione
\ dell'cggetto rispetto all'inizio del segmento 5tessc. '.
Per tener traccia. delle scostamento, Passemblatore utilizza una. variabile desi-
\
gnata come ILC (Instruction Location Cou.nter). ILC viene azzerata alPinizio di un
segmento e viene incrementata man mano che vengono esaminati i vari comandi.
cremento epari al numero di byte ricrnesti per 1a traduzione in linguaggio macchina
della statement in esame.
Si noti che J!indirizzo assegnato dalJ!assemblatore non edefinitivo e non corris-
1ponde all'indirizzo fisico a cui l'oggetto verra. assegnato in memoriaj si tratta pi.uttosto
di un indirizzo preso in un spazio degli indirizzi, che parte convenzionalmente
dalla posizione zero per tutti i segmenti. nlinker, nel generate il . exe, puo modificare
I
I
f,
g
'j'
<', ,
.
'1:

u'"

li'
t
}.

!
I

.
',,'
'il,
',. '
;;' .
f

T'
.f.
T
.t'.,
1,-

Passo 2
Modulo
oggelto Lisle
Figura D.9 Schema di funzionamento di un assemblatore a due passi. Lo schema si riferisce
sostanzialmente a.l MASM, rna, a parte alcllni dettagli specifici (per esempio, la tabella dei
segmenti), ha valore generale. I prodotti del Passo 1 sana; il codice intermedio e Ie tabeUe
dinamiche,
I ,
,
, I
I
,
,
---,
-
"
:'
).

1
I
I
\
1.
1
"
I
1
1
1
\
)
1
. I
l.unah.'u: ..
I
T.. b.lI .. d., SimboU
Pubbltc::1
T .. b.ll .. d., RU.. rlm..
.
I I
CodIe," bln.. rlo
1T.b.ll .. dl RlIoe."lon.
I
Int.rna

pnmo passo
Modulo 0aa.Uo
r--------------------,
, ,
: I Nom. ,hi modulo I :
, ,
, Nom. d.1 F',. .. mmentl ,
: dl S.amenlo :
,
,
,
,
inserire ALFA nella tavola dei simboli, con il valore del corrente segmento e
del corrente ILCi
Illinguaggio assembler (8086) 681
D.6.1 Assemblatore:
Informazioni ausiliarie, quali per esempio l'indirizzo di avvio del program-
ma, qualora si trovi all'interno del modulo, ovvero Ie informazioni usate dai
debugger simbolici.
n primo passe ha lo scopo di associare scostamenti numerici a indirizzi simbolici
(nomi di variabili ed etichette). In pratica tutto si riduce all'analisi sequenziale del
testo, con avanzamento di ILC in base all'oecupazione di memoria, e alla costruzione
contestuale della tavola dei simboli (symbol table 0 SYMTAB). La variabile interna ILC
viene impiegata per determinare la posizione occupata in memoria da oggetti come
etichette e variabili. Per ciascun statement, ILC viene incrementata del numero
di locazioni occupate dal codite che esso ha generato. Cio equivale ad assegnare
sequenzialmente agli oggetti locazioni di indirizzo crescente, il che corrisponde alia
sequenza eseeutiva delle istruzioni ed eovviamente carretto anche per i dati.
Schematicamente, l'algoritmo seguito dall'assemblatore consiste nel ripetere, fino
a che non si incontra la direttiva END, questi passi:
a) lettura del prossimo statementj
b) esec\,lzione dell'azione determinata da! contenuto del eampo OP
j
can eventuale
calcolo dell'oceupazione di memoria; inserimento dell'eventuale nome di variabile,
di costante ecc. nella tavola dei simboli , Con i suoi attributi. Per esempio: 10
statement ALFA DB ? ,4,100 ha l'effetta eli:
,
,
,
,
,
,
,
, ,
: T .. b .. lI .. dl Rlloe."lon. :
, E",t.rn.. ,
, ,
: ]Inrorm.... lonl .. ""Ill .. rl .. I :
, ,
, , L
Figura 0.10 Contenuto del modulo oggetto.
.,.,
.e.
:,
,
f.-
:11,
"."':
,7!i:
"1"
.
,
ft
':'

"
,'.'
.--.. ,

,.

,,:
,,&.

, "
. ., .:
".

.:
:.. ,
K
iv.,.
,'t'
, <,
,
'J.
,

I;':

, . .
t\l'
-.

..
" ';

, .
; ; .'
,.



,".
",I,

.
.. f;
' ..

, .': "
iJC

, .
, "
-'. ....,
;'., -',;
, ,.
:1'"
\. I "t,
.'. ;.
.'. .... ." ..
.....; i ""
"


." " (
, . '"
.;:' 'f"
,-' t', .', I':
.,
., , " .
....
.\., .!' :
.. .1.
.... . . I,
,
,':!J\
""!'"
,..... I'...
,::,l"'lr'
v...'.
,"
....'-.' ;:
.;:.'.;.''''
'. . :1:
.

.
I
,.
,.
f
.
..
,
t,
"
',i.
Nome dei frammenti di segmento definiti nel modulo;
Nome del modulo;
Tavola di rilocazione int,erna dei frammeoti, che specifica 1a posizione, all'in-
terno del codice, degli oggetti che devono essere modificati qualora l'origine di
ciascuno dei frammenti non coincida con quella delsegmento, come ipotizzato a1
momenta dell'assemblaggio; .
Tavola di rilocazione esterna dei fiammenti, analoga alia precedente, rna
ebe specifica gli oggetti da modificare in base alla posizione fisica dei segmenti
nella memoria;
21 Tn realta, almeno nel caso del MASM, le tabelle sonG piu di una. Si tratta, evidentemente, di una
scelta di convenienza di chi ba progettato l'asseroblatore, ininfiuente da! punta di vista concettuale.
Tavola dei simboli pUbblici (0 globali, global), ossia la lista dei simboli che
sana definiti all'interno nel modulo e ai quali puo essere fatto riferimento da altri
modulij per ciascun simbolo especificato i1 valore (il segmento di appaxtenenza
e il suo scostamento entra il segmento); ,
Tavola dei riferimenti esterni (extrn)) doe la hsta dei simboli utilizzati,
rna non definiti, all'interno del modulo e che perch) devono essere definiti in modo
globale in un altro; a ciascun simbolo eassociata la lista delle posizioni in cui
esse eriferito all'interno del eedicej
Lunghezza di ciascun frammentoj
gli indirizzi assegnati dall'assemblatore, "rilocando" i vari segmenti ehe compaiono nei
moduli oggetto. n Caricatore, nel sistemare il contenuto del . exe in memoria puo
di nuovo intervenire modificando gli indirizzi corrispondenti a oggetti ehe vengono
rilocati.
nrisultato del primo passo ela tavola dei simboli, una tabella ehe raceoglie i nomi
e gli attributi degli oggetti presenti nel modulo". Un altro prodotto del primo passo
eit codice intermedio, ovvero una parziale traduzione del sorgente. La creazione del
codice intermedio non edi per se necessaria, in quanta il testa sargente viene riletto
a1 secondo passo, rna rappresenta un modo per rendere piu efficiente il processa di
traduzione. II secondo passo ha il duplice compito di generare i1 modulo oggetto e di
predisporre al suo interno Ie informazioni per il callegamento. Queste specificano le
parole da modificare a cura del collegatore.
In FiguraD.g viene illustrato i1 funzionamento complessivo di un assemblatore
a due passi. La figura fa sostanzialmente riferimento at case del MASM e mostra,
it dettaglie delle tabelle (dinamiche) costruite al primo passo. Si noti tra queste la
tabella dei segmenti ehe, certamente, non viene costruita da assemblatori relativi a
macehine con spazio degli indirizzi lineare.
In FiguraD.IO viene invece schematizzato i1 contenuto del modulo oggetto ehe,
come si vede, contiene:
Codice binario prodotto dall'assemblaggio, suddiviso in frammenti;
680 Appendice D
---,
-
"
:'
).

1
I
I
\
1.
1
"
I
1
1
1
\
)
1
.
I
l.unah.'u: ..
I
T.. b.lI ..
d.,
SimboU
Pubbltc::1
T .. b.ll ..
d.,
RU.. rlm..
.
I
I
CodIe,"
bln.. rlo
1T.b.ll .. dl RlIoe."lon.
I
Int.rna

pnmo passo
Modulo 0aa.Uo
r--------------------,
, ,
: I Nom. ,hi modulo I :
, ,
, Nom. d.1 F',. .. mmentl ,
: dl S.amenlo :
,
,
,
,
inserire ALFA nella tavola dei simboli, con il valore del corrente segmento e
del corrente ILCi
Illinguaggio assembler (8086) 681
D.6.1 Assemblatore:
Informazioni ausiliarie, quali per esempio l'indirizzo di avvio del program-
ma, qualora si trovi all'interno del modulo, ovvero Ie informazioni usate dai
debugger simbolici.
n primo passe ha lo scopo di associare scostamenti numerici a indirizzi simbolici
(nomi di variabili ed etichette). In pratica tutto si riduce all'analisi sequenziale del
testo, con avanzamento di ILC in base all'oecupazione di memoria, e alla costruzione
contestuale della tavola dei simboli (symbol table 0 SYMTAB). La variabile interna ILC
viene impiegata per determinare la posizione occupata in memoria da oggetti come
etichette e variabili. Per ciascun statement, ILC viene incrementata del numero
di locazioni occupate dal codite che esso ha generato. Cio equivale ad assegnare
sequenzialmente agli oggetti locazioni di indirizzo crescente, il che corrisponde alia
sequenza eseeutiva delle istruzioni ed eovviamente carretto anche per i dati.
Schematicamente, l'algoritmo seguito dall'assemblatore consiste nel ripetere, fino
a che non si incontra la direttiva END, questi passi:
a) lettura del prossimo statementj
b) esec\,lzione dell'azione determinata da! contenuto del eampo OP
j
can eventuale
calcolo dell'oceupazione di memoria; inserimento dell'eventuale nome di variabile,
di costante ecc. nella tavola dei simboli , Con i suoi attributi. Per esempio: 10
statement ALFA DB ? ,4,100 ha l'effetta eli:
,
,
,
,
,
,
,
, ,
: T .. b .. lI .. dl Rlloe."lon. :
, E",t.rn.. ,
, ,
: ]Inrorm.... lonl .. ""Ill .. rl .. I :
, ,
, , L
Figura 0.10 Contenuto del modulo oggetto.
.,.,
.e.
:,
,
f.-
:11,
"."':
,7!i:
"1"
.
,
ft
':'

"
,'.'
.--.. ,

,.

,,:
,,&.

, "
. ., .:
".

.:
:.. ,
K
iv.,.
,'t'
, <,
,
'J.
,

I;':

, . .
t\l'
-.

..
" ';

, .
; ; .'
,.



,".
",I,

.
.. f;
' ..

, .': "
iJC

, .
, "
-'. ....,
;'., -',;
, ,.
:1'"
\. I "t,
.'. ;.
.'. .... ." ..
.....; i ""
"


." " (
, . '"
.;:' 'f"
,-' t', .', I':
.,
., , " .
....
.\.,
.!' :
.. .1.
.... . . I,
,
,':!J\
""!'"
,..... I'...
,::,l"'lr'
v...'.
,"
....'-.' ;:
.;:.'.;.''''
'. . :1:
.

.
I
,.
,.
f
.
..
,
t,
"
',i.
Nome dei frammenti di segmento definiti nel modulo;
Nome del modulo;
Tavola di rilocazione int,erna dei frammeoti, che specifica 1a posizione, all'in-
terno del codice, degli oggetti che devono essere modificati qualora l'origine di
ciascuno dei frammenti non coincida con quella delsegmento, come ipotizzato a1
momenta dell'assemblaggio; .
Tavola di rilocazione esterna dei fiammenti, analoga alia precedente, rna
ebe specifica gli oggetti da modificare in base alla posizione fisica dei segmenti
nella memoria;
21 Tn realta, almeno nel caso del MASM, le tabelle sonG piu di una. Si tratta, evidentemente, di una
scelta di convenienza di chi ba progettato l'asseroblatore, ininfiuente da! punta di vista concettuale.
Tavola dei simboli pUbblici (0 globali, global), ossia la lista dei simboli che
sana definiti all'interno nel modulo e ai quali puo essere fatto riferimento da altri
modulij per ciascun simbolo especificato i1 valore (il segmento di appaxtenenza
e il suo scostamento entra il segmento); ,
Tavola dei riferimenti esterni (extrn)) doe la hsta dei simboli utilizzati,
rna non definiti, all'interno del modulo e che perch) devono essere definiti in modo
globale in un altro; a ciascun simbolo eassociata la lista delle posizioni in cui
esse eriferito all'interno del eedicej
Lunghezza di ciascun frammentoj
gli indirizzi assegnati dall'assemblatore, "rilocando" i vari segmenti ehe compaiono nei
moduli oggetto. n Caricatore, nel sistemare il contenuto del . exe in memoria puo
di nuovo intervenire modificando gli indirizzi corrispondenti a oggetti ehe vengono
rilocati.
nrisultato del primo passo ela tavola dei simboli, una tabella ehe raceoglie i nomi
e gli attributi degli oggetti presenti nel modulo". Un altro prodotto del primo passo
eit codice intermedio, ovvero una parziale traduzione del sorgente. La creazione del
codice intermedio non edi per se necessaria, in quanta il testa sargente viene riletto
a1 secondo passo, rna rappresenta un modo per rendere piu efficiente il processa di
traduzione. II secondo passo ha il duplice compito di generare i1 modulo oggetto e di
predisporre al suo interno Ie informazioni per il callegamento. Queste specificano le
parole da modificare a cura del collegatore.
In FiguraD.g viene illustrato i1 funzionamento complessivo di un assemblatore
a due passi. La figura fa sostanzialmente riferimento at case del MASM e mostra,
it dettaglie delle tabelle (dinamiche) costruite al primo passo. Si noti tra queste la
tabella dei segmenti ehe, certamente, non viene costruita da assemblatori relativi a
macehine con spazio degli indirizzi lineare.
In FiguraD.IO viene invece schematizzato i1 contenuto del modulo oggetto ehe,
come si vede, contiene:
Codice binario prodotto dall'assemblaggio, suddiviso in frammenti;
680 Appendice D
,
ill
i
l
,I

",
I
,
I
I:
\1
I'
ii
II
I
I
"
,I
I: '
I i
'i
,
II"
,! \
.,
,
:,
II
Altre tabelle Ai primo passo, vengono generate altre importanti tabelle: la tavola
segmenti e la tavola delle macro. La tavola dei segmenti contiene 1a defini-
zione dei frammenti di segmento definiti nel modulo.

E stato gia. detto che un segmento puo essere aperto e chiuso pili volte all'interno
di uno stesso modulo sorgente. La prima apertura ne costituisce di fatto 1a definizione
e provoca l'inserimento di un nuovo elemento, contenente it suo nome e dei suoi
nella tavola dei segmenti. Gli attributi di un identificatore di segmento
servono essenzialmente a specificare il modo in cui il segmento dovra essere gestito
dal collegatore e dal caricatore.
A GiasCUIl segmento definito dal programmatore I'assemblatore fa corrispondere
un differente containdirizzi, mediante il quale vengono generati gli scostamenti degli
oggetti definiti al suo interno. Al momento della definizione (prima apertura) ILC
viene posta a zero. II primo oggetto definito Si viene cosl a trovare nella pri:ma po-
sizione (scostamento 0) del segmento. Ogni volta in cui il segmento viene chiuso,
il valore corrente dell'ILC viene salvato nella tabella e da questa viene ripristina-
to a1 momento di ogni successlva apertura; in questa modo tutti i frammenti di un
segrnento definiti in un modulo, costituiscono di fatto un unico frammento, giacche
gli scostamenti generati dalJ'assemblatore sono consecutivi. In conclusione, durante
I'assemblaggio di un modulo, l'assemblatore utilizza tanti containdirizzi quanti 50-
no i segmenti in esso presenti. Ciascun containdirizzi viene utilizzato dal momento
dall 'apertura a queUo della chiusura di un frammento appartenente al segmento a cui
corrisponde, ossia per il tempo in cui tale segmento eil segmento corrente (SC) di
assemblaggio. La tavola dei segmenti passa nel modulo oggetto per il collegatore.
La tavola dei segmenti per ESEMPIO ea pagina675. La tavola delle macro contiene
invece i nomi delle macro e 1e informazioni che servono aHa sua espansione quando
1a macro viene nominata nel testo del programma. La fUTIziane di questa ta.bella si
esaurisce al termine del processo di assemblaggio e non passa nel modulo oggetto.
II iinguaggio assembler (8086) 683
D.6.2 Assemblatore: secondo passo
Al secondo passo, l'assemblatore genera il modulo oggetto producendo, se richiesto dal
programmatore, la lista contenente le informa-zioui di assemblaggio can i listati ripor-
tab. nsecondo passe ereso molto pili efficiente del precedente se al passo uno viene
prodotto tutto it codice che e possibile generate immediatamente, e si utilizza una
tavola dei riferimenti in avanti per accedere aIle parti che necessitano ulteriore elabo-
razione. In questa modo il completarnento della generazione del codice puo avvenire
sfruttando un accesso diretto agli archivi interessati, evitando una nuova scansione
sequenziale, can un notevole migliorarnento nelle prestazioni dell'assemblatore.
La traduzione delle istruzioni assemblel' avviene in a.ccordo al formato macchina
(CfL Append;ce A). n secondo passo oltre a generare il modulo oggetto, predispone
la tavola di collegarnento. n programma oggetto necessita di modifiche a1 tempo d.i
caricamento, in quanta nella traduzione degli indirizzi i selettori restano non definiti
numericamente, inoltre gli scostameuti esterni sono stati tradotti provvisoriamente
col valore O. La tavola di collegamento contiene appunto l'indiri-zzo, nelle componenti
selettore sirnbolico e scostamento numerico, delle parole su cui vanno effettuate delle
modifiche.

,
,
.'
.'

-
"
,!.
,

-;
}-
"
,
1
I.
e
1
I:

l'
'1 '

.'
'1
,
.'J'
."


,
:1,
, '
,.r",
it:'
'J ':
,-
l
,.'.

'1:
'''' .
l
-
"
;L;
I
",

<,
';:'.
o
".
-'!.;
,
I,
,,; .'
.f.'
Of, .
,.
.j,
",;

,

.-!/':,;
>1"
]'
'
-!;il.

,"
t>i"
,r
";',
;-
v

ii"
t".
f'

J;.,
\.
r
,
,
,
I
"
t-
J.

, f
t,
"
.(
I '
,
1
c
,
'J'
,
"'.
;k
;;;:;
.I:.
"
o quantificare in 3 byte l'occupazione di memoria;
\ 682 Appendice D
I

-
-
-
-

-
'.
-
,.
c) incrementare ILC dell'occupazione di memoria.
I D meccanismo descritto consente di assegnare in modo semplice il valore dell'at-
) tributo lndirizzo, costituito dalla coppia di attributi <segmento. scostamento>I a
tutti i simboli che 10 posseggono, ossia ai simboli ass9ciati a locazioni di memoria.
ITavola dei simboli Nel caso del MASM nella tavola dei simboli vengono memo-
rizzati tutti i simboli (con UloIo attributi), esclusi quelli che corrispondono a nomi
di macro e di segmeoti, per i quali ci sona apposite tabelle. A pagina675 eriportata
\
13 tavola. dei simboli del modulo ESEMPIO, Per ogni simbolo, a lato del nome che 10
identifica, viene riportato il complesso degli attributi
22
. Si Dati che per Ie costanti
(numeri 0 testo) il " valore" corrisponde a quanta dichiarato, mentre per i simboli ai
quali compete un indirizzo di memoria il t<valore
ll
eILC, ovvero 10 scostamento entro
I
il segmento.
I simboli dichiarati global; (public) 0 estern; (extrn) entrano pure nella tavola
dei simboli. Per i primi l'insieme degli attributi presenta anche l'indicazione di simbolo
\ 1globalej per i secondi l'indicazione di simbolo esterno va a rimpiazzare H segmento
- d.i appartenenza. La parte della tavola dei simboli relativa a simboli globali 0 esterni
/ va a costituire, previa opportuna trasformazione di rappresentazione, la tavola dei
simboli pubblici e Ia. tavola dei riferimenti esterni contenute nel formato
Irilocabile. n resto della tabella viene perduto al termine dell'assemblaggio.
Riferimenti in avanti Qualora uno statement contenga un riferimento in avanti,
\
la generazione del codice Don pUG essere completa e deve essere rimandata al secondo
passo.
I In questo caso, l'assemblatore deve fare un'ipotesi sui numero di locazioni occu-
pate dal codice generato dallo statement, onde incrementare correttamente ILC. Per
ciascun tipa di riferimento esiste una dimensione convenzionale. Cio puo portare,
I
da un lato, a una codifica ridondante, come accade quando la dimensione finale del
riferimento einferiore a quella ipotizzata, e 10 spazio in eccesso deve essere riempito
con NOP. Dall'altro puo provocare degli errciri durante il secondo PasSO, se 10 spazio
ipotizzato risulta insufficiente. Cio accade, per esempio, quando un riferimento in
\ avanti richiede un segment override (perche il dato si trova in un segmep.to diverso da
quello assunto) che non viene codificatoj in tale situazione al passo due, l'assemblatore
generera. un byte aggiuntivo d.i codice, il segment override prefix, che fara. variare la
posizione di tutti gil oggetti che seguoDo, dando luogo all'errore.
I
n programmatore, se vuole generare il codice ottimizzato e evitare errori , deve
fornire all.'assemblatore Ie informazioni necessarie a stabilire subito l'esatta dimensione
del codice generato dallo statement, per esempio specificando il tipo dell'oggetto non
ancora definito a cui si fa riferimento.
!
22Nella terminologia d.i MASM, it termine .lttrib viene impropriamente impiegato per denotare il
segme.nto d.i appartenenza.
\ '
I
J

,
ill
i
l
,I

",
I
,
I
I:
\1
I'
ii
II
I
I
"
,I
I: '
I i
'i
,
II"
,! \
.,
,
:,
II
Altre tabelle Ai primo passo, vengono generate altre importanti tabelle: la tavola
segmenti e la tavola delle macro. La tavola dei segmenti contiene 1a defini-
zione dei frammenti di segmento definiti nel modulo.

E stato gia. detto che un segmento puo essere aperto e chiuso pili volte all'interno
di uno stesso modulo sorgente. La prima apertura ne costituisce di fatto 1a definizione
e provoca l'inserimento di un nuovo elemento, contenente it suo nome e dei suoi
nella tavola dei segmenti. Gli attributi di un identificatore di segmento
servono essenzialmente a specificare il modo in cui il segmento dovra essere gestito
dal collegatore e dal caricatore.
A GiasCUIl segmento definito dal programmatore I'assemblatore fa corrispondere
un differente containdirizzi, mediante il quale vengono generati gli scostamenti degli
oggetti definiti al suo interno. Al momento della definizione (prima apertura) ILC
viene posta a zero. II primo oggetto definito Si viene cosl a trovare nella pri:ma po-
sizione (scostamento 0) del segmento. Ogni volta in cui il segmento viene chiuso,
il valore corrente dell'ILC viene salvato nella tabella e da questa viene ripristina-
to a1 momento di ogni successlva apertura; in questa modo tutti i frammenti di un
segrnento definiti in un modulo, costituiscono di fatto un unico frammento, giacche
gli scostamenti generati dalJ'assemblatore sono consecutivi. In conclusione, durante
I'assemblaggio di un modulo, l'assemblatore utilizza tanti containdirizzi quanti 50-
no i segmenti in esso presenti. Ciascun containdirizzi viene utilizzato dal momento
dall 'apertura a queUo della chiusura di un frammento appartenente al segmento a cui
corrisponde, ossia per il tempo in cui tale segmento eil segmento corrente (SC) di
assemblaggio. La tavola dei segmenti passa nel modulo oggetto per il collegatore.
La tavola dei segmenti per ESEMPIO ea pagina675. La tavola delle macro contiene
invece i nomi delle macro e 1e informazioni che servono aHa sua espansione quando
1a macro viene nominata nel testo del programma. La fUTIziane di questa ta.bella si
esaurisce al termine del processo di assemblaggio e non passa nel modulo oggetto.
II iinguaggio assembler (8086) 683
D.6.2 Assemblatore: secondo passo
Al secondo passo, l'assemblatore genera il modulo oggetto producendo, se richiesto dal
programmatore, la lista contenente le informa-zioui di assemblaggio can i listati ripor-
tab. nsecondo passe ereso molto pili efficiente del precedente se al passo uno viene
prodotto tutto it codice che e possibile generate immediatamente, e si utilizza una
tavola dei riferimenti in avanti per accedere aIle parti che necessitano ulteriore elabo-
razione. In questa modo il completarnento della generazione del codice puo avvenire
sfruttando un accesso diretto agli archivi interessati, evitando una nuova scansione
sequenziale, can un notevole migliorarnento nelle prestazioni dell'assemblatore.
La traduzione delle istruzioni assemblel' avviene in a.ccordo al formato macchina
(CfL Append;ce A). n secondo passo oltre a generare il modulo oggetto, predispone
la tavola di collegarnento. n programma oggetto necessita di modifiche a1 tempo d.i
caricamento, in quanta nella traduzione degli indirizzi i selettori restano non definiti
numericamente, inoltre gli scostameuti esterni sono stati tradotti provvisoriamente
col valore O. La tavola di collegamento contiene appunto l'indiri-zzo, nelle componenti
selettore sirnbolico e scostamento numerico, delle parole su cui vanno effettuate delle
modifiche.

,
,
.'
.'

-
"
,!.
,

-;
}-
"
,
1
I.
e
1
I:

l'
'1 '

.'
'1
,
.'J'
."


,
:1,
, '
,.r",
it:'
'J ':
,-
l
,.'.

'1:
'''' .
l
-
"
;L;
I
",

<,
';:'.
o
".
-'!.;
,
I,
,,; .'
.f.'
Of, .
,.
.j,
",;

,

.-!/':,;
>1"
]'
'
-!;il.

,"
t>i"
,r
";',
;-
v

ii"
t".
f'

J;.,
\.
r
,
,
,
I
"
t-
J.

, f
t,
"
.(
I '
,
1
c
,
'J'
,
"'.
;k
;;;:;
.I:.
"
o quantificare in 3 byte l'occupazione di memoria;
\ 682 Appendice D
I

-
-
-
-

-
'.
-
,.
c) incrementare ILC dell'occupazione di memoria.
I D meccanismo descritto consente di assegnare in modo semplice il valore dell'at-
) tributo lndirizzo, costituito dalla coppia di attributi <segmento. scostamento>I a
tutti i simboli che 10 posseggono, ossia ai simboli ass9ciati a locazioni di memoria.
ITavola dei simboli Nel caso del MASM nella tavola dei simboli vengono memo-
rizzati tutti i simboli (con UloIo attributi), esclusi quelli che corrispondono a nomi
di macro e di segmeoti, per i quali ci sona apposite tabelle. A pagina675 eriportata
\
13 tavola. dei simboli del modulo ESEMPIO, Per ogni simbolo, a lato del nome che 10
identifica, viene riportato il complesso degli attributi
22
. Si Dati che per Ie costanti
(numeri 0 testo) il " valore" corrisponde a quanta dichiarato, mentre per i simboli ai
quali compete un indirizzo di memoria il t<valore
ll
eILC, ovvero 10 scostamento entro
I
il segmento.
I simboli dichiarati global; (public) 0 estern; (extrn) entrano pure nella tavola
dei simboli. Per i primi l'insieme degli attributi presenta anche l'indicazione di simbolo
\ 1globalej per i secondi l'indicazione di simbolo esterno va a rimpiazzare H segmento
- d.i appartenenza. La parte della tavola dei simboli relativa a simboli globali 0 esterni
/ va a costituire, previa opportuna trasformazione di rappresentazione, la tavola dei
simboli pubblici e Ia. tavola dei riferimenti esterni contenute nel formato
Irilocabile. n resto della tabella viene perduto al termine dell'assemblaggio.
Riferimenti in avanti Qualora uno statement contenga un riferimento in avanti,
\
la generazione del codice Don pUG essere completa e deve essere rimandata al secondo
passo.
I In questo caso, l'assemblatore deve fare un'ipotesi sui numero di locazioni occu-
pate dal codice generato dallo statement, onde incrementare correttamente ILC. Per
ciascun tipa di riferimento esiste una dimensione convenzionale. Cio puo portare,
I
da un lato, a una codifica ridondante, come accade quando la dimensione finale del
riferimento einferiore a quella ipotizzata, e 10 spazio in eccesso deve essere riempito
con NOP. Dall'altro puo provocare degli errciri durante il secondo PasSO, se 10 spazio
ipotizzato risulta insufficiente. Cio accade, per esempio, quando un riferimento in
\ avanti richiede un segment override (perche il dato si trova in un segmep.to diverso da
quello assunto) che non viene codificatoj in tale situazione al passo due, l'assemblatore
generera. un byte aggiuntivo d.i codice, il segment override prefix, che fara. variare la
posizione di tutti gil oggetti che seguoDo, dando luogo all'errore.
I
n programmatore, se vuole generare il codice ottimizzato e evitare errori , deve
fornire all.'assemblatore Ie informazioni necessarie a stabilire subito l'esatta dimensione
del codice generato dallo statement, per esempio specificando il tipo dell'oggetto non
ancora definito a cui si fa riferimento.
!
22Nella terminologia d.i MASM, it termine .lttrib viene impropriamente impiegato per denotare il
segme.nto d.i appartenenza.
\ '
I
J

;;1
1, '
:"

..
::1,
. '. ,
", "Ip
F
r
t
i
,.
f
t"
1
1
I
\
"
J
J
J
I
I
I
1
1
\
I
1
D.8 Esercizi
Esercizio D.1 Si considerino Ie seguenti definizioni:
A DB 2,4
B EQU 1
C DB B
o EQU A+B
n caricatore calcola il selettore di caricamento dell'intero programma in base alIa
zona di memoria disponibile. Trasferisce poi it programma in memoria a. partite da
quel selettore. Le parole da rilocare hanno come selettore quello indicato nella Tabella
di rilocazione, sommato con il selettore di caricamento.
n selettore di caricamento del programma viene aggiunto ilche ai due selettori
che rappresentano il valore iniziale di CS e 55 nella Tabella numerica di Inizializzazione,
prima del loro trasferimento nei corrispondenti registri.
Prima di poter eseguire iJ programma rllocato, devono essere trasferiti nei/registri
i valori che compaiono nella Tabella di lnizializzazione. n trasferimento dei valori
iniziali di C5 e IP viene tipicamente effettuato attraverso una preJiminare immissione
di tali valori nelle prime parole della pila e una successiva esecuzione di una istruzione
di ritorno da sottoprogramma.
D.7.1 Caricamento in memoria ed esecuzione
Esaurita la fase di costruzione dei segmenti, il collegatore passa a quella di preal-
locazione} nella Quale questi vengono assegnati a ipotetici segmenti fisici, supponendo
che tutta la memoria fisica sia disponibile. In altri termini il primo segmento viene
allocato nel segmento fisico 0, it secondo nel segmento fisico inizia subiio dopo
la fine dell'area occupata da! primo segmento logico e cosl via. n collegatore com-
pone quindi un unico programma eseguibile posizionando in sequenza i segmenti dei
vari moduli: ciascun byte del programma risulta cosl individuate dal suo indirizzo, a
partire dall'indirizzo OOOOR.
n programma risultante puo essere eseguito senza modifiche solo a partire dal
selettore OOOOH. Un diverse selettore iniziale richiede la rilocazione del programma
stesso
,
in quanto tutti gli indirizzi che vi compaiono devono corrispondere alla p05i-
zione effettiva. La rilocazione ecompito del caricatore. Nella rilocazione, Ie parole del
programma contenenti i selettori vengono essere modificate, in quanta a esse viene
sommato it selettore iniziale. Le parole di programma contenenti scostamenti non
vanno invece modificate, in quanto l'indirizzo all'interno del segmento einvariante
can la posizione. .
n collegatore produce quindi una Tabella di rilocazione, che indica gli indirizzi
delle parole contenenti selettori. n programma collegato e 1a Tabella di rilocazione
fanno parte del file. EXE relativo al programma.
Illinguaggio assembler (8086) 685
.J, '
,I)
:r,
t
j
.
"";-
l
i
;
,'
,
,.


,
'. ,j,
,
I
"
"
\.

,
I"
I
,, .

:
;
,.,
.'
,
.


".
, .. ,;1
",
, ','
,1'j;' ,


. .
.-'. ,'. ._.
, ,.,
.... '. it.: ..
t
,
r
i
;,
I
,.
,:
T
,
.1"
'.!{
,
.J,
.L
.,
'j' ;
..
I(
"..
f
.{.
. ,
1.
':'T
. ,
.. (
t
,
,
II collegatore produce i programmi eseguibili a partire dai moduli oggetto generati
dal programma a:3semblatore 0 dai compilatori.
Le funzioni che esso svolge sono essenzialmente due:
raccogliere e contare i frammeoti di segmento definiti nei vari moduli
,
in modo
da costruire i segmenti logid (e gli eventuali gruppi che Ii contengono) i
risolvere i riferimenti incrociati tra i moduli.
D.7 Collegamento e caricamento
Nella costruzione dei segmenti i frammenti della stesso segmento vengono giu-
stapposti, utilizzando la loro tabella di rilocazione interna per modificare Ie parti
di codice, che dipendQno dalla posizione d.i ciascun frammento all'interno del seg-
mento. Per esempio, vngono modificate Ie istruzioni che contengono riferimenti a
variabili definite nel fralnmento del segmento dati di un modulo giustapposto a un
,
frammento da.ti di attro modulo. Non sono invece modificate Ie istruzioni di salta
intrasegmento can indirizzamento relativo, proprio per Ie caratteristiche di tale modo,
,
di indirizzamento_ I J .
Le Tahelle di rilobazione esterna dei frammenti vengono cumulate per costruire
la Tabella di rilocazione esterna di ciascun segmento. Questa tabella viene usata
da! caricatore per aggiustare i riferimenti che dipendono dal segmento fisico in cui i
segmenti logici verranno allocati utilizzando Ie informazioni di lunghezza conteilUte
nella Tabella dei segyhenti di ciascun modulo.
Per quanto si r,l.ferisce alia risoluzione dei riferimenti incrociati, il collegatore .
riempie, a partire dalle Tabelle dei simholi pubblici di eiascun modulo, 1a sua Tabella
dei simboli, nella quale compaiono tutti gli identificatori pubbliei presenti nel pro-
gramma. In particqlare, per ogni simbolo dichiarato esterno, it collegatore (in base
alla Tabella dei simpoli pubblici) detennina i valori numerici del selettor:e e dello seos-
tamento a esso assobati. n valore nurnerieo del selettore viene prelevato dalla Tabella'
dei selettori numedci. In questa fase, se estata specificata una 0 pili librerie, it colle-
gatore cerca delle librerie i moduli che definiscono come pubblico almeno
uno dei riferimentl esterni. Ovviamente, iJ processo.di collegamento si completa'se
tu tti i riferimenti vengono risolti.
Analogamente
,
dalle Tabelle dei riferimenti esterni viene costruita la Tabella dei
simboli esterni che, in generale, alIa fine conterra. un numero di simboli maggiore
precedente.
n processo di raccolta dei moduli ha percio termine quando Ie due Tabelle dei
simboli contengono gil stessi elementi} e quindi non si hanno pili riferimenti estern.i
indefiniti, oppure non si trovano altri, moduli che definiscano simboli pubblici uti-
li. Naturalmente il collegatore ricerca anche nelle eventuali librerie che sono state
specificate nel comando che 10 ha attivato.
La traduzione provvisoria del modulo, la tavola di collegamento e Ie tabelle pre-
disposte al primo passo (tavola, dei aegmenti, tavola degli identificatori pubblici,
vola degli identificatori esterni ed eventualmente tavola di Inizializzazione), vengono
inserite nel modulo oggetto.
684 Appendice D

;;1
1, '
:"

..
::1,
. '. ,
", "Ip
F
r
t
i
,.
f
t"
1
1
I
\
"
J
J
J
I
I
I
1
1
\
I
1
D.8 Esercizi
Esercizio D.1 Si considerino Ie seguenti definizioni:
A DB 2,4
B EQU 1
C DB B
o EQU A+B
n caricatore calcola il selettore di caricamento dell'intero programma in base alIa
zona di memoria disponibile. Trasferisce poi it programma in memoria a. partite da
quel selettore. Le parole da rilocare hanno come selettore quello indicato nella Tabella
di rilocazione, sommato con il selettore di caricamento.
n selettore di caricamento del programma viene aggiunto ilche ai due selettori
che rappresentano il valore iniziale di CS e 55 nella Tabella numerica di Inizializzazione,
prima del loro trasferimento nei corrispondenti registri.
Prima di poter eseguire iJ programma rllocato, devono essere trasferiti nei/registri
i valori che compaiono nella Tabella di lnizializzazione. n trasferimento dei valori
iniziali di C5 e IP viene tipicamente effettuato attraverso una preJiminare immissione
di tali valori nelle prime parole della pila e una successiva esecuzione di una istruzione
di ritorno da sottoprogramma.
D.7.1 Caricamento in memoria ed esecuzione
Esaurita la fase di costruzione dei segmenti, il collegatore passa a quella di preal-
locazione} nella Quale questi vengono assegnati a ipotetici segmenti fisici, supponendo
che tutta la memoria fisica sia disponibile. In altri termini il primo segmento viene
allocato nel segmento fisico 0, it secondo nel segmento fisico inizia subiio dopo
la fine dell'area occupata da! primo segmento logico e cosl via. n collegatore com-
pone quindi un unico programma eseguibile posizionando in sequenza i segmenti dei
vari moduli: ciascun byte del programma risulta cosl individuate dal suo indirizzo, a
partire dall'indirizzo OOOOR.
n programma risultante puo essere eseguito senza modifiche solo a partire dal
selettore OOOOH. Un diverse selettore iniziale richiede la rilocazione del programma
stesso
,
in quanto tutti gli indirizzi che vi compaiono devono corrispondere alla p05i-
zione effettiva. La rilocazione ecompito del caricatore. Nella rilocazione, Ie parole del
programma contenenti i selettori vengono essere modificate, in quanta a esse viene
sommato it selettore iniziale. Le parole di programma contenenti scostamenti non
vanno invece modificate, in quanto l'indirizzo all'interno del segmento einvariante
can la posizione. .
n collegatore produce quindi una Tabella di rilocazione, che indica gli indirizzi
delle parole contenenti selettori. n programma collegato e 1a Tabella di rilocazione
fanno parte del file. EXE relativo al programma.
Illinguaggio assembler (8086) 685
.J, '
,I)
:r,
t
j
.
"";-
l
i
;
,'
,
,.


,
'. ,j,
,
I
"
"
\.

,
I"
I
,, .

:
;
,.,
.'
,
.


".
, .. ,;1
",
, ','
,1'j;' ,


. .
.-'. ,'. ._.
, ,.,
.... '. it.: ..
t
,
r
i
;,
I
,.
,:
T
,
.1"
'.!{
,
.J,
.L
.,
'j' ;
..
I(
"..
f
.{.
. ,
1.
':'T
. ,
.. (
t
,
,
II collegatore produce i programmi eseguibili a partire dai moduli oggetto generati
dal programma a:3semblatore 0 dai compilatori.
Le funzioni che esso svolge sono essenzialmente due:
raccogliere e contare i frammeoti di segmento definiti nei vari moduli
,
in modo
da costruire i segmenti logid (e gli eventuali gruppi che Ii contengono) i
risolvere i riferimenti incrociati tra i moduli.
D.7 Collegamento e caricamento
Nella costruzione dei segmenti i frammenti della stesso segmento vengono giu-
stapposti, utilizzando la loro tabella di rilocazione interna per modificare Ie parti
di codice, che dipendQno dalla posizione d.i ciascun frammento all'interno del seg-
mento. Per esempio, vngono modificate Ie istruzioni che contengono riferimenti a
variabili definite nel fralnmento del segmento dati di un modulo giustapposto a un
,
frammento da.ti di attro modulo. Non sono invece modificate Ie istruzioni di salta
intrasegmento can indirizzamento relativo, proprio per Ie caratteristiche di tale modo,
,
di indirizzamento_ I J .
Le Tahelle di rilobazione esterna dei frammenti vengono cumulate per costruire
la Tabella di rilocazione esterna di ciascun segmento. Questa tabella viene usata
da! caricatore per aggiustare i riferimenti che dipendono dal segmento fisico in cui i
segmenti logici verranno allocati utilizzando Ie informazioni di lunghezza conteilUte
nella Tabella dei segyhenti di ciascun modulo.
Per quanto si r,l.ferisce alia risoluzione dei riferimenti incrociati, il collegatore .
riempie, a partire dalle Tabelle dei simholi pubblici di eiascun modulo, 1a sua Tabella
dei simboli, nella quale compaiono tutti gli identificatori pubbliei presenti nel pro-
gramma. In particqlare, per ogni simbolo dichiarato esterno, it collegatore (in base
alla Tabella dei simpoli pubblici) detennina i valori numerici del selettor:e e dello seos-
tamento a esso assobati. n valore nurnerieo del selettore viene prelevato dalla Tabella'
dei selettori numedci. In questa fase, se estata specificata una 0 pili librerie, it colle-
gatore cerca delle librerie i moduli che definiscono come pubblico almeno
uno dei riferimentl esterni. Ovviamente, iJ processo.di collegamento si completa'se
tu tti i riferimenti vengono risolti.
Analogamente
,
dalle Tabelle dei riferimenti esterni viene costruita la Tabella dei
simboli esterni che, in generale, alIa fine conterra. un numero di simboli maggiore
precedente.
n processo di raccolta dei moduli ha percio termine quando Ie due Tabelle dei
simboli contengono gil stessi elementi} e quindi non si hanno pili riferimenti estern.i
indefiniti, oppure non si trovano altri, moduli che definiscano simboli pubblici uti-
li. Naturalmente il collegatore ricerca anche nelle eventuali librerie che sono state
specificate nel comando che 10 ha attivato.
La traduzione provvisoria del modulo, la tavola di collegamento e Ie tabelle pre-
disposte al primo passo (tavola, dei aegmenti, tavola degli identificatori pubblici,
vola degli identificatori esterni ed eventualmente tavola di Inizializzazione), vengono
inserite nel modulo oggetto.
684 Appendice D
-.
-
\ 686 Appendice D
: '.
,
\.",
,
,
-.
,
,

-,
II linguaggio assembler (8086)
687
\
\
B+2
A+B
A+C-O
1000UP ('B')
EQU
EQU
EQU
DB
ENOS
DATA SEGMENT _
MESS 08 'MESSAGGIO'
DATA ENDS
c
o
E
F
DATA
DATA SEGMENT
ALFA DW 10,120000,0,1
In riferimento al processo di assemblaggio e aIlo statement che definisce ALFA, si
richiede:
1) la sequenza delle azioni eseguite a1 primo passo;
2) il contenuto della tavo1a dei simboli al termine del primo passe;
3) La sequenza delle azioni eseguite a1 secondo passo.
Nel rispondere aile domande si tenga presente che non viene richiesto uno sche-
ma generico del modo di operare dell'assemblatore, rna la sequenza ordinata delle
operazioni eseguite in riferirnento al solo statement considerato. Le risposte devono
essere quanta pili rigorose possibile. Si assuma che ILC sia la variabile usata per
tenere canto della posizione di memoria e che essa valga ILCx nel momenta in cui
viene incontrata I'istruzione d.i interesse. Per quanto riguarda la tavola dei simboli
(SYMTAB) si assuma di disporre di due procedure: put (simbolo, attrib,err) e
get (simbolo, attrib, err) che rispettivamente depositano in SYMTAB un simbo10
con i suoi attributi 0 pre1evano gli attributi, ovvero prelevano da SYMTAB gli attri-
buti di un simbolo (err euna variabile che al ritorno riporta i1 codice di un eventuale
errore)_
Esercizio D.6 Si consideri il seguente tratto di codice:
Esercizio D.5 Si consideri il seguente tratto di codice:
In riferimento al processo di assemblaggio, assumendo che ILC sia 1a variabile usata
dall'assemb1atore per tenere conto della posizione e che lLCm sia il suo valore al mo-
mento in cui viene incontrato 10 statement che definisce MESS, si descriva la sequenza
ordinata delle azioni a1 passo 1 e al passe 2.
8i descriva il contenuto della tavola dei simboli a1 termine del processo di assemblaggio
per quanto si riferisce aile 1inee di programma precedenti.
Si richiede:
1) il tipo (type) e il valore inseriti nella tavola dei simboli per A, B, ... 1 F;
2) i1 contenuto del registro dopa l'esecuzione delPistruzione MOV AL. A;
3) il contenuto del registro dopo Pesecuzione dell'istruzione MOV AL,B;
4) il contenuto del registro dopo I'esecuzione dell'istruzione MOV AL, C;
5) i1 contenuto del registro dopo I'esecuzione dell'istruzione MOV AL, D;
6) Il contenuto del registro dopo 1'esecuzione dell'istruzione MOV AH, E.
' .. ,
".'.
;, .
1,-,
, -
Ii
,':
,
b:

'1.:"
i .
"-
"': --
': .
'- -
!
i: .
,., .
r
,
l
\-
!,'
/':L
c
,
,
,
I.r
r-
f
"
-,
)':'
:'f:
,
, -
ii.
1.
i::
"

,,'
,
, ,
,
.:' .
- ,
"t.;.
-
"
it
,
;
,
.' -
(
l<:-.
'Co.
C _

1.';:
"'.c. ,
"
t
, -

j:i'

-
I"'
1
.
c
"
,- -
'.
,
.....
"
<'"--
;' ..
,-
;
-
,
- I
,
'-:-
";
*:
:;, .
I:
;,.:;
PUBLIC 'DATA'
'Questa e" la lettera A'
'B'
10
100 DUP(99)
SEGMENT
DB
EQU
DATA
A
B
N EQU
MATRIX DW
Dove N e MATRIX sana definiti come:
\
\
iEsercizio D.3 Si indichi l'effetto delle singole istruzioni sotto riportatej in partico-
rare si indichi quale elemenlo di MATRIX[l..lOO] viene modIDcato_
,
MOV AX,N
MOV SI,N
MOV BX,OFFSET(MATRIX)
MOV 20 (BX+SI),AX
I
I
ls- -d E E
I
QU _A+ (C-tA) rt t S- - t- - ch -I d- tt '
, I COnsl enno e lstruZlOD.1 sot 0 rIpe a e. 1IPO lZZl e 1 co Ice ogge 0 cornspon-
dente a ciascuna di esse sia formata cia un primo byte contenente MOV AL e cia uno
o pili byte successivi contenenti Poperando delPistruzione. Si disegni a fianeD di
1cuna istruzione il formata delJlistruzione stessaj si dica come cleve essere interpretato
(iI campo dell'operando e si indichi il risultato dell'esecuzione delristruzione (il valore
che viene portato in AL). Si assuma che 1a posizione assegnata a Asia la O.
I
HOV AL,A
HOV AL, B
MOV AL, C
MOV AL, D
\
MOV Al, E
Esercizio D.2 Si supponga di avere un programma COD questa segmento dati:
-
Esercizio D.4 Si considerino Ie seguenti definizioni:
-' I
---
-
-
-
-
-
-
-
DATA SEGMENT PUBLIC 'DATA'
A OW 0.1,2,3
8 EQU A+3
C EQU 3
D DB 4,5,6
--, \ DATA ENOS
indichi per quali delle righe seguenti di programma l'assemb1atore da. errore. Per
queUe che non danno errore si indichi cosa si troverebbe nel registro impiegato se
ristruzione venisse eseguita.
\ MOV AL,A
- ' MOV AX,A+9
MOV AX,B
MOV AX,C
MOV AL,B+C
MOV AX,B+C
"-,
--
-
---
-
.-
-.
-
\ 686 Appendice D
: '.
,
\.",
,
,
-.
,
,

-,
II linguaggio assembler (8086)
687
\
\
B+2
A+B
A+C-O
1000UP ('B')
EQU
EQU
EQU
DB
ENOS
DATA SEGMENT _
MESS 08 'MESSAGGIO'
DATA ENDS
c
o
E
F
DATA
DATA SEGMENT
ALFA DW 10,120000,0,1
In riferimento al processo di assemblaggio e aIlo statement che definisce ALFA, si
richiede:
1) la sequenza delle azioni eseguite a1 primo passo;
2) il contenuto della tavo1a dei simboli al termine del primo passe;
3) La sequenza delle azioni eseguite a1 secondo passo.
Nel rispondere aile domande si tenga presente che non viene richiesto uno sche-
ma generico del modo di operare dell'assemblatore, rna la sequenza ordinata delle
operazioni eseguite in riferirnento al solo statement considerato. Le risposte devono
essere quanta pili rigorose possibile. Si assuma che ILC sia la variabile usata per
tenere canto della posizione di memoria e che essa valga ILCx nel momenta in cui
viene incontrata I'istruzione d.i interesse. Per quanto riguarda la tavola dei simboli
(SYMTAB) si assuma di disporre di due procedure: put (simbolo, attrib,err) e
get (simbolo, attrib, err) che rispettivamente depositano in SYMTAB un simbo10
con i suoi attributi 0 pre1evano gli attributi, ovvero prelevano da SYMTAB gli attri-
buti di un simbolo (err euna variabile che al ritorno riporta i1 codice di un eventuale
errore)_
Esercizio D.6 Si consideri il seguente tratto di codice:
Esercizio D.5 Si consideri il seguente tratto di codice:
In riferimento al processo di assemblaggio, assumendo che ILC sia 1a variabile usata
dall'assemb1atore per tenere conto della posizione e che lLCm sia il suo valore al mo-
mento in cui viene incontrato 10 statement che definisce MESS, si descriva la sequenza
ordinata delle azioni a1 passo 1 e al passe 2.
8i descriva il contenuto della tavola dei simboli a1 termine del processo di assemblaggio
per quanto si riferisce aile 1inee di programma precedenti.
Si richiede:
1) il tipo (type) e il valore inseriti nella tavola dei simboli per A, B, ... 1 F;
2) i1 contenuto del registro dopa l'esecuzione delPistruzione MOV AL. A;
3) il contenuto del registro dopo Pesecuzione dell'istruzione MOV AL,B;
4) il contenuto del registro dopo I'esecuzione dell'istruzione MOV AL, C;
5) i1 contenuto del registro dopo I'esecuzione dell'istruzione MOV AL, D;
6) Il contenuto del registro dopo 1'esecuzione dell'istruzione MOV AH, E.
' .. ,
".'.
;, .
1,-,
, -
Ii
,':
,
b:

'1.:"
i .
"-
"': --
': .
'- -
!
i: .
,., .
r
,
l
\-
!,'
/':L
c
,
,
,
I.r
r-
f
"
-,
)':'
:'f:
,
, -
ii.
1.
i::
"

,,'
,
, ,
,
.:' .
- ,
"t.;.
-
"
it
,
;
,
.' -
(
l<:-.
'Co.
C _

1.';:
"'.c. ,
"
t
, -

j:i'

-
I"'
1
.
c
"
,- -
'.
,
.....
"
<'"--
;' ..
,-
;
-
,
- I
,
'-:-
";
*:
:;, .
I:
;,.:;
PUBLIC 'DATA'
'Questa e" la lettera A'
'B'
10
100 DUP(99)
SEGMENT
DB
EQU
DATA
A
B
N EQU
MATRIX DW
Dove N e MATRIX sana definiti come:
\
\
iEsercizio D.3 Si indichi l'effetto delle singole istruzioni sotto riportatej in partico-
rare si indichi quale elemenlo di MATRIX[l..lOO] viene modIDcato_
,
MOV AX,N
MOV SI,N
MOV BX,OFFSET(MATRIX)
MOV 20 (BX+SI),AX
I
I
ls- -d E E
I
QU _A+ (C-tA) rt t S- - t- - ch -I d- tt '
, I COnsl enno e lstruZlOD.1 sot 0 rIpe a e. 1IPO lZZl e 1 co Ice ogge 0 cornspon-
dente a ciascuna di esse sia formata cia un primo byte contenente MOV AL e cia uno
o pili byte successivi contenenti Poperando delPistruzione. Si disegni a fianeD di
1cuna istruzione il formata delJlistruzione stessaj si dica come cleve essere interpretato
(iI campo dell'operando e si indichi il risultato dell'esecuzione delristruzione (il valore
che viene portato in AL). Si assuma che 1a posizione assegnata a Asia la O.
I
HOV AL,A
HOV AL, B
MOV AL, C
MOV AL, D
\
MOV Al, E
Esercizio D.2 Si supponga di avere un programma COD questa segmento dati:
-
Esercizio D.4 Si considerino Ie seguenti definizioni:
-' I
---
-
-
-
-
-
-
-
DATA SEGMENT PUBLIC 'DATA'
A OW 0.1,2,3
8 EQU A+3
C EQU 3
D DB 4,5,6
--, \ DATA ENOS
indichi per quali delle righe seguenti di programma l'assemb1atore da. errore. Per
queUe che non danno errore si indichi cosa si troverebbe nel registro impiegato se
ristruzione venisse eseguita.
\ MOV AL,A
- ' MOV AX,A+9
MOV AX,B
MOV AX,C
MOV AL,B+C
MOV AX,B+C
"-,
--
-
---
-
.-
-
. . . .
, . . . .
688 Appendice D
-.
-
]
-
]-
-
-
1-
1-
-
)-
1-
I
1-
\ -
I-
\
I-
)
I-
\..
)
I.
\ .
E
Comunicazione tra Calcolatori
Quando si parla di reti di calcolatori ci si riferisce a sistemi di elaborazione debolmente
connessi, nel senso che ciascuno di essi esostanzialmente indipendente e comunica
con gli altri trasmettendo e ricevendo dati attraverso una rete di collegamenti che
puo essere semplice quanto una coppia di fill di rame 0 complessa quanta un sistema
di comunicazione comprendente tratti satellitari.
. Con il termine DTE (Vata Terminal Equipment) si denota qualunque elemento
terminate che partecipa aIlo scambio di infonnazioni. Un DTE puo essere un semplice
terminale, una workstation, un server, etc. Con il tenmne DCE (Data Communication
Equipment) si denota un situato tra rete fisica e DTE, che consente a
quest'ultimo di trasmettere e ricevere dati.
Nell'evoluzione Ie reti di calcolatori hanno svolto un ruolo importante Ie reU
per Ie comunicazioni telefoniche, Ie cosiddette reti commutate 0 (Public Switched
Telephone Network, PSTN), la cui caratteristica equella di stabilire un collegamento
tra due DTE mediante una commutazione di cllcuito. La peculiarita del trafflco di
dati numerici rispetto al normale traffico t'elefonico (bu.rst di messaggi, necessita di
alte velocita di trasmissione
l
e di elevata affidabiliU.) ha spinto i vaxi enti pubblici
nazionali di telecomunicazioni a rendere disponibili nuove reti mirate a questa tipo di
traffico, che globalmente prendono il nome di Public Switched Data Network, (PSDN).
La rete ISDN (Integrated SenJlces Digital Network) pennette, in modo interamente
numerico, Ia trasmissione di dati diversificati (voce, dati numerici, immagini, ecc.).
I La velocita di trasmissione si misura in bit al secondo. Talvolta questa unita di misura viene
denomioata baud (1 baud :::0 1 bit/s)
E.l Introduzione
In epoca di Internet non poteva mancare un capitolo sulla comunicazione tra calcola-
tori. Il tema viene introdotto nei suoi aspetti di carattere generale, facendo riferimento
801 modello ISO/OS1. Vengono quindi esaminate Ie principali problematiche relative
ai livelli piu bassi di tale modello, in relazione alia comunicazione su linea seriale. In
particolare viene esaminato il collegamento attraverso linea seriale RS232C. Vengono
anche descritte altre soluzioni standard.
,.
,
,.
r:

'_C
,.".

C'
,. ,
;.;
p.

"
F.


>
..' '.

I
,

.. ,....'
:. :,

'.

r..
;

,
,...'
.' ,
f,
,"
.. {
r
,+

-
....
e
,
"

,
,; ,
I,'
t
- ,
. .'..
7,."

j.'O,

f"-.
;-::.
k
t,-

1."
;,:'
.:-' ;
.. 1"
J"
.. "

"f'}
,
t,
,'.
p.

, ..
.'"{'
.. "',.
l . /r-:.
..... . ".'
,' .j.: :.
;i"
,..... i;''-'
,
"
100
2
100
2
?
?
.. .
. - .
dati
EQU
EQU
DB
dati
EQU
OB
DB
Versione B
;Segmento
N
COST
VAR
;Segmento
N
COST
VAR
-
;Segmento di codice
MOV AL,VAR
MOV CX,N
L: ADD AL,COST
SUB CX,l
JNZ L
;Segmento di codice
MDV AL,VAR
MOV CX,N
L: ADD AL,COST
SUB CX,1
JNZ L
Esercizio D. 7 Qui sotto vengono riportate due versioni di un tratto di programma.
Si richiede una valutazione quantitativa circa 180 velocita. di esecuzione, determinando
il rapporto tra i tempi impiegati entro il delo nei due casi. A tale scopo si assuma
che la macchina sia 1'8088 (bus a 8 bit). Si facciano inoltre Ie seguenti assunzioni:
(a) durata delle operazioni di lettura e scrittura di un byte in memoria: 4 periodi di
clock; (b) cielo di fetch equivalente a un numero di letture pari 801' numero di byte di
cui si compone l'istruzione; (c) durata della decodifica ed esecuzione dell'istruzione
(can gli operandi disponibili in CPU): 1 periodo di clock. In rnancanza di un manuale
che da Pesatto formato delle istruzioni, si facciano ragionevoli assunzioni sul formato
del codice.
Versione A
-
. . . .
, . . . .
688 Appendice D
-.
-
]
-
]-
-
-
1-
1-
-
)-
1-
I
1-
\ -
I-
\
I-
)
I-
\..
)
I.
\ .
E
Comunicazione tra Calcolatori
Quando si parla di reti di calcolatori ci si riferisce a sistemi di elaborazione debolmente
connessi, nel senso che ciascuno di essi esostanzialmente indipendente e comunica
con gli altri trasmettendo e ricevendo dati attraverso una rete di collegamenti che
puo essere semplice quanto una coppia di fill di rame 0 complessa quanta un sistema
di comunicazione comprendente tratti satellitari.
. Con il termine DTE (Vata Terminal Equipment) si denota qualunque elemento
terminate che partecipa aIlo scambio di infonnazioni. Un DTE puo essere un semplice
terminale, una workstation, un server, etc. Con il tenmne DCE (Data Communication
Equipment) si denota un situato tra rete fisica e DTE, che consente a
quest'ultimo di trasmettere e ricevere dati.
Nell'evoluzione Ie reti di calcolatori hanno svolto un ruolo importante Ie reU
per Ie comunicazioni telefoniche, Ie cosiddette reti commutate 0 (Public Switched
Telephone Network, PSTN), la cui caratteristica equella di stabilire un collegamento
tra due DTE mediante una commutazione di cllcuito. La peculiarita del trafflco di
dati numerici rispetto al normale traffico t'elefonico (bu.rst di messaggi, necessita di
alte velocita di trasmissione
l
e di elevata affidabiliU.) ha spinto i vaxi enti pubblici
nazionali di telecomunicazioni a rendere disponibili nuove reti mirate a questa tipo di
traffico, che globalmente prendono il nome di Public Switched Data Network, (PSDN).
La rete ISDN (Integrated SenJlces Digital Network) pennette, in modo interamente
numerico, Ia trasmissione di dati diversificati (voce, dati numerici, immagini, ecc.).
I La velocita di trasmissione si misura in bit al secondo. Talvolta questa unita di misura viene
denomioata baud (1 baud :::0 1 bit/s)
E.l Introduzione
In epoca di Internet non poteva mancare un capitolo sulla comunicazione tra calcola-
tori. Il tema viene introdotto nei suoi aspetti di carattere generale, facendo riferimento
801 modello ISO/OS1. Vengono quindi esaminate Ie principali problematiche relative
ai livelli piu bassi di tale modello, in relazione alia comunicazione su linea seriale. In
particolare viene esaminato il collegamento attraverso linea seriale RS232C. Vengono
anche descritte altre soluzioni standard.
,.
,
,.
r:

'_C
,.".

C'
,. ,
;.;
p.

"
F.


>
..' '.

I
,

.. ,....'
:. :,

'.

r..
;

,
,...'
.' ,
f,
,"
.. {
r
,+

-
....
e
,
"

,
,; ,
I,'
t
- ,
. .'..
7,."

j.'O,

f"-.
;-::.
k
t,-

1."
;,:'
.:-' ;
.. 1"
J"
.. "

"f'}
,
t,
,'.
p.

, ..
.'"{'
.. "',.
l . /r-:.
..... . ".'
,' .j.: :.
;i"
,..... i;''-'
,
"
100
2
100
2
?
?
.. .
. - .
dati
EQU
EQU
DB
dati
EQU
OB
DB
Versione B
;Segmento
N
COST
VAR
;Segmento
N
COST
VAR
-
;Segmento di codice
MOV AL,VAR
MOV CX,N
L: ADD AL,COST
SUB CX,l
JNZ L
;Segmento di codice
MDV AL,VAR
MOV CX,N
L: ADD AL,COST
SUB CX,1
JNZ L
Esercizio D. 7 Qui sotto vengono riportate due versioni di un tratto di programma.
Si richiede una valutazione quantitativa circa 180 velocita. di esecuzione, determinando
il rapporto tra i tempi impiegati entro il delo nei due casi. A tale scopo si assuma
che la macchina sia 1'8088 (bus a 8 bit). Si facciano inoltre Ie seguenti assunzioni:
(a) durata delle operazioni di lettura e scrittura di un byte in memoria: 4 periodi di
clock; (b) cielo di fetch equivalente a un numero di letture pari 801' numero di byte di
cui si compone l'istruzione; (c) durata della decodifica ed esecuzione dell'istruzione
(can gli operandi disponibili in CPU): 1 periodo di clock. In rnancanza di un manuale
che da Pesatto formato delle istruzioni, si facciano ragionevoli assunzioni sul formato
del codice.
Versione A
..
\690 Appendice E
f
.
'i
i
I.
\ ",
Comunicazione tra Calcolatori 691

-
-
,I
i
I
,
"
,
,.
I
t
,
,
I
,
,
Opplicozione
---------------------
applicoz.ione
presentozione
---------------------
presentozione
sesslone
---------------------
sessione
trosporto
- _________r __________
trosporto
rete ---- rete ---- rete
collegomento ---- collegamento ---- collegomenlo
fisico fislCO fisico
SISTEMA A SISTEMA X SiSTEMA 8
Figura E.1 ModeUo ISO/OS1. II modello prevede sette livelli. 1 primi tre (fisico, colle
gamento, rete) 5000 orientati aUa rete e Ie lora funzionalita. devono essere presenti anche
nei nodi intermedi; gli a.1tri quattro (trasporto, sessione, presentaziooe e applicazione) sana
orientati aile applicazioni. Tranne che per illivello fisico, i collegamenti tra i livelli sono solo
logici. II sistema X 10 si pub interpretare come un singolo nodo (con funzione eli ripetitore
tra i due nodi A e B) a come il complesso della rete attraverso la quale A e B colloquia.no.
II modello ISO/OSI si bas. suI concetto di livello (layer): l'insieme delle funzioni
di un sistema di comunicazione viene diviso in un certo numero di u.nita funzionali
Un protocollo eun'insieme di regole a cui devono attenersi due dispositivi che inten-
dono comunicare tra loro e scambiarsi informazioni.
A partire dagli anni ottanta, con }'inizio della diffusione deUe reti, 1a comunita.
internazionale ha sentito 1a necessita di definire un certo numero di standard relati vi
ai protocolli, per far fronte alIa crescita caotica eli soluzioni proprietarie. In questa
contesto, particolare rilevaIlza assunse il modello definito dalPOrganizzazione Inter-
nazionale per la Standardizzazione (180). Si tratta di un insieme di protocolli definiti
allo scopo di permettere a calcolatori di comunicare e scambiare dati indipendente-
mente cial costruttore 0 cial sistema operativo. In questa sensa si parla di architettura
di tipo aperio (OS!: Open Systems Interconnection).
E.2 Il madella ISO/OSI
Ponti radio. Si usa 10 spazio aperto come mezzo trasmissivo quando la distanza da
collegare renderebbe treppo costoso stendere cavi tra Ie unita. comurucanti. I ponti
radio terrestri si usano per distanze generalmente inferiori a 50 Km. Per la gestione di
collegamenti ad alta velocita tra nazioni a continenti diversi vengono utilizzati satelliti
geostazionari.
attica. Tra gli svantaggi ci sono l'alto costo, Ia debolezza meccanica del cavo e la
difficolta. di unire 0 dividere due fibre ottiche lirnitando 1a dispersione del segnale.
,
...
,
"
,
,
"
,
,
"
,
\
..
"
..
/
,',-
1". '
,g.'
I . ,
I .'",
....',
"
'.
"'.

t:

["

"
..
"
"
t .,
,
I
,
};' ':
f
",
"
,.
10'
".
-"
t .,

;,."
.,
,,,
"
r
,
,
,..
,
.;
I' '\
.',
"
, .
,..
"

All'aumentare del traffico scambiato, Ie prestazioni della rete pubblica possono


isultaie insoddisfacenti aia a livello di costi che di prestazioni e puo essere conveniente
icorrere a una rete dedicata. Le reti dedicate vengono di norma classificate in base
alIa lora estensione. In particolare sono molto note Ie sigle che seguODO.
lLAN (Local Area' Network). Rete locale. H. un'estensione limitata (inferiore al
r chilometro). Usata per collegare i nodi presenti in un ufficio, tu:l edificio, un
impianto industriaJe
l
etc..
(Me'tropolitan Area Network). Rete metropolitana. Si estende su un'area che
1 ricopre tutta 0 una parte di una citta. I nodi sono generalmente rappresentati
da LAN.
\.1.1 II mezzo trasmissivo
Le reti di calcolatori possono essere costruite BU differenti mezzi trasmissivi. n mezzo
trasmissivo edettato cia criteri di ecooomicita ed efficieoza
1
tenuto conto delle carat-
- }eristiche tecniche the si vuole ottenere e della distanza da collegare. Elenchiamo i
principali tipi di supporto fisico.

Due fili. E il mezzo trasmissivo pili semplice e piu economica, lisato per bIe-
,
-I distanze 50m) e basse velocit.. 19.2Kbps). E soggetto. interferenze
lettromagnetiche e a diafonia (crosstalk).
oppino intrecciato. I fill 50no stretta.rnente attorcigliati tra lora, quindi Ie interfe-
fenze esterne sono captate nello stesso modo dai due fiji; cio comporta un segnale

eli modo comune che puo essere eliminato piu agevolmente. La geometria
. questa struttura permette anche di ridurre 1a diafonia quando pili linee sono riu-
ite in uno stesso cavOj si riesce cosi a raggiungere il centinaio d.i metri con velocita.
dell'ordine del milione di bit peLsecondo. Per migliorare l'immunita. aile interferenze
sono disponibili anche doppini schermati (shielded twisted pair).
favo coassiale. Uno dei due fili della linea prende 1a forma di un ci1indro eli mate-
I. iale conduttore racchiudente Paltro filo. Lo spazio tra i due conduttori eriempito di
materiale dielettrico e il tutto ericopeIto da Wla guaina isolante. Si pone il cilindro
t
rnassa mentre sul filo centrale scorre il segnaJe che risuIta dunque immune da in
erferenze esterne e perdite per irraggiamento; viene anche ridotto l'effetto pelle. 8i
aggiungono facilmente distanze di centinaia di metri con ve10cita. di IG-20Mbp5.
Fibra ottica. In questa caso il segnale che 5i propaga eun fascio di luce modulato in
_'t
na
tibra di vetre opportunamente schermata. Le caratteristiche principali della fibra
ttica sonG 1arga banda, bassissima attenuazione, immunita. alle interferenze esterne e
la diafoni. Si r.ggiungono velocit" eli centinaia di Mbps. In trasmissione vengono
usati dioeli LED 0 LASER, mentre in ricezione i:1 segnale viene captato cia fotodiodi
1
fototransistori. L'impiego dell. fibr. ottic., oltr. che in tutte Ie .pplicazioni pili
omuni, risulta vantaggioso anche per basse velocita di trasmissione in ambienti par-
r1.l)Ilorosi da! punto eli vista elettricoi viene inoltre usata anche per il
suo alto livello df SicurezZ3, dal momento che ed.i.ffi.cile derivare i segnaJi cia una fibra
I
!WAN (Wide Area Network). Rete geografica. Puo arrivare a connettere nodi di
I paesi 0 continenti diversi.
-
..
\690 Appendice E
f
.
'i
i
I.
\ ",
Comunicazione tra Calcolatori 691

-
-
,I
i
I
,
"
,
,.
I
t
,
,
I
,
,
Opplicozione
---------------------
applicoz.ione
presentozione
---------------------
presentozione
sesslone
---------------------
sessione
trosporto
- _________r __________
trosporto
rete ---- rete ---- rete
collegomento ---- collegamento ---- collegomenlo
fisico fislCO fisico
SISTEMA A SISTEMA X SiSTEMA 8
Figura E.1 ModeUo ISO/OS1. II modello prevede sette livelli. 1 primi tre (fisico, colle
gamento, rete) 5000 orientati aUa rete e Ie lora funzionalita. devono essere presenti anche
nei nodi intermedi; gli a.1tri quattro (trasporto, sessione, presentaziooe e applicazione) sana
orientati aile applicazioni. Tranne che per illivello fisico, i collegamenti tra i livelli sono solo
logici. II sistema X 10 si pub interpretare come un singolo nodo (con funzione eli ripetitore
tra i due nodi A e B) a come il complesso della rete attraverso la quale A e B colloquia.no.
II modello ISO/OSI si bas. suI concetto di livello (layer): l'insieme delle funzioni
di un sistema di comunicazione viene diviso in un certo numero di u.nita funzionali
Un protocollo eun'insieme di regole a cui devono attenersi due dispositivi che inten-
dono comunicare tra loro e scambiarsi informazioni.
A partire dagli anni ottanta, con }'inizio della diffusione deUe reti, 1a comunita.
internazionale ha sentito 1a necessita di definire un certo numero di standard relati vi
ai protocolli, per far fronte alIa crescita caotica eli soluzioni proprietarie. In questa
contesto, particolare rilevaIlza assunse il modello definito dalPOrganizzazione Inter-
nazionale per la Standardizzazione (180). Si tratta di un insieme di protocolli definiti
allo scopo di permettere a calcolatori di comunicare e scambiare dati indipendente-
mente cial costruttore 0 cial sistema operativo. In questa sensa si parla di architettura
di tipo aperio (OS!: Open Systems Interconnection).
E.2 Il madella ISO/OSI
Ponti radio. Si usa 10 spazio aperto come mezzo trasmissivo quando la distanza da
collegare renderebbe treppo costoso stendere cavi tra Ie unita. comurucanti. I ponti
radio terrestri si usano per distanze generalmente inferiori a 50 Km. Per la gestione di
collegamenti ad alta velocita tra nazioni a continenti diversi vengono utilizzati satelliti
geostazionari.
attica. Tra gli svantaggi ci sono l'alto costo, Ia debolezza meccanica del cavo e la
difficolta. di unire 0 dividere due fibre ottiche lirnitando 1a dispersione del segnale.
,
...
,
"
,
,
"
,
,
"
,
\
..
"
..
/
,',-
1". '
,g.'
I . ,
I .'",
....',
"
'.
"'.

t:

["

"
..
"
"
t .,
,
I
,
};' ':
f
",
"
,.
10'
".
-"
t .,

;,."
.,
,,,
"
r
,
,
,..
,
.;
I' '\
.',
"
, .
,..
"

All'aumentare del traffico scambiato, Ie prestazioni della rete pubblica possono


isultaie insoddisfacenti aia a livello di costi che di prestazioni e puo essere conveniente
icorrere a una rete dedicata. Le reti dedicate vengono di norma classificate in base
alIa lora estensione. In particolare sono molto note Ie sigle che seguODO.
lLAN (Local Area' Network). Rete locale. H. un'estensione limitata (inferiore al
r chilometro). Usata per collegare i nodi presenti in un ufficio, tu:l edificio, un
impianto industriaJe
l
etc..
(Me'tropolitan Area Network). Rete metropolitana. Si estende su un'area che
1 ricopre tutta 0 una parte di una citta. I nodi sono generalmente rappresentati
da LAN.
\.1.1 II mezzo trasmissivo
Le reti di calcolatori possono essere costruite BU differenti mezzi trasmissivi. n mezzo
trasmissivo edettato cia criteri di ecooomicita ed efficieoza
1
tenuto conto delle carat-
- }eristiche tecniche the si vuole ottenere e della distanza da collegare. Elenchiamo i
principali tipi di supporto fisico.

Due fili. E il mezzo trasmissivo pili semplice e piu economica, lisato per bIe-
,
-I distanze 50m) e basse velocit.. 19.2Kbps). E soggetto. interferenze
lettromagnetiche e a diafonia (crosstalk).
oppino intrecciato. I fill 50no stretta.rnente attorcigliati tra lora, quindi Ie interfe-
fenze esterne sono captate nello stesso modo dai due fiji; cio comporta un segnale

eli modo comune che puo essere eliminato piu agevolmente. La geometria
. questa struttura permette anche di ridurre 1a diafonia quando pili linee sono riu-
ite in uno stesso cavOj si riesce cosi a raggiungere il centinaio d.i metri con velocita.
dell'ordine del milione di bit peLsecondo. Per migliorare l'immunita. aile interferenze
sono disponibili anche doppini schermati (shielded twisted pair).
favo coassiale. Uno dei due fili della linea prende 1a forma di un ci1indro eli mate-
I. iale conduttore racchiudente Paltro filo. Lo spazio tra i due conduttori eriempito di
materiale dielettrico e il tutto ericopeIto da Wla guaina isolante. Si pone il cilindro
t
rnassa mentre sul filo centrale scorre il segnaJe che risuIta dunque immune da in
erferenze esterne e perdite per irraggiamento; viene anche ridotto l'effetto pelle. 8i
aggiungono facilmente distanze di centinaia di metri con ve10cita. di IG-20Mbp5.
Fibra ottica. In questa caso il segnale che 5i propaga eun fascio di luce modulato in
_'t
na
tibra di vetre opportunamente schermata. Le caratteristiche principali della fibra
ttica sonG 1arga banda, bassissima attenuazione, immunita. alle interferenze esterne e
la diafoni. Si r.ggiungono velocit" eli centinaia di Mbps. In trasmissione vengono
usati dioeli LED 0 LASER, mentre in ricezione i:1 segnale viene captato cia fotodiodi
1
fototransistori. L'impiego dell. fibr. ottic., oltr. che in tutte Ie .pplicazioni pili
omuni, risulta vantaggioso anche per basse velocita di trasmissione in ambienti par-
r1.l)Ilorosi da! punto eli vista elettricoi viene inoltre usata anche per il
suo alto livello df SicurezZ3, dal momento che ed.i.ffi.cile derivare i segnaJi cia una fibra
I
!WAN (Wide Area Network). Rete geografica. Puo arrivare a connettere nodi di
I paesi 0 continenti diversi.
-
." l'
."" ..
>". ,I
., " \
,
,.
I'"
\ -
1-
J-
-
I-
-
1-
I.
\ -
1-
\ -
I-
\
1-
np, SMTP, Telnet
TCP UDP
IP
, leMP
ARP RARP
Ethernet Token-Ring, FOOl, ATM. Asincrono.
SNA ..
.
)

,
,
opplicozione
trosporto
rete
Interioccia Rete
e supporto fisico
E,3.l Tipi di trasmissione
Nel seguito faremo tendenzialmente riferimenta al madelia ISOIOS1. Del resto
l'interesse di questa capitolo efocalizzato agli aspetti d.i basso Uvello riguardanti it
hvello fisico e di collegarnento (ebe nel TCP/IP costituiscono un unico Uvello), per
i quali non ci sono differenze, nel senso che per essi sono definiti degli standard sui
quaii si puo costruire sia 10 stack ISOIOSI che quello TCP/IP.
La trasmissione d.i segnali tra due dispositivi non puo avvenire direttamente, se non
per brevi distanze lOcm) e basse frequenze di clock 40MHz). La caUSa prin-.
cipale di cio risiede nel livella di rumore che affiigge Ie linee di connessione; che facil-
mente supera il margine di rumore tollerato dalle comuni logiche con cui sono realizzati
i dispositivi (es: margine di rumore di una porta TTL standard: O,4V). Per questa
motivo oecorre pilotare la linea con dispositivi drivers in grade di aumentare illivello
del segnale
l
migliorando il margine d.i rUI!l0re.
La linea puo essere pilotata in tensione (FiguraE.3) a in corrente (FiguraEA)
Comunicazione tra Calcolatori 693
,
Figura B.2 Lo Stack TCP11P. Telnet, SMTP e FTP sono ben noti protocoUi di Hyello
applicativo. TCP (Thm.';ni".sion Control Protocol) e il normale protOcollo di trasporto;
UDP (U"tr Datagram Protocol)e pure un protocollo di trasporto. IP (Internet ProtoClll)
e it protocono di rete fondamentalej a livella di rete ci sana altri protocolli (compresenti a
IP) per il COD-troUo della comunicazione (IeMP, ARP, RARP). lrifine la figura. mostra aJcuni
standard a liyelJo di collegamento e di mezzo fisico.
E.3 Livello fisico
rna individua un numero minore di strati del madelia ISOIOS1. Tra i due modeill si
puo stabilire una generica relazione, rna nella specifieD Ie funzionalita dei vari livelli
non sono identiche. C'e da dire che il TCPlIP, can l'affermarsi di Internet ediventato
\0 standard di latta a livello mondiale, mentre il madelia ISOIOSI continua a fare
la parte di un'elegante costruzione mentale the di fatto non ha trovato realizzazione
pratica.
La stack TCPlIP e .in FiguraE.2. Yale la pena di notare che can il termine
TCPlIP si designa in realta un insieme (,,,ite) di protocolli. In Figura E.2 ne sana
indicati alcuni dei possibili ai vari livelli
,
,
,


t, ;,

:J
;"'."
,.
,'
; ...
,
,
'>'
.".
,
'I
'"

'. ';"
-.'
,.
,
,
\'..

( ..
t, '
'.- .
I
j:,.
I'
I
,
,

.'

..
..
"
,.
,',
1"
F
1
,
,
I'
" .
,
,
,
,
-'"

,
, ,
,
i
.'"
..
,
E,2.l II Protocollo TCP!IP
Fisico. il livello del collegamento fisico tra it sistema e la retej riguarda le carat-
teristiche meccaniche ed elettriche della connessione.
Nella stessa epoca in cui veniva proposto il modello ISO/OS1, si stava affermanclo it
protocollo TCPlIP. Arrche il madelia TCPlIP si basa sui concetto di stratificazione,
piu semplici, organizzate gerarchicamente a livelli
2
. Idealmente deve essere possibile
modifica.re 0 sostituire i software e gli eventuali dispositivi relativi a un HveHa, seuza
che gli altri livelli ne risentano. Si dice che ogni funzione relativa a un livello deve
essere tra.sparente.
Facenda riferimento alIa FiguraE.l
l
tutto avviene come se agni Hvella del nodo
A comunicasse solo can il suo pari nel sistema H, usanda i servizi forniti dal livello
immediatamente inferiore. Ogni livello prende in consegna i1 messaggio da! Hvello
immediatamente superiore, vi aggiunge il suo PCI (Protocol Control Information)
e 10 consegna al Hvello irnmediatamente inferiore. Al Uvello pili basso it messaggio
cosi preparato viene inviato attraverso la rete sottostante. Nel nodo ricevente que-
sta procedura viene invertita. Can un procedjmento stavolta ascendente, ogni PCl
viene processato e rimosso da! relativo livello, mentre il contenuto informativo viene
consegnato al livello immediatamente superiore. Le funzioni relative a ciascun Hvella
possono essere cosl brevemente riassunte:
2La strutturazione a livelli eun tipioo processo adottato nella progettazione e nello syiluppo di
sistemi software.
3Si usa anche Ie parole pa.cchetto packet e frame.
Collegamento. Fornisce Umezzo per trasmettere i dati sulla connessione fisica sot-
tostante. Comprende ie tecniche d.i sincronizzazione (di bit, di parola e di frame)
e it cantrolla degli errori.
Gestisce l'instradamento (routing) dei messaggi3. Consente di connettere due
sistemi a una 0 pili reti, garantendo un servizio end-ta-end uniforme ai livelli
trasporto.

Trasporto. E responsabile de! controllo di flusso (flow control). Garantisce che i


messaggi scambiati dar Hvello sessione siano privi d.i errore e che non ci siano
ripetizioni 0 mancanze, indipendentemente dalla rete sottostante.
Sessione. Fornisce, a due applicazioni eseguite in due diversi nodi della rete, i mezzi
per organizzare, sincronizzare e regolare 10 scambio di dati.
Presentazione. Effettua it cantrolle sintattico dell'informazione trasmessa. Com-
prende la compressione di parola e 1a cifratura dei dati.
App1.icazione. Fa da interfaccia verso l'utente dei vari protocolli sottostanti. For-
nisce it supporto per i programmi applicativi a110 scopo di garantire in modo
aperto una serie di funzioni per l'elaborazione dell'inforrnazione.
692 Appendice E
." l'
."" ..
>". ,I
., " \
,
,.
I'"
\ -
1-
J-
-
I-
-
1-
I.
\ -
1-
\ -
I-
\
1-
np, SMTP, Telnet
TCP UDP
IP
, leMP
ARP RARP
Ethernet Token-Ring, FOOl, ATM. Asincrono.
SNA ..
.
)

,
,
opplicozione
trosporto
rete
Interioccia Rete
e supporto fisico
E,3.l Tipi di trasmissione
Nel seguito faremo tendenzialmente riferimenta al madelia ISOIOS1. Del resto
l'interesse di questa capitolo efocalizzato agli aspetti d.i basso Uvello riguardanti it
hvello fisico e di collegarnento (ebe nel TCP/IP costituiscono un unico Uvello), per
i quali non ci sono differenze, nel senso che per essi sono definiti degli standard sui
quaii si puo costruire sia 10 stack ISOIOSI che quello TCP/IP.
La trasmissione d.i segnali tra due dispositivi non puo avvenire direttamente, se non
per brevi distanze lOcm) e basse frequenze di clock 40MHz). La caUSa prin-.
cipale di cio risiede nel livella di rumore che affiigge Ie linee di connessione; che facil-
mente supera il margine di rumore tollerato dalle comuni logiche con cui sono realizzati
i dispositivi (es: margine di rumore di una porta TTL standard: O,4V). Per questa
motivo oecorre pilotare la linea con dispositivi drivers in grade di aumentare illivello
del segnale
l
migliorando il margine d.i rUI!l0re.
La linea puo essere pilotata in tensione (FiguraE.3) a in corrente (FiguraEA)
Comunicazione tra Calcolatori 693
,
Figura B.2 Lo Stack TCP11P. Telnet, SMTP e FTP sono ben noti protocoUi di Hyello
applicativo. TCP (Thm.';ni".sion Control Protocol) e il normale protOcollo di trasporto;
UDP (U"tr Datagram Protocol)e pure un protocollo di trasporto. IP (Internet ProtoClll)
e it protocono di rete fondamentalej a livella di rete ci sana altri protocolli (compresenti a
IP) per il COD-troUo della comunicazione (IeMP, ARP, RARP). lrifine la figura. mostra aJcuni
standard a liyelJo di collegamento e di mezzo fisico.
E.3 Livello fisico
rna individua un numero minore di strati del madelia ISOIOS1. Tra i due modeill si
puo stabilire una generica relazione, rna nella specifieD Ie funzionalita dei vari livelli
non sono identiche. C'e da dire che il TCPlIP, can l'affermarsi di Internet ediventato
\0 standard di latta a livello mondiale, mentre il madelia ISOIOSI continua a fare
la parte di un'elegante costruzione mentale the di fatto non ha trovato realizzazione
pratica.
La stack TCPlIP e .in FiguraE.2. Yale la pena di notare che can il termine
TCPlIP si designa in realta un insieme (,,,ite) di protocolli. In Figura E.2 ne sana
indicati alcuni dei possibili ai vari livelli
,
,
,


t, ;,

:J
;"'."
,.
,'
; ...
,
,
'>'
.".
,
'I
'"

'. ';"
-.'
,.
,
,
\'..

( ..
t, '
'.- .
I
j:,.
I'
I
,
,

.'

..
..
"
,.
,',
1"
F
1
,
,
I'
" .
,
,
,
,
-'"

,
, ,
,
i
.'"
..
,
E,2.l II Protocollo TCP!IP
Fisico. il livello del collegamento fisico tra it sistema e la retej riguarda le carat-
teristiche meccaniche ed elettriche della connessione.
Nella stessa epoca in cui veniva proposto il modello ISO/OS1, si stava affermanclo it
protocollo TCPlIP. Arrche il madelia TCPlIP si basa sui concetto di stratificazione,
piu semplici, organizzate gerarchicamente a livelli
2
. Idealmente deve essere possibile
modifica.re 0 sostituire i software e gli eventuali dispositivi relativi a un HveHa, seuza
che gli altri livelli ne risentano. Si dice che ogni funzione relativa a un livello deve
essere tra.sparente.
Facenda riferimento alIa FiguraE.l
l
tutto avviene come se agni Hvella del nodo
A comunicasse solo can il suo pari nel sistema H, usanda i servizi forniti dal livello
immediatamente inferiore. Ogni livello prende in consegna i1 messaggio da! Hvello
immediatamente superiore, vi aggiunge il suo PCI (Protocol Control Information)
e 10 consegna al Hvello irnmediatamente inferiore. Al Uvello pili basso it messaggio
cosi preparato viene inviato attraverso la rete sottostante. Nel nodo ricevente que-
sta procedura viene invertita. Can un procedjmento stavolta ascendente, ogni PCl
viene processato e rimosso da! relativo livello, mentre il contenuto informativo viene
consegnato al livello immediatamente superiore. Le funzioni relative a ciascun Hvella
possono essere cosl brevemente riassunte:
2La strutturazione a livelli eun tipioo processo adottato nella progettazione e nello syiluppo di
sistemi software.
3Si usa anche Ie parole pa.cchetto packet e frame.
Collegamento. Fornisce Umezzo per trasmettere i dati sulla connessione fisica sot-
tostante. Comprende ie tecniche d.i sincronizzazione (di bit, di parola e di frame)
e it cantrolla degli errori.
Gestisce l'instradamento (routing) dei messaggi3. Consente di connettere due
sistemi a una 0 pili reti, garantendo un servizio end-ta-end uniforme ai livelli
trasporto.

Trasporto. E responsabile de! controllo di flusso (flow control). Garantisce che i


messaggi scambiati dar Hvello sessione siano privi d.i errore e che non ci siano
ripetizioni 0 mancanze, indipendentemente dalla rete sottostante.
Sessione. Fornisce, a due applicazioni eseguite in due diversi nodi della rete, i mezzi
per organizzare, sincronizzare e regolare 10 scambio di dati.
Presentazione. Effettua it cantrolle sintattico dell'informazione trasmessa. Com-
prende la compressione di parola e 1a cifratura dei dati.
App1.icazione. Fa da interfaccia verso l'utente dei vari protocolli sottostanti. For-
nisce it supporto per i programmi applicativi a110 scopo di garantire in modo
aperto una serie di funzioni per l'elaborazione dell'inforrnazione.
692 Appendice E
-
1
695
"
Comunicazione tra Calcolatori
, 2
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
14 15 ;Z5
Figura E.5 Connettore standard RS232C a. 25 piedini. Per la sua forma il connettore e
detto a "D". Il connettore emaschio sui DTE e femmma. sui DCE. Can la diffusione delle
LAN la comunicazione seriate viene sempre piu usata per piccole e basse velocita.
Poiche bastano molte poche linee per 1a comunicazione, negli anni recenti, it connettore a
25 piedini estato praticamente abbandonato a favore di un connettore piu piccolo a soli 9
contatti.
Livelli logici nella standard RS232C Lo standard RS232C prescrive due livelli
di tensione -12 e +12 Volt, con -12 inteso come valore logico 1 e +12 come O. Con 1e
nostre convenzioni si tratta di logica negativa.
rn Figura E.6 viene riportato un esempio di linea RS232C. Nel punta (2) Ie linee
relative al data trasmesso e ricevuto andrebbero indicate come TxD e RxD. Esse
vengono invece indicate con TxD e RxD. La ragione espiegata nella 9idascalia di
Figura E. 7. Tale problema non si pone per gli altri segnali.
TxD: Dato trasmesso (transmitted data, circuito 103). 'frasmette i dati dal DTE al
DeE. Quando non ein corso una trasmissione 5i mantiene nello stato di riposo.
RxD: Data ricevuto (received data, circuito 104). Su questa linea DTE riceve i dati.
Tra i circuiti di camanda si ricordano i seguenti:
RTS: (Request to send, circuito 105). Un comando del DTE su questa circuito im-
pone al DeE di predisporsi per la trasmissione dei dati: se il DCE eun modem,
questa provvede a inviare 1a portante in linea in un tempo non superiore a 2 secon-
cli. Forzando questa circuito in posizione di lavoro si pone il DeE in trasmissione
in modo permanente.
CTS: (Clear to send, circuito 106). lndicazione dal DCE al DTE. Dice che il DCE e
pronto a trasmettere i dati.
DSR: (Data set ready, circuito 107). Indica a1 OTE che i1 DeE e connesso alla
linea e che e pronto a trasmettere i dati sulla linea. Non significa perc che il
collegamento sia stabilito. Nel caso di comunicazioni su linea dedicata questa
circuito epermanentemente asserito.
DTR: (Data terminal ready, circuito 108(2). lndica al DCE che il DTE epronto a
trasmettere, quindi comanda il DCE a connettersi alla linea.
DCD: (Data carner detect, circuito 109). Da DCE a DTE. lndica che DCE sta
ricevendo la portante deU'altro DCE.
mFigura E.5 viene rnostrata 1a piedinatura del classico connettore RS232, mentre
la TabellaE.l riporta Fassegnazione dei piedini ai circuiti descritti.
.
,
I .
,
;
,
,
..
\ .
.'

I
,;
- .

,
,
;
, .
l".
'.:.

f
/

, l',
--"
,.


'f.,


.,
it
,
,.
.,,-::
, .
,.
,
.,
';r
."\:.
,
i

,-..
:.... ,
.,'

,
. i;
I
I

.

i',
'. Ic'

..
w.
i
-81
fiF'""----'
i
w.
Appendice E
I h
\
I +n---cJ. ..
/1"11. TTl.. 1ll htG
....' ;"",,1 I/'Iput
L--
r
' :1.-
I PuN-up Gltivo 1 PuU-60..n Totem pol,
lFigura E.3 Tre modalita di pilotaggio in tensione di una. linea di comunicazione: pull.
up attivo
1
pull-down attivo e totem-pole. La corrente di pilotaggio richiesta dipende dalla.
resistenza di terminazione della linea e dallivello di segnale richiesto; valori tipici variano da
1
25mA
a lOOmA. La trasmissione su un solo filo (single ended) come in figura, viene impiegata
su doppini intrecciati e cavi coassiali. Ha. il vantaggio del basso costa e del basso numero
di componenti. Per contro presenta un certo numero di inconvenienti: (a) genera.zione di
disturbi; (b) bassa immunita. al rumorej (c) limiti nella lunghezza della linea. e nella. velocita
ldei dati.
[694
,
I
-
,
-- I
('--:-:;:-------
-4E stata apecificata una sola linea di terra, comune a entr::unbe ie direzioni di trasmissione,
dunque soggetta a notevole diaionia.
-
-
-
-
_.
-
. I
_I 1
{Figura E.4 Pilotaggio in corrente. Tra i vantaggi del pHetaggio in COrrente ricordiamo
che: (a) I'uscita puo essere cortocircuitata. senza dannij (b) non ci sano gra.ndi sbalzi di
COrrente e quindi non efonte di disturbi a iadiofrequenza. (RFI); (c) si possono pilotare lioee
\
3 bassa impedenza senza Paggiunta di altre fonti di alimentazione. Per contro Ie velocita
di trasmissione risultano normalmente malta basse. Per questi motivi Ie linee in corrente
trovano largo impiego in ambienti industriali rumorosi.
F3.2 Esempio di standard di Hvello fisico: RS232C/V24
Lo standard RS232 fu introdotto nel 1962 dati' ErA (Electronic Industries Associa-

Nel 1969 la stessa organjzzazione americana presento una revisione denomi-


lata RS232C, accolta anche dal CCrTT (Comitato Consultivo lnternazionale per la
elegrafia e Telefonia) nelia raccomandazione V24. Benche inizialmente (osse stato
pensato per interfacciare il DTE al modem (0 a un qualsiasi DCE), estato poi adot-
It,ato anche nella trasmissione seriale tra due DTE su brevi distanze e basse velocita.
.- 'd.i trasmissione.
I La specifica V24 del CCrTT definisce complessivamente ben 54 tinee, denominate
circuiti, anche se l'insieme minima per stabilire una comunicazione richiede solo due
e
nee
per scambiare i dati, cItre alla desiderabile linea di massa. Qui di seguito si
.- riportano solo alcune linee dello standard V24.
GND: Terra di riferimento, (signal ground, circuito 102). Ritorno comune per tutti
gli altri' crrcuiti d.i interfaccia
4

-
-
..-
-
-
-
-
1
695
"
Comunicazione tra Calcolatori
, 2
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
14 15 ;Z5
Figura E.5 Connettore standard RS232C a. 25 piedini. Per la sua forma il connettore e
detto a "D". Il connettore emaschio sui DTE e femmma. sui DCE. Can la diffusione delle
LAN la comunicazione seriate viene sempre piu usata per piccole e basse velocita.
Poiche bastano molte poche linee per 1a comunicazione, negli anni recenti, it connettore a
25 piedini estato praticamente abbandonato a favore di un connettore piu piccolo a soli 9
contatti.
Livelli logici nella standard RS232C Lo standard RS232C prescrive due livelli
di tensione -12 e +12 Volt, con -12 inteso come valore logico 1 e +12 come O. Con 1e
nostre convenzioni si tratta di logica negativa.
rn Figura E.6 viene riportato un esempio di linea RS232C. Nel punta (2) Ie linee
relative al data trasmesso e ricevuto andrebbero indicate come TxD e RxD. Esse
vengono invece indicate con TxD e RxD. La ragione espiegata nella 9idascalia di
Figura E. 7. Tale problema non si pone per gli altri segnali.
TxD: Dato trasmesso (transmitted data, circuito 103). 'frasmette i dati dal DTE al
DeE. Quando non ein corso una trasmissione 5i mantiene nello stato di riposo.
RxD: Data ricevuto (received data, circuito 104). Su questa linea DTE riceve i dati.
Tra i circuiti di camanda si ricordano i seguenti:
RTS: (Request to send, circuito 105). Un comando del DTE su questa circuito im-
pone al DeE di predisporsi per la trasmissione dei dati: se il DCE eun modem,
questa provvede a inviare 1a portante in linea in un tempo non superiore a 2 secon-
cli. Forzando questa circuito in posizione di lavoro si pone il DeE in trasmissione
in modo permanente.
CTS: (Clear to send, circuito 106). lndicazione dal DCE al DTE. Dice che il DCE e
pronto a trasmettere i dati.
DSR: (Data set ready, circuito 107). Indica a1 OTE che i1 DeE e connesso alla
linea e che e pronto a trasmettere i dati sulla linea. Non significa perc che il
collegamento sia stabilito. Nel caso di comunicazioni su linea dedicata questa
circuito epermanentemente asserito.
DTR: (Data terminal ready, circuito 108(2). lndica al DCE che il DTE epronto a
trasmettere, quindi comanda il DCE a connettersi alla linea.
DCD: (Data carner detect, circuito 109). Da DCE a DTE. lndica che DCE sta
ricevendo la portante deU'altro DCE.
mFigura E.5 viene rnostrata 1a piedinatura del classico connettore RS232, mentre
la TabellaE.l riporta Fassegnazione dei piedini ai circuiti descritti.
.
,
I .
,
;
,
,
..
\ .
.'

I
,;
- .

,
,
;
, .
l".
'.:.

f
/

, l',
--"
,.


'f.,


.,
it
,
,.
.,,-::
, .
,.
,
.,
';r
."\:.
,
i

,-..
:.... ,
.,'

,
. i;
I
I

.

i',
'. Ic'

..
w.
i
-81
fiF'""----'
i
w.
Appendice E
I h
\
I +n---cJ. ..
/1"11. TTl.. 1ll htG
....' ;"",,1 I/'Iput
L--
r
' :1.-
I PuN-up Gltivo 1 PuU-60..n Totem pol,
lFigura E.3 Tre modalita di pilotaggio in tensione di una. linea di comunicazione: pull.
up attivo
1
pull-down attivo e totem-pole. La corrente di pilotaggio richiesta dipende dalla.
resistenza di terminazione della linea e dallivello di segnale richiesto; valori tipici variano da
1
25mA
a lOOmA. La trasmissione su un solo filo (single ended) come in figura, viene impiegata
su doppini intrecciati e cavi coassiali. Ha. il vantaggio del basso costa e del basso numero
di componenti. Per contro presenta un certo numero di inconvenienti: (a) genera.zione di
disturbi; (b) bassa immunita. al rumorej (c) limiti nella lunghezza della linea. e nella. velocita
ldei dati.
[694
,
I
-
,
-- I
('--:-:;:-------
-4E stata apecificata una sola linea di terra, comune a entr::unbe ie direzioni di trasmissione,
dunque soggetta a notevole diaionia.
-
-
-
-
_.
-
. I
_I 1
{Figura E.4 Pilotaggio in corrente. Tra i vantaggi del pHetaggio in COrrente ricordiamo
che: (a) I'uscita puo essere cortocircuitata. senza dannij (b) non ci sano gra.ndi sbalzi di
COrrente e quindi non efonte di disturbi a iadiofrequenza. (RFI); (c) si possono pilotare lioee
\
3 bassa impedenza senza Paggiunta di altre fonti di alimentazione. Per contro Ie velocita
di trasmissione risultano normalmente malta basse. Per questi motivi Ie linee in corrente
trovano largo impiego in ambienti industriali rumorosi.
F3.2 Esempio di standard di Hvello fisico: RS232C/V24
Lo standard RS232 fu introdotto nel 1962 dati' ErA (Electronic Industries Associa-

Nel 1969 la stessa organjzzazione americana presento una revisione denomi-


lata RS232C, accolta anche dal CCrTT (Comitato Consultivo lnternazionale per la
elegrafia e Telefonia) nelia raccomandazione V24. Benche inizialmente (osse stato
pensato per interfacciare il DTE al modem (0 a un qualsiasi DCE), estato poi adot-
It,ato anche nella trasmissione seriale tra due DTE su brevi distanze e basse velocita.
.- 'd.i trasmissione.
I La specifica V24 del CCrTT definisce complessivamente ben 54 tinee, denominate
circuiti, anche se l'insieme minima per stabilire una comunicazione richiede solo due
e
nee
per scambiare i dati, cItre alla desiderabile linea di massa. Qui di seguito si
.- riportano solo alcune linee dello standard V24.
GND: Terra di riferimento, (signal ground, circuito 102). Ritorno comune per tutti
gli altri' crrcuiti d.i interfaccia
4

-
-
..-
-
-
-
E.3.3 Esempi di collegamenti RS232C
I

1
L
.
r
-
1.
I-
\
I -
1-
\
I
)
1
697
1 SCH
7 ONO
2 T.n
3 R.D
RTS
S CT'
20 orR
6 OSR
8 CDC
22 RI
STAZ.8
, ,
bits di stop
"
, " ,
SGH 1 I
CN07
T.O 2
R""
RTS<
CTS 5
OrR 20
OSR6
COC8
RI 2:1:
CCNlneltOrl/
femmlna
Comunicazione tra Calcolatori
,e<
eND
T,O
R,'
RTS
CTS
,OOTR
0'"
8 CDC
2R1
STAZ.A
bit di start

'- ,
"'-conMltari/
femmina
"/\XXXXXXX\

r--
------------

,
7
,
3

C

,
:3

I'
6
1
8
I'
SCH 1
CN07
T.O 2
R.D J
RTS 4
CTS 5
OTR 2'
OSR6
coca
RI 2
Descriviarno ora brevemente due standard di collegamento seriale che trovano largo
impiego in ambiente industriale.
RS422jVll. Ogni circuito edi tipo bilanciato. Come supporto fisico
eprevisto Puso del cloppino intrecciato (Figura E.10).
Loop di cerrente a BOrnA (direttiva CCITT V31). Lo schema ein Figura E.n. AJ
passaggio diuna corrente di 20mA eassociate 1'110gico (Mark)) mentre 100 eassociato
all'interruzione del passaggio di corrente. n loop di corrente estato standardizzato
RS232 RS232
--,\ 1,..---
IOTE ++-10CE SM10TE S\
E.3A Altri standard seriali
Figura E.9 A, sinistra il collegamento null-modem a 3 fili, a destra il collegamento null-
modem a 5 fili. Nel caso dei 3 fill Ie due linee dati si attestano su un connettore at piedino
2 (3) e sull'altro al piedino 3 (2). n controlto della comunicazio"ne cleve avvenire attraverso
10 scambio dei dati. Una tecnica consiste nel realizzate un protocollo di tipo hand-jhaking
attraverso ta trasmissione/ricezione dei caratteri XON e XOFF. Nel case dei 5 fili Ie linee
DTR e DSR possono essere usate per gestiie un protocollo tra i PTE collegati.
Figura E.8 Collegamento tra due stazioni su linea comoltltata.
Figura E.7 Formato di un carattere trasmesso in modo asincrono. 11 bit di start e i bit
di stop hanna necessariamente polarita. opposte. Si conviene che a riposo 13 linea sia a
livello basso e quindi il bit di start (per poter segnalare che io.izia 13 di un
carattere) cleve per rona di case essere' a liveUo alto. Ne consegue che per i hit'di start/stop
la convenzione eopposta a quella relativa ai bit dei dati, infatti 10 stato attivo (ll bit d.i start)
e a +12V, come se Fosse logica positiva. In altre parole, c'e I'incongruenza eli considerate i
bit dati in logica negativa e i bit di start stop in 'L'incongruenza si risolve
indicando le !inee dati della standard RS232C come TxD e RxD.
"
..
'0: ..
.
.'. ,
( ..
, .,
.,
.".
-
,
, .
j 1,
, .
1',,J,
.
, -
,
,

i'
i
,

..
.' ,
11
, ",

-'.I.
....
..
"
1'.
I . '.,

,
,
..
" .
/,':.1
':'
'.
".
" .,
,
verso il
DCE
(2)
drivers/

( 1)
102 AB GND 7
103 BA
.
TxD 2

B
m
3
1 5
L;,
4

-g-

5
1 7 6
108/2
L;D
UTR 20
109 CF DCD 8
I V.24 [RS232 [}bbreviaz. I pin I
,
,"0
ToO

T,O
J-
R.O
R.O R.O
UART "
RTS
m
"-
RTS
"
CTS
m

CTS
"
1
1M'
"T
Appendice E
In Figura E.8 viene schernatizzato if collegamento tra due sistemi attraverso linea
telefonica.
Quello di FlguraE.8 eII solo collegamento previsto dallo standard V24. Tutta-
via) come gia. accennato, benche 10 standard preveda it solo collegamento DTE-DCE,
l'interfaccia seriale viene usata anche per collegamenti diretti DTE-DTE. n cava di
collegarnento deve aliora avere il comportamento di un modem ideale sempre pron-
to a trasmettere; i cavi che verificano questa condizione sono detti null-modem. Un
esempio a 3 fili e'riportato a sinistra in Figura E.9. Si pub avere un controllo della
comunicazione a-patto di aumentare i fiJi nel cavo Dull-modem. SuI lato destro di
FlguraE.9 emostrato un esempio di (cavo di) collegamento con Ie Iinee DTR/DSR
usate in funzione di hand-shaking.
Figura E.6 Tipico collegamento RS232 per comunicazione asincrona. VUART (Universa.l
Asynchronous Receiver 7ra.mmitter) ei1 dispositivo che serializza I'informazione e"la teas-
mette in modo asincrono. Lo standard RS232 stabilisce che nel punta (2) Ie tensioni sono
12V, melltre te tensioni nel punto (1) sono determinate dalla logica usata (tea 0 e 5 Volt
nel caso di TTL). Cio dchiede I'interposizione di porte can funzione di ada.ttamento. Can 1a
logica TTL sono molto cliffusi i componenti SN75188 e SN75189 (colltenenti rispettivamente
4 driver e 4 receiver). Sono anche disponibili dispositivi UART che producono direttamente
il livello 12V.
Tabella E.l Corrispondenza tra linee e piedini suI connettore RS232C a 25 piedini. Come
si vede, anche un connettore a 9 piedini ein grade di accogliere Ie linee di interesse.
696
E.3.3 Esempi di collegamenti RS232C
I

1
L
.
r
-
1.
I-
\
I -
1-
\
I
)
1
697
1 SCH
7 ONO
2 T.n
3 R.D
RTS
S CT'
20 orR
6 OSR
8 CDC
22 RI
STAZ.8
, ,
bits di stop
"
, " ,
SGH 1 I
CN07
T.O 2
R""
RTS<
CTS 5
OrR 20
OSR6
COC8
RI 2:1:
CCNlneltOrl/
femmlna
Comunicazione tra Calcolatori
,e<
eND
T,O
R,'
RTS
CTS
,OOTR
0'"
8 CDC
2R1
STAZ.A
bit di start

'- ,
"'-conMltari/
femmina
"/\XXXXXXX\

r--
------------

,
7
,
3

C

,
:3

I'
6
1
8
I'
SCH 1
CN07
T.O 2
R.D J
RTS 4
CTS 5
OTR 2'
OSR6
coca
RI 2
Descriviarno ora brevemente due standard di collegamento seriale che trovano largo
impiego in ambiente industriale.
RS422jVll. Ogni circuito edi tipo bilanciato. Come supporto fisico
eprevisto Puso del cloppino intrecciato (Figura E.10).
Loop di cerrente a BOrnA (direttiva CCITT V31). Lo schema ein Figura E.n. AJ
passaggio diuna corrente di 20mA eassociate 1'110gico (Mark)) mentre 100 eassociato
all'interruzione del passaggio di corrente. n loop di corrente estato standardizzato
RS232 RS232
--,\ 1,..---
IOTE ++-10CE SM10TE S\
E.3A Altri standard seriali
Figura E.9 A, sinistra il collegamento null-modem a 3 fili, a destra il collegamento null-
modem a 5 fili. Nel caso dei 3 fill Ie due linee dati si attestano su un connettore at piedino
2 (3) e sull'altro al piedino 3 (2). n controlto della comunicazio"ne cleve avvenire attraverso
10 scambio dei dati. Una tecnica consiste nel realizzate un protocollo di tipo hand-jhaking
attraverso ta trasmissione/ricezione dei caratteri XON e XOFF. Nel case dei 5 fili Ie linee
DTR e DSR possono essere usate per gestiie un protocollo tra i PTE collegati.
Figura E.8 Collegamento tra due stazioni su linea comoltltata.
Figura E.7 Formato di un carattere trasmesso in modo asincrono. 11 bit di start e i bit
di stop hanna necessariamente polarita. opposte. Si conviene che a riposo 13 linea sia a
livello basso e quindi il bit di start (per poter segnalare che io.izia 13 di un
carattere) cleve per rona di case essere' a liveUo alto. Ne consegue che per i hit'di start/stop
la convenzione eopposta a quella relativa ai bit dei dati, infatti 10 stato attivo (ll bit d.i start)
e a +12V, come se Fosse logica positiva. In altre parole, c'e I'incongruenza eli considerate i
bit dati in logica negativa e i bit di start stop in 'L'incongruenza si risolve
indicando le !inee dati della standard RS232C come TxD e RxD.
"
..
'0: ..
.
.'. ,
( ..
, .,
.,
.".
-
,
, .
j 1,
, .
1',,J,
.
, -
,
,

i'
i
,

..
.' ,
11
, ",

-'.I.
....
..
"
1'.
I . '.,

,
,
..
" .
/,':.1
':'
'.
".
" .,
,
verso il
DCE
(2)
drivers/

( 1)
102 AB GND 7
103 BA
.
TxD 2

B
m
3
1 5
L;,
4

-g-

5
1 7 6
108/2
L;D
UTR 20
109 CF DCD 8
I V.24 [RS232 [}bbreviaz. I pin I
,
,"0
ToO

T,O
J-
R.O
R.O R.O
UART "
RTS
m
"-
RTS
"
CTS
m

CTS
"
1
1M'
"T
Appendice E
In Figura E.8 viene schernatizzato if collegamento tra due sistemi attraverso linea
telefonica.
Quello di FlguraE.8 eII solo collegamento previsto dallo standard V24. Tutta-
via) come gia. accennato, benche 10 standard preveda it solo collegamento DTE-DCE,
l'interfaccia seriale viene usata anche per collegamenti diretti DTE-DTE. n cava di
collegarnento deve aliora avere il comportamento di un modem ideale sempre pron-
to a trasmettere; i cavi che verificano questa condizione sono detti null-modem. Un
esempio a 3 fili e'riportato a sinistra in Figura E.9. Si pub avere un controllo della
comunicazione a-patto di aumentare i fiJi nel cavo Dull-modem. SuI lato destro di
FlguraE.9 emostrato un esempio di (cavo di) collegamento con Ie Iinee DTR/DSR
usate in funzione di hand-shaking.
Figura E.6 Tipico collegamento RS232 per comunicazione asincrona. VUART (Universa.l
Asynchronous Receiver 7ra.mmitter) ei1 dispositivo che serializza I'informazione e"la teas-
mette in modo asincrono. Lo standard RS232 stabilisce che nel punta (2) Ie tensioni sono
12V, melltre te tensioni nel punto (1) sono determinate dalla logica usata (tea 0 e 5 Volt
nel caso di TTL). Cio dchiede I'interposizione di porte can funzione di ada.ttamento. Can 1a
logica TTL sono molto cliffusi i componenti SN75188 e SN75189 (colltenenti rispettivamente
4 driver e 4 receiver). Sono anche disponibili dispositivi UART che producono direttamente
il livello 12V.
Tabella E.l Corrispondenza tra linee e piedini suI connettore RS232C a 25 piedini. Come
si vede, anche un connettore a 9 piedini ein grade di accogliere Ie linee di interesse.
696
- ]
interpretato, e necessaria che il ricevente abbia la capaeita di individuare l'inizio e
1a fine delle entita. logiche che compongono il messaggio stesso. Questa aspetto della.
comunicazione prende il nome di sincronizzazione. 8i parla di:
\
698 Appendice E
+5V
J
> --; OS X
X
"'f.. I' 25 ohm
+5V
{
\
> "
,.
,.
,
,.
,,'
"
"
Comunicazione tra Calcolatori 699
I "!!l!" "'
'[ Figura RIO Collega.mento con linea seriale secondo 10 standard RS422. Le migliori carat.
- teristiche elett.riche rispetto all'RS232 consentono velocita. e distanze superiori: 100 Kbps
per distanze < 1200m e 10 Mbps per distanze' < 15m. Questa standard ha una variante: 10
- \ standard RS485/V12; esso prevede driver con uscita a 3 stati e quindi consente connessioni
multipunto. ,
-
,
, ,
..
a) sincronismo di bit;
1
"
"
I,

b) di carattere (byte);
I
cj sincronismo di pacchetto (frame).

_lnella direttiva CCITT V31 e nelle norme DIN 66258/66348.
viene raccomandato l'uso di optoisolatori (FiguraE.ll).
I
-
Nel loop di corrente

"J"J
,

,
:.' ;
I precedenti sincronismi sono a dellivello di collegament0
1
mentre Pindividua-
zione delPinizio e della fine di un bloceo informativo completo riguarda livelli superiori
dello stack ISO/OSlo TCP/IP.
Ci sonG due modalita. di trasmissione:
-' Livello di collegamento
-
1
5, 6, 7, 8
nessuno, 1
1,1.5,2
1200, 2400, 4800, 9600 e 19200 bps.
bit di start
bit destinati ai dati
bit per it contrello di errore (bit di parita.)
bit di stop
velecita. usuali di trasrnissione
La trasmissione asincrona trova naturale impiego quando i caratteri da trasmettere
1
considerati come unita. informative, sono generati a intervalli casuali. In questa caso
nell'intervallo tra un carattere e il successivo 130 linea puo rimanere inattiva per un
tempo indeterminato: edunque necessaria che il ricevente si risincronizzi alPistante
iniziale del carattere ogoi volta che ne riceve un0
6
. A tal fin,e, ogni carattere viene
trasmesso incapsulandolo tra un bit iniziale (bit di start) e UDO 0 pili bit finaJi (bit di
stop)) come gia illustrato in FiguraE.7 e in ripetuto in FiguraE.12.
I valori pili comuni per i vari elementi costituenti la trasmissione di un carattere
in modo asincrono sono:
a) 130 trasmissione asincrona;
6ln realta. 130 trasmissione viene usata anche quando i caratteri sone tutti disponibili sin
dall'inizio della. trasmissione. Data 130 sua semplicita e10 standard per le trasmissioni "lente".
b) la trasmissione sincrona.
La differenza fondamentale tra Ie due modalita. eche
1
mentre can la prima i clock
dei terminali comunicanti non sono sincronizzati, con la seconda 10 sono. Nella tras-
missione asincrona, la sincronizzazione di bit e di carattere eimplicita nella modalita
di trasmissione stessa, mentre nel caso della trasmissione sincrona presenta qualche
complessita..
EA,1 Trasmissione asincrona
,
f;'
c-

I ..
.'.
':' '
..
'.
,

".,

,J:
1",-
.
I':'
,

J:
,
f :
, .
"r'
;'"
"
,", .
,
,
'
'i -
I
I- -
1< l

,,' ,.
.,
,.
h
,.
(
'\Mo,
.:s!'\Mo-{
TK/R:
r_/R:,
-
doli --.
dlgitoli
I
120rnA
"""'l
riv.lotar.

digitoli
cil"euito
rivelotor.
''''''' I
\
b
Ssebbene la comunicazione possa essefe su linee paraUele, nel seguito considereremo 8019 la co-
J lunicazione seriaJe. Di faLto 130 comunicazione paraJlela non ha molto sense nel caso delle reti di
cola-tori, mentre trova naturale applicazioD.e nel caso dei sistemi strettamente connessi, per esempio
- sistemi a multiprocessore.
_.
-
-' IFigura E.ll Collegarilento in Loop di corrente Con linea a. 20mA. Questa soluzione rende
minima il rumore captato da.lla linea; si riescono COSl a raggiungere distanze di "" 500m. La
- velocita di trasmissione risulta. mvece limitata. da.lla. velocita. degli interruttori e del circuiti
rivelatori del passaggio di corrente. E raccomandato l'impiego di optoisolatori, come nella
destra.
__ I
-
-
-
AI Hvello di collegamento spetta it compite di una prima organizzazione dell1infor-
-., )nazione trasmessa. L'informazione viene 'trasmessa in forma di messaggi
1
ovver6
\equenze eli caratteri 0 eli bits. Affinche il messaggio trasmesso venga corretta.rnente
=[
11
-
1
,-
_.
,
-
, '; :',
J
- ]
interpretato, e necessaria che il ricevente abbia la capaeita di individuare l'inizio e
1a fine delle entita. logiche che compongono il messaggio stesso. Questa aspetto della.
comunicazione prende il nome di sincronizzazione. 8i parla di:
\
698 Appendice E
+5V
J
> --; OS X
X
"'f.. I' 25 ohm
+5V
{
\
> "
,.
,.
,
,.
,,'
"
"
Comunicazione tra Calcolatori 699
I "!!l!" "'
'[ Figura RIO Collega.mento con linea seriale secondo 10 standard RS422. Le migliori carat.
- teristiche elett.riche rispetto all'RS232 consentono velocita. e distanze superiori: 100 Kbps
per distanze < 1200m e 10 Mbps per distanze' < 15m. Questa standard ha una variante: 10
- \ standard RS485/V12; esso prevede driver con uscita a 3 stati e quindi consente connessioni
multipunto. ,
-
,
, ,
..
a) sincronismo di bit;
1
"
"
I,

b) di carattere (byte);
I
cj sincronismo di pacchetto (frame).

_lnella direttiva CCITT V31 e nelle norme DIN 66258/66348.
viene raccomandato l'uso di optoisolatori (FiguraE.ll).
I
-
Nel loop di corrente

"J"J
,

,
:.' ;
I precedenti sincronismi sono a dellivello di collegament0
1
mentre Pindividua-
zione delPinizio e della fine di un bloceo informativo completo riguarda livelli superiori
dello stack ISO/OSlo TCP/IP.
Ci sonG due modalita. di trasmissione:
-' Livello di collegamento
-
1
5, 6, 7, 8
nessuno, 1
1,1.5,2
1200, 2400, 4800, 9600 e 19200 bps.
bit di start
bit destinati ai dati
bit per it contrello di errore (bit di parita.)
bit di stop
velecita. usuali di trasrnissione
La trasmissione asincrona trova naturale impiego quando i caratteri da trasmettere
1
considerati come unita. informative, sono generati a intervalli casuali. In questa caso
nell'intervallo tra un carattere e il successivo 130 linea puo rimanere inattiva per un
tempo indeterminato: edunque necessaria che il ricevente si risincronizzi alPistante
iniziale del carattere ogoi volta che ne riceve un0
6
. A tal fin,e, ogni carattere viene
trasmesso incapsulandolo tra un bit iniziale (bit di start) e UDO 0 pili bit finaJi (bit di
stop)) come gia illustrato in FiguraE.7 e in ripetuto in FiguraE.12.
I valori pili comuni per i vari elementi costituenti la trasmissione di un carattere
in modo asincrono sono:
a) 130 trasmissione asincrona;
6ln realta. 130 trasmissione viene usata anche quando i caratteri sone tutti disponibili sin
dall'inizio della. trasmissione. Data 130 sua semplicita e10 standard per le trasmissioni "lente".
b) la trasmissione sincrona.
La differenza fondamentale tra Ie due modalita. eche
1
mentre can la prima i clock
dei terminali comunicanti non sono sincronizzati, con la seconda 10 sono. Nella tras-
missione asincrona, la sincronizzazione di bit e di carattere eimplicita nella modalita
di trasmissione stessa, mentre nel caso della trasmissione sincrona presenta qualche
complessita..
EA,1 Trasmissione asincrona
,
f;'
c-

I ..
.'.
':' '
..
'.
,

".,

,J:
1",-
.
I':'
,

J:
,
f :
, .
"r'
;'"
"
,", .
,
,
'
'i -
I
I- -
1< l

,,' ,.
.,
,.
h
,.
(
'\Mo,
.:s!'\Mo-{
TK/R:
r_/R:,
-
doli --.
dlgitoli
I
120rnA
"""'l
riv.lotar.

digitoli
cil"euito
rivelotor.
''''''' I
\
b
Ssebbene la comunicazione possa essefe su linee paraUele, nel seguito considereremo 8019 la co-
J lunicazione seriaJe. Di faLto 130 comunicazione paraJlela non ha molto sense nel caso delle reti di
cola-tori, mentre trova naturale applicazioD.e nel caso dei sistemi strettamente connessi, per esempio
- sistemi a multiprocessore.
_.
-
-' IFigura E.ll Collegarilento in Loop di corrente Con linea a. 20mA. Questa soluzione rende
minima il rumore captato da.lla linea; si riescono COSl a raggiungere distanze di "" 500m. La
- velocita di trasmissione risulta. mvece limitata. da.lla. velocita. degli interruttori e del circuiti
rivelatori del passaggio di corrente. E raccomandato l'impiego di optoisolatori, come nella
destra.
__ I
-
-
-
AI Hvello di collegamento spetta it compite di una prima organizzazione dell1infor-
-., )nazione trasmessa. L'informazione viene 'trasmessa in forma di messaggi
1
ovver6
\equenze eli caratteri 0 eli bits. Affinche il messaggio trasmesso venga corretta.rnente
=[
11
-
1
,-
_.
,
-
, '; :',
J
E.4.2 Trasmissione sincrona
a) orientata al carattere, se i dati sonG logicamentedivisi in caratteri;
-
J-

1-

-
)-
-
)-
1
1-
\-
1-
I-
I-
I-
1- -
1--
1
0 1 1 000
1 0 1

-
..JJ.
.L LL_ '-
n
sequenzo dei
bit ricevuti
Figura E.13 Esempio di codifica RZ. Si noti che can questa codifica sono necessari tre
diversi livelli eli tensione per la trasmissione del segnale sulla linea.
,
B. Codifica Manchester. E una codifica del tipo NRZ (Non Return to Zero) in
quanta 1a forma d'onda risultante non ritorna ailo stato zero durante l'intervallo
di un bit come avveniva nell'esempio preeedente. Questa teenica eillustrata in
FiguraE.14. La codifica Manchester eadottata dallo standard IEEE 802.3 per
Ie reti di tipo Ethernet .
clock estrotto
in ricezione
sequer"l20 di bit
do trosmeltere
Sincronizzazione di clock (0 di bit) Un ovvio metodo consiste nel prevedere
una specifica linea di clock tra i dispositivi eomWlicanti che fornisca un segnale di
temporizzazione unieo per 1a trasmissione e la ricezione dei bit. Questa soluzione e
perc poco diffusa perche richiede una linea aggiuntiva. Avenda a disposizione una sola
linea per i datil oecorre codifieare it clock nella forma d'onda del segnale informativo
trasmesso ed estrarlo in ricezione, A titolo di esernpio, qui di seguito vengoDO mostrate
due note modalita. di codifica.
A. Codifica RZ (Return to Zero). Ogni bit da trasmettere viene codificato sotto
forma di impulso come illustrato in Figura E.13.
n dispositivo che serializza.i dati in formato sincrono prende il nome di USRT
(Universal Receiver and Transmitter)7. Analizziamo ora i tre livelli di
. . .
smcronlzzaZlone.
forma d'ondo
trosmesso
.
Comunicazione tra Calcolatori 101
1In commercia si trovano anche dispositivi USART (Univer3al Synchn:motls/A3!.mcrhonotu
Receiver and Transmitter) capaci di funzionare secondo Ie due modalit.3..
Sincronizzazione di byte e di frame Bisogna distinguere tra trasmissione ()rien
tata al carattere e trasmissione orientata al bit.
Trasmissione sincrona orientata al carattere n ricevitore deve essere in grado di
sincronizzarsi sia rispetto ai caratteri che ai frame trasmesei. A tal fine vengono
usati alcuni caratteri speciali di sincronizzazione. In genere si usa una struttura del
frame come in FiguraE.15. dove i caratteri di sincronizzazione (SYN), the pOSsono
essere pill di due, sono seguiti dal frame, il quale eincapsulato tra un carattere di
,
."'"
,

,i
"
,
:
,!J
j,i:

,
,
,. -
l
I
e
ri
,
.,

',<
"

, -


!,


r
1:\
..

j
"
.'
wt
.-


t
f.
", . Vol
'&"
J
r
'

::W.,

.,'
m
<\
,

't ,.

,
.
, ,
bits di stop
'"
bit di start
.::::;
b) orientata al bit, se i dati si presentano eorne una sequenza continua di bit.
II dispositivo ricevente, oltre a individuate l'inizio e la. durata di ogni bit (sinero-
nismo di bit) deve essere in grado di sincronizzarsi sui caratteri nel primo case" e sui
frame nel secondo.
Figura E.12 Formato di un carattere trasmesso in modo asincrono. Il bit di start e i bit di
stop hanno polarita opposte. I bit eli stop hanna la stessa polarita della linea inattiva. Cia
garantisce la presenza. dt una transizione di stato della linea all'inizio di ciascun ca.rattere,
cosi da permettere al ricevitore di inelividuare 1'ioizio del carattere stesso (nel caso di linea
RS232C, 10 standard prevede che a riposo 10 stato della linea sia. a. -12V e che il carattere si
manifesti can it bit di start a +12V). II ricevitore campiona i segnali ricevuti approssimati-
vamente a.l centro di ogni bit, fa.cendo uso di un clock con frequenza multipla. (tipicamente
x 16) della frequenza. can cui arrivano i segnali. Si pua avere anche la presenza. di un bit
aggiuntivo per il controllo di errore, posizionato in genere in coda. ai bit informativi e prima
dei bit di stop.
Risulta evidente che nella trasmissione asincrona uQ'alta percentuale di bit viene
usata per it controllo della trasmissione e quindi non edisponibile per i bit informativi;
di conseguenza risulta ridotta 1& velocit.3. informativa, ovvero l'eff'ettiva velocita. di
trasmissione. Per esempio con dati di 8 bit, 1 bit di start, 2 bit di stop e 1 bit di
parita su una linea a 1200bps, la velocita. informativa risulta
8
1200 x 12 = 800 bps
II modo di trasmissione sinerono viene impiegato quando i dati cia trasmettere hanna
continuita, in modo cia impegnare la linea di comunicazione con continuita.. Diversa-
mente dalla trasmissione asincrona, che precede sempre per caratteri, la trasmissione
sincrona puo essere:
_ I \ X X. X X X X X \ .
" ..
700 Appendice E
con una riduzione di 1/3 rispetto alia velocita di trasmissione.
I dispositivi che raccolgono i dati in uscita dane linee di bus del calcolatore e
Ii serializzano in formato asincrono prendono il nome di UART, ovvero Universal
Asynchronous Receiver and 1hm3mitter, dove it termine universale sta a significare
. che generalmente questi dispositivi SqilO programmabili e permettono di impostare i
parametri della trasmissione (bit di stop, parita.,ecc.).
E.4.2 Trasmissione sincrona
a) orientata al carattere, se i dati sonG logicamentedivisi in caratteri;
-
J-

1-

-
)-
-
)-
1
1-
\-
1-
I-
I-
I-
1- -
1--
1
0 1 1 000
1 0 1

-
..JJ.
.L LL_ '-
n
sequenzo dei
bit ricevuti
Figura E.13 Esempio di codifica RZ. Si noti che can questa codifica sono necessari tre
diversi livelli eli tensione per la trasmissione del segnale sulla linea.
,
B. Codifica Manchester. E una codifica del tipo NRZ (Non Return to Zero) in
quanta 1a forma d'onda risultante non ritorna ailo stato zero durante l'intervallo
di un bit come avveniva nell'esempio preeedente. Questa teenica eillustrata in
FiguraE.14. La codifica Manchester eadottata dallo standard IEEE 802.3 per
Ie reti di tipo Ethernet .
clock estrotto
in ricezione
sequer"l20 di bit
do trosmeltere
Sincronizzazione di clock (0 di bit) Un ovvio metodo consiste nel prevedere
una specifica linea di clock tra i dispositivi eomWlicanti che fornisca un segnale di
temporizzazione unieo per 1a trasmissione e la ricezione dei bit. Questa soluzione e
perc poco diffusa perche richiede una linea aggiuntiva. Avenda a disposizione una sola
linea per i datil oecorre codifieare it clock nella forma d'onda del segnale informativo
trasmesso ed estrarlo in ricezione, A titolo di esernpio, qui di seguito vengoDO mostrate
due note modalita. di codifica.
A. Codifica RZ (Return to Zero). Ogni bit da trasmettere viene codificato sotto
forma di impulso come illustrato in Figura E.13.
n dispositivo che serializza.i dati in formato sincrono prende il nome di USRT
(Universal Receiver and Transmitter)7. Analizziamo ora i tre livelli di
. . .
smcronlzzaZlone.
forma d'ondo
trosmesso
.
Comunicazione tra Calcolatori 101
1In commercia si trovano anche dispositivi USART (Univer3al Synchn:motls/A3!.mcrhonotu
Receiver and Transmitter) capaci di funzionare secondo Ie due modalit.3..
Sincronizzazione di byte e di frame Bisogna distinguere tra trasmissione ()rien
tata al carattere e trasmissione orientata al bit.
Trasmissione sincrona orientata al carattere n ricevitore deve essere in grado di
sincronizzarsi sia rispetto ai caratteri che ai frame trasmesei. A tal fine vengono
usati alcuni caratteri speciali di sincronizzazione. In genere si usa una struttura del
frame come in FiguraE.15. dove i caratteri di sincronizzazione (SYN), the pOSsono
essere pill di due, sono seguiti dal frame, il quale eincapsulato tra un carattere di
,
."'"
,

,i
"
,
:
,!J
j,i:

,
,
,. -
l
I
e
ri
,
.,

',<
"

, -


!,


r
1:\
..

j
"
.'
wt
.-


t
f.
", . Vol
'&"
J
r
'

::W.,

.,'
m
<\
,

't ,.

,
.
, ,
bits di stop
'"
bit di start
.::::;
b) orientata al bit, se i dati si presentano eorne una sequenza continua di bit.
II dispositivo ricevente, oltre a individuate l'inizio e la. durata di ogni bit (sinero-
nismo di bit) deve essere in grado di sincronizzarsi sui caratteri nel primo case" e sui
frame nel secondo.
Figura E.12 Formato di un carattere trasmesso in modo asincrono. Il bit di start e i bit di
stop hanno polarita opposte. I bit eli stop hanna la stessa polarita della linea inattiva. Cia
garantisce la presenza. dt una transizione di stato della linea all'inizio di ciascun ca.rattere,
cosi da permettere al ricevitore di inelividuare 1'ioizio del carattere stesso (nel caso di linea
RS232C, 10 standard prevede che a riposo 10 stato della linea sia. a. -12V e che il carattere si
manifesti can it bit di start a +12V). II ricevitore campiona i segnali ricevuti approssimati-
vamente a.l centro di ogni bit, fa.cendo uso di un clock con frequenza multipla. (tipicamente
x 16) della frequenza. can cui arrivano i segnali. Si pua avere anche la presenza. di un bit
aggiuntivo per il controllo di errore, posizionato in genere in coda. ai bit informativi e prima
dei bit di stop.
Risulta evidente che nella trasmissione asincrona uQ'alta percentuale di bit viene
usata per it controllo della trasmissione e quindi non edisponibile per i bit informativi;
di conseguenza risulta ridotta 1& velocit.3. informativa, ovvero l'eff'ettiva velocita. di
trasmissione. Per esempio con dati di 8 bit, 1 bit di start, 2 bit di stop e 1 bit di
parita su una linea a 1200bps, la velocita. informativa risulta
8
1200 x 12 = 800 bps
II modo di trasmissione sinerono viene impiegato quando i dati cia trasmettere hanna
continuita, in modo cia impegnare la linea di comunicazione con continuita.. Diversa-
mente dalla trasmissione asincrona, che precede sempre per caratteri, la trasmissione
sincrona puo essere:
_ I \ X X. X X X X X \ .
" ..
700 Appendice E
con una riduzione di 1/3 rispetto alia velocita di trasmissione.
I dispositivi che raccolgono i dati in uscita dane linee di bus del calcolatore e
Ii serializzano in formato asincrono prendono il nome di UART, ovvero Universal
Asynchronous Receiver and 1hm3mitter, dove it termine universale sta a significare
. che generalmente questi dispositivi SqilO programmabili e permettono di impostare i
parametri della trasmissione (bit di stop, parita.,ecc.).
..- ..
-
702 Appendice E
..
Comunicazione tra Calcolatori
703
_I SYN I SYN I OLE I STX I un I OLE 1OX 1_
auspicabile invece la caratteristica di trasparenza ai dati, doe la capacita di un qual-
siasi protocollo di funzionare indipeodentemente cia! contenuto dei dati. Per ottenere
dunque una sincronizzazione di frame trasparente ai dati enecessaria l'uso di un ul-
teriore carattere speciale DLE (Data Link EscapeL inserito come in Fi'gura E.17. 8i
puo notare ehe con questa struttura non si e aneora raggiunta la trasparenza ai dati,
perche alPinterno del frame eaneora possibile 1a presenza di una sequenza DLE-ETX.
Per evitare cia puo essere usata la tecnica del byte. stuffing che consiste nell'inserire
in trasmissione un carattere DLE fittizio di seguito a ogni carattere DLE presente
nel contenuto del frame; in questo modo Ie sequenze DLE-STX e DLE-ETX possono
essere presenti solo all'inizio 0 alia fine del frame e non al suo interno. In ricezione
poi a ogni sequenza DLE-DLE viene rimosso un carattere DLE.
].
1
I
I
,.
I
-
1 0 1 1 o 0 011 0 1
_L
"--
forma d'ondo
trosmesso
sequenzo di bit
do lrosmettere
clock estrotto
. . .
,n f1Ce210ne
sequen20 dei
bit rieevuti
Figura E.14 Esempio di codifica Manchester. A sinistra viene mostrata la corrispondenza
tra informativi e forme d'onda. 5i pub notare the non si ha Pestrazione di un impulso
di clock per ogni transizione nella forma. d'onda in rieezione; a. tal fine il ricevitore deve
conoscere approssimativamente l'istante in cui avviene la transizione che segna.la. l'impulso
di clock.
..- \
\
,....

i
L. I
,....
.- (
..... ,
.... I
_I
! !
._, , .inizio (STX) e un carattere di fine (ETX). Supponendo che la sequenza del carattere
I SYN sia 00010110, il ricevitore esegue inizialmente una scansione bit per bit della
r I sequenza finche non individua il carattere SYN; in tal caso, i1 ricevitore ha effettuato
la sincronizzazione di carattere (FiguraE.16).
i.
I
!..
contenulo del frome
Figura E.17 Uso del carattere DLE.
n ricevitore poi individua il carattere di inizio frame STX e interpreta tutti i
caratteri successivi come dati, se questi sana diversi dal carattere ETX che segnala la
J
fine del frame. Con questa modo di procedere si deve escludere la presenza tra i dati
di un carattere costituito dalla stessa sequenza di bit del carattere ETX, altrimenti
si avrebbe un'errata interpretazione della fine del frame da parte del ricevitore. E
l
_l
... \ F;g=a E.16
Uso del carat.tere SYN (00010110) per Ia. sincronizzaziolle di carattere.
,
flag di apertura 0 di chiusura;
dati (ultimo 0 da rimuovere in ricezione).
01111110
0111110
contenuto del frome
Figura E.18 Trasmissiolle sincrona a bit: sincronizzazione sui frame attraverso un flag di
apertura. e uno di chiusura. II ricevitore ein grada di riconoscere l'inizio e la fine del frame
quando individua una sequenza di sei cifre 1 consecutive.
Trasmissione sincrona orientata al bit In questa caso non e necessaria la sincro-
nizzazione di carattere, in quanta Pinformazione viene trasmessa come sequenza di
bit non raggruppati a caratteri. La sincronizzazione di frame puo essere ottenuta
comprendendo il contenuto del frame tra due sequenze uguali, come nello schema di
Figura E.1S. Se accade che una sequenza di bit nel messaggio euguale alta sequenza
(di 1) di apertura, si ricorre alIa tecnica. del bit stuffing, consistente nell'inserire una
cifra 0 fittizia di seguito a ogni sequenza di cinque cifre 1 consecutive presenti oel
contenuto informativo del frame, rendendo cosi inequivocabili le sequenze:
Gli esempi sopIa riportati la termiQ.ologia e la struttura del protocollo
noto come Basic Mode., la cui versionestandardizzata (BSC) viene descritta in seguito.
i
i'
I
I
I
I
i
I
I
,
..
,
: ,'.
I
"
.
I
.I
.
I
I

i.e-
,
I
byte
istante in cui
il ricevitore roggiunge
10 sincronizzazione di
, ,

SYN SYN
10 0 0 1 0 1 1 0 000 1 0 1 1 oj

cui il ricevitore
roggiunge 10
. . .
SincronlZ20Zlone
di bit
I SYN I SYN I STX I un I ETX 1'-.-
! j
contenuto del frame
Figura E.15 5truttura del frame per 1a. trasmissione smerona orientata al carattere
_.
_I
...

J \
- I
.. I
_.
..- ..
-
702 Appendice E
..
Comunicazione tra Calcolatori
703
_I SYN I SYN I OLE I STX I un I OLE 1OX 1_
auspicabile invece la caratteristica di trasparenza ai dati, doe la capacita di un qual-
siasi protocollo di funzionare indipeodentemente cia! contenuto dei dati. Per ottenere
dunque una sincronizzazione di frame trasparente ai dati enecessaria l'uso di un ul-
teriore carattere speciale DLE (Data Link EscapeL inserito come in Fi'gura E.17. 8i
puo notare ehe con questa struttura non si e aneora raggiunta la trasparenza ai dati,
perche alPinterno del frame eaneora possibile 1a presenza di una sequenza DLE-ETX.
Per evitare cia puo essere usata la tecnica del byte. stuffing che consiste nell'inserire
in trasmissione un carattere DLE fittizio di seguito a ogni carattere DLE presente
nel contenuto del frame; in questo modo Ie sequenze DLE-STX e DLE-ETX possono
essere presenti solo all'inizio 0 alia fine del frame e non al suo interno. In ricezione
poi a ogni sequenza DLE-DLE viene rimosso un carattere DLE.
].
1
I
I
,.
I
-
1 0 1 1 o 0 011 0 1
_L
"--
forma d'ondo
trosmesso
sequenzo di bit
do lrosmettere
clock estrotto
. . .
,n f1Ce210ne
sequen20 dei
bit rieevuti
Figura E.14 Esempio di codifica Manchester. A sinistra viene mostrata la corrispondenza
tra informativi e forme d'onda. 5i pub notare the non si ha Pestrazione di un impulso
di clock per ogni transizione nella forma. d'onda in rieezione; a. tal fine il ricevitore deve
conoscere approssimativamente l'istante in cui avviene la transizione che segna.la. l'impulso
di clock.
..- \
\
,....

i
L. I
,....
.- (
..... ,
.... I
_I
! !
._, , .inizio (STX) e un carattere di fine (ETX). Supponendo che la sequenza del carattere
I SYN sia 00010110, il ricevitore esegue inizialmente una scansione bit per bit della
r I sequenza finche non individua il carattere SYN; in tal caso, i1 ricevitore ha effettuato
la sincronizzazione di carattere (FiguraE.16).
i.
I
!..
contenulo del frome
Figura E.17 Uso del carattere DLE.
n ricevitore poi individua il carattere di inizio frame STX e interpreta tutti i
caratteri successivi come dati, se questi sana diversi dal carattere ETX che segnala la
J
fine del frame. Con questa modo di procedere si deve escludere la presenza tra i dati
di un carattere costituito dalla stessa sequenza di bit del carattere ETX, altrimenti
si avrebbe un'errata interpretazione della fine del frame da parte del ricevitore. E
l
_l
... \ F;g=a E.16
Uso del carat.tere SYN (00010110) per Ia. sincronizzaziolle di carattere.
,
flag di apertura 0 di chiusura;
dati (ultimo 0 da rimuovere in ricezione).
01111110
0111110
contenuto del frome
Figura E.18 Trasmissiolle sincrona a bit: sincronizzazione sui frame attraverso un flag di
apertura. e uno di chiusura. II ricevitore ein grada di riconoscere l'inizio e la fine del frame
quando individua una sequenza di sei cifre 1 consecutive.
Trasmissione sincrona orientata al bit In questa caso non e necessaria la sincro-
nizzazione di carattere, in quanta Pinformazione viene trasmessa come sequenza di
bit non raggruppati a caratteri. La sincronizzazione di frame puo essere ottenuta
comprendendo il contenuto del frame tra due sequenze uguali, come nello schema di
Figura E.1S. Se accade che una sequenza di bit nel messaggio euguale alta sequenza
(di 1) di apertura, si ricorre alIa tecnica. del bit stuffing, consistente nell'inserire una
cifra 0 fittizia di seguito a ogni sequenza di cinque cifre 1 consecutive presenti oel
contenuto informativo del frame, rendendo cosi inequivocabili le sequenze:
Gli esempi sopIa riportati la termiQ.ologia e la struttura del protocollo
noto come Basic Mode., la cui versionestandardizzata (BSC) viene descritta in seguito.
i
i'
I
I
I
I
i
I
I
,
..
,
: ,'.
I
"
.
I
.I
.
I
I

i.e-
,
I
byte
istante in cui
il ricevitore roggiunge
10 sincronizzazione di
, ,

SYN SYN
10 0 0 1 0 1 1 0 000 1 0 1 1 oj

cui il ricevitore
roggiunge 10
. . .
SincronlZ20Zlone
di bit
I SYN I SYN I STX I un I ETX 1'-.-
! j
contenuto del frame
Figura E.15 5truttura del frame per 1a. trasmissione smerona orientata al carattere
_.
_I
...

J \
- I
.. I
_.
a) i metodi per un affidabile rilevamento degli errori;
b) gli schemi d.i ri trasmissione dell'informazione.
8In linea di principio e possibile anche l'appr9cdo Forward erTor control, ovvero ioserire tanta
informazione ridondante nel messaggio trasmesso, in modo da pater rHenre errori in ricezione e
ricostruire i1 contenuto trasmesso. Ovviamente do richiede una elevata quantita. di informazione
aggiuntiva, riducendo l'utilizZQ della capadU. del canale.
9L'operazione per i1 calcolo deUa parita longitudinale 0 trasversale e comunque una somma modulo
2 (XOR).
Al hvella Collegamento eanche demandato il compito di gestire gli errori in
zione. Al fine di poter rilevare gli errori ed eventualmente correggerli, il trasmittente
cleve inserire informazioni ridondanti nei messaggi. L'approccio normalrnente seguito
consiste nell'inserire solo quanta serve al rilevamento degli errori e nel prevedere 1a
ritrasmissione delPinformazione in caso cii errore. Gli anglosassoni chiamano questa
tecnica Feedback error control
8
.
Si devono considerare due aspetti:
I
I
''''
_.
...
-

. -
j.
1
1- -
\.-
I...
I
I'
\.-
\--
\-
I,.
105
coroHere di poritO
longitudinole pori
,
Comunicazione tra Calcolatori
p, 8. B. B. 81 B, Bt B.
'I 0 0 0 0 0 0 0
,
, 0
0 \
,
0 1 0 0
1 \ 0 1 1 0 0 1
1 1
8
0
00
1 1
0 1 1 1 0 0 1 1
0 0 \ 0 0 \
,
0
0 1
0
0 1
8
'
1
1 0 0 1 1 0 0 0
1 0 0 0 1 1 0
0'
bit di porit,
trosversole
dispori
M(x)x
n
+ R(x) = G(x)Q(x)
T(x) = M(x)x
n
+ R(x)
ottenuta traslanda tutte Ie cifre di M di n posti verso Ie eme piu significative e
inserendo negli n bit mene significatiyi 180 sequenza R(x), eclivisibile per G(x).
Se dunque viene trasmessa la sequenza T(X), il ricevente pub determinare se ci
sono errod dividendo 180 sequenza ricevuta e verificando che il reato sia nullo. Ovvero
,
, ,
se la sequenza ricevuta T (x) non ha errori, allora 180 divisione T (x)/G(x) ha resto
,
nullo (n bit 0). Se il resto non e nullo la sequenza T (x) esicuramente affetta da
errori. Esempio di cal colo dei bit eRe.
Sia data la sequenza: M = (10111) esprimibile can il polinomio M(x) = x' +x' +x +1
e si assuma questa polinomio generatore G(x) = x
2
+1, corrispondente a 101. Allora
,
poiche M(x)x
n
= 1011100, per II calcolo di R basta dividere 1011100 per 101.. La
divisione da Q = 1001 e [R = 11. Si ha dunque:
T(x) =M(x)x
n
+ R(x) =1011100+ 11 =1011111
n ricevente divide la sequenza ricevuta per 10 stesso G. Se il resto non e0 si ein
presenza di errore.
Ovvero, la sequenza
M(x)x
n
= G(x)Q(x) + R(x)
,
dove Q(x) eil quoziente e R(x) il resto, esempre vera per definlzione. E facile
convincersi che, per come sana stati scelti dividendo e divisore, R(x) e d.i orcline
n - 1, corrispondendo a una sequenza di n bit. Poiche nelle operazioni modulo 2 180
somma coincide con 1a differenza, si puo scrivere:
M(x)x
n
corrispondente alIa sequenza ottenuta traslando tutte Ie cifre di M di n posti verso Ie
cifre piiJ significative. La relazione
Sia G(x) un polinomio (generatore), corrispondente a una sequenza di n + 1 bit,
con n < k, e si consideri il polinomio
Figura E.19 Parita. longitudinale e trasversale: i bit cerchiati definiscono una
zione di errore non individuata.
Ie
,.. c
.
..
..

"", >
,
,..
""
.'-'-
',.

I:
,
J.
[
f
..

'" -

..
I
'..
.."

,
.' ,
I
':i:/
,'''!

"
'c"
.'.-

I
",,'
'I:'
, ",:.
ii.
:.!.
,
l
i:
I
,
..
"..
", -'
;

I
"
'-;\.:
';:.1.'::-
;;t-
.,'..

.':
-

!:-,
,
1
. ,
,
I'
,

,
I
I
:
,

erron
Rilevamento degli errod
Controllo di parita Ad ogni carattere trasmesso viene associato un u1teriore bit chi-
amato bit di paritd. che assume un valore tale da rendere pari (even) 0 dispari (odd)
il numero totale di dfre 1 trasmesse. Per ogni carattere ricevuto viene poi effettuato
un conteggio delle dfre 1, il cui risultato viene confrontato con it tipo di parita. (even
o odd) precedentemente concordato. Questo metodo e targamente impiegato neUe
trasmissioni asincrone ed eaffidabile solo se generalmente si manifest80 un solo errore
per ogni carattere trasmesso.
Paritd. longitudinale Quando 180 trasmissione eorientata al frame si pub prevedere
anche un bit di parita. calcolato .su tutti i bit che occupano una stessa posizione
all 'inter no di ciascun carattere. Questi bit, detti di paritii longitudinale, sono trasmessi
riuniti in un carattere aHa fine di ciascun frame e, combinati con i bit di parita visti
in precedenza (bit di parita trasversale), consentono di rilevare un maggior numero eli
errori
9
. Anche in questa modo pero alcune configurazioni di errore possono sfuggire
al rilevamento, come nell'esempio di Figura E.19.
Codici a ridondanza ciclica (eRC) Questa codifica viene impiegat80 in trasmissioni
orientate a1 bit ed ein grado di rilevare anche errori temporalmente concentrati (errori
a. burst). Ess80 si basa su questi concetti:
a) interpretazione delle sequenza di bit come polinomii
b) esecuzione di operazioni in aritmetica in modulo 2 sui polinomi in modo che i1
ricevente possa identificare 180 presenza d.i errori nella sequenza ritevuta.
Sia M una sequenza di k bit informativi. Essa puo essere interpretata come un
polinomio di orcline k - 1.
Esempio: la sequenza M = (10111) (k = 5) eesprimibile con il polinomio M(x) -
+ x
2
+ X + 1.
E.4.3 Controllo degli
704 Appendice E
a) i metodi per un affidabile rilevamento degli errori;
b) gli schemi d.i ri trasmissione dell'informazione.
8In linea di principio e possibile anche l'appr9cdo Forward erTor control, ovvero ioserire tanta
informazione ridondante nel messaggio trasmesso, in modo da pater rHenre errori in ricezione e
ricostruire i1 contenuto trasmesso. Ovviamente do richiede una elevata quantita. di informazione
aggiuntiva, riducendo l'utilizZQ della capadU. del canale.
9L'operazione per i1 calcolo deUa parita longitudinale 0 trasversale e comunque una somma modulo
2 (XOR).
Al hvella Collegamento eanche demandato il compito di gestire gli errori in
zione. Al fine di poter rilevare gli errori ed eventualmente correggerli, il trasmittente
cleve inserire informazioni ridondanti nei messaggi. L'approccio normalrnente seguito
consiste nell'inserire solo quanta serve al rilevamento degli errori e nel prevedere 1a
ritrasmissione delPinformazione in caso cii errore. Gli anglosassoni chiamano questa
tecnica Feedback error control
8
.
Si devono considerare due aspetti:
I
I
''''
_.
...
-

. -
j.
1
1- -
\.-
I...
I
I'
\.-
\--
\-
I,.
105
coroHere di poritO
longitudinole pori
,
Comunicazione tra Calcolatori
p, 8. B. B. 81 B, Bt B.
'I 0 0 0 0 0 0 0
,
, 0
0 \
,
0 1 0 0
1 \ 0 1 1 0 0 1
1 1
8
0
00
1 1
0 1 1 1 0 0 1 1
0 0 \ 0 0 \
,
0
0 1
0
0 1
8
'
1
1 0 0 1 1 0 0 0
1 0 0 0 1 1 0
0'
bit di porit,
trosversole
dispori
M(x)x
n
+ R(x) = G(x)Q(x)
T(x) = M(x)x
n
+ R(x)
ottenuta traslanda tutte Ie cifre di M di n posti verso Ie eme piu significative e
inserendo negli n bit mene significatiyi 180 sequenza R(x), eclivisibile per G(x).
Se dunque viene trasmessa la sequenza T(X), il ricevente pub determinare se ci
sono errod dividendo 180 sequenza ricevuta e verificando che il reato sia nullo. Ovvero
,
, ,
se la sequenza ricevuta T (x) non ha errori, allora 180 divisione T (x)/G(x) ha resto
,
nullo (n bit 0). Se il resto non e nullo la sequenza T (x) esicuramente affetta da
errori. Esempio di cal colo dei bit eRe.
Sia data la sequenza: M = (10111) esprimibile can il polinomio M(x) = x' +x' +x +1
e si assuma questa polinomio generatore G(x) = x
2
+1, corrispondente a 101. Allora
,
poiche M(x)x
n
= 1011100, per II calcolo di R basta dividere 1011100 per 101.. La
divisione da Q = 1001 e [R = 11. Si ha dunque:
T(x) =M(x)x
n
+ R(x) =1011100+ 11 =1011111
n ricevente divide la sequenza ricevuta per 10 stesso G. Se il resto non e0 si ein
presenza di errore.
Ovvero, la sequenza
M(x)x
n
= G(x)Q(x) + R(x)
,
dove Q(x) eil quoziente e R(x) il resto, esempre vera per definlzione. E facile
convincersi che, per come sana stati scelti dividendo e divisore, R(x) e d.i orcline
n - 1, corrispondendo a una sequenza di n bit. Poiche nelle operazioni modulo 2 180
somma coincide con 1a differenza, si puo scrivere:
M(x)x
n
corrispondente alIa sequenza ottenuta traslando tutte Ie cifre di M di n posti verso Ie
cifre piiJ significative. La relazione
Sia G(x) un polinomio (generatore), corrispondente a una sequenza di n + 1 bit,
con n < k, e si consideri il polinomio
Figura E.19 Parita. longitudinale e trasversale: i bit cerchiati definiscono una
zione di errore non individuata.
Ie
,.. c
.
..
..

"", >
,
,..
""
.'-'-
',.

I:
,
J.
[
f
..

'" -

..
I
'..
.."

,
.' ,
I
':i:/
,'''!

"
'c"
.'.-

I
",,'
'I:'
, ",:.
ii.
:.!.
,
l
i:
I
,
..
"..
", -'
;

I
"
'-;\.:
';:.1.'::-
;;t-
.,'..

.':
-

!:-,
,
1
. ,
,
I'
,

,
I
I
:
,

erron
Rilevamento degli errod
Controllo di parita Ad ogni carattere trasmesso viene associato un u1teriore bit chi-
amato bit di paritd. che assume un valore tale da rendere pari (even) 0 dispari (odd)
il numero totale di dfre 1 trasmesse. Per ogni carattere ricevuto viene poi effettuato
un conteggio delle dfre 1, il cui risultato viene confrontato con it tipo di parita. (even
o odd) precedentemente concordato. Questo metodo e targamente impiegato neUe
trasmissioni asincrone ed eaffidabile solo se generalmente si manifest80 un solo errore
per ogni carattere trasmesso.
Paritd. longitudinale Quando 180 trasmissione eorientata al frame si pub prevedere
anche un bit di parita. calcolato .su tutti i bit che occupano una stessa posizione
all 'inter no di ciascun carattere. Questi bit, detti di paritii longitudinale, sono trasmessi
riuniti in un carattere aHa fine di ciascun frame e, combinati con i bit di parita visti
in precedenza (bit di parita trasversale), consentono di rilevare un maggior numero eli
errori
9
. Anche in questa modo pero alcune configurazioni di errore possono sfuggire
al rilevamento, come nell'esempio di Figura E.19.
Codici a ridondanza ciclica (eRC) Questa codifica viene impiegat80 in trasmissioni
orientate a1 bit ed ein grado di rilevare anche errori temporalmente concentrati (errori
a. burst). Ess80 si basa su questi concetti:
a) interpretazione delle sequenza di bit come polinomii
b) esecuzione di operazioni in aritmetica in modulo 2 sui polinomi in modo che i1
ricevente possa identificare 180 presenza d.i errori nella sequenza ritevuta.
Sia M una sequenza di k bit informativi. Essa puo essere interpretata come un
polinomio di orcline k - 1.
Esempio: la sequenza M = (10111) (k = 5) eesprimibile con il polinomio M(x) -
+ x
2
+ X + 1.
E.4.3 Controllo degli
704 Appendice E
"
-'

,-
-
I
,
,
I
,

I
il
I
I
rt
'I
I
,
I
I
1
1+2a
1
1 + 2T
p
T;.,
I ,
__I" frome N I ;oJ frome N+ 1 1__
R
T
nel caso rnigliore si ha
U == Ti:t
T
i
:!: + 2T
p
T
lOPer questo motivo, alcuni protocolli di collegamento prevedono I'invio del messaggio NAK
(Negative AcKnowledgement) per anticipe a T I'errore sui frame trasmesso. .
dove si e posto a == U fornisee una misura della sfruttarnento della eapacita
trasmissiva. Si ha una miglior utilizzazione quando il ritardo di prapagazione emolto
piccolo rispetto al tempo richiesto per la trasmissione di un blocco, ovvero quando la
distanza fra T eRe breve e la velocita di trasmissione ebassa.
ARQ.GBN (GoBack-N) Allo scopo di migliorare l'efficienza del (livello di) colle-
gamento si ricorre aHa trasmissione di una sequenza di blocchi senza attendere la
rieezione immediata degli ACK, come schematizzato in FiguraE.22.
In caso di trasmissione senza errori l'efficienza del collegamento si avvicina all'idea-
lita) anche se la gestione della trasmissione da parte di T risulta alquanto piu comples-
sa. In particolare, se la finestra consentita elunga n, T deve memorizzare gli ultimi
n messaggi trasmessi che non hanno ricevuto ACK. La struttura di memorizzazione
adeguata e una coda FIFO, la cui testa viene rimossa solo quando viene ricevuto
!'ACI\ relativo a pacchetto cbe la occupa.
T == T,z +Tip +To:!: +Top +2T
p
In caso di errore T eancora maggiore, dovendo considerare ancbe l'intervallo di
timeout10. Foich: in generale valgono Ie condizioni Tax Tiz e TiplTop T
p
, ne
eonsegue ehe nel caso migliore si ha:
T = Ti:t +2T
p
Se definiamo ora l'efficienza del collegamento U come:
U :: tempo di trGsmissione di un blocco
tempo di trasmissione tra due blocchi consecutivi
Comunieazione tra Calcolatori 707
I I I , I I I
T. To. 1 T, 1L....T,.
Tip Til'
Figura E.21 Tempi caratteristici deUa tecnica di trasmissione stop and wa.it.
I'
,
I
r
,
,.
!

,
,
I"
"
l
..
,
,
,
I,
t
I
,
:
I
t
I
I
,
i'
i
,
:i
"
,
.
-

frome N I
frome N+ 1

ACK(N/

ACK(N+1V
tem... _
)
frome N (rome N+ 11
Appendice E
T
T
p
: ritardo di propagazione
T
jz
: diuata del frame
Tip : tempo di elaborazione del frame in R
T
a
" : durata del messaggio di ACK
Tap : tempo eli elaborazione del messaggio di ACK in T
) Nel caso in cui non si verifichino errori, il tempo T ehe intercorre fra la trasmis-
sione di due frame consecutivi e:
l I tempi caratteristici di questa metodo sono schematizzati in Figura E.21. n
significato dei simboli eil seguente:
Figura E.20 Schema di ritrasmissione Stop and Wait. II trasmittente T, dopo aver tras-
\
messo un blocco, attende da. R la. risposta. ACK (Acknowledgement) che indica che i1 blocco
estate ricevuto correttamente. T trasmette it pacchetto successivo solo dopo Ia rieezione
dell' ACK. Se il b10ece ricevuto da R presenta i1 bloeeo viene seartato e nOD viene
trasmesso l'ACK. Analogamente, se T riceve un ACK errato, '\a risposta non viene conside-
rata. Se T non riceve un valido ACK in un"intervallo di tempo predefinito, detto intervallo di
( timeout, iI blocco viene ritrasmesso, dando luogo a una possibile duplicazione, per evitare la
I quale enecessa;rio blocco un unico (un Durnero progressiyo)
the rappresentl la sua pOS12lOUe aU'mterno del messagglo.
\R
Ritrasmissione dell'informazione Nel casa in cui iI ricevitore individui errori
( nell'informazione in arrive, ne viene richiesta 1a ritrasmissione. Gli schemi di ritras-
missione automatica prendono il nome di metodi ARQ (Automatic Repeat reQuest)
e si differenziano aia in termini eli prestazione che in termini di complessita. Negli
\
'. esempi che seguono si suppone una trasmissione per blocchi 0 pacchetti (frame). 8i
suppone inoItre che la trasmissione dei dati avvenga solo nel senso dal trasmettitore
(T) al un ricevitore (R).
ARQ-SW (Stop and Wait) Il protocollo eschematizzato in FiguraE.20.
1
Anche con la tecnica ora descritta possono comunque verificarsi configurazioni
di errore ,non rivelate in ricezione (do avviene quando la configurazione di errore
E(x) = T (x) + T(x) risulta divisibile per G(x) ),
Di seguito sono Tiportati alcUDi polinomi generatori standardizzati (tra parentesi
I iI protocollo cbe li impiega):
t CRC-16 (BSC): x" + x
15
+ x
2
+ 1
CRC-CCITT (HDLC): x
16
+ x
l2
+ x' + 1
t, CRC-32 (Ethernet): x
J2
+ x
26
+ X
23
+ X
22
+ x
16
+X
12
+xl! + x
lO
+ x
8
+ x. +
\ x
5
+ x
4
+x
2
+ X +1
1
106
-
-'
-
_. \
_.
_.
-
,-
-
-

-
,-
c.
,-

--

r
,-
-"
I
\
I
.
"
-'

,-
-
I
,
,
I
,

I
il
I
I
rt
'I
I
,
I
I
1
1+2a
1
1 + 2T
p
T;.,
I ,
__I" frome N I ;oJ frome N+ 1 1__
R
T
nel caso rnigliore si ha
U == Ti:t
T
i
:!: + 2T
p
T
lOPer questo motivo, alcuni protocolli di collegamento prevedono I'invio del messaggio NAK
(Negative AcKnowledgement) per anticipe a T I'errore sui frame trasmesso. .
dove si e posto a == U fornisee una misura della sfruttarnento della eapacita
trasmissiva. Si ha una miglior utilizzazione quando il ritardo di prapagazione emolto
piccolo rispetto al tempo richiesto per la trasmissione di un blocco, ovvero quando la
distanza fra T eRe breve e la velocita di trasmissione ebassa.
ARQ.GBN (GoBack-N) Allo scopo di migliorare l'efficienza del (livello di) colle-
gamento si ricorre aHa trasmissione di una sequenza di blocchi senza attendere la
rieezione immediata degli ACK, come schematizzato in FiguraE.22.
In caso di trasmissione senza errori l'efficienza del collegamento si avvicina all'idea-
lita) anche se la gestione della trasmissione da parte di T risulta alquanto piu comples-
sa. In particolare, se la finestra consentita elunga n, T deve memorizzare gli ultimi
n messaggi trasmessi che non hanno ricevuto ACK. La struttura di memorizzazione
adeguata e una coda FIFO, la cui testa viene rimossa solo quando viene ricevuto
!'ACI\ relativo a pacchetto cbe la occupa.
T == T,z +Tip +To:!: +Top +2T
p
In caso di errore T eancora maggiore, dovendo considerare ancbe l'intervallo di
timeout10. Foich: in generale valgono Ie condizioni Tax Tiz e TiplTop T
p
, ne
eonsegue ehe nel caso migliore si ha:
T = Ti:t +2T
p
Se definiamo ora l'efficienza del collegamento U come:
U :: tempo di trGsmissione di un blocco
tempo di trasmissione tra due blocchi consecutivi
Comunieazione tra Calcolatori 707
I I I , I I I
T. To. 1 T, 1L....T,.
Tip Til'
Figura E.21 Tempi caratteristici deUa tecnica di trasmissione stop and wa.it.
I'
,
I
r
,
,.
!

,
,
I"
"
l
..
,
,
,
I,
t
I
,
:
I
t
I
I
,
i'
i
,
:i
"
,
.
-

frome N I
frome N+ 1

ACK(N/

ACK(N+1V
tem... _
)
frome N (rome N+ 11
Appendice E
T
T
p
: ritardo di propagazione
T
jz
: diuata del frame
Tip : tempo di elaborazione del frame in R
T
a
" : durata del messaggio di ACK
Tap : tempo eli elaborazione del messaggio di ACK in T
) Nel caso in cui non si verifichino errori, il tempo T ehe intercorre fra la trasmis-
sione di due frame consecutivi e:
l I tempi caratteristici di questa metodo sono schematizzati in Figura E.21. n
significato dei simboli eil seguente:
Figura E.20 Schema di ritrasmissione Stop and Wait. II trasmittente T, dopo aver tras-
\
messo un blocco, attende da. R la. risposta. ACK (Acknowledgement) che indica che i1 blocco
estate ricevuto correttamente. T trasmette it pacchetto successivo solo dopo Ia rieezione
dell' ACK. Se il b10ece ricevuto da R presenta i1 bloeeo viene seartato e nOD viene
trasmesso l'ACK. Analogamente, se T riceve un ACK errato, '\a risposta non viene conside-
rata. Se T non riceve un valido ACK in un"intervallo di tempo predefinito, detto intervallo di
( timeout, iI blocco viene ritrasmesso, dando luogo a una possibile duplicazione, per evitare la
I quale enecessa;rio blocco un unico (un Durnero progressiyo)
the rappresentl la sua pOS12lOUe aU'mterno del messagglo.
\R
Ritrasmissione dell'informazione Nel casa in cui iI ricevitore individui errori
( nell'informazione in arrive, ne viene richiesta 1a ritrasmissione. Gli schemi di ritras-
missione automatica prendono il nome di metodi ARQ (Automatic Repeat reQuest)
e si differenziano aia in termini eli prestazione che in termini di complessita. Negli
\
'. esempi che seguono si suppone una trasmissione per blocchi 0 pacchetti (frame). 8i
suppone inoItre che la trasmissione dei dati avvenga solo nel senso dal trasmettitore
(T) al un ricevitore (R).
ARQ-SW (Stop and Wait) Il protocollo eschematizzato in FiguraE.20.
1
Anche con la tecnica ora descritta possono comunque verificarsi configurazioni
di errore ,non rivelate in ricezione (do avviene quando la configurazione di errore
E(x) = T (x) + T(x) risulta divisibile per G(x) ),
Di seguito sono Tiportati alcUDi polinomi generatori standardizzati (tra parentesi
I iI protocollo cbe li impiega):
t CRC-16 (BSC): x" + x
15
+ x
2
+ 1
CRC-CCITT (HDLC): x
16
+ x
l2
+ x' + 1
t, CRC-32 (Ethernet): x
J2
+ x
26
+ X
23
+ X
22
+ x
16
+X
12
+xl! + x
lO
+ x
8
+ x. +
\ x
5
+ x
4
+x
2
+ X +1
1
106
-
-'
-
_. \
_.
_.
-
,-
-
-

-
,-
c.
,-

--

r
,-
-"
I
\
I
.
\
\-
-
_.
\.
_.
\-
I
I.
\.
1
\
\..
-'
\ -
\-
\.-
1-
Selezione/interrogol.lone
ricono$cimento positivo/
$tOliont; pronto Q r;cevere un bloc:co
Comunicazione tra Calcolatori 709
prefisso I indirino delle stozione
[ SY" I SY" I ACK I
lllBM usa il termine SOLe (Synchronous Data Link Control), l'A.NSI usa it termine ADCCP
(Advanced Data Communications Control Procedure).
ETB End OJ tronsmission Block. Usato per indicare la fine del bloceo di dati.
quando il messaggio esuddiviso in bloccru.
ETX En) OJ Text. Usato per segnalare il termine di una stringa di testa.
Richiesta di risposta da. una stazione remota; la risposta puo inclu-
dere l'identificazione ejo 10 stato delta stazione.
ACK Acknowledgement. Riconoscimento positivo da parte del ricevitore in ris-
posta a un messaggio inviato dal trasmettitore.
NAK Negative acknowledgement. Riconoscimento negativo da parte del ricevi-
tore in risposta a un messaggio inviato dal trasmettitore.
SYN Synchronous idle. Usato per permettere al ricevitore di raggiungere 0 man-
tenere il sincrQnismo can uno schema di trasmissione sinerono.
,
HDLC (High-level Data Link Control) E un protocoUo standardizzato ISO
e noto anehe con altre sigle
11
. Definito come protocollo per uso generalel sia per
collegamenti punto-punto che multipuntol
n protocollo HDLC eorientato al bit e dunque risulta piu efficiente rispetto ai
protocolli orientati a1 carattere. L'unita. di trasmissione eil frame (Figura.E.25).
Abbiamo gia. analizzato i flag di apertura e di chiusura. (FiguraE.1B) e i 16 bit
denominati con FCS (Frame Check Sequence) che rappresentano il codice CRC-16:
,
BCC Block Check CharocteT. Carattere di parita longitudinale. Se i dati sono su
8 bit si usa un codice CRe a 16 bit al posto del carattere BCC.
I $YN I SYN I NAK I riconoscimento negotivo/
'-'''-''- $tozione non pronto 0 rie.vere I,m blocco
I $V" I $V" I SOH I STX I ,,,10 I ETS I scc I primo "00"

I SYN I SYN I S1-X I te$to I ETB I Bee I blocco ;nlermcdio


I SYN I SYN ! STX I testo I ETX I Bee I ullimo blocco
Figura E.24 Formato dei principali messaggi nel protocoUo BSC. I primi sono messa.ggi
di supervisione; gli ultimi tre mostrano 1a trasmissione eli un paceo dati seomposto in tre
blocchi trasmessi in tre roessaggi successivi.
I
>
I
,
I

,
t

I
I
,
,
I
I
\
I
,
I
,
,
,.
,
I
I

r
,
[
I
I
,
!
I
I
I
,
I
\
"

!
I
I
v-
i
i
I'
,
..
..
-l
\:
1
..
...
"
,.
:{. .
,
"
,
.. ..
tempo

tempo

I(N+4)
I(N+2)
I(N+ 1)
I(N+ 1)
I(N+3)
I(N+3)
I(N+2)
I(N+2}
I(N+ 1)
I(N+ \) I(N)
r(N)
T
T
.
E.4.4 Protocolli per il livello collegamento
Descriviamo ora due protocolli: il primo (BSC) eorientato aHa trasmissione a carat
teri, il secondo (HDLC) eorientato alia trasmissione a bit.
R I '(N) I I '(N+2) I '(N+3) I '(N+l) I '("+4) L
Figura E:23 Schema di un protocollo can ritrasmissione selettiva dei pacchetti errati.
Un ulteriore miglioramento consiste nell'effettuare 130 ritrasmissione selettiva, ri
trasmettendo doe solo il frame errato ed evitando di ritrasmettere i frame che seguono
quello ricevuto male (Figura E.23). Si attiene in questa modo un miglior utilizzo del-
la capacita trasmissiva a scapito di una ulteriore complicazione del protocollo. Una
variante di questa schema eutilizzata nel protocollo IP.
BSC (Binary Synchronous Control) n termine BSC edi casa IBM ed eusato
per indicare il protocollo ISO orientato al carattere, nota come Basic Mode. La
schema di ritrasmissione edel tipo ARQ-SW con dei caratteri ACK e NAK.
In Figura E.24 viene riportata il formata di a1cuni tipi di messaggi. In riferimento
alla FiguraE.24 i caratteri di interesse sana:
SOH: Start Of Heading. Usato per indicare l'inizio di un header (se presente) 0
di un messaggio informativo (blocco).
STX StaTt OJ Text. Usato sia per concludere un beader (se presente) che per in-
iziare una stringa di testo.
R I 1(") I I 1("+2) I 1("+3) I 1("+1) I I(N+2)
Figura E.22 Schema ARQ-GBN (trasmissione a finestra). n trasmittente puc. trasmettere
i paccbetti, fino a raggiungere un massimo predefinito (Ia finestra), prima che sia arrivato
"ACK at primo messaggio. In caso di errore, questa schema prevede la ritrasmissione del
pacchetto errata e di tutti i successivi gia. trasmessi. E necessaria che i pacchetti contengano
un numero d'ordine, in modo da consentire al trasmittente di rinviare queUo errato e tutti i
succeSS1VI.
708 Appendice E
\
\-
-
_.
\.
_.
\-
I
I.
\.
1
\
\..
-'
\ -
\-
\.-
1-
Selezione/interrogol.lone
ricono$cimento positivo/
$tOliont; pronto Q r;cevere un bloc:co
Comunicazione tra Calcolatori 709
prefisso I indirino delle stozione
[ SY" I SY" I ACK I
lllBM usa il termine SOLe (Synchronous Data Link Control), l'A.NSI usa it termine ADCCP
(Advanced Data Communications Control Procedure).
ETB End OJ tronsmission Block. Usato per indicare la fine del bloceo di dati.
quando il messaggio esuddiviso in bloccru.
ETX En) OJ Text. Usato per segnalare il termine di una stringa di testa.
Richiesta di risposta da. una stazione remota; la risposta puo inclu-
dere l'identificazione ejo 10 stato delta stazione.
ACK Acknowledgement. Riconoscimento positivo da parte del ricevitore in ris-
posta a un messaggio inviato dal trasmettitore.
NAK Negative acknowledgement. Riconoscimento negativo da parte del ricevi-
tore in risposta a un messaggio inviato dal trasmettitore.
SYN Synchronous idle. Usato per permettere al ricevitore di raggiungere 0 man-
tenere il sincrQnismo can uno schema di trasmissione sinerono.
,
HDLC (High-level Data Link Control) E un protocoUo standardizzato ISO
e noto anehe con altre sigle
11
. Definito come protocollo per uso generalel sia per
collegamenti punto-punto che multipuntol
n protocollo HDLC eorientato al bit e dunque risulta piu efficiente rispetto ai
protocolli orientati a1 carattere. L'unita. di trasmissione eil frame (Figura.E.25).
Abbiamo gia. analizzato i flag di apertura e di chiusura. (FiguraE.1B) e i 16 bit
denominati con FCS (Frame Check Sequence) che rappresentano il codice CRC-16:
,
BCC Block Check CharocteT. Carattere di parita longitudinale. Se i dati sono su
8 bit si usa un codice CRe a 16 bit al posto del carattere BCC.
I $YN I SYN I NAK I riconoscimento negotivo/
'-'''-''- $tozione non pronto 0 rie.vere I,m blocco
I $V" I $V" I SOH I STX I ,,,10 I ETS I scc I primo "00"

I SYN I SYN I S1-X I te$to I ETB I Bee I blocco ;nlermcdio


I SYN I SYN ! STX I testo I ETX I Bee I ullimo blocco
Figura E.24 Formato dei principali messaggi nel protocoUo BSC. I primi sono messa.ggi
di supervisione; gli ultimi tre mostrano 1a trasmissione eli un paceo dati seomposto in tre
blocchi trasmessi in tre roessaggi successivi.
I
>
I
,
I

,
t

I
I
,
,
I
I
\
I
,
I
,
,
,.
,
I
I

r
,
[
I
I
,
!
I
I
I
,
I
\
"

!
I
I
v-
i
i
I'
,
..
..
-l
\:
1
..
...
"
,.
:{. .
,
"
,
.. ..
tempo

tempo

I(N+4)
I(N+2)
I(N+ 1)
I(N+ 1)
I(N+3)
I(N+3)
I(N+2)
I(N+2}
I(N+ 1)
I(N+ \) I(N)
r(N)
T
T
.
E.4.4 Protocolli per il livello collegamento
Descriviamo ora due protocolli: il primo (BSC) eorientato aHa trasmissione a carat
teri, il secondo (HDLC) eorientato alia trasmissione a bit.
R I '(N) I I '(N+2) I '(N+3) I '(N+l) I '("+4) L
Figura E:23 Schema di un protocollo can ritrasmissione selettiva dei pacchetti errati.
Un ulteriore miglioramento consiste nell'effettuare 130 ritrasmissione selettiva, ri
trasmettendo doe solo il frame errato ed evitando di ritrasmettere i frame che seguono
quello ricevuto male (Figura E.23). Si attiene in questa modo un miglior utilizzo del-
la capacita trasmissiva a scapito di una ulteriore complicazione del protocollo. Una
variante di questa schema eutilizzata nel protocollo IP.
BSC (Binary Synchronous Control) n termine BSC edi casa IBM ed eusato
per indicare il protocollo ISO orientato al carattere, nota come Basic Mode. La
schema di ritrasmissione edel tipo ARQ-SW con dei caratteri ACK e NAK.
In Figura E.24 viene riportata il formata di a1cuni tipi di messaggi. In riferimento
alla FiguraE.24 i caratteri di interesse sana:
SOH: Start Of Heading. Usato per indicare l'inizio di un header (se presente) 0
di un messaggio informativo (blocco).
STX StaTt OJ Text. Usato sia per concludere un beader (se presente) che per in-
iziare una stringa di testo.
R I 1(") I I 1("+2) I 1("+3) I 1("+1) I I(N+2)
Figura E.22 Schema ARQ-GBN (trasmissione a finestra). n trasmittente puc. trasmettere
i paccbetti, fino a raggiungere un massimo predefinito (Ia finestra), prima che sia arrivato
"ACK at primo messaggio. In caso di errore, questa schema prevede la ritrasmissione del
pacchetto errata e di tutti i successivi gia. trasmessi. E necessaria che i pacchetti contengano
un numero d'ordine, in modo da consentire al trasmittente di rinviare queUo errato e tutti i
succeSS1VI.
708 Appendice E
,
,
po Appendice E
I
8 8 8 do 0 a N 16 8
" i I j , "
\ indirizzo contrello informozione FCS
,
Figura E.25 BDLC: struttura del frame.
f16 + X
12
+ X
5
Gli 8 bit di centrelle hanno un diverse significato a seconda del
"ipo di frame in cui si trovanoj i frame possono essere di 3 tipi diversi:
\ 1. Frame non numerati: usati per stabilire connessionejscoDnessione, Non richie-
I dono risposte di ACK;
2. frame informativi: contengoDo l'informazione da trasmetterej
3. frame di supervisiane: usati per il cantralla di errore e del fiussa informative.
(
ti
,
,
,.
,
,
1

I
I
j.
'.
Comunicazione tra. Calcolatori
0, - D.
au. [X,u (6 bit)
h'
DolO IraImIno
,
"
0,
'"
Data Ricl!\I\,Jlo
0,
,
"
O. T.RaY lralmlniono pronto
',0
,
"
'.
Rlcnione pronto
ONO

,.C
O.
,
"
OTR
C/O
Controllo/O<lto
0,
, 8251A
;Us
RO Comondo di IettUfO
O.
,
OS,
.. eomondo di ICrittY'O
O.

"'''
CS
Chip seled
r.c

CU<
WR
en; Clo"r to Hnd
"
'"
"
RTS
fl.lquul to .elld
"
h(MPTY
C/O
ffi
OTR 00\0 terminol '\lady
"
llSR
Oclo I.t
RO
"
SYNDCT/BD
Ib<RDY
.. hROY
Cll<
Clok
hC
Clod<. eli lrOsmiU;OM
,.C Clock dO ,;cnion.
711
Esempio di dispositivo per il controllo della trasmissione:
1'8251A
Tabella E.2 Fattore di baud rate.
I B2 llITJ fattore di baud rate I
0 0
--
modo sincrono
0 I
I
I 0
16
I I
64
38.4 kHz
76.8kHz
frequenza in rite
frequenza in RxG
si deve avere
Le reb LAN, in particolare Ethernet, sono diventate 10 standard di collegamento
all'interno delle strutture organizzative. La copertura di una LAN e solitamente
inferiore alIa decina di chilometri, il nUIDero di minore di un migliaio e la
velocita etra I e 10 Mbps.
Una rete LAN consente l'interconnessione di terminali eterogenei e delle risorse di
e1aborazione e memorizzazione, permettendo 10 scambio integrato di informazioni di
vario tipo (voce, dati, imrnagini, ecc.). Le LAN sana flessibili, affidabili e
ve10cita. di trasrnissione: 2400 baud;
velocita di ricezione: 4800 baud;
B2 BI = 10 (fattore di baud rate: xI6).
E.5 Cenni sulle LAN
Figura E.26 Piedinatura del componente 8251A. Viene indicato il significato dei piedini
rilevanti a comprendere il funzionamento del dispositivo.
,.
I
I
I
L
,
:
,
,
L
I
I
f
,
E.4.5
\
Sebbene si tratti di un dispositivo ormai superato, canviene fare un breve eenno a1
r.omponente 851A (Intel), una USART (Universal Synchronous and Asynchronous
t
eCeiver and 7ransmitter) programmabile in modo da permettere trasmissioni sia
I ncrane che asincrone.
L'8251A preleva i dati in formato parallelo (8 bit) pravenienti dalla CPU e
Ii eonverte in una sequenza; simultaneamente pub ricevere un'altra sequenza che
" ')Dverte in formato parallelo da trasferire alia CPU. Ha 1a capacita di segnalare
')cIa CPU che ein grado di trasmettere un ouovo carattere (piedino TxRDY) 0 cbe
e stato ricevuto un nuovo carattere (piedino RxRDY). Di norma TxRDY e RxRDY
vengono impiegati per generare interruzionij in ogni caso la CPU puo leggere 10 state
\
ell'8251A in qualsiasi momento. Dalla lettura della stato si ottengono informazioni
,guardanti sia eventuali errori di trasmissione/ricezione che 10 state dei segnali di
controllo. In FiguraE.26 viene riportata la piedinatura.
La struttura e i collegamenti dell'8251A sono schematizzati in Figura E.27. In
kezione i bit provenienti dalI1ingresso seriale vengono memorizzati ntH registro a
Forrimento di ricezione e poi trasferiti Del registro data-in buff leggibile dalla CPU.
In trasmissione il carattere da trasmettere viene prima depositato nel registro dataout
buffer e da qui trasferito nel relativo registro a scorrimento da cui ogni bit viene inviato
ll'uscita seriale. In FiguraE.28 viene riportato it tipico esempio di tollegamento tra
e un modem asincrono.
, In caso di funzionamento in modo sinereno le frequenze in TxC e RxC coincidono
can le rispettive frequenze di trasmissione baud rate. In modo asincrono, 1a. ve1ocita.
elegata alia frequenza del clock presente sui piedini-TxC 0
C attraverso un fatt9re di baud rate, come da Tabella E.2. n fat tore di baud rate
da. il rapporto tra 130 frequenza del clock (di ricezione a trasmissione) e 1a frequenza
sulla linea, secondo la formula:
j frequenza di clock = fattore di baud rate x baud rate
Se per esempio si ha:
I
,
,
po Appendice E
I
8 8 8 do 0 a N 16 8
" i I j , "
\ indirizzo contrello informozione FCS
,
Figura E.25 BDLC: struttura del frame.
f16 + X
12
+ X
5
Gli 8 bit di centrelle hanno un diverse significato a seconda del
"ipo di frame in cui si trovanoj i frame possono essere di 3 tipi diversi:
\ 1. Frame non numerati: usati per stabilire connessionejscoDnessione, Non richie-
I dono risposte di ACK;
2. frame informativi: contengoDo l'informazione da trasmetterej
3. frame di supervisiane: usati per il cantralla di errore e del fiussa informative.
(
ti
,
,
,.
,
,
1

I
I
j.
'.
Comunicazione tra. Calcolatori
0, - D.
au. [X,u (6 bit)
h'
DolO IraImIno
,
"
0,
'"
Data Ricl!\I\,Jlo
0,
,
"
O. T.RaY lralmlniono pronto
',0
,
"
'.
Rlcnione pronto
ONO

,.C
O.
,
"
OTR
C/O
Controllo/O<lto
0,
, 8251A
;Us
RO Comondo di IettUfO
O.
,
OS,
.. eomondo di ICrittY'O
O.

"'''
CS
Chip seled
r.c

CU<
WR
en; Clo"r to Hnd
"
'"
"
RTS
fl.lquul to .elld
"
h(MPTY
C/O
ffi
OTR 00\0 terminol '\lady
"
llSR
Oclo I.t
RO
"
SYNDCT/BD
Ib<RDY
.. hROY
Cll<
Clok
hC
Clod<. eli lrOsmiU;OM
,.C Clock dO ,;cnion.
711
Esempio di dispositivo per il controllo della trasmissione:
1'8251A
Tabella E.2 Fattore di baud rate.
I B2 llITJ fattore di baud rate I
0 0
--
modo sincrono
0 I
I
I 0
16
I I
64
38.4 kHz
76.8kHz
frequenza in rite
frequenza in RxG
si deve avere
Le reb LAN, in particolare Ethernet, sono diventate 10 standard di collegamento
all'interno delle strutture organizzative. La copertura di una LAN e solitamente
inferiore alIa decina di chilometri, il nUIDero di minore di un migliaio e la
velocita etra I e 10 Mbps.
Una rete LAN consente l'interconnessione di terminali eterogenei e delle risorse di
e1aborazione e memorizzazione, permettendo 10 scambio integrato di informazioni di
vario tipo (voce, dati, imrnagini, ecc.). Le LAN sana flessibili, affidabili e
ve10cita. di trasrnissione: 2400 baud;
velocita di ricezione: 4800 baud;
B2 BI = 10 (fattore di baud rate: xI6).
E.5 Cenni sulle LAN
Figura E.26 Piedinatura del componente 8251A. Viene indicato il significato dei piedini
rilevanti a comprendere il funzionamento del dispositivo.
,.
I
I
I
L
,
:
,
,
L
I
I
f
,
E.4.5
\
Sebbene si tratti di un dispositivo ormai superato, canviene fare un breve eenno a1
r.omponente 851A (Intel), una USART (Universal Synchronous and Asynchronous
t
eCeiver and 7ransmitter) programmabile in modo da permettere trasmissioni sia
I ncrane che asincrone.
L'8251A preleva i dati in formato parallelo (8 bit) pravenienti dalla CPU e
Ii eonverte in una sequenza; simultaneamente pub ricevere un'altra sequenza che
" ')Dverte in formato parallelo da trasferire alia CPU. Ha 1a capacita di segnalare
')cIa CPU che ein grado di trasmettere un ouovo carattere (piedino TxRDY) 0 cbe
e stato ricevuto un nuovo carattere (piedino RxRDY). Di norma TxRDY e RxRDY
vengono impiegati per generare interruzionij in ogni caso la CPU puo leggere 10 state
\
ell'8251A in qualsiasi momento. Dalla lettura della stato si ottengono informazioni
,guardanti sia eventuali errori di trasmissione/ricezione che 10 state dei segnali di
controllo. In FiguraE.26 viene riportata la piedinatura.
La struttura e i collegamenti dell'8251A sono schematizzati in Figura E.27. In
kezione i bit provenienti dalI1ingresso seriale vengono memorizzati ntH registro a
Forrimento di ricezione e poi trasferiti Del registro data-in buff leggibile dalla CPU.
In trasmissione il carattere da trasmettere viene prima depositato nel registro dataout
buffer e da qui trasferito nel relativo registro a scorrimento da cui ogni bit viene inviato
ll'uscita seriale. In FiguraE.28 viene riportato it tipico esempio di tollegamento tra
e un modem asincrono.
, In caso di funzionamento in modo sinereno le frequenze in TxC e RxC coincidono
can le rispettive frequenze di trasmissione baud rate. In modo asincrono, 1a. ve1ocita.
elegata alia frequenza del clock presente sui piedini-TxC 0
C attraverso un fatt9re di baud rate, come da Tabella E.2. n fat tore di baud rate
da. il rapporto tra 130 frequenza del clock (di ricezione a trasmissione) e 1a frequenza
sulla linea, secondo la formula:
j frequenza di clock = fattore di baud rate x baud rate
Se per esempio si ha:
I
8251A
I
\
I
\
I
\
I
1
1
/\
1
1
1
1
713
6'....'
::;= '.0 .
',0
RS 2J2 C
""
modem
inl"lll<;cio
""
"
OI;"<;'onO tel,fonica
ldtfonica
8251A
""
::;:
m
""
g 9,,,,,talo,,
""
oj boud rote
Le caratteristiche principali della tipologia a bus sono:
affidabilita.: il guasto di una stazione in genere non pregiudica il funzionamento
della rete;
fiessibilita: Ie stazioni possono essere tolte e inserite senza riconfigurare 130 rete;
costi: generalmente bassi;
velocita. .di trasferimento dei dati: alta;
distanza fra i terminali: limitata
l
a causa dell1assenza eli ripetitori.
topologia a. bus prevede anche la soluzione a. bus unidireziona.le, di solito non usata ancbe
perche richiede che ogni stazione sia dotata di due interfacce eli rete, una per la trasmissione e una
per la ricezione.
Figura E.29 Topologia. a bus bidi.rezionale: le stazioni sono collegate io derivazione e ogni
stazione riceve e trasmette di norma attraverso 1a stessa interfaccia. E questa 1a soluzione
dello standard Ethernet.
Tutte Ie possibili configurazioni di una LAN possono essere ricondotte ai 3 tipi
seguenti:
1. A bus
2. Ad anello
3. A stella
Topologia a bus. I terminali (SJ sono collegati in derivazione al mezzo trasmissivo
caroune, di norma bidirezionale
1
, come in Figura E.29.
Figura E.28 CoUegamento tra P8251A e un modem asincrono.
E.5.1 Topologia di una LAN
Comunicazione tra Calcolatori
.
,
,
,
,
'.
,
,
,
"

"
clock
co"t,ollo
modem
5cito
ariol!
9"5$0
eriole
,v
I
register
I

+'
eLK
[ Sync chor 1
I
GND
h
8286 07-00
I I
Sync cher 2
DE
I
Control regisler
I
T
,
'"
I Receiver shiH reg
R,O
,
Reset
RESET
,
iR,

Doto-in bufler reg 'J
IR n+l
TxROY Data out buffer reg
1l
r.E
or;
or;
r.o
,
W1l
Transmitter shift reg
,
I
Status register
I
H delay
DSR
DTR

CTS
decod;f,
OS RTS
indirino $YNDET
.[ t :,::; ,,,'milo

R.e
]
"e
bus doti
bus indir;zzi
c) i dispositivi di gestione e di eontroIlo del traffico.
a) un mezzo trasmi5sivo;
712 Appendice E
b) Ie interfacce tra DTE e rete;
Figura E.27 Struttura dell'8251A. La combinaziooe dei segnali GID, RD, WR e CS de
termina quale registro viene letto/scritto. Notare che i dati sooo lettijscritti atl'indirizzo
pari (AO=OL mentre i comandi e/o 10 stato 5000 scritti/letti a11'indirizzo dispari. E possi-
bile programmare il dispositivo in vario modo: si pun abilitare a no il controllo della parita.
(dispari 0 pari); si pub stabilire di avere 1, 1,5 oppure 2 bit di stop; si pub stabilire che it
numero dei bit dati e5, 6, 7, oppure 8. lnfine il dispositivo PUQ trasmettere in modo siocrono
o aslOcrono.
espandibili tanto cia essere diyentate l'ossatura di un 'qualunque sistema informatico
aziendale.
La trasmissione 5i basa 5U conne5sioni 4i tipo broadcast, secondo cui il messaggio
inviato da un terminale yiene fisicamente ricevuto da tutti gli altri terminali della
- rete. n fatto di essere in presenza di una cornunicazione ad accesso multiplo porta a
distinguere un sottolivello dellivello di collegamento del modeno 1S0/0S1, nota come
MAC (Medium Access Control), posizionato subito sopra illivello fisico. La funzione
del Hyello MAC equella di regolare l'accesso al mezzo fisico da parte degli utenti,
alIoeando it canale ad accesso multiplo in modo che ogni nodo possa trasmettere il
proprio pacchetto senza interferenze can gli altri nodi.
Schematicamente una LAN ecomposta da:
8251A
I
\
I
\
I
\
I
1
1
/\
1
1
1
1
713
6'....'
::;= '.0 .
',0
RS 2J2 C
""
modem
inl"lll<;cio
""
"
OI;"<;'onO tel,fonica
ldtfonica
8251A
""
::;:
m
""
g 9,,,,,talo,,
""
oj boud rote
Le caratteristiche principali della tipologia a bus sono:
affidabilita.: il guasto di una stazione in genere non pregiudica il funzionamento
della rete;
fiessibilita: Ie stazioni possono essere tolte e inserite senza riconfigurare 130 rete;
costi: generalmente bassi;
velocita. .di trasferimento dei dati: alta;
distanza fra i terminali: limitata
l
a causa dell1assenza eli ripetitori.
topologia a. bus prevede anche la soluzione a. bus unidireziona.le, di solito non usata ancbe
perche richiede che ogni stazione sia dotata di due interfacce eli rete, una per la trasmissione e una
per la ricezione.
Figura E.29 Topologia. a bus bidi.rezionale: le stazioni sono collegate io derivazione e ogni
stazione riceve e trasmette di norma attraverso 1a stessa interfaccia. E questa 1a soluzione
dello standard Ethernet.
Tutte Ie possibili configurazioni di una LAN possono essere ricondotte ai 3 tipi
seguenti:
1. A bus
2. Ad anello
3. A stella
Topologia a bus. I terminali (SJ sono collegati in derivazione al mezzo trasmissivo
caroune, di norma bidirezionale
1
, come in Figura E.29.
Figura E.28 CoUegamento tra P8251A e un modem asincrono.
E.5.1 Topologia di una LAN
Comunicazione tra Calcolatori
.
,
,
,
,
'.
,
,
,
"

"
clock
co"t,ollo
modem
5cito
ariol!
9"5$0
eriole
,v
I
register
I

+'
eLK
[ Sync chor 1
I
GND
h
8286 07-00
I I
Sync cher 2
DE
I
Control regisler
I
T
,
'"
I Receiver shiH reg
R,O
,
Reset
RESET
,
iR,

Doto-in bufler reg 'J
IR n+l
TxROY Data out buffer reg
1l
r.E
or;
or;
r.o
,
W1l
Transmitter shift reg
,
I
Status register
I
H delay
DSR
DTR

CTS
decod;f,
OS RTS
indirino $YNDET
.[ t :,::; ,,,'milo

R.e
]
"e
bus doti
bus indir;zzi
c) i dispositivi di gestione e di eontroIlo del traffico.
a) un mezzo trasmi5sivo;
712 Appendice E
b) Ie interfacce tra DTE e rete;
Figura E.27 Struttura dell'8251A. La combinaziooe dei segnali GID, RD, WR e CS de
termina quale registro viene letto/scritto. Notare che i dati sooo lettijscritti atl'indirizzo
pari (AO=OL mentre i comandi e/o 10 stato 5000 scritti/letti a11'indirizzo dispari. E possi-
bile programmare il dispositivo in vario modo: si pun abilitare a no il controllo della parita.
(dispari 0 pari); si pub stabilire di avere 1, 1,5 oppure 2 bit di stop; si pub stabilire che it
numero dei bit dati e5, 6, 7, oppure 8. lnfine il dispositivo PUQ trasmettere in modo siocrono
o aslOcrono.
espandibili tanto cia essere diyentate l'ossatura di un 'qualunque sistema informatico
aziendale.
La trasmissione 5i basa 5U conne5sioni 4i tipo broadcast, secondo cui il messaggio
inviato da un terminale yiene fisicamente ricevuto da tutti gli altri terminali della
- rete. n fatto di essere in presenza di una cornunicazione ad accesso multiplo porta a
distinguere un sottolivello dellivello di collegamento del modeno 1S0/0S1, nota come
MAC (Medium Access Control), posizionato subito sopra illivello fisico. La funzione
del Hyello MAC equella di regolare l'accesso al mezzo fisico da parte degli utenti,
alIoeando it canale ad accesso multiplo in modo che ogni nodo possa trasmettere il
proprio pacchetto senza interferenze can gli altri nodi.
Schematicamente una LAN ecomposta da:
Topologia ad anello Le stazioni sana disposte sul canale di trasmissione con una
struttura circolare (Figura E.30).
!_7:.14 __A.::p,-p:.e:..:.di::.c:.e..cE=-- _

;
I

\
I
715
s
s
Comunicazione tra. Calcolatori
node
centrale
---------

s
Figura E.32 Topologia a stella.

s
s
s
s
\
,
I
-
Distanza tra i terminali: limitata.
Costi: alti quelli iniziali, cbe comunque decrescono per Ie successive installazioni.
Velocita. di trasferimento dei dati: media.
Flessibilita.: limitata dalla capacita del node centrale, COn qualche problema di
riconfigurazione.
Affidabilita.: 1a rete si blocca solo per un guasto al nodo centrale che quindi
necessita di particolare proteziene, come la duplicaziooe dei da.ti, la protezione
da cadute di tensione, ecc.
Nelle reti LAN si hanno essenzialmente due diversi tipi di tecniche di trasmissione.
E.5.2 Tecniche di trasmissione
,
,
I

onello

;
'00
lunl,en,
"
ri e.i
"
/
cireuilo
-di bypan
L-Fh--
"-

,/
--
I
lerm;oole
I
Tipica connessione di una stazione a.ll'anello.
Topologia ad anello.
L'informazione percorre Panella in un solo senso, passando attraverso ogni sta-
zione prima. di tornare a quella di partenza: dunque ogni stazione eflettua anche fun-
\ zioni di rigenerazione per i messaggi in transito. Una tipica connessione eriportata
\ in Figura E.31.
r Figura E.31
,
,
(
I
Figura E.30
,
I
-
---_.-
Le caratteristiche di questi supporti sooo schematizzate oella segueote tabella:
2. Tecnica broadband. I segnall sono di tipo analogico e permettono lao trasm.i.ssione
di dati, video e voce; ognuna di queste a.pplicazioni occupa una diversa banda di
frequenza mediante l'adazione di tecniche di multiplazione FDM.
c) fibra attica.
I mezzi fisici utilizzati SODa:
,
b) cavo coassiale;
a) doppino telefonico;
1. Tecnica baseband. I segnali sana di tipo numerico in banda base; al momento le
reti che adottano tecnica OlfrODO solo servizi di trasferimcnto dati; Le caratteristiche principali di una LAN con tipologia ad anelIc sono:
Affidabilita.: il guasto di una stazione non 5i riversa su tutta la rete in quanta
per ogni stazione eprevisto un circuito di bypass.
Distanza tra i terminali: discretamente elevata, poiche le stazioni sono attive e
hanno funzioni di rigenerazione.
Costi: generalmente bassi.
Velocita di trasferirnento dei dati: alta.
Flessibilita.: limitata (l'inserimento di DuaVe staziani puo inftuire sulla funziona-
litA della rete).
J
/ Tapa/agia a 3tella Thtte Ie stazioni sana connesse can collegamenti radiali a un nodo
I centrale, che concentra Ie risorse dell'intera rete (Figura E.32) e che gestisce anche 1a

comuriicazione tra Ie singole stazioni.


Le'caratteristiche principali di questa topologia sana:
\
1
I
-
_.
...

Topologia ad anello Le stazioni sana disposte sul canale di trasmissione con una
struttura circolare (Figura E.30).
!_7:.14 __A.::p,-p:.e:..:.di::.c:.e..cE=-- _

;
I

\
I
715
s
s
Comunicazione tra. Calcolatori
node
centrale
---------

s
Figura E.32 Topologia a stella.

s
s
s
s
\
,
I
-
Distanza tra i terminali: limitata.
Costi: alti quelli iniziali, cbe comunque decrescono per Ie successive installazioni.
Velocita. di trasferimento dei dati: media.
Flessibilita.: limitata dalla capacita del node centrale, COn qualche problema di
riconfigurazione.
Affidabilita.: 1a rete si blocca solo per un guasto al nodo centrale che quindi
necessita di particolare proteziene, come la duplicaziooe dei da.ti, la protezione
da cadute di tensione, ecc.
Nelle reti LAN si hanno essenzialmente due diversi tipi di tecniche di trasmissione.
E.5.2 Tecniche di trasmissione
,
,
I

onello

;
'00
lunl,en,
"
ri e.i
"
/
cireuilo
-di bypan
L-Fh--
"-

,/
--
I
lerm;oole
I
Tipica connessione di una stazione a.ll'anello.
Topologia ad anello.
L'informazione percorre Panella in un solo senso, passando attraverso ogni sta-
zione prima. di tornare a quella di partenza: dunque ogni stazione eflettua anche fun-
\ zioni di rigenerazione per i messaggi in transito. Una tipica connessione eriportata
\ in Figura E.31.
r Figura E.31
,
,
(
I
Figura E.30
,
I
-
---_.-
Le caratteristiche di questi supporti sooo schematizzate oella segueote tabella:
2. Tecnica broadband. I segnall sono di tipo analogico e permettono lao trasm.i.ssione
di dati, video e voce; ognuna di queste a.pplicazioni occupa una diversa banda di
frequenza mediante l'adazione di tecniche di multiplazione FDM.
c) fibra attica.
I mezzi fisici utilizzati SODa:
,
b) cavo coassiale;
a) doppino telefonico;
1. Tecnica baseband. I segnali sana di tipo numerico in banda base; al momento le
reti che adottano tecnica OlfrODO solo servizi di trasferimcnto dati; Le caratteristiche principali di una LAN con tipologia ad anelIc sono:
Affidabilita.: il guasto di una stazione non 5i riversa su tutta la rete in quanta
per ogni stazione eprevisto un circuito di bypass.
Distanza tra i terminali: discretamente elevata, poiche le stazioni sono attive e
hanno funzioni di rigenerazione.
Costi: generalmente bassi.
Velocita di trasferirnento dei dati: alta.
Flessibilita.: limitata (l'inserimento di DuaVe staziani puo inftuire sulla funziona-
litA della rete).
J
/ Tapa/agia a 3tella Thtte Ie stazioni sana connesse can collegamenti radiali a un nodo
I centrale, che concentra Ie risorse dell'intera rete (Figura E.32) e che gestisce anche 1a

comuriicazione tra Ie singole stazioni.


Le'caratteristiche principali di questa topologia sana:
\
1
I
-
_.
...

,:
,'
.'.

1-
\-
-

4 0-1500 2 6 6 8
....",
"""""
"""""'"
""""',." ''''''''''''
"'.
"" "'"
""""'"
Comunieazione tra Oalcolatori 717 j_
Ethernet estata proposta agli i.nizi degli anni 10 [MB16J. E stata in seguito sviluppat, I-
da Xerox come rete locale CSMA/CD a lOMbps su cava coassiale, nel contesto d.i _
WI progetto proposto oel 1979 da Digital, Intel e Xerox, successivameDte esteso Del 1
eomitato IEEE 802. Ethernet ediventata 10 standard IEEE 802.3.
La velocita va da 1 Mbps fino a 150 Mbpsl a seconda del mezzo trasmissivo. La .-
topologia ea bus.bidirezionale e la struttura del messaggio segue il protocollo HDLC.
nformato di un pacchetto ein FiguraE.33.
E.5.4 Esempio di LAN: la rete Ethernet
.
,

,.". t
.
t.
assi J bassa
medi \ media,
medt I media.
costi I complessita
di intercon
nesstone
tipo"di -
-,
topologia.
I
velOCIta
Imax.num.
supporta
/band. staziani
aceettate
, ,
oppinO Ilius.stella.. I
ca.. 4 I n.5fJbDS I 100
telefonico
cavo
I
ca. 10
I
lOMbps
I
1000
baseband
cava coassiaIe I bus
I
ca.
broadband
ra. attica. I steUa..a.oeUo I ca.
E.5.3 Tecniche di accesso .
716 Appendice E
I
I
I
I
I
I
I
Consentono aile vane stazione d.i una LAN di aceedere al mezzo trasmissivo, al fine di
realizzare una corretta trasmissione delllinformazione. Le tecniche di accesso possono
essere raggruppate in 2 ue classi principali:
1. Accesso di tipo casuale. Ogni stazione puo iniziare la trasmissione in qualsiasi
momento.
2. Accesso di tipo ordinato. Ogni stazione puo iniziare la trasmissione solo in istanti
di tempo predeterminati.
Un esempio d.i tecnica d.i accesso casuale e rappresentato dal metodo CSMA
(CarnerSen"e Multiple Acces,,). Questo metodo prevede l'invio di una portante suI
mezzo fisico me subisce una quando.e presente del traffico sulla rete;
una stazione in procinto di trasmettere puo dunque stabilire dall'ascolto della por-
taote se il canale e occupato 0 meno. Usando questa procedura pero non si esclude
completamente la probabilita che si verifichino' collisioni
l
ovvero che due stazioni tras-
mettano contemporaneamente. Infatti, a causa dei Iitardi di propagazione sulla lineal
pub succedere che 180 modulazione della portante da parte di una stazione trasmit-
tente non sia ancora giunta a una seconda stazione pronta a trasmettere
l
che quindi
comincia a sua volta la traamissione. Per ovviare il questa problema viene usata una
variante del metodo CSMA nota can il nome di CSMAjCD (CSMA Collision'Detec-
tion) tramite la quale Ie stazioni cbe rilevano una collisione (comparando i livelli del
segnale in emissione e del segnale sulla linea) bloccano Ia propria trasmissione, che
viene riprogrammata dopo un intervallo di tempo casuale. I protocolli di tipo CSMA
e CSMAjCD sana utilizzati sia su sisterni baseband ehe broadband.
Un esempio di tecnica di acces$o ordinato einvece it metodo token passing in
cui una stazione eabilitata a trasmettere se rUeva sulla linea la presenza di un token
liberol costituito da una speciale configurazione di bit. Quando cia avviene
l
la sta-
zione acquisisce il controllo della linea immettendovi il pacchetto di dati) comprensivo
deJPindirizzo del destinatario e il token occupatoj le successive stazioni fauna dunque
transitare questo pacehetto fino alia destinazione. In un sistema ehe adotta il to-
ken passing non esiste quindi il problema della contesa del mezzo trasmissiva e non
possono avvenire collisioni.
,
"

Ll>n9".:uo irl boyle


Figura E.33 Formato di un messaggio Ethernet.
Dal punto di vista elettrico 10 standard 802.3 prevede una Manchester
in banda base. La velocita di trasmissione richiede I'uso di componenti veloci (TTL
o EeL) per la modulazione e 1a seria1izzazione. Inizialmente Ethernet faceva esclu-
sivamente usa di un cavo coassiale tipo CATV (COf1.lmunity Antenna TV), ormai
praticamente scomparso. Molto diffuso eit pili cava RG58, Ie cui attesta-
zioni aono realizzate con connettori BNC. Negli annj recenti si evista l'espansione di
Ethernet su doppino. .

\-

\-
--
\-
\.
I
.
I

,:
,'
.'.

1-
\-
-

4 0-1500 2 6 6 8
....",
"""""
"""""'"
""""',." ''''''''''''
"'.
"" "'"
""""'"
Comunieazione tra Oalcolatori 717 j_
Ethernet estata proposta agli i.nizi degli anni 10 [MB16J. E stata in seguito sviluppat, I-
da Xerox come rete locale CSMA/CD a lOMbps su cava coassiale, nel contesto d.i _
WI progetto proposto oel 1979 da Digital, Intel e Xerox, successivameDte esteso Del 1
eomitato IEEE 802. Ethernet ediventata 10 standard IEEE 802.3.
La velocita va da 1 Mbps fino a 150 Mbpsl a seconda del mezzo trasmissivo. La .-
topologia ea bus.bidirezionale e la struttura del messaggio segue il protocollo HDLC.
nformato di un pacchetto ein FiguraE.33.
E.5.4 Esempio di LAN: la rete Ethernet
.
,

,.". t
.
t.
assi J bassa
medi \ media,
medt I media.
costi I complessita
di intercon
nesstone
tipo"di -
-,
topologia.
I
velOCIta
Imax.num.
supporta
/band. staziani
aceettate
, ,
oppinO Ilius.stella.. I
ca.. 4 I n.5fJbDS I 100
telefonico
cavo
I
ca. 10
I
lOMbps
I
1000
baseband
cava coassiaIe I bus
I
ca.
broadband
ra. attica. I steUa..a.oeUo I ca.
E.5.3 Tecniche di accesso .
716 Appendice E
I
I
I
I
I
I
I
Consentono aile vane stazione d.i una LAN di aceedere al mezzo trasmissivo, al fine di
realizzare una corretta trasmissione delllinformazione. Le tecniche di accesso possono
essere raggruppate in 2 ue classi principali:
1. Accesso di tipo casuale. Ogni stazione puo iniziare la trasmissione in qualsiasi
momento.
2. Accesso di tipo ordinato. Ogni stazione puo iniziare la trasmissione solo in istanti
di tempo predeterminati.
Un esempio d.i tecnica d.i accesso casuale e rappresentato dal metodo CSMA
(CarnerSen"e Multiple Acces,,). Questo metodo prevede l'invio di una portante suI
mezzo fisico me subisce una quando.e presente del traffico sulla rete;
una stazione in procinto di trasmettere puo dunque stabilire dall'ascolto della por-
taote se il canale e occupato 0 meno. Usando questa procedura pero non si esclude
completamente la probabilita che si verifichino' collisioni
l
ovvero che due stazioni tras-
mettano contemporaneamente. Infatti, a causa dei Iitardi di propagazione sulla lineal
pub succedere che 180 modulazione della portante da parte di una stazione trasmit-
tente non sia ancora giunta a una seconda stazione pronta a trasmettere
l
che quindi
comincia a sua volta la traamissione. Per ovviare il questa problema viene usata una
variante del metodo CSMA nota can il nome di CSMAjCD (CSMA Collision'Detec-
tion) tramite la quale Ie stazioni cbe rilevano una collisione (comparando i livelli del
segnale in emissione e del segnale sulla linea) bloccano Ia propria trasmissione, che
viene riprogrammata dopo un intervallo di tempo casuale. I protocolli di tipo CSMA
e CSMAjCD sana utilizzati sia su sisterni baseband ehe broadband.
Un esempio di tecnica di acces$o ordinato einvece it metodo token passing in
cui una stazione eabilitata a trasmettere se rUeva sulla linea la presenza di un token
liberol costituito da una speciale configurazione di bit. Quando cia avviene
l
la sta-
zione acquisisce il controllo della linea immettendovi il pacchetto di dati) comprensivo
deJPindirizzo del destinatario e il token occupatoj le successive stazioni fauna dunque
transitare questo pacehetto fino alia destinazione. In un sistema ehe adotta il to-
ken passing non esiste quindi il problema della contesa del mezzo trasmissiva e non
possono avvenire collisioni.
,
"

Ll>n9".:uo irl boyle


Figura E.33 Formato di un messaggio Ethernet.
Dal punto di vista elettrico 10 standard 802.3 prevede una Manchester
in banda base. La velocita di trasmissione richiede I'uso di componenti veloci (TTL
o EeL) per la modulazione e 1a seria1izzazione. Inizialmente Ethernet faceva esclu-
sivamente usa di un cavo coassiale tipo CATV (COf1.lmunity Antenna TV), ormai
praticamente scomparso. Molto diffuso eit pili cava RG58, Ie cui attesta-
zioni aono realizzate con connettori BNC. Negli annj recenti si evista l'espansione di
Ethernet su doppino. .

\-

\-
--
\-
\.
I
.
I

You might also like