A-PDF Page Cut DEMO: Purchase from www.A-PDF.com to remove the watermark
:'I
\
1
,I
.
!
'~
i
." j'I"
11
iI
~1
•
! \
"
"• • ,'I
"
"
I
•
II
,
.,
I !
,I:
"
I
\
,c,
!• I
~'I .:
, .'..,
,
! I;
,
I
•
! ;1
'.il'
l
"
." •
•
1
I, , ,
J;1, •
"
,jl
,
\
·
"
,
I I
~I
::
I
,
1 ."
J
I,
~
-
1.,
I'
~I
Indice generale
" I",
-;
..
~
-
1'
1
"•
~
"I'
•
I
,......
1 1.1
:
,
1.2
I;' '
!
' l
J1,
1.3
"
1.4
I
,
1.5 1.6 1.7 1.8 1.9
VlI
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
1 1 3
~
1.10
Esercizi
.L
Elementi architetturali di base
2.1
Struttura dei calcolatori
II
2.L1 D sistema CPU·memoria La CPU Primo esame del funzionamento della CPU
2.3
..
,
Prefazione
2.3.1
2..3...2
~
...
Esecuzione di un'istruzione Due approcci per la progettazione dell1unita di cantralla
Cablata 0 microprogrammata?
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
-..•
-.."
...
••
.-
.-.
•
,
xii
Indice generate
..
'.
,\ -
2.4
I
.25
I'2.4 26 I
\ 2.8
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 73 Indirizzamento dei dati 2.7.4 lndirizzamento nei trasferimenti del contrallo Esercizi
\
111).3
2
lJ. 13 .4 3.5_ )3.6
If \8
I \.9 .L
D.
~
I
La memoria principale Le memorie RAM 3.1.1 Parametri di valutazione Le memorie statiche Un esempio di memoria statica 3.2.1 Le memorie dinamiche ~ Un esempio di memoria DRAM 3.3.2 L'interfacciamento COD il processore n dimensionamento 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 ~a 3.7.3 ~mpio 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 3.8.4 Moduli commerciali 3.8.5 Cantralla di errore Esercizi 11 sottosistema di ingresso/ uscita Elementi di base del sattosistema di ingresso/uscita Gestione a centralla di programma n sattoprogramma eli gestione 4.2.1
1 58 59 61 62 62 64 65
@ C8ID 70 74 74
77 77 78 78 79 81 83 84 85 86 88 89 89 92 93 93 95 96 96 97
.
·i•.
':', I."
i.I ';1
"
'I·.
,
it.,
:~I', .
,~, ,·1· , ' '
~.
,,'
!I
..• .)
"I' "." :
.'
1,"
..
"~~
. ,..I ·.
:.;..
't ,
":11''
,
\1
i
J
,. ·.r, o .'.'
, '.'"I
97 98 99 100
•I
101
..I !;
')1
,>
·,1
101 106 106
I',
·,
..,
1
,
.
.
.
,
lndice genera.le
XlII
4.3 .-4.4
Gestione sotto cantrollo di interruzione 108 Esempia semplificata di sistema di interruzione 108 J 4.4.1 Esempio di routine d~ servizia 109 Le interruzioni non mascherabili 4.4.2 113 4.5 lnterruzione da parte di pili periferiche 114 4.5.1 Discriminazione da programma 114 4.6 Interruzioni vettorizzate 116 4.6.1 Linee di richiesta indipendenti 116 4.6.2 Vettorizzazione esterna 118 4.7 Interruzioni' annidate 122 4.8 Interruzioni vettorizzate con daisy chain 123 4.8.1 Daisy chain asincrona 123 4.8.2 Daisy chain sincrona 127 4.9 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 4.10 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 4.11 Un esempio di DMAC: il dispositivo ·Intel 8237 141 . 142 \ 4.11.1 Funzionamento 4.12 Esercizi 144
-
5 5.1 5.2 5.3
J 5.4
5.5
5.6 5.7
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 164 Sviluppo di CPUI 5.4.1 Sezione di prelievo delle istruzioni 166 5.4.2 Sezione di decodifica delPistruzione ... 1~8 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
I xiv
5.8 5.9 5.10 5.11
5.12 6
•
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 JQ Introduzione .6.2 Prestazioni 6.2.1 Indici delle prestazioni ~ Considerazioni 6.3 Alcune estensioni al repertorio delle istruzioni .fiA:) 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 6.6 LJunita di controllo 6.6.1 Realizzazione dell'unita di controllo 6.7 Conflitti Ji.L.l Conflitti strutturali 6.8 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 ,.tj.~ Conllitti di controllo 6.9.1 Conllitti per salti (ineondizionati) 6.9.2 Confiitti per Ie diramazioni .~
-~
i
Indice generate
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
J
,•
,
"
,
.
.
J
.
.I ,
"
!
:.
{
I
if
.,
1",
t
Ji
,
••
•
I
..I
,jf
"1•
,;1'
.i, ,i
.,
J,
Iodice generate
1
xv
6.9.3 La soluzione software: Ie diramazioni ritardate 6.10 Predizione dinamica delle diramazioni 6.10.1 Tabeila di predizione delle diramazioni 6.10.2 Statistics. di esecuzione e accuratezza della predizione 6.11 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 6.12 Predittore adattativo a due livelli 6.12.1 Realizzazioni alternative del predittore a due livelli 6.13 Le interruzioni 6.13.1 n concetto di interruzione precisa . 6.13.2 Interruzioni esterne 6.14 Eccezioni 6.14.1 Eccezioni e interruzioni esterne 6.15 Esercizi
25" ]
7 -7.1
28: ( 28: , 285
-
7.2
-'I 1
ii
7.3
.I'
7.4
"I
!I
.1
{'
La memoria cache , Funzionarnento della memoria cache 7.1~ 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 ~
7.5
7.6
256
25" 25: 25, 261 26:
I I
264 266 26 \ 271 270 273 27: ] 27! 279
7
28 28,
\
28~
291 29: I 29. \ 29~ 1
298 30r 30:
I
30~
303 30: I 30: , 306 307 30' 30; 309
I
I
311 31 31: 316
J
0
31. 32'
)
1~
Indice generale 0.'
8
\.D Jll
I I 8.3
-
\M 8.5 \ 8.6
i
18.7
I ] 88
) 8.9
1 8.10
I 18.11 9 !9.1
1
19.2
9.3
l
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 n TLB 8.7.3 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 Descri~~ori 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
,.
331 331 334 337 338 340 343 346 347 347 353 355 357
';'
"-/
,'I.
~,
~.
.JI ,"
.,
~I.-
il
357 357 359 362 363 364 365
3.71 372 375 376 377 377 377
381 384 385 386 388
•.
',
,
.:1'
.;Il
.,
oil••-:j, "~
,", ,;~
·~I' , ·1:
'i;
" .\1, .j:
. . ~I,
"1 .\. .)1: ._,
']I;
(I,
;:1 •
I
390 392 392
396
, ,
t:
,,
399
399 400 401
403 404 405
ii'
Indice generale.
9.4 9.5
9.6
9.7
9.8
-lQ.J.. 10
102 10.3
10.4 10.5 10.6
11 11.1 11.2
11.3
11.4 11.5
La gestione dei processi in modo protetto 9.4.1 n segrnento di stato di un proces~o 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
XYli
407 408 410 412 412 413
414 415
417 417 417 420 421 421 422 423 423
Esecuzione fuori ardine 425 Pipeline con unita funzionali multiciclo 425 Esecuzione fuori ordine 427 10.2.1 Gestione delle prenotazioni del bus dei risultati 429 Completamento in ordine 432 10.3.1 Completamento in ordine rispetto ai registri 432 10.3.2 Completamento in ordine rispetto alIa memoria 433 • Metoda del buffer di riordinamento 434 10.4.1 Uso di ROB e di perco,si di bypa.ss 438 Metodo dell'history buffer 439 Gestione dei conflitti di controllo in pipeline ,441 con unita funzionali multiciclo 10.6.1 Stato coerente nel caso del completamento in ordine delle istruzioni442 443 10.6.2 Ripristino della stato coerente in presenza ill ROB 10.6.3 Ripristino dello stato coerente con history buffer 444
BUS di sistema 447 Un po' di storia 447 .., La standardizzazione 452 11.2.1 Operaziani suI bus 455 Allocazione del bus 458 11.3.1 Arbitraggio distribuito Con schema daisy chain 459 11.3.2 Arbitraggio centralizzato con schema parallelo' 462 11.3.3 Arbitraggio distribuito con schema parallelo 463 11.3.4 Arbitraggio centralizzato con schema daisy chain 465 Esempio di progetto della logica di arbitraggio distribuita in daisy chain 466 Organizzazione dei moderp.i calcolatori personali 471 11.5.1 Il chipset 474 11.5.2 . Chipset per la ela.sse Pentium 475
xviii
Indice generale
11.5.3 Chipset per la classe Pentium 1I1 11.6 IT bus SCSI 11.6.1 Principi eli fUnzlonamento 11.6.2 I segnali SCSI 11.6.3 FMi del bus 11.6.4 Un esempio di operazione suI bus SCSI 11.6.5 Conclusioni 11.7 IT bus PCI 11.7.1 Principi .di funzionamento 11. 7.2 I segnali del PCI bu, 11.7.3 Tran~azioni di trasferimento dati 11.7.4 Arbitraggio 11.7.5 Prestazioni 11.7.6 Blocco delle riaorse 11.8 IT bus USB 11.8.1 Caratteristicbe generali 11.8.2 Struttura fisica 11.8.3 Organizzazion·e a livelli 11.8.4 Host 11.8.5 Periferiche 11.8.6 Hub 11.8.7 Modella dei Busai informativi 11.8.8 n cavo 11.8.9 Riconoscimento e configurazione delle periferiche, 11.8.10 Trasferimento di dati 11.8.11 n protocollo e U formate dei pacchetti A
A.1 A.2
A.3 A.4
Sistemi DigitaJi • Proprieta dell'algebra delle reti Forme canoniche A.2.1 Prima forma canonica A.2.2 Secanda forma canonica Minimizzazione . Altri operatori e altri tipi di porta A.4.1 A.4.2 A.4.3 A.4.4
A.5
A7 A.8
Una tecnica grafica per la trasformazione
XORe NXOR
Esempi di reti combinatorie A.5.1 n cantrollo di parita.
A.5.2 A.6
NAND e NOR Reti can sale porte NAND a 'ole porte NOR
Comparatore digitale
Unita aritmeticbe A.6.1 Somma Con calcolo anticip~to del riporto A.6.2 Ancora sui sommatore completo Unita aritmetiche e logiche Reti sequenziali A.8.1 Modellogenerale A.82 Rappresentazione delle funzioni c,li stato e uscita
477 479 479 481 482 485 488 488 488 490 49.1 495 497 498 501 501 502 503
..
-
,
<
· "
l
4
)
,•
,..".,I
505
,r"
505 506 506 508 511 512 513 517 517 519 519 520 521 522 522 524 524 525 526 526 528 530 530 532 533 536 536 538
".
1 .,
•
•
-i
I
•;
•
".. 0
q •
,.i
•·• '.
,
, .. ;
·
,· ;
,
.,
.. j•
,
•
•
, 1• '.
"
•
,
·
"
,I
,i'
lndice generale
XIX
1
,.1
,
Sincronizzazione A.IO Reti sequenziali sincrone
A.9
.....
·,., . ., '
A.1O.1 A.10.2 A.10.3
-1 :
' .
'' : .-'
..,'.
Altre considerazioni sui flip-aop Madella dj Mealy e madelia di Moore
A.lI Esempi di analisi e progetto di reti sequenziali A.1Ll Esempio di progetto: generazione di un 'egnale di WAIT A.11.2 Esempio di progetto: rete per Fadattamento
•
• ••
..'
,'
'.
Flip-flop Master-Slave
• I ",
,
A.12 Esercizi
·I • ·
B B.1 B·.2
della temporizzazione dei segnali
l
4
)
,•
,,..
I: . ,
"r , ,
.
1,
•
•
, B.3 B.4
I.
•
• '.
i.
B.5 B6
,
••
,
"
L'architettura 8086 Un pO' di storia Architettura di base: il micro 8086 B.2.1 n modella eli programmazione B.2.2 Organizzazione della memoria B.2.3 Accesso alia memoria B.2.4 Osservazioni sull'organizzazione di memoria dell'8086 B.2.5 Struttura interna del microprocessore 8086 . B.2.6 Cieli' di bus B.2.7 Modalita di funzionamento B.2.8 La fase di partenza n repertorio delle istruzioni Modalita di indirizzamento B.4.1 Indirizzamento degli operandi 8.4.2 lndirizzamento nei salti Formati delle istruzioni , II coprocessare 8087 -B,6.1 Madello di programmazione esteao B,6.2 Tipi di dati B.6.3 Collegamento can la CPU 8086/8088 B.6.4 Coordinamento con la CPU: aspetti generali B.6.5 Coordinamento coo la CPU, il controllo del bus B.6.6 Emulazione del coprocessore IT microprocessore 80286 (286) B.7.1 Modello di progranimazione B.7.2 La struttura interna B.7.3 Modo protetto IT microprocessore 80386 (386) B,8.1 Emulazione ~086 n microprocessore 80486 (486) 8.9.1 . La cache interna B.9.2 Vevoluzione verso frequenze pili elevate II Pentium B.lO.l La struttura interna B.1O.2 L'unita per la predizione dei salti condizionati B.1O.3 L'unita per il calcolo in virgola mobile B.10.4 Le due cache interne
B.7
B,8 B:9
B.lO
540 542 543 545 546 549 549 551 555 559 562 564 565 568 571 572 573 575 576 576 577 578 578 580 581 584 584 586 586 587 591 593 594 595 596 597 597 598 600 600 601 602 602 605 609 609
I I \
I l I I I
•
I \
1
J
J
xx
."II
Indice generale
1 B.ll
\ I
B.12
II
B.13
l
B.14 B.15 B.16
•
C I C.1
,
I I
C.2
n'Pentium con
tecDologia MMX B.1Ll L'estensiooe MMX 8.11.2 La struttura interna Pentium 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
n
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
C.3 C.4 C.5
\ C6
)gl \ D.2 ,
I D,3 I
I
I
I D .4
I I
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 n sistema macro del MASM D.4.4
610 610
·'i1 '''
\'~.1JI,
611 611 613 618 619 620
••I
622 626
·,"I' ,
b
II
I']1.
,I,
e .'
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
t1 ~
.
j,
J: 'II, ~1!
-
l1 .,
,j 1
1
i"
I
I' I
I'
,
"
1 til" 11 '"
,., 'i,~1
, ,..
,
, " ,
·
1
,.', "
Indice generale
D.5 D.6
D.7 D.8
E E.l
E.2 E.3
E.4
E.5
Un esempio di programma assembler It processo di traduzione D.6.1 Assemblatore: primo passo D.6.2 Assemblatore: secondo passe Collegamento e caricarnento D.7.! Caricamento in memoria ed esecuzione Esercizi
XXI
673 678 681 683 684 685 685
Comunicazione tra Calcolatori 689 lotroduziooe 689 E.l.l n mezzo trasmissivo 690 II modello 1S0/0S1 691 E.2.1 II Protocollo TCP /IP 692 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 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: P8251A 710 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
Bib~iografia
719
v
;
..,- ".,. ·, :\
"
1
,
"-
n, 1, "
,
"
,
:' ~.-
,:ll' :;,~
,"~'
'II,', "
Introduzione
'
jl "
I 1
'I'',", ," "
\
....n
J
;\',. 1-' ' '
_lOll,
1
'~}ii
dl
l
',1
,:'~ , "II' , .-,~
:1
""I' ",'"
Questa capitola e introduttivo aile tematiche dellibro. Dopa Un breve resaconto storiC9 s)Jll'evoluzione dei calcolatori elettronici, vengono richiamati alcuni concetti di carattere 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 predisposta !'Appendice A, alIa quale si fa spesso riferimento.
)
! ~
,'}
I '~I
\
",~
JI ""
'
• ;11 ','
"I
,.j) : '°1,
'4'' ,
, 'II'
'1J", " !~ :
,~'il
-·if '-,;,~
-"
ill
,::j, :'-~ "
1.1 Qualche cenno storico
"I '-I
,,',; ._~:
3~,,,I "'.~
,"
"
La storia dell'evoluzione dei caicolatori elettronici costituisce da sola materiale suffiCiente 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 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 e J. Mauchly, dell'Universita della Pennsylvania 1 . La macchina venne denominata ENIAC per Electronic Numerical Integrator and Calculator e Ia sua costruzione 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 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;
I I
I I J
\
J
I
! ,, I
, "
1Nel 1973 un giudice·federa.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.
)
.;'!, "
2
Capitolo 1
J.J
,,jl,.,.
1.
..
,.",
suI pannello di cantrollo, non dissimile cia queUo di una vecchia centralina telefonica. I dati, venivano introdotti attraverso schede perlorate2 . 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 I soluzione divento la norma e, di fatto, distingue quelli che oggi chiamiamo calcolatori elettronici cia precedenti macchine·dedicate a1 calcola. Von Neuman passe (llia storia3 . 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 progetto 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 realizz~ione, nel sensa che l'illM aveva definito un 'organizzazione di macchina die sarebbe stata coroune a tutta una famiglia d.i calcolatori. Questi avrebbero potuto ~vere dimensioni, capacita e potenzialita diverse, avrebbero potuto essere realizzati con tecnologie diverse, 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 b~ca, ministero 0 grande ) impresa. La necessita. di salvaguardare questa patrhnonio e stata 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 supercalcolatore. 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-
1
\
I
I
)
••"
,,
.;\
::1'
i1;:;1 ,,:' ' .. '
'~I
" :,tl
'"r"
":~I
"'
'Ii:
~1
,:;,1 ,
"',"I'..~, "c;.'!
,"
'If,
"
"I·,
"
"
I. ,I.
," 'F
., 'JI' '~: "\' ) 'ii, ,
",.'•,
'.,,
,
..
": ,. jl~ I ~J'I
,"
!.r.
.,
,I,~
.,.
1
J '~.' "
•• .', (
'j'l
••"
)
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. 3Hennessy e Patterson [HP93} espongono una serie di argomenti in base ai quali la fama del signor Von Neuman e da considerarsi parzialmente usurpata e che ad altri avrebbe dovuto sorridere 1a gloria.
~.,
.,:
•
"
.J
1
Introduzione
3
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 l'impi~go 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 calcolatori (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 attorno 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 scientifico, accademico e industriale4 . 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'. •
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" cornposta 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 microprocessori hanno rappresentato il punto di avolta nell'uso del calcolatore: da macchina gigante, utilizzata solo da pochi 30ddetti ai lavori, il calcolatore elettronico e diventato 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 progettazione: 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 complesse. 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 interno c'era una ROM piuttosto grande, e pensarono che la tecnologia fosse matura per sviluppare in forma integrata un processore capa.ce di interpretare s~quenze di 4Per anni e stato costume confrontare con iI Vax Ie prestazioni di nuove m8.C;Chine immesse sui mercato. :lUna d~ina 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.
-
'-
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 neW Aprile del 1972} nella forma di un integrato a 18 piedini7 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 microprocessore 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 tecnologia 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'esecuzione 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.tettutale - 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 integrato 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 preseUn .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, a1fem~ 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 In·line 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.
,.~ ,.:" · .". ,".. ...
I
,
,',
."·l . ' ~.
:. [j;
'fj.
Intro.duzione
e,
5
]
.. ; .
<,"' ,:..~I. , ,
'"
i 'j
~I
·~l.
.'
.,.,,
·,
l ,I
·I '-7,~
:.:'i.' 'I'f
. -I.,1 ."' :j •,.•
':J:'
'
.~#
~
:~ , ''iI ·..,:', :Ifi~' ~l,
·.""
'·nal h . "1 ·f ·'r
"
~'"i
J' ·l ..
1
.'. '
'j 'J.,I ;1"I
",'
"
\1
.j', ..
,~
.•,,
·,
I
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 esterno di 16 bit e la possibilita di indirizzate un spazio eli memoria immenso. Bisogna 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 lultime. Anche il 68000 aveva caratteristiche architetturali pili convincenti delP8086: presentava anzitutto 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. n 68000 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 indirizza~e almena 1 Mbyte di memoria: 1'8088. Quello fu il punto.di svolta dell'evoluzione del mondo dell'informatica. L'architettur& Intel divenne 10 standard eli fatto nel mondo dei PC, la Microsoft stabilile basi per eliventare la maggior compagnia di software del pianeta9 .
I \
]
I
n 68000 ebbe
ottima accoglienza da parte dei costruttori delle c08iddette workstation, ovver? sistemi ~divi~uali?~ c~attere profes~ional~, allora molto pill a~ati dei calcolaton perso~ah, 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 dati e indirizzi non erano condivisi come Quest'ultimo (l'integrato MC68000 aveva 64 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 Microsystems (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 industriale 0 come embedded computer, in quei casi, come nelle stampanti postscript in cui si richiedevano buone capacita elaborative. La fo~una della famiglia MC68000 cominced. 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 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 componenti di corredo avanzati, come gestori di memoria (MMU, Memory Manage. ment Unit), unita aritmetiche in virgola mobile (FPU, Floating Point Unit) e control-
,
!
I ~
\
I
I \
J
I
"1
I
, "
~I
,11
"II ~:
9Di queati aviluppi 5i parla con maggiori dettagli nell'Appendice apPOl3itamente dedicata all'architettura della fa:migJia x86.
J
,
." . -."
6
...
Capitolo 1
'." ,',"
.'
" \1
1
lori di accesso alia memoria (DMA, Direct Memory Access). n maggior problema the 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 dissipazione (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. n dispositivo 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 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.000··transistori 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. 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 ~ote 1a storia the abbiamo raccontato.
1
I
I
I
IJ
"."
I, ,.
, ,~
.'·~'l·.,. .
. . .
"
.,'
111
.11 ."
':11. )1, ,'0.
, '"
il ..,'110 ,;'in · "
il i, ',i,""
:l!j' ."
'I .-ott. "·:ir·" .~," .
,
~-:r
+ .,. ""t, .::! .
II-
':.~ "
,.t-
;11
•·'1~1.
11 ";j" ; ~'
·,1
'.•
,'"
\ I microprocessori di cui si
e parlato 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. 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 1 avanti nel libro, la discussione e il confronto tra Ie due differenti filosofie di progetto
l
,.
.:l1 " }Jj ... ~~
'''lI
1.1.2 Le architetture RlSC
. ','
AI, ~I'
,
"I',I ..,,'I·:
1, .
1
•
il
'.
, Introduzione
7
.
Caratteristiche principa,j~ alcuni microprocessori
Nome
4004 .-B008 8080 6800 TMS 1000 PACE 1802 8048 8086 8088 68020 Z80000 ., .80386 .. 68030 .. 80486 68040
,
'Pentium
~ruttore
Liarat~ica
National
Prima CPU a 16 bit single chip (1974)
RCA
Prima CPU in tecnologia CMOS (1974)
Intel Intel Intel Motorola Zilog Intel Motorola Intel Motorola Intel
Primo microcalcolatore a 8 bit single chip (1976) Prima CPU a indirizzare oltre 64 kbyte (1978) Prima CPU a 8 bit con architett. interna a 16 bit (1979) Prima CPU integrata con una cache istruzioni (1984) CPU integrata con cache dati e istruzioni (1985) CPU integrata can la MMU (1986) CPU integrata con cache separate e MMU (1987) CPU integrata con cache, MMU e FPU (1989)
lntel Intel lotel
Prim.' U (1971) Prima CPU. 8 bit (1972) Prima CPU a 8 bit. canale n (1974) Motorola Prim. CPU con alimentazione ,ingol. (5V) (1974) Texas Instr. II piu venduto microcontrollore a 4 bit (1974)
•
CPU con cache, MMU ed FPU (1989) •. CPU con architettura superscalare (1993)
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 impiegate dalla Sun Microsystem nei propri calcolatori. 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
epu
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 g~n~ris, coneepita per
essere un supercomputer.
..
....':O 8
,.
Capitola 1
:,4
~~
·.ii
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 e riuscito 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 scienti£che e come sostitutiva di una precedente CPU in una linea di calco1atori di fascia intermedia denominata AS / 400.
jl.,
.: ;
.}
·,·
~I1
.~j
· tr
1i "\1 ':. ...; ...: ... ')
'~
.,,
.'
;~:;
,
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.
.,~ "4 .';,
"~I· ,
~
..""
i
· ·~
::~.
1.2.1 Sistemi di numerazione
),~,
.~
Numero e un concetto matematico astratto per 1a descrizione quantitativa degli oggetti cantenuti in un dato insieme. Un sistema di nurnerazione e un insieme di s~mboli e regale atti a rappresentare i numeri. Le due principali categorie di sistemi di numerazione sono la posizionale e l'additiva (quella llsata dagli antichi Romani). Alta prima categoria appartiene il consueto sistema di numerazione decimale l l : Prendiamo il numero 1475. Esso viene interpretato come: 1475 = 1 x 10'
+4 X
10'
+7 X
10
1
+5 x
'r" 0.']
~·j~ ~\1 .....
,-,',,:''1
,X;::
'~';ij,",,
,Ji.
~
,
10°
~:~
,.J
.• '~ , .:,p
,.~
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:
,
.~.
~'
;-.,;
;,;1
,,1:.
:,,
"~j
bn - 1bn _ 2 . , . b1bo
.\0;
·J
.. ":
can bi E
fJ
:"
si interpreta come:
bn _ 1 x B n -
I
+ bn _ 2 x B n - 2 + ... + bI
,.;
~,
B I + bo x EO
"",· "
Consideriamo ora i casi di B uguale , rispettivamente, a 8, 16 e 2,
-Il.:,
X
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. .
~i
:1
.. . '.,',.
,~
" .....' ..,-,
"~ ·"d"
....
OW'
', .
]
.~'
4:
lntroduzione
.
~
9
i•.
l', .
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:
;
}
·~l:
I'
j .
1r
417 = 4 X 8'
1i .'1
:1
)
,.,,
'.
,
~
8° = 4 x 64 + 1 x 8 + 7 x 1 = 271
Llapparente incongruenza ~eriva cial fatto che normalmente, quando si vede un numeroo scritto, se ne da. ~n'interpretazione decimale. Per evitare equivoci l l'uguaglianza andrebbe scritta come:
;
:;
+ 1 X 81 + 7 x
J
"
417s = 271 10
..
n concetto'di numero e puramente astratto, 417 e 271 sono 1a rappresentazione
\1' ' 4 ..
~
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 prendono 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
,
I;
,
~.
"' .
it
2 x 16
~1·
,
"]
1 x 2' + 0 X 2' + 0
~I'1. "
,'1''j ,
::I
.
~
i,
\
X
2' + 1 X 2
1
+ 1 x 2°
I , "
34
."
~
'l
+ 2 x16° =
Can B = 2 (sistema binarin) si hanna solo due simboli diversi: 0 eLLa stringa 10011, corrisponde al numero
~l;. ..
", j
1
I I
= 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 e importante perche nei calco1atori elettronici l'informazione e rappresentata solo attraverso due simboli {O, I}. Le numerazioni in base· 16 e in base 8 interess~no perche 1a trasformazione tra queste basi e 1a base.2 (e viceversa) e immediata 12 .
I \
( \
~
J
.'• ~I , p.,
~,
.'
'
;
;1
11:.it
,,,j
j
;
JI
":1'
"
-"ase 10 lfase 2 0 O. 1 1 2 10 3 11 4 100 5 101 6 110 7 111 B 1000
~ase
8, Base 16
1
.i;ase 10 9
0 1 2 3 4 5 6
5 6
7
7
12 13 14 15 16
B
17
10
0 1 2 3 4
,
. 10 II
;,1'
,I
,,
"
ll',!
Base 2 1001 1010 1011 1100 1101 1110 1111 10000 10001
B.... B
11 12 13 14 15 16 17
20 21
Base 16 9 A B
C D E F 10 11
I I J
Tabella 1.2 I primi ]8 numeri nelle basi 10 1 2, 8 e 16,
i
J
11',
~
,~
.,.
"
~yO d '. "
,
12Nel seguito la numerazione in base 8 Don viene piu considerata, anche perche ormai si fa praticamente usa solo della numerazione in base 16.
)
",
.'\:
, c'
1
10
': .
'j"
Capitolo 1
" .i " .... :,~: . '
",
,','
J.j
..J<,
1.2.2 Conversione di base
..,-
'~ ,
(
\
.. "
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 e la 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:
II \
IJLB07
)
I
I , 1 ,, I
\
) \
I I
)
I
bn -
';:i: '::l '. ,
,·u ~~." ):1 ,
;'i::1. ,," ',,!
'J! -:?I
" .
!J -,~,
, ,',.
;'".f
=00011100110100000111 2
"
,
':- iI.
'... :-~
Formalmente quest.a proprieta si dimostra Del modo seguente. Sia data.la stringa: , 1bn _2 ... b1bo in base Bot I cui corrisponrle il numero
':~
"
'.'
bn_1(B')"-1 + bn_,(B')n-21 +'" + b,(B')' + bo(B')O dove ogni bi
e presQ da {O,l,... lEI:. -
I} ed
(1.1)
-
e rappresentato in base B come
b'\, k-1b \, k-2 '" b'0= ,+ b1, oB o , ' b' , '_lB'-l + b'" ,_,B'-2 +" dove ogni bi,; e presQ da {DIl"" ,B - I}. Sostituendo in 1.1 a cia.scun bi 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 + ' , "+ bn_2,oBO)(B')n-' + [bo,'_lB'-l + bo,'_2B'-2 +'" ,+ bo,oBO](B')O = ,
bn-I,k-I B kn-I + bn-l,k-2 B kn.-
2
""
"
. .,;.,
+ ... +
bO,k_1B'-1 + bO,'_2Bk-2 +, ,, + bo,oBo)(B')O
"?
che corrisponde alia stringa bn-t,k-lbn-l,k_2 ... bn - I ,obn - 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, 22 + 0, 2'
+I, 2° = 64 + 8 + 4 + 1 = 77
1 x
2n -
1
+ bn _ 2
x
2n - 2 + ...
+ bl
X
21
+ bo x
II'
I
"
.;,
,
;1,
20
Se si divide it polinomio per 2 si ottiene bo come resta e bn _ 1 x 2n - 2 + bn _ 2 x 2n-3 + + ... +b 1 come Quoziente. Dividendo il Quoziente per 2 si ottiene bl come resta e bn _ 1 x 2n - 3 + bn - 2 x 2n - 4 + ... + b2 . Si itera il procedirnento fino a cite l'ultimo quoziente attenuto non piu 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 (17,1), (8,1), (4,0), (2,0), (1,0) (0,1); dun que la rappresentazione binaria del nurnero 35 (decimate) e: 100011.
<;
1 '"
" 't '
e
e:
",
';;
10
La conversione a binario del numero decimale N richiede che si trovi la stringa di n cme binarie bn - t bn _ 2 . . . btbo con bi = 0,1, tale per cui
N ::;;: bn -
=
,(,~ ,~,
" ,
,
,'~
..
:,
",
1
"'""'M
.,i~
'~
lntroduzione
",
'
11
1.2,3 Aritmetica binaria
,.
Costruire un'aritmetica binaria ricbiede che vengano scalati sulFinsieme {OIl} i familiari concetti dell'aritmetica decimale. In particolare si possono costruire Ie tabelline delle varie operaziani aritmetiche per l~ rappresentazione binaria. In Tabella 1.3 viene riportata la tabellina della somma e un esempio di samm~ di due numerj. La somma 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 operazloni. 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.
,
".
o
1
o iI[Tl
1~,
•
+
1100,1011 110 1110 1 0011 1001
Tabella 1.3 Tabellina. della somma. aritmetica ed esempio di somma tra. due numeri in aritmetica binaria. Nella tabellina Ie due cifre 10 nell'angolo in basso a destra indicano che la somma di 1 can 1 da riporto.
>..
0
1
nHE
,'
"'~.
,
10110 101 10110 00000 10110 1101110
x
,
Tabella 1.4 Tabellina del pcodotto. It prodotto tra due uUIneri in base 2 viene calcolato col medesimo procedimento seguito in aritmetica decima.le.
1.2.4 Numeri negativi Consideriamo un vettore di n eifre binarie ,
B = bn _ 1bn _ 2 •..•... b1bo '
con bi E {OIl}. Tale vettore rappresenta 2n numeri diversi, per esempio i 2n interi n positivi compresi tra 0 e 2 - 1. Occarre stabilire una qualche convenzione per rappresentare i numeri negativi. Di norma se il bit pili a sinistr·a e 1, aHora il numero viene interpretato come negativo. Sono possibiti tee convenzioni: '
"'~
'.V 12
i·
Capitolo 1
, :.~ n' '.'.
..";'
-
.".,
,."
Modulo e Segno. In questo cas~ si passa da valore positivo a negativD semplice~ mente cambiando da 0 a 1 it bit piu significativo.
-t
:::I"
..,~
;\
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) 11 1 cia 0 a 2 - - 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 e quella 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" = 3010 ) e b = 00010110(= 16 16 = 22 10 ), n complemento a 2 di b si ottiene Corne~ 00010110 11101001 11101010
numero dato (16, = 22.) complemento a. 1 complemento a 2
"':
.,,
, '·
:~
'~,'1
.,
--
"~l
..'....
,',,,
..,
:!)~! 'J
'"'.. ;: .'.. ,
.~f.oj
1_
\~S
• "
La differenza a - b si ottieoe sommando:
'..lll
~
00011110 11101010 00001000
+
,I ,
(30) (-22)
~"
.• 11
~t
.,;"
(8)
"~i''
';I1_\
,'-:;
1.2.5 Numeri frazionari
,,<
'I
"J
i~
Fino a questa punto abbiamo considerato solo numeri interi. La stringa: ,b_ 1 b_ 2
...
l
... ~I,
b_ m
si interpreta come:
L,B- 1 +
+LmB- m
Esempio 1
n numero binario 1 .2-
1
.101 corrisponde a1 numero decimale:
+ 0 . r' + 1 . 2- 3 = ~ + ~
= 0,5
+ 0,125 = •
0,625
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 F = L1L,··· L
7"~~I ::'
"
.~
;.'a
.' ,1
,
~"
,;.!
',\~
m
IJ!
-
,.
"~-
.. -.~~,.
.
.",.;.
'oJ..'."'{"'.' c' J ; ' . '
V '... ,..y-.,
· )'
,
~,
',
.'.
Introduzione
..;, '.
13
"l,
"
tt
Osservando che b_ 1
:1" " t .
~
\'",
:1 "·11,
,,'
..
si deduce che la: ricerca dei coefficienti bi richiede un processo di successive moltipli~ - cazioni della parte frazionaria con estrazione 'della parte intera. n processo termina quando la parte frazionaria risulta 0 (oppure non termina se il OUIDero e periodical.
~I
11
,
~
.
-~
l
..., 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 x 2 = 0,250 .... 0 0,25 x 2 = 0,5 -> 0 0,5x2=1,0 ->1 Si ba dunque (0,78125ho = (0,11001),
,
..
'
..
! ' .!'
:~I.
,
j'I' .',.
o)
_
e la parte intera del prodotto 2X F = L, + L, X 2 + .. ·L m· X T(m-l)
..
",
'-
Sl
•
l,..
~.
'
",
1
_
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.
.'
1.2.6 Numeri in virgola mobile .
'''I.
~
I~"\ I
I
"
~:
l
,
I!
~
a.
.•
F'requentemente, e, in modo particolare nei problemi di calcolo tecnico e scientifico, si ricorre a rappresentazioni normalizzate di dat~ 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. EsemDio 1 - 1'00,0000015 puo essere scritto come Tale convenzione non elegata . ':~"al1a 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: 2 3·
/\ ,YIY2Y3 . .. Yk
,
]
I l I
I ) ,
X b±41 o i ... a"
11,
!
dove bela base del sistema di numerazione, sono cifre della stesso sistema.
!
II numero X1X2X3··· Xh,Y1Y2Y3 ... 11k vieoe chiamato mantissa, mentre il numero a a1 2··. an viene chiamato esponente 0 caratteristica.
~
I
•
15xlO- 7 .
± ...1 .;,.
•
I
n numero 127000000 puo essere scritto nella forma 127x 106 ) mentre il nume-
.
)
\
t ..•
"
I I I
X1X2X3. _. Xh, Y1Yz1!3 • . -11k
e
G1 2 . ..
a
an,
I J
:;.,
1 14
.;:;
".,.,,.
Ca.pitola 1
•
,~
. "
I
Esempio 2 Riprendendo i numeri dell'Esempio 1, si ha:
iiii
,
'f
"~I'
.,
, 'I.'
!
l
•
I
• XIX2X3,VIV2Va
t \.
I
XIX2Xa,YIY2Ya
= 127,000 = 15
"..
,1\1
•
±al = 6
b= 10
,~
,
±a, =-7
b = 10
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 stato spostato il punta. La forma ottenuta con questa convenzione e detta rappresentazione esponenziale normalizzata.
e
,
l:i'
;,l~ . 1.'
,'..~ I
". . "n i:U\ ';,
EseIlllliQ 3
,f1, .n, .Ji'
,
1 numeri dell'esempio precedente diventano:
..':'1> -
127x106 =0,127x10'
r
;l"l:
~,
'.~'
;'~I
15x10- 7 =0,15x10-'
'.'
',"
.~
:'1J
)
Alcuni cara:tteri della rappresentazione esponenziale normalizzata sana ancora ridon~ danti ed e possibile, mediante ulteriori convenzioni, arrivare a una, rappresentazione
piu compatta. Una di tali rappresentazioni, nell'ipotesi di notazione decimale, si ottiene adottando Ie seguenti convenzioni:
1
) \
• -
,
10 zero che indica la parte intera della mantissa; il punta decimale; II punlQ che indica II prQdQttQ; II valQre della base della pQtenza;
1
• utilizzando un esponente convenzionale ottenuto sommando all'esponente effettivo una costante (bias) che 10 renda sempre positivo ed eliminando quindi il segno delPesponente;
\
• disponendo i tre elementi rimasti in uo ordine stabilito.
I
"
'
~
c
I _,0~ ~,":,
'f'
',.
~
.•• , '"I'··l , . ,, 'g'
• ,
,~.
Es~mlliQ
'
._-;
4
Utilizzando Ie seguenti convenzioni:
I
,".,. .
• fissando la lunghezza della mantissa a un valore costante; • limitando l'esponente ai valori compresi in un opportuno intervalloj
)
:;u~" ,;'1' .• I,
i
• eliminando i caratteri non necessari ovvero: '.
.~
l,a, .
·,
,'n, ';1
I segnQ I espQnente I mantissa I
,1 "•
'.•
:~.. ~
.
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: segno
0,127x10' 0,15xlO~'
+ +
esponente 59 . 45
mantissa 12700000 15000000
Come gia detto , la rappresentazione in virgola mobile non e leg~ta alia Dotazione di numerazione, Una rappresentazione usuale ,e su 32 bit, Per essa si facciano Ie seguenti convenzioni 13; • 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 e il 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 normalizzata (it primo bit a destra della virgola cleve essere 1). Esemp.iQ..2 Si consideri il cumero 204,17437
c,
.~'. >,
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
m 0001000 I 1100 1100 0010 1100 1011 1100 I La rappresentazione in virgola mobile puo dar luogo al fenomeno del traboccamento. Questo non deriva dall'aumento del numero delle citre della mantissa, in quanto 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 diverse convenzioni , una at;iottata ciaII' IBM, una dalla Digital , 1a terza proposta come standard IEEE. 13Corrispondono a queUe
de~la. convenzione
IBM descritta poco piu a.V3nti.
•
16
Capitolo 1
Convenzione IBM
Nei mainframe IBM,
e usata 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 I l'esponente sempre positivo e non e pin nec~ssario riportare il segno; • i rimanenti 24 bit (bit 23+0) contengono 1a mantissa M1 rappresentata in virgola £issa con il punto di radice implicitamente assunto alla sinistra del bit pili significativo.
ISlOIT]
esp7~
L' esporiente puo assumere valori interi cornpresi tra -64 e +63 ed e riferito alia base 16. La mantissa e normalizzata, tioe la sua prima cifra esadecimale e diversa da zero: cio compona che &lmeno uno dei primi quattro bit della mantissa (bit 23~20) sia diverse da zero; fa eccezione 130 rappresentazione del numero zero che e data da 32 bit tutti nuIli. 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, x 16'. L'esponente convenzionale si ottiene sommando all'esponente effettivo (+2) • la costante 64, ottenendo: (66ho =(1000010),. 11 risultato e:
rn
1000010
Convenzione Digital zione su 32 bit:
[TIoo 1100 0010 1100 1011 bOO I
Anche nelle macchine Digital e adottata una rappresenta-
• 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;
"t~ii'.!j
"-,
:~il:~!~'-.~_
1
".-:.:('-~;-' ,,"
.
'.
,
, .,
-0-
lntroduzione
17
;~~~: •.... ,'.~.
--.
.Ill
lsI bit
~
;:~
I esp 8lillJlV! 23J»D
I
e
·La mantissa rappresentata in virgola £issa con il punta di radice implicita.mente assunto alia sinistr~ del bit pill significativo e si as:mme che la sua prima citra binaria sia uguale a 1. Poiche questa bit e sempre uguale ad 1; non necessita di essere rappresentato: la m~tis~a e, dunque, espressa co~, 2~ bi~) m~ solo i 23 meno ~ignificativi ] sana rappresentatl (bIt 22-:-0), mentre quello PlU slgnificatlvo, assunto uguaIe a 1, non e rappresentato (hidden bit - bit nascosto). n caso del numero zero, la cui rappresentazione 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 eccetto quello nascosto), e considerato 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.
.,'j
'i'
· ,Ii
.' .1 ~.;-"'1": r"
'I', .. • ~.
:.;;~
'::':~
,1
..,
YI "
I
,1'
,;til
"'1'1' .-:{ ,
-'. n .. ,, :""1" "'~"I' ,. -.' -. -':"
'EsempiQ 7
.~..
~.
-
~1lI-.
_.,1
-
:".
· ,,.-'.
:y~" ,-.~
,
.
~,~,
.~C)ij .~
•
• ',.
'
:;
.,:'}
,
~,
.:,.,-t .', i, ·. >Vil~-
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:
j
I I
" ..\C
'·r:..'1",. ";11. . ,n
C!TIOOOIOOO [ 100
~
11000010 1100 10111100
1
\
"".
--"
ii ·"u
c
.,) ,.
-'.,. . ••R·
'I
JJ~
,
· j.,
:1I'. .J ' .-~
'"
';,
"~1~1'
'."1.' •
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'intervallo 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: lunghezza singola; lunghezza doppiaj
,.~.
.'i:
,.'
• formato esteso:
j
I )
J
...1'"'
';.,
...•,
'J-j.'
lunghezza'singola; lunghezza doppia.
)
..
..
,\~ " .'
)
18
Ca.pitolo 1
. '(-,'"
Ogni formate
\
-:~,
I
•
e definito specmcando tre par~etri interi:
• Emtl:l=esponente massimo;
I
.
•• "'.
,
-,
I,>;,
.
"j'
C'~1
d.~ .,
T ,-~!
(bit di precisione J ETna~
ltmin
Singola 23 27 -1.6
Sin.e.:ola estesa >32 >1023 < -1022
~
Bias L~~ezza Esponente Larghezza formate
t
:"
)~I;
'.' '
TabeUil.1.5.
t'
i
'::"1
• Emin=esponente minima.
\
;.,~
'~.!I "
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 ~n
\
.>
';n
• P=numero di bit signi.6.cativi (precisione, ovvero numero di bit che compongono la mantissa); ,
1I
~'
32
>11 >43
Doppia 52 1023 -1022 1023 11 64
DoEPJ,a estesa >64 >16383 < -1638. >15 >79
t~ -',
'.
, ",~" ":,'~I,
'
'''I'
• -!~ -
Tabella 1.5 Formati standard IEEE 754-1985.
1
l
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 precisio~e 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:
1
Esempio 8
.,
~1
e
(It ·'·'11"
••
..,,~, '
)
"
"'f
AI
'
Rappresentiamo con 10 standard IEEE il numero decima:le 5, nel formato in singola precisione.
\
"~ia"
;',
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 Emax + 1 per codificare ±oo e il NaNs. La mantissa un numero decimale (binario) la cui parte intera sempre .1. Per questa motivo tale 1 non compare nel campo mantissa della rappresentazione. Tale campo, quindi, si compone della sola parte frazionaria.
e
:ii' ., '='1"' ".;,'1 ''':'
"
n
\
:'1
;'\1
'?II'.;.
bit di segno s; - espanente polarizzato e::E+bias; - mantissa M=,ffilm2ms ... rnp_l;
- lID
1
"M"'
"" ... ,
,u,
,
(5),0 =(101),;
...'
(101), =(1,01), x (10 10 ),;
"
Segno=O;
1
Mantissa=01000000000000000000000 (la parte lntera Esponente=00000010
II
e implicita);
;u';
·• ,• ~lt
.. '.
"
•'-\1, ,~,
'
Introduzione
19
I campi sono interpretati come segue:
. • Singola: un numero X in formata singola precisione a 32 bit lsI bit
L
e diviso come segue:
I esj:> 8 bit I M 23lillJ
n valore v di X e dedotto dagli elementi componenti i campi nel seguente modo: Se esp=255 e M;60, a1lora v e un 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 lsI bit 1
I esp 11lillJ
M 52 bit
ediviso come segue:
I
II valore v di X e dedotto 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,
e
Altra caratteristica della standard costituita dalle regole di arrotondamento. Quando si esegue un'operazione su due numeri in virgola mobile, di solita il risultato un valore reale che non si puo rappresentare in modo esatto in virgola mobile. Lo standard IEEE 754-1985 prevede quattro modalita di arrotondamentoc . .
arrotondamento arrotondamento arrotondamento arrotondamento
e
al valore piu vicino (e 10 standard); a zero; a +00; 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 e pari. 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 e prevista nel caso in cuI gli addendi abbiano uguale esponente. 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.
.
,
/if
.~
Esempio 10 Consideriamo due numeri in virgola ·mobile (scelti decimali per semplicita) e calcoliamone la somma: (0,836 x 10-'),0+(0,375 x 10-'),0=(1,211 x 10-')10=(0,121 x 10-')10 Affinche il formato del risultato sia uguale a quello degli addendi (mantissa normalizzata di tre cifre) e necessario spostare la virgola a sinistra e modificare il valore dell'esponente, perdendo cosll'ultima cifra decimale. Ualtra modalita. e llarrotondamento 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.
-
,,
,
..
i'
',;
, ';
,""
?,W
.:
-;'i
;;
.,".
"
"~
·~t
-:f;
;·,
-,,1
.,.'!
-
';
EsemI?io 11
'/
0,836x 10-'+0,375 x 10-'
-,0,083 x 10-'+0,375 x 10- 4
=0,458 X 10- 4
I casi esarrunati (trascurando il problema dei casi ambigui, che come prima accennato si ri501vono tramite l'arrotondamen~oal 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:
,"
;";
":~
'
!
. ",
t
',
-,
.... • underflow • overflow • divi,sione per zero
• eccezione di inesattezza
f
'!
S
','.
,!I,-~":
-
l Introduzione
21
• eccezione di invaliditd. ';
•
.~I
il ..
",1 '
"-
,,..
f:" ,
-
~.;J'
-,
,~'
,~'I
.• r
'~'
;j~
,.
;'U
""
W
:,~ i~ ,
Le eccezioni di underflow, overflow, divisione per zero, sono presenti anche in altri standard. L'eccezione di inesattezza e 1a caratteristica delFaritmetica IEEE e si verifica 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, e previsto 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 espJic~tamente. 10 standard raceomanda 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 e attivo 1 entra il gestore delle interruzioni predisposto dalPutente (ovviamente 1 in questa caso, il bit di segnalazione non e necessario). Lo standard prevede che qualora si verifichi una interruzione dOV'uta a un1eccezione aritmetica , si possa risalire all1operazione che l'ha generata e anche al valore dei suoi operandi. Operazioni in virgola mobile La descrizione dettagliat~ 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.
;ri,
.".
'
""I' t,· '
"~'
;~
Somma alg~brica 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.
,6
]
I 1
\
1 f
! \
11;
!,
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.
-.
;i
/
"'5
;;, "11
.
~-;J"
''(j : '-j
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.
tl
4. Si normalizza il risultato se necessaria.
",
) \
•
<"
'!;;,.1
,:~.
.,' ..
;~.'
Moltiplicazione Per la moltiplicazione non e necessario l'allineamento delle mantisse. L'algoritmo pili semplice puo essere cosl riassunto.
)
.~~~ --
-
.
-
1. 8i sommano gli esponenti
.::
f
'!;
2. S.i moltiplicano 1e mantisse e si determina il segno del risultato
S.
3.. Si normalizza il risultato se necessario.
.,-,,1
~
J J
"
"-' ;'.~..
. ,'.
22
Capitolo 1
.
" ., .
1
•'
l~a.ttere pazlO
)
I
..
1
UeCUDaJe
I...iara.ttere
20 21
.
32 33
A B
65 66
..
..
41 . 42
43 48 49
Z
5A 61 62
90 97 98
.,'" .
..
r '-;
..
0 1
2B 30 31
..
..
9
39
+
,
uecimale
ecunaJe
57'"
"'ESa.decimale
..
a b ..
..
z
8A
Tabella 1.6 Codifica "ASCII dei caratteri alfanumerici.
\
1.2.7 Informazioni di carattere alfanumerico
.,-.. ,
..
.,..
"
-
..
~
;,,..:)j 'oJ :~H' ,.,
.",'I..,'
122
'
".'
.
.-""
,_ .... .;ll;; .
~,
I \
l ) 1
L'informazione elaborata all'interno di un calcalatore elettronico non e solamente di carattere numerico, in quanta e necessaria 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 corrisponde~a 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 e codificare un carattere a byte. Es~stono diverse codifiche, tra cui la pili nota e la codifica ASCII (America Standard Code}or the Interchange of Information). Originariamente il codiee ASCI~ 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 apparire insufficiente, per questo motivo stanno entrando in uso codici BU 2 byte come la codifica. Unicode, 1a Quale con5ente di rappresentare 65.536 216 differenti caratteri.
,'.
·"1;1 I.,.", ....,
,",
":''j1
."
~
<~'
....;
',:'1'
l
hi!
1 1.3 Logica dei sistemi digitali
·"" ..,,, . \\
'",'-
;\~.
, 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 d~l'elettronica digitale. Se un sistema 5i campane di n elementi e p 1a probabilita che ha ciascuno di ea5i
.'".'
"·1
J....
·., . .,
e
•.,'.
..,• ~.,.
~~-
I
I
,
"
e
I
A
.,
!~:
\.
.'
"
.
' ...
.
23
Introduzione
.
'
A'
..
-
e
cap~cita. di discriminarli. Si tratta, per esempio, di ri~onoscere se un da.to segnale a 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.
., •
.
1
.
te mpo
a , Figura 1.1 Forma d'onda idealizzata di un segnale logico. ,
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.
,X-fJ.-_ y-L--
xy
~
AND
D
x+y
OR
x
t>o
X
NOT
Figura 1.2 Simboli standard per le porte AND. OR e NOT.
.. '.
)
. Le reti costruite a partire dalIe porte logiche possono essere descritte attraverso un'algeora, detta algebra delle reti 0 algebra boolean a, 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.
1.3.1 L'algebra delle reti
•
e
L'algebra definita su un insieme, composto da due soli elementi, c~mvenzionalmente denotati lS con 0 e 1. 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 e molto 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 ve~gono
24
Ca.pitolo 1
vomplementazione
Pradotto logico A-B A B D D D D I D D D I 1
1
D I I
1
I D
I I
1
1
A
B
~
1
D
}~ .,
.. .'/
~'
i.
,
• l~
Tabella 1.7 Ta.belle di verita delle tre operazioni fondamentali deW algebra
,,,",.
'Ji•• -,)1
d
Sull'insieme {O,l}
,'"
vengono definite tre operazioni 16 :
,;t
';_']
• il prodott.o logico, indicato con il segno 1I.1I;
.'-:
"
~j,,
• 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 e permanefltemente assegnato 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 e una vari~bile logica si ha: x~o
se e solo se
xiI
se' e solo se
x=l
x;iD
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 2R configurazioni possibili delle n variablli: y = f(x, ,... ,x n )
Una funzione puo essere espressa in forma algebrica
0
in forma tabellare.
,
.,
, 1.4 Reti combinatorie e reti sequenziali Si distinguono due categorie fondamentali di reti: Ie reti combinatorie e Ie reti sequenziali (CIr. Appendice A). 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. 16 Anche 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. ,
. ,
''l.'''l'''t!'->0' .;.... --
,;.~r'<;·;f'''~''''.
."~'-.~"-
, :';'+•.J.!~;.-,-". ~
:_
"
-" -
::>~?;~~~:'-'~ --
.-
)
_... . ,
~
-"....
,-
"
.
,
.'
",,,;,-.~,".,,--,
,
--
Introduzione
25
-
;:. :}:, .
, . - ".... "'Reti combinatorie Si ha una rete combinatoria quando l'uscita e esclusivamente ) 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
l
';
~-
/'
0= f(l)
ii" .'
.'
,il ,l:
Reti sequenziali Si ha una rete sequenziaJe quando l'uscita e funzione l oltre ch€ 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 _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.
.
•-,.. 1{
I
dl
"
;t')'I'
;j]1 '. "
:,
.
, ..
,,,j,
- ! ... .~
-,
.'
..
•
_::.-"''-
"
,
,.,
'" ...,(iII'
.,
,.,..
,•...... c. .":.;'.' .rl.
'~,
.•~",
\:.:0,
.
asiricFq.na .quando eS8a reaglsce Immediatamente alla vanazlOne degli lDgresSl l portandosi daUo stato presente al nuovo stato nel solo tempo richiesto dalla eommutazione ··dei.·~~,~i: c·~mpone~ti. Una .rete ~i dice s~nero~a' ~uando ~o ,speciale..segnale, dettc _i~p~.l~~, 91 O~IOgto17, forn.lsce l'LSt.ante ~ ?Ul gli. element~ di memona che la com· 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 e modo naturale per descrivere il comportamento di un;; ,. ·r~~~:.;~.~uenziale.o Per gli approfondimenti necessari si rinvia all'Appendice A. "
:/ I:
j
I f
i
..
,.,., '.-.
• , . '. 1.4.1' Reti sequenziali smcrone , ..
1 Iri F~.g1lra 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·, · gressi·~ 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 funzioname~to, corrisponde essenzialmente alFipotesi di flip-flop master-slave che campionanC" 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 , ~em6da devono essere stabili. Naturalmente non e ·necessario che i flip-flop siano qi tipo maSter-slave e il funzionamento della rete pub prendere forme leggermente div~~~e,.ln funzione del modo di operare degli elementi di memoria. Si p0580no, pel ) · ~empiol usare elementi di memoria, che operano sempHcemente BU un fronte; cio chI im'po~a e che 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 prppagarsi e stabilizzarsi.
l
J >
,.. 17Ncl seguito useremo normalmente la pa.roia clock per denotare it segnale impulsivo, di frequenz, fissa." impiegato per comandare reti sincrone.
,
1
. , ,'··:r:.' .,'" .,'
'.-.-
,'"
. -... ..
_~. ·.;v.~a rete sequenziale p~o e~sere di. tipo sinerono a as~c~onoo Un.a. rete vi.ene detta
!~,
". .,;~:
,
I
~'
1 ,
'I
;
j
26
,1!'
Capitola 1
~-l
1
.<
\""(
I
]
-
I
I' I
.~
~
Q ,~,
o
LC
-"-
Z1_.....
~
/,'
JI
, ~,,!
".,:, ,. '!I ",
\"
T ~~
••
I~-
~,
~
I
"T
,I" :1 I
1,--_
Figura 1.3 Schematizzazione delle operazioni delle reti sincrone.
I'
, "I' ',.," <,., .' . ,
'l '." "
.,. .,
~,
\~
Ji,.,
,..
,
~'
1
I \
) 1
I \
] )
I
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 scomposizione 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 precedente. 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 richiederebbe 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 e T ' queUo richiesto dalle sottoreti (che clock richiesto da una rete non ~composta , 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 L1~ sia diversi da .:1 2 . Ne consegue ebe T' < T, rna la rete scomposta opera in un tempo IT' ebe eli norma e minore 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 Tagionamento: 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.
~il
.""
,"'1. ,
"~ ~
••"
,.:'-' •
'F-I ,
.,.
'I'
~, "
'1<
1"~1 :;/'
""
; [;
'1
I,
",;:
.l' " "
I
" "
.",
'.
it """
I. : "
i
~
"'1
;~f',.
\',! ,
, u' , 11 •,
,I'
."
',I:
,~~ , ,,', ., ,.'
,
"
,!i
,\1'' , "
"
~I' 11
jl
lntroduzione
27
flNC~QNo
I
...
UH ,~
f
UH
0
LC
tlllCllO<.
C'.C~
100__11
•
f
"
S
,
LC
o.~
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 e fatta 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. ~, t
$IHC~OH~
LC
f-. . " ", llo...,_"
S
,.~
,
,
Figura 1.5 Madella di blocco componente di una rete sequenziale sinerona. eorrisponde allo stato della rete.
L'uscita.
,
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 dell'in~ formazione (per esempio, 10 scorrimento) ecc. Per i nostri usi facemo riferimento ailo
schema di Figura 1.6.
n funzionamento del registro e il seguente.
ii',
'~J .~ ,
28
"'
'.
Capitola 1
~I
";1" ,.,·~ ~,
'.
IN i Rin
'-.- '-.
,
c, >ck Rout
•
Clock
x
•
~
T
61
I
---.J
+~ 62
I
L
,"I .'
'"
· .., ,
',11 ..
OUTi
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 e supposto che it segnale Rout abiliti l'uscita. in terzo stato. ,
.....'
,:1.. .. (. "
,';:,
..."'
"
• Si assume che il regist!o commuti suI fronte di discesa del clock I 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 asserito 10 stato di ogni flip-flop (it contenuto del registro) diventa quello corrispondente alPingresso INi.
e
:i '::'~t
· ;',
"'~i
~'\
~
~)'
.;:.'" '~
,
"
• 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.
I"
",'1
·''2.1
·'I
.;,
Rin
CIOO'---1: Rout
,..,,
IN
REG;TRO
I
Cloak
'r
61
T
I A2 ~
OUT
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
I'~
,';"
'" ':1
"'"1
j
ill"
-..
·
~I
..
'>j;
. .!,
"
.
1.6 Trasferimento dell'informazione 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
:~¥
i
"".
~
"0> };
:
'
-,-
)
,
'
. IntrQduzione
29
".
.
e
I
.scegliere i percorsi che interessano in un dato istante. Una simile rete componibile 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 trasferimento 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 e una 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 e riportato 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 e possibile abilitarne pili di una e 10 tal caso si ba il wired AND 1 (Iogica positiva) delle uscite stesse,
,
I' "
"
,
1'
I
1'
,.,
~I:t
,:
i
\~.
~
0>
RTlout
'
".
:
,
RT~ou\
,
RT,
RT,
"~
BUS
-1
\
,
"~
1.
.1'
2 '
RRlln ...
Ii. ,
\
.
7
RRain
RR,
,
RR,
I
,~.
.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 abilitazione 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.'
~
";
" :1
1
"
jl
l,
-.
"
It
.
j;
. ,I
"
.,
~¥J
__
e
Praticamente la struttura a bus 10 standard nel mondo dei calcolatori. Thttavia ha un inconveniente: consente un solo trasferimento aUa· volta. In certe situazioni questo e U~ 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.
~.:
0> "I' ;' },
~~
:'~~.
" ,
I I 1
i
."I
1
1.7 U nita aritmetiche e logiche In precedenza si e accennato 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 ess~re interprete come Ie tabelle di veritA delle funzioni logiche corrispondenti aile operazioni aritmetiche.
I
J
J •
:r, ·;
..
'".'
• ',•
)
30
••·
Capitola 1
'
l
·
~I""
,....h
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
I
I I
t~i . ,;C·I· ,
"
::·t,:
R;(Ai,Bi) . Conseguentemente, se si costruisce la rete che ha come uscite Si e ~, si
wi','"
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).
.-I'
,··'1.. :~
• "ii, , '.1'
, ,;<, ~:r
I
,
,
BI
Ai
Ai Bi
\
0 0 1
0 1 0
1
1
\ )
I
";~I'
.. "
'J,:
0
0 ··
0 1 1 1
I
·9 9
0 0 1
•·..
HA
',ll~ ,,.~
.\
Si_IlBI+Ail!l"i
Ri
;':{,..;1·
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 vien~ data. la rete corrispondente, A destra viene data una scbematizzazione della rete come blocco funzionale, Il blocco e stato indicato come HA, per Semi.tommatore,
Vogliamo ora costruire la rete che eff'ettua la somma di due numeri interi, rappresentati 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 tenendo 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 semisommatore, questa cella somma due bit e un eventuale riporto. La parola [Sn_l .. , S 1 80 ] costituisce la somma di [An-I." Al Aol can [Bn _ 1 ... B1BoJ. Si noti me e necessario porre R_ , 1 = O.
\ Rl
FA
FA
I I
FA R3
B3
A2 B?
AI Sl
II
II
I I
'>I
,-.
'
.,"I
r. ~'
·. ·;t ii ;".~ , L,.~ ,
.,
:.r:;;
-
I~; , .Il '
....>Ei i_\_
'~~ 11'"
;Ii
~'
..
.:;1,,1' ;'~,
.
~ :iJ ..~
'I, . ·..j.,,
.
~
,;,l" '-ij:
"
I':
,,~,
•
~..,
FA
FA
~I
I
'0 BO
.... , i~
.~
"I
,~,
.:
l
~
.~} S3
S3
Figura 1.10 Schema di un sommatore di parole di n bit castruito impiegando la. cella. detta Sommatore completo (FA).
" " detto sommatore eli
,....,
•
ripple -
.,
,
~. ~.
',~,
,..\, '.
'1 .. ~,
Per la real.izzazione del so~atore completo si puo seguire il seguente ragiona•
\
.
',,' •••
"
I l
""..., -
Bi
Ai
Si Ri
RI_AiBi
I I
.0.(.
<~
..,'J . "
'"
i-
Introduzione
31
mento 18 . • La somma di.tre bit Ai,Bi'~_I da. risultato 1 solo se e dispari il numero di bit a I, doe se e"1 POR esclusivo dei tre bit. In a.ltri termini:
S,
= A, GJ B, GJ Ri - 1 = (A, GJ B,) GJ R;-I
• 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:
R, = A,B, + (A, GJ B,)R;_I Dalle precedenti relazioni , tenuto conto che Ie due uscite del semisomrnatore rappresentano 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 . A
Ai
Bi R. 1 Si Ri
0 0
0 0
0
0
0
1 1
1 1 0 0 1
1
1
0 1
-
1 1 0
0 1 1 0 1
1
0
0 1
0 1
R-l
5
A
0 0, 0 1 0 1 1 1
R-l
B
HA FA
HA ..
R
S
FA
)
R
S
Figura };11 A sinistra la tabella di verita. per il sommatore completo. Al centro la scbematizza.zione come blocco funzionale. A destra il somma-tore compJeto costruito con due semisommatori.
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 diventato 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.
e
180vviamente, la rete cbe reaiizza il ·semisommatore puo essere anche ottenuta. pa.rtendo dalla tabella di veriU, di Sj e ~ di Fjgural.ll.
~~
\~: · , ·.';:'J,;
'1' ~
32
-, ..':;
Capitolo 1
.• ,I'
· ,"~:~ ,
',.'.'
~'~i
· .:<~ "'1 ,",'" ,,'.
:;;t
1.7.1 Esempio di costruzione di un'unitll aritmetica e logica
•.J"' .. , ", ..
Partiarno cial sornmatore appena vista e mostriarno come sia possibile aggiungere della logica in modo da fargli effettuare altre operazioni. Si e gia: 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 complemento a 2, basta quel poco di logica che se,rve per complementare B e sommare 1. 8i ottiene cosl, per la sola sottrazione, 10 schema di principia a sinistra in Figura 1.12, Ovviamente 10 schema solo 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 e indicata 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:
··.e'"., I'· ,',." "
'
·':LI ;.
e
A+B+l
.
.'l '"
,''';i .'''~',,,
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:
11 '
:'' , ,.
'~
· "'~? " '.>."! ,.
'~I': tit:
• si sommano due numeri positivi e it risultato e negativoj • si soromano due nwneri negativi e il risultato
e positivo. Bn-l
: :i"J
00
•
c. {
'a-l
.. , -
"
..
Sa-I"
•
•
50
..... (
•
I An-I
't.y -
SOMMATORE
,-1
R
• • • • •
tJ r
y
Y T
c,
R-'
SOMMATORE
.~
';'~;
...• ii,
Il
Sn-l······
so
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, e A oppure O. Si DOti la logica per il controllo del trabocco.
. E
J~I :~I"
·'1'
..'~
,~
.d
;
',.•
jl. .
facile convincersi che questo accade quando iI·risultato dell'operazione supera la capacita della paroIa, ovvero supera il massimo nurnero rappresentabile con queUa
•
.,.'I
,
'd ",,1
'i'
)
..
~.,
,
,
Introduzione
33
1 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 convenzionaJ~ della rete risultante. In questa schematizzazione vengono riportati i segnali di comando cosl come sono stati ottenutii Ia lora cornbinazione determina i1 comportamento di ALU.
c,
.. .
.
'
;
.
I'
d.
..
0 0 , 0 , 1 1 1 1
CO
ii_,
0 0 1 1 0 0
1 0 1 0 1
1
0
1
1
ttisultato
-0+ =B S = 0.+ B + 1 = B + 1
S=O+B=B S =O+B+l =-B S=A+B S=A+B+l S=A+B=A-B-l S=A+B+l=A-B
'""ommento ----, ,elezlOne Incremento , Complementazione
'
\
1
\ Differenza
,In riferimento alia Tabella 1~8 vale 1a pena di o~s~rvare che: • Per 1a combinazione clcoR- I
)
Cambio segno Somma
Tabella 1.8 Operazioni effettuate dalla rete.
,
I 1
= 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 parti~ 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 sarebbero sei Iinee di comaodo, corrispondenti alle sei operazioni significative di Tabella. 1.8. Questa convenzione di pura convenienza e viene adottata perche consente una miglior Iettura degli schemi, rna da un punta eli vista pratico, produce inutile complicazioni. 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-
I I )
I
e
J
drebbero codificati nelle configurazionJ richieste dalla ALU (come quelle in colonna sinistra della Tabella 1.8), E· evidente che ~ pili conveniente far generare dalla 10gica di comando i comandi codificati per la ALU, evitando inutili sprechi di logica e
riducendo il numere delle linee cbe collegano Ie due parti.
)
34
)
Capitola 1
B h
)
~.
,
,
R..-A
I
, ALU
T
B
A
A
I
I
,
R-. Co
I:
ALU
c,
Y.
f•
Coml Com2
•
•
CoroN
'I
I
T
o
S
1
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 complemen~ 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.
I
';
i
I I
,j "
",\
....
I \
\
I )
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 e rivolto alla realizzazione della logica di controllo dei calcolato.rL" •
..,
,
:'"
.."
.,
J
"
','" .. ;~; .,.'~
] ,
"I',
1.8 Sistemi digitali
"
In Figura 1.14 viene presentato un modelIo del tutto generale di sistema. digitale. Nello schema, l'informazione che entra e esce dal sistema e stata divisa in due categorie:
in, ,figural; • l'informazione che viene elaborata e trasmessa (DATIN e DATOUT ,
\
l
, ",
".~ "I'
• l'informazione di controllo.
..
", ,
.,::
\
\
DATIN
Linee di controllo
1
I
=~:::oi .. I
I ' :>, DATOU~ SISTEMA" DIGITALE
I
.
Linee di conlrollo /
Figura 1.14 Sistema digitale e tipi di informazione.
'
.'!' ;
!t j,
"
"
•..
..
,i~ .,
1
J"I
Introduzione
35
L'informazione della prima categoria (designa.ta semplicemente come "infermazione") 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 e deputato. La precedente suddivisione e alquanto arbitraria, 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 codiflcata 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 ,
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 ciascun 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.
,.. ~~' ".<"
• I..',,", ' ,.
"":>:,';,;"': .:"~: ':'.C"' t --~ :': . ~ \ :.,.:"~.:<'.,
~
" :.,'. .. '. . ,.
::0 0
•.• 1.
,
.
••
. '
Clock
~
-
~'~' • ••• '.'~.: •• , .. <;. 1.,,;-:·,"1
~ o
~:',;'~.": f> .: .• ,,:::~,,\
:>;l
RETE COMBINATOR1A
tzl
(}
d"·
;
'.
..
~
...
Clock
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 ~ul prossimo Eronte (di commutazione) del clock. •
36
Capitolo 1
n modelio di Figura 1.15 e molto 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.
!
!
,
!
E
t,
· rf
1.8.2 Alcuni blocchi componenti i sistemi digitali
f
,
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.
'f' ,:
;
·!
Buffer Con questo nome (0 can queUo di driver) intenderemo, anche se impropriamente, 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 e un 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.
l•
'l j, ,,,,"
·.t
;
"
-~ o-J o
i
] :'1
¥
",
!
,
;el
,
,
Q
-.IO:EC:~~ '--
'
':.:
'
"
Figura 1.16 La figura illustra i simboli usati per il Buffer/Driver, il selettore e il decodificatore.
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 e garantito 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, e un dispositivo che ha n ingressi e m uscite , e ehe eontiene 2n celle di m bit eiaseuna. n numero binario corrispondente ana combinazione degli n ingressi e l'indirizzo della cella ehe viene letta e il cui contenuto viene presentato sulle uscite. Una ROM in 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 e molto complessa.
e
· '.
"·
..
.~
.,
-,
.
..·
•
·
'
1 Introduzione
Memoria di lettura e scrittura La memoria di lettura e scrittura e una parte essenziale d,i qualunque sistema di elaborazione. La memoria di letturafscrittura viene normalmente denotata con il termine improprio di RAM, da Random Access 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. ,
!
!
,
!
E
t,
f
r
f
Quando nel seguito si parla della memoria si assume che gli indirizzi siano riferiti ai byte, essendo questa la prassi ormai comunemente adottata da tutti i costruttori.
,
f'
;
!,
l•
lt , ,,,,."
Indlrl:n:\
;
Dati
lndirizzi
-+-
::
~J' o!
i
] 1
37
-,
¥
WEllORIA
~
D.lI
I
=>-<
"'OJ~
\M.lna.o
~
X/---
READ
\
FigUra 1.17 Schema funzionale della memoria ed esetp.ptifica.zione dell'operazione di lettura. 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 e del tutto analogo. Esso richiede che venga asserita la linea di comando WRITE e venga presentato il dato a.lla memoria.
',.
1.9 Questioni di notazione
'r
•"
.i
~
~~
f
,l
.,•
,~
..,{' ,~ t
J.:,.
•,
•
\
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 e possibile 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.1 Notazione per i segnali
•:1'
•,:
'~
j J
J \
\ J
!
"·r•
1
I
.:i
·r 'f.;'
\
/
,I,
•f
l \
!
[
\
X~-
-
,~
!,
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.
>
J
I I
\ I
j )
38
) -)
I
Capitola 1
Ingr. A
Ingr. B
L
L
L H H
H L
Uscita U L L L
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.
1 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 U segnale e attivo alto, nel secondo si dice cbe e attivo -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 segu~ 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.
\ \
\
.'. ....
iI·
\ '"
I
I
lo/R
u
"
-v
" Convenzioni per 180 marcatura dei segnali.
Figura 1.18 Il segn80le marcato OE ha la funzione di Output Enable quando e in stato L; il segnale 10/ M ha significato 10' (presumibilmente Input/Output) in stato H e significato M (presumibilmente Memoria) in stato
!, -I
.. "
L.
I
I \, )
\
.\ 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. n miglior modo per evitare errori nell'interpretare lo schema resta queUo di Ieggere 180 descrizione a parole del funzionamento del dispositivo ed esaminare i relativi diagrammi temporaJi.
! J
! .."\
, ~
"~
I
Introduzione
39
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'incremento 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 microprocessori 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 esadecimale 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 decim~e e si verifichi che corretto.
e
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 rappresentata da byte dislocati in posizioni successive di memoria.
e
Esercizio 1.7 n contenuto di due parole di memoria di 16 bit consecutive in forma esadecimale 2AIB e 15FF, a quale stringa. di caratteri corrispondono?
e
,
Esercizio 1.8 Si dimostri che l'operatore XOR (OR esclusivo) - vero se e solo se vero uno solo dei due termini - gode della proprieta. associativa.
e
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.
,
,
,.'
,
·.
's:
....•
:$;
.~
.',
';.
~:1
\
,,',1
"',~~
,"
..
",
'.
'. '"
,.
, ,,
"
-i
.'
,'.-
~,
;N"
'>:,:; ,
'."
:'
~>
,
,n'
";
':"
,
'j
:':" "
)
"'
~ ,
) ,",
Elementi architetturali di
J )
I
.h
s: •
,
,
La caratteristica fondamentale di un calcolatore elettronico, che 10 distingue dalle tradizionali calcolatrici da tavolo, sta nella sua capacita. di eseguire sequenze di istruzioni 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 generale, in modo da pater affrontare, nel capitolo successivo, il progetto dell'unita. di contrallo dell'elaboratore.
.•
\, I
) \
I
;,
~
'..
.,
1:;
\"
2.1 Struttura dei calcolatuci-
I
1'
~,I'
"
.,
, .,
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 ingresso/uscita.
,. i,'.' ,'
•.
,(;
-:
,
N"[
;:t
."'i
>
,
,
n:';'I
"
,.,
,
jo,
:"~Ii,
)'
''1"
.
~31,
\
,
I
..
" ..;'.
I
.' L'wi'ta-di...elabQrMione e controllo e la 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 costantemente uso nel seguito, anche se talvolta verranno usati i termini "processore'l ed Clelaborat'ore".
e it contenitore delle istruzioni . dati (gli oggetti delPelabo• La razione). Istruzioni e atl sono codificati in forma bmaria. Le istruzioni vengono 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 e un compilatore~ Di norma si hanna differenti
\
)
J
I
,,
i
42
,
Ca.pitola 2
I livelli di memoria. Si parla di memoria centrale quando ci si riferisce alia memoria elettronica clirettamente connessa alIa CPU I si parla di memoria ausiliaria 0 eli massa. quando ci si riferisce, per esempio, alia memoria dei dischi magnetici.
1
; • ·,1<
•
•
• 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.
I
I
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.
.-
,.
...:
'I·
· .,;
.,
;1,
,
\ -'
MEMORIA
h
·,".
,
"
\ conlrol1ore dfcanale
CPU
,I
\
I 1 I
I 1(
l \
·,;.
bus di I/O
...il"
,
~~
\
,"
,
· -"..•. ·C,
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.
,
·::.~I, ,> _c_
~(I
T-I
.::}
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 mi~ 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 e mostrato insufficiente. Le architetture attuali~ anche per i calcolatori personali, prevedono la presenza di piu bus. Per esempio: un bus ad altissima velocita. per il trasferimento di dati tra memoria cache, memoria centrale e CPU i 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 e molto semplice e rappresenta la forma piu scarna di organizzazione di un calcolatore. Esso e comunque 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 indirizzo (bus indirizzi), delle linee dati (bus dati) e delle linee di controlh Il bus degli
·i
,
.,(
·
.. ·, .
',"
'
'
: .,:,
,.....-
;1" ,,-,'-1
"'i,
...
·,·:~I
..• , ,•
,..
..:, ,,'" .;
'
,'I'a',
:'~
, Elementi architetturali di base
In,r...o
.
1oI.",orl.
\J~.I\.
~,
c,u
WDoOIUA
tHPIJT/OUTf"\J'T
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 e che ogni nuovo modulo di memoria. 0 di I/O viene aggiunto semplicemente collegaodolo sui bus.
e
,
indirizzi ha origine dalla. CPU ed normalmente unidirezionale. Su di esso viene presentato 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 insierne 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 attesa1 • CI.O<:K
Indiri,,:oJ
Dati
=::x:
=x
"/10
\
"''''
."
tndiriuo
nnn
~1Il\do
X'---
X---, X
~ ~_..
=:::=x
=x
IndlJiuo valido
.011..
X X
/
!~---
,
',
43
1 A questo
proposito si veda quanto detto in Appendice A nel Paragraro A.Il.l.
.j
,;)
':,
44
",
.' J
Capitola 2
. ,,
2.1.1 II sistema CPU-memoria
-
Per la parte che segue, l'attenzione e essenzialmente 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.
.
-
In
--,-
O.U
CPU
,"
MEMORIA
..,"
RO
WR
,',
Figura 2.4 Architettura di Von Neuman. La memoria e indifferenziata 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.
, .. '.
...
;
"',
•
memOria usata per COJltenere
j
d.ati.
rente schema or anizzativo del sistema CPU:. ente Ie istruzioni e distinta nspetto a a 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.
• .. '.
'
"
,'.;:
• ,
•
MEMORIA
lndlrl:nl
lndlrl,ul
l~lru~iODI
Oali
CPU
ISTRUZIONI R~,
"'
MEMORIA DATI
RO.o W~o
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.
,:
"
.•. '·
",,
i
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 •
, ,"
,:·
.':
•
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 i~truzioni, proprio secondo il modello in questione.
'.",
.~Z:i',:,;.,;.:;:,
.
j'
)
)1
,
"I,
J
Elementi architetturali di base
,,,,
45
)
2.2 La CPU
-
In Figura 2.6 viene data· una schematizzazione molto aggregata della CPU. La schematizzazione corrisponde al madelIa eli Figura 1.14. Come si vede la CPU stata
e
-
scomposta in due parti: I'UnitiJ. di Contro.llil.(UC) e l'UnitiJ. Operativa (UO).
pJ.n
""
PI PlGJU::I.w
V}li"~
x
UO,
PU' III
uscrrJ.
J
?ERlQ/A.
"" COlW!lll
\
I I
',r,
JUL
Cl.o~
. '"
,
.
•
1
COJfllIZlOlfl
V~\''''''
1SJR1nIPtfl
DC
~~,
~""l'
'I,
J
CPU
•
\
.
"
:r.
•:1<
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 e tra.1'intera CPU e I'esterno [LP86J .
I
I
'~.,
L'unita. di controllo
:f
"
·1'
,1:
ii'
".
·.1:
:
.'
e res
onsabile dell'esecuzione delle istruzioni , comandando l'unita operativa a svolgere e operazioni corrispon ... . codici di istruzione. A tal fine l 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'un·ta. 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 3 aritmetiche sui dati . 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
• I'
'-"
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.
) \
I
l \
I
J
]
46
Capitolo 2
\ Ie relazioni tra CPU ed esterno4. In Figura2.6 non compaioDo espressamente gli indirizz~ generati dalla CPU per l~ggere 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 tramite il medesimo clock. n clock dl< il soffio vitale aI modello di Figura 2.6.
\
I
I
•
•
In modo aggregato il fUDzionamento delPuruta di centrella puC> essere rappresentato
con il diagramma di stato di Figura2.7. In sintesi 1 DC e UD 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'istruzione 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'indirizzo eli memoria di un'istruzione [uori sequenza. In ogni caso Ie operazioni vengono efIettuate trarpite va e, piu specmcatarnente, tramite la ALU.
I l
t",-.;'~ ~\0 tI.. (o.J~.
I
lnizio esecuzione
.:
'-
,.
"
I' Fine esecuzione_
\
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, co~ren e u e e a.zJOnt c e
\
I ~ )
I ) \
~gono SYQ~er
'l.i.
quell? Bpecifu:.a istruzione.
'..1' ·..• • •"':•
•
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 istruzionet 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 incrementato 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.
,
-I 1
,.~
I
I,
1· ,
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
l i•
t ~
t
1
I
1·
I
l
t
Elementi architetturali di base
47
Ai fini della manipolazione dell'informazione in CPU, conviene the in UO siano presenti un certo numero di registri su cui appoggiare }'informazione1
2.3 Primo esame del funzionamento d.el.la...CEll. 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 e gil< parlato.
CPU
uc
IUb I
.
I
I: ';-1 I
'.
~
Lo.'c. d.l Con\.>-ollo
I
•
I
I
MEMORIA
I I I
'0
I/Cil
....
I I
!
I
Indlrlzzl
Dati
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.
• I1JcStruction Registe e il re istro contenere l'istruzione in cor 0 di esecuzione. viene caricato nella rase di fetch e presentato a logica di controlto 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 PDP~8, il primo minicalcolatore della storia, aveva un solo registro aceumulatare. Esse inter~ 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 nell'unit~ 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.
]1
48
Capitolo 2
azioni svolte durante 1a rase di esecuzione. Per questa esso e stato 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 programma. ESso contiene l'indirizzo dell'istruzione in esecuzione. Durante Pesecuzione dell'istruzione stessa J PC viene aggiornato in modo cia puntare all'istruzione SUCCesSlva.
~§~~~:;~::~rjjMAR
c,~~""",az~i0:;!in
e il registro deputato
a contenere l'indirizzo
u s u s egli in mzzi. i norma, Puscita e abilitata durante Ie fasi letturajscrittura , mentre e mantenuta. in terzo stato fuori cia queste fasi.
• Memory nata Regist~ ::~ l'mformazlOneJti!i
pm
e il
registro attraverso j
e viene scambiaj;a
la"PII"
• Reqistri di USQ generale - RO, Rl, ... Rn SQnQ impie~i per mantenere dati su cui 1& ALU eseiU£lj> operazioni, come registri di appoggio, per l'indirizzamento ecc. Nelle architetture moderne c~ 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.
no essenziali. Infatti, per la trasmissione dell'indirizzo 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. ~esefliSa Q.i.....M.A.R e MDR permette di disacco12piare la CPU dalla memoria. IVl
.' ,
"
.. ,
:.~
••
.,
• '·
,I.'
'i
,1
.. { ~ ~ ... .
.
-. .. , ••
.c
"," "
·'1
'
..",
-,
'"
.,
2.3.1 Esecuzione di un'istruzione Possiamo ora dare uno sguardo all'esecuzione delle istruzioni.
·,".
•
,Fase di fetch .,!.m:Qgrammi riSiedon~memOria' il registro PC fornisce l'indirizzo della prossima istruzione eseguire. 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:
aa
I
Ware dI1etch.
9Natare che mentre per quanta gi riferisce a. MAR il flU8SO e unidirezianale (dal proceesore verso ~a memoria), per MDR jJ Busso dei dati e bidirezionale. Tradizionalmen,te 1a dimensiooe di MOR 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
, Elementi arChitetturali di base
49
1 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;
(
c) il contenuto di MDR viene copiato in IR;
d) viene decodificato il codice operativo dell'istruzione in m e incrementato PC in modo da farlo puntare all'istruzione successiva (per la prossima fase di fetch).
e schematizzata in Figura2.9.
La. successione dei passi descritti
.'
.~.
"'I,
,
D'
MAA <-
~:
•
,
>'"ETC=H
I
"
I
.01.",,_
,1'
WlHII:< _ W(loU.Il J
t
___ a
~
,I,
\
lan"'""l ....
·1
'
1,
'.
I"
{
i
<- MD'
,
~I
.'
."
(: _......::>
.
...' '
~.I
CHloa apuaU9a ." I""ro .. w.....
••
c,,
/'
"
'",
1)
'"
,
' ,,'
",....
-',
"
"
,'
'1'
,; ,
·"'.,",
,
...1 Pc
•
/
\ .~.
D'
ona:C=UTC
"""
I
"oJ
•
I
Figura 2.9 Diagramma a stati relativo aUa fase di fetch. n ramo di uscita dalla fase di fetcb e selezionato 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 memoria.
\
I
.,.
•.'.,
· '.,
'-
"
!
Essendo llunita ·di cantrollo una macchina sequenziale sinerana, ogni passe pub essere riguardato come uno stata dell'automa corrispondente. Poich~ suI secondo stato viene letta la memoria e poich~ questa e normalmente pili lenta della logica di CPU I e possibile 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. (Crr.H), U n;=;;e~~~clOc!L~e ( etn che dete nano l 10m d U. ~ re condizioni, Ie prestazioni SOUQ in~ers~me~~~orzio ~; ] : " " lip modo p'er cerca:re. ~e~~o~l~ e.~Y..aj;. conslste n _. eg,o fattore.""'er q~.!2_§} nfer!§ce et~_cJ2._s~~ ~.lep.e_.perJilJe VIe,;,... Come
10C':
t • • _, _
ved~emo piu avanti
_
.~-
.
el Paragrafo A.ILl
\ }
!
I )
~
1 •
,
~I, 50
f
Capitolo 2
,I ·.ll,
,.
@ riducendo il Dumero di stati attraversati, cercando di accorpare pili operazioni in un medesimo state;
l G
evitando gli stati di attesa dovuti alia lentezza della memoria rispetto alla
CPU l l ,
,
\
i
:I 1
'&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 1 C 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:
tuna camanda per la ALU;
l'oppor~
~rasferire il risultato in uscita dalla ALU a1 registro di destinazione. Come piu volte osservato, Ie attivita che si svolgono entro l'unita. operativa caosistono essenzialmente in trasferimenti. I trasferimenti di informazione tra registri e registri di e tr80 registri e l'esterno (memoria 0 sistema di ingresso uscita) avvengono in passi successivi, i1 cui numero in parte determinato da! numero. di percorsi
ua
e
~?oniamo the la struttura di
I
•
I )
I
I I
callegati gli inNessi e Ie uscite di
SOIOla comunicazione da lID reg _ _ 'i"(J"ue ill essi mentre un' esso uo essere po~raverso il bus, l'a.ltro ric!!!~ite_I!~cessariamente un registro di appoggio, registro TEMPI come a ema ai' Figura 2.10. Per losresscrmotiVO ~ n~essano iI relPstro ill app~in usci~ Jtrn', mdiCato come :rEraPO ill ""Figura2.~tl. .----"lir'tali innto<:i 1'0<:o...II'7.i..... m. deIPistruzione richiede almeno i seguenti passi:
· ,
~.
,1:1 .'~.
~:~
'."J '.I
i,
· ,[, '1
~I,
'.
,~,
~}
,
..,~
,~~~
>1, ,"t
.. '11
"til ,"I
,
::'".'·.,:1', ".0-
"' ·f '.,,:
·,,;<
.,
·" ·.."'/,~l
'111
':'11,
','II
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
,
",
','1•
1 '",• ' ,"'
:il
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:
;J
I! · 'I'
:"k .~' '. .' ,,',
.' ,,, , "i'
• 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 TEMP Lout, 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; 11 Alia
\
.~
)~:
e1ispanibili.
\
.' .~
@)presentare a.l.la ALU il contenuto dei due registri sorgente e selezionare
l !
.,,1' " ·,1.,
sta.to della. tecnologia.
do porta all'adozione di memorie ca.che.
ii
'it
,;,'1;,I
"
.:~
,I ..J~
.\;t >.,l "
, \1
?,
'III
.'. ':-'
>
Elementi architetturali di base
Rl
51
~
~
R2' R3 . TEMPI A
L
U
TEMPO
Figura 2.10 Percorsi impiegati per l'esecuzione dell'istruzione ADD R3 ,Rl, R2 nel caso di W1 solo bus interno.
•. al terzo passe devono essere asserite Ie linee TEMPO..out e R3_in per caricare il risultato della somma in R3. ~
E
evidente che una maggior disponibilita di percorsi interrn alPunitA operativa .consente di veloclzzare Ie o~azlOn2.' Se, per esempio, IpotlZzlamo che aIPiiiterno~dT 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. At U, 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 At U 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 possibile che anche in fase di esecuzione si richieda I'in~ -:- 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.
e
2,3,2 Due approcci per la progettazione dell'unita di controllo . L'unita. di controllo puo essere a logica cablata, oppure microprogrammata.
rUnita di cantralla a1£: cablata
. "
"
La realizzaziane dell'Ua in lagica
--
cab~a
nchledeJa:Pr.ogettazion J_e~t~..§~.9.,:!.~nziale sincrona il CU_l c0JI1p.~:tamen~~_~_5t~to dal diagramma di stato in forma aggregata di Figura. 2. 7 e d_~diaK!2!!~Jl1a "c!.Lfigu,.J~.f..g
52
'il,1
Capitolo 2
,
"
81
82
'.'- '"'! -. '1
.. ', , ,,'I
D
)
RO
"
'I,
• •
ii
Rn-l '
~
...";
"
"
,,1
A
-~.'"
L U
~
,
W
l
V
,"
PC
'
'" ~ ••
,
MAR
-":~
MDR
'/';
'("
""
Figura 2.11 Architettura con tre bus interni. Vistruzione ADD R3 ,Rl ,R2 richiede un solo
clock per la fase d.i esecuzione.
,
•
;
,;
,A
~
.
~to
·"'~-
si riferisce alIa fase di fetch. Facenda riferimento a questa diagramma, l'unitai contrello responsabile, per esempio, di asserire Ie linee di coman do che, 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 .. J'insieme furFR:Me d.aJ contenutQ (del campo operazione) . .. to di DO oltre che van'li di st i DC stessa. Le uscite di UC, a arte I linee s no per ~, son~.~~_L£2.,?an 0 a a memoria e a.lres to lkl Sl.at.em~. 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 .' '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 rete st~ssa. Naturalmente questa solwzione e 13 menD efficiente e richiede un grande a.greco di memoria. Una . ne mi Hore e [icorr r a 10 iea to ammabile (PLA), o.QQJlre dCQupndo a tecnjche C per §i§te . . ro ettazione j J , ~ caSo necessaria un'analisi approfondita e comp1eta delle traiet on 15 ato perco:~e _
e
-.
e
l~Motivi di convenienza suggeriscono di codificare 10 stato di
sono Ie variabili di stato.
I( "'I [I~~'l- s/',,,,,, ~ I
ve, anziche tenere tante linee Quante
\ Elementi architetturall di base
l 1
53
,
1
"
,,I
,, .
UtmJ.· III cocmw>U-O
" I,
~,
_.-
ii'
;
,
,
\
1
"'! .' W "
..,
l '
•
I
i
~.
•••
•
•
-4:•
• ••,
~'
•
-"-
,~
-> • ,,
:• ->
-> ->
i-> •
•
,~
:~
\
I
~-> •
)
•
'
~_
i '.
II
.-
"
,
I, '1
"'' •
I
,
~>
~'!II
" Figura 2.12 Unita. di controllo a logica cablata.
"1' ;l ".
•
,"
,,'I
;. I'
;[.,
Ail' ,
~',
,
"
:
i"
-"I' ~'~ 11 ,
"7~~1'
:t,,'
..~ ,)\ ...
.'
r-
.. ;R.
e
.,,:
:~I
J
".;.~l, ,';~
:) . :lIe ~;ii: "~
_
'!i,;l
IllJi~QI .' ,.E,
"
':'<,., '. 'I
blata 'e la microprogrammazione. La microprogrammazione si affermb negli ~ni 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 fatta 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 la 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 nonnalmen~e viene incrementato a ogni impulso di clock, in modo che ogni impulso appaianc 1 successive parole di controlla verso In aggiunta a JiPC presente una logica che h: it potere di modificare il contenuto di JJPC stesso. Schematicamente il funzionamentl... it seguente:
e
,1,
)1
\
tpnita di controllo micrQprogrammata La soluzione altemativa alia logica ca \
":~i
.,.~
dall'automa. Esempi di questa problematica verranno trattati nel seguito.
1
,~ir;
ua.
e
a.
e
\ 13Nei microproccllsori la memoria di controlla e, ovvia.mcnte, una ROM ricavata sullo ste880 in J t~grato 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 microprogramma. Questo consentiva al costruttore di apportare modi6che 0 miglioramenti al funziona \ mento dell'elaboratore semplicemente provvedendo un nuovo, opportuno microprogramma. Quest, ) soluzione era adottata dall~ IBM per la aerie 8/360 e 5/310.
',LI
54
Capitola 2
,.,"I: . ,.
\
",
,',\'
UlQ!A' DI COhiiWlUJ)
,
'
'.
I
,
"-.,,
......,.. _ft,
\
~!
t; -4, -4'
,
---71
, f
•
i ............
--
-4 ~ -4 • : -4 '-4 • • -4 -4
, I
_...... M.
,. .
.. , .
••1 . -..
"
.~~
c. ._
~:I' >
! I
I
.
·'·Ii ,
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
\
I l I I \
I I
2. Ana fine della [ase di fetch, il codice di operazione in IR viene impiegato per determinare l'indirizzQ della posizione cia cui parte la sequenza di parole di centrolle (microroutine) corrispondenti alIa specifica operazione.
.,,
"I' ": ! I,
,.(,,. :-;1
'
,:~; "i }"
...,..
'1
'
'
3. Duraote·l'esecuzione della microroutine e possibile 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.
>
-t',.'
, ,
,~,
','
""
,
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 passato sono stati prodotti integrati commerciali the consentivano la realizzazione di CPU microprogram mate. 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'indirizzo 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 ~mpio di CPU microprogrammata the fa impiego dei componenti della famiglia e deacritto in [BNB81J.
".
, ;
.' ..
.,
, ~."
"
,;···1
.,,
\
·ll
>
Elementi architettura.li di base
55
(il microprocessore Motorola 68000) che avevano un ulteriore livello di rnicroprogrammazione, 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 necessario muoversi tra due alternative 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 in 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 appartenenza15 , riducendo in modo drastico la larghezza delle parole di cantrollo. Naturalmente, la logica complessiva richiede l'aggiunta dei corrispondenti decadificatori.
e
a
Iv 1,,2.3.3
.
' .
1'.
li
Cablata
0
microprogrammata?
I primi sistemi di calcolo vennero costruiti in logica cablata. Anche i primi minicalcolatori (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 microprogrammazione divenne 1a regola. Microprocessori, minicalcolatori e macchine di dirnensione media e alta vennero tutte progettate seguendo i cauoni della rnicroprogrammazione. 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'informatica. 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 architetture RISe (Reduced Instruction Set Computers) [HP92j, [Hop87], Emblematico il caso dell'architettura Intel. Il primo membro della famiglia, 1'8086 era una macchina 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
e
ISSi tratta del numero intero superiore allogaritmo in base 2 del numero di linee nel gruppo.
.
.<'
.::~ 56
;~.
Capitolo 2
,.
, '."
',l'
4
, .: i,·,1 ,~
16
.1
1
di istruzioni , 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 mi11 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 ·;i , 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- "i·;' 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 raggiun~ geva i suoi massimi fasti (anni settant3o), Ie memorie a semiconduttore rimpiazzarono completamente Ie memorie a nuclei magnetici, riducendo di molte il vantaggio~ 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% circa delle istruzioni eseguite corrispondeva al solo 20% del repertorio, ovvero che buona parte del repertorio eli istruzioni era semplicemente superfluo e non utilizzato. Percie 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 opposti. 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 funzio·nalita a livello di mi~rocodice ha solo l'effetto di rendere pili difficoItose modifiche e cambiamenti: molto meglio modificare una libreria di sistema che modificare una memoria di controllo.
Ie
.,.
.~ ~,;:
," ,
::".,
· .~'
'."".'
,
',
·',1
/I': .-
''i
.~.
-
<,; 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.
.
'.1
]
' ... . _ 'il'!:"'".r-.j;'~;
.y', -%,.~~~(.. -
-:'-·i<'"'~-·~T
..'~:'·-
,:;:~:!.n>~.':· '.~;_:~~ :"'. ,
Elementi architetturali di base
57
, 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'interpretazione 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 18 pipeline), difficilroen~e ap~lic~bili con istruzioni complesse . . 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 del~~ v~locita. i guada!SJl:i che si otte~gono Del se~l?lific~e ~e 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, e cambiato l'atteggiamento nei confronti della compilazione: un compiIatore 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. ,
.'.
. ,.
:
,I
",.,.
's
.
',
,~
1
:(~I
.
\,
;
'i
-l
.,~
:
<'I· ;}
. ,'"
.1.;1:
,
]I
Le conclusioni che si traggono dai precedenti ragionamenti fOrnlano it nueleo concettuale aila base delle macchine RlSC.
I I l, \
I ,
I
I \
• 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.
I
• 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. , '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'architettura x86 ha subito tanti e tali miglioramenti che ne rendono il funzionamento .sempre piu simile a quello delle maccbine RlSC. Un aspetto interessate e quello che 8i riferisce ai. registri 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 n risultato eche sebbene l'architettura continui a mostrare il solito insieme di registri, di fatto ci sono 40
I
ai
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. 1St
I I I
)
l )
58
"'i'
Capitolo 2
'.I
I
,:
,0.
I
,ii
.~
registri interni che prendono effettivamente parte all'elaborazione. La tecnica, peraltrc non esclusiva di questa architettura, e detta register renaming e viene largamente impiegata a part4'e dagli anni novanta.
\
I .
,'.,
,
,:., ',':.'
2.4 Prestazioni della CPU
"I· ·.
\ 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 sonG i fatton cbe Ie determinano. La valutazione delle prestazioni di un sistema di elaborazione e cosa alquanto compiessa e coinvolge tutti gli aspetti del funzionamento della macchina. Quanto segue si riferisce alla quantificazione delle prestazioni della
\ 1
I
CpuD tempo e la misura pili ovvia delle prestazioni [HP93].
,
,.
"
)1.,
':,'
.;'':1:,
,
.~i
~'~fl.
Si consideri un generico 't1 problema 0 un generico programma, 8i indichi con N it numcro eli cich di clock)l.c~ 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 ~gra.mma stesso, silla: :. "!
-
1
.
,:.
,, ..
Tcpu = N/j
,."'1.
Si indichi ora con N;~t il numero di istruzioni di macchina corrispondente al programma e si indichi coo CPJ iT numero medio di clock per istruzione di rnacchina. 1\. \". ,. . 0· ,. 0 Ovviamente CPT e definito come:
\
rC ./'
"~,~o
\ Cp/ = N/N,,,
ow.. <:_tX..
~
= Cp',
~ ~
~
'!:<;t
;<,J~
t
Tcpu =
(N,., x CPJ)/ j = N,.,
~,~'
,"
· c·1
.";.
.,~
co:': -~I
·1·. :; .'-,- ·.,? . "
"I
.~
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.
\
,~
1J-<;CeD..;.iI
sostituendo nella precedente relazione si ottiene:
\
.c'l·
wen ,:'1
:
,..,,
'I'·
<
"I'
.:', .
I r
\ I
r
• 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.
e
• La frequenza di clock della CPU, j, legata alla tecnologia e all'organizzazione architetturale della CPU. D progresso delle tecnologie elettronicbe e stato vertiginoso. Basti pensare che se nella. prima meta. anni settanta, (con primi microprocessori) Ie frequenze erano inferiori a 1 MHz, a fine anni ottanta gia si avvicinavano ai lOOMHz, per raggiungere 1 GHz (annunciato) a fine anni novanta19 . Per qiJanto si riferisce all'aspetto archit~tturale, Ie istruzioni complesse
,[ ': ,., .
.: ~
':,
"
., ,,:
. ;,
,
'J,
"
,0;
19 All'alba del 2000 i PC di fascia media sui mercato erano a 500 MHz.
,)
,
I
'"
, Elementi architetturali di base
59
richiedono, di norma, frequenze di clock piu basse. Da qui 1a spinta verso repertod 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.
• 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 e possibile 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 CPJ minore d.i 1.
,
)
.,
..
','
'"'j ,
2.4.J La valutazione delle prestazioni ,
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 '
,
;•
LXi = Ni,t mentre:
N = LX,Cp, dove
Cpi
eil numero di clock richiesto dall'istruzione Ii. Cp/ =
(LX,Cp,)/N,••
=
Si ha. dunque:
LX'Cpi
(2.2)
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 e state detto ai paragrafi precedenti (Cfr. 2.3.1), Cpi e it 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 produttore20 . Nell'ipotesi in cui si canosca il profila di esecuzione e qunque 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. 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 modalita 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..
•
I,
·
"
"'1
60
,,
Capitolo 2
,
..oJ
.'.,
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 esterno21 . 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 PI in base aHa statistica di funzionamento della cache, ovvero in base al tasso di miss (Cfr. 3.7.1).
.'
•
,
"
e
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:
GPlw = hGPl
-, ,,{, ,'<
"I, '~
.;
~i
+ m(GpI + w)
,,;-
e
dove hem sono rispettivamente it tasso di hit di miss della cache) C P1 calcolato 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
,· -;~..
,
,~.
"
..S~,
;.:;; · 'i .,
.
= (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, naturale 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 differenti 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 numero 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
!
.,'. ~ "
~,
'~'ll,,
II-
.;:
il
e
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 e it 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). case contrario occorrerebbe avere una sta.tistica degli accessi ai differenti banchi e pesare i relativi wait in base alie frequenze di accesso. 2210
"..,,
·,,!). :" .
..·'I,
'.
.:.~
..; .
,
'I
·:i ,.
~
.~ ~ tt :;,· , "
(,
.' ,:'..
':'1
· ' ,I
·1
ii
"I .y
,,
'it
·;~:
."
0-
~
.,u
',
·r
,!
'
'·,.i'.!f""'.','·"_·' :',~r,'1','····
I
." '
\
,
Elementi architetturaJi di base
.
61
. I
]
nel confronto tra slstemJ a ternativi, questi indici non sono di nessun valore e Cccorre programmi campione. rifarsi a misurazio.ni effettuate tramite l'impiego Da ultimo si cleve notare che Ie prestazioni complessive di un sistema di elaborazione 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. d.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 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. ·,
I
4i
•.
e
" -
\
t
I
I
.
,.
2'..4.2 Popolari indici di prestazioni
l
i
'AI
fine di farmre misure immediate delle piestazioni, vengoDo impiegati alcuni indici · che, anche se molto popolari, hanno ·gravi difetti.
~I:
,
";
, L'indi'ce
.,
nominato e l'indice MIPS. (milioni di istruzioni
-
iR'
~
••
.MIPS = Ni,tf(T, x 10')
,
!
-'
:~
l.
"
. !
.I,.. ';
~ ~
,;
I·i .
~
~rtl
, ,1, (, :'.
'I1·
1.
i'
,~
it:,
:i ,
-
~
.
"I ,. ,: ··'r1
u , "
,I:
, ..
!;~I,
...
'iI'
, con T t tempo di esecuzione del programma in secondi. , E intuitivo 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 c~ il comronto di indici MIPS di calcolatori aventi repertori differenti privo di significato. 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 ~me cio possa avvenire e il confronto di due cakolatori, uno dei quali sprovvisto di unit. per i calcoli in virgol. mobile (FPU), n calcol.tore senz. FPU potrebbe .vere un MIPS pili elevato dell'altro, rna questa non vuot dire che Ie sue prestazioni siano migUori; 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 m.nconz. di FP U.
I 1
e
.11.
I ' y
I \.
-
,
I
"-dice MFLOPS . Un .Itro in,,,,,, , 'fsttuziom ill mobile al secondo,;
viriOIi
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,
I I I I I •
,'.-
,'
:~I
.. 62
lI
.~
Ca.pitola 2
"".,
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 e uniforme. .
I
\
":1 ,I."
· ,. ,
" .~;'
::'i
'ill
': ;r:) ·.1'.1 · •'-1;,
';,l
.,~.
2.5 11 repertorio delle istruzioni
: ;", " ,;}
',';,
':.
.'r,.;
n repertorio delle istruzioni eli macGhina costituisce t,lllO degli aspetti caratteristici di
qualunque architetture ed e inestricabilmente legato all'arcbitettura stessa. Un'istruzione nel suo complesso farmata 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
I
... N
•··ji
.ro~
..;1
e
I,
CISC.
,11\
I
~,~
~,
,~
~~,
'K
'-')
~"!· ,Ii
;
'~~ j~ ·'tl
·(~
• .,1
I
,~,
'~;:j
·'·'·,'·',;'..:
2.5.1 Repertorio stile RlSC
"
,
Nelle architetture RISC il repertorio di istruzioni criteri:
I(
,.,..
e progettato
secondo i seguenti
·
J'
.. ..n ,."~".
,,~
"
,
':"~
,,~
, ',~
I
• Le istruzioni hanno tutte la stessa dimensione, per esernpio 32 bit.
• n campo del codice di
•
"I
t;j
operazione occupa uno spazio predefinito.
• Esiste un numero estrernamente limitato di formati. n cod ice di operazione identi~ 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.
\
': ".",~
t "
"';
'~'" ·'ii:
• ··i"
"
..·-I
.' "; .~ .~::
).? ·· '. . ..·"'
.~
I f
\
~. \
In Figura2.14 vengono riportati i formati di alcune istruzioni delParchitettura PowerPC 2 3. Le istruzioni occupano sempre 32 bit. n campo 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 e sempre 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). n codice operativo 31 ecomune a tutte Ie istruzioni aritmetiche tra interi a tre registri. II campo ALU determina l'effettiva 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
1,
'~
.
,~
:'1
". ;"
"
,'
23Del powerPC si parlanell'Appendice C, mentre dell'architettura x86 SI parla nell'Appendice B. 2"L'istruzione sc (Supervisor C41~ richiede 8010 6 bit. per il codice, piu il bit 30.
:'
-
. ",
Elementi architetturah di base
1\.. ,.
'
8
';,"1" ',; 'I '",,"I""~' ~ ""':"'" u
I"
'
i.'
,
ll·
, .
,
}
('
;, .
!,~ ,
I" '~ ,I
U
,
'
~
, ["
'~
,
B',,'",' , 8 I
; "
\ .'
.1 N,.t .
i :.
~
,
~
-
,
.
K
r",rwillo iatruzioni mtmetiche
E,..,mpio di i8lrU%ion. adlmdic..: IstrudoDC dl 'omm_
.,
,
63
I" '~ ,I U
(' ';,' I
)
·'I·
i:
;
' '",,' I ["
I , , I ,
;,~'
I , , , I '''[
RO,RA,RB ADO. RO,RA,RB ADDO RD,RA,RB ADOO. RD,RA,RB
ADD
Formal-o ialnizioni
(OE-a, Rc-O) (OE-O, Rc-l) (OE-l,
Rc-O)
(OE-I, Rc-I)
Illitm~tleh"
con opllr"ndo
immfldl..to " i:rlru;:lon.l dl <:ariclUUeoto " memorinnione d_i reslstri
~ ~ll :
(",~ "I" """
~1
""
~""""'"
ttl
FormalO i-Ilnujone dl nIt" Incondhlonalo
,
jl(.
.,.:',1.'
,
.
..... ;
.
n ",.,"
,~
~{
~
~
"
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 e identificata 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.
•.
~r
"II
j -
"( ,
;" :i"' '.
"~·
"
I
";..t
~~ :';
?
~.
~~
.. .". .·"t ', .
.~
~i;
1.
'I'
,,
'I" :
., "1
",i
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 5alyare 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 sa1t026 , ".In Figura2.14 viene anche presentato il formato delle istruzioni aritmetiche con un operando immediat027 . 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 e£fetto:
,.'
'I
'·f" '. \~
.',I· j
"~
1..
.
,.'~'t
"
.'~
_..
.~
';.Al
'
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 ~ecodifica, 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 e decodificato non resta che scegliere quali degli altri decodificatori entrana in gioco. :nL'operando immediato e un opera.ndo il cui valore e codificato nel campo stesso dell'istruzione.
.
.'..
· :i,,l ;
64
Capitola 2
.c,
,~.( ,:.;
·!t ·, _.
• ••,.
a
if "RA"=O then btelse bi- RA; EAt- b + EXTS(SIHH);
ROt- H[EA]; oVYero)' in RD viene caricato il contenuto della cella di memoria il
~
,"J_ t·, CUi
indirizzo
i
calcolato:
e ,'.,
a) come somma del contenuto del campo SIMM con il contenuto del registro specificato tramite RAJ se per RA viene specificato un registro diverso da rD. Si ha dunque un indirizzamento relativD a RA 28;
b) come indirizzo data da! contenuto del campo SIMM se per RA viene specificato o (zero) 0 r029 . Si ha doe un indirizzamento assoluto.
,
.,
:;;
· ~ '.' ,,'
.",
'.."
<,~
',;, "4,."
-"'..·
• '.
2.5.2 Repertorio stile NeUe architetture
",
elSe
'::" •
'.., ;., i/! .j ,'
elSe it repertorio d.i istruzioni ha Ie seguenti caratteristiche.
, l~
··
,J
• Ci sono istruzioni di differente dimensione.
"
',
.\
>:~
• II campo del codice di oper.azione non necessariamente occupa uno spazio pre- -c-::' '< definito. -A seconda della modalita. in cui una ceria categoria di istruzioni viene ;; interpretata, il campo codice puo accupare pili a meno bit. ~~ .'3.•.",
.:.~
,
• 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 e un byte. Per esempio, Ie due istruzioni STI e eLI (rispettivamente Set InteTTUpt Flag e Clear Interrupt Flag non hanno operandi 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 e il campo MOD RIM. L'interpretaziane purtroppo 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.aminare 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 memoria30 . Un esempio di istruzione
c
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.
" '
:'1
"
~"
'.
. '·wJ
'~'
. ., '.
·.'t.1
'.
"
,..
;.;
"t
'·'··'
1
,:
.:
"~.,
,· ,
)
.,
".
~
;i1
:
.
: .
,;
"
\
,
..
.,
',,,'.','.
.,
" .... ';." .:-j';t:..
to;: ,. :;.~':: .".. "
.... ,
1
,
,
Elementi architetturali 4i. base
65
(I'
I
'.
t' t
ISTRUZlONE
PREFlSSl
~
_' ·., ,
. I,lnll!ene
Dimon_ieno rndlrlne
,._.
I,
0/1
,I·;
,;
Cedlee
},lOD R/'"
SIB
3co,te.mento
lmmedlato
0/1
0/1
1/'
0/1
0/1
0/1/2/4
0/1/2/4
',; Figura 2.15 Formato delle istruzioni neU'architettura x86, per macchine a 32 bit. 5i noti che l~istruzione vera e propria pub essere preceduta da. ben quattro tipi di prefisso, che ne . ~Iterano 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 memo·ria o una quantita. codificata nell'istruzione.
,. , ~
'.",.
S"gmonlo
Numero d.i byte possibili per ciascuno dei campi dell'i.slru?;ione
~ ~ '' '
~
,", ',.'
0/1
Di.moo_iono Op_nado
\
•
·t·
,
' .
.j
, i
•",1,
,,: 1, ! " j''·1,
\
t
I 1
~
···tJ,
'.
)
codificata in modo diverse a seconda della modalita e l'istruzione PUSH. Uistruzione PUSH AX (mette sullo stack il registro AX) occupa un solo bytej Pistruzione PUSH mem , ., (met~e 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)
:.
\~:
:~
:'"
<:'
~.
;~
~~ 3i", ' '1
JIlem.
"'
"'f.
'" . .
1;'tr.,1'..
.~ 1 ". : , .r, ..
;"
t~J
2.6 Criteri di classificazione delle architetture
,
-::-.-
;;
,
14·
:-.:
::{i
~'ii ,t~
\
..I
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'elabarazione: At modello di esecuzione corrisponde Ia struttura e il formate delle istruzioni, c;on' p~rticolare 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"l 'r:.: '
l-
I
1"
.' J,w· ,
\
1
I
·i~
).;
,t'..
.i£
~\'II' .,:11.
ii·l· 1 :~• ;
.', .
::~ . If! .
, ""1' ".
F"lodello a sta~ Negli anni sessanta e settanta sonG state costruite macchine che modellavano iI madella astratto di calcolo basato sullo stack31 . Operaziani come per esempio un'addizione (ADD) non richiedono che venga esplicitato alcun operando, 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 formaalcuni linguaggi di programmazione di alto lismi comp~tazionali32 presenti
in
;;.'
)
I
\.~
,j,:
..
.' 't
;~I' ' '-'J!
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
' ":,,:1 ..)" ~;:
I.
66
,,
Capitola 2
.-
•-j
,
i .'
.~,
1
"..
·· '.",
livello33 .
",'
·"!
(:
Mode moria-mem9ria Sono state realizzate macchine in cui il modella di ':~J" 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. !'.
\
· ";~;I
:>-',
• - "'1
Modelle registri-memoria Le 0 erazioni yen ODO ese uite tra un Ie 'stre e il conte- "::::,, t' u 0 una cella eli mem2r~ 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 e implicitamente preso dar registro accumulatore, dove pure viene '(~•.,
\
:ti
depositato il risultato. II vantaggio e la compattezza del codice, contra una nan trascurabile rigidita. dovuta al fatto che tutto cleve passare per Paccumulatore. Naturalmente questa soluzione era giustificata dall'obiettivo di limitare i costi; di ~'1' fatto ~che i. m~ni<:&~olat?ri ~egli a.nn i s~ssa;nta prevedevan~ piu regis.t~i, spesso .:~it' " con differentl speclalizzazlOnl, e Ie Jstruzl0Dl dovevano Dommare esphcltamente ',~'~; gli attri registri. NelParchitettura 8086 si parla di 8 registri di uso generale, anche <,~,
tit.
\
I
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 piuttost~ dal. fa~to che cer~e ~stru~i?ni aritmeti~he.richie~ono per . :..,~I forza AX, mentre altn reglstn sono speclallzzatl III altre funzIOnI. OVVlamente, :'j~l; le istruzioni 8086 devono nominare i registri implicati, compreso AX.
I(
}il
Madella registro-registro Questa modello preyede un consisten~e blocco di regi-
t
stri di usa generale s stanzialrnent
. ollenti tra di loro e sern lid
0
erazioni
',;ti.,
.'.4..,
~ cancamen 0 e memorizzazione. Le operaziQni di manjpolazione deLdgli u~~ .~.il'
sernpre e solo revstp come contenjtOFi degit-&perandi e come~i deLti- ;':)J,' ~IOper~Qn.e. ~d esempio, I'istr~ion.e A?D RA, ~ .Re cal~oIa Ia ~omm~ :~I' del contenuto. d~ regJstn ~ e RC e deposl.ta I~ nsultato in RA .. L esecu~lOne dl 'Y~t una somma nchiede che pnma vengano cancatl RB e RC con gil addendl. ':;~ .-
I
.....,
· ,f
~
,
~,
In Figura2.16 si confrontano Ie Quattro prececlenti categorie in riferimento alIa statement A: = B+C.
[
I I
Nel modello a stack, non essendoci operandi espliciti, Ie istruzioni di manipolazione 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'operazione sullo stack. (letture e scrittura)j (iii) depositare il risultato in memoria (Iettura e
" ~.;"~', , , ",' 'i'
,;;1.
·;"'j: "1 ·· ...1
,;.'" ~,
~;)
'.
'r.::t.,
j
-
>,"
'
..
,.
,1'"
..... 33I1linguaggio ALGOL (Algorithmic Language), ormai in disuso, ebbe vasta influenza nel corso degli anni sessanta. 34n prototipo di questa architettura e atato il minicalcolatore PDP-8.
;;I', ~,
'
II 'd' '
,<
"I
'4
:4 .
\
,
'" 1' ", '.
-
67
Elementi architetturah di base
'
.
F§tack PUSH B PUSH C ADD POP A
Registro-Registro
LOAD Rl,B LOAD R2,C ADD R3,Rl,R2 STORE A,R3
I
Memoria-Registro ' Memoria-Memoria
LOAD B ADD C STORE A
I
ADD A,B,C
Figura 2.16 Con~roDto in riferiment~ aI. ~odel1o di esecuzione, per 10 st,atement di alto livello' A:=B+C. 81 suppone che Ie Var18blh A e B non debbano essere modificate.
.
, .
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 cod ice. 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 delPindirizzamento." Per esempio: una volta che una variabile e stata 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.
2.7 Indirjzzamento Uno deg.li aspetti piu importanti di un'architettura e dato delle modalita. di indirizzamento in memoria, ovvero come vengono raggiunti gli oggetti dell'elaborazione (costanti, variabili) e come viene passato il controllo tra parti diverse di programma.
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 p~mt&tore 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
,
'E
"'.
·. \
68
Capitolo 2
,,'
,
.",
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 "byteJl di 6 bit. Ovviamente, non essendo previsto l'indirizzamento dei byte, Ie .. :,:~ operazioni che Ii coinvolgevano, per esempio per il trattamento di informazioni alfanumeriche, 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 ':1~ della Hewlett-Packard, leggevano e scrivevano in memoria sempre e solo parole di 16 . i~1~ bit; Ie istruzioni occupavano sempre e solo una parola. ;\':', Nelle macchine oggi in usc, pur essendo l'indirizzo riferito ai byte, e ovviamente ";:~ possibile trasferire, oltre al singolo byte, dati di 16 bit (semiparola), di 32 bit (parola) . i}j e 64 bit (doppia parola), sempre che ii bus 10 consenta. " Se un'istruzione fa riferimento a un oggetto che non un 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 e considerato nella posizione meno significativa 0 in quella;:'1 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 'i':~~r un bit del registro di stato che imposta il modo di funzionare della macchina [Jarn901· .i~:~
:'J
:,;{
e
•,j-!
" ,.,
,
,
Indiri:zzo di parole.
·.::;i .J (: '~ d ,,,,,l ,
3
2
I
0
o
0
I
2
3
7
•
5
•
•
4
5
6
7
Liltle Enman
Ell EDdieD
-'I '-
,.,~i :1;< 'j';
J~i '-" "".~
,~,
Figura 2.11 I due possibili ordinamenti entro una parola. Quando il byte che d~ I'indirizzo ,:!( ',.: alia parola si trova. nella. posizione meno significativa si parla di Little Endian) quando si· '~i ".b' trova nella posizione piu significativa si parla di Big Endian. Schematicamente e come'se gli "j" indirizzj crescessero in versi opposti. '~' •'. ,
]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 .}m
~l :. •,
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).
.
:..
"" '~
<<
'
·'j
,,\
: · "
, EI ~ ....: ,,~
\
" Elementi architetturaJi di base
69
'~,
,I •
e
1
e
· altra situazione in cui l'ordine dei byte rilevante nell'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.
,..
J
'. ~: ~ :
J::
~
\
t
.
:,>;,.1
2.7.2 Allineamento
~"
~;:
\
-
· 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 ', " : 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 jl 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 'I· rappresenta un rallentamento e che si richiede la presenza della logica per rimettere ~ .. . in ordine i byte. Per questa ragione, l'allineamento richiesto in molte architetture, 1i 'in special modo nelle macchine RISC. Se viene tentata una lettura 0 una scrittura a -' una parola non allineata viene generata uo'eccezione37 . La dimensione del dato let~fl ' tojscritto determina l'allineamento, Per Ie parole l'alLineamento a indirizzi multipli rl. di 4, per Ie semiparole a indirizzi multipli di 2 , per Ie doppie parole a indirizzi multipli ~:' di 8. !". ,;~. ," '"', , i~· J ~, '. •• . d.· . a ._-~.; ?:: (:'," .:.,;~@:<.:,:,: ,.__ ,t.,.
,
~
e
\
{it..
'.
e
e
_:.....
ll. , .
I'J!,
. ...
3
""'@f J ·: ,,;:.....:.¥'.2:F','i'\"< " ""~"
~~;,',
iih ~ <-;; ,
i'
2
:.~~/~:
,>(~-;
3
2
v
,.'
~
,~
. - . ,• •
~,,~
. -."":":.;....,
i+8
1
o.
i+4
1
a
1
'
~. ,.
(
,
i1
'
"
•
:,'
'I ' bt.
':~
Bus dati
"
1.
]:
m,~;,
l ,.:
.:'..,
..""1
"
'
'-
t
0"-,,
t o,,~ t
.
'" .
-. \t
j'
\ I
In-,
1
~
.
'0..
:,,~ "rtl
I ~
'. 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. p08izione·le due met~.
~l
:
D'H'
I
37n
significato del termine eccezio~e-~ spiegato 301 Capitola 3.
j
• "1" . . .."
,-/ •
,~~
.,
-
':1~
,I
70
Capitolo 2
',~
, ij
,
"1 +,. .,
,....,! :
'".13 .,.
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 me~ 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 D23 _ 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 p~r 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).
\
j I,
i (
~ .i,
· "',
,J~.:
.. \'
,,~~!,
li;\ .' "', .. · "I;. ' ,
.,.
-':9....;
." .. :~ ;
.;
":
....'''ji~,. ·" " ',"r~ ,
-,
., . .- "....
"
"~
;
,,::,~. '~, ,I
(iJ ;
,""1 .
',::r1"" " ,.:;,;
.,. .
\,
-'('"
,. "
:~'1'
j'
,
,\
';:~.
,','~~~ : ':'~~'
"":.~~. ~~1 f
.\~ ; :~y~(
:
2.7.3 Indirizzamento dei dati
:ri:.if,
....,~ :
(
Esiste Wla varieta di modi per Pindirizzamento dei dati in memoria. Per prima co- ~j,~;~ r sa analizziamo i1 problema della codifica dell'indirizzo di memoria nel codice delle .. (~~ ~ istruzioni e nella sua interpretazione, ,:~. Facciamo riferimento a una macchina del tipo registri-memoria e consideriaroo '~:&h un'istruzione come LD RA, var, dove var il nome simbolico di una generica posizione' .j~/{:' in mem~ria, Pres~b~ente il, foqnato dellJist~uzione preve~era. tre caI:?Pi, di c~i ,.:~l uno dedicato al codlce di operazlOne LD, uno de
e
I I •
,\ I,
\
"".',"
/l.....
••
Elementi architetturali di base
10p[pl'ND
, ,-
,..:, .,
71
I
':.
' -', . ,
I
,':
op
I I I Pb
P,d
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 permettao Se per esempio la macchina ha. un bus di indirizzi a 32 bit e Ie istruzioni sono su 32 bit e indubbio che la dimensione del campo INn delPistruzione in alto sara. comunque inferiore a 32. Occorre prevedere uno schema in cui IND e solo una componente dell'indiriz.zo ca1colato 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,
'
.
,
;\
','
I'
;' .
.
.... ,
,~
',',
,..
. ~'~' ,::'
la finestra segue l'esecuzione del programma stesso. n PDP 8 adottava questa tecnica, anChe se la finestra indirizzabile era di soli 256 byte38 Nelle architetture correnti si preferisce interpretare IND come uno scostamento rispetto ad altri registri, mentre il PC funge cia riferimento solo ed esclusivamente 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 cor~isp?ndente diventa, per
:,~, :,', ".,.
.' . ",;\
f,.:.,
; -'.'
:.,~,,': . ,":.'
,·'.~,'·
,
:~.;_: . . : .,~:~;
r~:::>:~:,">.,
~::~rf~~\":~: ,~[(-i ,2':,,:; , r':::,:~':~:::
esempio 1 LD Rl,var(R2)1 cOll'Rl come Rsd (parte bassa dl Flgura2.19), e con R2 come Rb.. . Sqrge qui un problema: in base a Quale riferirnento puo il compilatore (l'assemolatore) calcolare IND per var? ",., Supponiamo che la memoria sia lineare 1 ovvem che 1a memoria sia un blocco ,.~oncettualrrienteindifferenziato di celIe, dall'indirizzo 0 a.lPindirizzo M-l. La COS3 pili 'naturale ipotizzare che l'assemblatore determini l'indirizzo d.i var rispetto all'indiriz'zb 0,. assunto convenzionalmente come base eli part.en~a dell'intero programm~, e che aU'atto del caricamento del programma in memona 11 campo IND venga aggmstato in mod? da tener con~ de~a posi~one occupa~ in memoria. Questo proce~s~ viene etto r;locamento 0 nlocaz~one (Flgura2.20) ed e svolto da un programma dl SIstema
,' ';, '
e
';T':'.;~'::~ ::X'~;:t~,:
\P;;';"""
N!:<~--,!~ ,:,:-0..: -::,
'.,.. ,-<::..,., .,' ... ~,
:,i':"1·i:',··
38'
.
..
..
.
. ,
.
. A .tltolo dl cun.osl~a. 91 ,rlP?rt~ l~ .Sol,uzlOne adottata. dal calcolat~n HP della sene 21xx" ~a macchma era a 16 bit; IstruzlOm e mdinzzl sempre su 16 bit, La memon3o era concettualmente divisa in pagine di 4kbyte in posizioni fisse. Si distingueva Ia. pogina corrente (quella. in cui si trovava il "controllo) dalla pagina bale 0 pagina zero (Ia prima. neUo spazio di memoria). 11 campo IND era '~':"\' '--, '" ' ~i ~2 bit, cor~is~o.ndenti a 4kbyte, e veniv,a inte~pretato come ~ nu~ero assoluto. Un ulteriore ~it ~:"'" .~;.; ln~!cava ~e l'lndlrlzZO era da continderare In pagma. corrente 0 ID paSlua base. Con questo artificlO, ,;',: .. ". un l~truzlOne, dovunque si t.rovasse, poteva indirizzare dirett.amente 8 kbyte, di cui 4 kbyte nella ,'.','1: to ," paglna corrente e 4kbyte nella pagina base. Era inoltre prevista la modalita. di indirizzamento :. :.' '.'. in~iretto rispetto 301 contenuto di memoria; per esempio, l'iatruzione LDA mem,! caricava nel registro ~ ~"":'.'. A It con~en~t? della loc~io.ne di memoria. ii. cui in~irizzo era contenut.o in .mem.. Struttando la p~gina $ ;,":,:,:-t. ,':' ~ase e lln?l.nzza.:m ento. mdlretto .er~ ,?osslblle ra~lUngere qualunque destlO~l~n.e. Bastava: sC~lvere ~ ,.'. . In una pOSIZlone In paglOa base l'mdlrlzzo da raggluogere e programmare un IDdmzzamenw lOdlretto . :.,.... ,', ,.,,:',.. attraverso tale posizione, Era cib che faceva it Linker nel cancare i programmi in memoria: quando :.:: \-','. - ~n ~ndirizzamento $Contin3ova i limitidella pagina corrente, veniva modifica.ta l'istruzione rendendola. ~ iH:;,~~':~;' ~" IOdlretta. attraverso la pagina base dove veniva generate l'indirizzo desiderato. :;;"; ',,' _,
'.'
~~"
'>.
'\~.'-
,,','-
. .,•• ".'
!.~
,
72
...,~
Ca.pitolo 2
:;;1
::d
,.;..1 ".,
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).
. .."'\. .'" ,
'~-~
,., ...
~
, ,~:,
.'.'
x+160 180
I
~f
var
I
' ,,:,:,,~
'"'
,.:,
',~.~~
x+44
' '-;1
Rl.x+180 R2
• LD
Rl'160CR29
,.,;3
.r9f. -;":,&
o
'~::fJ 'F' 220 lli1 ' di ' 'd' .. ,." ;]1 19w-a. ocazlone un programma tn uno SpazlO 1 memoria hneare. I ca.mpi " Ii' ..1:_' , • d I .. ..,,~,~ -) re Ia:tl~ ag mUllI~ZI sanD calcolatl , aJ l~e~b~a~o~e' a daJ campllat~re m riferimento alla };~ pOSLZlOne conveuzlonale 0 nello SpazlO degh mdinZZl, AlFatto del cancamenta in memoria r~·~ Spllzio desl! indirizzl
Programma rilooato in mlmorl..
questi campi vengona modificati in modo da tener conto della posizione eli caricamento dei .~'~~~~ programma in memoria (indicata con x). ..~
:'i1'
'.,.':J~ '-._
'tm
L'altro modelio di memoria e queUe In esso si assume che 1a ::~~ m~o~ia sia divisa in se~enti, ~i posizioni e dime~~io~i,non fi~sel e che ci siano alcuni regtstn ~hel al te~p,o dl e.secu~lOne, contengano 1 mdinzzo dl partenza (la base) dei ~J~ segmentl, Co~e mdicate 10 FI~a2.~L n mode~lo segt;nentato cerrisponde meglio l~ 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", un certo grade di complessita.: bisogna tener presente che i registri di segmento sono }O sempre dietro la scena e c~e ~tervengono ogni ~oIta ~~e ~i~ne generato un, i~diriZZO, .'; 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 ';; termine di indirizzo effettive (EA) per indicare Pindirizzo calcolato della CPU at. J~ traverso 1a sua espressione esplicita nell'istruzione , indipendentemente dalla pres~nza ':: dei registri di segmento. Se 1a memoria e lineare, l'indirizzo effettivo corrisponde a '~ quello fisico, se 1a memoria e segmentata Pindirizzo effettivo cleve essere sommato al :f contenuto del registro di segmento per ottenere l'indirizzo fisico. ,~~ segmentato 39 ,
i1
., ..
, "
"~ ~
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.
':' ~
'
,'
"'
it modello della CPU 8086, mantenuto l'Appendice B. !liE
in tutte CPU che Ie hanna falto seguito,
Si veda.
;
:
',';;:;;'' I"': ...,
~ ,~~f.'."""" :t'i),,~ .. 0",","
f
'*iP::~('~.j'1 ",- ~ " ':,~,j!'·;"lj,.;\·.:; ·.. i. ~':··~;I!~,~<~' 'l-' , ..'•,. ..... t,;'
~;:~,,::.:/:.
•
Elementi architett'urali di base
,':..-:.--_-------====-=-=-'-"------
, ',<:'", ;:;:,~,:.:,;">~:-
..
,,:";i':('..."" ~
-
;
n' ',.
,
'
.
.",
x+160I
. '
160
'.'
:
:i,
,
I
,
'.~' .;:~.
,
v",
E
44
....,
~ '~
f
,
': ..\-:: '.. ", ' .. '
1
~~
"'. ::',
,
73
1.0
Rl.160(R2)
\
I
.+4
, ,
v",
to
R1,160 R2
Rei. Selmenl )
0
"'.~ ,
Spa:z.io dllaU Indlrlni
•
•
Proaramm.. riloc ..lo 10 memona
1 :'. :,",
Figura 2,21. ~l?~ione di ~n pr~gramma in uno spazio di. memo~ia ~e~entata, I cam~i ',. ,"'., relativi agli mdmZZ1, calcola.tl d~l asselIl;blatore 0 da:I co~pi1atore m nfenmento alla. ~OSI "'-' '., ,,:' " 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 ~he venga prima calcola.to l'indirizzo effettivo come 8O~a' d~ ~ , ' •. ' 'contenuti del campo IND e dl Rb e che questa vengs. sommato a1 contenuto del reglstro dl .' - ' ;." gmento per d ' J" m dinzzo . tis"ICO in memona.. . etermmare :'-" ... ' se . .
3
. &
,:. '. ', "
J
1
~
) ~
~;';l.".:'··
..
~ ;:, .. (" ."
'.
" .. ' d' tt E" I ' " li di' diriz' t ' . ·'1 .' ,:,'." .. IndU'lzzamento Ire 0 a lorma Pl~ s~~p ce ~ 40 zamen ~ ill memona, 1 :, .. ' ' . campo Vlene mterpretato come tndirizzo effettlvo . EsemplO:
'
,w.dirizzamento rcla.tivo ai registri Come discusso in precedenza l'indirizzo effettivo. viene calcolato come somma di IND e del contenuto del registro ,''Esemplo: .~): "81 var(R2) ,R5 i EA = IND + R2. .', ' in ,'. mento indiretto ris et . re 'stri Simile aJ caso precedente, masen"".. ' ,za un campo III nzzo nell'istruzione, Esempio: ' . 'Lo 'R1, (R2) i EA = R2_ '.' .. . . . . .. . . I elatlVo e mdicla e c ~l agglUnge un seco~'.do registro con la funzione di indice. E molto conveniente quando si ha' ache fare con strutture dati (vettori, matrici ecc.): nell'indirizzc;u-e it generico elemento, si fa fare al secondo registro la funziene di indice nella struttura, scaJando in base alia dimensione delPelemento stesso. Esempio: LD Rt, var(R2) (RX) ;'EA = IND+R2+RX*d, d ela dimensione dell'elemento.
~:- '., " .:'"
, , .','" ~: ...
O ,~; '-",",' :., ;~: <,:":'.'.: :~.'" ,'/. ;'~.,:, '-:
~
:~ I, ~~ .
"
I
f.i
~~L,
'
.'
",.'
...
~' ~_
;: -, :,
,.
'~l~ ~~ . ;
',;~r"
,'. '
\
r!
,:. " ~ . ,\'. ~· ,:( '.. " ~.
\
~
, "'EA = INo ovviamente R1 +- M[EA]
LO R1 var
'
1~
I
rnu
~ ~,:..>'. ,,' _.m' '
~~.: ;"
t
'
,
" I..!.ldirizzamwo iudirettp rjspwo aj resist.; cop au~emeDt.o Consente eli incrementare automaticamente il contenuto del registro. Anche questa e utile per ~dirizzare it modo incr~mentale 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 '. ,i.
"f" ,, 'v"
11 "'
;f,~
:~
"-
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 e permanentemente 0, oppure la soluzione indicata a pagina 63,
,
•
-, A-
. :;Al ' .;~
14
" .:,j
Capitolo 2
~(,
.'1;
Indirizzamento jmmediato Non e propriamente un indirizzamento in memoria. Al programmatore consentito 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 e gia in CPU, Esempio
(
e
I
LD Rt,2461
e
I
,
· .<;
"'t " " .:fl · '~-,
d' "-,
; Rt +- 2467
Indirizzamento dei 'registri ~eancbe 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 predefinito. Esempio: HOV Rt, R2 ; Rt +- R2,
I
"
.'.;
2-.,
;;-:-
..
:
-,, .:~
· .. ' ;:,'.
" "'~1
"
'if,
,... Indirizzamento d~orte 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 . ,.""1 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 ,"';'c ,-.,•• , hanno Ie istruzioni In e OUT. Esempio: ":); -'
JI
."", ·\~i.
)'1
\
~il
IN AL,PORTA
j
AL
~
PORTA di Ingresso l dove PORTA
e codificato in un
campo eli 8 bit dell'istruzione.
I I
I I ,
t
.,
".!
'1,-
::"4; : .• ¥;':
, ';$
.::"" ., ' ~.,
.'
2.7.4 Indirizzamento nei trasferimenti del controllo
... ~;~
';"i'~t.
_:~!..! 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 ':.~·$1 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 e piu probabile che la misura della distanza del salto sia meno contenuta, ','J! . Per Ie diramazioni la norma e codificare lo scostamento della posizione di desti- .~~ nazione rispetto al PC. Per il salto e per Ie chiamate di procedura, molte architetture i~ prevedono che il relativo campo dell'istruzione vada interpretato come un indirizzQ "
:·.i ':
,''',~'"
·",,,.'.",..
I
~
'~"ft
,'/~~
-;:4
(i:
: '~.j
"'. ':~A
,,~
\
2.8 Esercizi
I \
;f§
.~,!
,,,,
•..·fi
Esercizio 2.1 Facendo riferimento alIo schema di Figura2.10 e alio schema di Figura 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.
;~
A-'. '" Elementi architetturali di base
75
'
n lettore 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).
t' l· ,
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 eff~ttua Ie azioni corrispondenti al caricamento in R1 della cella indirizzata.
'
j
--
..
Ese~cizio 2.3 Ripetere il precedente eserclzlO per l'istruzione ADD Ri, R2, R3 per
-
" ".. ,."
..
l'architettura di Figura2,l0 e di Figura2,lL
rose
Esercizio 2.4 Illettore si procuri il manuale di un paio di macchine (PowerPC, MIPS, SPARC ece.) e conrronti i relativi repertori di istruzioni, evidenziando gli aspetti comuni e quelli non comuni aile difIerenti architetture.
"
:"
-
.,
1'
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.
.
-'.
:-
;
.
.,
r
:
. .
, ",
,"
.
"
:. '
':
.
'::..
1
,
.-
,~:,
~",
"'"
!,
~ -" .
~ "'? '.
",
~' \
i
l
,
" . .., . . ~' ,
t
~
"
.
.'
~"
4 : ....
: '._
j~ ,
.' A
~
'
§
!
,ii'iO .:.
~~,
•
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 cmamata 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. '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. Esercizio 2.8 8i ripeta I'esercizio precedente in riferimento a una macchina RegistroRegistro 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 sottoprogramma 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.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 e pari a 4; (b) la fasedi fetch e la fase execute sane sequenzjali (non sovrapposte neanche parzialmente); (c) 10 spazio occupato mediamente da un'istruzione in memoria di 3 byte. Inoltre si assuma che la fuse di execute richieda: (i)
e
.-..
/
16
'Capitola 2
~
~~~
'Si\ -'~j
··-r . '§.
Piu'·A·
per il 60% delle iBtruzioni 3 cicli di clock; (ii) per il restante 40% 3 cicli di clock, la lettura ~ la .scntt~a eli un data III memon~. 11 30% eli questo.40% legge/scrIve un . \~i 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- i~' tura/scrittura dei dati a 16 bit avvenga sempre a indirizzi pari; (2) it rapporto tra .1~i! Ie prestazioni tenendo conto del non allineamento dei dati e che dope un salto Fis- "I ,truzione potrebbe essere a un indirizzo dispan. A tal fine 5i assurna it 30% delle (, letture/s~rittu:e dati a 16 bit trovi i~ dato nO,n alline~to 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'4 · ':''M~
);;i~ '~11!
"~~
",'t)
":;~
:~.
,,'.i'
',.i? .,
.,~':;
.:;'Jll
•.~
•
"i;'fi~
· .. ~'
·
;'~i-I'
"~y. , ,t:,\>
,,'::~l;
y
·,'r'i
,~,
,~~,
,:'3
.tt
..,~
~
,
\ -...
'-_.;; ,-
;.: .
.\-~,
:c,:.:',~:
.
A··~». ' , •
.
<~ ''; ".' ','
,'1 ";:)
,'.,' ::,:,'
":_'. "..
',
!
•
::..
\
••
La memorIa prmClp
!" :..:....
_
I
il'.
,:.. '
1 >: ':,'
'il:
"
l '. . .~
\
,'. ,..' , ." ~ r:", ',".",'
,
I .,
.
".
;.::
. c
4 ;.:,....
M
~
,"
"
'
.
'
'.
~ :,~'::.,'",',/',)n modo molto schema-tieo, l~ mez.n0:ia di un c~colatore puo essere ~visa in memoria ! I"""",:" '. . interna, detta anche memona pnnclpale (mam memory), e memona esterna, detta
I
~ ,.. :: . ,.~ anche memoria ausiliariao di massa. Sia la memoria interna siaquella esterna possono
); ::::~ ':,'" ,.',:"c. essere di varia tipo. La memoria interna
~
e com~mlt~ 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 " " ,,'(DRAM). La memoria esterna e, di norma, composta da diBchi rigidi (magnetici, ~. ':>."",'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 solt ,':<'" '; ";" " 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. ~" r~,ti'i\':.',~' ~SUJ~~ ovvio che mott.i dei .re~u.Uiiti. elen(;ati sono .in ~ontrap~os~ione tra di loro. Da A<:" ~~, ',:,:, CIa dlscende la necesslta dl dlmenslOoare Ie partl di memona lD modo da ottenere ' '. " .."...... ' .! :;_:,;:,::~,:':',-'i r~gione~~li pre~tazioni a costi sos~e~bili., In aiuto aI. progettista ~iene 1a p~priet~ >1 I",~'if,i~'~:.'" ';' dl Jocahta ,spanale e temporale eSlhlta daJ. programml. Tale propneta suggensce d.i ; '0,~,,~,:,:~:;,;.<~_' .rgani~zar:e .Ia ~en:?ria .in modo gerar.chico l con me~orie pi~cole e ~~loci (e dunque '::.~~\.'.:t\k'~:costose) ~~ ~vel~ p~~ altl ~ella gerarchia e con memone ample, rna Pili lente (e menD i" ,!;:\':~?'::/,::, ~ostose) ~.liveIh pIU basSI. ,~ ,',;~" .',:',",:~,~,: ". ' Questo capitolo e essenzialmente dedicato alia memoria centrale (main memory), ,/, '-,;>.,'::·,,:.':A conclusione del capitolo, viene presentata una sorta d.i rassegila dei tipi di memoria correntemente (anna 2000) piu diffusi, anche at fine di orientare illettore nella selva t. ::,: :;:. dl sigle In contmua crescita.
y
3 :", ',','
~~ :.,~,:
~.,
.,
I'I
I I
'
,f}:';, ~,1
Le memorie RAM
n termine !tAM e l'abbreviazione di
Random Access Memory (memoria ad. accesso . 0 di memoria per la quale i tempi di accasuale) e dovrebbe' . ~ 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
~
78
I
, 'i~
:I: e,:\: "
Capitolo 3
:liJt.~
'.'b.I.-
)"",,
',',,~
..
<.·J,
,_. i' ',I{'. "~r .!' -
JW..l-Parametri di valutazione
'~' '~'.:,".' ~~.;~. ,{:,;
,
I
Nel valutare la memoria d.i qualunque genere l i parametri rilevanti sono i seguenti.
:~:;'.t- '..~~. ~
.•",
'
{:}!~10\::
byte. A volte la dimensione viene data in modo .:i'Ur~ \:,3 da descrivere l'organizzazione interna; per esempio, una dimensione data come :"'~J~ ~t'; 64 K x 4 bit, indica una memoria di 65.536 celie di 4 bit ciascuna; "~'~;~ t:;:
• Dimensione; fornita in bit
0
;,"j,A
";~:
me tern 0 di accesso, ovvero l'intervaUo ":~di "..: di'ieim; the intercorr a 1a . . . m ento i . . :j'i!:.~ :/t -.. ,'!;" viene reso disponibile. La velocita, pur essendo un fattore c iave , non deve ;:~:~ :~'.. essere SOvIa!mmat"a: 51 deve impiegare una memoria veloce laddove estrettamente ;:~ . ., .,-,. necessana. .'H~ ,\
I
• Velocitti; generalmente viene iudicata
I
/\1
".~~
\
,.'/:",:. n' .' :.,(r; :, • Potenza; il costruttorelornisce una potenza media, anche se l'assorbimento non e ,-,.... .....,":ir,.. ' .. 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. :~,.l~' ·..' ..
,
".'
~
'.
~>~l
\
'..'. lJ , .:
by).
\
'''
.;;':;4; '" .~
e i1 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 e 1a densita di memoria minore e ifSuo costo unitario. '1J~1' .-,'),.... ' '· ...'Ii ," lntegrazio!; un maggion~ Uvello d'integrazione porta con se tutta una serie di :~;::~"i ,', vantaggi etti e indiretti; in quaiche modo si tratta di un parametro riassun· · -.. ,
• Costo;
~ !
,
"
.~".t:
•
I
> .. ~
,
~A "
tivo rispetto a.i precedenti. Tra i v ta i diretti c'e senz'altro l'abbattimento ;'):1', ' ~:t. , dell'occu' rica e la riduzione dei conswni. Tea i vantaggl in otti ;'.':1'., '" ,,~ n uzione dei costi di assemblagglO e e partl l e Sistema di alimentazione e ';.'1',' al' e. Si deve inoltre sottolineare il fatto che I'integra- ·.r::~ . dello zione induce una ~ore a.ffiQabilita, riducendo i1 numero dell . essioni • . -;J ente attraverso Ia i~ esterne. n livello . integrazione viene ffilsura 0 norm menslOne; minjma che si riesce a ottenere attraverso i1 processo tecnologico (es. 1 .•.:~ ,.".".' micron), oppure attraverso 130 densita di memoria per chip. "" ", '. , I
->..: ·f;}'I~
J,
\
,;')1.' ';~l "·\1 ,:'j'
·~'I.
3,,2
J.
,'.:1."ii
e
.. .>'',',.1 ,
e
La cella fondamentale di una RAM statica memorizza 1 bit e costituita 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, 5pe~ cialmente per i tipi piu veloci, relegano questa tecno1ogia alIa realizzazione dei registri , ~el processore 0 1 al EiU, eli memorie dl p~~c::.,?~en~i.Qni>--~
)
",,;~.
,'.'"
",:! ., "
..
'f:
"
\11., ,
'\i, 'f"
:"n
\
:v.")-L'';,',' ..
:.:!\i"~';:>'
",V" •.-.. ,::;.\
~~.~'
~t·;:'f~~Y:i~ .. ...... .' :l"';""""l<>":'_'~_--------~---------,~':~'J..' :,-' " "::--, ·r~·.' -.','.-" .
~~ ·~
:~~: 1", L~.~~~<:~~U~.~,~~~y~"~"=·~"r:=~-
T
·~
,,,,,,,~,
.'.'
,··v·~·"
,,~
_
-,
.....
79 _
~'''-:' ~
.,~ '''''',~
.i'·)'::.T: .'.'
-c,;'" ,. '~"" '
';ii;h?: u sempio di memoria statica ,,:"" '·':'~···"Jt:~:~::::.:.n'..::e:::=;:.:.:..-_-----:-~~~~ ;:f+~;;~:·,·:·:,".. ' .'
,,".'.'
.'
4
.;':;' .. ~,~.' F'
.
.
•
3 1 viene riportato 10 schema a blocchl dl una SRAM orga.mzz
'·;.o.:'''.':.,:In 19ura . .
ata in 524.288
1
::}:·~·": arole di 8 bit (512Kx8) .
3~~~(,1 r:'.'p
' .'
;.~~:i:·
:':~·;\~',·,
:',<:."
VC c
''"',..
G ID
:~{:~-:.~>. '..;
, " ~
~
~
t'..'.,. :~,:.':'
"., .... ,
~, ':} I: ~>
~~:/. ;.~. :~";~, \".' :t.:... , .. ',' .' '. . ,," .,.. ,... ~~.'.', ',... . .. ..:.- ,", :: . "
i \
.:',:"
'
'
'. . ., . .
. .
,.
'.
'"
~
~,,'.'
,
"
~
rv
524,288 x 8 4.1:14.304
0
u
C' ,
I/0 g
0
Ho.tric~
'0
~
'8.r ~
•
" " ,
0 ~
..
•
liD,
Q
A,
,," ,"
"'
,
.
~
,.,
,
0
~
.. ,,' ''''''.'' ~
l'
Buffer di ingress
~ ('>
"
. I
Oecodlf. cl i
f-colonno.
"
Circui'tl di controllo
- IE
C CE
•-
•
~
~
'._', "
•
-, E
", ",' " '
, ;",' . Figura 3.1 Schema a blocchi di una SRAM da. 512Kx8. "
'.
.
. ,-
~,
'
l'
i'
1
,,-
..
:I'
"
" '-1 piedini di interesse sono i seguenti. • A _ Als. Linee di indirizzamento. Servono a selezionare una parola di 8 bit. o • 1/0 0
_
I/Or. Dato in ingresso
0
in uscita.
• WE. Specifica se si tratta di un'operazionne di lettura/scrittura. Quando e basso i dati presenti su 1/00 - l/Or sono scritti nella cella indirizzata da AQ - A 18· • ~. Abilita i buffer d'usdta nelle operazioni di lettura, permettendo di risparmiare corrente. • CE. Permette di abilitare/disabilitare il chip. In Figura 3.2 viene data la schematizzazione funzionale. Come si pub vedere l Ie SRAM sono di facile utilizzo: e sufficiente fomire l'indirizzo. e specificare se si tratta di un'operazione di lettura 0 di scrittura.
1,
,l "
n.
I Essa
corriaponde, per e5empia, al madello AS7C34096, un disposit.ivo fabbricato da Alliance Semiconductor in cinque diverse versioni caratterizzate da. differenti velocita..
[; ,
.., Canitolo 3 .
"
.
-In ~l'2K:o
512K,. 8
8
1100
'0
" <
"~
1/07
W, 0'
Q
Z
'"
CE
\
CO
o
'"
eo) Ll!ltura
" ,'~~ \l-
"
Q
Z
1 0
"
,kl;
i";'~J
,:\
<
"a~
Q
N
",',,~''j ";'1
,..
)
"'~
!!!< CE
0 1
o
,,~.
~'"'il '"
b) Scrilturll
Figura 3.2 Coma.ndi per Ie operazioni di lettura e scrittura in una. RAM statica da 512 kbyte
,:;:
'. ::;r ."
,,<0 ".~!,
,e"( ·~;-, ."
.'<'''' .->".
·',,, .'-.
,c., '" •
\~ .:!l :..,' ..]"( , · ..,. : .=:-rl
..
'
'''fi,''
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 e tRG (read cycle time). Anehe se db non appare in Figura3.3, per Ie RAM statiehe tACC =
.. )'~I ""~ ,'-
:;;'~~
.', ,'"
"':C
~'~t " ,.>~':;" "
,,~.
".
'.~c
,
'!;<, ,_n',• .";'
....
! .f~
."· ~"-'<,
:', .
..•,~.. J:
..,,a'~'I....
tRC'
::,~. ,
,
",
,
,,,~.
.'-'\' --"
'"c
":;1
:;'d~ ....-
"'. , .)~
, ".JI
',.,:;;:;
';'",
: -:.:~
CE
tot
·,::\
"--'-
I
X
..1 .
:"c':
OE
"'j;
.';
...~
<{~
lAce
'~I
"'.._
'~"
DOUT
, '"
DATI VALlDI
.. ri
Figura 3.3 Temporizzazione dell'operazione d.i lettura di una RAM statica.
····.....
"
Uoperazione eli scrittura (Cfr. Figura 3.2 b)J puo essere svolta in due modi.
,-
' ',, ."'
-;:-;
~ i:
,~
,.
1. Controllata da WE. Quando il comando di scrittura •
e un impulso su WE.
·".:-d ,'.
";'J
....
2. Cootrollata da CE. Quando il comando di scrittura diventa un impulso applicato su CEo
.o ,
..
,
.,
Traiasciamo la descrizione dettagliata di queste operazioni. n lettore 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
~
.
,
.
.·
..
-
-~."
....
;",.....;;i'r-:~~ti..' T:' ,-!);;",i, ',- t.l,;-'. .~."" _' '
.
1
~. "'}~!':':\';,: .:.
, '." -. , ,;~:,J~ .. .~<
",,' ,,',
La. memoria. principa.1e
81
• >' •
,
-
.... '
(
'
.-
.,
,
. (asserito CE) e che vengano presentati i dati ehe da scrivere su 1/0 1 - 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.
I
I
~.
•. .
l,
(.:,
I"
,'
,
'Cons umo Uaspetto che deve essere considerato, anche in confronto alIa memoria , DRAM, e iI 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 , e dunque:
"
I I
Pd = V" . I" = 0,660 W
.
t' "I..
n consume specifico p, ovvero il consumo per kbyte,
,
puo essere espresso come:
.
,
Potenza dissipata . p= Dimensione in kbyte
~
..
~ I
';
"
Nel caso specifico, si ha:
:
..
aI'"
\
= 1,29 mW /Kbyte P -- 0,66 512
.
.'" -
(3.1)
,'"
\
;1'
.
~I'
\
•
3.3 Le memone dinamiche
-
~
I
;,
,
~
\~',
-. - '
.. ,
': :
;-
;-
.~
~.,
I'
_".'"," ,' i! ' '
·~r'....
-
,:,
'"
;;~
..•
,
,
:~I;
~~
.:~!
d, ,'..,,,
~,
'J', !
.J
I
of: i ':
,.. :.~,
,;t •
'-':>
~~
.,
;; - ;: .""
-: 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 ensatQ~~.Lnte:gtato . .Lo -, --'-<, schema equivalente a..!!R ~leJ!1~nto di memoria e riportato in FiWa3.4. E richiesto - u~re- per bit: .la 'capaCit£ Viene ncavata sulla stn£tura -del transistore stesso, realizzando in questo modo uno sfruttamento ottimale della spazio disponibi~e. La struttura e ripetuta regolarmente seguendo una griglia quadrata: 130 linea PL (plate line) e coliegata 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 e dell'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
'
I I
-
, ]Queste ultime vengooo tuttora utilizzate in applicazioni dove si voglia un elevato grado di affidabmt~, per esempio, sui computer dello Space Shuttle.
....··'~I' ,
.I
I
82,
~ , :'~~'_
~/
"'-~ Ca.pitolo 3
"~;i:
.. "
.,
o·
" .\\1~' ,,:!
,
~: '
• ,Ill
.
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: e sufficiente una radiazione a bassa energia. per distruggere .·~-", ·",'.":. 13 barriera di potenziale e quindi la carica immagazzinata3 . • ~~. ' .. , .'.),
.~.
(
-.\,
..
· .t., .. .' .,";,
, .,..'1
~anizzazione
za
e
delle DRAM Abbiamo gia. detto come Ie celle siano organiz.. m una griglia con righe e colonne come schematizzato in Figura 3.4. Pe~~
gereJscrivere un bit e necessaria formre alia memoria prima ,. dirizzo di riga (RAS 1 Row Address Strobe) ~indirizzo di colonna (CAS, Column Address tro e .
'.'
."."...
,. ,'
,~
_;,~J , ',l
·':-.. '-':11
-·" , n,
.
'0
Bl,.: Colo" ....
~um.r.
BL
I'lolllJl.l
:) aUmento:&lone
"'-
lndid:no r 18"
(I
1000.1000
)
\ 'H
PL IncUriz%o COlOlUll'
)
(
I
A.m.plif
~
t
ric_
I RAS
I CAS
I DIO
I
•
WI,,:
10 lndlrinl
I
1 R/V
"
.
,~.
"; " " ';11
.;-..'" ; · ','.,:" .,.. ,
)~;
.ifl
~'J'J ~ ,.J.;
.
,A~.',: .. ~,
d .. lO
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.
·..•... ~
"
~,-~
~
"
"If
',;Jo'.,
,:,.:.!i,. .-" '""ii .... , '"' ·I'~· ~
In questa modo e possibile dimezzare il numero di piedini necessari per l'indi~ 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 .maggiore der-""t-=em=='=pCoo"'di accesso.
e
'.
: ..>~
.-',
".''-i
{:; I;
....i'~l:. -·"r ,:'f-:
"", I',
,"
-;~'
'.
;;;;.1' • ••
.''j"" .'
",'"
Rinfresco L'operazione di rinfresco consiste sem licemente nell'indirizzare pro ressivamente Ie ri e. uesta 0 erazione arta una Heve riduzlOne elle restaziani (tipicamente 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 sistema4 • In passato, prima dell'avvento dei componenti tipo bridge veniva usualmente impiegato un canale di DMA per generare i
·,t .;
\".
· ', ..
'''l ..":-~
, ~I.
"
".-' ",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 e il controllo della memoria al momento dell'a.ccenSione presente su ogni PC IBM compatibHe. "Tali componenti vengono spes80 denotati col no.me di bridge.
,
:<,:1'
.,
"'
!~~:
..:;;. .,.. · •
•
••
'.""
.'
•.
.,.
:-.i.
-
·.
; ;~~-;.
\ I
;~I
~;
_ ..
-.
,'" 'i "
.;.':',' )"'
La. memoria principale
,
83
"
..':. ._.
.
, ,
.. ,
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 se~pli ,., ficando gestione del multiplexer degli indirizzi esterno. Alcune memorie permettono di optare fra pio soIuzioni predefinite nella gestione dei deli di rinfresco.
3.3.1 Un esempio di memoria DRAM Le caratteristiche delle DRAM verranno esposte in riIerimento a un ipotetico integrato da 1 M 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. "
...
'
c. '.
WE Bcrittura in memoria.
• DE abilitazione
-. .,
-
'
delle uscite.
,
Per individuare una cella devono essere specificati riga e colonna. Per motivi .di comodita. costruttiva la griglia e sempre quadrata, in questa caso 210 x 210 = 1024 x 1024 celIe di memoria. Pe~ere una cella si presentano, sui piedini A o - A g , gli indirizzi di riga e si asserisce RAS. Si aspetta che aia trascorao il tCE.O tRAH, si pongono BU Ao ....: 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 contemporaneamente 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 rinfresco 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 Ao - A9 6 . 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.
. ,'~~11.
....":1"
84
;,.:':.j
""'
Capitola 3
~;"i~
rI -
'"c I
,,:..-;11'0',
i -'\ \ \. RAS \ \
\
-'
'to
<~
, :.~
!
1••••••_.. -
, ,
,-' ':~'~)I ";' :.,"; )"
'·1'
: \
'~il
.;. ~
. ..:, ,:'. \ ,;.~~, ,,~~~,
, "'jj
'(CAS ' \ _
,
;'l(
-'
""I .-j"
):.
JUH
--;1
',",
'
,,' j l ""'!" '.' ".
COLONNA
,""',, · ·l,
_"'o,J.
',r:j.
• , "". to
nfi'E
'
...... ,'",. ,~.
:.'n.l .',jJ;' .,
..
"c' ...1
DATO YAUDO
DOUT
::.' ~!l
'"'l'!'i' · .~\.~ "'{~
""
.., "S~j
,.-:\j., .,
Figura 3.5 Tempadzzazione di una. operaziane eli lettura. di una memoria. DRAM.
";i · .."~
Per rendere piu veloci Ie DRAM sono stati escogitati alcuni modi cli. funziona- 'l~~ 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 \f~ 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 ~~~ e quaIi ha fatto se i 'JDa variet,J . . Ie identl ca lye e e carat· ,i1 delle DRAM t e e atn~e~memorie..-11nnovazione piu significativa, e . ortato .:~~ un vero e proprio salta ge..Qerazion~pM~tettt1t~ t±eH-e-B'R::A:M='st1 yecificato ,'{$ l'introdu' De sui mercato delle DRAM sincrone. In questa caso, come vedremo ~~1 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. ,:(~ <~ u
'.' "-"" .'I
",
Consumo
e it consumo specifieo. 11 eom- .y~ Tenuta conto che la capacit" e di 2 Mbyte, .~
L'aspetto che vale la pena di rimareare
ponente AS4C1M16E5 consurna 0,740 W. ~ba , . . • __ 0,740 _- , 0 361mW/kb yte (3) P_ _ .Potenza . d1881pata , .2 :' DunenslOne
In
kbyte
;,~
2048
Si confronti questa dato con quello relativo alle SRAM.
.'"
.
, ··· .
<
:.
I
3.3,2 L'interfacciamento con il processore
,
':'
,
~
;
"
' '.
.
Per l'interfacciamento delle memorie dinamiche can il processore non esiste una soluzione standard. Le soluzioni pili comuni sono Ie seguenti.
c
,
.
t.l'•~.,i;;~ft:[·;:- ".
~Ml;f. ..t':-·:-",-;"
l~;~~~;i~~,' '".,,"-
1
,~I,.:
" '~"'-", ,"C'-'
,
". ,
"...
\
".'.'~,'"
,
-:,
.':
.
I'
85
..
,.'
. -'
L Collegamento diretto tra CPU e DRAM, Soluzione in disuso, praticata soCOra negli soni settanta, La CPU deve fomire i segnali
., .
:
.
di DRAM. Per esempio, nel caso dei sistemi SPARC monoprocessore, disponibile il controllore ME 86980 che interfaccia Ie memorie DRAM con I'MBUS (un bus de&nito dalla Sun Microsystem, su cui e collegata Ia CPU stessa, la memoria centrale e la cache). I PC moderni can architettura Intel impiegano uno 0 due componenti bridgej questi hanno il compito di gestire 10 seambio di informazioni tra i diversi (livelli eli) b.us, oltre che
e
l'
" ..'
..•
.
· di eantroUare i trasferimenti con la memoria centrale e can la cache esterna alIa
' ("
· CPU.
1 ••
''
~
,
~
· La soluzione autarchica, consistente nella progettazione della lagica eli contrallo
.,
,
, .':
con' componenti standard, eomporta.
j :'
i
\
_~ 2. Impiego di uno specifieo controUore
.,
.
La. memoria principale
t
e tendenzialmente da evitare per Ie complicazioni che essa
\
I
.
~ ..
~"; ~I' ~:
3.4 II dimensionamento delle alimentazioni.,
di un sistema di memoria
W::
~~ '.
-~.' : :~;
f
~(. 1~;
~¥.'
•~sempio 1
$.
1~;
.
~::J ~~ ,i" ~~ :
'jl '. "1 IJ '
,"
,
Dimensianare l'alimentazione per una memoria di 1 Mbyte (parole di
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 .
~1:1:
• '1.
~:l;:
.
.
·.,Poich. il consumo ,pecifico della SRAM utilizzata . ~omplessivo ,.. ,
~~
'-J: ..
i"ntegrati.
~
e L29mW /kbyte, il con,umo
dato da:
P
= 1,29· 1024 = 1,32 W.
. Del restOI si poteva cakalare in questo modo:
"'1" .
.·if·'
.
··'t .,
."
I'
P = n . f" . V" = 2 . O. 200·3,3 = 1,32 W.
':·"1'
~"l,
;•. ~;
"'~ . ", ,, ',t,
c"". .
La corrente totale di alimenta:;zione IT vale:
IT ,, n· I"
=2·0,200 =0,400A.
. fl; .
,·G '
'!
I
,
~I
.,~i!
\
Nel calcolo precedente abbiamo trascurato il consumo della eventuale logica aecessoria per la decodifica degli indirizzi.
I
86
W)!l
Capitolo 3
,'1';;'1 .,"~
~ I ~·~·
'·J
"'~;
: ':f,
'~'>: J )/."
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
',"".,(:
·~ ,.
,,:;
P = 1,29·65.536 = 84,5 W.
':,t.':{
con una corrente tota.le
Ir = P/V" =
84,5/3,3 = 25,6A
(3.3)
e
Si vede subito the, anche a prescindere da considerazioni di costo, nOD proprio 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).
\
f~ - ",-S .i,,~ "" " ,,', ". .' ~
,
A~<)
-....,' .f
.,
', '~~y ~':i.
. -f. '.: ;
''':I' ,.. ,;>f
-
' •."
I'"
'''L~~ ,... :,i~ 'i:• ~~~ ,·-'
-;".j.;} ... "'~'~ ", ~.~ ,
:
Vediamo ora cosasucced.e us~do memoria din~ica. Can il com~onenteAS4.CIMI6~5, ~.~~ r> per fare 64M?~ orgawzzatl come 1 M da 64 bit, occorrono OVVlamente 32 mtegratl. ,'~~~ ,?: L. patenz. dissIp.ta totale e ."'~ .:'
P
= 0,361 . 65536 = 23,7 W
Quindi, la corrente assorbita
Ir
e:
= PD/V" = 23,7/5 = 4,74 A
circa 5 volte piu piccola della corrente assorbita daJla soluzione con SRAM. Dal confronto, risultano evidenti Ie motivazioni per Ie DRAM.
·."h " :~~ :~
:ij :'. :";,: \
'~~'f _,>, ., I", ",~. ", \~ . ." . ,:.~. ,
.tj\ •.
···~r· ·,it " ,:'r'~,
3,5 Organizzazione • Nell'organizzazione della memoria centrale sono determinanti i seguenti aspetti:
a) tipo di integrati impiegati, parallelismo e loro dimensione;
1",.
',".' I'
..
,. "1" , ':-,1 . ~ ,,.~
·,,,,,. ";" ~
," I ''
'.,r ,. .~
·....". .' 1-'''
b) grado di parallelismo del bus del sistema e dimensione complessiva della memoria.
I I j
Per semplificare, nella parte che segue si fa l'ipotesi di impiegare sempre integrati con parallelismo di 8 bit (un byte). L'ipotesi non e in 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 cool passati a. bus dati di 16 bit, a bus di 32 bit, fino ai bus a 64 bit della generazione corrente. L'aumento del parallelismo presuppone cbe i bit mena significativi
e
'I .. ~
..,
..
~." :
"::~
·, "' ! .e ,;., .. ,,
.. .,;,
'Jo,' ,
'il"'I .'
"'".1'
:1 I
'.'. ., '·;1' · , .',1-' ....1..
'l
"
•
,I:
•
,'Ili,
,.,:1'
' •. I>
I I
"1'
\1'
I~l"'s.",j••.," "
.
':r~' ~. r:;'
l~~~~::;:_·:~:."_:' - _ _--------------------
1•.'"I\\'!,
~L~':..:m=e:m::o:'i:,,-,p:':in::ci,,PCa.l::.:e,-_8C7_
,\,"
~.,.,.,.,
···-.:· .. , "< •. _~,
l,~·i:~·i' ~::.
•
;;;"':""!~ .i ,·j~·-;··,;"; ..·"" '
J;l"':: n'7"~,4. .. ;'- .• ",> pf:'':':" ...:"
".-,"'.}-'-,!
""> .
:~
-.: - \t,'! .':; , ;,".. ", .,.. ,',
~;;_J;:::. '",
':
,: /," ;.c....."
;_:-'~;:~
3
;',:':
{". -''-''~~::-:'._\,~
~
.'
.'
. -, .'~:
I
6 6
'''.o .~ ..... "'-"'_ I In
I
<>
3
<>
<>
2
<>
0
1
o
-·c".-
,:- , .'
In....
.-g
1
):":
f'
I
~1
S',;'-, '-.- ' ....·L "r;";- ,
,'
I
Indl..-l < ,
"
Bus Do tl
;,':1::. -,.; ' .
Figura 3.6 Organizzazione di una memoria a 8 bit (integrati con parallelismo di byte). C .\-:. ' e la capacita. del singolo integrato, L la capacita della memoria. A sinistra. viene illustrata •• -:· .', 'j"e. '_ 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 decodifi~ati per selezionare l:in~e~a~o co~risponde~te, l~ .resta-uti. In (G) linee del :,;::.:~: bus degli -indirizzi vengono callegate aJ. pJcdini comspondentl. sugh mtegratl.
-
•
"
. -.• ,
'
': ", ...
"~
~~
;:
.',,:.: '"':..
,
,
"
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. decodific. 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.
.,
. .... I
-.
-...... _..
, .
I
." v
3
2
1
0
Bl
3
2
I
0
BO
"
,•
.
'"
ifi
,•
,"
[
'
,
'
.
'
M
,"
,"
ill
,"
•
•
~ "
•
.
Bus no:tl
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 e selezionata 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.
.("
.. "
\:
'.:t.
88
:)1
Capitola 3
:", ,·\,.,
.i~ ·-,,,I "
.-'
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 bus7 . ":<;
.:";':"
3.5.1 Interlacciamento
'" ·:..: 'l
- ;.';, /';:.
Abbiamo vista che la memoria, in particolare la DRAM~ne dei vincoli temporali alIa velocita con cui possono cambiare i segnali (RAS e CAS).
: f~~
':,jJ,:
·"':: ,"". ':"'-'
n problema si pone per~he la CPU genera normalmente indirizzi consecutivi 0 , :~.~ comunque indirizzi che individuano posizioni nella stesso banco. II vincolo eevitato se - ..-;"!. -' ··r indirizzi consecutivi ind~viduano parole in banchi diversi, come illustrato in Figura 3.8. ':'} Questa tecnica viene detta interlacciamento (interleaving) della memoria. '- :~'i
":,;;:;
-, ,'I.
.~"
, ,i',"
"'-,i -' "-
=
"~,'
B rd
- ""
-'------.--_._-
I
lndlrlzzo .ntro Il boneo
I
Ii hnco
I
B,
.;;"
'<;~,
, ,
:;':~
Y." ',' ,
.:,",
' ':,"
e"
I i
-·
'-:':
In(Cl
·,:,::.-
I
Bo
•
Figura 3.8 Indirizzamento interlacciato. Indirizzi consecutivi individuano posizioni in banchi divers!: i bit meno significativi selezionano il banco, mentre i restanti bit identificano la posizione entro la parola. entro i1 banco.
·,::S~
,;,p
_c,';j
"it:
.,.~
:~<}
"
","
-:":
·"· '::~,
,:."i ',. /<'1 ·
Con Finterlacciamento, rnentre per esempio avviene l'accesso al banco 0, al successivo (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..
""
,?:
"'.· ,",
""'
"~
,""1 .! ,
.,·
',:;
-
'<
:
,.
"
'
•
.
,.
1La CPU 8086 non vincolava all'allineamento, rna cia era. fonte di inefficienza. Si veda \'Appendice B.
. '
,
"11"'.: ;",.",.;);"
::::
1
,,:........ ;.
La memoria principale
1 '
89
I.
3.6 Relazione tra la velocita della CPU e la velocita della memoria
I
Un metodo per stimare la velocita (tempo di accesso) di una memoria da accoppiare ,-',. a una CPU e quello 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:
"l' >,
N
~,'
f Supponendo d.i trascurare in prima approssimazione i ritardi introdotti dall'event=
:"
.:',.. - . ~. '
--
.~z·· }~;"" i
tuale logiea di decodifica, per una memoria statica tACC < t
r
., -'.,
;. :.'
"
dove
tACC
e il tempo di accesso alla memoria. tRC
,
.
"
,
I
dove
i
-
'
tRe
e sufficiente che
(3.4)
Per una memoria dinamica
(3.5)
e il tempo di cicio della memoria.
Ovviamente, se Ie due precedenti r~lazioni non sono verificate, ovvero se la memoria e lenta 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+Nw (3.6) t = ~ > tAGC,tRC
-·
:~.'
"
,
~
,',"
".-
~
p
I
I .
\.
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 tanto 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 la 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 e evoluto nel tempo il rapporto tra la velocita. · della CPU e velocita delle memorie dinamiehe. .
e
ji
t:
~:
},
"
:1',' '
··r,i !.,
"i:,I' .
"l".1. :,
:;;I'
e
.'···f . :.
'j
.
~, ,
1 ,
,
,
.,'··t
;'
'
'
3.6.1 Caso di studio: evoluzione della velocita della famiglia 8086 in rapporto a quella delle DRAM
,.,
,
..
"',J!
';
•
..
,
..
,., ,
, 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. A~eune 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
·.~I"
.".-'
\1 "
8L'Appendice B ;
e dedicata a un esame appr~fondito dell'architettura Intel.
r j
,(
1
'~
!J
\.,
90
Capit<>lo 3
\ 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. n primo PC IBM (1991) impiegava il micro 8088 can J pari a 4,77 MHz e montava DRAM 64kx1 bit, can tempi
\
\
. ,'.'. \1J ";~"
,~
,2". ... · '; 301 . "~ .... ':;J ~
,
'~'I
· "1
',\. '1
~j
",\:,'." I'
,
-~!
.' -j-:
....
:',.'·'1, •
\
8~ 8086/88 80286 80286
tso28~6
80286/386 80286/386 8U386 80386 80486 80486
\
I
MIrZ)
5 10 6 6 12 16 16 40 40 25 25
N 3 3 2 2 2 2 2 2 2 1 1
Nw
t (ns)
IRO lns)
U 0
600 300 330 500 167 125 188 5 150 40 160
350
0 1 0
0 1 0 4 0 3
,.'
,I' -.'.
),'
,.,
~~;
f ~~.
300
·"'"0..:-.:1 , •.
· ~'.';
1 0
-. '~"
'c'
-.
100
I
...'1 ..,I ~-~
100
-,1
,\;
-'' < .,--, -:~ .,,.". :'~{i ,'", :
~
}
',4-.
·
"<'i
Con l'introduzione del processore 80286) ci si avvio a entrare nelPera in cui ie
DRAM risultarono piu lente delle CPU. alla memoria. Can J = 6 MHz si· ha:
n 286 richiede due cicli
,
"
,.
...
"
,'.'~ ,
I=
I
'~
....
'~I'
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
.",
..,
N
f
2 = 6. 10' = 330 ns
(3.7)
",~
~
--.
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
1
anche il t per ]'ultima·versione 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
,
j -
t
~
,J
~
't = (N + Nw )/ f
\ I
= (H 1)/(6 .10') = 500 ...
."
.
,
,-,-
~""~4'>r
J>o:~: '!,.,I'p ,:
\.'.. ,,,, ,.",'I·....·' "~' ,~.:"
..
.1. 1 _ • '.-
":> La memoria principale 91 . '... ..._--------------------------------------_::=-=::=::::::=-~::::::'::::=-_..::: ... ..... -'i '. . · .. ',' ,.. ')
;,<~.;. ~
'
'-':~: '
.;,
••
"
cPU Pentium
•:
~"
Pentium Pentium Pro Pentium II Pentium III
...•
."
, J (MIIi.) , 1.u. (MHz) , t (ns) , t,u. (ns) , 66 133 266 400 733
15 7,5 3,8 2,5 1,4
66 66 66 100 133
15 . 15 15 10 7,5
tRO (as)
1uu 100 80 60 60
••
Tab~lla 3.2 Frequenze di,clock della CPU (f) e.del bus esterno (tb"~) per i microprocessori di c1asse Pentium e Pent~um Pr~. 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
I'
,
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 problem~ elettromagnetici indotti delle armoniche di ordine superiore.
,
' '
1• .
16 MHz, modeHi successivi hanna portato
,., ".. ,
}I'.- '
iI "
,
,.,
"
'~I ~ -
"~.a
•.
~
-i·' .. •
';1
...,
'r
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·.
.
l
Il micro 80486 e i1 primo esempio di CPU can cache integrata. II 486 non e un 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 clock10 . 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, e fortemente consigliata una cache esterna, in modo da evitare tanto spreco cii capacita. elaborativa. 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 la 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-
e
spondenti tRc=150ns) e supponendo che il processore richieda due cieli di elock per
j( -,'i•.
t
~··r.
J;
~j':'. • ""•
..
,
..,
,'I.·
~I
486 legge Ia. memoria in un cicio di dock solo durante Ie operazioni di riempimento e svuotamento della cache intemaj se il processore a.ccede alla memoria in maniera "normale", senza doe interessare la caehe - pereM, per esempio la cache e disa.bilitata 0 perehe si tratta. di una. zona non Cl1~heable (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. 10n
92
Capitola 3
';
accesso, si ottiene:
N
2
= 13,3 MHz f=-=~ tRe 15· 10-'
"'-,,~,; ,'
(3.8)
3.7 Localita, organi2;2i8:zione get at chica-
-
loLa capacita., ovvero 1a densita. di integrazione, quadruplica ogni 3 anni 13 .
';~J : .. ,
;
._,"
;;:..~;}.:-;
1
, La memoria prindpale
93
,-,-
"
',-'\:---
;.,. . ,'."l' .'
o La velocita cresce di circa il 7% ogni 7 mesi, ovvero del 22% all'anno.
....
::"~, -
1
. • CPU. Le prestazioni aumentano da un minima del 50% a un massimo del 100% .all'an no . _Ovviamente, il differenziale tra i tassi di crescita ha reso sempre piu divaricata la forbiee Ira Ie preslazloni delle CPU e delle memorie DRAM.
, Dati sperimentali sullJesecuzione dei programmi evidenziano che memoria gadano della proprieta eli localita spaziale e temporate.
I
]
riferimenti aHa
-.• Localitd spaziale. NelPesecuzione di programma. e altamente probabile che la 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. o
I
_
.". Localitd temporale. Tutti gli algoritmi eontengono cieli, dunque Ie zone d.i memoria contenenti i cieli vengono esplorate piu valte da! Busse di istruzioni conseguente all'esecuzione di un data programma. In altre parole, n~I 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, real~ata attraverso componenti DRAM, e in una piccola memoria SRAM, can funzione d.i cache14 interppsta tra il processore e 130 memoria centrale.
I I
I \
I
I
Gerarchia di localita suggerisce d.i organizzare Ia memoria in mode gerar~co. 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
n principia
I
. 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
:J "';1 ..
-Capitolo 3
94
"f:;! , '
1
~d , .,
costosa la corrispondente memoriaj tanto pill e basso il hvella nella gerarchia) tanto meno e veloc~, piccola e cos~osa la co:ri~P?nden~e mem?ria... , . 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 direttamente trasmesso al processore 15 . In caso contrario si ha un miss e Decorre ricercare nella memoria di livello inferiore. Si definisce
-,-i~l
.... "1'1 ," -PI" . ;~~:
: ::,:iil,
':~::{ ... " ':.~\~ .. ",~I
\
• tasso di hit, e si denota can h, il rapporta tra il numero eli hit nelliveUo superiore e il numero totale di riferimenti j
-
• tasso di miss, e si denota con ffi, il rapporto tra il numero di miss nel HveHo superiore e il DUIDerO tatale di riferimenti.
\
,
Ovviamente, vale la relazione:
-;1\. "
~:
:1',
"'I'
'. -~"
. "t, . ;~
,;,-: ' "'1 _,0\
,
"~;..:
. ',': . ",..':,.1 ~.,
"I
,,;-:.;'1 '
(3,9)
m=l-h
n trasferimento di informazioni all'interno della gerarchia avviene tralivelli adia-
," , ",l
'
",1
-·-:i:
. '~1
centi, can tra.sferimenti in bloceo. La Figura3.9 schematizza questa meccanismo, "-';'.::]~ Quando il date viene trovata nel livello inferiore si rende necessaria l'aggiarnamen~ "-';]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. . :'~
I
.:..'J' ,1( ,;..
B
I
blocch
- '"'.
,j11 -~~,j
';;'~.,
'C,,i A ·c....
))1 .
")1, ,\',
'-
livello interlore
I Figura 3.9 Organizzazione gerarchica. della. memoria...
I I
"
?~
.
·'1 .;,
.,:.;,
~il' ::8 . "1'1 '" 1
",,:~ '~
, ,-,-;;,
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 ,:_\1, '! 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: (3,10) t = h ' + m ' tp
t,.
\
"
-q
dove: til:
tempo di accesso al livella superiore (comprensivo del tempo che si richiede per determinare se il data si trova a questa livella);
"'~ ,,il
'
.',',
,"e,""'1,
;<:1 ,..,
'",
'.'i~ "
"~
'-' ,·1
'. l
'"At'
·'· "
,
~I
" ''Jj •
15Si ipoti:z.za- una. operazione di lettura..
\ t
',,'I
-', ~~,
.,....
-
_____
" 1
.::'~'~~"..'"
-
~,
~J'
/(,....,.. .- ') ~
-
c
La memoria principale
I
95
~l, , . . 'I
:-,"
.~!
tp , tempo di penalizzazione, combinazione del tempo di accesso a1 livello inferiore e del tempo necessaria a trasferire il blocco dallivello inferiore a queUo superiore.
, Risulta evidente che per ottenere i benefiei dell'organizzazione gerarchiea, ovvero ,..' deWuso di memoria pili veloee ai livelli superiori, necessaria che h sia il pill possibile prossimo a I,
e
,_
Nel caso di miss, la ricerca nellivello inferiore puo ancora dare luogo a un ulteriore ~iss, 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 porta~o 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.
:-' ':
,':'.
3.7.3 Un esempio di gerarchia
(';, '
1'
,
'
i[' " A', i,"
,,,"
.
'.' .1.,
.
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 del tutto insostenibile per una DRAM. Per questo motivo stata integrata sullo stesso chip una cache intern a da 16 + 16kbyte (dati e istruzioni),
e
e
.' 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 e stata prevista una memoria cache di secondo livello. '
,
11 ,,
,
~' , ,
gerar~ 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.
La dimensione del blocco trasferito dipende dalla posizione relativa nella
l
'tI
·'~/.:
I
JIj 'It
16Si,tra.tta. ovviamente di una. stima. ottimistica, da. interpretare come il limite superiore, corrispondente 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.
96
Capitola 3
--
CPU T :I: 3ns <333 MHz) 40 regls1:rl do. 64 bit
.. '::)j ,(,~
64 OIt
:>1
::~ -'1,
.. Cache interno. do. 16 -l- l~ Kbyte (dati e Istruzlonl) - 333 MHz
Co.che esterna do 512 Kbyte SRAH 6 ns
Mel'1orlo. centrale do. 128 Mbyte EDo DRAM 60 n5
64 bi
,. OIt
64
~It
\j:j
Controllore cache interne 333 MHZ - 528 Mby~e/s
of!
.
:;(~::
Con troll ore cache esterno 333/2 MHz - 264 Mbyte/s
: ;,_.
,;f::
.:,.I ,,~jl1
Control\ore Mer-'lorla. centro.le bursi 5-2-2-2 66 MHz 180 Hbyte/5
'il.
,
DIsco rlgldo do. 8,2 Gbyte ve\oc1tO 10 Mbyte/s
Lettol"e dl CD-ROM do 650 Mbyte veloc1to. (24x) 3,6 Hbytels
8 bIt
Controllor~
r-'ler-'loria dl Mo.SSo. SCSI
• w,
~
?;i~1
\~~~ ::it
)j
,.:.ij:
Figu.ra 3.10 O:ga:m~zazione gera.z:ch1ca della ~emoIi~ in un calcolatoT.e personale con CPU '::::~';;l PentiUm II. Per 11 slgnificato della sigia 5-2~2-2, 81 veda 11 paragrafo relatlvo aile EDO DRAM. ':'~J
;,)111
3.8 Rassegna sui principali tipi di DRAM commerciali
::~'1~~
:·":~
'/,,9y,: ;~~
'11 I" ali . 'ch di at 't" d' r ' d' DRAM" '::{!l " D1 segwt? ~ono I u.strate e pnnClp . c~a~tens~l e. cum .lpl ! Ipl I, ~t.A 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. ':':}~~1 :_XI}1 '''' ., "~
3.8.1 DRAM con accesso a pagina
:5~1
"~:l~
",~,Y
PMA - DRAM (Page Mode Access) La modalita di accesso di pagina eottenuta,;~~ ,. mantenendo attivo ilsegnale RAS in modo che un'intera pagina di dati sia tenuta sugH ,]~ amplificatori. Nuovi indirizzi di colonna possono essere sincronizzati ripetutamente /~1 iterando solo il CAS. ":~i( , "
(.' -; ..... . ,'.t'!l "'"'" '".,
'"."
FPM - DRAM (Fast Page Mode) La modalita di pagina veloce, costituisce una:~ evoluzione della precedente. n miglioramento e stato ottenuto attivando i buffer di 'l;~ 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 '~~~i quando il CAS e alto; non c'e bisogno di attendere che CAS vada basso per iterare.'.:,~~ 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 il"~~ 4° dato della pagina selezionata. ,::'d ii'
''''j
"~\'
M"'>"':' ,-- -"J~-"'~':'-' ..
:·'I~IlJ!l!?:;;t.;"--
:~~~~~~~~;?;:.:
.;;:,,
";~~'{,";;-'~'~:~ La. memoria principale 91 ~tl:,~::::,; . ,,,,.'. ,....----------------------------'-----'----'---'. ',;,-,:.;' . <.:'J';'-::;;"'~:_ Ih ~.,.~,,"':' -'.
'rr <,' ',,"
'n Fast Page Mode estato un metoda di accesso utilizzato molto diffusamente per ..-:.: Ie' DRAM ed e ancora utlliz~ato.su mo~tl slsteIIll, an<:he s~ ~~ !e m~on~ !PM sono
"', .~" ,1.
r
, '. s vate solo a Quei sisteml che non nescono a gestrre tlPl d.i memone pm avanzate .\.>,::;'~; ::~,_.: ;; esempio su siste~i basa:i ~~ microprocessor~ 486). A causa de~a ~~mand~ I,:,. '::,>.....,. r~itata l'FPM e ora In effettl pIll cara della magglor parte delle memOne ptu veloel
1 1
I
:::'.'.-::< ~ttualm~nte disponibili. '
"1
-
.. -._
<",':EDO _ DRAM (Extended Data Out, chiamata mche Hyper Page Mode) I~!., sr tratta. d.i una variante della Fast Page Memory. Mentre con le FPM la negazione ,(/." . di CAS disabilita i regis~ri d~ ,usc~ta e. re~d~ i d~ti no~ disp0nibili l C?D Ie .E?O 1a ,~" ': .'.. negazione del CAS non dlsabilita 1 regtstn dl Usclta, e 1 dati restano dis"pornbih fino ~;::-.f " _a. quando non viene nuovamente asserito CAS, cioe quando sono stati generati sia 1: '.~;,' ,.. -. iLnuovO indirizzo di riga sia it nuovo indirizzo di colonna. Oio permette di arlottare :';",'::: '.":'; '.. temporizzazioni ~iu stringenti per il ~AS: . , . t" ", ': - '-. Le EDO arnvano a una. temponzzazlone 5-2-2-2, cornspondente a un mlgliora;;<"c"> meoto del 20% rispetto alia DRAM FPM, Le EDO hanno praticamente rimpiazzato j:..,',': : ',": ,; ie FPM" (delle quaii mantenevano praticamente invariati i costi di produzione), di;',.:, ".. .::". vEmtando ,10 standard. pe.r PC co~ bus a ~eque~e n?n. superiori 66 MHz. Oltre tale .' :":' , 'velociU. dl bus, esse ncmedono l'mtroduzlone di statl di attesa. ,:,'~' ,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~l1.·" ,':", tare ,.in grado di generare autonomamente tre indirizzi consecutivi al prima, fornito ",' ~ ',tramite Ie !inee di indirizzo , il RAS e il CAS. Si e arrivati a una temporizzazione 4-1-1-1,.ato 10 sviluppo ,,;.',. :"" delle memorie sincrone.
I 1
I
'<,;'
I
' .,,'
I,
:.:",;, ',", , :' "
'\1'' '. " ,
1-
3.. 8.. 2 Cached DRAM
..
Un'altra tecnica per accelerare l'accesso ai dati in memoria e quella delle CD RAM Y" ' , (Cached-Dram), Si tratla di RAM dinamiche che presentano sull'integrato una RAM ': statica in funzione di cache. n miglioramento di velodta e dovuto 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. 1l"" "La cache e sincronizzata da un clock esterno (che puo raggiungere i 100 MHz). , "( ~,.'
~ I:.,','
;
\
:" ", ,,,'
l ,.-" .
,-
",
~ '" ~
". ;" " i'
~
~I:
W ~I"
d"
'it'
j ,',.
, 3,8.. 3 SDRAM (Synchronous Dinanllc Random Access Memory) - DRAM sincrone Quando ci si e accorti 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 passati 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.
\
I I
e
\
~"'
't!
~l\~} ;(/!·11
I
98
'·~·
.~wr
Capitolo 3
f,t~
.. ,";~.
,'"j' ., "!
,_
Le D~ che hanno W1'~terfaccia smerana so.no conosciute genericamente COn il nome dl SDRAM. Questa lllclude Ie CD~M vlste sopra, Ie RDRAM (~ambus DRAM), ~e ESDRA~ (Enhanced SDRAM). E comunque stato definito uno standard. JEDEC di DRAM smcrona. , Una SDRAM ~ED~C ha unl~nt~rfaccia sincrona controllata dal clock ,di sistema e mclude anche un architettura dl tipO du.al-bank'e un bu.rst-mode (31 bit, 32 bit, a 4 bit, a 8 bit e a pagina completa). Un registro puo inoltre essere impostato all'accensione del sistema e modificato durante il funzionamento per programmare Ie di b t ( .al . t I . t ) I I h d 1b lid modalit a urs SeqUenzl eo III er aCCla 0 , a ung ezza e urst e a atenza el .
I I I
CAS.
. . .
.
,
.
. .. ,
ci sia un
'.l"~
',::~. . ,;.~~!
:?'3. .•.~.,,
l~ ;~:~
,~ .\~ ,,{;~ ~8:':
.:..?J :·;:;;
A~l ;~~8 i'
0:'"jl ..'.'
>
'"
(0'..
:~; :.(~ .'. ";;~ :(,/
L~ SDRAM ha presentato .mIZlal~ente molh ,probleITll ~l compatlblhta. I pnml ~oduli. SD~M avevano due fu:1ee di cl?ck, rna. e stato venficato p~esto c,he .erana msuffiClentl~ conducendo sviluppo:¥ moduh a 4 clock. Alire dlfficolta SI sono avute aJ chIpset contenentl 1 contro.lIon ' . . .. Le SDRAM sono valutate ufficlalmente In MHz PlUttosto che In nSf m modo che
alI0
.•:..,
".I. ' 7.~
'i. .? ~;,~
;\)J, .:",~
,,oS! (,~'
/,~ :'3
denomin~tore comune tra la velocita dell'integrato e la velodta. del bus.::f~ ':J
~;;
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 . .~:' ~,;:~ PC66, per differenziarli da quelli che si conformano alla specmca Fe100 di InteL . "~~ ':~\
I
,_,
!,i
-)~ ': '; SDRAM PCIOO, PC133 Quando il maggior costruttore di microprocessori ha "£\1 ,:j portato iI bus di sistema a 100 MHz, la maggior parte dei moduli SDRAM disponibili '. in quel momento non poteva funzionare correttamente a quella frequenza. Intel ha "'~I~~' ~:' allora definito la speci.fica PC100, come una direttiv.. ai produttori per la costruzione ;~ di modulI progettatI per lavorare correttamente can II propno chIpset 1440BX. ./~. ~~ Nel ~guit~ \199~), an~e C?~~ .risposta ~l'lnte.l, molti fabbricant~,di chips~t ;~ :~ hanno deoso di rilasclare disPOSltIVl m grada dl gestIre uno standard PlU veloce, 11 -:~J ::, PCl33, evoluzione del precedente. ,~~, ::,
:'i\il
:C..
I
I I \
;rn-~ ~+
3_8.4 Moduli commerciali
-;:;!,' Y "Ji ',':
:; ~b~ !;
_'~~ 't: n primo Personal Computer prodotto dall'IBM (1981) era costruito su una piastra _~~ ,~ madre che portava, 9 integrati di memoria (per un totale di 64 kbytc, pili bit di parita). ~~ ,~/ Per espandere la memoria occorreva aggiungere schede di espansione, IDontate sur .::~ ": bus eli sistema. Sulle piastre, gli integrati ,(nella tradizionale forma DIP, Dual In- -,_~~ :" line Package) erano montati su zoccoli e occupavano ampie 5uperfici. A meno di t vent'anni, non c'e PC, fisso 0 portatile, che porti meno di 64 Mbyte, con possibilita. .~ ~ di espansione a blocchi di (almeno) 32 Mbyte. Sono spariti gli integrati in forma '~' .~ DIP, sostituiti da moduli di espansione, piccoli circuiti stampati' con componenti a ~:~ ' montaggio superficiale, I moduli di espansione seguono due formati: SIMM, DIMM e.RIMM:. 1:
;n '
·:;i
I
I ,
:i '
.FI chipset correnti (per esempio, il i430TX e successivi) leggono la temporizzazione ottimaledirettamente dal modulo.
/~ >
-1t , .'?
~:~1:S ~
.
''l:<--''
!:1~'" '<'
}lljPL'" 1I...···, '.
.' , . .. rS:·;~,:, _._---------------------.:L.:a.:m=em=o.:rI.:a-"p.:r.:m::c:cIP::al::e=----=:9.:9
··~Jr~:
.....•" ..
~ ~.,~t;;:
',,~~,:v
,.
.i
.'"t,' .•.' .' ' ,
.,~~.:.':.
~~;'
__'. - ,
! :.l~~.,; SIMM SIMM sta per C.Sin:g~e In-li~e Memory M~dule).
n mod.ul~
SIM:M ?riginale a,veva un formate a 30 pledlDl, rna e stato succesSlvamente sostltUlto dal tlPO a 72 ~:0?:,' '·piedini'. Puo essere a singola 0 d?ppia fac.ci,a, con capacita di ,4, 8, 16, 32 0 anche ~ ..,':. . 64 Mbyte, parallelismo a 16 0 32 bit. Una tlplca scheda madre dl PC prevede quattro ::';";,:": '::, connettori per ~o?uli SIMM. 5e.il bus ~el PC a 64 bi.t (da!. Pentium in poi) sono ;'v .• '-,', 'chiesti come ffiImmo due moduh a 32 bit della stessa dlmenslOne. 8:~',",r. n ') d I' DIMM (D 1 I /. M M d 1) h . . . SIMM ' .,.... D1MM I mo u 1 ua n- me emory 0 u e anno sostltmto 1 , >:,:'. d d I" d t' d' PC E . h 168' dini' d' . d til ~;\, . .~ ,.: divenendo.lo stan a.~ per 1ll us. n~ ~l. . SSl anno Pl~ lSpoSt~ su ue e /:t,.~:,:. di contattl. 11 magglOr numero di pIedllll permette un parallehsmo a 64 bIt. Dunque ~UT't::.·; essi possono essere utilizzati singolarmente ed e tipico che un PC moderno fornisca solo ~~~J:'>:': una 0 due allpggiamenti di tipo DllvIM. Attualmente 10 standard e rappresentato dai ~,;:.;:,:..:. moduli DIMM da 3,3 volt (compatibili con memorie di tipo SDRAM, BEDO, EDO e ',' ,,~. j": 'FPM DRAM); una ch,ave suI connettore (una sagomatura) consente il poslZlonamento 3,'?i~',; "'::.. ' . ocabile.
e
>
.
J,~:,~",:<.""lneq~Jlv
;;(':'~;:.L'.·'
:. '
. . RlMM (il nome e un marchlO del
. .
~:',.~,;~,,::.~; consorZlO Rambus). I moduli RIMM utihzzano la \·t:;':·,> stessa specific~ del conn~ttore de~ DIMM da l~O MJ:Iz standard. L'idea e cbe il BIOS ,.'1'
di RAM e montato (attraverso gli ;) ,';;);~"'uffid degli integrati di gestione dei bus), in modo da rendere utilizzabili i moduli j\":";';-:"SIMM con SDRAM da 100 MHz in un sistema RlMM-compatible.
i'/:'~"·> . ·,,debpa essere III grado dl determmare quale tipO
.~~;;,y~c . · , 'hi~~f:~;:,':,,?", " ; . . ~~'r·::,,~,.-8 . ~. Controllo dl errore ~... [rr~;~~h.i"" ,.",
~~'S~f~}_~:J::ontrollO di. ~arit.a
.
,~ \;;.:~\:}'.errore. ~a
n contrallo di parita e la forma tradizionale del controllo di
panta viene valutata suI singolo byte e do richiede un bit ulteriore a byte ,:~'\~h,_'::. ;~, . (s~ veda l' Appendice A). In caso di errore viene normalmente generata un'interruzione +~~;~"';': ~on m~che~abile(NMI~, ~er incar~care il sist~ma op~rati~o eli interrompere l'attivita Y';"/';""::'-:':"m corso, eVltando qUalSlasi potenziale alterazlOne del datI. :. i',t,.- '. ;F,~t:~';;·,;: ~ . :;I. ::,:< .-: C - Error Checking Code n contrallo di parita non consente di identificare i ~,~:/.",<. -·~.-·,-bit errati e non e 10 gra 0 1 n evare un numero pari di errori sullo stesso byte. Per /~::;~,;:': ;::'.1' q~este ragioni sono apparse memorie con controllo ECC. Con questa tecnica occorrono :':"~" ' ' .' " PH] bit di controllo: 5 per proteggere un byte, sei per parole a 16 bit, sette per parole "\~"':':;'~i~:' :,,~ 32 bit e otto per parole a 64 bit. t:(~~:;: . Nei sist~mi mo?erni il controllo ECC viene effettuato dagli integrati di gestione ~\':/- ·...d.ella memona.. Ess) correggono automaticamente errori di un bit 18 senza fermare il ~,~\>:.,:.:<':,~~l~tem~.. Alcum possono correggere anche errod multi-bit al volo 0, quando db non '<>':\'~;' ,e possl~lle, possono forzare il riavvio del sistema automaticamente, con 1a memoria non vahda non mappata. ::~"",":',;' -,: " Oltr~ a m.aggior c~st~ ?ei moduli, illato negativo che il.c?ntro~o ECC comporta ';(i, una perdIta dl prestazlODllUtorno al 3%. Generalmente, l'utllizzo dl memoria ECC
-:
':.:"';. <
>:::: <.'
,1,{ ,
-,j\~::i'.
e
18
.
~'~~'~:/">:"'-' '~~.""., ..
'
. . .. .... . La quasI totahta. degh erron dl memona. 51 rnarufesta su di un bIt
e
100
Capitolo 3
limitato aile cosiddette applicazioni critiche ed e quindi pili facile trovarlo su macchine ':::4 seruer piuttosto che sui normali sistemi da tavolo 0 portatili. ;~{
.;!~
:!l
3,9
Esercizi
''';~
\:'!;~
-,\".~
,,:,:::::~, da·"'~.t:
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':),. 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 \'''? da 64kbyte per uso con 8088, sistemata a partire dall'indirizzo esadecimale 10000. Si .i:~:'~ disegni 10 schema dei collegamenti compresa la rete di decodifica degli indirizzi. " ,:~t;'; ~ " ',.::.;;,'
Esercizio 3.3 Si disp?ne dei seguenti integrati byte-wide: 1 d,a 128 kbyte, 5 da ':~~' 64kbyte, un numera ilhmitato da 32 kbyte. Progettare una memOria da 640·kbyte per.·;,~·~ usc can 8086, sistemata a partire dall'indirizzo O. Si discuta l'aumenta di complessita:.?~: che deriverebbe dali'avere un indirizzo di parteoza alIa posizione 1000 esadecimale. ;..
:;§i
Esercizio 3.4 Si deve costruire un banco eli memoria da 512 kbyte per una macchiri~:~J~ a 32 bit, che genera indirizzi sulle linee A31-A2. Per indirizzare i singoli byte di '.::,) una p~o~a veng?llo. ~piegate 1~ 4 linee BE3,BE~,f~E1 e B~~. n ba~co di m~mori~>~~ deve in~zlare all,'md1Tlzz~ esadeclffiale AOGOOO. SI dIspone dl mtegrati byte-wIde ne~,,:,,~:~ seguentl for~atl e quantIta: .. . .. , ' ..'{;' .' ..,;" 128kbyte, 1 mtegrato; 64kbyte: 3 IOtegrall; 32kbyte, quantlt" ilhmltata. 8i d~ter~ ~uanti inte~a~i Bono ~ec~sar~ e di quale ta~lio (e richiest~ la soluzione ",:.\ cbe ~plega ~l nume[~ ~~~o), 31 d1segm 10 schema del collegamentl compresa la ,,:~. "~. rete di decodlfica degli lOdmzzL "'~ .t."
Esercizio 3.5 Si dispone di questi integrati, tutti in formato byte-wide: un integrato..;! da 1 Mbyte; due integr~ti da 512 kbyte; un numero a piacere di integrati d~ 256kbyte:":~ Dlsegnare 10 schema dl una memoria dl 4Mbyte per una CPU 486. L mdmzzo dl ;;'.. partenza deve corrispondere a quello del secondo blocco di 4 Mbyte nella spazio degli.,::e indirizzi fisici. ~., ..
~.~
. ,~ .. '~ :
,~'1
,.~. ',~ ,'" .:'
1 ,~'<~"
)
./..'.> ".
4
't:::_:',c;::;,~-}\.·....
.t.2~/~: . '
.
':\::.
I
II sottosistema di ingresso/uscita
',,"" ~~-------------......,.,';:',' ,':~~::~~~;:-~. .
..,',
....... ,,'
)
~
' ,<"", ',~'..,'" .' ":. , :"~::!_":~:',-"'~.'. '.:"'_.:~~',:~,:':;
I
<,·X,',.,·,' ..
.'. -:, '. x::~~::,_":''-. :<·>7~.:"?·'L'"
.
..,:';;>...... .
.,:.:.
?."f,!JI: sbttoslStema
."
,
]
dl mgresso/uSClta (I/O, da Input/Output) e la parte attraverso la '::.':.;:,;':;:))fqilale,Sl. e~phca 1~ C?mU~l~~lOne tra il c~c~latore e il m~ndo esterno. Fauna parte ~'.'.>,.'.\«dels?ttO.Slstema 1 d~SPOSltlvl attraverso c~ I uomo comUIDca can 1~ m~china (video .:!i'..:,,_[,~:~.terml~ahl stampan~1 ecc')l c?rne pur~ quelli che servono alia memOnzzazlOne a breve e ,;"~",':~,:~~/a ..l~go temp? dell'mforma:zlOne ~umta a disco, nastri magnetici e~c.). La complessita ':";·::'J,.~:.:~.del.slStema dl mgresso/usClta vana molta a seconda delle carattenstiche architetturali ;:1tJ:.~·L~g~~7·si·ilgale ~acchi~e .. Nei grossi e ~edi calcolatori, it sottosistema di I/O puo ~~I1~.§{~\~~:e U~llta. speclabzzate nella gestlOne dei periferici, parzialmente integrate con
':~!>}r:~o~:"i~.i:·.In'questo capitolo I'interesse
I ]
erivolto ai problemi di scambio delle informazioni
;'::_>f.;:::.·e:~i.gestione dei periferici. Vengono discussi i componenti essenziali delle interfacce e ?t,,".""{;::)~}:cn~che di, g,estione ?elle o~erazione di ingresso/uacita: a controllo di programma, '!::;':, '?:;:'lc.c.o!Itrol~o, dt mte!rUZIOne e. In DM~. In p~rticolare ci ai sofferma nell'illustrare it '~;::;.',-:::~~:[~l~~.~:ma ~l I~terruzlon~, focahzzan~o I attenzlOne sulle sole interruzioni esterne (queUe .,:·,,::[}dpnteresse nello studlO del sottoslstema di I/O), U' ',:~~:\~~,+?~:~::e~' ~3:gioni ~i c?ncretezza si fa ricorso'al repertorio di istruzioni 8086/8088 e a1 Y·';:"~.fi~~:;~,~~.t~.vo hn?Uagg10 A:ssemb~er, anche quando si discutono soluzioni diverse rispetto a :4~;:r~'~~~-q~ell~ previste da tale archltettura.
•
\
--,'
::.",-.,:':~:. ::-.:,.:"." '", '•. ,<-~ ..,. . . . .
-g:..};=:~~:~~.f":
.''-
~ ,","::;,:A;,'t. Elementi di ba
, '''':'',«;. se '.';(;:::"';:;'''::,.' mgresso / Usc1ta O'
,
'
0
d 1 e
tt· t SO OSlS ema 0
d'
1
I
'I~'\':;';~\~?'~>
:t·~~::t~;~Z~:~Figura4,la e riportato 10 schema architetturale di riferimento per la discussione >;:';~?':~d,~?nten~ta nel. p~esente capitolo. Esso mostra che ogni dispositivo di I/O e colle-
: ;~~..,~:~..:¥:~to. al bus d1. ~lstem~ att:aver~o un'interfaccia. L'interfaccia Bvolge la funzione di :,:;.. . !,:;;:(~.~~~~~tb~e:to sla; .elettnco. ala l?f?lCO tra Ie unita periferiche e il calcolatore. . ",:~:;r~'·.:f;':-·'·· rma, clasc~n diSPOSItIvO procede alia propria velocita e in modo asincrono <~ ;.:j.::;,p,spetto ~la CPU. Vmterfaccia cleve quindi: ' " , "" ',",_... ,. '·,:-,--,. . ,.:~\,;,r".· '. '£... . . ' ':'··:::i,,\;::·ti~~'~;_:dormre eventuali re~stri ~ov~ possa.no essere appoggiati i dati nel trasferimento :-"',;:;J'~"'-';>;-:;" , a. c~lcolatore a umta penfenca e Vlceversa', ',r"· "',"",,,'-,.' • .. ;,-:.. ',;-,:,-,;".;-".;
.
:~i~'/~ut7 ~.:. presentare eventuali registri di appoggio dei c0Yr!anru alla periferica., . ,.o;.~ ":~. '.'.~.' " ..;~,~,.oc>~~,.':, ... , .
I I I
·
'ti!
." '-"1 'J,
I
I
' .. '
_l~
102
Capitolo 4
:tH
:~i ·1t1 },;!
-
~,
"\;.;~
'/";'
" ,iI<,", " -'ii' ''; ,~ . ".,t,\ '.ro-
•. t~nere traccia ~ello stato della peruerica e delle eventuali condizioni di malfun~.'\~~ )~::; Zlonamento 0 dl errore, cODsentendone 10. lettura. " ,~~ ;}· ", ~J~\ '.1~~
o~ :\~
-~
L
I
BUS
CPU
UNITA'
I
"'
lHttJI'ACC1A
"""",=
~,.o~
nm:RFACCIA
UlIIT....
m
V.
a) SChema ell l'ifmmUllo
II I I I I . I: I I I I. ;
, ! •
"'" ""
.
-.'fl
.•.• '\',,:,
·,. 'i4 ..,. ,'<'Y .. ~~
"~ 'i:~
"<*~~f. ~\ ',,;;'
CISPosrnvo .: 1"
" '/0
'\1
" ",'" '-"'; oOil
"" I
•,~
O.~ "'1'
, ~ ',··.V. ,.;~
';',"
'.I,'Io
""",~ \I~'· 1".
,•• '
l""
·~I:
.'~
."; .'\ .,,( n 1i" ' 1, './ii;Jr f~. · ,'II))
~
",
..
,,\"; : 1·.··
,;.{. ";;' ~I~::;
b) ElemenU IODdt.malllt.U dl Ilfla l"t..I.«I• . ".'
.
~'1~ ':~
Figura 4.1 Schema convenzionale dell'architettura a singolo bus e della. struttura di una-.: ,::: ;:~) · . terlacci -'Jij '<'1{
genenca. 10
a.
"~':'''4
':J'
l.~
1:~!
, ',ti! ' ~:1i. ., . , ' .. . . :"''':~ ~';' I~ecedegl ra 0Wdtl sonG stati concettualizzatl nello schema dl Flgura4.1b,;"fY- '~.t '. , . . ch j 1 f "':U' ',ri, d ?v~ G. d enotano nspet,tlv~e~~e , G' . e 1 re~stn e svo gono e, un·l:;~' '~'
e
,
Zlom del tre puntl precedentl. Come sara. chlanto pm avant1, non detto che aJ tre.~' blocchi dello schema corrispondano degli effettivi registri fisici suU'interfaccia. Per':~ 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 terminologia,~ Icorrente ~i ~a .S?esso il ~ermine Porta di I/O. . .. 'iP~ . I re~tIl eli, m~erfaccla devo~o pot~~ esse~e lettl 0 SCIIttl. A tale scopo basta ~So-{''':l Clare a ClasC:m reglSt.ro un ~ropno mdlIlzzo, .lD m?d~ del tuttO- anal?go a co~e ~I,usa:':~ . con Ie celle di me~ona. ~Osl,co~e .queste .uI~lIIle nchiedono la decodl~cadell'lD~mzz9,~~. per 130 lett';ll"ajsc~t~ur?".l r,egI~tn dl I/O nchiedon.o ~'analoga decodifica: ~v~l~en~~ te 10 SpazlO degli mdinzz,
j
·
.
a) mgressojusc1ta mappato ,
•
•
•
. ' ill
.
memona (memory mapped I/O),
b) mgresso/usclta lSolato (I/O mapped 1/0).
I
l ,
~~i
~*~
::f:
::W
,tr -)~1{.
';:, '~ ;,
,~~
)j;:~ ~)J~
1>',,1 "~l;
".~
~:~;,
I
':';
,'''~ ,'il'~ • '''It
""i" ,.. _,
'
,:'fI, '~1
I
'');
;:.
'-.
Ingressojuscita mappato in memoria Le architetture che prevedono Pingres~~, \:
,:,",?
~'l
'r.J
!'' t".r:.':' .,.. . ,', ...". .
H~'"1~
"
1i~~:t., !;;t.. ,.
~~'~;~;
n sottosistema di
>
ingressofuscita.
103
.::
,.f.'." ;,''!I'~~'':: ...." ' " , o-v,'"·,,,-,·.
;?~~,;;,;, linea A 15 per .discriminar~ tra spazio, di ~emoria e spazio di I/O. Ovviamente in
·:!~'?L:,.:'questo m~do
percle r:neta delle SpazlO dl memoria. In Figura4.~ viene presentata ~:':";~~~> ,una SoluzlO~e. che sacnfica solo ~6 de~ 64 K. A patto di complicare 10. decodifica e ~t;:t~sempre posSlbIle portare a una dimenslOne accettabile 10 spazio di I/O. 81
lf., . .;, .
•,"' ,., '~-".~.'!'
"~":1 -. :,.-,:.• Y.- ',". ~-, :_~ ..
AO-A1S
~-,~';i. '.
o,J;. ,.,." . .
' '. I,
M
-c .
'OK
0
':'•.;-i""
~.;o"~"~-:-. ·'...·hl'" .\-, .." ,
DEC,
•• I
L 4.0
r
1
A
,.
.,
~
'.
";i"l';) ", , :r.•. '·
'~""":"
\~'\', n· .. :~
I
L c'
'OK
Memoria
,;,,,,'.' .
DEC,
.-r·~i.I'''.
,..., ._
.. ,. ··l;.~'·· . .:! /"" .,,'.,
\
:-;~,:,
'.,."'
..
~
M.%Tl.Crl ....
A'"
,
r
...
;Y, .. J~·
.......' .:'
-c .
:: "
),:';I:~",',
{"J .,'''.
0
L.::1
o
)
-
~I.
Int.ertacce
pe.turc.
M
,1_8',
f-
.. p
~\;":;\,.i-'.,,.·
"
,
,
b)
Oecodific8
indiri:>::>::>:1
!i'~:h::-::.::,:F,gura 4.2 ESenl.J~lO d: mappatur~ lD memona. degli indirizzi Iii I/O, Lo schema di destra .',V,~':\:": ,,~ alq~anto, ~pprossl~a~lvo. Le ,llsclte del decodificatore DEC M vanno intese come i Chi '~:'d'::"', Select degh mtegratl dl memOria' conseguentemente il di r "P t,:":~,, ,L' a questa decodificatore dipende dalla dim . d li ~umera. 1 lD.ee port~te, tn tngresso ,;.r:'i':'" enslOne eg lDtegratl' e nmanentl linee del bus '.'f~/t·~.)n~irizz~vengonoportate direttamente agli integrati eli memoria:
1tj..!)~:'':-·~'"
,
i~.-/',;"
~~~-t;~~;~.
:~~:l?-t:~:;:',.
"',
.l.~if?'i.')-:"
. .
_
r~:~qI/t. ~~~~.esso/usclta isolato, I.n ~~esto caso la .macchina presenta. un uumero di istru.fr:';~',~.\~,~ I, d~dl~ate aile oper~lODl dl .m~esso/usclta. , La 10:0 eSeCUZ1?ne da luogo a cieli
d'\
,\f~'~::f"" ,,~~ ~: ': .tutto anal~ghl a quelh. eli let~ura e. scnttura ill m~m?nal con la differenza ~"~:lt(I/O ~~I!-gono assente due spec1fiche lInee di comando che mdlcheremo come lOWe ,~~t':'l,::/' teCommand) e lORe (I/O Read Command). 0
~~~~~~.:: v""" Per esem~lO.,ne~ c~~ del DUcro 8086 funzionante in modo minimo, rowe e TA.........
~:;;>:":', en~ono creatI,daJ pledml MjR>. RD e WR secondo 10 schema di Figura4.3a. Quando
;;.~.\,, ...l1 micro 8086 e configurato in modo cia funzionare .
. ;~i<~'~::, e ura scnttura esceno dal componente di a
,·,,:,·,r'i.'1
tt
.~io:.':·":··
/
0
"~':\!'-""'" . ,,-~' .' ,,,
d " '. mo 0 mas5lDlo 1 comandl di 0 . 8288 (F' b' pp ggw Igura4.3 . ill
.'J'T;'·,·,'
:~':J~!~'~;;:;~ecodifica degli indirizzi Le porte che compo
I"~ t f . es . d' ngono m er ""cIa devono pater ~'::;:~''-~' desCOerdeifiln ldnzzl~~e .. ~ tale scopo. sull'interfaccia deve essere prevista una sezione di ;\.;";., :" ca eg 1 mdlflzzi. In Figura4 4 eriportato . d' d d'fi d' . :' .: . d" . . un esemplo I eco 1 ca 1 comandl ~}.::<.':::e In lflZZI per una interfaccia avente due porte di I tt dill' ,{":'F~:~aso 130 decodifica dell'indirizzo di base e fissa Ac·c ur~ e ue, I' scntdt.ural· ~ Questo O 0'" I comand d' I . opplan d 0 e mee I se eZlOne con !~4~;~:k':-' I 1 ettura e scrittura. si generano i cemanill per Ie singole porte l . ",
0
;E,\; :': .,:
:;:,fr'~~:':''-~'
?:\ift.' di:le7~ not! che :~ spazio di I/O risulta come composto da due spa.z:i sovrapposti· queUo d 11
~j;r>,~" ,ura e que
~i:2;i-/,,:'
l;~':"f.r;':l :;
J:i"f.!gi!,'~:',
0
delle pOrte di scrittura,
.
.
e e porte
_,}J
Capitolo 4
104
~~If;.
l).. t.im
:~~1 >.1/10
••
iOnC
r+=D
'M/':' ~
,~
(1:I't'/ .. ,
•
~
B"e """,e MWe
·N:• I,'P'_
lOWe
::,I
-j
MRC
[)-'=
-
"'~
';>,
'.,
(DEN)
r
so
'r.' "\'~l "..:
I
:~'
~e
•
, ,
~'''' .1 ~
!;,
.',,,
'·,"". ..... 0,
_)
Modo
Mtnir=o
b)
Modo
M ........ l:rno
, '.- .-.
'-"',
Figura 4.3 Costruzione dei comandi di lettura e scrittura in memoria e in I/O per la CPU:~~ 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 e'S2'~~; ".. 13 codifica del cicio di macchina in corso di esecuzione. E richiesto il componente 8288 per~ . generare i comandi verso l'esterno, di cui quelli riportati in figura sono un sottoinsieme.
.
:-¥t .. '
., •• '0
~
p •• ..-.. •• ••
'~
:~·i!·
'''.,
",E;LO
lowe
,·..·r,~
'l,;,~
"i>;\
....
,.! 1,;,
·:l;:
:t~ *1'~
'),: " rL~ .. ~,~
.0
10l
,,;'Il
,• . '"
::'\~
7.1..-'530
-
":
"""~j I~"
'~'';
on
V
·~i"
I~'j·. ......• .".
J J
-
.I:L~
)
l.,,;, F,,
PO.
p,w p,
1..
;U~
••'
-.~
"'Ji,
Ic",
R
'11
p ..\ i~li
iOOW
";~ 'ttl;
~I;,
Figura 4.4 Esempio di decodifica degli indirizzi per una interfaccia che presenta due po~~\ 1.,.lI .,i~ •• '~f. di ingresso e due di uscita. La linea SEL rappresenta lluscita del decodificatore dell'indirinj~' ;: di base assegnato all'interfaccia (per semplicita. si suppone che l'indirizzo sia dato su soli·:S!' "jf..; "I·" bit). Si noti che la linea SEL risulta asserita in presenza delPindirizzo F2H e deUlindiri~zJl, '.o .''. F3H. Ao serve a discriminare 1a porta all'indirizzo relativo 0 da quella aU'indirizzo relati~~ ~;I1!: ';'\1!' ~~~ 1. 'k~ :,~,'
it!.l~
~V
i{~ ."t.,.,.
,'q,' , ingresso richiede solo dei bufJerj~ '~"I
Porte Nella sua forma piu semplice una porta di 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 scrittur~l fino alia prossima. In Figura4.6 viene dato 10 schema di una porta di ingresso.e)~j~' una di uscita. " ~.~'·I . '. ,,It,
""(~:;"
Modalita di esecuz~one delle operazioni di ingresso/uScita Le semplici inteft~ facce di Figura4.6 non esplicitano alcun accorgimento per 1a sincronizzazione tra p~.~ gramma in esecuzione e periferiche collegate. I periferici sono normalmente piu len-W" .' ' .":;l .,' ".~~ .c
••
i!~
,W:.
'11r.
11jj.
~r
Jt~K
t~ l;r:
'?J;
;*i
,.; ,.
,.
tl
..... 8J~•. ,..
~·~·t ";'~': ',.'
S;\",¥:~..
..
,t.'<"',~".,
··!"il'j.. ,',
)
~~rr;r!~;,I} ~,
~1Ir,8!'
JrM!(~;';1;~';~~·~.~··-,,
." ,;~;;~;~;,~.-',:;
::n~s::o::t::'OS=is::t:::e:::m::a:...::di:..·:::in:::gr,,-=osso::..:.!. /_usc::..:i_ta__l_O-,S
,
.~~j~'-~:~~~":: .'. m:~;i.~::"".;., "
1.k'~.'~:~z/\:·~ .
,;:'H?~,y~ji\il~,:;, ' . ",.'",.,,"': "i;~ " . ...,..~ •.,.'~ ,t..-I"-,•. ".
)
v ••
'
_ .-,. , ..' " " ,',
'"
Il/,,~nW::.~:·,'
j.' '~I :~'i:;·:·, " ':\~~·~I'i, ~T ~ .:: '~
I
.. 7<, '0
:l"-:'>:"'"-'''-:::''''' "",. ,''';'~.,-,''' ,.
..
':':\:l,{k;:;>.~\ """',.-
'''.;'',.:).",: ~'.' ~;. ~;.,
i •..
',.
._.
,:,'J,,(.• ·.r.'.'...•.' ,~ .. ',,I~ " ;.;, . . .',··\''''''\.l ~:":':'.~ ,. "'.
lli
.
~,
,_
..
. '~'~.),.;~'f;:.;: .' •",'" i",.,'~·:A'.' , '-', ',.. .
,
. ,'. j"'" 1''''"'1· ' . , A" ." ;)-r~l.':;·:·. '. . ,
ltl'~'~ li"(!"7 , .,. " .. ~~.~f•. _"
>
.....
\·~>.i'i,\i·~~i:r,~.t,:'.;
.....
•
I
-
.11/ _ DO
SII:L
,. _e
v ••
I-
;:".;:;'~i~:·:';';· ,.',' .,'
.
10
~\~t~ft;~·;/\',~'s·'·
poR'fAe
"e
&empi di tecniche di decodifica degli indirizzi. Con la soluzione cU sinistra, a ~'~','" .;...~ IgUl'8. • . • • 00· A 1 . II dis' ., e
~.;J~\i;,:J~f;·.I~onfigUra.zione -Ao_a = ~~.~.I;r..(;.'.;::\_ "
,;.'" .),'\'"'.".'_ '. ,~·ty "-"~""i;';~ "
~,'l-~::.;\~~~:;:,:~ ',:: '\ .", '".' -r ,."
,;c,~~' "c:1i~>\""""" .'. ,J:j' ~7:i;;;;!.:.~,,·.; '. • . .,,0 "
1··~;"4,··,.
1010.
".' . .'"
'j.
~~'·h, ","""'"" .. .
'
. '.
;~i~t"'~ . ~~~.~;,~-..•.'" !.\:.,..
~
j :~f~tj@2t/~: ;,\.(jlj,.i".. ,".-.. )11 , ":"'!,~:lti\f';."grF ,"" '''~i' ••·",:Jr,.'-;·'i'''. 'J-..
ow
'
... "'"
,. ,.,..
~
•
·.
j
"..
..... ..
.
....
"
~
'i _' ,
~
~
~.
~-
~,
I
tj,i~~:f;;;;.·4.~:·Re~lizza.zione : una porta di ingresso e di una porta di usci'a attraverso com~',~~k~~)"p'911eD:ti' stan'
V&~~~·~~{4.a.lla volta) tr~ite. i. due OE. ~ com~~nente !4xx374 cont.iene.8 flip-Hop D, can uscita in
~Si(;~.:1:~.~r~~stato.
~·::!'"·~r>./; r.
II dlSpoSltlvO memOrlzza gli mgressl sul £ronte d.i salita. del clock.
W~~;l;paiagone della velocit" di esecuzione delle istruzioni di una looltre essi proce.~t;,,~~~)~~~~,m.mod~ autonomo e quindi si rende necessaria introdurre qualche meccanismo CPU.
.:i'~~I';r:,:,9.1 smcronizzazione. .;,l,.~,>,~~, ,., •.
rt~\. ~;~~~,,~~>,,:: 'Le teciiiche fondamentali K~k}!j:r~~I;'" ::. ,," .", '
per 1a gestione dei periferici sana:
;~~·~~;H':"'::··~: ".,
.
~~~~~~ar:C?ntr6n~' di programma; :l?ft§,hd''''~'' '. , .. "
....
..
i~';jI;~:,~)_,:~tto ~ontrono dl "~.l.<;.".,.,
"':.
;.~.
',.
..;; "
,
I I I I
mterrUZlOne;
;,~:)'~~~~~:,·~)j;_ti~iriit~~cesso diretto alla memoria (DMA) ...... ,. .
I I I
... "'_IMXI
'. " "
... '~ ", '. , j:::· '. ,,'
~#%t~:g).],:;i!i<",':, ';', '.'
~~',1iiFl'·.i
'. " '. "
"
.;:-,.
~
" :J '. "1 "
• ,'. ,,:
I"~ ,"".....w......·" ' .I ,,~,!t-.~7.,~";·
'.'.
'.• '.
.'
I\")"~"~!:':";" ;-. ' .i;-:hi""li~:;\~ , ' I .
~ ',r~p~;<:~'", .", . .' '''XJ..'·'··''·'';'
~
. ' .•.•
\ '~'~~'?'~""o;: :.": . i~if.1~P:";.; 'f':~"".'.: ."
,i~h"'~
I
poJ\Tw'A
,
'
, ,·~~;S~~ ~':;: ',:~:' .'.
:r.l':.."·'-J'··t"
I
• •
I
•
..
00
~
P
• •
,"'':'\... ' :.:";'" ', .... ~. . ' t.·,o~> '.' ,. ~,'::.:;~l;, __·:.,,:,·, ,
•
v.1 I..
::::j . . -'-__
I ......,. •
:"l:jl~q:~,,',
.,. ""
~
0
,·,·1,.."',.,;",.,.;··..". '. "
""(~'~'r.:.''''':-'
:=
Vaa.
.
0
Con processori di I/O,
l~~~;£j:':La 'partecbe segue e dedicata all'approfondimento delle diverse tecnicbe. I
I
106
Ca.pitolo 4
'~;5;:
:~,
4.2 Gestione a controllo di programma 1
I I
:~:':..:.zo ,}
.,.'.
Per fissare Ie idee si faccia riferimento aJ caso di un'operazione di uscita, consistente },). '~'-> nel trasferimento'di un bloceo di dati verso un dispositivo come una stampante. ..\~}:' :-0 Si supponga che 130 stampante accetti caratteri di 8 bit e che richieda un segnale ':}.~ :~:-~ impulsivo come indicazione della disponibilita di un nuovo carattere al suo ingresso. ';11'i ~""'; Si faccia anche 1J ipotesi che la stampante risponda J a carattere stampato, sempre can '~~ .~; un segnale impulsivo. Si indichino con DAVe DAC i due segnali in questione. :')~, -,, Vinterfaccia dovra. prevedere almeno una porta (registro) dati di uscita come ~~~, quella eli Figura4.6. Davra. anche presentare un indicatore dello state della stam- ',~~ .",; pante, che dica se questa e in condizione eli accettare un altro carattere a se e ne- ,\i'~ :': cessario aspettare the si concluda 1a -stampa del carattere precedente. A tale scopo -h~,' basta prevedere un flip-flop, il cui stato rifietta quello della periferica. Tale flip-flop e~M indicato come SFF in ~igura~. 7. La state di 8FF viene letto nel bit meno significativo (DB o) dello pseudoregLStro dl stato. :0', . Possiamo stabilire la convenzione secondo cui l 10 stato 0 del flip-flop indica che la, ,,:~~, :, periferica e pronta a ricevere un altro date, mentre 10 state 1 indica che la periferica e :~ , occupata. Dunque, 1a r~ta t5AC delia stampante dovra. riportare SFF aD, mentre ,,~1;) ;". _ il. com~do eli stampa D~V dovra. p~rtalo .a 1.. Ne risult~ 10 schema di Figura~.:. '~i:", 51 notl che l'esecuzlOne di un'operazlOne dl scnttura copla 10 stato del bus dati In .:?¥', . DREG, genera il DAVe porta a 1 SFF. La risposta della stampante porta q. 0 SFF. .A~:,
."
.X§:'.:
\
I
~~
-20
• lOR<:
•
I I
.....
--"
SEL
, ,
IOWC
'"'" t:[J-?RTR
l
BUS DATI
, B
UNEE 01 CO NTROU.O
.j,.
;~
.~.
,
",
'An
.--
"
:y'.
. , M' J '. ,,-'"...
DREG
..
,.~ .~
'"' LJ
,- , , "'. 'M ~
,
,'.~ I ~,.,
",:'
· '1[:
STATO
,..r.~,
.
';i '
"'~'I j,; .
..
OAe
_
I
.~.. _
,.~'1t
DB'
B
~~ ,
BUS INOIRIZZI
• O}' :.1, .
".
LJ
.',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) da un latch eli 8 bit, 1a cui uscita e tenuta sempre abilita.ta..
\~
e costituito. ':f:'
c
'":'::3 .
I;; _
.;:~, :'
--"c,::'
\
I
I ,
" "~;I'
4.2.1 II sottoprogramma di gestione Si supponga eli dover costruire un sottoprogramma, che chia.meremo STAMPA, che effettui la stampa del contenuto eli una generica area di memoria, trasferendo direttamente
:"'",.
··r" . .
'~';'I
4' ~\:'
4.,:, ,:~
':t" : ~t ,~"
..
·.'",1\
, II sottosistema di ingresso/uscita
:~:',':~,: "
101
,1'.·~<
-::"<" .". i singoli byte alia stampante2 .
Indicando con BUFFER la prima posizione delParea di memoria contenente il mes>i<";"',:~ saggio da stampare e con n ~l nurnero di caratteri che costituiscono il messaggio, si 0",-,' stabilisce che il sottoprogramma STAMP Avenga cbiamato secondo questa convenzione3 : t.-, MOV 51 ; OS:SI ~ indirizzo di BUFFER ;'... MOV CX' ., ex <- n ; .•'. CALL STAMPA
.",- -, ': '.' ,,
,',,"
; ,
,,~,
. 'Si stabilisce inoltre che STAMPA etIettui per intero il trasferimento degli n caratteri e restituisca il controllo all'istruzione successiva a quelia eli chiamata solo a ' trasferimen.to cone.luso.. . . n prehevo e 11 trasfenmento dl un 81.Qgola carattere richiede questa semplice sequenza di istruzioni:
: :_.'
MOV
AL. [SI]
OUT
PORT AL , .:. " \. , Do've con PORT si e indicato l'indirizzo a.ssegnato aIJlioterfaccia.. Come gia. osserva.to _ :" Pistruzione OUT copia i1 contenuto di AL in DREG dell'interfaccia, fa passare SFF ~ .1 ~.otrasmette .il ~AV alia. stampante.. . . . . .,:.:. La trasIWSslOoe degli D caratten nchiede 1'1terazlODe delle due precedenti istru,. " 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):
ATTESA:
-.
"
.'
AL,PORT AL,l ATTESA
Terminata I 'attesa, e necessario conteggiare il carattere trasmesso eJ a seconda del fatto che Questo sia 0 non sia Pultimo: ".' concludere e tornare al chiamante; •. prelevare e trasmettere il prossimo carattere. Tenuta canto delle precedenti osservazionl, il sottoprograrnma STAMPA assume questa forma finale 4 :
STAMPA:
c
_
IN AND JNZ
ATTESA:
MOV OUT IN AND JNZ
AL, lSI] PORT,AL AL,PORT AL,l ATTESA
.
,
:
..
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
•
108
Capitolo 4
,
INC
..
\'~",
':
":,s;
.'''-'"',.,
SI STAMPA
·"··:::E;1 '.';;;,;t ';-.\~ RET ·.,)11,: .r~~1 Si osservi che il s,ottoprogramma STAMPA trasferisce il primo carattere senza verificare :':;;:'~
LOOP
.:,'
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 ')~~ e totalmente sprecato nell1attesa. :.}~~ "::j·,.N ":-:"'.[¥ .':,"if;. '. ;:<11:
4.3 Gestione sotto controllo di interruzione
· ,,~-,'tl'!
· '''';
:::;W)
,':''-.
.:<.i]l \. ..,:'''..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 f al h I . - . , . Se all a casa manca I·1 campaneII0 e' sempre POSSI·b·j d I· un amlCo. I e are qu c e a tra-·:'.~,L~ . , . d a f f · · II fi . ", , cosa d urante I attesa, rna ogm tanto t: necessano sospen ere'e aCClarSI a a nestra':;,::~f . ' tt A d · · d· I fi t ·1 d'Ivana .:(,J,' :.. .5~l per ve dere se ]' amiCO e so 0 casa. n are avantl e III Jetro tra a nes ra e 1 non rende certo piacevole 1a lettura del giornale; molto meglio contare suI campaneno.';\~r e. sedersi t~anquill~l pronti a int~rrornpere 1a lettura allo squillo. Fuor di metafor~;':;'::~ SI tratta di orgarnzzare Ie case rn modo che 1 una volta trasmesso un carattere Sla;:;.»{ possibile pr~cedere can l'esecuzione del pr?gramma, mentre la stampante procede per.,.;J,~ : conto propno. Quando la stampante sara pronta per accettare un nuovo carattere) '~'L:~ dovra asserire una richiesta di interruzione, alla quale sara assodata 1a routine dL :?;~ i servizio (mte1"rU~t handler) responsabile di procedere a1 trasferimento dell)eventuale:;;.~ carattere succeSSIvo. . ,::',t;1! La Figura.4.8a schematizza. il fatto che" mentre il dispositivo e.sterno (~a sta~- ':.~~~ pante) prende II tempo necessano a trattare 11 carattere trasmessogh daWultlma ese:.::iifii ' cuzione della routine di servizio 1 possibile far procedere l'esecuzione di un program'::':,~JI rna (indicato come programma principale) che niente ha a che fare con la routine di::;-'f~~ serv~zio .. L'interruzione della periferica ha l'effetto di richiamare l'esecuzione della.:;:~~ routme . ,.::'~1 ,~·),ot Si noti che con questa tecnica i deli di attesa risultano eliminati. Ovviamente, per,.\~£ trarre tutto il vanta?gi~pos~ibile da q~esto fatto, necessario che ci sia effe~tivamente1T~'::. un programma che Implega It tempo dl CPU per tutta la durata del trasfenmento deI.',:;~ . blocco di caratteri. " ';:i~ :
e
e
"~1f,
,:,.,,!~
;] 'ilJ'
4A Esempio semplificato di sistema di interruzione:~
",
.
"~'\:1 · ,'r" '
Per semplicita assumiamo che il sistema piloti un solo periferico (una stamp ante) e )~'J . che vi sia una sola possibile richiesta di interruzione, portata in ingresso alIa CPU ;~i sulla linea INTR. . ..• Per quanto si riferisce al modo in cui la logica di macchina tratta Ie interruzioni,.',,~ ; assumiamo che essa operi secondo il modello descritto a1 prossimo capitola e illustrato·:'I.~,,;
;,j
:
1
,
.... "",.';":, .
..
'::,.,
,
;"
.
,"
,
,,"
n sottosistema d.i
..,_
: ,;':- :
109
1
,
"., PROCRAliliA
: "';""" '.: .: , : ::-, "::. .: ,;t ,.'; '..
1
ingresso/uscita
PRINCII'ALE
PROCR.u.n.U.
PRIIlCIPALE
PRlNCIPAU:
"ULJLJ
CPU
'C.. ':'
PROCfUJOlA
""""''' "
,
SERVlZIO
:_.';_:::,:\. ':',', sta~panle[
':,:;;':.:" .. " '::.'~:<,: ;,"
f--->'>,---< STAltPA
ROU11Nl1
"
S!RVl'lIO
ROUTINE
SER~1O
f---,o'>,---< f---,o'>,---< ,,~,
STAVPA
, ,Iilll',lfflJl •• •
ROUTINE /)1 SERVlZIO
/' ,.,=""
, ,•
"\'i:;' .. '. " :, ':" a) Temporiz'la'lione delle altivita' bl E ' " . ': '; ;,.. ," '. " ' . SeCU'llOne roullne dl serVl'lio • ""'. Figura 4.8 L mtenuZlOne esterna Sl ma.nifesta in mado asm·ero . tto -'1' . " N 1 . ". no nspe <:Ll esecuzlOne 'r: . ·.: de~ pragra~ma.. e :aso specJfic~, 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 )· ., .. ".:" di 1OterrUZlOne ne sensa c e essa cleve avvemre per intero ment I chin d !'' .' . '. '". . • • . . I re a mac a eve trovars1. .,,'L
:
<.','':'; , 10 uno stato certo, ncancablle alla fine della routine eli servizio :·..· · · · ' , · · · · ' · .
,: '<:.:' "'. "'"
' '-_
m<-<'", :<,r . d: II· F·
5 26 A . . . ,~,« .....>fl·a afl 19ura. . ssumlamo maItre we sul ramo d eI servIZIO .. d ell'·rnterruzione il IE t. ,;''-', . :'.... :."" . lp- Iop venga par ato m stato a (Cfr 5 11 4) I· I . ' ' ... .. ~'." n cone USlOne can e precedentl asSunzlonl· ~ pe~ Ia nos t ra CPU 1il nconoscimento . c:',/, . .-' .d' ,.. t . l'.val ,'<.", .. _' 1',U. n m errUZlOne eqUl e a questa sequenza dl azloni: 5 ::,<;:"',:.'.' .0<'.'...• azzeramento di IE;
I I I 1
:; :;
'.,">:
:::':, '.
j
• fetch delI'istruzione alla 10cazione di indirizzo 0 can PC non modificato.
~'i ' '
I
i:J '
~ " :.,
.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. nuovo schema in Figura4.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:
c"
n
' :::.:::.' : :,:-- .::', , ", .. '
::~"'('
1, ;'.'
MoV OUT
';,; .,.' ..,..J. ,'...':', .
AL,l/O CPoRT,AL
e
; At <- comando Set/Reset ; CPORT: Indirizzo della porta di ; controlla dell'interfaccia
I I
:, , ' : ,
.
]~'4.4-1
~ ..
./
,." '..
':
:.,:
..
;'," , ;:" .
Esempio di routine di servizio
, :La routine di servizio
e assimilabile
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 cui·il programma stato interrotto, con tutte le variabili e gli indicatori di stato non modificati. A tale scopolIa parte iniziale
e
. sCio corrisponde aI minimo supporto possibiJe fornito dalia logica di controllo. responsabiIita del programmatore. Tutto iI resto,
\
e
I I
I
,~.'InJ-
Capitola 4
110
','!
I
BUS 041'1
,
""
---
• ''''''
IOWC
I
lORe
PORTIl:
,!. ,.· "'.
-:r
-,
;i
, , 01'"..I
.
,- , ,
"
DAV
.J..
-1
0.0.11
~
~&
l.....f
:
,:
STATO
'" e°0'
I
,"' ~'"
CPOR'!'W
.. , '.
"~
OAC
, , ,
i
l.....f
~ ~'
lENrr
;~
illTR
Figura 4.9
;:,::f.- \; Interfaccia di uscita modificata con l'aggiunta della richiesta di interruzione, :)$f! ~H .
'·l~1~ 'G, '-;'.,,:~,
j .
I I , )
I
I I I ,
':~
della routine cleve provvedere a salvare il contenuto di tutti i registri cli macchina che"k;, ,) possono essere modificati dalla sua esecuzione, in modo da poterlo ripristinare prima ~i', ! dell'uscita, ""':': ~;t La prima e fondamentale cosa da salvare e il contenuto del Program Counter. ';":~1: :~ Nelle ipotesi minime descritte al paragrafo precedente, il risultato del rieonos_3".,:~:~,, cimento della richiesta di interruzione e l'esecuzione dell'istruzione contenuta nen~~:1~ ;/ Iocazione di memoria 0, rna con PC non modifieato, Per salvare il PC basta che':X :; il programmatore abbia posta nella locazione 0 l'istruzion~ di chiamata (CALL) all~,-r ',\ routine di servizio. Uesecuzione dell'istruzione in posizione 0 determina dunque: '
.
,
" ,.
,
',;.r~ ~;
• II salvatagglO nello stack del valore del PC (ovvero dell mdlnzzo a CUI tornare at, 'i:,,: termine della routine di servizio)j " .•;;j~ itt ' ill .. ":,;%:,,' <: • il salt0 all a rout me serVlZlO, .',!-, ·
:~·:,'il'- :i
Eotrando nella. routine di servizio mentre il sistema di interruzione risulta dis~~':~~ bilitato il PC e state salvato sullo st~ dall'esecuzione dell'istruzione di chiamata/}; La routine deve compiere Ie seguenti funzioni: ""
,, ~i
;~
",,:
I, Salvare i registri e altre eventuali informazioni che potrebbero essere modificat~-·5' :,t ,,¥ t: dall'esecuzione della routine stessaj prima di tutto conviene salvare la parola di",g: ~{{ stato del processore ( P S W ) . . . " , . ~:d(
':\,
'~;I,:~;:
2. Trasferire il prossirno dato.
\'~:j "~
,,' "'-'1'1".
:;~~. :'~
3. Disasserire 103. richiesta di interruzlone.
4, Ripristinare i registri e Ie altre informazioni di stato salvate 03.1 punta I) in mod~:1' :; che, ritornando al programma interrotto, tutto avvenga come se niente foss~4:. ': accaduto. <~ f
5. Ritornare al programma al punta in cui
e state interrotto,
1;t~ i~
>':~ :' . -;'!;~ ::"1
. . ,. Per quanto riguarda iI punto 5, assumeremo che la macchina possleda 1IstruzlOue:.:" : lRET (Return-from-Inte1TUpt), Questa istruzione ai distingue dalla normale i~truzion~~:~ 'r
,,"<
,·i
__·, ' 1 '.,
i ,~A/r', "
. -".',
'-
[;f&!ilw;.~0\i;~;;
~:~0il~I!iW(,::;,~":: J-"I.l'l",!-".,-;j.·r·"'z"~i·:.-· """,,_,'!",.:.;'.,;"! -,,'
Il sottosistema di ,'ngresso!usc,'to
! ~'~i"l""}-l"~' ," .
.,nJ.. I.:'!l'/""- ,I~ ·!,<,·!'.l'.." . ,. ,.,...,y•..... :':\ . 'c''', ,
111
-'-:::'::::====:"::~~~"'-'-.':::':."':.._~'::'
,
rl'Pt\~';ii.;·,r·,'~;;<:,
-
, '~""''''. " ".' i~(~;::i):y~!~t·i:'-. "
1;i:0:U:;i\\':}~i' 'ritornO da sottoprogramma per il fatto di eseguire in modo indivisibile Ie seguenti
~r:~;~~m{~i;~e?~r~ib?i:
&,;!~'li~;:j!~0&;:~)" ripristino del Program Counter originale;
::'~,-:,,"~,:x;~~;n;i":_
- -
:;:sr;:1'f':~\b) iiabilitazione del flip-flop IE della CPU,
, . ,- .", ... ,', . ,.,- • c- ,"- ; .",,',. t;I"'~""""; """,'
~"'I
,'", "./". ':'" ,,' "
iri~';;~1)~P:;i'
.
. .,
~\l'~:Y::i%)"::p~ogrammazione del servizio dell'interruzione Vogliamo ora illustrare una ';"~~/'.:;·;,~;.:·;possibile tecnica di gestione del trasferimento satta controllo di interruzione. Chia-
~\;::~~J;:;{\~t:i~m~r~f!lo dri~er il pro~amma, comprensiv~ della rou.tine eli servizio, a cic deputato. ;~::P'i:')~~.'.L.:Jl dnver puo essere VIsto come composto d;i due partI:
H~;A<:;-i,!W~i+J::::'.··,.' . ,:':~;i\~::;~J~//'~~, )a:sezione di inizializzazione (del trasferimento eli un blocco di caratteri)j ':;/,":c"~":';: ''' ...
'_.' '
)1~;<:':::!:1':}'S~.~L~.r6utine di servizio dell'interruzione,
!,!;'.:i'::;':"~,:~::fS·;.
t~-;:'1,:')~U;'\;:'i' .. La. routine di servizio all'i.nterruzione .viene e~eguita in modo del tutto traspa-
~~~,i,iA';'{.:j:rent~, nspetto al program~a, lD quanto Vl€ne attlvata daI meccanismo di risposta ,\~;!'::';'::;<:"all'interruzione descritto, E chiaro che a ogni attivazione la routine dovra caricare
/~i~.d;,~i::':~pndi"rizzo del pross~mo dato d~ tr~ferire e il contatore dei caratteri. A tale scopo ;h:~\,;:<:;:ii~:~possono essere prevlste due vanablh, Ie quali devono essere inizializzate all'avvio di \U;AF,Lh.,pn, ~rasferimento. ,F~~';f~1(:::,' ~ !'qiche l~ ro.utine d~ servizi~ esegue. in mod? trasparente rispetto al programma, ;?::<'<:N;~<:~on e da~o dl sape~~ se II trasfenmento In cor~o e concluso 0 no. Per ovviare a questa ::;:;i:·.;~y.~,~:~.mconvemente stablhamo la seguente convenZlOne. tE;W!it:,);-;;:.:--- Si definisce una variabile globale, BUSY, modificata solo all'interno del driver :fI~':':)b\i~,' ras enmen 0 e lIver puo accettare 1 prosslffio comando' quando e diversa da a ,}»~j::":.:t~U~Y indica che ~ in corso un trasferimento e i1 driver non p~6 essere chiamato. ) i::;:~Y::i;(,::r""'" I pro?,ramnll vedranno solo 103. routine di inizializzazione, A questa daremo aneora ~.t;:i':'M~\,:~;.~~nome dl STAMPA e manterrerno 103. precedente convenzione di chiamata7:
.
:.co':':__ A,,,:'" .
t;:~';~':':~ ~ .,' {~~:':':~r.t';:.::
MOV MOV CALL
:',.". ",:'"
S1, ex STAMPA
; DS: S1 = indirizzo BUFFER ex < ; - n
...".,:,::
,.-.,.",
0'
",,~'.'
:~'~'/~'~\','.: Sezione
di inizializzazione C 1 d t' . . . . ~,,"J . on e prece en 1 assunzlOUl e cOnVenZlOGl nsulta .;""',,' ;.' agevole eostruire 103. se . d' . , 'Ii ' ~";"':.r'.::'>: " ZlOne 1 illlzla zzazlOne:
;~'f;\~',!t,:, ::~"
:'.~T':[r:r~,:~~~r
': STAMP A:
:' .. :(, "
~t;:~::;:i,'}(":
MOV MOV
BUSY, 1 1ND, 51
MOV
CONI, CX
; Driver occupato! ; Salvataggio indirizzo ; ",.e contatore
>':/"~'(:~:'<'~';'":.,'6Ir:p:::,:::o==~':-;---:---'" -,.____ '. 1 ,;",' :':': al driver,g~=~ ~~e l~ggono 10 stato d.ell~ vanabJie BUSY, se sviluppati come moduli separati rispetto
:~L":"i""">"" TSi n t' ch t
chlararla ~o~e varlabile esterna, r',/:,):>i:.
i~;$'ji;:';;·;\ "
.......
~
.
;
:
·
112
"
Ca.pitola 4
'
,..
MOV OUT MOV OUT RET
; AL <- primo carattere .j Trasmissione carattere ~ i Abilitaz. dell' interfaccia"", ? l~i~ ; .. , a generare interruzioni'\~: . Ritorno al chiamante "~k:l! ::
AL, [SI] PORT l AL AL ,1 CPORT •AL
~crivere precede~te
,
~i e ass~to.
. '\;\i
l'iDte~faccia
. f':1:11o il carlice ehe partisse dallo dlsabllitazlone della generazlOne delle mterrUZlOIU (IENFF m stato 0).
-
statoY{~ }
.~~;:; ,
" :':di ., ,,,.~
'J"l , ',,"
;'0."1 --
':
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 processore8; _.J/Ii: /~ - ",
1NTSTAMP:
PUSH PUSH PUSH
PSW AX ex
-~~~1!:: '!:'"' .
; Salvataggio PSW ,. Salvataggio dei ; ". tre registri
PUSH SI
::"', .....,1~ ". ~ (~ ~
';/i~::
; " ... usati in INTSTAMP
",:'~,m }
.' ."'., -
A questa punto c'e da conteggiare it carattere trasmesso e prelevare il prossimo. ~\~ t: tal fine si cleve recuperare il cantenuto di IND e CONT e aggiornarli.
I
I I
.
,'J'~' :
; S!<-Offset prOSS1mo ..':--:\~, : INC ; Puntamento al prossimo >:-?~lI : . ' MOV ; CX<-restant1 + 1 :... ..'..r.~.~ \ DEC • j Conteggio '" , . . .. . . . '" ~~l ~ Pnm~ dl, proc~dere occo~re stabilire se Cl sono .0 n~ a~trt c~atten da st~pare'.~i~ ; Uultlma IstruZlOne e funzlOnale a tale scopo. In SlOtesl, nsulta II seguente codlce9:: :":~15~' 'I." " MOV
I
..:...:~o/I'; ;
SI,1ND S1 CX.C ANT CX
":¥ .: ,', -.{1
1NTSTAMP: PUSH PUSH PUSH PUSH MOV
INC
MOV DEC J2
PSI,.{ AX ex SI 51, IND 51 CX •CaNT CX FINE
; ; ; ., ; ; ; . • '
.
Sal.. . --va----tag------gio 5I<-Offset prossimo Puntamento al prossimo CX <-restant~. +. 1 Conteggio Era l'ultimo?
.;
.i..,:;Z.~ ' "~l'~ " ;~~- 7 .. "I~ij t . :.~tJ!. .'1' ~~·
'~:;'~ ~~ "
-,
" . "~"
:L
• -:I'
0
~:
,'
,.
... ',{j. ~. '~ " ~
''':'~'} ',
.
__
....:' .',
::
.
I"
,~
'.
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. PSW:~' ~f salvata. contj~ne. quindi 1 per IE (altrimenti non ci sare:Ob~ st.a.t~ 1'!~terru~io~e). L'ist.n.lzione I~~i :\ ha l'effetto dl nmette.re PS!'V salvata sullo stack e qmndl dl. r~ablhtare II sistema dl mterruZlone,.-} i': Nel caso del~a nostra Ipotetlca CPU" I~ ha solo l'effetto dl np.ortare a 1, IE (oltre che tornar~ at;;,. . :: '~}.~j, ,., programma mterrotto~j .d~nque convleoe rttener~ che IE. non ~accla parte dl ~SW. 9Il testa seguente iDlZla con PUSH PSW per VIa delle Ipotesl fa-tte suI funzlonamento della CPU 01 "~ A scanso ~ equivoci, siccome Si.8 u~ata la notazio,ne Assembler 8?86, vale 1a pena.di ripetere'ch~.~l ..~ tale}.s!~~~I?~.:~;?:;Rd~~~~;~tli~~t~~~~ 1'8086, In quanta 1a loglca. salva automatlcamente P~~f:~ ~
.
. ,.
I,:-:'-~·~:'
:;,.~;., I· "~':'\~:'-' /' .". .·~~t'" "j ~·4.
-.
..
......., '
..
,
)
;·.-iM~':lr.~s- r;:;.
:,,?:~;;,~~~~~~,,; ···,.1... .-.. ··,'"1' ".,. \:",. ..
-
"'~-"'-I":~.' '!~
,',
'~_:,;:.:"~;~~~-,'
n sottosistema d.i ingresso/uscita
113
':,~~.-,,, \,",: " .:~;~. ,.. .. '4'~:' ..:'~.': .
)
.:~It,:<.~.\ -" H~' ,',"
Y·;.
~'''.{r' .•.
?<,J, '::,,'
-' L" ~1:_'::"
:\,<;.::::\" .
::~" .. ,~'-
;'. ... '
-~:.J
, ESCI:
}~
..
,:,,~.,
\:....'. "., - " . •'., ,''0' .}/ .. ',.,.'" ,
:,. '". :;;~~:\~:':' :-':
FINE:
"
::<~" ....,;~:' ". ~~,·r,;i.':_>. ,'~' .<;"
.
- - "','
:ig~::s~~:.~L:.~:'::! . , "',-- ," ,',
MOV OUT MOV MOV POP POP POP POP IRET MOV MOV OUT JMP
AL, lSI] PORT,AL IND,SI
;. NO! 51 prende i1 prOSSl.mo
I
; Salvataggio puntatore e i .. contatore aggiornati
CONT,CX
SI CX AX PSW
; Ri-
; --pr1----sti, ------no ; Al punto di interruzione ; Tutti trasmessi Driver libero 1 ; Disabilita intr interfaccia
BUSY,O AL,O
CPORT,AL ESCI
)
I ,
"...'.;,,"",.;-.;'::,.".:...., .'. :·~""rl" ......, · , ~};;~:,~~:i;';'
I
: ':'~),"'4"
42 L . t " }~~5,57;:<":,;f,. ~· e In errUZlonl non mascherabili
-., _,."-'1" .. '
... ' .
.
:~:~i:~~;i:":;:'~:':~ "~,,,:, ;::;;:t:l;:~FiD '~Ip-flop IE (Ofr,5.11.4) serve ad abiiitarefdisabiltare il sistem d"
:to:1t~~::,:~~~~~ ~ ~asc~erare la richiesta INTR.
a
1
t In
. erruzlOne,
:i:@:J~~~~~!.>.' QuasI tutti i calcolatori prevedono, tuttavia un' . . . :!L*I~~.0.~t~.c.herabile (NMI in Figura4.10) ja quale' I a hne.a di mten-uZione non ma,J, ~-,., . . . , . Q , V l e n e sempre nlevata ne] caso . " \~!,i?(ib~;·as~enta.:· uesto tipo di interruzione si .US t " f i ' m Cill Sla :;,.1.,~·;'iit~~~i'mpiegata neUe situazioni di emergenza t',pg,lc 1 cat cjon ~~ fatto. che ,essa puc essere "" h' . . . , amen e a ClMJuta dl tensIO e S I ~":/~' "",'" c; m~ e eqwpaggtata con un semplice dis ositiv h " . n. e a mac;;:~:f"~:'~~,~l ahmentazione al di satta di un certo li~ell ~ c : rlieva 1 ab~ass~rsl dell~ tensian~ '1'1~~:..\.a NMl, in modo da costringere il ' t 0 1 SI puo collegare I usclta del dispositivo ",1.'·\·'·di'· .. , SIS ema a prendere atto ch >. ;\;..\~~<.u~ ~. tensione. A NMI viene a an' . . e 'C In corso una caduta '~~~n1:i~Ns(j"e 'salva ''Ie informazioni 'tggal' dC'jata una routme che chiude Ie operazioni in cor. ""·*t/'lN~. V i l e programma corre t ' d ch 7f';t...;'j~;:,,~f.~e"nsion~1 possa essere ripristinato 10 stato di . n e~ In mo 0 e al ri~rno di t'~;~'~$~:.\ ..programma sospeso. macchina, nprendendo l'esecuzlOne del
·.~",:.;.,!\(i<;; ......~,', ..
~'%~-.."
,
.. ~-{..,..' ,
-\~:,!!:~:\);r,,;,~;:: ",,'., ", ~rri{~:i·;!-t~:"~-:', ·"~,,,,l",;"::',i;~~' .. ,:,
,,-
.
';~.,!l:~'!'~::-,-_:' ,;': '4 ,c' " '.' .
.,,..:-,~~,.,
. -'
."·;:t.~:,,,,?i(.;;:,.
~"\;,,,,~,"' .,~",
,
,~;;: ~ ~~, ;"t+':.;:
'
"I'·~,·,····",· .," 'Ii ~" ", '.
.
:P'~<:\;'~.':'
t:,
NMI [NTR
IlNTR STI
"::~]k~~:C-,'~h:~~:
fj/j~",P;,:;.:t,.:~. ..,', '. . -'
...
\f::pf~~;:\ T~~., .~
cu
:-~;,:, j::~-:':'.J,,~., :: :;":~;'{,::;', !_gura 4.10 Interruzioni mascher
s
Q
IE R
.. ,. . . ,:~~1';:.':(,:· . . r,81P.B.OP.rE sono stati desi ati a.blli e .non m.asche~ab,ili., qli mgressi di Set e Reset del ~;'::;~'i'i:~:,m!itore puo irnpiegare all gn Can 1 ~oml delle lStruZlOW di macchina 8086 che it ~~f;f'r~r!:~lIe azioni ipotizzate v. 0 scopo 7orn~pondente., Al riconoscimento de11'int . program~~J;~~£1;~f~~~uZione ho.n masclt:::~iJ~sento (llDgresso eli Reset. La linea NMI co~~;~~~e'a0;:;:
"'fl"'l.i..rl",,;, ",>r;' ,
I I
I
I j
CPU
00"''' ..', :,~<,;r'~;,(z;}:: :.. -.....
,
I I I ,
:1:1...:4~--=C.:a!:p.:it::o.:lo::.....:4~
1
.:.::'.;2i), ., , ", ·,·f
"
'
",' -1"
I!
"':-<.;1 ,.
Hf
~,
~f
Va da se che l'interr.uzione non maseherabile deve essere prioritaria rispetto ~I~:~t al.tre, in quanta per sua natura non deve. essere interrotta. . -.,
)
~j
.,?. ,-
4,5 Interruzione da parte di piu periferiche
\
4i; :';"'~ ,." ., ..; ':~~ ", ,
.. ,,;',.
I:
~j
~
......
""" ' ~.."~"
.
I
,
"
.. ' ,
~
'l
"~ r~
/.
"1
~
I.
;.'.
Consideriamo ora il caso piu realistico in cui si abbia piu di una periferica in gra.d/~:f;: I' di generare Ie interruzioni. '!,~~ : , Si pangano i problemi seguenti. ' . "I~l? ; .. '". ,:-;1.\
I
,:i't~'
1. Riconoscimento della periferica che richiede Pinterruzione.
. J.I;~,
I
'
\
'
I I I
"
) 4,5,1 Discriminazione cia programma
\
. ,..'
I I
I
I I J
Si continui ad assumere che la CPU risponda alle interruzioni secondo quanto ipotiz.- :~~): zato al Paragrafa 4.4. Si faccia riferimento alia Figura4.11. Si puo stabilire che le'\ interruzioni vengono discriminate 1eggendo una (pseudo) porta di I/O! che denomi- ':;1 neremo ISR (Interrupt Status Register)} i cui bit rappresentano le state delle singole....;
' IRQi (F19ura4.11). ' " In questa caso, la routine di servizio, dopo a.ver eventualmente salvato i registri 'E' eli interesse, dovra. leggere ISR e stabilire qual e 1a rif:hiesta da servire. Puo essere ;'~i: lisato a modella il seguente tratto di codice (si assume di dover esaminare tutti gli 8 ',,?~\, bit e che ISPORT sia l'indirizzo assegnato a ISR). :. :~:; ISERV:
j Lettura di ISR IN AL.ISPORT
MOV
COPIA, AL
; COPIA <- ISR
,
li!!S'r:~ L,iI' :••':- ,
,.,-;~::,.~" ~i'~,
__."-,,
:;;.$ .';i .I": r ,:.r., "
'
;-,.
:~!lit-1;.:~:~~'" ':~' f~~j~·"· ... 'iI,i>lr[ii ..tt ',...,
11 sottQsistema ill ingresso/uscita
115
,.~/r: ..__ .. , ,
"IIW".. .>
!
.... '.t •,,'• .
,.~
,
.,.t"';:",·.,~.n.
:;1,0' II.! '!"'
f:"'~
-.j ,",
1:-2- .':.;=" 1:,.'fL.. ,... - _",'
f; ,~~,';,~~ :,;,:';,..:
j'
'
?,?,\~.f;}r~,:V~,Y;.::, '"." -'-'" .....' I .-,.. j.'.,,' ..... , -.", , .. ',-~. .~".~,,,,·;~.·<'.I;~,:: ,,'" ...
' '-' ,
I PERlf'
,
.
,'.. :..... "."":' ~ :~.r:tr:;~«"·,: :~', .:-
r~"
::}~',£1'~~;:; "'"j.r..~.-, ~ .~·';1;1!"~'"";'''·'''· , .~\", ... ,":"."~.,'~. .. "'. I~""!,, ..... ,~. 'l·~"." '."_' -:" ..1,., .... , ::~"~:;;;;-:'~";,'l.,;,l~~'~ ':.: "
.
'
,,;--' - .!:. '.....n'!-•. ,.. . .. .. ' ,'l,,·,"11<',." ;'i',~{ N','.;;;"",,,· ,t::·, "' ....:'•. ",}........ ,;:.. ':'. "'f: I~t'!',',',r, ' ';;) .';: :'. . , ...... ,",",0;;:.; .. '.
~
".
INTR
lRQ2
IRQn
R
I
L ISH
..
1 PSEIJDOPORTA DI 11.(
I H
~:.~~
-
I~~*~~i:!./:'~~<"~"
,"
>-
,
~
~."
~,.
Vee
lNT£RF n
.. ,
~~~f1.4J~J\\:>~~:;:.~' CPU ,
n
r
INT£RF 2
f- IRQl
j;ij;~ .'~ !i:;", ,"~.~ r.-~ ";. ~-.:'
I PERU'
21
I
INTERF 1
". ,.,.. , ~'~"-l""-"~""""
.
\ PERIF'
r
.
li;"'II';!1:."'."~'~··,
1s:!r~1.:.l "r,rJ\...••.!
I
" interruzione:
IATl
C II a-ento in OR delle differenti richieste eli la linea INTR ,." .-', F' ,a 4 11 0 eg ( d ) d' . '~~t~F~'~;:{~~:: .Igu . . a se almena una richiesta e asserita. ISR e una pseu ~ porta. I. mgresso :~~Jf£;'~;~:~;~nsul:a ~el tit n dei semplici buffer, i cui bit fotniscono 10 stato delle smgole nchleste. La '·"·'~'·I,,,"",··~'(reahzzabl e co .. aI" h' t 't '~~1~~~~~~~:~.lettura.di ISR permette eli stabllrre qu 1 nc les e sono assen e.
,.'
::hrti~~~h·:;;':-':·; ~, ., "'.,'.'~,,'j ,.. ...,,'.', .."""'" ~'" "'''l,;'~\':' . ,."' ."'" ", ..."'.. ,, .~.' ,~.J.,."" . .: c''".. ,...• · , · , I¢:"~.,(;:. . ,:" , _"·"'I' ..":".,1".. ,vt··,.',: . . . ' , ...•
,
;
AND JNZ MOV AND JNZ
,. 'n~ . ,~~M\',. ' :' .'.t.......r .':1:,'~ ;t"t," ,.... , 'I'. t .. '1(~.f":.o: ~
_.:
•
.,...r~,
,~,
,,'.,"{'; 1, -, .. ,", ""'-"'4'<1,.::.,·,.- .
:~t~fL:'-:.
'
AL,l
ROUTO AL.COPIA AL,2 ROUTl
; Isolamento Bit 0 SaIto alIa Fout.ine 0 Isolamento Bit 1
SaIto alIa routine 1
~':l. ". , itJ}~l{t~~:,~':;~~:: •. "e,.." . _,,~:
:,;·i~jl:~~;·;:;t~'.: , "'O;'K
••••. "
MOV AND JNZ
.··',;,i,;i;"··",··. ..,':It:~''''''''P~~'- ': .~· :.'
f~'n~·';i:.;'~~
:,J.!!'~l~'~: ;!i-.,.'
,,1 "t.~.".~",
::';" .;,... '.
,\':->.·~"""';ir'
-li'\";,,. 10.', ,
:'. ... . '-!':+:!",l;,·,-:j .•,,· ," ""'~"."
O'
"
,V:;·~::;"b~'''''··
;'t~(:~< "..:': ',.,.. '.' !;·f"r,.~A·,:~,;: "., ,.",,~,.""
:i:;;ifi(:),r: ~ ,:; :.
.
'J~\?'.::l-~ i ;'."'.
,.::. ;0;:.\ (/.'.,,::;. • • ·f~r·"",' :,;.,>:.;\.~~., .
:', ,
,~." .I:I,,:
,
.
ESC I .
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! ! ! !
IRET
':.': <'
';:p;,~\,~:~"
.
'~~,: ;:'~".,~'i·):' Ciascuna routine svo1ge il trasferimento richiesto e si conclude con un salto a.na po:·i~~t;~·',<"· sizione ESCI (ana specifica routine il controllo e arrivato con un saIto); tornanda a. ';Fi"'!i!\.",';'ESCI 10 STACK deve essere non rnodificato. -::i:t~.~:J::'" Si possono fare aleune osservazioni rispetto al precedente schema.
:i:t::t,S\:,: ... ,....... '" ....... '
""".",..
1.
J;!~'.~:1~~/':
::~:~'1~'i;:"
,j
1.:}N:·Y,,; '. \;~~;:;i~,',:~ - ... ., . . .#~.-,.'. .,", . !
'
.,""',:!.' '-,'., - ., "','. ~.,>:~
'; "
..,::"
>":.~r.;,,," { ' '. '.j .
,':',
..
~.,.,
,
'.":"," ,,'" 'c'J "j •;. ." '.I~~\1!.::'.. ~· , .-~ ..
~
...
L'ordine di esarne dei bit determina la priorita. delle interruzio'ni, per questa si pada di priorita software.
precedente porta 2. Se il sistema di interruzione non viene riabilitato, 10 schema • 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.
".'~~ "}>I.
:]i.::.~ 116
C,pI'tolo 4
. ':."-i";;'
C-"''---_::..:cc.c:.:c:e-:e-
-:!,!·, .-.... ..:;."j:
", _'. ~ ',J; "
;• .'>;t
3.
~ ~nche po~sibil~ soddisfa.:;, sot~o la m:desima interruz~one, ~utte1: eventu~i~~:}
nchleste attl~e (11 mod~ pm. OVVl? .consiste nell'usare PlstruzlOne dl CALL per';~~~ passare alle smgole routme dl servlzlo). ",,-;;i·:" ,~~~
-.'"fi~
•
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 solo}~ quando tutte Ie richieste risultano disasserite. In questa modo e possibile servire'~' anche Ie eventuali richieste che si manifestano durante iI servizio dell'interruzione'..:;'N .~'Sf~
·
~'''I n metodo descritto h~ solo ~alore. di?attico (anche se es.tato lisato in architetture de(::~{
>;:':~"
passato) a causa delFmefficlenza mSlta nella sequenza dl test.
.~}~
· ~"'"~ "'...•
<;',· .. :i0
·...·M·
.~.,:
4.6 Interruzioni vettorizzate
: ,~~
',:<.}X~
~:,.-".'!!l'
• ~ ... ~....:\,
L'inefficienza del metodo precedente viene superata con un meccanismo capace di: >:tr~
., .:1~..
.: f..~~: ' , "d+~
a) identificare 1a richiesta da servirej
:,,:·',
b) passare in modo automatico alIa routine associata.
'.~.' :.:.>;~
':":'~~
'.:.~'~~
Si distinguono due casi fondamentali.
1.
n sistema presenta pill Clinpee di zate internamente aHa
•
·,..""
richlesta di interruzione. indipendenti e vettoriz::..1
"/'~~~$
U.
vettorizzazion~:'::
2. C'e una sola linea di interruzione comune a tutte Ie richieste e la e esterna attraverso una daisy chain 0 un Controllore di lnterruzioni.
.:c~~~~
"~·!~l
I due casi non sono totalmente disgiunti. lnfatti un controllore di interruzione ,;,JE\ esterno pub essere riguardato come una parte di IOglca della CPU, tenuta separata ":1~ per motivi di convenienza. !noltre non poche macchine presentano pili di un ingresso '~,:
e
.;
~::;",.5
4.6.1 Linee di dchiesta indipendenti
:." .,,,,t "~il ":: '-;'" '/'i ,.--; "
AlIa CPU vengono portate tutte Ie linee di richiesta di interruzione , secondo 10 schema 412 . d1'F'19ura. lntern~ent~ .la ~PU ri~ost:~sc~ l'OR delle ri~hieste 'che viene p~sato ~ttra~erso la porta dl ablhtazlone!dlsablhtazlone a valle dt IE, come schematlzzato III FIgUra4.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 .
,,(
.){i
', .;:;:
:'
~,(X
/?
::r
'j$
'.. ;
_r
lOSuccessivamente l si PUQ pensare che 130 routine stess30 provveda. a. riportare a. I IE, in modo dapermettere 10 sfogarsi di eventuali richieste di interrUZlone a piu alta priorita. Di questi aspetti si. parla diffusamente piu avanti (Cft. 4.9)
: ".
I
0ijf~~~"''''
,(~:~~~g:i .I,.~.
."
,h':¥~~~,;",
..,;f~fW~£':·:·i~i~ U sottosistema di ingresso/uscita 117 'Y''''''{:~-h:~'l'_--------:-----------::..:::.:====:....:::..:.~'''---'------I~' ....,·.,..--,'
-
l~i"JW:;li.. ,e.._(:"'..:"
1
,,~r~~I,,;r,"l,;:.>,':I!o-'
..':,'\\l.":;V"';'::·;·\· ,., . ""." .. ~,,.
"
,~~;~%·~~i:.t
INTRO
-
i:~~~~:.::~;~r:'
::.::,',:
r.l.it':~..: ..'·":' ~:.. ".': , 'j'.\,;;;.!j
PERIF 0
-- INTRI •
\
.A~f~M;,:l:,:·,;-'.;:.;;· J;~h"~c+~:':'''~.'
,
PERIF I
INTER
a
PERIF 0.-1
)
!
!
j'
CPU '...J!:!1R n-l
• • •
INTERF I
• • •
INTERr n-I
I
'~i;~>b':",;; ;:;,,::'"
:~~~~);'~;~}~'?:;
1
?J,.\·i',:t.f.~:~~;:::'Y'." - :- 4.12 Schematizzazione di un sistema. 1a cui CPU prevede linee di richiesta di , j " " '.'1 ••, '. Figura :~~(:~:i. ;)~. interruzione separate. :~':?~','~:>"',<
''''M'' . • '
,
.r'.' I~ ".
"
!,~;I~:,'~!;~,:;"-
',.;
~1:'.; .. ":;'
. ",,>',':
TAB1R
.
-".". '.,'
l!fi6';'':,'.::-' :. ~ ~';'~;!;~i:':.:~;, :..'.
,
II!'.:). .. r..·'.· .. .....
:.it:~;~.' .. ~':·:.--";.
CALL ROUTINE 0
Il'r."
\
CALL ROUT INE 2
2
••
'! ',;,,"" ,
' ~~;~-J, '~ft" ';.:::. . ,:-:,;;A{~-j:","
.
,::,
(,:~'/~,'>-/-::'. ~~n;,. :~_
'~Y?;'/::" ..~,
1t~rJt';'.'
CALL ROuTINE •• • • •
"
I
INTRI INTRI
~DDll(SS
\
ReGISTEll
\
rv-
0-1
S
a f-
eLI
,
.• ~"t·;, .
t! .•, .. l' ,,:--:-:.'. ''':'' :i: '..:' '.'", '" " ... .i!.,,"'';> ~". ' ';"
,.'
.-
y"
'
' ,
(~,
,.,'
i. :~:',':;,
"
..
,,,' ::, ::,.',,'
'~ '.; , ..
X~
;::.:,: :.
r~
:::, ,..
? '~(/'
$. . '. .
;:!~
_r~~,
e
'I' :
", .,
i','
.'JL '
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. .
../1 '
,' ,
,;, ,
'1"
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, 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
.,
:~,i f
I
R
• l 'lit"~:i:::;;' '.' Figura 4.13 Sistema di interruzione con pin linee di richiesta indipendenti. Si ipotizza E\ ~?:?~~;;/'-: cbe i vettori di interruzione contengano istruzioni di chiamata.. n codificatore di priorita ~ ;:$~;:::":-.>. >discrimina I'interruzione a piu alta priorita. in caso d.i richieste contempora.nee. L'uscita. del ,l ·::~~ll;'<>·.:" decodificatore viene interpreta-ta come selettore di interruzione ed e impi~gata per .indivig ?\>:.-::,:~'~~. duare la posizione in TABU:- dove it programmatore ha .sistemato.1'istIuzLone dl chiamat~ ~~ ...~:;:,.; ...,_ .., . alia routine (1a parte racchlUsa. entro la form.a tondeggtante eqUlva.le a un controllore di J .'/! ~':,.':'.- .. '.' interruzionij si veda il testo),
51
\
IE
:i~~~\(;':>" .
"~
]
SEC
j
STI
$ l}'V;,~,"~ '. "
14+
PllIDUU'
llNTR
:J!;;'Y';'\'"
~ 6~::~·:~j;::'-~':.
""'llTto
INTRO
tNTRn-1
CALL ROUTINE n-l
!":" ""," .....-'.
1
CPU
0
CALL ROUTINE 1
'!;;'):,~~{j':,:.""
'-.
1
II Un
\
I ! I I I
,~'.
I
118
Capitola 4
"
\
-
I
C~
inte~azione
il;.'·:t' ,"
protocollo di tea la CP.U e l'este:DO , che automaticamente parti a leggere c~~tenuto ?el reglStro SEL (0 eqwvalente) 10 modo da permettere it salto aHa routin~. ~.t d.i mterruzlone.· . . " :.~' :.:f. .~
\
I 1
4.6.2 Vettorizzazione esterna •.
I I
I I !
,'I . ,
"J~
.
".~
",~ :
.• "
.,1Il;
S.u11a scorta del :aglOnam~nh p:~cedentl, eSaml.lllamO ora 11. problema, della vettorizza..-:' <~ ZlOne esterna. 81 tratta di stablhre un protocollo secondo 11 Quale e 11 mondo esterno ;.;.1\ "'~ .' che indica alla CPU Quale routine di servizio debba essere eseguita. .'2
.
.i~:
A tale scopo: a) la CPU segnala aJJ'esterno che sta eseguendo un cielo di interruzione;
.
,.i,: ~j "
'.,::'~~
b) la logica esterna, su tale cicIo di macchina, seleziona it periferico da servire e ,·t~~ ~ invia sul bus dati ]'informazione che consente cii passare aHa routine associata. '::i~ :
,:\i~
In Figura4.14 e rappresentato un tipico cicIo di interruzione. Vinformazione che '/~ il moudo esterno jrnmette sul bus dei dati viene detta selettore di interruzione. ,"~1~ ' ""e.' .:,,0; Cielo dl
1
"""
"""
I
I
ncono~clm.nlC>
I
~."
d..n·inhrnldC>D.
<' " ''f.
• :J:!' ,
1
I
I
I
"
I
,,';;';l I"
,:.~
.. ,
\
"
""
"
.............. "."
"
',.'9
"'>I-.t
....
.'~". -'\
•
.. "
'
. ' ':~~l
",'.'roi
1
"'. BUS 1l,l,T1
I I \
I
]
I \
""I'W
/
~.I ..lor.
dl I.lllO,,,,.lon.
~~.'
· ,'i~
,..lol'f , c;, :;ill t
.•
~
::.f~
#,"
Figura 4.14 Esempio di ciclo di in~erruzione. II segnale INTA (lnterrlJpt Acknowledge- "~~~ ment), in uscita ~alla CPU, indica alPesteroo che questa sta servendo la richiesta di in,ter-. :.~l ruzione INTR. E compito della logica esterna (controllore di interruzioni 0 daisy chain)' ~"i",~ presentare sul bus dei dati il selettore di interruzione, In altre parole, il cicio INTA equiva.ie a -/~ uno speciale cido di lettura, con la differenza che in questo caso la CPU si aspetta di leggere·, .~~~ suI bus dati i1 se1ettore dell'interruzione, La schema. indica che la richiesta di interruzione :~ri puo 0 no essere disasserita (in modo automatico) nel corso del ciclo di interruzione. ~;:1~ ~~
.. /~H,
Ovviamente l'interpretazione del selettore di interruzione puo essere differentc' ',:;;~ da architettura architettura. . Di norma esso viene . interpretato come un indirizzQ ':'X~1 . . ";Ii che punta lD una tabella eqwvalente a TABIR. Speclalmente ill passato era comune .\':E anch~ l't.nter~retazione come codice di operazione. Qui di seguito si illustrano a1cun~:~ij SOlUZIOlli reali. .~1~
· .,'.'
:~~lii ~,
Il sottosistema di ingressofusdta
..:, -".
I?F:<"':!: .:,-:,
",:,
119
'
11
~~cropro~essore 8080 e il suo succe.ssor~, ~l mic~o 8085
:.~)~;~ <.\Int78]1 trattavano 11 sele~to[e ~l l~te.rruzlOn~ (un byte) com~ cod~ce di lstruzlone da -~::~.. ,:~".' eseg uire . L'insieme dell~ 15~ruzlom dl m~Cchl?~ prevedeva ~"lstruzlOne RST (Restart)1 ~'-.;;'_~~'.' >_,' ii, cui formato e queUo cil FIgura 4.153 e 11 CUI I efIetto conslSte nel:
. ',. , , . ~' ",
a) salvare il PC corrente;
-
. b) saltare alIa locazione di me~ori~.di in~irizzo 8 x n, essendo n il numero codificato 1 campo di 3 bit del codlce dl lstrUZlOne. ne . . "',. In altri termini l'istruzl0ne RST n eQUlvale a: ' ~',"/.: ~, .
:
.' ,
PUSH JMP
.: ,~'>.<,:', .,
PC
8n
";!:::::'-:'~';~''': ~ :".'" ,:'< ,',' Poiche a1 campo n souo dedicati 3 bit,
; Salvataggio del PC ; Salta
ci sono 81ocazioni predefinite a cui puo ~. :~,:.~/ ,r, ·s~lta.re il controllo. In queste posizioni il programmatore deve sistemare le istruzioni :'."'··':'~:·>:.::di salto incondizionato aUe routine di servizio delle interruzioni {o Ie routine stesse se {o;·..':'·. 'queste occupano meno di 8 byte). In Figura4,15b e illustrata la tabella di salto. Con '.. '. ',:' .': " la semplice rete di Figura4.15c, sul cielo di TNTA , I'interfaccia selezionata immette 'i(:~~~:~:b.i~'istruzione RST 4 suI bus dei dati. J .." . . . .
:
;,. " "i.
" ,- . .,
!'<-
.". . :. •
I.
'
.
"
n
4
OOOOH 0008H OOIOH
1111 - - - 1 1111
'.,, .
{, '.'"
<
'.:,.. .,1 'ft- ,: "
a) Formato islruzione di Reslarl (RST)
,
.'<' ,:'. '.•:,'';I', . 'c(' ''' .. '
:Y,,' ',' ,'.' '.... ,,',
'::..
-'-
Vee
":"c:'" I '.".' ..•" , .'
f.'
0038HI.
MEMORIA JUMP R JUMP Rl JUMP R2
/~~P"'~.:..
----, ITABIR
:.
.1_
Rl
'-'' .:., T•.
- " , .•
. ,. . ,l'.:' ' ':,'
" , ":'..
'.' . ~ lACK
R7 BUS
) ; ; ( ( . , > ; 7 0 0 OAn
RO
. "" ..
i '. .:~>;,.,;,
.l> ,., ' ".' ,.,'
,;:,~U!.:,::'~ ,>:'.'- c)
Uso eli lACK: generazione RST 4 b) Vettori delle interruzioni ~>:-:.~,/ .. Figura 4.15 a) L'istruzione di Restart dell'8080j8085; b) il relativo vettore delle interru"'~ .'~,:.': ~ioni; c) rete per la generazione di RST 4. II segnale lACK che abilita le uscite dei driver del ',.~,,:;:... bus dati e il risultato dell'AND tea INTA e 1a condizione di interfaccia selezionata. :< <,:,:1 ,','"
>'
.\/: '..
"';:~-'
.>,~,::.,:<.,'... ':
L'istruzione RST e tipica 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 l~mita a 8 il numero delle interruzioni vettorizzabili.
;:'~.~,:"
. ,.~:; . ,
l2Il m,·c'O 8080 • state ·1' . d· d In'O • processore I primo mIcro I gran e successo. prect:Uenza erano state E' ;, prodotte.altre CPU integrate su un solo chip, rna e solo can l'introduzione del micro Intel 8080 j;' . "",,,," (e,con quelle .succedutesi a. ?reve scade~z~ dei micro Motor~la 6800.e Zilog Z80) the Ie tecnologie ~ ,mlcroelettroDlche hanno un lmpatto declslVo suJ mondo dell'm(onnatlca..
i
" ...'
:,,:<... '"
;'.- ,J -' , .,'.',' ,. ~~,'"
;<~.:~;,:.
'l;:
120
Capitola 4
:'~~,
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 ::;~i . .'.c._ descritto qui di seguito 1 il controllore cleve essere programmata per funzionare in-"I~ ," ·,l "modo" 8085j db richiede che al PIC vengano forniti i bit A15 - As che entreranno a'~:;~. !ar parte degli indirizzi delle routine di servizio chiamate. La sequenza cii interruzione"-'~11~1"';'> e congegnata nel modo seguente. "'-").1 " 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;,!:
'"d
agglUllta pone suI bUB datI II codlce delPIstruzlOne CALL (1 byte).
',J'i:~ 3. L esecu~lOne ~elllstruzlOn~ ~A~L ~a.I effetto dl. salva~~ II PC e dl determmare la :~::;~ generazlOx:e,?1 ~~e succeSSlV1 cl.ch d~ INT~,. sm qual! 11 PIC trasmette due byte ;:\j,~* 1
'
,..
, . . , . '
,:;:;~~~ , ,''''' ,,·itl Per come funziona il PIC (Cfr. 4.9), le posizioni di partenza delle routine di servi;'\:;f~ zio ri~ulta~:l0 ?istanziate di soli 4, oppure 8, byte Ie une dalle altre. II programmatore,,':::~L~~::,'
contenentl 1 mdmzzo della routme dl serV1Z10.
deve Illseme III queste Iocazioni aItr,ttante istruzioni di saito per passare aile
,",:,{~
routme dl servlzI0 13 .
.
~r~hltett.~ra Z8~
n microprocessore
"';}:~?iil . ;'J:!~
Z80 , prevede 3 modalita. di risposta
aIle' '::~~~
, .. :;;A
nchleste dI mterruzlOne.
.
effettive'Y-1:~',
.
,:jJI , <~ "',~,:~~
• Modo 0: 1denbco a quello 8080. ' . . . .:.:~ • Modo 1. esegue comunque un restart alIa pOSlZlone 38H. ')~':~ . . • Modo 2: questo modo d1 funzlOnamento consente la massima flessibilita.. ,:.;:$.~ L~ ?PU. ha 'uno speci~Ie r~gis~ro di 8 bit, il registro 1 (reg~str?delle interruzio- .{~~& m) II cm .c?ntenut~ V1ene 1mpIegato come parte alta dell'mdmzzo (16 bit) del. "'\~ vettore dl mterruZlOne. Gli otto bit meno significativi vengono forniti, sul ci~ :,.. :/:~~ cIo di interruzione dalla periferica che ha interratto. n vettore di interruzione ,,::-M c?ntiene l'indirizzo della routine di servizio. Cia implica che la logica di controllo .. ::*~ Sl deve comportare come se stesse eseguendo un'istruzione di CALL. II vettore di' :.;.',!,ii: interruzione rappresentato in Figura4.16. :'::;~~
e
"~;l'}
., Poiche p.arte de~'~~irizzo e. data attr.averso il registro I, e possibile prevedere"",:'~,, pm tabelle d1 vetton dl mterrUZlOne e decldere cia programma Quale utilizzare. La ":;,::: stessa tabella e comunque modificabile. La cosa e originale rna e di poca utilita ,':/; pratica, a meno di applicazioni specifiche - per esempio controlli di tempo reale - in', ,,~:: cui si possono richiedere differenti modalita. di funzionamento a seconda della state ":': del sistema controllato. :~
'\1
13
. .
,
1
81 deve ncordare che 18085 (rna non 18080) possedeva., Per 'cornpletezza, d " t ' 'd'1pendent'1. aIt re 4 Imee I m errUZlOne 1n
. '
In
'.~
agglUnta a INTR, .,.,.fr!' ;'"
"~):'
<
~['
) n sottosistema di ingressofuscita
121
)
MEMORIA .
,
,
.;.';"'.'-':~,:~, ,;'~~
)
• •
"'Y'::,:::::;,-.,::,:_, .-
I
,
•
>:f',:i', .,- .... j
I
>' .,:"
'. "..-, -':-
- .. "
;
.
,
REG I
'
,
',,' ....
"'B MSB
sl?lei:i:ore 0
]
TABIR
INTERRUZIONE
)
•
• •
\b'~-",':"~'"
I
:'!":;:
,,?t:~.-~ ,~"!:
INDIRIZZO ROUTINE Dr
I1+256
I
'
'}: :,,"':., ,-, 'Fi
4.16 Vettorizzazion: delle inte~ruzion~ del~o Z80 i~,modo ~. I peri~erici p~evis~i per ::''''., ., u~sto micro vengono inseritl in una. d~~Y cham. (51 veda. Plu a.va.ntl~ ~ formscono 1.7 bit che ":". " -~niti a IREG indivi?uano i1 vettore di lDterruz1o~e. Vengono formtl,7 e non 8 bit perche <~." .~.'; l'indirizzo della routme deve essere comunque pan. -,,-,' '" \..',.,',., ,'"--':" • .;~:~~\(:;'C:?,( 'F.:;::"~::/'::'Ar~hitettura 8086 Nel microprocessore 8086 il selettore d.i interruzione viene in,:,;,>:':" terpretato come un numero cheidentifica il tipo di interruzione (Vector Type) e usato ~. "i,':' ;,;:: . \ come 'puntatore a1 vettore di mterruzIOne. Quest'ultlmo cont1ene Pmdinzzo della ~:' ,', . ':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 ,~,: viene ricava~a dall~ 1~~ica dell~ CPU mo~tiplic~do pe: 4 il valore ~el Vect?r Type. ,e ' Nell'8086, a1 vetton dl mterruzlOne sono nservatl 1prlIlll 1024 byte d1 memona, a par,: ~~'--; 'tire dall'indirizzo 0 , per un totale di 256 interruzioni 14 . A partire dalla CPU 80286 , Ilella modalita di funzionarnento virtu-ale protetto, la tabella delle interruzioni e allo.:. cata in memoria.come un qualunque segmento nello spazio virtuale, in posizione fissa, ,"':" --,rna non predefimta. ~':':' '" In Figura4.17 viene data la temporizzazione dei segnali esterni di interesse nella '.\ ': J'~, .:risposta all ' interruzione. Come si vede , la CPU 8086 effettua non uno, bensl due dcli & di}~TA. Si 'presup~one che all'esterno venga impiegato il controllore 8259A (PIC) di . cm S1 parla. III segulto (Cfr. 4.9)" . .. . . ~ ":::,:" ,':" ':'" La lo~ca del controllore, quando e programmata 1ll modo 8086, ut1hzza il pnmo M ,:c:'·: 1mpulso d~ INTA per stabilire 10 stato delle richieste di interruzione e selezionare ~ ,quella di ~~ggior p.riorit~ e utilizza il secon~o cicio per trasx:ne~tere sul b.us dati il : : ;. ~elettore, d11llterruzlOne (11 Vector Type) cornspondente alia ncmesta selez1onata. ~ '.. ' .... :" " Da parte sua, la l.ogica della CPU in:ame:a il s~l~ttore di inter~uzione sul.secondo } .' : , INTA,. ottenendo COSI CS:IP della routme dl serv1Z10. n salto Vlene fatto m modo ,::, ','automatico , 'salvando il contenuto di PC e di PSW (i flag) sullo stack. IE viene ~: portato a O. ;~.' '.. ~c.h~maticamente, 1a risposta all'interruzione equivale all'esecuzione , in modo :~ . " mdlV1s1blle (0 atomico), ill questa sequenza di istruzioru: :~ , . . . . . ~ ',"".. ' VT. valore del Vector Type (selettore d1 1nterruz10ne) UTa
'~
I
I
I I
1
1
',", ...
l
'.
I
",
;:,:'
!.,' '~
"
)
, ,"
1 .'
~~
\
14L'architettura 8086 prevede eccezioni e interruzioni software (trappole). Di norma la tabella delle interruzioni e usat' " a poet, pre , I In ' t errUZlOnl "t L' t "ft 0 III illlOlffi es erne. e In erruzlOlll so ware sono usualm,nte usat e per Ie chlamate ' .del . .operatlvo. . . a. fu nZlOnl slstema <>-l.
.'
I ! 1
I
<\
't c'
\
I I
122
,~
Capitola 4
11~
",, '-"I""m
'I'~" ,t:> """'''
.' j"
Ti
C1oc~
12
~
-
r
"
" r
Ti
r
12
r
" r
' '=
·JitC,
" r
r
f-
'L' INTA
\ DO-D7
\
I
.
. F,g~a 4.11
.
I
,.
.
S(L(TT
7
. . .
Risposta allllltenuzlOne della CPU 8086. I due eleli dl INTA SODO eOmuDque
eon"gUi. ; M[i] :
I I I
J
';i ''''''
,',"·'~1
".1,/
'::1cf1 !q~( ;~r~ ·..i, r;;~t: ~1 ,l~t
'..:.~il: ,r~:;.
'_1\ )r;
. .;[!~ .~t:
,;J~, ;~"f
. ..,.., .~1"1~:!': contenuto della/e locazlone/l dl IndlrlZZO 1 .,~'~~ ),~~PUSHF . Salvataggio di PSW ,~. '~~I'l. , '~"""' CLI Reset IE . ';jl ~~i; PUSH CS ; Sal vatagglo .. ,<1~,' -.' -".1'" PUSH IP MOV IP,M[VT.4] ; c" arlcamento . del PC corrente :. ' ' ,.,. .. .':'""1. MOV • ;'1.,\ ,,,' CS ,M [VT'4+2] del PC della routlDe .{t; ''r... . . . ~'~ ~"r
·!~
,'I·~}~
C'. da aggiungere che oltre all'azzeramento di IE, Ia Iogica provvede anche all'az~er~ento ~ TF (T.rapFlag), non incluso sopra per mancanza di una corrispondente ,~,'! :;G~ lstruzlOne di maccbma. ~,\.~ :..~t. Vistruzione IRET (Return from InteT't"Upt) esegue Ie operazioni opposte) sempre _':~ ~t:: in modo indivisibile.
':"j'} ,}',
•.. ", "
_:".,'~ J;"'~ ~·'· .,' '.
•
'\ '!.
,''-lil,:
,I I I )
I ,
,~.
,',,,
.'.';/>
..,'"., ..~""', ,':'-'111' '''" ~'l.
4.7 Interruzioni annidate
:'~~1 ::,:};
,':~!! '::'~'
: 'i~
1
:~>:;-
Fino a qui si e sempre supposto che IE venga mantenuto disattivato durante Pintera 'i! l£"~ ~, esecuzione della routine di servizio, in modo da escludere la possibilita. che questa ~~ ',1-venga interrotta da altre richieste. :;;:, ".~
-I:;:<;
:'I~r
~-;' ''1.:
.
-":':
>j"~ .'.;
·~I. ':',;~
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
~ -. A tal fine , basta che il sistema di interruzione venga riabiJitato nel corso della ,.I~~. , ,', routine the si vuole rendere interrompibile. Dal momento in cui IE passa a 1, la ;~1 ::.,' presenza di INTR asserito determina Pesecuzione di un ciclo di INTA. La macchina ;·~f (e il software) deve essere provvista di una logica tale cia garantire Pordinata chiusura. ;'1';, ';\"\'." 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. "11 "'i:j ,,'
':it .':'
';.\.'
;~l<:r,. . ~
Y,
~
!va
,
,.
·1·····' . ,~,.
'.-
~I·t:~:~~._,:_'__-----------
~'
'il- -':.
,'m;, ~,,"I '"~'J''' •. , ~"'~'{o-.';' 'J," ..,,~ ,.,.,', ''''',l" 1<,-._~ . ". •
=,_.1 ,'··.I.·;.....·"",,·,
--=-I1:.-=SOtt:.:::OS::i::ste=m::a:....:di_'_in,-g"r_e_"_SO-,I_u_sc_it_a__1_2_3
_
i:~i)~;··4.8 Interruzioni vettorizzate con daisy chain '''''''
1"1I'''1'' .. .~' ,.", /,".l-:,.."t,':' _
.
1:j~F:':.~:.:;,:n c~ncetto che,'sta alla ?ase della daisy chai~ e queUo di costlt,:i~e una catena ~e.ll~ (if.%;;:.~·" quaIe la priorita delle u~n.lta collegate e d.ete~~lnata dalla loro pos~lOne ..La ~emphclta ~;~;;~.~, della schema ,10 fa pre~Jhgere ne~e soIUZ~O~l dl basso costo. ~a daIs~ ~al? VIene usa~~ :;i.;;:.:·:'-;· a.nche in altn contestl , come n~l bus ?l slst~ma, quando c e da dlScnmrnare tra piU t~~~~j~~,:-,unita che si contendo~o Puso. dl una nsors~ III comune.. .
.:!::'~~_~;·.l..• ;.~:.
La logica della daIsy ch~m puo .ess~re smcrona 0 ~rnc.rona. La second~ S?IUZIOne almena per il easo delle liltecruzlOilI, quella prefenta, ill quanta non Clchlede che
::':.·::'t~tte Ie interfaeee operino sulla base della stesso clock. La parte che segue approfon-
f>;:i;)(:;,:'disce Ie problematiche della daisy chain nella versione asincronaj
:~\:::·~' '"viene trattata nel Paragrafo 4.8.2.
-~;,,:;::f;:Y."-'
la soluzione sincrona
-
.:~·;-,,:,,;:,'.;,;
'''.'"
;'~~»'~::'-:4.8.1 Daisy chain asincrona
'r1':-::~:>:?:.::
'"
-'. '--
~t;.~»· fu ·Figura4.18 viene schematizzata 1a struttura della daisy chain nella sua forma pill ....;•. ;.-
'~;:r .•;; elementare. ·':"I:.... , ' r",~ .. ',' ,
~;;';/··: .
PERIF I
~:t~\-,:~· .,;:~ ii.'
INTERF
:;.::~/'~~
IRQ!
,' .:;:~(.
".-'1" .....,.
CPU
~"" : '.. - ',' ,
INTAI, [NTA
·"""""'.l·' -.:;('<.,,, ",' . ,'. , "w".,_,,' ,
.
>"_,.:;', .',' "." :
','-.',.". ",,".', .,'
INTR
'.'
;·.'t~;:lr·:Figura 4.18
,
IACKI
D~L INTRI
IRQ2
PERIF 2
PERIF 3
I
I
fNTERF
lNTERF
IACK2
IRQn
INTAI2 IN'fAl h'NTAOI DeL lNTA02INTR2
,ee
IACKn DeL
R
INTRn
INTR
Collegamenta in daisy chain. Per comodita e stata messa in evide.nza la logica '!."~";"::-- dt cantrolla della catena eli ciascuna interfaccia (DeL), anche se Qvviamente essa costituisce ;:~'.::: parte integrante delPinterfaccia stessa. 8i Dati che il segnale INTA si propaga attraverso Ie r.'~~. ,,::~ interfacce da sinistra verso destra. 8i e assunto ,che i segnali
.... :':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. ",>:, """ II criterio di fUDzionamento e il seguente.
',;" ,
,',
:'. ," .
' :,-'
,.' _,_
-
-.Y
•
• In nsposta alIa richiesta di interruzione 1a CPU esegue il cicio di INTA 16 I asse~endo il segnale INTA in ingresso all'interfaccia di sinistra. •
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 ) verso
' ';".' .
,,::'.'
'
i
i"
,""" attlvo l~Assumeremo alto.
..'.'. .
- .
' ~.'
che 1a temporizzazione del cicio di INTA sia come di Figura4.14, rna Con INTA
124
Capitola 4 ..:~::~,]
.~J'
, ~~
l'interfaccia. IACKi avra una forma d'onda analoga a INTA in modo da poter t~ 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 semplice~·.,<;'~," mente propagare il segriale a valle. '. "::S~ . .'.-AU
.".,~,
• n segnale si propaga fino a incontrare la prima interfaccia in catena che ha asserito :":I~" 13 richiesta di interruzione. .'·i~~ 't' ".,:~
I'
chiaro che 130 priorita di ogni periferica dipende dalla posizione nella dais; :~~:':,.:: chain: pili e vicina alIa CPU e maggiore e la sua priorita·".<~!,l~;,{ Per capire c~me de:e es~ere ~atta DeL s~ faccia riferiment? 30110 schema di F~:':,.-F~ :'. gura.4.18, dove Vlene eVld~nzlato 11 fatto che 11 segnale INTA Vlene fatto propagare:::r~ ,~ dall'mgresso lNTAI alFusClta INTAO. .;,,/;:~~ ~, ~ Fi~ra~.19 viene dato 10 schema di un~ rete. comb~natoria ?he soddisfa al"j~;~," :/ reqUIsito dllasclare propagare INTA se IRQ non e assento e dl non lasclarlo propagare}f ,/, se IRQ e asserito. In questo secondo caso viene asserito lACK. . ·:·,'/t ,\, ,.:~1 -<
E
.
.::~~~: ~L
r _+-__-1====:I:±==f~ JL. INTAI L/ INTR",I----
,:j:e·,
.,.~~~l't .
lACK
IRQ
,"'" '/:;'
.:
-"iG!' •~'
,.';,:f~\~ ':
INTAO
',:,:~~ !'~
',J;;~;}{i.;
Figura 4.19 Rete combinatoria per DOL. La rete non e utiHzzabile in quanto soggetta ~~,;~ ·: ,:,jWI~ ', pro hieml':;f, :< " ,.:';S:!~~
,t;:
ch~\il~:,
La rele di Figura4,19 e soggelta a problemi di metastabilitd per il fatlo , 'f" . . .. . d' d [" d [' aI ...~ '.' 1 pen enCI operano m mamera non srncromzzata e In Ipen ente glum ag 1 tn~.,;;~.r ,' 'd· 1 d' . 1 d' INTA hi" f 'k , .. A I Suppolll~mo 1 e~sere.ne m~zzo 1 un C1C 0 .1. e. c e mter, acela .m.a stla Pl-,;;l~m '~ lotando il bus del datI con il suo selettore dl mterruzlOne SIk . E poss1bIle che la \~ :'periferica i ma , a monte della k ma , asserisca la propria richiesta di interruzione. In tal Ctff . caso IACK i risulta asserito e l'interfaccia presenta il suo selettore di interruzione sliI'3'W .' bus, .~e~tre ~iene disasserito IN!AI sul~'inte:t"~ccia~ma.. II ri~ul~ato e del. tutto i~-'>~ i ~redlclb~e, dlpendendo: (1) dall'I~tante III CUI SI mamfesta 1a nC~I~st~ dell\nterf~c1a :t~ . ~m.?" .rel~tIvame~te ~l~ d,:rata dell'lmp~lsoI~r:r;A e ~2) dalla velo.clta cil commutazlOne,.,~~,~ ~;:f,?; ': abilItazlOne e dlSabtlItazlOne delle USClte del smgoh component!. In conclusione, la soluzione combinatoria non e adeguata. Occorre una soluzione:ij~', che tenga canto del passaggio del fronte d'onda di INTA. Cia richiede una rete se-:.',d~ .< quenziale come quella di Figura4.20, dove un flip-flop a commutazione sul fronte (di'~~ ." BaHta) BYolge la funzione di riconoscimento del passaggio del fronte di INTA, Se, BU1;j~ ' fronte d1 sahta eli INTA, la linea IRQ dlsassenta, 11 fhp-llop SFF non commula ';','" , . . Q ff S 1 ' f r t ""~ I':ventu~e, ~UCceSSlvo p~sagf?-~ a 1 d.l IR non ha e etto. 0 0 sul pross1mo on e ~;?l '. di INTA 11 flIp-flop camplOnera il suo mgresso. "Ii~
e
.
~}
"
,
1
II sottosistema di ingressoJuscita
IRQ
)
"'IACK
CLR D
125
QI-
)
SFF Ck Q
"
'. "F'" '
,
JL INTAI
'i"
r--c
T
INTAO
~
)
7
'
::;,,<~:':':';"' ..
INTR
,
{:-;::': '>'::F'rg~ra 4:20 Logica sequenzi~le per DCL. Se IRQ e asserito, SFF passa a 1 suI £ronte di '. X;~i'j):,",~.a1ita.di IN-T~. SFF ha la fu~zlOne di indicatore di inte~faccia selezionata. Per tutto iI tempo ~i·!!~<';-:.;pn'.cUJ SFF e III sta:t~ 1, la lm;.a INTA a destra deIl'lI~.te.rfa.cc.i~ e comunque in stato O. II ,<:'t.:~:~':.:,segna1~ CL~, provemente dalll~terfaccla., ha ,10 sc~po d~ ~lStabilire la catena. Normalmente /,,:.','c,SFFvlen,e nporlato a 0 al termme della roulme
..
~,
::.";,:~-,.",. .,,, '.r "' '. " ',,'"
•
TRl
cD WA
::.y~~y;;,;!,>~>'
~{:':i i:,~K~ ;~{~: ':,:'" " .
;~\,;~.,,'}''i,;t~::;, <
[9:> "''' 11
.
:~t::;:i:::t:~i~:'~i~~r"a 4.21 Esempio di rete per 1a generazlOne . d1 ' e ntardo T . .. :.;':·."" ,
I
p::,':'_;.". '.
,,):','It:t)ft
':::~:,-"~\';"::a'utomatica
I.", .. ~;d::::,:jNt;~}-l;::;::: -;',"';:"';;':;Y',:~:"":'
I d' . men e 1sassenla,
': ;;'interruzioni ann' d
t
1
.
est a
In
erruzlOne V1ene
't'
LID ~chema ?re.cede~te funziona bene nel caso -,' ' ::': ::,\.... " Si Suppon a c:e ed:.::~nl'consen~e e mterruzlO.lli ~dat.e". . ; "_-' ',,-.'terfaccia i l'in~. ~secuzlone d~ll~ rout1~e. di S~ZIO R j ,assoclata all'in:.:>--,.<'.,se"il siste~a di ~rfaccla ~ asse.nsca la .sua :lchiesta di mterrUZlone. E evidente che, : ,::,;,..:', riChiesta . nterruzlOne nmane dlsattIV~to durante l'esecuzione di ~, la nuova , .,~:"':''d~rantel~on vH:me os~ervata dalla CPU. Se lllvece il flip-fiop IE viene riportato a 1 <.::::>: '., "~' . ' B" ~sec;ZI~ne dl Rilla CP.U genera un nuovo ciclo di INTA, interrompendo Ri. """,.";,;:~,;,,< : Isogna Istmguere due Cas1: ': >.,."~';r",;'.:;;'= ;,-:;;-=----,----,-c:. "", "n dlardo di p , . , , .." 17 ropagazlOne dl un fhp-flop e normalment 'd' . ~ ;, " Era questa la ~oluzione usata nella Daisy Chain del rnin~ maggIore I quello de,ll~ porte.. ~IU brutalmente 51 pub impiegare una cascata di porte fin calcolala~ore PI?P-.l1 (DIgtt~ EqUIpment). , , 0 a re Izzare J1 ntardo deslderato -:/'1,.. "di internizioni Sing} 1a e e PrIOTl a
'-
,', :';.;0
,
\
....L
'
~ ,'·:·",'·;',~'i· , <::;9/·;~~
:~";;,:.:~',:,,,:-,-
j
I
Dl SCIlWlIT
I
\
.
I I I I
I I
.'!>'"..
I I
Capitolo 4
126
'
\
..<,~ ,,',. '';::. ; .. , ",. "~
. "',,," ";,'
CLR
IRQ
'1 .
lACK
"j "
,
.~
'1.
',~
,:.'.
:.4
,
k~
,
I f
!i~;j
,.~ ;:/~" '.';,::;, :',;:::" -"!'i .•'.. __ , ':.j; ,·'w:,,
•',_
:'-'l! ,"... "~
.:~!~':.
.... 2:1.. '~I ,. ~,
1- D D Q
~
D Cl Q f---
,~
'.1: .,ft
SFF Q
IFF Q
'" n
'"
il .• ,', .\ ,l ,~ ··:i~,;.
"
T
INTAl ,
,
INTAO
'0! .,..' '. ",
'•I"'."'j",
,
INTR
Figura 4.22 11 flip-flop IFF memorizzala richiesta eli interruzione da parte dell'interfaccia. .-,'-;::,0: (1" Sut fronte di salita di INTA 10 stato di IFF viene copiato in SFF. Se IFF e in stato 1 1a -;:~* ,;'{~~ logica si seleziona, asserendo lACK e troncando la catena; IFF viene riportato a 0 e quindi ,.)ii:!:: ;":~;:" • >.'.~1,' '. 'C"_ 1a linea INTR risulta automaticamente disasserita. . "" :"°'. "c.",
::·:i:l: .. ;,':,
I
~J ,$'
servita; b) la periferica k si trova a valle della periferica i.
. '
~'.~ ::'-'::',
·o.~~~ (,:?
··<~i /~?.~
»:j: <>',
Nel pruno caso viene seleZlonata l'interfaccia k e viene quindi eseguita la relativa ,:';:~ :::: , di '" d I 'di " d II" rf . .:-"~' ." routme serVlZ10 1 mterrompen 0 a routme serVIZlO e mte aCCla 1., meno prio- ':::{~ '):': ' d U" ' k Nel second id n't ana e mter f accla. 0 caso a ' rosy ch' am non fu' nZlOna correttamente. ';,~ ';'41 "",. :j\~,;:r
I I I I
l l
Infatti INTA arriva all'interfaccia i e, nella soluzione di Figura4.22, porta SFF a 0 e ":1{t :r::j: si propaga a valle, selezionando l'interfaccia k. n risultato netto e che l'indicazione di j,:~~~. interfaccia in servizio su i e andata persa, mentre e entrata in esecuzione una routine :';'{~l vf:i\ di interruzione meno prioritaria di quella In corso.:~W"\~i< Per evitare ambiguita, e necessario che la periferica cui viene dato servizio impe- ,>,:~~ :!::, disca.a que~e a:.:aJle. di asseri-:e Ie ri~este di interruzione. Cio si ottiene aggiungendo .ff~ '~~;! una lmea di .ab~tazlone dell'~nter~uzlOne, ~, che attrave:sa .tutta l,a catena, second~ :>~ '/~~': 10 schema di Figura4.23, SI not! che se il ,egnale lEI e dlSassento, pure INTR e J dlsassento) mdipendentemente daUo stato dl IFF. 'J;~ \':,. . L'ingresso IE~ d~lla ~CL della prima periferica della catena de:ve se~pre es~e:e ·2~ t:~::: a livello alto e qumdi sara portato a V cc. In un data momento, nsulta m servlzlO, /',. riJY/, Finterfaccia su cui si ha lEI = I,IEO = O. ' }t~ ~>A:' Dobbiamo notare che la rete di Figura4.23 limita la dimensione della catena, in '{~;:';~::~;". quanto deve essere garantita la propagazione del segnale fino all'ultima interfaccia. ..i~1 ';3;:1
:'iJ
<'
.)~ 'H;",~ 1,:>1' :'.:.0
Una piccola variazione Nella discussione precedente si esempre supposto che SFF. ".,;~~,;::. ~ venis.se azzerato a~trav:erso ~a esplicita istruzione ~i 1/0.) posta ragionevo~mente.al,~% ';;!";;: te~mme del~a IOu.tme di. S~rv1ZlO. !dealmente) questa lstruzlOn~d?vr~?be verure SUblto "j~ .:},t( pnma. dell'1struzlOne di ntorno, m quanto essa ha l'effetto ill nabllitare 1a catena a .":~ ~:::;~ valle. .'i;~ ~r;:·" ' , I' ch " d' d d d I' '.'1, "',.J 1 puo pensare a una so UZIone e eVltl lover coman are a programma azze·. :J~ (',:~ S ~am~nt~ di S~F. Tenuto cont~ ~e 1a routine si chiude comunque con l'istruz~one I.RET, :::)~ ,~t} il cnteno puo essere queUo di nconoscere che 1a CPU sta eseguendo tale lstruzlone, <:;i':'~~; ' F '19ura. 424 . '.,~!:~ ,," ;!,:" come In :'::;;
'~:~ ,>,! '. 'y. !~m;;:
J
,
;,',' y. ",j
",;;,'
"'.,..~
:i:""w .. ~
.,,", ..' ,.,
j:fx: .,'.
" ".,,
Ii sottosistema di ingressojuscita
,-, ..
127
.;;
CLR
IRQ
LACK IRQ
.1.
." , ".,
INTAI
lEI
,- , '
.
0
0
.
lNUD
T
I!
~
IE>
. ," •
: INTAO lEO
INTR
-
~
'
G
'"
•
CLR lACK
lEO
J
'
':,
lNTR
",-·, _;
~(,~,_
Figura 4;23 Aggiunta deUa linea di abilitazione della 'hi t eli' , ' riC es a mterruzJOne.
"" ~_
_'-:'-',. _
.1'.'
'
,:
>
';,./
""-
BUS
,
I V
,'
Decodifica Iret
Ie-:==~=
--,
OP-Fetch
IkEJ
? :"
b \_ :::j D
... CLR
~,i· ,
,:,' ,:,,; Figura 4.24
Decodifica del codice di ritorno dalla Touti di' . '. -~i{':' risulta asserito solo se sul bus dei dati passa'1 eli ne mterruzlOne. ~l notl che CLR ",'. d' d"' . 1 co ce IRE! durante un Ciclo di c: 'tch d I :c:'" ,co Ice 11struzlOne e mentre I'interfaccia e in servizio eli' t '( e e .. , ill errUZLOne lEI = 1 IEO - 0) r·:;.-~:,::' ' -.
::1~f::<'"
.',.:::: ..,
\t:>··. <::'>:' ,~»~ ';:"
!~:<{~~'
.
.
18
La S?IUZIOne ora delmeata e valida solo per una CPU la c' 't' d' 10. opera m modo strettamente sequenziale. Basta la semplice c~~ u~. a 1£ c~~tr~\ mIcro ~086/88 a renderla difficilmente applicabile. Infatti 1'oss a .1 prede f e del codice IRET suI bus ~ati non implica che questo venga ~ecess::vazlO~e e e~ch Occorrerebbe tener traccla dello stato della coda di prefetch19. lamen e esegUlto.
t
:.;.<>.",
'.~,"': : '4.8.2 .D'alsy caIn h' . Slncrona
::~.\:,
.
,
/,~', ,,-,'. La daISY cham discussa in precedenza f '
. . . ' 'f',':" 'costruire una daisy chain funzionante .unzlO~av~ m maUl:ra asmcrona. E possibile .-'.: ,,'.', macchina. In tal caso il clock deve esse ~ mOt ~ smcrono n~petto al clock comune di 1" " funzionare secondo un protocollo che r . por a 0 a t~~t2e Ife I~terfa.cce e queste devono ~";:<,: INTA. SI compone I asI, all'mterno del cicIo di 0:;.":"".' ~ '(. 1. Nella prima fase viene indi'ct t I" f' . . :,:::'" ~ta f~e l'interfaccia cia serv~e ilea aueJ~te:raCCl~ da ser:rlre. Al term~ne, di qU€(:.:';:_· lmpbca il propagarsi e 10 stabiliz~arsi d~i CUI ~I, - l)IEO . O. P?lChe questa ~,r.:: , : ,' sto scopo almeno un per' d d' I k segnali, e. necessano destmare a que".',:'.'". consentire l'estinzione deilOfe a I c.odc. e questo. cleve avere una durata tale da Jt",· ,nomenl 1 propagazLOne lungo tutt I t ~Y:/i~>:' a a ca ena.
}:r:;,<.,,':"'>i:18i;Q:;:":":;t;;a~,:;:='=-----"-C----
;;'j ,..: ' 19La CPU o,luzlOne era. ~uella standard dell'architettura 280.
";'.; ... t
;; ",;,". '. enerne
!~i\~,;: :,\'i2;~ ,:
't;<~:J' ,',
~".>1-,"
w...'"",.-,: ,,,. f . ,.
',
traccia.086/88
formsce all'estern0 due b'It ch e mdicano ' , 10 stato della coda" ' e qUlDw
'.l:
,
!,
" '.
paSSl
bIle
i
"
~',
•
'I;;
, '\"
~~"I''
1"
~."
128
' l\~:f
Capitola 4
'j"t
j~.
·B,:·
--;" ",.'
2. Nella seconda fase, viene generato il segnale INTACK legandolo ai clock Bueces- "~~l >~;
. . SlY!.
j
""
-.~.\
,.,1-,.. '.. _
' :""i '::~
"':-'\ .'!.! ,~;
~',
La logica amerana presenta vantaggi ben nati in termini di sicurezza di funziona~ ;~~A :h~ menta e immunita. da fenorneni di metastabilita. Thttavia, 1a logica sincrona e malta ,:~ ":',,
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, ~ ',,: ,),
,i'.,~
.,.",
.
_.~,
~~.
I I I
I t
,
'.
. .,i'~ ~~"
La daisy chain del microprocessore Z80 Lo Z80 1 rnicroprocessore can bus dati' J~ :r~ a 8 bit e bus indirizzi a 16 bit, ha ,una daisy ~ain molto ra~nata, I periferici p,rodotti,/~ ';~~ da! costruttore hanno tutta 130 lOgIca necessana per operare m tale catena, funzlOnante ,?~ ':./ can logica (quasi) sincrona, ,;·:B ~~
Lo Z8~ no~ prev~de una osplicita lin~a INTA" L~ funzione di INTA e ottenuta '-i~ ~~f dalla combmazlOne dI M1 e I RQ. La linea Ml mdIca che 130 CPU sta eseguendo ;:~1 \~' un cicIo di fetchi mentre 130 linea IORQ indica che 130 CPU sta eseguendo un cielo di",~~ ~·ilettura/scrittura di I/O, E evidente che M1 e IORQ sono mutuamente esclu5ive. Da':~~' ,:, qui 130 convenzione secondo cui le due linee contemporaneamente attive indicano un "''r!l: +;" 'I d" t . ',AB r:, ClC a I 1n errUZlone. ,':IV ','INT 4,25} viene sul,fronte .di salita clock ;;!. del ClelO di macchllla In corso, Nel caso In CID nsultl assenta (se IEFF ablhtato e ~r!J ~i;: NMI non asserito), la CPU da. avvio a un cielo di riconoscimento dell'interruzione . ~!ffi- :~~ , ' d'1 e mezzo d'1 cIock ,su I fr onte d'1 s ai'Ita d eI "Uil "", 'i~:; asseren d a Ia IIDea Ml . D opo d ue penQ primo dei due cicli di wait (iDseriti dalla CPU), viene asserito anche IORQ':~1;,1
~a 1in~a e
~Fi~ura
cam:pion~t~
dell'ultin:~ e
B~
',,'ifjf
GiClo
I
INT'
-~-
bUS
.
pr-eceo llllimll dock
,,\
Ml
0<0
T1
Tw
T2
Tw
T3
:.'~ _r '.:.~~, ,~: ,',)}1 :'< ". ': :~:ilI ': , ,, "
-- --
f---
---
- ---
'.' , • ;.1'
", "" "
,"
"j '
'.':'~i
".:
"''''', ,,'-
'f .
:',lii -(
=
. :;:!- ,'" .'.~
,.~f,$
IORQ
,'"
-em
BUS DATI WAIT CongelaO\enlo ~torlta· dai:5y chain
'" :,
~'
~
'rt '>
',:r ::
i·
.i? ," Seletlore
~
,
':
,; "c , ~i I , "
,'c·' Figura 4.25 II delo di interruzione della Z80, 11 cida identificato dal fatto che Ml e .) . I',,' I IREQ sono ambedue attivi, I due cieli di wait vengono in5eriti automaticamente dalla CPU ••.,.' "<,~' per dar modo alla catena di stabilizzarsi.
e
,;~~.~ ..
\
"'-~' ... '
,
~,
",~
'
-,.... .•... ,
)
~
",
;'I~f!_;;~· "'ri,', .~
;r~;;~ -;':'~'
". "'1-,',
';'' I· .-.'
"
....-...,
'(r~' .," ,"' "
fr·:'~~·':,
t",
"
•
.;
,
·;.~, ,;:.~,
":'\ '. ;" \1"', '.
;\<;"
.
II sottosistema eli ingressofuscita -
1
.
,
n distanziamento temporale dei due segnali consente di usarli come 2 cIock searati. n prix:no vien.e. usato per selezionare la periferica da servire , il secondo per far
";,,,-
_ ;,
~ri':··~.
!., . "
,'
,.,
~:-, '<:,;
129
-
~pparire suI bus dati 11
selettore di interruzione, I dcli di wait vengoDo inseriti dalla CPU proprio per dare modo aHa daisy chain di stabilizzarsi.
1
,?L ',:
';
:"
IRQ
,:~' .,
:;.;.... .; .,
...' .'
CLR
" ,
'"
'n
,
-"r
"/.,, . . ~~;'/'
]
lACK
[EI
:::.
lEO
~.:j~<.,)
\
o Cl Q
/":'~'" !ir'::-:::'
''''''I r
X·::;,:
1 I
)-D ct,
',· , !"
~
.',~
f;f~:~-'·.,
',::;:~L'
Sl'F
~
\
1lf
-·:(:t:,~ ~
, ,
IORQ
,}!;;~~;~,' ,: ':, "~:'-"';f:'F' ,
,'{i-:'.~';"··
INT
4 26 S h d· , , . c ema 1 pnnclpio per logt'ca di controUo della daisy chain zao '
19ura.
-";''''''' ,',.
1
.G?.{i::::,:,'> '
:~),:~':.;":,:.:,:
~~'.;':::i"\~~:
.
.> '.
,
.
Ve~amo ,ad~ss~ come puo ~sere congegnata la 10gIca dl controllo della daisy
i'~,;L'" "cham, S, faceta rtferlmento alIa FIgura 4 '26 '. ;~,~·~:'t::,,':<.'
'
1:':':~~i}>':~~:':'" . '. .. . f:'( , ':,:, 1. Su M, (fronte dJ dlscesa), II flIp-flop FREEZE pa.ss~ a I su tutte Ie interfacee che r.::':;:':~:;' ",,- s~ tro~ano nella sltuazlOne .IEI :;:;;: 1,IRQ = 1. Se plU mterfacce si trovano in tale :l;;"j<:';,~. ,~ltuazlone, 10 ~tato basso 51 propaga sulla linea IE dalPinterfaccia piu a sinistra <,::;:",:-',:'" ,.., :,' con FREEZE 10 stato 1. Al termine della propagazione solo questa interfaccia :",',~", ,, , ' ha lEI - , 1 lEO -- . 0 :;;'\J., ' ".,,0,.' - , ..,, .' " ," , "';, 'c·,·, "~j'" .
.
'"
:'."';:';':"" .
(,:t-.<'.,./., '.,' ,"', -"', ., "." ,
"
,:, .....:;::' ,,,.. .:
'.'
.. .. ,.
2, Se ~e5to 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,
,
' ~\ ' .
>:;",.
'·3, Quando IORQ viene a.sserita su un cicio M , (si noti I'OR tra M e IORQ), SFF J 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, ,":;::: ' necessaria che IRQ venga riportato basso prima del prossimo MI. A tale scopo :-' basta ricorrere a una soluzione come nelle figure precedenti. .",
:,v):.:.:
·>
e
"
.'
",:
,
\
I I I I
-' ,
:, :
~,', ,.
.• '.
' " ~.
e
Come si vede il funzionamento di tipo sincrono, anche se si usano due segnali sp~ri corne segnali di clock. Per il progetto di una daisy chain sincrona si fa:ccia riferimento all'esercizio 4,35.
I \
,
:.~rr.
I I
-;1t"'
.>1..;~("-1
I"•."
Capitola 4
130
,.
""~
]
I \
,~\·
,'~'a
~:;.,
~i! ,\:.~ '.~
."
4.9 Esempio di controllore di interruzioni:
j •
""
,'~ ir: 0:'f:
il dispositivo 8259A ,
\
,,: . .•\;~..
\}~ ~:~~
.
.~~
,,~
E stato osservato che molte architetture prevedono 1a possibilita. di impiegare control. ,;)~ 'J;::' l~ri di inter:u~ione este~Di! ~che perche qU,esta 501~zi~ne permett~ a1 costruttore di ,~,~ :.;: ndurre at IDlDlmo la lOgIca dl controllo delle mterrUZlOnI suI chip della CPU, lasciand6 .;;,~ ,';;;' spazio per altre funzioni. D'altra parte, se si prevede un integrato aggiuntivo, questo',& '\~ pub essere reso ragioDevolmente cornplesso e incorporare sofisticate funzionalita di:~ ,':Z~ controllo. ·:;r . , n componente 82S9A (Intel) eun controllore programmabile (PIC, Programmable r!~~ i~:~;'" IntefTUpt Controller). Esse malta nota e ha avuto grande diffusione di mercato in~;~1~ .:'!,: quanto utilizzato come componente di supperto dei microprocessori della famiglia ~~ .';t< 80x86 20 . ~'£rl !~,~,;.~~ '~::.,',. ",\ "
e
,ji'!l .. ~, ',1-~
'~
. '."
.:.~;
lI
't,.l
D'
~~
Cont-rollare delle
~TA
,~ ::C
Inlerru-zioni
,
..
,., "
,
Pl:::RIF.
I
8
M
...
,", ,'. "".:.' ",', • >~.." ". '.'~..",!, .,:.}'
.. ..,,~ ,
. ~'7l;'"
,::~~:; '~':'~"
::::J1~ ::,;~,~
FJgura 4.27 Esempio di c~ntroll?r~ ~ inten:~ione ~terno: il PIC 8259A. AI disJ.>os~tivo·.:~ ! possono essere collegate 8 linee di nchiesta di mterruZlOne IRo-7. Esso genera la nchiesta.,~ i alIa CPU ~~ndo la linea INTR e immette, al tempo dovuto 1 il selettore di interruzione. ~'~" suI bus del dati DB. . 'I,' .. ~
\
I I I I
I I
,,
':"'.: .1.(', "',
:PI::RI ...
.
.
·~'.~i
~
I
"',
';',
:~\ ~'.)l
CPU
i
;.
dispositi~o
~'~~'
;:,' ".',
;\f
,:-.. :.It
\i,' ,:"" ,."
;:'j'
:.':
llPIC 8259A e un molto eOlnplesso., Nella p",te che segue ei si limitaJ a conslderarne 80.10 gli aspettl pm lm'po~antl tn .nfenrnento ~ s~o lrnplego con II micro '}~~'': >:~ 8086. n lettore mteressato a magglOn dettagh puo fare riferunento alIa letteratura '8, i: ~' Intel {In~79a]~ [Int79b}. . . ., . .' . ::', In smtesl Ie carattenstlche salientl del dlSPOSltIVO sana. ;~: ~ , ,. ',. :(H ''"' a) la vettorizzaziooe delle interruzionij
"&
;,,~;'
b) la gestione della priorita tra Ie interruzioni;
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,: 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 '~e~te embedded. Si tra.tta. in pratica di un microcontrollore costruito a partire dal 386, II dlSPOSltlVO
1.
';ij')i: .'
:.;~
.
'~:l-
.
~:~: . ,.
' .;',~ ';~
.:JI:
*.)
..
:.~(
~~~ .~:
jt::o
integl"' il cont,oUore di interruzioni 8 2 5 9 A " ,..
.rr,.~. '
-:,,, ' ',;.,
',~f';
",
1I~"';
p, . ,. . ""<><1... I ... ".. __------------------:;.':...::.::.:;••::.::•:•:.::.=-::....::-:...c.:;0"'.;.'_".'.;.' '.
'
·t,~
."
..
,
~~
...... ~~.M-~~
~
,... , .........
,,;WI", ,-",
131
_
'_
",."
"
~. :~~
~.-~
- -
:,~·, :";.", C)
~','.?j..
.:.!'
Ja possibilita di rilevare ie interruzioni sui fronti
d) .
sui livelli;
0
la capacita. di gestire fino a 64 interruzioni.
,.- "
Lo schema di impiego e in Figura4.27; in Figura4.28 vengono dati maggion :\,~':~i~,·,dettagli circa·il suo collegamento e sulla sua architettura interna.
',':;~~
',1;,:>',' , '
~'\' '.:: ,;': ~
CQrlpe
~\::.,::: "'":'' .'
Pr-ogra"nn1.o
10
',"'," ",'i/J~':'::'
<:Boes>
,R
~
:\.~'I.":"
AO
t<- .
OS
"" ...8259
",'
..,
--::
..... ,
,
.~"
.J
!RQ ~
CIl
~ ~
LC
~
'-
,I,: "
,
r
tl"T'I nO-07
';:~
,,'
-
~
!R?
IN O'
,~",: . .' '. .,',
!RQ
Codlfico ;nte.... vzion~
D8
I
MR
lEi • • ·lR7
I
,/";'.,
:.,'1''-.' .. , , "". ."
C~\':::Figura ,
,', .. ".'. '". ':~ '.
.
-,'
'"
b> Archltettl,lr'"n InterM
4.28 Collegamenti del contwllo,e 8259A e sua "'chitettura interna.
'
'
..
0) CoUt'QG/'l"ntl
In riferimento aHa Figura4.28b, il significate dei simboli
".:: ,""
,."',: ',:"." ,1':'·'
e il seguente:
". ' IRR: Interrupt Request Register
f./::..:·. ; .
MR: Mask Register .=.~~'.t~:"~'.~~~:,,:~ : I3R: In Se11Jice Register
tt~.~{;.;:,:,.;;,~· "TR
'),;~(,)/:,\".,
..
"; ...'
R .t
Ty
pe
egls er
','\ ',','"., . "", ~
,
',<,;:;.-',.'Tali registri svolgono le seguenti funzioni.
:;:,::",..,,~:: • Registro IRR: raeeoglie Ie IRQ dei periferici e leinvia a LC. E. possibile program,
~~/.'Y'>:'/I "mare il PIC in modo da operare SUI hvelh 0 Sill frontl delle nchleste.
'...:
,
. . , .. ... , . ,;~. ,<~ ~ Reg1stro MR: consente dl mascherare llldlVldualmente Ie rlchleste dllIlterruZlOue; , .t., •. > • • Registro ISR: indica quali interruzioni sooo in servizio in quel momenta per it . " -: ','" - ",:-: PIC. Piu specificatarnente, ISRi = 1 indica che e in servizio l'interruzione i ma · " '.,1",' .. " '. In questa caso eventuali richieste di piu bassa priorita della i ma non vengono .
:"\') ,
'
... '
considerate. Nello stesso istante possono essere asseriti piu bit di ISR (si veda '.piu avanti).
..
.;.
•
o;,.. :'
• 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 e programmabile.
Sono possibili svariate modalita operative. La programmazione si ottiene trasmettendo al PIC le cosiddette Initialization Control
132
::P: ~..'il
Capitele 4
'i~
,
:,}~
Words (leW). Durante iI, funzionamento viene comand~to attraver~o 1: Operation ~.;~~ Control Words (OCW). Sia Ie ICW che Ie OCW sono dJ 8 bit. Il pledino Ao deve,.i~
essere assento a 0 0 a 1 a seconda della parola cil cantrella trasmessa. Nel casa di 7:1~ impiego con 8088 il bus e a 8 bit, iI piedino Ao del PIC viene collegato alIa linea 10 .:':; 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 e possibile collegare il piedino Ao alla linea 10 del bus indirizzi '~~' perche quando 1'8086 trasmette sulla parte bassa del bus dati la linea 10 e sempre ;~<, O. Il problema e risolto collegando ad Ao 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 ~:~~ 'di' .' trasmette a questa III nzzo II' a mea I1 ' Sla a 0) . I · ;':,1 Come gia anticipato, la parte che segue illustra il funzionamento in modo 8086'1. i:'.. J", "
'i:
,.!;.~~
4.9,1 Vettorizzazione delle interruzioni
.\<~
,:)1
.. . .. . ; , t:~ Ad ogru mgresso ffii cornsponde un elemento del vettore dllOterruzlOne. II compor~ ,,~(:
tamento del dispositivo per quanto si riferisce alla vettorizzazione delle interruzioni e:~'J ... "J gil; stato completamente descritto (Crr. 4.6.2. Si veda anche Figura4.17). '): 11 selettore (Vector Type) e rappresentato dal contenuto di TR di Figura4.28.. ':~if,
:',-~
,1;(
-.:'
.
,·Hq
4.9.2
:~:
Mascheramento
, . }Ii, p' ;. '...
In altri termini, ','i~ se il bit i mo di MR e disasserito l la richiesta di interruzione non e visibile dalla 10gica ;';:tJ del PIC. Cia permette l'abilitazione/disabilitazione individuale delle interruzioni. . ~:~
n registro MR consente di mascherare individualmente Ie interruzioni.
":'~
.)~
,...' .'t
4.9,3 Priorita
,:, ....
j--r
. ' ,'~ ,"1'
Le linee ISRo_r sono gestite su base prioritaria. Sooo possibili diverse tecniche di ,:',1 gestione, tutte programmabili e modificabili in fase di impiego. La priorita puo essere ,"';'~ £issa 0 rotante. :"'l, 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 l'inizializ~ 33 Z~i?ne, ::ssegnare 1a priorita. massima a ~u~l~nque ~. 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:
.~ "
21 L'impiego
con la famiglia 8080/85 o 8086 si impone attraverso ICWl.
e stato trattato
nel Paragrafo 4.6.2. La scelta del modo 8085
\
-'I"r,.; '.
" ~i.'::!.
/
';';' ;." (1
';,i." "~'''~'''''' 1',,1
::TC ~'.' , l., .'..
It sottosistema
133
1
.',
..... :,.,,~. ,.. '-:,,~ , .~, non ,,"
,
e in serv~z~O ~l l~vello 0 e~ ~ a.sserita !Roi .. ._non e in servlzlO II hveUo 0 ne II hvello 1 ed e assenta ill,;
>.:
)
ce., ' "."'.~ ,~.e 'In termini di logica booleana si ha: '.,: .''.', ".~ lRo ISH" + ill l (ISRo + ISR 1 ) + INTR= ' .... 1 + IR,(ISRo + ISR1 + lSR,) + ... + ill7 (ISH" + ... + lSR7 ) ". "',. ,'.'
';
;.'," .,' , . ,:',' .',. ">,' . 'D' . si ottiene can facili passaggi: '..:", . '.: _a " '.~.. '" c. :.1NTR = ISH,,(!R> + ISR1 (ill, + ISR,(ill, + ... (lR<. + lSR7 ill7 »» , .
1
\
CUi
:"
"
(4.1)
1
."'::<". '; :AlPespressione 4.1 corrisponde l'arbitro di
priorita di ~igura 4.29. 'Sui primo cielo di IN'1'A che segue 1a richiesta di interruzione, 1a logica del PIC . . 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 d' d· . della richiesta servita. 'numerO or me ~
. (" '
1'
,
i
'. ':' .
~
JJ ."
,
~
,.,
:. '. '
l ,:
" , . '
' -';,
q ;. :' :. i,
"0
'
,
.'; . .', "
~\ ': ; "" .'; :'.~ J ::'>--::..'~,:,:~,
~; ;'.-,.,
~
~
"
'
d'
:'
t~ ~,
~.
..
''''''0
I
y
, • • 'RO
Y ...
I
I
y '.'
d 11' b'
d'
'.)'
L li
I"'''''' 'n_
lR
. t
,
I
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-; '" .
,
'."7
\
;....
'; .
11; ,':
~;. :.-
,~; ';
.
·4.9.4 Riconoscimento di livelli
0
dei fronti
;~,
31' )!!:
q
':~ir
i'
.~~'" ,:~1',
)> :-:1
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), e necessario 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 differe~a. tra Ie due .. modalit" consiste semplicemente nel fatto che facendo lavorare iI PIC sui fronti,
e
I ! I l
~"I' ','~ ;.
~2Si noti che a seguito del passaggio a 1 di lSRi, il contrib4to a lNTR di IR j e delle richieste a minor priorita e 0 e che INTR viene disasserita. Si veda anche I'Esercizio 4.36,
1 \
• .
·.. '1
Ir.
.~~"
134
\
~l~.~
,:r."' " 'I.,'(."T
Ca.pitola 4
IJj,·.t-ilI
'I""'~',',''
~')~f;;'i
I
:
}'~lY,,~.I , r','1 "- .,...
.. , ...
~~,
~
~
necessaria una transizione di stato sulla linea IRi prima che questa possa generare .,;.j; i~~::;t: un'interruzione, !~,~;~) Ovviamente l'impiego sui fronti e meno soggetto a malIunzionamenti. L'impiego~;;:~: 1,.U~Y sui livelli cia riservare a queUe situazioni in cui si vuole che 1a medesima linea di ::~, i: ,:m?( .. ', :>.. ricbiesta resti attiva (perche 1 per esempio, costituisce l'OR di pili richieste e si vuole ':"~l~ "'''~' . ., evitare che, operando sui £ronti, parte di esse possa andare perduta). Xli "~,,1,:'.,1>'",',~'IJ.. · .. ;.~;, ,
e
j
\
"
~
'·"·r
~";.
.
Priin~ di
"
~:'~:i'
,"~Ii! >l.:~ ':H::;' :~.,¢
4.9.5 Schema di esecuzione della routine di servizio
l
•.,.,!
,·,,">
..
I
,
:."<,,
}t~ ':ff:
schematizzare il modell? di esecu~iane .della r~u~ine di servizio risulta ne. -::j~ ~~;~/ cessano spendere due parole su dl una ultenore carattenst,ca dell'8259A, . :'i~1~;
\
.,P~OIl"''''''''' .uc.. ~""'.
!I
IItl
______
,""'t.....
1 )
'~rn .fJ,lo:
,"~"
J~'!,:!,:'
.'1~' ",
-' ",.'
Sm;lJo
'
"
~
"
+
l '.-; 4~:'
,.,:.f..
.
dl
,
I
';-:il ~A"'!.~
JSll:I(~O IR(l
~~, '{i::~i
,'~.'~
.. ';,!rn
Sl:S,I"
;";,;-~.',
'rr,\!' "~
"~.,
j~ .',f!;;j
.:;~j ·:;;r·.' .,.•
'~l"'"
;::~
"'·"I':'
.,j·\i
,.;~'~:;'
~:·i :~~~:~,
Figura 4:30 Schema. della. routine di servizio per il caso di non AEOI. La figura. vuole ·;;tm :·,rrlt evidenziare che nel saltare alIa. routine, nel cicio di riconoscimento dell'interruzione, viene ':;,;M :b;,~l: asserito ISH.; nel PIC e viene disabilita.to il sistema di interruzione della CPU, Si e supposto .,~ 'r.¥:./ .,~,~~~!! .$~~:.: che la routine di servizio riparti ISRj a 0 prima. dell'istruzione IREI-. • ~~} ,i~)~,~
,. E
",:~:[, ·::;f.;~'
sta~ detto ~e sui p~o ~TA viene ~serito il bit di IS~ COrriSp?ndente'~t~:~~~~
alllDterruzlOne che Vlene servlta. Cl sono essenzlalmente due modahta per rLportare~:,'!~ j~}i basso tale bit, ovvero per notiJicare al PIC !a fine dell'interruzione (End Of Interrupt, EOl): ~.J ~ I,~';
,~ "*,,
I
,:\:! ~ \", ',;m ?\C
a) .EOl automatico;
.....';.:! ,>~ ,'_r-~
"L
'.~.;i "Y~':"
b) EOI comandato da programma,
';: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 piu in servizio e quindi viene asserita l'uscita INTR ,:,~ .:".:" per eventuali interruzioni di minor priorita. (ovvero per 1a medesima interruzione se il '~l ~," dispositivo programmato a lavorare sui livelli e ~ ancora asserit'a). . ' i~ ':"~;'i: Nel caso di EOI comanda.to da programma, spetta at programmatore decldere :~? .'~ il momento in cui IS~ viene riportato a 0, trasmettendo una parola di comando at .~':::, 23 dispositiv0 . . J .~.:>
e
\
I I •
e
e
.J
';•.:1 : ',' , 't( .. '"
23Per l'esa.ttezza., si deve trasmettere OCW2,
';;1 \~,,' ':;:~ .' :'>"
"
".
'f';; -.~
,.~:
:. ,r"
;;J!:( "
'!:f.... "
-
.;~:
~:!:l:'
':::->J1.
T~ ".;
Io'.:.":
''''''''-
:t·.. '~' "..,
135
.
Iii:;",.,< ~[';'";:. ," .
.'- ....,.::,·L2:. :... 0
~,"'
',":'-,
via.mente la prima modalita , ancorche piu efficiente, cleve essere usata con ): ~... /'" : prudenza, perche essa induce facilrnente un comportamento euoneo. Nella Y:'2.;.~~~te;che segue si assume d~ non utilizz~e la ~odalita ~O~. .. (~(;·;r. La Figura4.30 schematlzza PesecuzlOne dl una routme dt serVlZlO.
>..~, •. --.;. ••
,.~".-;
,,,"~'.:'-
" "'-, ' Jr',,: .. ,·
... ~.~ ",' !;..'.. ~
>'"-:" ..··4' .9 .6 Esempio di trattamento di una sequenza di interruzioni ;'.
';a i'~
nidificate
,
'L·i~: .. -~' ¢" ..,."
:}~W~E'}e~ 'raccogliere Ie idee, ~iene ora studi~~o il con:p~rtamento del sistema CPU-PIC in
/,:lLr,~~erj~ento
a una gener~ca sequ:nz,a dl mterrUZlOlli. 51 fanno Ie seguent, assunz,o~l. . ,',
;~~i/,
~~")J_':-',;.1. Le mterrUZlOm hanna pnonta fissa. ;~:;;:':'"
:f'~.; ..•.
';,.;,.,,-,
,1';""" -:--'
i';·,~.-~: '.
",''-l'~
"',
·C·'-
j. ,: ~ ....
2, Si parte da una condizione in cui non e asserita alcuna richiesta di interruzione, con il sistema di interruzione abilitato.
3 Le interruzioni avvengono secondo Pordine temporale di Figura4,31. In partico-
-,'
'i;;r.{~ r ' ,'" ,'.
'.. ,;~l,.,"
,,~,,~:'~:'~~:
'~~:.::;
ha pnonta massuna lR7 Illimma.
,
,, :~:"'.'
~
IRa
. ,
",'
t};:<.':-
:~i>:~~:'·..
lare Ie interruzioni IR2 e IR4 sana coincidenti 24 , I bit ISRi vengono azzerati nel corso delle relative routine di servizio. Da un punta di vista pratico questa equivale ad assumere che il programmatore trasmette al 'PIC l'appropriata parola di comando.
,
.
.
/~~2·~','·· 5, Le richieste di interruzione I R j vengono azzerate appena il centrolla entra nel:~.~~)/.:.:' 180 relativ~ routi,ne di servizio e, comunque, prima che all'internp di essa venga ~:j\",:,,:: "'. azzerato II relatlvo ISRi'
"
'';'/·:'" ..::'
" " , ~~~h,:\:' ..Si facci~ riferime.nto all~ schema di Figura4,31 e di Figura4.32 e si osservino, in iV'.):~:P¥tlcolare,1 seguentl eventl All' 'I PIC 'INTR d' IR IR A d II ' ~'. • '1stante tl 1 35sensce , a causa I 2 e 4.. causa e a maggIOre , ~ .:. . priorita. viene servita IR2 , Conseguentemente il controllore genera il selettore che C ;~," determfn~ il salt? alla. rela.tiv~ routine di servizio (R2). Si noti che, entrati in R2, ....' INTR e dlsassento a causa dl ISR2'
,,,:;::
L.
:"\'
,
.-
"
.. '., ::' , ~' __ "." '
::" .
~ ,
,.'
.
, > .. '
'.', . "':""","
• AWistante t2, nel corso di R2, prima che in R2 venga riabilitato il sistema di interruzione> viene asserita IRl . 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 t4 ), mentre il sistema di interruzione viene riabilitato (istante ts). La routine arriva a com pimento e l'esecuzione di mET riporta al punta in cui si verificata l'interruzione in R2. n fatto che Rl abbia azzerato ISRI e riabilitato il sistema di interruzione non ha avuto conseguenze, in quanta il PIC ha rnantenuto INTR disasserito a causa di ISR2'
e
', :'. '., '411 termine coinddente deve essere inteso in rapporlo alia ca.paciU. di discriminazione del sistema: ;:'" ,sui primo cido di INTA sono ambedue presenti.
:;,".;;
":'"
-.
(If.. :•.",' ,., t,:;.
, I
I
,
I ,' ,
, ~.
I'
I; I"
iI f.
I;
II
I
,;;
"f.;;
136
,~];:
Capitolo 4
,.,~.,
'~.il
1:~~r :~::;
'~~~:i
R' R2
R2
:.·:C
"2 R3 R4
P
..,..
P
......... :' ~ ' -'iii; ..
"
,, to
\'g{~
R4
~;-,
,.,
,",
't<
'"
" m
~
I
t. l$IlJ(-a
" m
t, It,
t,
'"
lUlZ(..
I I
I
t,
n,
"
ISltl(..
L-J
I
I
I
I
t.
t" ,~,
,,,
t. IU'HI
,:.:::~. ~wr t,.
lllO IIl(I
"'c"'~<1
....·\1
~"
".. ,,;;,
:,c', ,
Ji ~r: ,,'1.,1
',\.~~
I
'1';,
tr
\J~ :~~ ;:~fj ;Jk "'::;'~:1 ~~:l
I
]SRI
':~~?~ JF. ,~;~' ~k
ISR2
J~~ ~r'
ISR~
,~::;,- ;~}
.
I
ISR3
)}"~ :~
I
.;:~ y~
FigW'a 4.31 Esempio di sequenza temporate degli eventi.
: ." /1; i~:
.~~.~ ~~ ;~
p 01
02
Illl!-'
},,
$f
~
~~
ISRH-O
.l --------- ,,t," ,n
1/1:2(-0
ISR«-l
It<~O
f'.-.
,
R4
1
~~ ~
Wt
R3
I~~~J-I
::
..:.
Sil
. f~
ISRJ(-O
r-
j'"
I'fRH~O
'1
I"
\
~
.
*1
Figura 4.32 Schema di interruzione della routine di servizio dell'esempio,
,,' . ~
~~'~I ' ::.1. }
• All'ist~te .te il contr.ollo ritorna a R2. Uazzeramento di ISR2 in R2 (istante t1j'~\ ~ detenmna Il passaggto di INTR aIlo stato alto a causa di IR ancora asserita e"'f " conse entemente a una uu f 'd' INTA ,4 .~,"., ) gu , ova ase 1 ,can salto ill R4. ~ ' . , , . 'n l • N 1 d' R4 I" e c?rso 1 ,~lstante ta, Vlene assenta IR3 e la hnea INTR nsulta dt nuov01' E assenta. Quando 10 R4 viene eseguita l'istruzione STI (istante tg), la CPU entra.!' . ' in una nuova fase di INTA. PIC genera it vettore relativo a IR:3. R3 arrin l' p' t . IRET f ', .' ' .. I:' cone U810ne e 18 rUZlOne a tornare a1 punto dllfiterruZlOne m R4. .:r; . " .,. '. . .. "r, • 81 not1 che nentrando 10 R4 11 Sistema dl mterruZl0ne ablhtato. Per 1a loglca del· PIC, fino a che non viene azzerato IS~, e in co~so di servizie questa interruzione(.,~
'tit
n
a:
e
•4 ,.$
,:; ,. : ,.
)
~T~I.i~;':. ~lol').·~.,
I
,.,.,.,., , "" 0.:; /: ..' '
;)1\; :i"" ~, ....'.
;~~':'~
":'.
'
:~:':>:'1:'~~'~'_------------------~n::..:s~o~tt:O:S:is:t:e:m:::.~di:·~m:·~ll'e:.:""=S~O~/~us=c~it~.'____'1~3~7~ '. I'":''' ..J
,
l"-A..'.
r?~:.-"F.,...... )""
1
.,
1
;~;·:.;,i;.
i~\':1,'/'.':· Dat momento in c~i .ISR4 viene. azzera~o, per la.logica del PIC ness~a interru~:/\?":"'!'.: zione e piiJ. in se~vlzlo,. mentre illvece e aneora lD corso ~4. Da R4 II cantralla ~i-;:~r~:~: ~~torna. a R2 con PlstruZlone IRET e da R2 al programma. lllterrotto. '
,',,'"" '-",'"
'.
... ,,.,,'
,
..-:· . ,
r,::·?'
"
:~""
•.••• ,. ., , ,';'';
.
0
:,·'. 0 L'accesso diretto alia memoria r:'i .:'~~tto controllo di interruzione i dati v~ngono tr.~feriti ~ ma~a molta ~iu efficiente
,' ,,' ~
1
~,~
~i.::>:'Che a controlla di ~r.ogr~m~. Thttavla, a o,gn~ l~terrU~lOn~ e ~e~essano eff~ttuare k~<,:<::'un certo numero dl.1struzlOnl ?er salvar.e e npr~stmare 1 r~~stfl di CPU, cancare e l';;':' . aggiornare contaton, ~untaton ecc. Gli ~sempl .pres~n~atl 1~ p~ecedenza m~tr~no
.-'~. ':, cbe, per ogni interruZlOne , vengono esegmte de~m~ dl IstruzlOnl a Eroote deli Ulllca k~~;:;}.;:"istruzjOne di·trasferimento del carattere alia penfenca.
e
f2:'~;>~\;~,\,
fu
questi casi it contrello sotto interruzione risulta praticamente impossibile
26
~·¥.~;~j~-lore"hardwareche gestisca direttamente il trasferimento dei dati tra periferiche e me~~fL~;\'ri1orla centrale, senza interessare 130 CPU. n dispositivo in questione viene denotato tf·::f:'-cph~la'siglaDMAC (Direct Memory Access Controller). La corrispondente tecnica di :tt:,c',:;;«trasferimento dati viene detta Accesso Diretto alla Memoria. "
'
~:;:t~;'~-'::}~;· .. ln Figura4.33 viene schematizzato it modo in cui un DMAC si inserisce nel 1~J~':~,"(' sistema 9PU·periferici. n significato dei segnali e il seguente:
" ,., . ,."";
'.> .
~"{:"'.':' ,,~.''';:";:--"-----------~;~j,:::::';-.::;,:~t noto che i dischi (rigidi) sono tenuti
in perenne rotazione. n trasferimento e sincrono con la ':::''.7'i~:_·'(:·~'f~~~lone,d~~I'8olbero. La velocit~ del trasfe~imento ~ determin.ata d~la velocit~ di rotazione e dalla }~·",-,,'.·l: dens~ta dell mfOl'mazione memonzzata sulla super:ficle magnetlca/ottlca. ~{f,>~.·",::",?IlE .faCile c~nvice['5i, ch.e, d~vendo gestire ,il tr~ferimento di un pe~fer,ico, ~o~to veloce, c~nviene "'~/-'.'. ::,/.lDunclare al!e l,nterruz,lO~ (evlt~ndo 180 pe,rdl.ta dl tempo per salvataggJ, npnstml ecc,) e dedlcare la )~~:/,,;,.:l:CPV~questa sol.a attlvlta. per II tempo rlcblesto. ~~,:f.·,.:):-Y~e la, pena.. dl ricordare me neU'ineieme di illtruzioni del microprocessore UO era previllta una li~'h' ,;:' ..; ~pe~rfica lstruzlone dl I/O (l'istruzione INIR) cbe: (a) tr8.\lferiva un byte (tra perlferico e memoria E::f ";' 0 vl.ceveru); (b) increment.a.va. aut.oma.tleamente un regist.ro di CPU predefinito come punta-tore; ':~:r}':"<-"<~} decre~entava un re~i8tro dl CPU predeftnito come conta-t6re e ripeteva i tre puai fino a che .:,~~esto re~lstro no~ r~ggtungeva 10 zero" Di c~nse~enza it ~dice corrisp~Ddente al so~programma ' .1'-':. '. I trasfen~ento SI nducev80 alia sola IstruzlOne 10 questlone. 10 pratlca era posslbile seguire a ; (' ,.controllo dl programma i trasferimenti di periferici di altissime prest.azioni, a.oche se, oVviamente, ':' -';-: '.' ' ~a Cp? ~est8ova dedic80ta esc1usivamente all'esecuzione eli questa istruzione per tutto iI tempo che ,; }'" essa .nchledeva. Una tale istruzione e di poco interesse se il cakolatore deve poter lavorare in ,\.~:.~ . . ~ultlProgrammazione 0 in multitasking.
n····.·
ii"'..." ", -l;;.,';'
\
\
I I
I
.
\~l»(':':""C ~.-f'; .. ,... ;:J :,j:; "..J.,
..r~\\:: ',"
I
.
~i~~t·:;,::,~~~,~· Una tecnica piu efficiente cii queUe' fin qui viste consiste nelPintrodurre un control-
......~,':., \....
,
e
'i:.,~;·;···,'~:;' Se la periferica molto velace possibile che la frequenza delle interruzioni sia cosl }:;t,' ,'.!'~t'a. da non lasciare, tra interruzione e interruzione, il tempo necessaria all'esecuzione ~;ti.<': ,dell'intera routine di servizi~, Si tenga presen~e che nor~almente Ie perifericbe velo~i ~t;~'.:'6perano in modo sincrono Tlspetto a un propno clock, dlverso da queUo della CPU. E :i:!??",;:~ questa il caso deUe uriita. a disco 26 , per Ie quali la velocita. di trasferimento dati puo ~~~'~
,;,o:,,-' :";"A,'''' .
\
( 1
l I \
,
138
."
Capitola 4
'
..:
~~
\
~~"I!l~\ fi1; ~tWF~
'W':
\
':
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,
· DMREQ: - BUSREQ: · BUSACK: · DMACK:
il!r.yf"
;!f#
~!~:r~:
"~~;l
~~~~if~
.
\
,...' .'~~'..-~, , ' l !,."' '. 1 --" ~'~.
BUS INDIRIZZI
r ,~
" '.~. ~!~:;\f
BUS DATI
. .. , ,
~
~
-
0 0
,
.,
~
"
~o
'0
~
MEM
-
.
%,,,0
',,"
O
2
BUSACK
,
. ,
aUSREQ
~o
\
. . .
CPU
,.'
,.:::]~ ~~~J~4
~
~
-0
DMAC
0
.,
0 0
"
,
~
DMREQ
'
'"
".,!j.
.,,~:'[ ::~I~1;~
.-
CONTROu..o
\
~~
Flg.u.ra 4.33 ~~)I~ eli: cOlln~lOlle del DMAC, Per semphclta. SI 8 bit e un bus mdirizzl di 16 bIt.
. :~~ '.~~~ '.,J>;; '~*~~W,; 1 ~J"
,lLI\',~~
,
:,f,; ·.~i:;1' \< ..., 'J!!-~+" ". ~ -~~ '. \ 'f~' ~';~. ~. 't1.;1, . }~, ~l~}; :' ~.~( M~i~f~
"I
DMACK
." .
:;:.1 ~1lbi:'3~
PERlF,
'. if,,\ ,~f£,*
e a.ssunto un bus dati di ;~:~1'f1ri;
"l~"": 1 .' ';;~f,S:· ,10;.:1:: ·!,j~;i,~
,::~!~ ~~r. . n trasfe~ento dati tra un periferico e la memoria richiede che il DMAC entri,~i:~ ~i~ l~ controllo del bus normalmente pilotati dalla CPU, lntuitivamente un trasferimentO';~'! ;~~':
\
51
,
I
"Cl
eH'ettua nel seguente modo:
1.
L'int:rl~cia del periferico a:sseris.ce ~MREQ per indicare ebe
dato
ill
.
\~J~~}l
~~.' ~j.'''
e disponibile un'·:· ~
~1'[~ lDgressO, ovvero che 11 penfenco e pronto ad accettare un dato in uscita:\W. '~~l .
1,' ';;'i~~
2. La IOglca di controllo del DMAC as~erisce BUSREQ, richiedendo di entrare in::I;}~ :~{$ controllo del bus.
)
...~~~ /~l~ ~"!':L~~ .".~~~''
..;.t~·-::;Wg.1:
3. La CPU risponde asserendo BUSACK. Questa segnale indica che la CPU ha .~i ;.~~{~~
pos~o
in alta impede~a i piedini che corrispondono al bus degli indirizzi e dei'i'f:~ ;~~ datI. La CPU restera ill tale stata (detta usualmente stata di HOLD) fino a che :~~~ !';~ BUSREQ resta assento. '.~~l·:~;~: 4. ~ ~uesto punto il DMAC 'pu~ pilotare il b~s degli indirizzi, rispondere al per- "Hl~ Xt~:: ife~~~o con DMACK, ass~ue l.l comando dl lettura ~ scrittura in memoria e il ,~,~;1 ~f. cornspondente comando dl scnttura 0 lettura verso l'mterfaccia. ,'..r ,~,,-. ,~" C'~
l ,\
.. ,.~.. ,: ,,,
.. '{.~
("
5. Finito il trasferimenta, BUSREQ viene disattivata e il bus tarna in cantrollo alla ,~, :i,\" ," CPU che .disasserisce B U S A C K . j " , V'~.,~ ':.. ..... :
·J,ft ~,~~
Una descrizione pill dettagliata viene fornita nel seguito,
\
,./i!; .; _ ·:f~'""·,,,
,.!.! . I ":;
'.'
4.10.1
\
Struttura e funzionamento del controllore DMA
\
" ;':
'.!.i
'
,..f. .,<:"
.
,..i . ,: ~);~ '. ''',
,."., ... ... . !, I'~ ;':j: .11 'i~
L'architettura di un DMAC prevede come minimo:
~'.>
.
\
,.!~
.:~~ '.;: ,',,", ,. " ~".'1j .'"
i,ill;' ,. ", .•-t'
;...,-o{\i..(
."'.,." >
"1~;::::'
II sottosistema. di ingressojuscita.
...
139
'~ ~ ,. : .~~:- ~I
~ ~'%Ir;,}.
\~~.;j,,., ,:: .. 't ~~~V:»
:j!:';~"'~'"
'.
~,,,~:
n contatore del numero di caratteri
"~'1~~,';30 : U
,
0
parole da trasferire;
. '
#~~S~!~ un ~untatore aHa posizione d.i memoria in cui verra letto/scritto it prossimo data;
:~;t::,:-)" un registro di comando che indicbi il tipo di trasferimento; \Plt1~' -~
,
•
~~':~:;d:)' ~n ~"entuale registro di stata.
,.,.~"<'" . - ~• ...,•.
.,;,
,ri{l~j '.
'.
•
. ,
..
. . ,
fi~{;~.;~: I registri sopra ~l~n~atl sono ~lf~n~I, per sern~hc.l:a" a un controllore con un ~~lr.,i unico canale. I dispO.SltlVI commerciah dl~pongono dl plU di un canal~ (normalmente
4t:!t'4), ciascuno dei qual! prese~ta ~n ~uo .re~lstro .contatore e un suo registro puntatore.
~lJ~~':'~'~..
Si distinguono due statl pnncipall dl fuuzlonamento: 10 stato 0 fase dl program~~r~,;~iOlle e 10 stato 0 fase di e~ettivo trasferirnent,o. I due so~o. t:a lore mu~u~~nt~ 27 ;I~J.~ esclusivi nel sensa che se e m corso un trasfenmento e Imbita la possIblhta dl ,!i;:'['>,,' II
';.~~t~p'rogrammare il contro are. "'l!i"""'''' ~~ ~ ... ,;"'"~~, . I.'~'
.
~:'~"\lI,I,
,i!.~,~~ "'1 1.'
;}i~~~~se di programmazione La rase di programmazione serve a trasmettere al DMAC ~t~.:: Ie Informazioni che definiscono la modalita di trasferimento sul canale, In questa rase *i~~ftt~il.controllore viene visto co:ne un di~positivo di ~/O dot~to d,i u~ insieme di :egist,ri. ;~1~'~~Hn sostanza la programmazlone conslste nella SCflVere nel registn sopra menZlOnatl,
·I;I~.I'~" ,,.. ~~':f!;· !'; ,
.
.f~t~?'h~sferimento dati Ci sono due modalita fondamentali di trasferimento. ~~~>: ".' . . 8' . ~:i;~~~~!:1. La. modaltta dl trasfenmento .sm 010, dett~ ~che ~ycle s~e~hr:g'l l? ,qu~nto 11
l'I~l~~,~.
''::':'''.''
cont.r0 ore o~c I SIS ema per J! trasfenmento,
l
1 bus
solo per
11
clclo
0 1 pochi
cicli che 51 flchiedono
~}l~~'i: .,.. . ' " l~!.'>,". La ~odahta ?I trasfenmento a blocchl. b~rst), che mve.ce ~revede I oc~upazlOn~
~S~~.\\;..:·"
del SIstema dl us per tu 01 tempo nchlesto a trasfenre II numero dl caratte.fl $~~~',:' scritto nel contatore in fase di programmazione.
~~i>:J- tl· , ''''~.,'>..:~
:':"'i$:. ,~' •
~~sjs,;·~~) .
La parte che segue
e dedicata a spiegare in un certo dettagLio le due modalita.
~~~~:
~:r~"l, 4.10,2 Modalita di trasferimento singolo :jf:~t:,. ', ::~r'~~,,',n tra.sferi~ento di un singolo caratt~re p~b essere schematizzato con la sequenz~ .(t:( descnt~a ,l~ precedenza (CEr, 4.10), In CUI al passe 4 vengono svolte Ie seguentl
•
,
,, ,
.::,~,1.T:-,.r,·,.operaZ10nl. ... '. .
, ",~, ,.' .., ",y'.,", ..
.;
",\:,>"
" ::,:, ' :-::~::.'.,
~:~:~?,:
_: ',," ' ,.' . I' ~. '
;'."
:"- .
"
"
1. La logica di contrallo del DMAC:
• Presenta il contenuto del puntatore sul bus indirizzi.
• Attiva la cappia di segoali MR (Memory Read) e lOW (I/O Write); oppure la cappia MW (Memory Write) e lOR (I/O Read),
.. . ,-..
,'''.
.•"' . . ~"" .. , . 1 .-
..
:;~.;::',
"
,~.
" ,.'
,"
I
,
",
:""~ .~"
:"
,
,27Piu precisamente: quando il controllore st.a servendo una ricbiesta.
28Letteralmente " rubando deli (di bus)".
.
lj , ,
,
,
i'
-
140
''.--:-"" ,
.;;~~ . ., ---~~ - -r"--
Capitolo 4
.' ;''l' - \,li'
'
,::'A'.\ "
~.,' , • Asaerisce la risposta DMACK. Di norma, a fronte del DMACK, il perifericQ.:J' ;t~ ' 'DMREQ' . -,..-:"",, ';? d Isassensce , ';'" l[il ,
"'f-
2. Viene decrementato il contatore e viene aggiornato it puntatore (decrementandolo'~~~ '~ o. incre~en~andolo a seconda della scelta fatta in fase di prograrnrnazione)j viene :::~ ";
-'.;.•,-:0:' .'~J 5lj ~JI
dlsassento 11 segnale B U S R E Q . ·
_,.
3. La CPU, riconoscendo che il sistema di bus possesso e disasserisce BUSACK.
e stato
"
:.' '.
·r',
. ...
"'J
rilasciato , oe rientra in ..;;,,,, ,.,1 'Wt -
,
.. ",~,
'~
:,'",1 , ,:. ,
':-i"
.,o
Si Doti che il DM~C ottiene il :o~t~oll,o del bus' per il tem~o necessario a effettuar~':,:!~" i{ una lettura 0 una scnttura (pachl cIch dl clock). Thtta avvlene come se, durante il- :::~. :l. 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 '~ ~ingol~ parola. Di consegu:enza,. il trasferimento di u~ bloceo di n byte) richiede ehe-:~1 ;: 1 'pasSl da 2 a 4 vengone ltera~l n volt~ (fino a. che Il c~ntenuto del cont~tore nOn :'~~r :~ diventa 0). Nat,uralmente, tra iJ trasfertmento dt due datI, la CPU esegue lStruzioni~\" )i normalmente.. " , ,."::,;~~r~,,i"',:S Le temponzzaZlOlll sono Illustrate m FIgura 4.34. '-~:~~: ~t
:~~
l;--I\J
DMREQ BUSREQ
Lr-I\
BUSACK
II
':{" ~S '.J.,;: ~
?I
~
-~,t':, :;
"'I \
'4
"'L
~.;~~j J: ·;.~l: f
-~:; "' >.!\, ~ 'Ii 1
·
•
DMACK
I
MEMR
---,---;\
I/OW
_ _ _I
1
II
II II
~igura ~.34 piagr~ma te~porale
"I
t
I
,), l
'..
'~'\f),
-{!~ ",,~:
,".
I I
1_ Il--
L
;d •~
,
"
" ..c'"!,. C~-.",(
-:""i'~ , "
,. '~t'!'l ::
·
}/"
:'f
.,.,
"
~"'" ::I'~
· "'1 '.'/.
relativo al trasferimento DMA di un paccbetto di byte;::~~ m modahta di trasferunento s l n g o l o . t . ? '
~
.
~
it
.,~ '
"'j;~;,"
~.,"-
", ,' " ..
.'/'P.~ . ,.t.:;
"
~.t~ ; 4h "
':,,:;;:~ ~ '-& , n trasferimento a blocchi differisce dalla madalita precedente in quanta BUSREQ .;:~i < . .. ,. . ,,'f; vlene dlsassento solo se nsulta zero il contenuto del contatore dopo l'agglornamento. /M In pratica il DMAC, guadagnato it controllo del bus, 10 rilascia solo quando it bloceo ,::,~ ' degli n d~ti specificate in ~ase di programmazione e state trasferito. ?vviamente' :~~~ ~ la CPU nsulta esclusa dall uso del bus per tutta la durata del trasfenmento, Le ,"'1 temporizzazioni sono illustrate in Figura4.35. .~ Questa modalita e indicata per periferiche veloci. Ji:~
4.10,3 Modalita di trasferimento a blocchi
);1
.;:;":,:''-
)
,:/:::l, ••.
tjii"i'"
.it:.'i:,;.·'"
~"-":
.
1!'1~1~"":
!D:""<-""'-
~.,,~,,;;.4j}tr:
,
'~I~;"" • - - -:11." . "
.~.:..-
"
n sottosistema
l .~.!;';~.-- . IJ~",.j!.~,~y". ,., 1~~;'I'1·~~,:.':-::;~,- , '0 ,.. . . ~"{.'ij.Gf_ .", c
',
,~.,
DMREQ
.. -.)i''''~''''' '-..
~l'I"
?lK'I;~~i!i;t~~0" ., ln"\I0-"r'" .",. "
-"O.,
",,,,!,.. ~,,,. >-, ' ,
~I~~'~!t!{~L
BUSREQ
j?%!:·i;'i;;.<:~L,
BUSACK
;:~M;~'~J\i: . :·:
I,~,J{'(I1":"":'L:" -r • ...,~I .. v."·'
,r"·-l"t,:··,· - .
t~~~~·~.;:;::--:._.. ': 1\:,"
:~'." J~,',;"",
.•
~"
D!>lACK
~
I
\..r1
I
II
-I
1
~wm;J
~..; .;-'
...... '.1/<1'1_ ••'''···,
141
__¥
II
1'---
II
''>L 1,---
II
I ]
, .... -
.~', "' . .',---
:"\_.}.;';i:;,!;~,;'''': ,. ,,/. , o:._,':',\j ", - •
MEMR
.:~,'(~N-\~Y:':-'",
Ijow
{~~~~,;~~~,:,:. ~:
,~~;~;.~H.\'<:">::; " ...
_ _ _I _ _ _I
1 I
II II
1 1,--1 1_
. . . . ~~~::::~:_~Figura' ~.3.5 .Diagr~ma temporaJe ~elatlvo a.I trasfenmento DMA di un pacchetto di byte
:~~t:;:~~'i:ll:fi~,~Odahta: d.i trasfenmento a blocchl (burst).
~!1h~f}td:;:~.-
:_.', .'
i;ji:'M~:,:t:'"
S4.1l
U'
,
n esem plO
d' DMAC' '1 d' I
. I
't'
ISPOSI IVO
I t 1 8237
n e
t{~~:bf.-~-L;'. .. . tit..~{:;tiA titolo di esemplO des~rtvIam? brevemente II componente 82.37': ~t79a], ?-o control-
Sy,;,~.;~'t,~;-''.~:~ nZlona1e.
.,.:;, .
1_"""
L:t,':\1:~,,:,~,
d.. ~"W!i",'''''c ~·"·"~·II;""',",,-:
'. ,
,..,,:r:(•.~, ... _,.'r"-' .... :. ~",
~
,
-."'l;;"-'~-
""~.-.-~";'''''
,
,'" ,".
.•'_;t,;,
.~.",';
•<
<
HLDA' HRQ
:",",'"
'''.:''.'.
"N~ , .:' , .
••.:~.:.,:~_ .;".,_-- ~ . ;'~~!~( ',:' ,.,':' "".'r .. :'~;'
EO,
~
Q
•
8237 ~
~ u
"w~
~
> Q ~ Q
-;
~
0
•
~
~
.' \ ,, ," ~
~
~
~
.4
"
OREQO-3
~:\.;:, \,~'.,' _ " . "" :,,', ' 5t notmo Ie 4 IInee per I. nchiesta dt servlzio DREQo - DREQ3 e Ie corrispon'. .'d~ntl nsposte DACKo - DACK 3 , relative a ciascuno dei 4 canali. Essendoci 4 canali, '~:;";,f';:,:,' ',clascuno e equipaggiato degli appositi registri (CfrA.IO.l). -,
I \
DACKO-3
t: ,.' "
~.
II
I
'I ,
~~~'~~,~;': ;~,:. . ,~_~'> '·;·>:F~g.ura 4.36 Schema funzionale dell'integrato 8237. II dispositivo e un integrato a 40 pie<:!~... ':i:',' _ diUl: .~. p~esuppone I'impieg~ di un latch est~rno in cui viene appoggiata la parte alta. ~ ",\' '~': ',degh IndmZZl, presentata sulle hnee DBD-DB7 (51 veda il testa).
':'~::r:--
I
0
•
'~-'T' -,,~ ~.'
"'" ,
0
I
,
<
~
~~:':{:'0",!'" ,-' t;,"'" -~', _ .. ... ", -, ..
, =1:- '/
~
, ,
cs
';';'~:"'~''';:;:;'.' f·'._." .. ,;I.;r,;r--;·_-r..,
~"
M
<
::';')")' r:',~:-"'.-- - r
""1"lIo,O'T... ,..
fe' Q
-
-I'" C1,'tJ'\I.'':'' ;;('.: "._ .~''''''''':''' ,\"",~"''''''~' .-'
•
~
~
\
! j
l I ,
J
I
142
"..
Capitola 4 ...
.~
".~
1 ,~, 'jt.(
•", ':.; -',?
.Ii'..
\ttiik
. ,.;1;,
HRQ (Hold Request) e HOLDA (Hold Acknowledge) sono rispettivamente l,a linea,~, ~~ie di richiesta d~l bus eli sistez:na e .qu~lla d~ ~ispo~ta. " . .:~ Wi'~'~
I
In fase d.i programrnazlODe 11 diSPOSItiVO Vlene seleZlonato asserendo 1a Imea OS. ',;:; Le ~ee ~OR .e lOW sp~ificano I.a lett~a ~ ~a scrittura del registro interno al dis",:,~fJ pOSItiVO Identificato traIDlte Ie 4 linee dl mdmzzo Ao - A 3 . La 1ettura 0 1a scrittura: ~~~ in fase di programmazione sempre a 8 bit (DB o - DB r ), anche quando il registro \1~ ' ' , lDteressato e'16 a b'It. In questo caso occorrono 2 operazlODl. , .-'" -:;~:~, In fase di trasferimento Ie linee MEMR e MEMW trasmettono il comando alla'~;) memoria, mentre Ie linee lOWe lOR trasmettono it comando corrispondente alia. g'.~, periferica. L'indirizzo di memoria (16 bit) viene presentato su A o-A r e su DBa - DB7.~ (parte. alta). ~oi~.e perb il bus de~ dat.i deve essere impiegato pe: tra.:feri~e il datc> :~, presentando l'mdinzzo 1'8237 assensce 11 comando ADSTR, che Vlene lmplegato per .~i. 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 degli'.~~;'~ indirizzi del sistema, ricostruendo COSl l'indiriz~o su 16 bit e permettendo l'uso del '.:'~~ bUB dati per il passaggio del dato letto 0 scritto.:~~ La linea READY serve a introdurre eventuali cieli di attesa e dilatare la tempo-- ~::'
'M~r
01~·,;
;h-~;
e
\ 1
\
~
d e~la memoria
,I
r.J~:;'
.,,,
"!;ir~ ~~~':-
:,:~:;; ;1.'~ ~Tf:~
·F.f: '~~':
}:':
f~r
~~» '::·:1 -"..
',"
rizzaz~one ~ lettura/~critt~r~ 0 di com~do, de! perife:ici. ,\~t £1:.F 81 notl infine la line~ bldirezl~naleEO~. C~":le uS~lta lD~ca che il canale che sta '~, .-L
::;i 'f-;" ;~~ ~~ts
trasferendo ha concluso il trasfenmento dl tuttI 1 dah. La Imea puo essere portata bassa dall1esterno per forzare la conclusione dell'operazione di trasferimento in corso,
,~
-j'
"&
.:~:
:.c. ,,;,
:",~~# }}~ ~~l ,:~< ,~_~" ..., n comportamento del controllore 8237 puo essere descritto attraverso 2 macrostati 0 ~~~~ 'J}
4.11.1 Funzionamento
)
' 'f.~
fasi:
•
l 1
a) la fase di inattivita, detta anche (idle); b) la fase di attivitil,
:$~!
':~l!, ~t:
,.·,.ij~l :::; ."~I ,li . .••A~ "j;. :;1\ ••••
,-.' .,. ,,, ~ 'J;:~~ >.: '·'iI ..,. .,·,,,1 ... ~:~~.
'''' -J'
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 corrisponde alla fase di programmazione, mentre la fase di attivita. corrisponde a quella iv-i :~(.i i" ....,~I~,: ~.;' ,," detta eli trasferimento dati. ,.,r,i',' .: .',. 0""" . _ · I" .:.<, • Fase di inattivita La fase di inattivita. stato Sr> corrisponde alIa condizione in cui ';I;', ,.:;: . il dispositivo non sta servendo alcuna richiesta, ovvero ai periodi di tempo durante i •• T' .,. .,0. '" '.'.' quali nessun canale ha. in corso un'operazione di trasferimento. .';: . ; "~!i :.;" Quando si trova nello state Sf, la logica del controllore accetta comandi dalla "li ~ ·:Ii , .. CPU, I comandi richieclono: (a) che iI dispositivo sia selezionato (ovvero, linea CS :...~ "" ,
~
.
~
\
I I I ,
,',
asserita); (b) che sia asserita una tra Ie due linee lOWe lOR. L'effetto del comando e
scrivere
0
..)'!
.,.~j
1eggere il registro interne del1'8237 specificato tramite Ie 4 hoee di indirizzo
Ao - A g ,
· ."
'~~:
"
..'
'I"'
~.
.'
..
i.
'.
" , ·, :Ii
Fase di attivita attivita.
Descriviamo rapidamente il significato degli stati della rase di
'~~ 0' ,~:
:\
,r, ;~: ~:
'
':.
.. '
.
?f ?
:~~;:." ~
I~~\"'"
Jf.:-~~~'~:;'
,-,....,... .,', ~~'~~~';'::.'_-----------------I::l..:s::o::tt:::o~S::is::t:em:::::a:.d~,:.' ~in~gr~ess::::o!../.:u::sc::i.:.ta=___1_4_3 ........ ' .'.
..~4'~;"J'.
,
~1~~,· ,i";I1'.:.;-' '.-""~"" -::-
.......~' c••:,:' ':'- ..
k'}l:'>,! . ,',
e;':5":" ~~;~;Y:.;,::
..
r;~ !;\'I;,"'".',
I
I
,"
;~I:~;(,:,;;;"},:{
RESET
;.~~::~':,'~~::':~.,
',::;\',,:<;'.:""'"
_Q
,,,,,',,' ~.?:;v:·:'~"
DRE
,( n
--,=}{\.;>;,.
;~:-!.~: ,:".',.,.:,,' ~':;:''L''''~' :~~'D~;;..:
HLDA
(
Trasferimenlo sinl1:0101HOLD (
SI DREQn/HRQ
(
SO
READY (
)
r
READY
HLDA
S3
S2
SI
:',,'
:~::~ :)/:~~,--:."~"
READY
SW
READY
54
')
Trasferimenlo a blocchi
.
::>'> .','
4.37 Diagraro ma d.i stato dell'8237. 51 rappresenta 10 sta~o eli inattivit~. m~~tr.e 1 r<:·'C . ~:::nti stati nel diagramma compongoDo il ma.c~ostato di attivl~a.: ,La, rase eli attlvl~a e »':'~'.',~vviamente relativa ~ un 5ingolo canale. II pas.SagglO ,all? stato attl~ta 51 h~ appen.a ~ene
1,·:.":~;·"·· aSserita una delle 4 hnee DREQ, In pre5enza dl una rtchl.esta•. la IOgJ.ca ass~rtsce Ia nSchlest~ ...'.:'.., d I b n CPU (HRQ) e passa alia stato So 81 notl che da S4 Sl passa a 1 se I F.:;~;:,:,.:.>·d~,U~~iti~O ~~r~;ammato a lavorare in modalita. Tr~ferimento Sing?lo. Nella m~dalita d~ L:;:· ';:":~~ferimento a. Blocchi, il passaggio a 5/ si ha solo a fine del trasfenmento, Ovvlame~te 1 ":;:.,:: . . cli'stato sono scanditi dal clock e 1a durata. di una. operazione e sempre UD multiplo
,:
s:id:~; ~:rs~og~eriodo.
';~\ "~,.,.,
..,'
:.?:
.... ,
,::,",: .. ,_
~,.'.~.:> • So' Primo stato di una operazione eli t~asferiroento DMA. La logica si ~orta in <~.: .::' .,. S avendo attivato i1 segnale HRQ e VI resta fino ache la CPU non nsponde ,."", 0 }~<>j!. ' ': . asserendo HLDA,
!~;""f:',' ,..
:.t~.:::;',";
;\~,,'
>:.'
i"._
: ,.',',.. ... , .,
.',... ~<'.'.< , •• ..
~
:.:7" ., " ':"
~
.,
.
"',
.
':".. " ;.
..i'
.'
.
.
SI' Gli 8 bit piu signifi~ativi dell'indirizzo Z9 1 vengono ?rese~tati sul bus dati a~traverso i piedin~ DB? - ~B7j al tempo stesso viene attlvato il segnale ADSTB per la loro rnemonzzazl,one m u~ latch esterno.
5z. 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).
," ,
_,.,
"
~
,.
.
.,.
'
;
• S" Viene attivato il segnale di lettura dalla memoria (MEMR)
• S" Resta attivato il segoale di lettura (MEMR quello di sCfittur. (lOW
0
0
0
da I/O (lOR),
lOR) e viene attivato anche
MEMW).
;" ': ..
~".
... :
'
In riferimento aHa Figura4.37. si osservi 10 stato Sw, stato di attesa tra 8 3 e 8 4 . Uno 0 piu stati Sw possono essere inseriti tra gli stati 5 z 0 8-3 e 8 4 attivando l'ingresso
.,
READY. Gli stati di attesa possono essere richiesti da dispositivi particolarmente lenti.
"
,'.
...
".'
0'-
:'.
..
..
?-..
29Si tratta. dei bit (As - Au;) del registro punta-tore relativo al canale,
----,-' ,. ~~~J,~,(
144 Capitola 4 ".:'~_~~~:c..:~ -
-'1:_"
,.;;fJ
•. , .i
""::'.
,,,;.~
\~l: ~~. " ,", ,
4.12 Esercizi
"'J
,)~ . . .. . .. . . ' '; ~;;:' .: Nota - Moltl degh eserClZI propost1 presuppongono la scnttura dl trattl dl pro..",> 'r .. . A bl S· . II d II f . I· 8086 ( '>:1 :" gramma In Imgu.gglo ssem er. I assume dl usare que 0 e a armg la Cfr.. >j '. Appendi.ce D) anche quando ,non si indi~hi specificat~mente ch~ si usa ~na CPU di- ,~,:~ :1 qu~sto tipO. Inoltre, spesso 51 .assum~ dl U5are un miCro a 8 bl~. Convie~e. fa~e, ri"- ;..?:~ ;l 1
fenmento ~1l'8088. ~er convemenza 51 p~o.an~he ass~mere c~e. Il.b~s d~gh mdmzzi \'~\:l :~ sia su 16 bIt. In Oglll caso, per quanta SL rifensce al hnguagglO, Cl Sl'attlene a que\.. .:,~,; ~\ 10 dell'8086. Per svolgere alcuni esercizi necessario aver acquisito un minima di .:Ii,R, ~~ dimestichezza can l'architettura x86. ,<,~: ;; , Un u.ltimo avv~rti~ento .riguarda i numeri c~e espri~~no indi~izzi a con~gura<::~J ~· ZlOlle di bIt. Se non mdlcato dlVersamente sono da Intendersl In notazlOne esadeclmale;.~y t, E ' .. 1 S' d' '1 I . d' I' f . d' 't " '>:"~I :! SerdCIZ!O 4 · b· 1 lLS~~tl a a~cah 1 un mter a.cdeIa . ' uSse, at' (PDepr OunRTPr°alcesl,.sodr~ .con ,<:,::~\- g~ b us atl a S It. b l, mer f aCCla a una porta a t 1 a mmzzo, ;;i, , '', FO!., ~ .registro di controUo (CREG, all'indiriz~o Fl) e u~ regjstr~ di sta.to (SREQ.l ,;:.'t~J.~ '; alllOdlIIZZ0 FO~, A seconda del contenuto cil CREG 1 mterfaccla ha 11 seguente ':';!~~ ;J comportamento. . . .. , . . . :':~d :; CREG = 0: Pinterfacc,la e del t~tto dlsabilita~aj DPORT e malta lmpeden-c ?'·mt '; za verso 1 esterno , I eve~tuale s~nttura su DPORT non provoca -,!~il ': nessun co~ando.~erso 1 ester~o, . ,:"·~l ~' GREG = 10 P~terfacc~a e abl~l~ata a funzl~nare a controllo dl pro~r~aj"",~,~ ( GREG = 2 l'mterfaccla ab111tata a .funzlonare S?tto controllo dl lnterru-. ',:'p'! zione e genera un'interruzlOne per ogm carattere trasmesso. !.N\
e
H
e
. .
...
. , . '
.:.~~ ~
EserclzlO 4.2 81 dispone di una CPU a 8 bIt con spazlo dl memona 64kbyte. n, '!,~"\IR J sistema in cui es.sa inserita p~eved~ un dispositivo di ingr~so ARRAY..IN ~ostituito ',:~~ f da un vettore cil 1024 porte di 8 bIt. Le porte sono contlgue e vengono vlste come :f)~ mappate in memoria. La posizione di mappatura (l~indirizzo della prima porta) puo \~! · esser~ c~biata. A tal. ~e il programma legge la por~a:.·di ingresso B..AR (indirizzo ,-~~~; ~ EO), 11 cu~ contenuto mdica qual~ deve essere 1a pOSIZlOne della rnappatura fino a:;~\r 'dii~ ! nuovo ardme, secondo questa cornspondenza:
e
.' ('('It
B..AR = 0 mappatura del dispositivo di B..AR = 1 mappatura del d~spos~t~vo d~ B..AR = 2 mappatura del d~spos~t~vo d~ B..AR = 3 mappatura del d'SPOSltlVO dl
ingresso da ~gresso da ~ngresso da lllgresso da
1000; 2000j 4000; SOOO.
In base alla Iettura di B..AR il programma predispone il dispositivo il modo che 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 voluta. 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 mappatura di ARRAY..IN.
.' ~i~
;,.:;~,
:
. "i;~ "~~
«:11 ,~':1
. ~j( .';:,j ··..
\1
':' .."
~'f i],' '~" ~'.:
:\J
'.'~
)
"'.!'" >i'\f·!
,,~~h~"·:, ;
•. tf",,~!., ::",
I!i'!.....·~~ ,. ~:{" ~.-. - j :i(j.- .• -.' ...:
.
~J2~{W~'>:_?,
~I::I'::S:::Ot:::t:::O:Si:S::te:m=,,,:di:·..:i:n~gr:.:ess=o::./!..us=e::it::.:.--=1..:4:5
----------
'.~}"''i:'''j''''':;
·.,·,,".~r·'"
.' f~~,c.~;:-:-" ,-hih",,~l'~"" if':;:}W!l'ti:"".' ,t':"
1
:
~~ff.4r·:~;};} " .. ' "I·., 'E.,"'''' E' rCIZIO
4 • 3 Si costruisca IJinterfaccia per un bus dati a 8 bit, in grado di pilotare )~.t~~t~~l~· s:scite digitalL Si in~ich~ 0 < x' < 63 it numero d'ordine del~a generica usci~a. :~'~\Cr.('f64. tta.re l'interfacCla 51 tenga conto che essa deve essere gestlta da una routme r;~:'~·~"~::-"~Nel proge II d· chi t tt·1i t L t· d "\~~):::>~""", t a. contro 0 1 programma e arna a come so 0 speC1 ca o. a rou me eve .',~';:;;,'.,:.·"peran e I ·t d· ·tal rt d I O l d del contenuto di ma 1~lD;V;i{: rp.odificare la so a USCI algi e X , po an 0 a a 0 a secon a
l;%S~.:j):,,:~t-
~g,~::2~:t'~,..,
\~';:--;);;;":"" ~.X~:\··
.
i hiamata: ConvenzlOne d c
.
'.. . ;~t>;~;~:\': ::; ·~?~ii~':'" , ; .
MOV MOV CALL
1 Indica se port are a 0 CX <- x
AL, 0/1 CX, SETBIT
0
1
..., .
,~:.\:~::.;'" Esercizio
4.4 11 driver del Pa~agrafo 4,4.1 ha l'mconvemente di avere una vanablle a !;!K:'j:,'/;:;';"corrnine (BUSY) con l'esterno. E noto che le variabili a comune sono potenziale fonte g~;;,S~"!'" di malfunzionamenti nei programmi. Si modifichi il driver incapsulandone 10 stato ,fj,'./;.:''l·;:....... . d·fi· I Itt d 11 t t t ;:i~::}>i>::.,:iilr~~terno_.e preved~n 0 una speCI ca routme per a e ura e 0 sao s esso. J~n:::.::;,(:' ·Esercizio. 4.5 D driver del Paragrafo 4.4.1 ~uo accettare un solo co~~do (chiamata) ;.~ ..... di trasferimento aUa volta. Per questa motlVo e stata ogata La vanablle BUSY, come ;~i.~T;~:~':':;·; una sorta di semafQro, Se la routine di inizializzazione viene comunque chiamata :':>;",':;:,,: ::'mentre e in corso la stampa, si ha ~n disastro.. ~i analizzino Ie .co"?,segue~e che '!';,::.. ,~.'~',. "OSSODO risultare. lnoltre, sulla tracCla del1 lesercIZlo precedeote, SI dia al dnver la (~:::~,~>' Possibilita di rifiutare la chiamata , dandone indicazione, se gia occupato.
H>: "::,
P. _ . . .... .. . \·p,/..":,, Esercizio 4.6 Si dehnel 1a struttura dl un dnver III grado di gestlIe una coda di ~~:(~:>~;:'~ c'omandi di trasferimento.
Ji~:.'.>~: ....,.
Esercizio 4.7 Si progett.i un 'i~terfacci~ parallela per un calcolatore a 8 bit che legge I!:~-:': da un bus esterno a 32 bIt. Umterfaccia cleve prevedere un comando , trasmesso con ·:~F::;.i il registro AL, codificato con un numero da 0 a 3. Sulla trasmissione del comando ~~:0/,,':~'''' l'jnterfaccia legge e memorizza i 32 b.it (4 byte) esterni. L~ successive 4 ~perazioni di :/~:.: . ,lettura (IN AL,. xx) devono portare III AL ~rdinataIDente 14 byte a parlrre da quello !+>.:'" "" che state speCIficate col coman do. Esemplo: .".
:tS':;.. ' l~f::
~::::: .. i~\.
!:;':::,:" ~>:
{~:> ~/<;; ,;~,,;-
.:
..
, ..... ";.. ,.
,:<"
'~ ". ...... ;~;
..,
\ )
I \ I
1
.
f:~1:;~/:~:~,
'."; ,
I
e
MOV AL. 2 OUT xx, AL IN AL, xx
AL. xx MOV AL, a OUT xx, AL IN At. xx IN
\ 1
, ; comando lettura byte 2 ; lettura byte 3 ; comando ; lettura byte 0
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 selezione del byte. (Si assuma che l'interfaccia sia all'indirizzo 70). Esercizio 4.8 In riferimento a un rnicroprocessore con bus a 8 bit, si progetti un'interfaccia 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 esadecimale.
1
I l I
~ ;.:<,
•
",:,r:"
'j'
I
146
!
:;i,h
'm ""
.;
Capitolo -4
.~
'~'. ~. ,""i
"I.'
<~' "1' 1 :Y"
''f,R" <
"
-:·1,-"
I \
I \ II
,
Scrivendo un byte in R , l'interfaccia si predispone a generare un'interruzione. L'interruzione cleve manifestarsi solo quando sulle 8 linee digitali provenienti dall',esterno a.~'pare un~ 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 cia parte dell'interfaccia stessa. La riabilitazione dell'interfaccia alia generazione di interruzioni si ha solo a seguito di una scrittura in R.
)
I 1
,;V'
:;':!
]'\0 :<,/
';i~A( ::/;/ I~'ii !:~'\ ~
,';4 ',
'.~~ ~,~
I
I I
.::: ~
i:,...
Esercizio 4.9 Per una CPU a 32 bit si richiede che il sistema di interruzione funzioni .J~ ':~," in questo modo: sulla ri~esta di inter~uzione lao CPU genera un cic~o di ~NT~ e, a :,:.:i: 1 Program Counter non modificato, legge Jl bus datI ed esegue come un lstruzlOne 11 suo ,;~~t ~:\: contenuto. ':;~f ;:,' Si definisca il tipo di istruzione che deve essere presentata dal mondo esterno. .~ til i'~' ~ss~en.do. che il cam~o del co.dice di operazione ~i un~istru~ione.8i~ di 6 ,bit.e. che Ie :,;,' Ist~lO~ di salto ~ chi~a.ta.d,l sottopro~am~anser:m~ gli ,altr1, bit all'mdInzzo di ':l~ }~:,. destma.zlOne, quah sono I limItl dello SpazlO di memona III CUi puo essere allocata la "~.~~l ~~::. p~ima istruzione delle routine di interruzione? Che tipo eli istruzione cleve concludere ·',~U i:!(' h~, routine di interruzione e che effetto cleve avere? . :i~ ::,~/
':Jt
:'1.
,.
.
., ,
,
':.\~ :~:~;,:
Eser4;~z~o 4.10 Un calc.olatore con b~s a 8 bit ,Pilota un'mterfaccla dl mgresso a 8 bit, '1~ ;~> che eSlblSce questo funzlonamento: Vlene contmuamente controllato 10 stato delle 8 :'~~1 ::1'< Hnee di in~esso e com?ar.ato col co.n~enuto .del regi~tro J:lEG presen~e suIJ'int~rfaccia "'~l' :;~'; ,stessa; se II confronto mdIca the gli lllgressl sono dIVerS) da REG Vlene assenta una -:::~ ~,!y richiesta di interruzione. .~~ ,::,:. ~uando.la C~U le~e gli i~gressi, .il ~oro st~t? viene ~opiato in REG e la ri~liesta di .::rJ. <~:~i mterruzlOne Vlene disassenta (la nchiesta cll mterruZlOne cleve restare assenta finC? al '....~j i,(: momenta della lettura, anche se nel frattempo gli ingressi tornano allo stato prece-, .~~i ?~t) dente). ':·~,~~ L'interfaccia prevede anche un bit di abilitazionej disabilitaziane della generazione ';~~~ della ricbiesta di interruzione. Tale bit viene comandato dalla CPU. Si assuma che ,~~i ~YB; I'indirizzo di base sia 240, :I:~~ ~~!i . .Si ~rogetti la lo~ca deU'i.nte~accia, Si,sc~iva il testo Assembler della routi~e ~i)~ :;?~: 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. ~ ,~r
,<¥ .A
'~(t
I I
"
.~~J r,1; :""" ,,;~,
I. .
f
"rt
....
·
Esercizio 4.11 Si analizzi il comportamento dell'interfaccia di Figura4.38. In par.1:~ ft{, ti.colare. si tracci il 'possibi~e diagrarnma t~mporale, pe~ ~ sef?nali DAV 1 D~C e INTR., !:~i~ ~',\~ 81 tracc) la parte dl rete dl coman do del flip-flop dl abIhtazlOne, facendo In modo che '\~~~~)I:'~ alratto del reset di macchina questa si porti in stato O. .':\',\~ ~~r': "~'~
'I, "~ I",: "
:'J ' ,
.
,
.
"
4 gruppi di 4 linee CiasCUDO, indicati come GO, Gl, G2 e G3, L'interfaccia deve
'''
W... \ {,::
~ Im~leg~mo'Y~
in Figura4.39 presenta 16 linee di uscita. E previsto che Ie uscite siano divise in .~
~sser.e costrUita ~sando ~
'j,~,
~"
t, :~)
latch da ~ bi~, ll1,mo?o che I gruppi GO ~ Gl ;;. il pruna latch e I gruPP1,G2 e G3 l-:nPleghl~a 11 secondo latc~: L'lllterfac~la. Viene ::~'.:' h:, camandata trasmettendo il dato (4 bit) relatIvo a un gruPPOj CIO deve avvemre senza ;'~l~ ,,:'J~ ,'.~ d" che cambino configurazione le 4 linee dell'altro gruppo posta sui medesimo latch. A ,¥.:!, /~l{ ,}./,'
"'.
~' "1 ,j ,·
,. il'u.: ~
'
"
"
"~:'.
!x h:",:"' .. ",}, ~
II sottosistema di ingresso/uscita
i<, '-.,. "".:·,'
147
••
""
V",
" " ", '., "
..
/,:"."
/;,:;.
\ '; ..
,..
,
•
!;<".
'U~ ~'T\
!'
-
3 7 4
"" ""
.,""
o.
AI. 'UlJ'~ltIeo
..
m
:.:" ,
.~
.~
....,,,,
.
";'::'
i:~).~,~,
,:" . ::/ ':.',
.
• ',.• ' • '(
.~
r
:,: . " ,
':', , ',;f.~/ .'..
.',.
~.
.~
.,::".:'
.:,~;:--
.
-
~
';'\'::',,';' /,~.~:"
'
•
••
';-~
'?
• • '/1'74
•
""
,:',
"'.
A~Ul"t~
••
:',::, ,:.:',. 'Figura 4.38 Interfaccia di uscita castruita can componenti standard (Esercizio 4.11), ,:,":',,'
_. ,. ,
<-:">:::":,,,, , "
;~::;:,,~{''''tal. fine l'interfaccia de~e permettere I~ Iettu,ra dello stato delle linee di uscita (Ie y~'.;;~·:·,.;·um0e che fanno fede)} In modo cbe 4 bit degh 8 trasmessi siano identici a quelli letti .<:/::'::' suI gruppo non modificate. Si assegni all'interfaccia IJindirizzo di base FO. i:",.ff, ',:. -.' Si scriva la routine DRIVER: che pilota l'interfaccia a centrollo di programma, :,:'; ",:." chIamata secondo questa convenZlOne: . ,
)~I,)~~~.-.;,,-' ~;:t''';'>,:!" ,
., "
,.
.
mov AL, <4 bH dl un gruppo, posizionati a destra> mov AH, ; numero del gruppo 0, .. J 3. call DRIVER
~'~;~,L :.' .:". '
;:,~:;V,:.I~. ' i~,:,~:.i/'·"
:'~{/'~'.':'..
,I
:;t~·· -'
81
~
·,',1.'.· .. '.,
80
•
,~::.{
!
,
,~::-·('.-'~'"
lORD
~y:':t:(':,:',
I
IOWR
~.f:',,.
:,~\'\":' Fig,.ura 4.39 Schema delFinterfacc,'a per l'Ese " ,rCIZIO
,","" '.', .
:>'''':,,,, ,
:.:.
GO
•
GJ
, ,
G2
,
G3
, I'
"
di F'
412 19ura..
,';~,,~ . . .
{
! ,.•
.'
Wi,"""',' .. .... ... , :::;'t: /: E' ~
"
,
..
.
)_:;:i;', r:r~,zlO 4,13 Un mlcroprocessore con bus dati a 8 bit (8088) legge il valore di una
ezza fisIca ch~ vana nel t~mpo attraverso ~n convertItore ~~oglco-dIgIta1eche rnis ce ,-,"(,i' -' e il m I,a converSlOne su ~2 btt, II ~ata letto e un numero POS~tIVO C?ffipreSO tra 0 ~:,.:< ,,',>::, :' asslmo rappresentabIle su 12 bIt. Una lettura dal convertltore nchlede questa "'i":"'" sequenza'
.z.:,,:;-(y Jo
{9}>~:::...
:', ,. .
'~",,1,~ ,',', " ~r_'rf;··" ·;o;'i--'i,,"~" '.,,,~.:'l'
.,
~~ 'if,!:1~:.
,
"
, I',
,,,
, • ," I
I'
"
148
Capitola 4
''9
'~I' ik< "U:
\' ,;,,1
,;'.",,, 11
',~;~'
MOV AL,l OUT CAD. AL IN AL, CAD
IN
; comando conversione (ipotesi: risposta istantanea) ;_-~ ;lett-ura 8 bit menO significativi .-.~ ; e dei 4 bit piu significativi (a destra in AH) !:~
AH, CAD+l
. ,-'
'".j
n valore 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. "'~j Quando il valore letto e zero, allora BO= 0 per 100 ms e BO= 1 per i restanti 900 ':'~: ms. Quando it valore letto e pari al massimo, allara EO= 0 per 900 rns e EO= 1 per ·:t: , d'1 d are bb ero Ilioga a BO = l'm rna d 0 proporzlOn . al e' '~;,Y: ,~ i restanti 100 ms. Valan' mterme. (I'intervallo di tempo in cui BO vale 1 cleve essere discretizzato, in conseguenza del ';~~ fatto che 10 stato di EO P,uo esser~ modificato solo.ogni 100.ms), ,<~4 . .n ~croprocess~re dispone dl un co~tat~:e \'~tertJa~ hmer) ,che gene.ra mterr~. ';1~ ZlOm ogm 100 ms. 81 assuma che CAD Sla all mdmzzo dl I/O pan a 70 e che PW Sla .~"~ II" d" A O ' ·1, a m .lnzzo.. ., . . .,' " .\:;:.r,;: 81 progettl 1a routIne dI mterrUZione che, per It genenco penada d.i 1 secondo,' :';~t1 . id ' t 'I suII e h"'~ pllota BO ' rn d rna 0 d a rappresentare a me'la d' e1 vaI on' d e I segnaIe camplOna -"1~, . " S' , I d'fi A bl dll ',;:10 mterruZlOnt del penodo precedente. l scnva a co 1 ca ssem er e a routme '\·i~.
,~~''''t
stessa., :,,;~;tl Esercizio 4.14 A un calcolatore con bus dati a 8 bit (8088), soDa collegati, attraverso I'interfaccia J di Figura 4.40, 64 ingressi digitali, numerati da 0 a 63 (indicati come ";l~ DIN), e 8 liscite digitali (indicate come DOUT). Ad intervalli di tempo predefiniti, .-~::j il programma esegue la rOll.tine LOOKUP che: (a) esam~na 10 ~tato degli ingres,~i' '::'Vffi digitalij (b) stabilisce se, nspetto alia precedente eseCUZlOue, C e stata una 0 pm ' J::,i variazione degli iogressi digitalij (c) trasmette sulla porta di uscita DOUT, nel caso ~ in cui ci ~ia stata alJ?ena un" va.ri,azi.on~, il nu~er~ d'.ord,ine dell'ingresso digitale ch~ J~~1 ha camblato stato ,\m presenza dl pl1J mgressl vanatl, vlene presenta,to su DOUT ,II':~~ numero d'ordine pm basso tra quelh cornspondentl agh mgressl vanatl; se non c stata alcuna variazione vengono trasmessi tutti "I"). :<;~~ LOOKUP restituisc~ ~ BX il puotatore (~ffset) ~ una posizi,on~ d~ ~emoria ,jy~ individua 64 bit consecutlVl (8 byte), contenentlla copra delle vanazlofil d1 stato degll" ·ft~ ~ngressi, ~i~ precisa~ente, c~ascuno di ques,ti byte deve valere 1 se il corrispondente',f~~ mgresso dlgttale e vanato, 0 ill caso contrano. ",\~~ Si richiede: (1) il progetto deU'interfa~~a (de~e prevedere un latch p~r l'uscit~':~r.~ DOUT mentTe non deve prevederlo per gh mgressl DIN); (2) 10 schema dl flusso dl' ,ro'\1! ' L ' d"1 mlZla - - I'lzzazlOne , deil" tn-"f.. '''1 LOOKUP; (3)10 schema eli fiUBSO di INIT KUP, routme terfaccia e ~i LO 0 KUP (se~pre che serva una. qualche inizializzazione)j (4)il testo 34~' Assembler dl LOOKUP; (5)11 testo Assembler dl I N I T L K U P ' , : ' f , l
',ill!
,
e;t
ch:
Esercizio 4.15 ~i cO,nsi?~ri l'interfaccia schem~tizzata in Fi~r~ ~.41. L'interfaccia '~~~ ha una porta datI all'lOdlnzzo FO. e una porta dl c~ntrollo ~lllDdlflZW ~l,', ':;~}i: Scrivendo i byte sottoelencatl sulla porta F1 81 determma 1a modahta dl funzlo~: ..;, namento: ,. . . . " /,~' ".'~~" 00: Interfacc~a ~n ~scitaj sema generazlo~e dl 1~~erruzlo~l; . 01: Interfacc~a ~n lD~esso; senza gen~razlo~~ dl IDte:ru~lOm; ,,)~ 80: Interfaccla III Usclta; con generazlOne dl mterruZlOm; ':!:il , , ' : ~;~! 81: Interfaccia in .ingr~ssoi can ,g~ne~azio.ne di inte:ruz~onL Se l'interfaccla In modalita d.i uscIta, a ogm scnttura sulla porta .dab, 11 b~te ',1-, viene trasmessQ all'esterno (l'interfaccia, deve prevedere un latch) e vlene assento.f.~}
e
)~ ..I
",~'1;'
,
WS:;",\,~
-.
--:'.;"'~~',.
)
-!'i:':!"1! ,f: . "".111:;.';., ,', ."t;..',c .•,;(~, ... , _-
......
.
'j1:;~.':,:~·.:
,', '.
. ':j"
II sottosistema di ingressofuscita
149
<,,;.' . I."..
',.
• j'. • .' ,;>,r(,~'",
"."
'
,
','
,',
l:.:~.....
20
Bus Indirizzi
..
~::,"<.:!./< :.~ ", ..
~
Bus 'Dati (DO-D7)
6
I
.,,~,
lORD 0 lOW -
,1: . ,'-:' " , :~.;' ,
. I, ','" '~';:',
1
440 Schema dell'inte f ' I ' E ' . 414 19ura ' r aCCta per serClZlO • .
-I.
~(':,"
, il'comando X (impulso). Sulla risposta del periferico (impulso Y) J'interfaccia cleve ':h'~::::·,":.-:' asserire INTR se abilitata la sua generazione. La scrittura del prossimo dato deve ',~:,;':,",,",":',', ,- far disasserire INTR. In ogni caso Pinterfaccia deve prevedere fl' -fl di t t d ,'"" •... . un Ip op sao a ','{,'>;/;,. asserirejdisasserire au X/Y, in modo da poterla pilotare a controlla di pro aroma ;>~; "",': '...~':'. ,Se l'interfaccia in modalita di 'ngress il ,£, • Y dgr , ·k'.·~.:, " . _ " . . I 0, perllenco ":. ,,:.. ' '.' ' "dato all'lllterfaccia Se l'interfac 'a' 'ab"'t tall" t assensce ' , qUaD 0, presenta ";~"';,.. ',.: .. "un '. CI t: llaa rnerruzlOne,VleneassentoINTR :'~':' /"," che resta in questa stato fino alIa lettura'del dato ( , ' 'II tcb' , )' r:::', :::." , . . . nOn I:: necessarIO I a 10 mgresso ' :~:;:\. :~:, ",:. i' Anche qUi CI .cleve ess~re un bit dI stato asserito/disasserito cia Y IX, in modo cia pater controllare l'mterfaccla da programma, Si progetti I'interfaceia, Si seriva 'a routine OUTPROG (chiamata con BX = off;j;:::~{; ::-,:set dell'area ?atI, = nUffi:ro caratteri da trasmettere) che trasmette gli n caratteri ~,~\!;'i;':{< controllo dl pro?ramma. S: ~c:i~a ,Ia ro~tine a controllo ~i interruzione OUTlNTR, ',~",;~,';i~"':)'c ~.ompre~a la relatlva parte cil inlZlalizzazlOne, che effettua II medesimo trasferirnento 1+~·:·}.:· .ed e cluamata con Ie stesse modalita di OUTPROG,
,t'<:: ': ,'
e
e
"}","-'.':",:"
:':y"',c' '
I
~DOUT
Y'
<
.
DIN
,
"7
?""",
," ' : "";'",'
)
I
I \
ex
>a
,\ ,
,~;:C':f::;}~":~;;,
:,l~i~~~~'~~':"'"
::~;":;,~.~"~::'\:,,<' ;~~~~\,>.{.>~.
~S};iij;?',·
Bus lndinzzi
,
,'"
,
Bus Dati
..: ~~l~t1~~0\,:::i;:,'" , ,~j;:;'it',~;<,,:,
lOR D
r~li;-g-J,>".-; '.
lOW ~
!NT
"r~~' ,., :(:!'~~~'_~~~~'',:,:'~:.:,
~f;-i~}::t~;:.;;';'~:" J:~[%'\~:~F"
,
~
r
la
DO-D7
I/O
x
1
y
"
~J\~:\:~~/ '..' "-\;.;;",,,_, ·Figura 4.41 Scbem', dell'inte face'
\
per
I'E' , 415 serCLZlO . .
"
~;~~t:·.~:·~~,~ESerCIZJO 4.16
Su una porta pa:ralle!a di uscita a 8 bit, i bit PO-P3 vengono impie ati (;\\'-~'f,:/~~:.>:' p:r tr~mettere 4 s~gnah temponzzatl di periodo 4 s, PO asserito per il primo qu!rto (.,U~':~':~::\~~:;" ~L p~nodOI PJ. per 11 sec~n~ol P2 per it terzo, P~ per il quarto, I bit P4-P7 vengono ~~;ri:~>\Y.'" ~atl per, trasmettere datI eli alt:a natura, che qw non interessa. Per generare Ie forme ,;~:::.,t:\ ~onda Sl de,ve pr~vede:e. un dnver (D~_03) risvegtiato dalle interruzioni generate ';~f;;-" /;;~'''h. i a uno ~peclfico diSPOSlttv~ (RTC) al ntmo ~i un'interruzione ogni 100 mB, n driver ':,~,.~,\;::,;:'::,"~::¥" n,q?estlO~e non deve modlficare 10 stato del bit P4-P7 €Qme del resto il driver di )~t~:-~.:'~:':':',.~stlOne dl q~esti bit (DRV A7~ n~~ ?eve modificare i bit'PO-P3', DRIV e DRIV-47 t~l'.";i::';·.,. no se~aratl e non hanna vanablh m coroune. DRIV-47 attivato da una specifica
~t~~~.T~"l~~rruZlone, ;'tmJ\("\'~' ':"
e
e
I I l
_03
J
" I
,:~~,:
F,l....,,
~,;':'
I I
150
')1;)'..
Capitolo 4
1\,:It,':
";! ",.r ",
". . '!~ '~Ilt
."" '".:'''
~i:'·. ~i-"
~.; .. -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 malfunzionamento potrebbe verificarsi?
"I~
'.h.~
\
,'-",""
<:,;.
.Ji",I,.'l; :~f; .•
'''I ,; ~','
!i'::'-
"'," ~:..:,:
" :f.;}
"~,, .".oi: '
Esercizio 4.17 Si dispone di un micro COD bus dati a 8 bit. Il sistema presenta Ie due .~;~ interfacce leO eli Figura4.42! rispettivamente agli indirizzi 70 e F2. All'interfaccia .. :~·,W ,}~~~: r vengoDo portati 8 ingressi digitali. Vinterlaccia 0 pilota 8 LED. Ogni LED e logi- _~~, ';(X camente associato a uno degli ingressi digitali letti attraverso L Quando un ingresso ~Jj,~ ;~~~
\
e basso (Zero logico) , il relativo LED non cleve emettere (e doe il catodo deve essere
)
I
'!~~ ::T;:~
a Uvello di teusione alto). :'}q '1;:< L'interlaccia I viene letta da programma e da programma viene trasmesso un byte ..."m'~;r';'?; 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 .:~~ nOD debbano normalmente occuparsi dello stato degli ing.r~ssii Pi~terfaccia I asserisce ~~~1 ';~?: Ia n'ch'les t a di'lIl~rruZlOne -' IRQ quando almeno uno degli .mgressl . ;.jl. "~'"" . passa . . a 1. . . . ,::;;:/.~D.; La richiest~ IRQ determin~ l'attiv~io~e di una routme di ~ervlzlo che., .npetlt~- ~~,:~9 ~li, vamente, legge gli ingressi .e scr~ve Ie. u.sclte l~ modo ~e quest~ nflettano gh lDgressl~ ""~~ ~1~\ come detto sopra. La routrne di sefV1ZIO dell mt~rru~lOne terrruna s~lo dopo che tutti .~ ~~~~~ gli ingressi sono tornati a O. ffiQ deve essere .dlsat~lvata.dalla rou~me stessa (~suo ":'?~~ ;<~~ ingresso, prima di quaiunque altra azione) e v.lene.nassenta ~l'u~clta ~a:ua routme. -:",~f.~ :~;~ Si disegnino gli schemi delle interlacce. 51 scnva la routme dl serVIZI0. '~~!~:~'<
i,;:
\
!
:I
.. s~ 10
) I
IRQ
• •
DO D'l-
10
I I
lORD IOWR -
17
';'::~l :~;!;
..
-,.
• •
0
~
.
0
\;j;~ .:~ .~ ::tr*
~. ';~"J . !$II \~~~
,'''.~ ~~~J) ,,~ ·~i~
::~;~~ ~~1~
t,
, ~"j~ .~~r
'
">:f:i
~
-
•
'·15."-;.
Bus Indirizzl Bus I all
· "."
'lIi~ };~fh
:,~..~t' ,{;;o:
ttt:
Figura 4,42 lnterfa.cce dell'esercizio 4.17.
,,'cr ~",
..... ",. , C. .
~.
"'. 'C
~~~"
,,
e
\
l 1
I
:.,
Esercizio 4.18 A un micro con bus dati a 8 bit collegata 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), In,,'f~. presenza di due richieste contemporanee quella di numero pili basso prioritaria. In:i!:;~\ 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. ch~ ,~' I'inter~acci~ consenta?i m~cber~~selett~vament~ una? pi~ richie~te di interruzione. "'l'~ SI.scnva la routine dl serV1Z10 dell'mterruzlOne (In hnguagglO Assembler) che ~1~~ 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 :~ti
e
1.1):,
... ""
'>""'l
,~'
,;}~~R:
'ct\ll :.~., .' ,",."
......
,,~¥tt
;~ttli
· ..,
,~#
'.'"f.-
j~J
.~,,,,
.~::; -~,:· !fa' "f',.
i","~
J.~~i
)f..
,~g~i
''.';~~:~
' ."
l,,~
. :/ , ':y_ i .;,.; ,
:),
,,
:>:~'~'
'
Il sottosistema di ingressojuscita
c, ,_, ,
' , ',
151
"~ ;.
.;;
","
"",
'
;::: -
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 suIrinterfaccia occorre memorizzare I'avvenuta richiesta.
;'.! co, :" ',"
. ' }/-'
:.~ .",
X" ' ~;~'~:"
~.\!:,
Bus Indirizzi
",
Bus Dati
"
-lORD
<::' .'
;, ~?:
.
, I
'•.
GO Gl
G2
~
G3
~
IOWR
-:-::' .""
:< . :t::~ ':'.,' .
"Y'~'" ;,;. \
•
.
IRQO IRQ' IRQ2 IRQ'
IRQ I
--1
..
. Figura 4.43 Inl;erfa.ccla dell EserclzlO 4.18.
,t:I";'~< \;t: ~ ~,:...~:"
.. ,
~(~,:,
Esercizio 4.19 Un micro con bus dati a 8 bit (8088) presenta l'interfaccia di uscita ~(~~.:. di Figura4.44. L'interfaccia all'indirizzo 40. Essa deve essere pilotata in modo tale <:"""'" che un solo LED alIa volta sia in conduzione. In particolare si richiede che i LED ~~>;'< vengi:LDo pilotati ~icli~amente ~ che quelli corrispondenti aile .huee ,delle linee. pari (00, *:;'~<:: .' ~2l O~, 06.) r~tmo In c~nduzlOne per I.sondo, mentre quelh corr~spon.dentl.all~ huee ;rt:;~ " ,dlspan restm.o m conduzlOne per 2 sandI. Per generare Ia tempoflzzazl0ne 51 dIspone Ji:'i; ...:.' di dispOSItivo (contatore) che, una volta abilitato, genera un'interruzione ogni . 200ms. n dispositivo in questione si abilita scrivendo 1 all'indirizzo (di I/O) 70, si ))i/:::" d.isa~ilit~ ~crivendo a al rnedesimo indirizzo. Si assuma che inizialmente il contatore :j~'l."···,Sl3 dlsablhtato.
e
un
~',~.,:
~gj})i:;:,. : 'S~ tracci 10 sc~em~ di fiusso e il teste assembler della routine di servizio dell'in-
r-i>J: '. terrUzlOne che gestlsce il contatore, compresa 1a sua sezione di inizializzazione. ..
i!'"".~I._.
"".<:r:;.":<.. ...,..' ·1~" '
.,.
""
".(:~,,~
~'h"·"'" . '.. , "~."
h.'~'
'"~t;\·I; :;n",~, '-.,
::~·:~, ~'
+5v
... .
.
r'y-.. . · ~,'
, .. ~-, ..l<.','".
,,...., ..•..,:.",
~."., ~
C'··· '.',. ..
"t-"
" ",'.
,!~~,~,' ',:,
."',". ' ~'c',·.·,
'
'"
Bus lndlrizzi
",,
l~··:""·
:.~::, .:." .
e
Bus Dati
l;,t;'~;.'. " ,:;~:";; ~ - -~- "..
..
.'
t~1g:,:,~:i:, iiS:;},.;: . ,",'... ., "
#:~~::~; -. r .".'
,~.
J/gt', •.
,
~.,,
"
,
lOR D lOW
-
"...
E
•
,c Z
06 07
'.
i~i~i:;!~::" sercl~lo 4.20
:{~t; . . :·INTA) ~"""1i''1 ..,. wi' .1):••
1:"', ..... t>: .. , "~.,,, ~. ,,' .".~' I'" • ~"';J<~:r
..
,~
+5v
Figura 4.44 lnterfaccia dell'Esercizio 4.19. '
;:;.\'" ·Z~;t.t,,·. '·!...·'··..·, ,". , , \. .q,!':',,;.;j' ~W:'f.' .:'....,.. . i!~'t,:'.~; .-. <:I
.'iE'·~~".
"
V
,
.
•
0
..~., r
.
00
III
Una CPU a 8 bit risponde aile interruzioni eseguendo un cicIo (di cui: (a) asserisce in segnale INTA verso l'esterno e disabilita il sistema
"
" ::, ,I , ,,
,
",
" ,I
III. :"~
,
"I \1
I
'~I
i"
152
Capitola 4
di interruzione; (b) legge quanta viene presentato sui bus dati e 10 esegue come
.~~
un'lStruzlOne. :.'-~y 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 ~:;Jt
l'elfetto die
:;', "-~11
- salvare il PC corrente sullo st~ck; - eseguire l'istruzione aHa locazlOne 8n. . }~ Supponendo che la richiesta di interruzione del periferico (IRQ) sia un impulso _';=I~ eli ~reve. dur~ta, pr~gettare la logic~ di in~erf~ecia rispetto al t~attarn~nto clell'inter., .)-:~:l ruzlOne ill d3J.sy cham, per un genenco penfefleo, come schernatlzzato 1n figura. Dev~' ....:.:il1 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. . , '~r1~;~
:/~
"j?
IRQ - f l . INTA INTAI
1-'--CPU
1NTERF
';;lJ] .~~~
.,-{'~~
lNTAO
- --:
INTR
+Sv
Bus Dali Figura 4.45 Interfaccia dell'Esercizio 4.20. A sinistra il formate delPistruzione.
''-;;'';i"
/r,u
'::~1
<.M ':'::f' :.:
,-·1'i~
H~~
", ":~S
. /;;¥j. ,,~~?,l,
.. . . . .. .. Ese~clzlO 4.2~ 81 deve progettare 1a 10gIC~ cit u~ controllor~ clI. mterrUZIOnt pr~gram~ <_:#~ mablle (PIC) tlPO 8259A. Lo schema funzlOnale e quello dl Figura 4.46. Le hnee dl .,,~
interruzione in ingresso sonG IRQOI IRQl, .. , IRQ7. In. presenza di almeno una li-,:±f~ nea IRQi asserita, il eontrollore deve ~serire IRQ. La CPU risponcle aWinterruzione ·,;'W;~ 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 ~~~!f riservato agli 8 vettori di interruzione. 13 bit meno.significativi c.ontengo.no iI numero :,;,~. d 'ordine dell'interruzione che. vi.~ne. se:yita. ~el f1s p o,ndere all'mterrUzlOoe la CP~ :;1~~ scala VT di 4. In presenza dI' pm t1Cbleste attlve, sull INTA, deve essere generato II -:t~ VT relativo a quella pili prioritaria (IRQO ha priorita massima , IRQ7 minima). ..:_~~i . Si. assuma ch.e il bus dell~ C:pU s~a a 8 bit.. Per semplicita si assu~a che I.e i~ter. \~~ ruZIOru ~on car;nbrno durante il clc,lo dl ~TA. SI assuma .anche c~e la smgola nchlest~':1~_~ venga dlsassenta per effetto dell esecuZlone della relattva routme. II controllore e J~l all'indirizzo lFO. .!$'I·
Si progetti la logica del controllore, comprensiva della predisposizione (su coman-.. !(PA
do della CPU) della base dei vettori di interruzione, del mascheramento selettIvo delle ,~;f"-' interruzio~i €. della pre~entazione di VT suI bus clei dati in risp~sta a INTA. . ,":.:~!;~ Si scnva 11 tratto dl programma ~sembler per programmare Ii controllore.1n modo ,..~
che la base dei vettori sia all'indirizzo effettivo CO e quello per mascherare/demascherare't. IRQ5 lasciando gli altri mascheramenti invariati (la rnaschera corrente cleve essere ::~r,," ottenuta leggendo il controllore stesso).
;;:;
;':;, -':!: -,A
',..
~"tt"
-
,,,.,="3;';1:
_~1l-"'"''
~:<~;';~':
:'±'..~.t;~ '.,'
,.:..'::;, I; ""'"-, '......c •• b _ . _.
;~5J.;Y}~:\;__------------------:.n:..::so:::t::t:::os:::;.,:::t::e::m:::::.adi::·:.in~¥es=so'"l"us::..:c:::.ita:::.._.:1.:5.:3 .,. ....,._.:.·_c".e., i:
)
"e,,~ ,"., i"., h·"" .-. I-"~'~,~
\; -.'- #,-:'"7':'~;'; !.__
".~-""".""-
~1r.~;,·: -t:f.~,1'~"1:__. _ f:.~;Lf~;.~ --
IndiriZZi
Bus
Bus Dati
?:~~,:,:.":'\
1
I' Q6 I'.Q7
INTA IRQ
..
'- Figura 4.46
,
•
PIC
IOWR
,t/'.
.:gl,~":-'~··,';
IF QO
-lORD
:~~:':§~.D~::..'./,_,:,. .'~::':.:> _' '.~';.,\:::;:_<
)
, ,
)
Schema del controllere programmabile di intenuzioni deU'Esercizio 4.21.
'.;::"',:~< .. ' . ~:}';,.,{r:~;:~,~,c". .. " ,·};;.h:>J:~-. Esercizio 4.22 Trarmte caicolatore deve essere generato un segnale digitate penodi/t~:?{r{':>C'OI di pe~i~do. ~ = lsondo. n segnale cleve apparir~ sul bit. BO deU~ porta ~i uscita ,"'it,":, PORT, dl mdmzzo 50. II duty cycle deve pater vanare tra II 10% e il 90% dl T, con
I
;{{}C'H'·incrementi discreti del 10% (1/10 di secondo). 1n Figura4.47 vengono presentati i It';t~~_{(:T,,diagrammi temporali corrispondenti ai due casi estremi.
J
-r~t·}~~~_r/.:,.- La routine INTPW, operante sotto centrollo di interruzione, ha il compito di pii'1-/L:f)'lotare PORT in modo tale che l'uscita BO abbia la fonna d'onda voluta. La routine e i~¥\'i~>:~~: agganciata aIle interruzioni dell'orologio che si manifestano una ogni 10 ms. Sull'inter:~~}~.~:-:~t;;c_ ruzione che corrisponde all'inizio di un periodo , la routine legge la variabile (comune) :k':<:t~?:;-<:N (0 < N < 10 , N intero) I che indica Quale cleve essere il duty cycle del periodo che ,~~~~i·;:-t)_".sta iniziando. Poiche i restanti 7 bit di PORT vengono usati in altro modo, e neces,~:Rt.:J~~~_;- sario che la routine INTPW nOn ne modifichi 10 stato. A tal fine l'interfaccia cleve rV~;i;~:4,?';- consentire .1a lettura di ~uanto ~~ostato sui re~taDti 7 b~t in modo che la scrittura ~\q>~\:;~N~:- da parte dI INTPW ne nconfermt il valore. Ipotlzzando dl usare una CPU 8088. t;::Wif~f~I;.;-,'· 8i progetti l ' interfaccia assumendo di utilizzare per porta di uscita un normale ;:!~f,~:r~Y~2;.-latch a 8 bit. 8i disegni la logica per la lettura e la scrittura della porta. Si tracei 10 1,~~1ii!:~\~',:>;schema di Russo della routine di interruzione INTPW e il relativo testa assembler.
):."i':;cc"""",. :!1((;~~~}:\'" . _
.Jl
f.jfi.~f;:, ~~~~~/.
I
~~r~~lf~t::- Figura 4.47
.--;:i:;;~6'~' ~:i\~!(~;;,{:::-
.;~~~>"_:
I
11/11 I
%;-~j';Z
....
'm
LJ
I
I
ll-
LJ
Schema del controllore programmabile d.i interruzion.i dell'Esercizio 4.22.
....
.
'.
~'f.~~t?1;;+_E_~erclzlo4.2~ Sl ce~slden l'lDterfac.cla. s~hemattz.zat~ In. ,Fi~ra4.48. ;;?·Z-.;~!>-'!:;:i·" -' Quando vtene'scntto un byte all'lOdmzzo FO, il bit pm slgnificativo stabilisce se
:.~~tt~~:;i~1f.-Si tratta di un byte di comando (D7=1) 0
di un dato (D7=0). Nel caso si tratti di un
Ai,t!.;.".,~yte di comando, il bit meno significativo (DO) abilita (00=1) a disabilita (DO=O) '~?:!V:??~x~·l.mterfac.cla alIa generazione cli interruzion.i. Nel caso di un byte di dati vengono ,::!~:U~"!i::~~>J~asmessl ~l'e~terno i bit DO-~6 .(l'i~terfac~ial deve prevedere un latch per il dato) e }:;<~.fi:~!>:>.vIene assento II cornando X (dl tlPO lffipulsIVO). Sulla ri,posta del perilerico (impulso ACK) l'interfaccia deve asserire Pinterru'~;,~K,:i~;~t?,_::> zlone. se e. abilitata. In ogni caso l'interfaccia deve prevedere un flip-flop di stato da
<,tlr:1'181':;:
;~;t;;:L~l~l~r:·,assenre/dlsassetire su
."."'.
.~»~~;8'>I';-:'· • .,.~~.y",.~~.,
~. 'f1?P-1ii;;;j;".i::".'
XI ACK.
1
i •
t • I SIIC
~t~~G~tA;,~
\
\
I I I ~ J I
-'1~
iI~i'.l , ';/'.'I.'"'
I
154
Capitolo 4
,,".' ;~.
,~~
:.;);;
_.~.:.,-.
II
,,,,'1.'
-''''''
I"
""~.
• '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,.. " 51 tracel 10 schema lOgIcO dell'mterfacCla comprenSlVO dl: (1) decodlfiche cil co. :\~!~, mandi e indirizzi; (2) logica relativa alia scrittura e alia lettura dello stato; (3) logica ,,{~ relativa aU:interruzione..8i scriva il codice Assembler che legge 10 state delI'interfaccia e la porta 111 state dl abihtazlOne aile mterrUZlOnt. :,:'}:
{iP.'~' '!~;;:.
-~;~l
':~'i
·>4bi
\ .
~
,<:1 ),, -'.-1 '.i:~~
Bus
Indiriui
Bus Dati (DO-D7)
'"
•
00-D7
I
ACK
Figura 4.48 Schema dell'interfaccia per Pesercizio 4.23.
1
I I ,
,.,,*,
',<",'
.. :, ~ . .,.;i'
,~t~
-:~:: ';k:
c:tl ,f\'
.::~~;l
::::::
'/im '~~t~
II:it.~ ':,;h:
~;~1 ;:';;
";.~~ ).>:
Esercizio 4.24 Uo'interfaecia di uscita per UD micro a 8 bit presenta un latch alrin· )~~~ dirizzo FO" Al latch ecollegato un J?erif~rico che cia ri~posta pra~ic~e~te imm~diata ':~ (pochi microsecondi). Per tale motIvo Sl vuole costrUlre una lOgIca dl mterfacela che ':,;:~ consenta l su una scrittura da parte della CPU, di generare il segnale di WAIT verso '~'~ 130 CPU stessa l segnale che viene rimosso sulla risposta del periferico, come da schema .. ~~ di Figura4.49. . <;.';~ 8i progetti la logica di decodifiea e di trasrnissione del comando X verso It .:;.~ periferico e della logica relativa alIa generazione del WAIT. "',~ Si scriva il testo della routine OUTPUT che trasmette il contenuto di unlarea di ':~~:~ memoria aJj'esterno, chiamata secondo questa convenzione: :}:~ I
:}:'
}:f
::i~i
'-?g:
:~~;
'S)
,~:~
,;~;
<~~
:]';1
........ " ....
HOV
BX, OFFSET BUFFER
CALL
OUTPUT
La routine deve trasmettere tutti i caratteri che incontra in BUFFER, a partire daHlin_ izio, fino a cbe Don incontra iI carattere "$)) .
I
.
'd~ • . -, ~"".
";~H
• X
10WR
I
c.1"~:
":'f-:
, :-l:l ';'.'
INT
!
'j~':
5l~ \.~;;
~
lOR D
\
I \I
;i'~:'; ~;;
',"', ,:" '~;'~'t
:"'
;:.f
,'~~, • I·, . ,',:~
r. 'j
. , ':"" ... ,
!'~~ ;~~
:":~ ;;!g
Esercizio 4.25 In Figura4.50 viene schemati:z.zato un nastro trasportatore. I pezzi da trasportare vengono depositati nella posizione O. Nella posizione 1 130 cellula fo- t~ ::; toelettrica Fl rileva se il pezzo che passa deve essere scartato dalla stazione si searto ,,~'~!t ':~;~ S1, situata a valle in posizione.~. Nell.a posizione 3. la cel~ula F~ .rileva se il pezzo .. ~~ .:;~ debba essere scartato dalla POSlzlone dl searto S2, sltuata m POSIZlone 9. Se a.mb~- '~~,:.1
82 (11 pezza deve attraversare la pOSlZlone cornspondente a 81 come se non fosse da .-, ~!:; scartare). . :',' ::,; {;': Le cellule fotoelettriche Fl e F2 forniscono un segnale binario (0: pezzo buono, 1: pezzo da scarlare). Per effettuare 10 scarto, gli attuatori 81 e 82 riehiedono ehe "'~ venga asserito il relativo segnale binario di comando per almeno lO~s, rna non pili di ,F~ ')'; 30 IJS. . ~)~
\k
Ji
;~!
."~ '_
~>:1:;r{!
,I.,. "
';:'~,:oI'
~:~>
;,; ..
',. , ':"\'" '
.;.
.
-
II sottosistema di ingressofuscita.
155
'}.,'·f
,-
.J. J'..
- .... -.'
~
';;'.: .~:.~
-
20.
BI
l)~"
i;:?:'
IOV
bi,"';'.,-rT
;"";_"'<' . VA ;,~:::' AD<
,,\' "
x
':.'
:·:
:::,--
. ,;;: "Figura 4.49 ':
• , ..• .-
•
BD
--h
DO- D7
l
II !
J ~
-
-sox
lDV
ACK
-
\J AI T
U
Schema delle temporizz3zioni per l'esercizio 4.24.
•.
i' ' ." ~· "I,
. ,
II movimento del nastro
e comandato cia un albere motore rispetto alIa cui rota-
:~·r··" zione vanna sincronizzate tutte Ie attivita. relative a1 nastro. A tale scopa un encoder,
',~- '>montato sull'albero genera un1interruzione (segnale IRQ) ogni a gradi percorsi. A l
:~;,~:~:;;' 'regime Ie interruzioni si presentano ogni lOOms. Inaitre esse si manifestano quando i
~(:~': .p~zi sana nel campo di valida lettura da parte di Fl e F2, ovvero di scarto da parte :':'-'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 ~s. n sistema di '~>~:>., controlla deve svolgere quante pili funzioni possibili per via software lasciando alPinf/:O} terfaccia hardware solo i compiti strettamente necessari. L'interfaccia deve generare i:;r ::r. Pinterruzione riconoscendo il fronte di salita di IRQ. :::?}'~'. ",:' . 8i richiede: (1) il criterio di progetto indicando come si mette in relazione il ;">.~' riconoscimento delle condi:z.ioni di searto can Peseeu:z.ione della scarto stesso; (2) l'in)'j":,:'",/terfaccia hardware (due ingressi binari l Fl e F2; due useite binarie 81 e 82; ingresso ~l''''> ~RQ, uscita INTR)j (3) il diagramma di fiusso della routine di interru:z.ione mOUT ;3j:';," responsabile della lettura di Fl e F2 e dell'eventuale scarto su 81 e/o 82; (4) il testo ~~);";."assembler della routine !ROUT. I
1;,",;_' ;, > .".', ... ,
,," " ',.;;;,
,'I'
:::-;;""
.
f·-;··'
I
0- 0
."," .-
... ' . , j' • ",C
T. "..
~~;:.,\:.
g;~~];.:~~\~igura 4.50
;~:~:j.-:" ~Y:::·~, .'.'..'
~1*-~~::·'
I"
~
I,
I" o
T,
o
T,
I" o
o
--
o
o
•
I,
I" o
'.
o
T,
0T,
Schematizzazione del nastro trasportatore delPEsercizio 4.25.
I,,
..
1:!;:<\' EserclzlO 4.26 Se la routine ISERV nel Paragrafo 4.5.1 viene modificata in modo da
;":~,-"'~c. r.Ilevato aJeuna nchlesta assenta. 81 dlScuta la questlOne e proporre eventuah modl;:;:;~~.~ .\ fiche al programma sulla base di una politica di gestione di questa 0 simili situazioni :i:7.,;.:: :',~nomale. .
iJ{',(
..
I
I
,I
,
I
;i'~:,>;:. ~s~relz~~ 4 ..z7. In Figura4.51.viene riportata una soluzione per 13 logica della daisy ~~;,::,: .~am. 81 mdlChl quale malfunzlonamento pub produrre.
i ~"
!!~~~!;'~~
iI 'I , "
~!'r.;,;;< _!6~~:.
', '
156
Capitola 4
IRQ D
1
Q
D
IFF
~,~
SFF Ck ~ f-
~
Ck
Q
"}@
IN TAl
INTAO
':j'; ,;;,
:;
Figura 4.51 Si analizzi il comportamento eli questa. rete.
,";{:.:
.~~J
Esercl'z'o 4 28 Al fi n e d'1 e't td '" ' '{:w. '' I. Vi are I' el emen 0 '1 n't ar d a ne 11 e re t'1 d'I F 19ura 4.22 Figura4.23, si potrebbe tentare di legar.. lEO a.Q di IFF,. come in Figura4.52. s i l ~nahZZl II comportamento della rete e 51 mdlchl 11 tlPO cil anomalia che esso puo'::fr~1 mtrodurre. ':. ,e, /1 "
1
. ~:~~
)~~
IRQ
':'.;~J '::\:1
13
. 1- D
Q IFF Q Q
. ~J;:.i
D
Q SFF Cl< Q
TNTAT
:'·'t;
,.:;·1 ~'-\aj INTAO
Figura 4.52 Una. possibile modifica. Bulla linea JED.
:'~1
;\l~
,:(~·.:1&
•
.':.:<1f.S ,..-:,.:,;. , ' ..",f,..
Esercizio 4.29 Facendo riferimento all'interfaccia di Figura di Figura 4.20 e a quella"\f.'1 d.i Figur~4.22, si e~amini Quale e l'in~~rv~llo.minimo tr~ due ~r~nti. di IR~ ~ffinche it"'$~ SIstema 51 comportl correttamente. SllDdichl setto quail COndiZlOni una nchlesta puo 'J~ andare p e I d u t a . q ~
..
.~Jj
.
Eserclzlo. 4.30 Dlscutendo della necessita. di avere lalinea IE per garantire it rispetto·';.'!ffi della priorita per Ie interruzioni annidate (Cfr. 4.8,1), si e supposto di fare riferimento.~ allo sche.ma di Fi?tir.a4.23, dove epresente il ftip-ft~p IFF, che viene comunque trovato' !~~ a 0 sull'mterfaccla 1 (a meno cbe questa non abbla di nuovo riasserito IRQ durante.J;:' il servizio). Si supponga ora di fare riferimento aHa rete di Figura 4.20. Si analizzi il:~ c~m~oItamento nella situazione descritta. Differisce, se differisce l da quello della rete}jj diF 19ura 423 . ' 1. ';-•."~ &
.
.
""".
''''
Esercizio 4,31 Le interfacce di I/O di un calcQlatore COIl bus dati a 8 bit sono colle-:;1~ gate in daisy chain e vengono gestite sotto controllo di interruzione. Su ogni interfaccia"'~l e presente 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. n,}t~ 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 e asserita 1a linea lEI. La selezione si manifesta ~:i~
,.
.:,j" ,,1}
:fiif! )dl
;~1~}r.. ,
~,....::\,~
'
)
.~~~t:~f(' .. ",,.,. - _
""~~"
.-
.,,{.ri,'';';!'r~.~~
I~'"r~ "'''''-',~ '~,;",:,,,:. .~~
n sottosistema di ingresso/uscita
157
-., -
':~- I:(.~'i.'''':·'·;_
_
. I?..I ~f,;I;\:f:;il assaggio di IS allo stato ON, Ia negazione della linea IEO e della richiesta di ''3;:'/''~-;'_''
:
'h~~~:2_~~ . ~rite~rUzione
IRQ.
1
n selezionarsi dell'interfaccia inibisce U passaggio a valle del £rente
~ ::~i~~~:~~~Tdi INt:~dO IS e ON, l~ '?gica deU'i?terf~ccia m~nitor~zza. il bus dati e le line~ di {r~>'!'.·::'~oi1trol1o. Se sui bus dab
presenta 11. codlce dell'lst.ruZ1(;me mET .(~O) con la linea ;t'''::''';'OPFTCH (in uscita dalla CPU) assenta e, se venficata Ia condizl~ne IEI=ON e ,t;:<:/·.IEO=OFF, il flip-flop IS VlOne portato allo stato OFF (hasso) e Ia linea lEO deve 51
I
e
·,;n~:;:":,(',,tornare
allo stato ON. Si richiede 10 schema della logica della daisy chain, in particolare si richiede:
<;1:\'/::'~:":' ,-' J ':'!6·~,.tl)lo schema. delia rete che fa passare IS alio stato di ON; (2) gli accorgimenti che ' ~i"\':;~'::"'," ,.,".', 'permettono d1 dlSasseme IRQ sulla selezlOne, (3) 10 schema delia rete. che nconosce ' . l £,~;t.'.:.IRET e comanda IS lD stato OFF, (3) 10 schema della parte relatlva aIla catena 1 :i(5:~.~::~ir;.IEI-IEO. "t t " di una vo1ta eel h'l Fl'Ip· Fl'Ip SFF d,e11 e m. " ',~~\';H:;::'E'sercizio 4.32 ~ eta 0 osserva 0 pm,
1 \
1
!
3 ;::~/;<'.<' valle.
I
11;~1~7·;'\>~~erciiio 4.33 Facendo rife,rimento al precedente esercizio si supponga che SFF ven-
1
~ .~f.r:,~:'~,:; ~,terfacce indica che e in esecuzione la routine di servizio dell'interruzione. E stato ~ fNt,·::~,;c. :'anche' osservato che normalmente SFF viene riportato a 0 al termine della routine ~ ;£Q/~.(: (Cfr~ 4.8.1). Quando SFF tor~a in st~to .1, 1a catena di p~orita ri~ulta ~bilit~ta .a
Che accade se a valle c'e un penfenco con IRQ assenta, nelPlpotesl che il 51i$ ~~~.i~~,:-\stema di interruzione sia stato riabiHtato nel corso della routine al fine eli permettere ;~ ;.~;t~~~··:·">-"l'annidamentodelle interruzioni? Volendo consentire l'annidamento delle interruzio1~ }JIk~i~~, iri 'ola--senza permettere che passino mai interruzioni meno prioritarie, neanche: nel j ,:{l:k;.~·:?.-c~o bra descritto, cqe accorgimento si deve usare nel comandare IE? .
~ ,\~;~{!:-,;,:;:,ga r~portato
a 1 alquant? Pfln:a d.e~la chl~sur~ d~Ila r~utme. a'e qualche ~ere.nza &1 ':f:~;,';.~';:>,;}~'::.con d, c~o pr~cedente? Sl c,onslden 11 caso m CUl.l'lstruzlone STI venga esegwta prIma S ,.\~i'{t~:';"./,::,;.-'e, quello m CUI venga e~(!gUlta dopa quella che nporta SFF a O.
.~
';3" ,;]; " ::,.>,.;" , ,'i;,:~,r .. :' .'.,
1 :~:1~:{~;::,.;:~~~Esercizio 4.34 Si modifichi 10 schema di Figura4.26 in modo che IRQ venga disas~ ;~:*::E~~,:::'--·:.se.rito al passaggio in stato 1 eli SFF. ~ ':f.;~F:~~\',·' .'. . . .. . .. . ~ :tN~t;<'EserClzlo~.35 S~ progettJ 1a lo~ca dl una daISY cham smeTana. 51 supponga che j %?,(;;~s?:..una volta nconOSClUto Th'TA assento, debbano passare 2 due periodi di clock per dar i ;2}'/t:::': '!Dodo ana catena di stabilizzarsi e che quindi venga selezionato il periferico a piu alta ~ :~jr~::r'i.>priorita. .
~ ·*fff~~~>.
' ..
. .
..
'..
..
' ,~.;'~:'.'~.~' .~serc~lo 4.36 In nferunento alla rete dl Figura 4.29, 51 progettlla rete che suI pnmo ~ '. ~;~~~{/.~ ?clo dl INTA seleziona la richiesta da servire e porta a 1 it bit corrispondente di ISR. j .~rf?~<::'.: '
.. '.' &,~,,., .:::,:;~' .. ,~ ...
".,
I \
i
(
..,," ., ~ it/·:·.'~'
1
~ ;:,~,<>':':' ' ~ :>i~,.':<' .c' ~,:,,\,:.,., ~ '.:"'~"'. ~ ?:',:,:,:'" ..
I
'.~'~"
",~".
,.',
,
;'?,;:, '." :
'
.
", ".'" " ".", }, ., .... ,,.'!, ,
!!
' ;:.';': ,,'-< .,'.,:
1
'i ,',.[,', '-,'
\
'~ >,,,'" ,j ~.~,
.
....,~>.
".~\
"'\,r~,. ,~4
;:1"
I
-,
,'";
. - - '; . , , ,
, ' ., ",~ ." ••..., ,c,
,
'.-
\
. -' ., ,
"",
','
,
;_.' -f
,
\
" I' "
,
,
,
I
'\
.
'
'
:., ;'''
,.
I
I
:
'I "
," ; ,,'
." ' , ',j..
......
.
.,
"
\
I \
\ '--
~
'. ,;
I
I",,
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 prototipo (CPUl) e castruita 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 l-
Mix] l-n
Xn Xm ..n Xn X II Y
«,»
Significato asferimento dati; la dimensioneaei dati traSteriti dalla dimensione della destinazione. Contenuto locazione memoria all'indirizzo x. Trasferimento di un campo-di n bit. Selezione del bit n in X, Selezione--di un campo di bit cla man in X. Replica n volte il campo X. Concatenamento dei campi X e Y. Scorrimento logico a sinistra e a destra.
Tabella 5.1 Tabella. delle notazioni usate nel testo.
-
.. "
~.
"
e data
Capitola 5
160
.": '; If
,
~.,
5.2 Architettura di riferimento della CPU
"
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.
-.,
1. La macchina e a 32 bit, di conseguenza tutti i registri di CPU (salvo quando diversamente 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. "
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,..... ,,0
3. Tenuto conto delFassunzione precedente, se si esdudono Ie istruzioni di saIto, la - .' regola di aggiornamento del registro PC
e:
PC+- PC + 4.
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.
-
n repertorio
4.
""
• Istruzioni aritmetiche tra registri. In questa caso il c~po 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. j Rlf- R3+RB Esempio: ADD Rl,R3,R8 (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._
, • 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 memorizzazione 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
E
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. 1
•
'
','i; .".
\ La CPU
161
)
,
.
,
delPistruzione ST it campo Rsd identifica il registro il cui contenuto deve • essere scritto in memoria. ; R13~ M[R6+100] Esempio: LD R13.100(R6) (dove Rsd R13. Rb R6), Esempio: ST 400 (R4) ,R25 ; M[R4+400]~ R25 (dove Rsd=R25, Rb=R4), Si noti che la macchina legge/scrive solo parole di 32 bit. Non e questa una grande limitazione in riferimento aile arch+~etture 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.
=
,,
•
0' .
• 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 e maggiore 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 ; i f R2 z R3 then PCt- PC+OFFSETx43.
"
• lstruzioni di salto incondizionato. Ne e prevista una sola: JMP. In questa caso il campo OP contiene i1 codice del salta incondizionato, mentre il campo IND contiene l'indirizzo della posizione di destinazione del saIto (diviso per 4). n campo IND contiene sernp.ce un n~mero positivo. ; PCt- INDx4 4 • Esempio: JMP label • L'istruzione di !lnon operazione1' . ' [l suo codice mnemonico e NOP: Ha semplicemente l'effetto di far incrementare PC di 4. Il formato di questa istruzione richiede solo il campo OP, mentre gli altri bit sono irrilevanti.
,I
Siccome si e stabilito che Ie istruzioni e i dati occupano sempre una parola a indirizzi multipli di 4, non conviene irnpiegare i campi di scostamento/indirizzo per 2Questa istruzione e rappresentativa 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 prpgramm·a. 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 posizione simbolica dest rispetto a PC. In altre parole il valore di OFFSET dato 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.
e
'1 .
.,;
=
I
I \
I \
1
II
r· ,
\
'
1.
I ,
]
.
( ,
,
'l\II;~""
"';;~i'
"i.
,'~) '11$J;~, ..,.!! • I: "'. .1
~1.::6.:2_...:C:::a::!p::i=to::IO::.::5
I
'~:;'~ ,~::,f ".,>
'';j'
··'.'I-~
,.'..1' ,... ,~
I
tlftnls10aJ
w.
S'T
I'~I'DI"_I'
~
"I
".j!
>,1; ':':I~::: . .-
.,'•..,
~',
(F2)
,.
,
~
:r"
" ., 1": o
~
arttm.Uah.
~OD.
41 .alto (IWP)
,
I
I
~
o
t.t.nuio.n1 d1 alto oood1a1o.a.t.o
,..m
\
11
II
II.
.I I
=
I'
l"lkl-i
I
.
I
~ II
"
:ll
I~I~I-I"I ,
\
•
~
," 'I " , , ,' ,
(F3)
,
(Fl)
.
';
,,",
.. ".' , - .,
",
I
,
"
.. "
'.-
,;;~"
,
(F2)
,. - " .::_~,
. ,.
:.r
Figura 5.1 Formati delle istruzioni. La regolarita del formato permette una. facile decodifica 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_ ."~;' ....,.;.;' petto al contenuto del registro Rb, mentre nel case delle istruzioni JE/JS rappresenta 10 .~ scostamento rispetto alIa posizione corrente. Si Dati che a differenza del campo IND) che-:; ,:'~' contiene sempre un numero positivo, il campo OFFSET pub contenere un numero positivo .:,:~ .. ~X; (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 '''~~'. .'~~ ' d estr a vengono npo ' rt all t' , noml, usat'1 per 'd ' d el' 3 di~ .. 4. Sull a Iasaa I entifi care Cla5cuno nerenti ,., ,,:~~ ~:~:~
-<:
I
r
"
!ormati.
\
,
,.,'.
':-:,f ::- ~''
""
.~"
. "'i~ };: , ·,'.i<' I"':;, contenere 10 scostamento/indirizzo effettivo. E meglio codificare nelPistruzione l'in-,:~S,; "',~ dirizzo diviso per 4 e prevedere che la CPU moltipliehi per 4 i1 contenuto di questi " :-~, : <~, ... campi in fase di esecuzione delle istruzioni. In tal modo viene meglio sfruttato 10, \~,: '-~ spazio offerto dai relativi campi e, per esempio, e come avere 18 bit in luogo di 16, ',~, ": ';~ • C (OFFSET,,)" I I OFFSET, dove (OFFSET,,)" ,ta a indicare la ripetizione per 16 ", ",':-; volte del bit 16
f r
I I I
.
'"
Vale la pena di osservare the la tecniea di codificare diviso per 4 10 scostamen- ....~ to/l'indirizzo presenta qualche aspetto contraddittorio. lnfatti, in una macchina reale, " sana previste ancbe istruzioni eli caricamento/memorizzazione the indirizzana diret-, :,J tameIite il byte, Can la nostra architettura sarebbe necessaria rinundare, per queste ~ istruzioni, alIa tecnica eli codifica adottata e riportare nel campo OFFSET l'effettivo :__ '~; scost~en~o~e~ b~e. Avendo fa~to l'.ipotesi - per motivi di ~emplicita - che 1a nostra. :<.; macchina mdirizZl solo parole. 81 ntenuto opportuno codlficare sempre nel campo .,'; OFFSET 10 ,costaroento effettivo diviso per 4 6, ' 'i
e
'
:'
,
\
". '.
• ;
: ~,
:,,:,'
."
'"
,',;.
·1
.t
"
.
.~. " $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 ,i~ . '. e come vengono manipola.ti in fase di esecuzione i campi di indirizzo/scostamento. )~ "
(
I
.,,~,
... ~~ ,:;
.".' ." ..."
" . "l~
"'\r
':'
,~:;:
__
1,,: _
f~~r. --------------------:-------.-::L~a...:C::P:.-U::..--:l:.:6:.:3 I
-'-'
~.-·-
",
:.i>:·
Ai fini della discussione di questa capitola conviene assuniere i seguenti codici per Ie 7 "~: operazioni s~pra elencate : :""\' OP=O; istruzlODe NO P: . OP=l; istruzioni aritmetiche: ,
,'
istruzione istruzione istruzione istruzione istruzione
OP=2; OP=3; OP=4; OP=5', OP=6,
LD:
ST: JMP:
JE: JS:
,
,
",,: ;~
, .'~'·5 ..3 (:~
.-'
,
Blocchi componenti
;'0':..'. ":'"
. . ..
<:, -:i"-'Prima. di
.
pro~edere ~o sVll~ppo del du~ prototlpl CPUI e CPU2 ve?gono ultenor':;':,·'~:::',;inente discuSSl alculll blocchl component!.
;:>~,;,
"'
":,,,:,,-:-
~{'-;:- 5 3 1 ,' ~},y". • •
I regl'st' d'I rI
usa
generale
"
'''',::J
,.'."
::;':?,:'$i' suppone che la maccbina presenti un banco di registri (Register File, RF) di usa ,:;:~:", generale, nel senso spiegato al Capitola 2. I registri che compongono il banco sana ~ ',~, ::,.da ritenere equivalenti tra lora salvo diversa speeifieazione. banco dei registri ,'";·._':<.:schematizzato in Figura5.2. . ~~l :;.-....., In Figura5.3 viene illustrato it dettaglio dell'interno di RF in riferimento al gene;~'::: ::.:::' rico registro. Per Ie ipotesi fatte, i registri all'i!1tero eli RF operano secondo it modeno ::::~::'~'di cui al Paragrafo 1.5~ pagi~a 27 e la s:dttur~ s~1 registro R j s~lezi.ona~~ da, RW av,:.-, viene alia fine del penodo dl clock se e assento il eomando R.;m dl ab,htazlOne aHa >'";:.":: scrittura suI registro. "
n
,
e
,~,
;"c,;
(:,", , ,.'>'?~;/ 5.3.2 ALU ,', C'" \,.'.-"
e
. '~>"J.,o schema della ALU riportato in Figura 5.4. Per mati vi che saranno chiariti in . ',.::', :.:," segulta, e stato esplicitato it bloceo ContrALU. Questo bloceo ha la funzione di deeD;:;,',;:.. dificare it codice di operazione aritmetica fALU e di presentare l'opportuno segnale ::'< i>.di comando alia ALU8 , ,~:~>-> n blocco ContrALU e condizionato attraverso OPALU (k linee) , in modo da ',;''<.> "ot~enere, quando serve, unluscita diversa da quella corrispondente alIa decodifica del ";: '/'.',·coaice di aperazione aritmetica.
;;::',/ ..... ' ,. : .. -'
,
" 'S'I
"" can queste poeh" notl, LUe e lstruzlom'b astere bb ero 3 soli b'It per I'I campo OP . Faremo comunque ", .l'~potesi che il campo sia di 6 bit. AI capitola dedicato al progetto della CPU in pipeline il repenorio ,:,':/' ~Iene leggermente esteso e si assumorio codici piu convenienti al fine del progetto della logica di
,C " t·",
.. "', ,;. controllo. I
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. ::.
",,:> . - , ,>-
;(.
;~"~:
~
',',
"',,,-'" .'"
3Si
'
-,'I,·'
164
"
.' :;. "
Capitola 5
.~
- "pl"
:j'il :~J;~ "",
·
,~.,
., ",'""
,.
-,"' • ,",1
,
.1· ' '
, 'RW I /5 .. RRl
Selezion..,
registri
","jo/"
"
U,eita reglstro
,!,>
A
I /5 .. RR2
(
.
I;jG
d
,elnionalo d .. RRl
"
"1
:,,:')
·'it"
"~'.'
, .,-!'JI
RF Ingresso III reglstro seln:lonato da RW
752"1 D
"
B RWrite
/
-"~l"
UI<:ite. r.glstro selezlonllto dll RR2
."
(~G
,j'<'
..;
oj;:
t
.~
·.:,;~ -
....
"'{
Figura 5.2 Schematizzazione del banco di registri di usa generale. RF (Register File)'"~~" 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 B. II gruppo di ,If: linee RW identifica l'eventuale registro di destinazione, ovvero it registro in cui viene scritto 'l'~ il data presentato in ID. La scrittura nel registro di destinazione ha luogo suI fronte finale .~'i~ del clock, solo se e asserito il comando RWrite. Questa figura, come queUe che seguiran'no, :\.' non mostra. il clock; esso e da ritenere s o t t i n t e s o . ; i ' " .. ,:~::
e
'.:~':., , ': !',
5.3.3 Memoria
.:~:;::
· ·
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 e da ritenere sempre abilitata.
,<,',.
',."
';;.:.:
"~~ ,:~3 ' .. '~"~'
~
,\;" .~.~
5.4 Sviluppo di CPUl
~Jl
,....
r:.:.
'L'
..",',,1:.,
Viene ora sviluppato un prototipo che esegue istruzioni in un solo periodo di clock. ,~' Per pater raggiungere tale scopo, conviene anzitutto ip£ltizzare che 1a memoria sia "" 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 della stesso ciclo. Can tale assunzione l'esecuzione di un'istruzione pub procedere nel ....;': modo seguente. . "
·:
'.
"" ;'
,
• La memoria istruzioni (MI) rende sempre disponibile it contenuto della cella :,( indirizzata dal PC. .~'
"
.
• Uesecuzione di un'istruzione corrisponde alIa propagazione dei segnali attraverso il blocco di decodifica, il banco di registri, 130 ALU e 1a memoria datil fino all'eventuale scritt~ra ~i un registr.o di de~tinazione. ~ venda separa~o 1a memo.ri~ 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
;
.. :':
·
~
\r
-
, I .".,.
__ lS",'"<'~
_
~l1.-I.\!r.?,.·
,jif;o.f b ,";' ;.,
-"0' .
",11 ~ '''I"~.,,~,.
.... ",,' 'Jl'~'
'Wrr;" ,:",. 'h-."i.··
\
'.
..
",." ".~.,,!,..
1
"
La CPU
165
11
" ~ .',
," '..;.; .,~~
1
',',i .-
..'
'
RR'
5,
,
"
o o
,.
5,
,
I
.
o
. o
5,
31
. 0
RRZ
,
I-
•
0
o
,
0•
BS2 BSl
•
A
31
: ~
R'
,
I
'32 Riin
0
"'
'.,":
o
".:' "'.
Ri
....
,.' . ':' .. . ~. ":" . '.
eD
'.'
~
... :.\
•
.",1,:,.:':
•
~"
,
.' .... ",.' :',",'
:"
,.' _<
• •
B
I .~<
D
32
~
:
\
31
RWrite
"',' ,
': .:;;.
t
<; Figura :,., ':. 5.3 SeIeztOne ' d' . 'II" eli RF BSl BS2 t' d b el r~g1Strt a. IDte~no . '. e. rappresen ~o I ue. u~ .J
:]',.' " . sorgente.
BD rappresenta il bus eli destmazlOne. SI ossenl. che,. a part~ I fenomem ~ ',:, propagazione, R.F presenta suo A e ~, pe~ ~utta l~ durata del cl~lo.w 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 ' ,dell'istruzione JMP , queUo che esce da. RF e irrileva.nte.
.. '. I'"
."
'
..
\
I I
I i
: ','" :::--','.' .~. ' ~:" .:':: ,:': rendono necessarie unita. alternative per l'esecuzione delle specifiche operazioni 3 ,.' .. ' ~~ ,",' che determinano confiitt0 9 . ' '. .>::'. ,"', ". ;':,' • 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 istruzio~i di salta) l· }>':: ~ ._".,. "e 130 logica passa a eseguire la nuova istruzione.
I
Per 'rendere possibile il funzionameilto sopra delineato e necessario che il periodo ,:: .' :.',., .', . di- clock sia lunge abbastanza, in modo ~a permettere 1a completa propagazione di ' tutti i segnali e la loro stabilizzazione. Tenuto canto delle caratteristiche della oostra ", .:,' architettura, si puo pensare di suddividere'la CPU nelle seguenti sezioni. ;':, ." .. Una sezione dedicata al prelievo delle istruzioni dalla memoria, di cui fa natural· 'mente parte PC. :1"
I
"
""
l;'"
~
! .....
.: '
'.
! :',:.
,
',',,"'. ' .'
,
::l
.:/r· .(:: ~
"
,"
'~
", ,
. ..
;l
, ,
..
.• Una sezione di decodifica dell'istruzione e di prelievo del cootenuto degli eventuali , . registri sorgente. • Una sezione relativa alta ALU. • Una sezione dedicata alia ietturafscrittura nella memoria e alIa scrittura del registro di destinazione .
:~?'
·.~'I·
~..
'
\r~l,
gIn generale, quando all'interno di U.1l periodo di clock una stl!53a risoraa. pub essere richi~ta da piil ~arti e necessario prevedere un duplicato 0 un'unita specia.1izzata all'ese<:uziolle di una specifica funzlone,
I \
\
I l I •
166
\
Capitolo 5
-
J".~ ,~
I
rAW
(
..-".
"
11
k OPALU 7/
"I
'.
'. ..
ContrALU
"
,i'.'
.'
.:-'
,
\
Dato
,
1 • 32
IA
'cl' :1 ' ".f
~Zero
I "·. il··
. !.'
~Segno
I
OJ /. 32
Risullalo
···f
.
"~of;
,
· "";
,
Dato
,
\
Figura 5.4 Schema della ALU. Per Ie motivazioni illustrate nel seguito, e stata 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 : ,;~, 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 e 0, 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. ,
(
• . J'
;.?. .
I \
- ". ,I ,"I,
...
; ::il
..
Le sezioni sepra delineate vengono esarninate dopa la seguente .osservazione.
~
,".' ,'.
•
1
! I
... , ': .
Osservazione sui tempi di commutazioile Sui fronte di discesa del clock i re~ ',::,. gistri campionano i lora ingressi e cambiano corrispondentemente stato. Poiche ie '. " commutazioni non sono istantanee, e necessario che gli ingressi ai flip-flop siano 3ta-.. :'~'~' bili prima del fronte del clock (tempo di set-up. TS) e vengano rnantenuti per un ":~' cecto tempo (tempo di hold, TH) perche si possa avere la commutazione (Cfr, 5.6). :.:i:
Potrebbe accadere che Ie uscite di un registro malta rapido nella commutazione C05- '. ::,1, tituisca.no gli ingressi di un secondo registro piu lento, che richiede un tempo di hold superiore a quello che impiega il primo a commutare. In tal caso il secondo registro :",:.: 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, :".~
.'i
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 el conseguentemente, assicura il corretta comportamento del sistema.
.' '.:
'
..., •
\
"
5.4,1 Sezione di prelievo delle istruzioni
'I
I ,
,
(
,.
e
,
"
)1
Dalla m.emoria di programma viene prelevata l'istruzione il cui indirizzo contenuto in pc. E sufficient. che l'uscita di PC sia collegata alIa porta di indirizzo di MI per,~
."
, :'-. ';.) .' .'
-.'
-.~
_
~~»
La CPU
.
167
Mread
.
Mr / '32
'..
Mw
,'7. I
M
D
I ·-··. .....
/32
"
M-wrile
,.
?? I~ memoria ~iene impiegata pe.r contenere soltanto
Figura 5,5 Schema d~lla memo.ria. .. , Ie istruzioni, seompare Ll Busso di dati
mgresso e 51 assume cbe essa Sla. permanentemente " abilitata in lettura. Per questa motivo, negli schemi che seguaua, quando si disegna la ·.memoria 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.) In
. .:._
",_: .
.','
Hold time
Set-up lime
.:::' ',: ",,-
lngressi
.
'. .' .
.
Clock
-,
--r
.'
k
Tempo di commutazione Uscite
'
'- .'.
':.
j ,
Figura 5.6 Schematizzazione dei tempi d.i commutazione di un registro. E necessaria che gli ingressi al registro siano stabili per almeno iI tempo di set-up prima del hante che determina la commutazione e che veDg~o mantenuti. oltre il fronte per il. tempo .di h~ld. II tempo di commutazione e queUo cbe mtercorre tra. 11 fronte del clock e l'lStante m CUI Ie . uscite sono st.abili.
.
""'" /. ',.
.'.:
'. . .','
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.
....
:.
,
II
c
"
1 . :_
~
"I" . .,
.'
.) ..
~
.
_
.
,
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
Ca.pitola 5
168
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. _~":" ·. . ., . ",'
4 SCOST
1;'--
+
/32
lY
•
PCJl.I:P ,
/32
IV
~
, C
'-
'oro
"s...no " al p~eli.evo Figura. 5. 7' Sezione relativa
...' "'_;; .
~
I
JMP
.;
32
MI
I" rU7.ione 32
,,'~:' :.. c'.:, .
'.~<> :~;;
~.: i:; ,"
delle istruzioni e all'aggiornamento del PC. II se:<~~; ~ lettore 1? mgresso a PC e qU,en~ tn, tngresso a1 sommatore decidono quale sara il prossimo:::\ valor~ di ,Con PCJMP 51 e mdi~ato il valore dell'indirizzo di destinazione nel caso del il~ ' salta mco~di~lO~atai questa valore Vlene caricato in PC per effetto dell'i5truzione JMP, Con ':,\~ ' SCOST 51 e mdi~to 10 ,'sc~t~ento effe~t~vo della destinazione del salto condizionato ris: :'~~ 1 petto a. P~. Sulle Istruztom dl salt~ condiztonato, quando e verific30ta 130 condizione (Zero o<~, Segno), vlene scelto SCOST come mgresso al 50mmatore. ,','-~,!'" :J.•. ,
Pq.
.,
:';)
'
~':l::
· c.,; ,~ ... " ·
5.4.2 Sezione di decodifica dell'istruzione
"-\~' " "
':;.-'..
'. ".::, ':\
, ,','
,.=.';:. ',,~,;
, •.;1,
Questa sezione (Figura 5.8) e responsabile 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. ,,-;'~~ ~..
,
,-.
.,
• 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 esecuzionej queste !inee vanno a infiuire sulle varie sezioni della CPU e determinano l'esecuzione delle azioni corrispondenti.
:;;.
.~,
'.:;, ..:, "
• I campi dell'istruzione che identifieano gli eventuali registri sorgente vengono presentati a RF, in modo da avere BU A e B il relativo contenuto.
:.1
..
'
• D registro di destinazione RW viene Jlormalmente selezionato tramite il campo 16-20 dell'istruzione, eccetto che per l'istruzione LD, la Quale scrive nel registro codificato nel campo 11-15.
,
.J
'
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. ', 10n
"
\ La CPU
169
1 • II campo 6-31 contiene I'eventu~e indirizzo di destinazio~e del salt,o; il suo contenuto viene trasmesso alIa seZlone del PC dopo l'estenslOoe a 32 bIt.
.
, Il campo 21-31 aritmetica.
;
viene trasmesso aHa ALU per l'eventuale operazione logica a
;
• 11 campo 16-31 contiene Peventuale scostamento del salto (JEI JS) 0 delle istruzioni che fanno riferimento alla memoria (LD eST); il suo contenuto viene pure esteso a 32 bit e trasmesso: (a) alIa ALU per il calcolo dell'indirizw di memoria, 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 decodifica, di estrarre il contenuto di tutti i campi e avviarlo aUe parti che \0 elaborano.
".
~~ ~
.;. :.... '.:':,~. ': 'I;'~-' 1", ,\: ,>,.'
Come sara chiarite d~la discussione. che .segue, l~ scelta di quale elaborazione avra. effettivamente luogo dlpende dai codlce dl operazlOne, ~c' '' , ,
. '?" .•':': ': .. ,'~
,',:,'"
)~",
l~'
,;.:':"
6-31
16-3\
'
" .. "
;<' .'" -
II
Da a Memorie Istru'l.ioni
." ' " ,
16 20
:J.-
;, ,., , :'::. "..' ' '..
21 31
'<,:.
°5
O~
. ":, ...
RF RWril.
I
.
I .. Dalla ALU 0 daUa Wemorla DaU
§¥ j~p
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.
.'
,
,"
J
'I,
"
,
"
\,
B
~~rrM
:'.".,
.,
Alia ALU
L
;,· :"' ..
.,~~,' .....
RW
'II)-
1
!;:::.....,': ",." ..
1
I
A
LD
,j"
, ~. :,:' ,
32
Alia set.ione PC e aHa .\LU
RR! RRZ
•
.
r',
,:,:,.
SeOST'
• 10 11 15
,. ,';,.
~
\
.y.:".
. "
""
SX4
\
Alia set.ione PC
'3
'.'
'
''''
PCJl.I:P
X4
l I
5.4.3 Sezione ALU La ALU viene naturalmente impiegata per Ie istruzioni aritmetiche rna anche in appoggio all'esecuzione di tutte Ie altre istruzioni, quando si richiedono operazioni aritmetiche (per esempio nel calcoio degli indirizzi). Per questo motivo la ALU per interi
\
I ~ 1
~ j
.:'~, r." .. .... .,,', · ". ,:,;;~ . ,< . :.,• .,,'• ".' •. ~I
"'
-.,r:''.\ costituisce la parte portante di qualunque CPU. E interesse del progettista cercare di :~,j:.~h:,~:,
.:..:_.:..:2:..:..::..:..:::Capitolo 5 :170
;
I
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:" ,:;.. ,
.
• L'incremento di 4 del PC non puo essere effettuato dalla ALD. Per questa mQ..',:·~.; , . . 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 ugua~, :~:.... ; 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). .,L~. ,."
\
~
"
.,
I \ I
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 riferimento.,~;~· :,aHa memoria). Cia richiede un selettore a due vie sulla porta B (Figura5.9). ',;.~):l> lnfine e necessaria che attraverso il blocco ContrALU, comandato tramite le':~;' .:. 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 . ,~_:~J' ".
~;g. ···f '\'i .,
"
. ,..' '''.
",
5.4.4 La s.ezio.ne di memoria dati e scrittura nel registro di.i~ .,"" destmazlOne . , ; •.•', ". -- ". "., ''J! '
I I
1':.':
Per quanto si riferisce alIa memoria dati, tenuto conto di quanta detto al paragrafo" 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. ~"i '. _' 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 e necessaria 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.,.
»'.,1 . ,
, (,
I
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 " "!f 11 In
j
l •
"
.'. ,i. .~.. .
... .
',
La CPU
171
,::':
.:
_n
.
Dalla porto A d
.
A
IR'
Z.ro
.
. '"
;.:
. '
.
B~
Dona porlo B 41
0.1 bloCco
0
"':: n. ,
..
"
"r
.,L
"
•••
•l
o ALUou\
It/JS ~/n
....It..
=
COlltrALU
~ ~,
,• ,• -
~.~
•
..
~'"
.
, ,•
!
Docod
Call1rALIJ
",.
~/"
Zl-:1l {IALU)
-l
21-31 (ftJ.U)
, "Figura 5.9 Sezione relativa alIa ALD. La. ALU viene impiegata. in tutte Ie operazioni arit~ roetiche e logiche, per il calcolo dell'indiriz-zo di memoriarJieUe istruzioni LD JST e per il confronto (differenza) di JEjJS. Per Ie istruzioni aritmetic~e 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 e rilevante la. condizione Zero/Segno per determinare se il saIto cleve 0 no avere luogo, II dettaglio di ContrALU e riportato a destra..
.
.'
" -;:;
>.
.:. ",.;,:'
:';' "
.":", ,'
f!"··' ,~" '.' .
. , ..
'
":;' . ,>. . -. . ", ';'. '.
ST
j'" 1
.
Rd
:.. : :'
ALUout
,; , .'
I
~
W,
"-
MD D
".,_
v
. :::. Dalla porta B RF
.
Alia
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.
,...
",'
'
.
"
... ,I; " ) ,'. .'
porta
'f
ST
."
172
Capitolo 5
".f:
"I'
__ ji .
-,..;
'f}"
. '7: .!t ·"
•
.•• ,.
:.
't
:t
"/ ',:.
0
, -
"
";',
~
~
.,.
. <
I
h
·",
>
"-
'i:
:S
/~~ ~'FR1
;':: · .,,. .. ".
•
~ _~
:11
... n, ,
,
•
.
I
H,
~
·f
.".':
"~~
~
': y
~\I
• '1'1 •
.. =
~
' ...
"
"
.
~
'
0
•x
,•
"
--. •
i l "
IU
'~
i~
~
•x
I
.,
::!'
•
• , T
, -' ,
,•
.. "
',,
,
'
"
..
~
~
.,
r
u
J
I -I
. ,
\
-
!,1,
r
9.r •
Figura 5.11 CPU1: risultato della composizione delle differenti sezioni (Questa soluzione presenta un malfunzionamento sull'istruzione ST).
\
:
'~
L. CPU
:t:-;; '.?/ ',' :..' ?.....,..
,"
i,~
173
I
;,~ _.>:~-
"!' 't5,:i'·j,·.,":'.'
tiJ ""',::" '., I,"" '. • ';,~',::,:., ";i ,,~:' :', "'' " :-,
:~:
, .• ,.. .c......
5 4 5 Ricomposizione (provvisoria)
.~~ "'Y::':':.'":'~~;:'" ••
. . ,.".
t~
/~ :.. '
';Slarno, ora in condizione ~i ricomporr~ Ie di~erenti. sezioni: ~a ~igura5.11 mostra
\
.
I I
it risultato. Questa Soluzl~ne e .tuttavla da ntenerSI proVVlsona In quanto. presenta ..;. ,malfunzionamento sull'tstruzlOne ST. L'esame dell'errore e la sua correZlOne sana ',"j, , '". rJ~~andati. al Paragrafo 5.5.1, dopa che saranno state fatte alcune considerazioni sui . <:; ; , tempi di esecuzlOne... . ,,:: , I n 3oggiunt3o a quanta Illustrato 10 precedenza, 130 FIgura 5.11 mostra che la scrittu'a'di un registro di destinazione si ha solo con istruzioni aritmetiche 0 COD l'istruzione ::': ~D. 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 clock12 , il :'; ':' .... ;' " registro di d~stinazione viene aggiornate solo quando~e asserito, RW~ite. Uistruzlone NOP non produce alcun efIetto se non queUe dl far lDcrementare PC ,.,"; ,"; ... " ...., .... ' · · ' -·d·4 1 .
>f'
.
.. n,. l ,.
J
1
"
~."
..,...'.
~ ~·I
. 5.5 Considerazioni sulla-reaHzzazione - periodo di clock
~olo
I
-
'.
~r!
'" , r. ~~
·fl· . .
:;;,
.:'1
~;'
'
, :-.: , y"o,
~..
;. I' ..
.. ',.,
,";
,.
• ,
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 Ulentall deterrnin:a 130 lunghezza del clock Si indichi can 'Ti it tempo relativo al generico stadio , con Tmono,I queUo relativa all'istruzione I -rna e con T mono il periodo di clock richiesto dalla realizzazione monociclo. Essendo
',\ I,
T mono ,/ ::= L T i
" o.
dove la somma include i soli Ti relativi agli stadi attraversati dall'istruzione I _ ma, -' e necessario che il periodo di clock duri almeno il tempo richiesto dall'istruzione di , maggior durata, cioe:
..
..
~~'
,
•
T mono
(5.2)
I
Un caso pratico sara di chiarimento. Per la nostra CPU si assumano i seguenti valori:
)
,
,.,
.
~"I,
..., ,,
-; '
... .'
(5.1)
I I I
n tempo di esecuzione di
::=
max{Tmono ,/}I=1,2•..
un programma di N istruzioni risulta dunque: t mono
::=
N . T mono
• 30ns per l'accesso alIa memoria. n tempo di accesso (in lettura) e il 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 qu~llo di propagazione da PC alla memoria. Per semplificare la trattazione assumeremo che questa tempo 12Per Ie convenzioni di pagina 28 del Paragrafo 1.5 I'ingresso d.i PC registro di scrittura (identificato dal tag RW) e abilitato da RWrite.
e sempre abilitato,
mentre il
f
I \
174
I I I
,.;;:"?
Capitolo 5
-
I\\;!f k .• ','ilI .. ..l
· "'#' ;'\*' ,~ c'
· ~":~ t~ \~:. ,,(.
"'io
", .', sia inglobato nel tempo d.i accesso. Assumererno che anche la scrittura richieda 2l) '.:',;:,
30ns
""l'~ '::.-,.:', '~,
.
", ,
. ';~~ ':": .
'~;~
i ""
~
• 5 ns 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
.','
• 12ns per un'operazione di ALU. Anche in questa caso si tratta di un tempo di :~~"1·'? propagazlone.
•
,,
.., ,-,\ .
'.., I . '
'".
• 5 DS 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 . '~' <'' '
,I
I
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 stabili in ingresso ai registri e it fronte del clock. I tempi di effettiva commutazione 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 di accesso alla memoria di programma),
1
.~
",{
''<'::
"~"_
.i
l"
",:<1"" !.,
.;"1,',',
.~ :,
,", I .
1
I I
I
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 ~ecuzione risulta eSsere pari a. 82xN.
•
I I [
I
,
.,
"'.,1' : J~
,
LD JE/JS JMP
30 30 30 30 30
,/'I 5 5 5
52 82
30 30
-77
5
"
47
5
"
"
'.
•
•
35 ,
.l.-
"
Tabella 5.2 Determinazione della lunghezza del periodo di clock per differenLi cla.ssi di istruzioni. Le colonne MIl ill l 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 e che 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 alquanto 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,
e
". ,.'1
'
.'
"
S1'
i
....
, ",
.ar\;-~;>
-,., .. , • ?,;. -.. ,;' _" .L
~~'
f';", ~~
l ..;
La CPU
.
~ .."', y.
.'
,..
',''.
,", '
.
175
•
,
13
n
piu
. nz-a alcun tempo aggiunti vo prototipo multiciclo sviluppato avanti, per • . -' ~einpiO, introduce sprec? di te~po in tutti quegli stadi che potrebbero terminare in ", ' n tempO minore del penodo dl clock. Da questo punta di vista, per un dato insieme :'.~" ,::~~' ~i valori dei tempi .delle singole .p~rti, 1a soluzione monocicla risulta facilrnente essere pill veloce deJl'equlvaleDt~ mu~tlclclo, anche se malto penalizzata dalla lentezza della . memoria rispetta alIa Iaglca di CPU. ?:.l ,,'
' '.
.
.
,
.
~>:..
5.5.1 Ricomposizione finale di CPU1
:~,""","
::~'.~.
' ' '>
~>."
_ '.
.,','
...
:.,
'.
,
'.
•
',,'1'
e
Cominciarno col mostrare il maIfunzionamento della CPU di Figura5.1l 1 cui si fatto . cenno nel Paragrafo 5.4.5. Facendo riferimento ai tempi indicati in Tabella 5.2, Ie istruzioni risultano decodific~te-dopo 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 asserito 12 ns prima che l "sia disponibile I indirizzo di memoria, cpn conseguente scrittura a un indirizw certamente 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 e ottenuto 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 stabile. Con i nostri numeri 1a durata del primo semiperiodo e dunque di almena 47ns. Un problema analogo non si presenta su LD I in quanto il trarisitorio introdotto , dal fatto che il comando di lettura della memoria e assento 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 ormai stabilizzato. In Figura5.12 viene riportato 10 schema corretto, con rindicazione della forma del clock.
e
e
e
• 5.6 CPUl con memona unificata ,
E possibile costruire una CP U 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 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.
176
Capitola 5
,
1
t-
, ,~,I. ,... "~ U , .,~
calcolato dalla ALU.
'
C~n i nostri numeri la dur~ta del primo semiperiodo e almena .:.~~ :
30 ns.
,." '
In Figura5.13 viene riportato 10 schema di CPUl con memoria singola a singoiri.'>~ j
cicio di clock. La CPU di Figura 5.13 stata ottenuta partendo da CPU1, aggiungendo'~J. il registro IR ,e la necessaria l?gic~ pe: tener c~nto d~ questa modifica. Chiameremo 5~ ' questa prototlpo CPUl...2F. 8, notillO 1 seguentl puntl. -' ~")~1' :
e
• La memorizzazione delPistruzione su IR avviene suI £ronte di salita del clOck. :1~ , Poiche stato assunto che i registri commutino sui fronti di discesa, in figura ;~~ stato esplicitamente indicato il clock negate a IR (come al solita it clock a RF .jt ' PC e sottinteso e non viene indicato), _'-: '~~~ ,., ,::':,~} • Lo schema non riporta pili 1a memoriaj compaiono invece il bus degli indirizzi-- '.'6', " (BI) e il bus dei dati (BD)j relativamente a Quest'ultimo sana previsti i due 1'~>, ~ comandi In e Out che abilitano il trasferimento in ingresso 0 in uscita alia CPU.. <~;~ .<
e
e: :,
e
', ,..." " '
,
"A'
• II multiplexer che seleziona il data in ingresso a RF estato disegnato in prossiiniU: di RF stesso. , ,,,,-,t , , ,,: '5
• I comandi MRead e In vengono sempre asseriti durante .ill, mentre durante 4 ': ',~~~ ' 2 vengono asseriti solo in presenza di LD, , , .:::} '" " ' 'i,,:> '
Infatti;- '~',:i'i~ : 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 .' ritardo T > 12 sulla linea ST, in modo da compensare il tempo della ALU. Nella;; ,; discussione seguente assumeremo T = 13. . ;:,"x;:
'. n comando MWrite richiede un accorgimento per evitare false operazioni.
,
"'01" "
J. "
•
'
.. .'
'.-: ., " , "f..
E istruttivo seguire la seguenza di eventi. I valori numerici riportati si riferiscono.
,
:I' ; ,
.':-i~ ,.
al tempo del cido di clock:
T· ...
0:
:
\
£ronte eli discesa del clock PC viene aggiornato a puntare alia prossima '.'1~~ istruzionej il clock va basso e MRead viene asserito (risuita asserito anche In); ,,:;'f ~ "II
BU)
.
~~ "
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; -:~h 35 : la decodifica dell'istruzione e completataj gli ingressi alla ALU sono corretti. In caso di istruzione LD sono asseriti MRead e In) in caso di istruzione ST e asserito ,.. '": il solo Out; .'It
. 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 •
\"
•.
77 : 1a memoria termina il suo eventuale delo;
"I: ,
82 : termina Peventuale fase di scrittura nei registri.
,
.
"\ I',
.
~
"
~h:: .. ~,,;;.,..
~~:'-'';
".
,~~;;iI~.~.:'
"',':.' ~~\,l),t~';;·..:,
c. 'TJ;:l" ,: ·tr;,: ., ' ,,", "."1"',0",,, " , , . , ..
,. ,
'
~
CPU ,.'; -': .":'.;.,-- '------------------------------=-=-=--=-
1~i1,.,,:- ---'~
-- 1\'.) r) ''".';'.:. ~ _
l
,
~o
'.-
177
U:·'"'i:."::"" : ,~.,',;!",'j" :"',",
'':/-'''''','.-,
:::it.~;~-'··
',: '.' "•
+
-
•
j~:,i:·::·:"~~: . :-::
.:-::' : . , ,
':'i.;:~
::':>
t.::
,.:,i
l. '.,
,
~"'.
:,:', ,.'. '~>, "',:""
:,..,' ',',',\ .. }' 'i.:;_ "', '·'.-i,',:'.
": ",
•>
•
I
•
0
.-.- "'"
I
I- .
••
..
,:,;
,<,,
, ,
N
•
,
~ ~~,:
~ , I~!
"
,t,
_.
>.
~~;.<:\': ;', .<:';.:,:."" ', .' . ~,;;,
"
I
.,
':,' :.,"
'~;::; (:~:~
1
i l ) .,
1
.' ',"
"',. .
:.< _~.:.,' '",~', ",'
'~::
•
<
".
:' ,
:"
.
.,:.''
;(::'
.~
:.;,"
\'" _._. ':
~~,...
.
";:;'"
'.
,~';. .
h.
' ,
.
,
)
CW~
I I
''"" i
~.
:;.; :,: .! :";~' ",: "
":;..: " .:":."
1£:1:
~
!~ ~
rr~
rl
:1
•= •..
1 I
J
0
9
I
, • ,
WI", ',
•
~
t 'i
" r
I
44
I . !
,
~Il;:;l'l
f.,£.
~ ,
.,
Figura 5.12 CPU1: schema finale, dopo I'eliminazione del malfunzionamento sulPistruzione' ST. In alto a destra. viene riportata. la forma d'onda del clock; il primo semiperiodo deve non essere inferiore a 47 ns.
I I I ) •
I I ,I
178
Capitolo 5
""
"~
,~I
;.J ,<
" "
-'" •
!
,-<..
.
•• •
'
-.1' .J
1
•
-
f,
,::.,",~ ~
Ie
•,
I. ,
\
:,
"
;';;~l~ ~ . :'~;~ ;F
!
t
,;
-
,',<~~ '~
l
"'' 1'K :
",,~~~ ;
);m ;
·,.,;4t\ :. ,..ffl~ :I~'
,; ~i~ ,,
-
':~::r:
's~$ .
•
t
;
,.....i'!; "
,J
,-
, I
t ~
ill
~
\
·:,7r.t '''
•
,:j1 .. I' "
': (~ '~
.. ,
=>
•
~",,-
'
.::~~ :'
~
~+
I
::1il ,
,,
.!l
<
,:
• ":; •••• 1"
· :'~-$ ~;
· ~ :
="
,'-:;.!£ "-
& :::II~ t,
',::.:)1 ':';
"I "
,~
'.• "")1 .~, {,~(
I
:iil ',
., ,
I
, ,
,
<
.
i,= "'l~O
i • •
,i.
•
.~~)~:,
,
·'.Ii! : ';;, " "'N'
.
, i
.r' -
•
• ••
0
•,
II
-
,• •• ,;
I
•
·• ,• . . . •
~
•
· ,"" 'I' N,
.I
t
'
· ~j("'
,~,.' ". " .
.,
':
", •'0;'1
J
.:" . ,>~} :'-
•
;~ : 'l
.~
',J
:,;:\ . .,
..'L
•
.~
:
•
~
:';.~ I .' .',,", , ,.. ".' ", ., .;'" ','"
-'"
,
"I
",.'. !"
•
i
,...- I.,
•• A'~ •
'
I
".
<':\.
.. :<: ';'-
• :::
,"
'd
•
0
v
,~,
•l
~
',"
•
.::1~ .:'
•
I
~I-
!
,
'·.Jl • l '''1 ,"
·
c
'" CPUL2F: schema. di CPUl a singolo clock con usa delle due fasi.
Figura 5.13 II primo semiperiodo ha durata pari aI tempo richiesto per la lettura dell'istruzione in memoria (30 ns).
.,..
,.
"",
, ",.w
~
.,
'''.
..
..'':'(
,,,
,'. ';r;
I'
;'
".
j
,",
';< ". .:'.~ ~!
·
...
,'I~ '0"
.-'" ,I "' .....
.,~.~'.-:.'
tl'-''''~!' HoF .,.-
r,r:d::~.··::,
'~~.""-'" -I'r;':;"~' ,'
"J: e'p·~·, '.
~":i'·;"','
-------------
I;;,'.:.".'T '" ' J.' \1' :,'. I'" ,.. , <', -,"" ,
":i:~" "~J •
;'ffJ'~'
~"""
",
,;.
-=:La=-C.::.P:..U=-...:1:.:7.::.9
-.
~?r·:-:::-· ._ La CPU di Figura5.13 contin~a ad avere uno specifico sonun~tore per il calcolo F'~).>, . del PC. E possibil: modificare l~ sch,ema in ~od? da impiegare la AL1! ~er effettuare ~:< ,.>, "l'incremento di 4 dl PC duran,te .11 pn~o semlpenodo. Purtroppo, pew, il so~matore i ... :
e
~~',,;:,<:.. ; 'in questione no.n pu~ ess~re ehmlll~to III .qu~to pur sempre necessaria per 11 calcolo :~r:'·:" :':. 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 ;.:.' :- '; risultante non sarebbe piu compatibile can CPUl dal punta di vista del codice di m·acchina. 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).
.V· \' , .
".' ..":.1 •.
,"
';:.'::.:>
:::~:;
p' " ' .
..... ""
"."
.'.\..
,;,\5.7 Sviluppo di CPU2
~:-.,
'",'
,',
",
.:,
'
'". Viene ora sviluppato un prototipo che esegue istruzioni in piu periodi di clock. Questa ;i ~'~":' 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 ;;:':',' :" " :, prototipo sono) seguenti.
'\..
" .. '.'
,~ .'
• 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 comune a tutte Ie istruzioni(Cfr. 2.3).
,: '.
l
..:":.
"
:',' .
,
'
"."",
"
.".
' .
','
';'i"
.~ ."
;
: '.
,-
.. '.
' •
••
'
l. "
-' ", ,
J,.
\:.'
;
..
e
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 e in larga parte iniluenzata dall'architettura e da considerazioni di cenvenienza. Nel case specifico, anche in riferimento ad argomenti che verranno iUustrati piu avanti, vengono individuati i seguenti 5 passi 14 :
•
•
IF - Instruction Fetch. E 10 stadia iniziale corrispondente al prelievo dell'istruzione il cui indirizzo si trova in PC.
• .
,
'"
"
'"
'.,. "
,
w'.
.,
..,'
'..,
ID - 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.
EX - Execute.
E 10 stadio in cui viene svolto Hlavoro principale richiesto dalla
specifica istruzione.
j,'
,
. !.
...
"
'.'1 . •
14Non ci sarebbe niente di strano se, per esempio, se i due stadi ME e WB si riducessero a uno solo.
10
stadio ID fesse conglobato nello stadio IF
0
<~l;
")f:..
180
""-""II,; "1' , '.'
. Capltolo 5
, : ,~.~ '..'
...::
:fI:,'
1*\
ory
ME - Merr: . In questa stadia viene letta ope:r;-azlOne 10 prevede. '
0
.' f I~~~
scritta la memoria se il codice di .'
',,,i~ 10 stadia in cui viene aggiornato il registro di destinazione: }~ .
WB - Write Back. E sempre che I'istruzione 10 preveda.
""i
"''
...~~ ..
,
,
--: Facendo riferimento ai due rnacrostati Fetch ed Execute di cui al Paragrafo2.3 Ie .~!'~ 1 fasi di IF e In appartengono al macrostato Fetch, mentre Ie restanti appartengono .~>::j\ al macrostato Execute. ",'~fi
,"">'",
......
;.
" • Poiche presurnibilrnente Ie vade parli non saranno impiegate per tutti i periodi ;~',1 di clock, conviene ottimizzare 1'uso delle risorse in esse contenute, evitando le"""'7~ duplicazioni che si sono rese necessarie nello sviluppo di CPl. In p~rticolare, ' :';~ 1a ALU potra essere impiegata per i1 calco1o dell'indirizzo di destinazione dei . :?( salti con
'~':::::
• 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 1S era presente ai sui ingressi , Nel caso di CPU2, PC viene rnodificato su uno specifico clock; e quindi da preveclere la logica che abilita il caricarnento in PC solo sul clock dovuto.
" ",'
',' '!
~:
'.
.
,;,~
.
,
) .~:;
',,,
.."
'':'~: ,, "
• '
5.7.1 Fase di prelievo delle istruzioni, IF
..
':'..
n prelievo delPistruzione richiede 1a 1ettura della posizione di
memoria it cui indirizzo e in PC, 8i rencle necessario un registro di appoggio per memorizzare l'istruzione tetta dell'esecuzione delle azioni richieste a,.i passi successivi. II registro in questione eaiilfiniregistro IR.
,
;
" ,'.1,
",,
"I'. .,
.-
~
Poiche in fase IF la ALU non verrebbe utilizzata, conviene approfittarne per ._: 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.
"I
"f
5.7.2 Fase di decodifica delle istruzioni, ID
r. ,
Questo stadio comprende essenzialmente il decodificatore del codice di istruzione caricato 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.
"
,; .1
".
, ,-:
,,,"
l~Secondo Ie convenzioni stabilite a pagina 28 del Paragrafo 1.5, Ie figure relative a
presupponevano che i segnali di abiUtazione degli ingressi ai registri fossero sempre asseriti.
.
,",
CPUl
".
\
""''' ."-'.'
. "".,~,_·1' .• ;li?!::i '
~
,~".,'
)~p:/;,,;'; .
La CPU
l
,1t.\,~,._",:,
~ :.:):;i:,':-':::,. ,
i\' " 0 ';':"
~,
,
_
....
',:~
\ ,..~,.,'
1
M
0
4
( '.'-:':'. ;
; •' . .',. , ,.>:,:.
IRWrit.. l.IR...d
I
ALV
IR
i
,:.. ; 1: '..,: ~ ':,' _ ' ~ :', <.
L
A
::.", .:, ,'.". "
I
-
,-
,
""
~
J'C'lfrlt..
i;
,
1
,--
''0,/,". '.,' .' •
~ 't;.:._-.~.:-: ~ .,;:",:_._
181
B/
.. OPAlU ContrALU
\
.' 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),
, : t:",
' " ,"",
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 scostamento 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 condizione 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:
'
',"
~'''',."
. t
"
...
essendo SCOST l'estensione a 32 bit del campo OFFSET moltiplicato per 4. Lo schema dello stadio ID e in Figura5,15,
,
'
'
I:' '
0-0
' I..'.-;
.
~
I.:.'
c§l.
8-10 11-1~
,,'
..
'
IRIll
'"
"
',
A
RF
, IALUI
• l~
10-31 ' , SX4
"
I;",
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.
.. "I"
,.
,
DI:STWrll..
"
..
"
, ',",'
..
J
I
1-. ,
,
,
OPI.LU 'ColltrALU
"f
.1·,
:seo!!'
I 1
c
B
,; :",-
/
)
1
B
I"
.,
I
DEST+- PC + SCDST
,
.1"',,', ' ;",'"<, • ..
.•
\
'
.,
'
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 ~uesta 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.
I ••
lS2
I
:
Capitolo 5
1
,
~·.:
-"
i ':. .. ' ..." ..
,
-,.,,:~!
,;
,
."
- 'i;~~ to, ,!,,
5.7.3 Fase di esecuzione, EX
;J;E "
< ":"i _
'.
,I
I I,
:,",}~' :I,
11 codice di operazione decide 1'azione svolta in questa fase. Viene usata la ALU per Ie' :~r: ~; operazioni aritmetiche) per il calcolo della condizione di JEj JS e per il calcolo dell'in~ ."':::: L, dirizzo di memoria delle istruzioni che a essa fanna riferimento. Essendo disponibile ,';~: ! ':; l'indirizzo di destinazione del saIto condizionato, se la condizione e vera viene aggior_ .~,~:' )_ nato PC. InoItre PC viene aggiornato anche per l'istruzione di salta incondizionato, :.:i;~' ., In conclusione Ie azioni svolte sono: , '::'~;,: " Istruzioni Aritmetiche: ALUoutt- A fALU B , ,i:;';: .. Istruzioni LD eST: ALUoutt- A + SCaST "',;ii:' ,,, Istruzione JE: ALUoutt- A - 8; if Zero then PCf- DEST "3:,'i< :". Istruziane JS: ALUoutt-- A - 8; i f Segno then PCt-- DESTfi; " Istruzione JMP: PCt-- PCJMP Le possibili alternative sono illustrate in Figura5.16.
.:) \j
"1'
"
I
'
, ,,'! ',,'.
,
"m ~ RF
i
_.,
(
,';~h ""::,31,', ; ".',
- ":,::'I'
,
-0,,'","' ' ': " '.
",
.,
<~:
I If_3'
~ . 3CQln'
·::;:5 ' '
I
".',
.. ",
0-0
':'J?:
"."
'. :,I
'" I~ f_'o
i,
~
11_"
"
'*
1=
" RF
II
:r!Cb;l.
'"
'C. """....
'"
0->
• I ...
.L_t~li
., -31
"
,~
-": . "
" .
',<~
·
"f' •
Ci,.. ' .,
"
I
:,'
'
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),
,:.1
"';~I, ;', i:
i
;,
..
-' " ',\
'
,:,
,.
"
·. i
• 5.7.4 Fase di memorIa, ME
!
Viene letta 0 sentta la memoria. La schema della stadia svolte sono: Istruzione LD: DMemt- H[ALUout] Istruziane ST: M[ALUout] t-- B.
'
,'.'
, ',r.
e in Figura5.17.
'
...
,,~F
Le azioni
,·,' ';,1, (
,
.',. "
I
.
L'
.-,1.
';,1, ," ',;" "·~I
r;i'iirt);;" '.-
~il11F;;, ::,':'-", '
:n~!i,;,;",.. '
La CPU
:::t'F·
lS3
_ _-----------------------------='-------.l.tit:"i. . , ' '."'"., ,.-, -
"1'"-''''' iiitli'i":" "
,-.
,,~.,.
..',"; ,: "
"~
!:;,:;;~y<:,,,. ._
"::~';,_c-'
_.
"
'"
,:~,,,_,,
;?~. ',',
w
1="
0_10
L,,;,.' . ,.
••
I-
; ': .
,
",
ll-IS
..
RF
•
""-3l
'"
". '.
,
,' ,,':'
. ..
,
•
seo... op>.w
M
rc.n~:U~
~
r
7 5
.fi..
" :,' ." ,
,
'"
~,
.',' <
,
;'.,
:.( .
'.
Ilr'r~ "--1"
Figura 5.17 Stadio di memoria.
.;'.'"
''
>.W.,,\
~
_,
,:::.
.
.,
',
.
e~ten
'
,
IITO
1~_20
.
"" ""'
•
':,:"
'co
•
t
.
~-IO
•
RF
,
'.~"
'"
.
. I' t ale registra di destinazione" Per Ie istruzioni aritmellche 11 Viene a?glOrna.to alula ALU per la LD sul bus dei dati (Figura5.18). valore 51 trova III USCI a ,
1l-1~
,c'· "
.
Fase di scrittura del registro di destinazione, WB
,
"'"
lI-jfj
JJ.Uoul
JJ.Uout
RF
,
,
.J, •
R1fnh
1~\lril
•
,
M
,
r
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
' ,
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 fu~zloni d~ selezione, come ?llre tutti i rimanenti segnali di controllo, vengono esanllnate nel paragrafi seguentI.
;,; "
"
5.7.7
"
Segnali di comando
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 un automa a stati finiti. relative 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.
.'
e
"
.
"
"
'J,'
n
•
184
Capitola 5 -
-'" 0
,••
,••
"
·
•• •
•
>
•
.
0
,••
-
~j
u
I
·
1\ r
J
< •
,
.•
, '
"
,•,
~
u
~
I
,•
I
"
\
...., l -
.
,I '" ~.
,
I
:
0
~
t~ ...
u
~ '-
•
,• I
'"
III
•
u
•
•
<
~~H; "l!Ol~~
•
1 •
,
1•
:
•
~
•
,,-
•
<.J
5
,
•
I
l,
I
-:
.1S30
• u
,
,•>•
I
•
i •
• I.
•, 0
,•>•
•
N
::> Cl.
u
:!:
.
-
~
,,, ,, ,, •
., ,•, ·- .-
•
~
< x• x•
N
,
~ ~
0:
,
2b. ''""
Figura 5.19 CPU2: ri5ultato della composizione delle differenti 5ezioni.
",jf/.:':
}
i~~1?'--:: ~i~~r!;;~:::(
.<~
}J'~
-
,~I-_:r;·-·"
":<:?i~ fP~(~~(-:':'~" .. p'l~~
~~;.+!:,
.... ....(I'il .' , .. -;....1;/..-1 ":('\',l"
y~:(~:
· •....:ll
La CPU
. ..
185
_:.._-------------------:--------...:::::..:::::...::..-~~
,'_ ,:
:1~{t . :-~~:.::-;. :. -_ II diagram~a di stato a~regato e}n Fig.ura 5.20. n primo macros.tato corrispond~
'::/1' :';'-:.:'.>:.;, aila fase di p~ehevo e de~o~l~c.a d:ll ~struzlOn~. A esso f~no.s:gwto ~ ~acrostatl ";:'t1 ,~."\:',""~" orrispondentl aIle 4 clasSl dllstruzlOUl. Tuttavla l per specificare 1 segnah di contrallo ,.:.:"'.H ';."~,}::,->fl diagramma d~ Figura 5.2.0 e cli. poca ~ti1ita.. Oc~orre piuttosto rife!irsi al diagramma A~ :."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."'I'.. ".:':,'.'.,.- ",.',,;,~ ,::,:' ", ,
1
'.
.
.1-:17 .:' . !, ' ~, . ' '.
· '. .c,'t:
. .'" :. ... . '..~~"·. . :....• '... ,' .., ' -~
'.
:'"
,,-. ,~i.,. :,:;.::::: .',
• ",IT "
'.'
"
Prelievo e decodifica
'';n :.; : .·il ." " ....'t~ :A~:':"
,
:1,-:'.' · ,: ',i .... , ·,'"'.],'. . .. , "., , ,..,.j.., .. ,, ';."
'.. .. ,
~
,':, :1
....; jI, ,.
,',;.t ':
.
I,
RHMem
'.
r. '. ...'-1'1.:.,
,
.
/
-; "
''','/p .'::'~: '...
,:; ,..1, '
, ,
, 1/
.,
ARITM
JEIJS
,
/
•
•
•
JMP
.". 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,
.':':~:,."
,.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: ~,;N
,.•
.
• • • • • • • • •
MRead: In: MWrite: Out: IRWrite: RWrite: DESTWrite: X..PC+4: X..PCJE/JS:
per per per per per per per per per
\
•
", ,2;':1: .,;.::' ::,'
::'::r
I
Avvio
,
,
:"i~ ,,',: ;" 'T"" ,.': ; ':'),/
)
.'
'
.
'.
)
leggere 1a memoria; mettere il bus dei dati in ingresso; scrivere in memoria; mettere il bus dati in uscita; scrivere nel registro IR; scrivere nel registro di destinazione; scrivere in DEST; abilitare I'ingresso a PC; abilitare I'ingresso a PC;
-. 17Q~esta a.saunzione e alquanto 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.
\
I
I I I I I ,
186
I I
Capitola 5
• X.PCJMP:
per abilitare }lingresso a PC.
Ci sono da specificaxe i seguenti selettori, tra cui
• • • • • •
INDsorg: PCsorg: SALUI: SALU2: Rdest: Sor,ge:
I
e compreso anche OPALU:
per selezionare la provenienza dell'indirizzo di memoria; per selezionare la provenienza deJllingresso a PC; , per selezionare la provenienza delJlingresso A di ALUj per selezionare la provewenza dell1ingresso B d.i ALU; per selezionare il registro di destinazionej DeT selezion;lrp I~ nroveoienza al registro di destinazione; •
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: • X..PC+4: • IRWrite:
per mettere BD in ingresso; per abilitare Pingresso a PC; per memorizzare in IR l'istruzione letta.
Si Dati che a differenza del comando MRead, che esplica la sua azione con Ie modalita I
I
.
.
,
....::,' MRoad
. .':
in
X_PC+4
JRWrite INDsore=l PCsore-O SALU1-0 SALU2-0 OPALU-ADD
.
-
,
32
DESTIfrile SALUI-O
.
SALU2-2
OPALU-ADD ~I/
S1'
l.D
, 1/
,
S3L
SALVI",,! SALU2",,-2 OPALU=ADD
AR1TM
'!L-
/
SALUl-l SALU2_2 OPALU-ADD
SALUI-I SALU2_1 OPALU=ALU
,
·,
I ... 84'
SALVI-I SALU2..Z OPALU"'ADD
lNDlIori"'O Rdest"'l .So r le"'1 WRead
..
54S SAWl-l SALU2-2 OPALV-ADD lNDsore-O· MWrite
J>lP
I...
3
33A
SALUI-l SALUa-l OPALU-SUB
'k::..
S3J
X-PCJMP Pcsorg_2
X_pen/IS PClIore- l
S1' •
JE/JS
•
S4A
•
SALUl=l SALU2=1 OPALu=ALU
Oui
in
,
~ 1./ S5L SALUI_l SALU2-2 • OPALU=ADD INDsore"'O Rdesl""l .Soree"'! ),(Read Ih RWrile
... S5A
SAW1-1 SALU2=! OPAUI-ALU Rdesl=O Sorge-a Rlrrite
•
.
. "
, 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.
188
Capitolo 5
..
'-~~ che sono .prop:ie dei . la memori,a, i riferiti registri hanno l'~ffetto dl ablhtare gli stesSI al cancamento del lora .mgress l a concluslOne del periodQ :~;i " dl clock (Cfr: 1.5), , , ' /:>1 : Durante Tl 1 seletton devono assumere questl valorI: ::.~;.y :
coma~di pe~
c?mand~
~
:'-3~~ ~
,{,re
• • • • •
INDsorg == 1 PCsorg == 0 SALUI = 0 SALU2 == 0 OPALU =ADD
Stato di decodifica • DESTWrite
per per per per per
'-'l·t,t,
trasmettere alta memoria l'indirizzD contenuto in PC; :: ~:~ ', selez~onare ~C+4, prodo~to da ALU: come ingre~so a PCj .,~"';~ > seleZlonare 11 contenuto dl PC corne mgresso A dl ALD· _'~1 seIez~onare ~ come ingre~so B di ALUj , . :,,:,'~~\ : selezlOnare II comando dl somma alla ALU, ··S~~ j .,\~
.<,,:,~~ "".,
'<+
Durante T2 (stato S2) cleve essere asserito il soto comando' J . . '.;1~~ ' per memorizzare in DEST l'indirizzo di destinazione dell'eve~~~;"~~f · .::il! " tuale JE/JS 'J "-t
I selettori devono assumere questi valori:
_•.. :,~.,,&~": , , '... ,,'~ .
....>\ '
··..:;:~lf~
':'~M,
.,;, .......
• SALU1 = 0 • SALU2 = 2 • OPALU = ADD
"".'-
per selez~o~a:re il contenuto di. PC come i~gresso A di ALD;: '/:tl per selezlOnare SCOST come mgresso B dl ALU; _, ..:';;~ per calcolare in anticipo l'indirizzo di destinazione dell1even_ ~\~~ i t uale JE/ JS. , '6~ : c·(i(
5.7.9 Stati dipendenti dal tipo di istruzione Gli 'stah successivi a 82 vengono esaminati in riferimento aile differenti istruzioni:
':\1;' ";~j~ , :,J~~ ":{~j
"'k1
, ".::~~\~
Istruzione LD Durante T3 (stato 83L) i selettori devono assumere i valori di ',~~;, seguito riportati -(non si rende necessario che sia asserita alcuna linea di comando): . <~ '.
• SALU1 =1 • SALU2 =2 • OPALU = ADD
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,
,.,~,'i.
,',.:~~
, '1~
"~\: ,~:t:
:',·d
""';'~
>q
Dopo T3, I'istruzione LD richiede due ulteriori cieli per completare l'esecuzione I8 . In T4 (state 54L) devono essere invece asseriti,questi comandi: , :;~~ :."~ per leggere dalla memoria; ,;~ • MRead per mettere il bus dati in ingresso, ,;,:~~ • In . '':', I ,_
I selettori devono assumere questi valori:
"
.' ,
''!
, "
"'I
',~:'
"~I
18 Abbiamo infatti stabilito che Ie istruzioni che prevedano la fase di WE prendano cinque periodi di clock,
, ,.\
'1
',f.,
'"-~"
li'n,,::' -.
.i~'~' ~~,' _)"'l:"'" :i.J' ....
\
_
'l;....,-'~
-.rDli;'F '.~-' .
'!~f.~;~f::_'-·.;:, .:.-_-------------------------....::L:.:.:....:C:.:P-'U"---.:1:.:8:.:.9
~?l~<.:..,~·.--
_
..!i!;:Jt'".;;J; - . _
~,\~"
~~f.f~::{1V~_-:>· SALVI = 1
_.
"~~:;;':~:':-'"
:~\i'"
',. SALU2
:.
:.~:J:;:'.:"
" dt ALU;
=2 OPALU :=:ADD
e ';;.' .. . "~" ..:.
p~r mantenere selezionata l'uscita A di RF come in~esso A
. . . . per mantenere selezlOn.to SCOST come mgresso B d,ALU; p.er mantenere 3U ALUout l'mdmzzo della p051Z10ne dl memo-
ria'
,.:
,'/'}:".; ::::"', ' • INDsorg =0
>f{(':':':, :,
'{:.::;'" \." . Rdest =1
:~,(f!~~~:'~":'e__:' Sorge =1
j . (,::~.,~,:".
·~~tjjt,:;:~·,:
"!,,,,,, n, ::,'
RWrite
"'
per mantenere aHa memoria I'indirizzo calcolato da ALU; . . per scnvere nel regIs~ro Rsd; per selezionare Ia provenienza da memoria.
per scnvere ne regis ro
1
.. lD
\
.,
T4, m pm
SI
estmazlOne.
I
, "
("':"~'J'",
,;;i';~~;L,:~:>
.~:p ~,~,.'!i,.:--:""
'>C
I
'
n~~,:,,~,{1:tn,·T5, restano assentl gh stessl comandl e selettotl che 10 erano '.li: "';'\:':~'~~ agaiunge il comando: ~"{""n,. o· J.. ~~~!:::>:'. :::::, " . . I ' t d' d ' ,
'f/:'<~i':->:'-,
I
',' '" 'c
,<".
~.~~,';.,.;,
~:;I):\\,:,~~,
'",'..
.
l~~;~~~;',:)~£Ishuzione ST L'istruzione ST si completa in T4 (stato 845) non ricbiedendo la fase
I I
Jftt:::~Y~<" Out
1
':,"':\'1,":"':,.<,'-
,,', J#:~;~i(:,:'--: \,~:;~~'~:i["~~:' ..
",
~".'
i~~;:~~':~{;,.~ t~ .''; ,,.}\;..,:
F;~,:::,~·,:'_"~~':'-i
..
.'
.: .". :.
,
t~"(::~:~i:,:,~,. In Figur~5.21 i~ terzo stato :i.~~:';}~:~;;;:~,~~~a 186) dl assenre su T3:
e identico a queUo di LD. Tuttavia, si e convenuto
per me~te.re in anticipd il bus ~ati in uscita e presentare alia ~";Io;;~,:~::'~:>;" memona il contenuto del registro 8Orgente; ,l1~~',~"':~;':~~.':-.:~:., INDsorg =0 per trasmettere in anticipo alia memoria l'indirizzo calcolato ~:J.i·"::-:\{.~:". da ALU. ~;f;;:,'.:;~~Su T4 devono essere asseriti questi comandi: .f'll ,t.• "" ,•. ,
"
'j
"" f "
:j:';:':' ':. ';',. MWrite {-. ::,;' ' . ~ • Out '."",
per scrivere in memoria; per mantenere it dato alia memoria.
.'
:~:'i':/:::""" 1. selettori devono assumere questi valori; -"",.'"
'
..
),:" . i:,';-,.
,','
'. SALVI =1
t':.,:·, ' :: ' ,
.. ,{:" l;~;::
" ;':' SALU2 =2 ,. OPALU :::ADD :" INDsorg =0
,,',,:,V.. " ... " ' _
per mantenere selezienata l'uscita A di RF come ingresso A di ALUj per mantenere selezionato SCOST come ingresso B di ALU; per calcolare l'indirizzo della posizione di memoria; per mantenere a~Ia memoria I'indirizzo.
<
" , !!.", ,,',: '
I"~:,'
. ',
;
1 ". ,' ,
'.~<.
,
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 necessanD che s}a'asserita,alcuna linea di comando):
I I
"
,
190
~!l
Capitolo 5
\j.
\H);
~1l1;t:'J
lmr#
Iii'" .I'•
• SALUI =1 • SALU2 =1 • OPALU =ALU
~=tJ.~
',1\
per selezionare Puscita A di RF come ingresso A di ALU'
~'~~:'.. ~,£?~:~
per selezionare Puscita B .di RF. co.me ingresso B di ALU;' '.;':~i~ ~1~~:~' per far efIettuare l'operazlOne nchlesta da! codice aritmetic " dm :;::?~~~1 o. •..!/:tJ.4) '·I·~r ·"'l· . :-:'h t::l;::' In T4 (stato S4A) si mantiene tutto come in T3. ,..,' ,,"' ,~
.
·'~.l
In T5 (stato S5A) deve essere asserito solo it comando:
.
',,'
t,l) "t'~.:'
per scrivere nel registro di destinazione.
..'.
..:.,
-.' :'~
':/<~:~.
q"I'·~"
.,
I .'
. -'", t..; .',,:• '<1 "~"
Restano confermati i tre selettori precedenti e si aggiungono: • Rdest =0 • Sorge =0
'''';.'
lQ! ',jW , ",~:'i' >;T:t~ "1
• RWrite
~."
.', "Ih' ,",-:: ~:,."""
per scrivere nel registro Rd; per selezionare la provenienza cia ALU.
~'~:~, ',',\' '''."'-; " ,.': :" .':.~,:i "", , '/ "",. .. ,." "~',. ~'~
~
o
0
•
•
0
_
Ricbiedono solo un cicIo per completare. In T3
IstruzlOm di saito condUlOnato (stato 83ES) e asserito il comando:
• XJ>CJE/JS
..
,.
. ,
.~i:~ ~t:'~' ~,:- ">::~"',.
,::;~: >::~ ,,~:1-
per abillt~e 1mgresso a PC se e vera la condizlOne Zero su JE ,:','i~ ",:\. o la condlzlOne Segno su JS. ',', ;., '..
I selettori devono assumere questi valori:
:j;' t:::,», I,
• PCsorg =1 • SALUI =1 • SALU2 =2 • OPALU = SUB
',:{.\
per selezionare la destinazione del salta condizionato come in- :-~ :." gresso a PC; per mantenere selezionata I'uscita A di RF come ingresso A '):' di ALU; "" .;: per mantenere selezlOnata I usclta B dl RF come mgresso B di ';{ ALU , i , '.: per confrontare i due registri. ':i,:~
Istruzione di salto incondizionato Deve essere asserito solo il comando:
per abilitare I'ingresso a PC.
n solo selettore di interess~ e: • PCsorg = 2
•
,
per selezionare PCJMP come ingresso a PC. "
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 e sufficiente un contatore ad anello come quello di Figura 5.22.
j
;,."':'
",
,o~.
,>'~'(
,:"c,
,·.}:t:
:;'1: -'·;,r o
;:"
," .
,', ".: f
"',;;:::
'r .,
,.: '.',, . . ' : : . '. Pure questa nchlede solo T3 per completare. ":, ,,:., -
• XJ>CJMP
:J/.
• "
, ','
'.,
'.... ,. ,, " . ',.
'lr~~"" ''f, ~ .
'.f.·~'
l'})"
,
.1f~,;:-,_-------------------~--:L::.:..C:.P:..U=---='.::.::9'
;'~'
,.,
J.;<.,,~'.
,":.. ~ -
.
~J~\,:~:..
-
'•.•. '~ '"..,.... '-
~i;},,;· . .·
'~:'~;;):<' 1i:',:':/". ' ."",~ , . . '....' >:', .
T2
T3
T4
T5
1
2
3
4
5
" " Clock "L..J1.
",.
RSRT
' .. :.~ '.r ,). r" .
~ ,. ,,~.
Tl
I
., .
.-<
..:.:.,', . .
'-
~
'
'"
: •
0 :
JE JS IMP
ST
",
.:;, ',~, '
.
:::,;>':". 5 22 Schema del contatore che decodifica 5 impulsi di Figura.
clock. e riparte . . da. , Tl al '-:'... term me . del conteggio 0 in presenza delle istruzioni che duranD meno di 5 penodl dl clock. ", .' " .
",
(.
.:
,'-, .
' '.:'-~;: Comandi A titolo di esempio mostri~? corne si costr~ce l'espressione algebrica. di .'.:,,~. omando. Consideriamo per esemplo II segnale RWnte. Esso deve essere assento
~;o\""~~ ~5
per Ie istru~ioni aritme~iche e su T5 per I'istruzione LD. Ne consegue che ./•.. :.Tespressione algebnca per RWnte e: .'.: ~_ . _ • • _ .( RIT LD) = T5 .' ., . RWnte _ T5 ARITM + T5 LD _ T5 A M+ ci ~ano solo ,LD e ARlTM. ",:,', ..... : In concluslOne 1 comandl sono:
,:"i. ," in Quanta su T.5
, ", . _ .
('~, ,~,,:
_MRead
,,:;,'.'
.. In =
=
Tl + T4'LD + T5.LD
:~~:~· '.' ,'._ MWrite :::; ~ Out = IRWrite = ..':,'.'. ," ' RWrite :::' .:(' " .~ DEST\tVrite :::;
Tl + T4.LD + T5.LD T4.8T (T3 'I- T4)BT
,', ... XJ>C+4 = . ' . ' .. XJ>CJE/JS = ,:" ,. . _ XJ>CJMP =
Tl T3·(JE ·Zero + JS ·Segno) T3.JMP
1:.<::'
":,';:,,",.:...
'_
"
. ',.
" . ,' .,
Tl
T5
T2
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)+ T5·LD - SUB = T3·(JE + JS) - ALU = (T3 + T4 + T5)·ARITM 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 e indifferente, 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:
- Sorge =
T5·LD
192
Capitolo 5
Analogarnente, adottando la convenzione di no valere 1, 5i ha: - IND,org = Tl - Rdest = T5LD - SALUI = T3·(ARlTM + LD
+ ST + JE + JS) + T4 + T5
5.9 Considerazioni suJIa realizzazione multicic10
'Tmono,X
T m 1.lltt,X
== Tmono ==
L'Ti
= X . Tmulti > ImonQ,X = Tmono
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 T multi,l =:: C P Ir .Tm.ultt:. Se PI e la frazione di istruzioni di tipo I che compaiono in un programma di N lstruzioni, i1 tempo richiesto per I'esecuzione e data 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:
.' ., ,
., , , .;.
1 I I I
193
tmono == N . T mono
(5.6)
)
I
•
I
I )
19Le fasi 10, EX e WB richiedoDo di per 8~ ~empi 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 e sta.to preso di t2ns, mentre il tempo di ID e stato 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.
I I I ,
194
Capitola 5 -
,,",';i, .:':" '-\! .''-'''
; ";~~
0,50 x 150 + 0,20 x 150 + 0,10 x 120 + 0,15 x 90 + 0,05 x 90 = 135ns.
f
.;;
"
':::~ :;,:,::
Per un programma~eesegue N istr~zioni, il t~mpo totale impiegato e pari a Nx 135 ns' ':':Jt: ;":. Val.e l~ pena dl osservare che. SI tratta dl un tempo superiore di circa il 65% d: ,'?~' ::' quello nchiesto dalla CPU monoClClo (100 x (135 _ 82)/82). 1.:;: "
,''-,
5.9.1 Miglioramenti a CPU2
;'"
Ci sono pili modi per migliorare CPU2:
""" ' , '~:'
a)
:-:d'
~ticipare p~r qu~to possibile Ie operazioni, in modo da ridurre i1 numero media
di clock per lstruzlOne;
s~eghere un
, ,'.'
•
b)
periodo. di.:lock pili att.esa per Ie fasl pm lunghe, 18truzlOne;
?i
~reve, ill
introducendo eventualmente degli stati ::~;' modo da ottimizzare il tempo media per'(~ ·:c :.': " 'c'
c) compattare fasi distinte e aggiustare opportunarnente i1 clock. ",,
. Anticipazione delle operazioni Nel commentare il diagramma di Figura5.21 si ,:';'. ,.. e gia Oss€rvato che per Ie operazioni ar~tmetiche.il ~~riodo T4 e.di pura perdita di ',:,; ~empo e. che la fase WE potrebbe essere ill T4 anzlche ill T5. La dlScussione seguente ':,,;. e',., lllustra 1 possibili miglioramenti ottenibili anticipando tutto cia che S1 puo anticipare ':~':: , -' (lenno restando il periodo
. • Istruzione JMP. L'aggiornamento di PC puo essere effettuato in T2. • Istruzione JEjJS. Non
-
e possibile anticipare niente.
.'
• Istruzioni aritmetiche. II calcolo puo essere effettuato in T2, conseguentemente ":: e possibile 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. • Istruzione LD. n calcolo dell'indirizzo puo essere effettuato in T2, conseguentemente 1a lettura di memoria avviene in T3 e la scrittura dei registri in T4. 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: 90 ns; - istruzioni aritmetiche: :, - 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 e pari a:
..
0,50 x 90 + 0,20 x 120 + 0,10 x 90 + 0,15 x 90 + 0,05 x 60 = 94,5 ns.
j
I , ,{ I ','
..
La CPU
195
',.'',''" . ":;' .'
c~e e~egue
:,' ",' Per un programma N istruzioni, il tempo totale consumato 13 pari a ': " Nx94,5 os, coo una nduzlOne del 30% (100 x (135 - 94,5)/135) rispetto al caso ' ,; : :precedente.
'Aumento della granulari~a del clo~~ A~endo preso co.me ~eri?~o di cl~:± il t ropo richiesto dalla memona, uelle fasl m CUI questa non Vlene mdinzzata, c e un n~tevole spreco di tempo. L'ide~le pe~ una macchina multiciclo e ch~ 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, ' "\~ccorre int~~durre un conveniente nUlliero cii cicli di attesa nelle operazioni che la riguardano. ,Nel caso della nostra architettura, possiamo prendere T=12ns, pari a1 tempo di ALU22. Cic rende necessari due cicli di attesa neUe operazioni di 1ettura e scrittura di memoria, per dar modo a questa di rispondere. Riferendosi all'esecuzione secondo _ ,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,,:
- istruzioni JEjJS: 12 x 3 + 12 + 12 = 60ns; , , - istruzione JMP: .. 12 x 3 + 12 + ~2 . 60~Sj . , '. ',' Can la precedente composlzlOne, la durata media di un IstruzlOne e parI a.
.. ' .:,", -
.,
0,50 x 84 + 0,20 x 108 + 0,10 x 96 + 0,15 x 60 + 0,05 x 60 = 85,2
~
85 ns.
'.- '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). 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 precedenti, trovando 1a combinazione che produce il risultato migliore. A tale proposito si vedano gli esercizi 5.14, 5.13, 5.15, 5.16.
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.
196
Capitolo 5
A
i't1 LD JE(JS ST
J~
GP 1 .2 82 82 82 82 82
Perc. 50 20 15 10 5
l;Pu2 150 150 90 120 90 135
~2,a
I 'CJ5'U2,b 90 84 120 108 60 . 90 90 96 60 60 94,5 85,2
,"
,
':'1 ;
"
•
,~,
:~.~
,,';~.I ,~
.,'
/;~ :'.. Tabella 5.3 Confronto tra 1 tempI rnedi per ~struzlOne (TMI) tra i vari modelli svilup ~'.- _~:: " La colo0D:3 ,Pe~c. da. la percentuaJe delle differenti categorie di istruzione. La col p It <;~ ."
.
.
.
.
.
"
CPU2...a ~l :lfensce a CPl..!2 ~igl.iora.ta can l'anticipa~ione; lao colonna CPU2_b si rjferi~;n~: ';; ::,.. CPU2 mlghorata con la dlmmuzlOoe della durata del clock. e a "';(~: <;) ~ ,.::,.'; ".~ ., 5.10 Le interruzioni '-':;"~ '. •--oJ • ,.. ~,'
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:" ,copo dl defiOJIe la relatlva loglca dl CPU. '.. ::
Un.'interruzione e un qualsiasi e.vento che, pur non. essendo. un saIto 0 una chi'~>~:; ;. matafntorno cia procedura, altera 11 normale Busso dl eseCUZlOne del programma ;':.~ ~; .Imponen d0 all a CPU d'1 a bb and onare momentaneamente l'esecuzlone " ,., ,.'. del progr am.,.I: rna corrente, per passare a eseguire un altro programma dipendente dalla natura '::.:: ',, dell'interruzione ([?] [HP93]). ,.), ::":" . La terminologia cbe riguarda Ie interruzioni e molto confusa e 10 stesso termine :;';'", ,f Vlene usato con significati diversi. Tanto per fare qualche esempio, nella terminologia "',:;, "'~ della famiglia IBM 8/360 si usa il termine interruzione (nella forma lessicale di inter- "'~1-, <: ruption in luogo della piu convenzionale interrupt), in seconda istanza viene usato iJ . ;:, ,J termine ecceziane per denotare alcuni tipi di interruzione; nei documenti Intel si tende ::'.,( ';'; a usare il generico tennine interiuzione, anche se, col passare del tempo, e diventato ,\ ".: sempre piu frequente I'uso di eccezione e talvolta anche di trappoIa; la Motorola ela ," ,:':, '," pili coerente: chiama tutto eccezione. . , ", , " • ';
5.10.1 Classificazione
'
. .. , ·'1: '
Fondamentalmente Ie interruzioni possono essere raggruppate in tre classi.
..'
.;:' .)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): 80~O 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 aritmetica, il fallimento di un'accesso aHa memoria virtu ale (page fault), etc ... Esse.
1',
,
) La CPU
191
] . 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, int~rruzi~ni generate da apposite istruzioni presenti. ne~ . programma (per e5empl?, l'l~truzlOn.e INT del ~rocessore 8086 gene~~ ~~er:uzlom • di questa tipo). Esse 51 venficano In ~odo smerono e sana pr~d~cl.blli n~pett~ ~ 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 d lita di funzionamento. " mO a .. ' _ ,c: Nel seguito adotteremo una terminologia per quanto possibile coerente con la precedente cla.ss.ific.azione, anche ~e, quand? e ~c~usa la ~08sibilita,di interpre~azioni ~": ',:"', ambigue, si fara ncorso ~1 te~mme genenco mter:uzlOne, ,Chlameremo SIstema ,·"·."di interruzione la parte dl loglca della rnacchma dedLcata a nlevare e a trattare Ie . . ,• interruzlom . J'
:,
?J
I I )
" 5.10.2 .
:
I problemi per il trattamento delle interruzioni
.:, -",.,' :.. n' ~istema di interruzione e di norma 130 parte piu intricata dell'architettura. Ecco gli ;' " ' , ' . ' l' d 11 estl'one .'.~., ''., aspettl essenz," I e a qu ' .
,: . " ' f
~
.
J' '
;'c'" ,','
:" ", ' , , ;
'
,'
• Le interruzioni esterne si manifestano in modo asincrono rispetto all'esecuzione del programma. L'evento viene rilevato esaminando 10 stato di una 0 piu linee provenienti dal mondo esterno (Ie richieste di interruzione). Le eccezioni si manifestano durante l'esecuzione del programma e vengono rilevate osservando il verific~si delle condiziOni che sono lora associate. Per Ie trappole non c'e il problema del rilevamento, rna resta anche per esse il vincolo di produrre effetti come gli altri tipi di interruzione. . .. . . • fhsogna stabilue, un modo per passare ~al programma c~~[entem~nteill ~ecuzlOne al programma che tratta 1mterrUZlOne (gestare dell illterruZlOne - mte~pt handler - 0 piu semplicemente routine di servizio dell' interruzione, ovvero routme di interruzione),
\ J
\
I
• 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'eccezione che si manifesta in un sistema a memoria virtuale per mancanza dell'informazione 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 macchina cleve essere salvato e nstruzione deve essere rieseguita quando la pagina mancante 230vviamente non
e il caso della nostra architettura di riferimento.
I j
I •
.,~, 1$ ,,~.
.'fi"·itt·.. ~
"-<':"
-'{'J 1', t,.·~~,.
198
Caplto ' I0 5
..... ,,·.
'.' .,'" ,,-.:;' .it..'.,:~::i
'i11;r.~·(,;
.......,.. _..
':"'- ,':;~, !.~.~" ,.. ~ .,~ r.";· " ,,;',,', -,_."-:.; ... ''1 ,"" -
\
. 1"·'" ..'" .. '"
_,~
perc possibile che quando l'istruzione viene. ~~f ,~;i',~;:, riese~ta ci sia un ,altro page fault l perche.il dato .indirizzato non e a sua .volta in ,F~ i!:;"-<: memona24 • Anche In questa caso 10 state dl macchma cleve essere salvato, In modo ._{~ .~.;J\ . tale che l'istruzione possa essere rieseguita e portata a termine come se niente FOSSe ':~~' i;<:~: ,."Il~ '".,' ., avvenu t o. .... '7" '.-~" . --,i':.J ,.~.:' In una arch~tetturasequenziale~ si pu.a convenire che ogni istruzione arrivi al corn_ ;:~ ,;~};". p~etameDto2S p.nma che una n~ova Ist.ru~lOne veDg~ prel~vata. ed elabora~a. La logica ~1~ ',;r,·· dl CPU deve r~conoscere se c'e una nchlesta assenta e In caso afIermatlvo trasferire,"~.'; <;/ il controllo al gestore delle interruzioni, al termine dell'istruzione corrente. L'archi~ '~'in H;.,;' tettura deve specificare Ie assunzioni che il gestore dell'interruzione deve fare quando:':'::in '.-:f:.i:,~ viene chiamato, in particolare l'architettura deve specificare 10 stato di macchina ehe ·"ri~·U~:.' il gestore tIOva, al fine di restituirlo immutato aI termine della sua esecuzione. ~":.;t ·,~ft',; Se Ia macchina e in pipeline Ie difficolta si esasperano, poiche non c'e un singOlo',,~ :'l~'/-":O momento in cui si puo infilare il trattamento dell'int.erruzione tra i~truzione e istruzio. .' ~ -i.~~f,;f ne, in quanta piu istruzioni stanno eseguendo concorrentemente. Si tratta di trovare t'.~l :. }.:::( un metoda per fermare gli ingressi alIa pipeline, aspettare che sia svuotata e quindi "'~l ::~~:t soddisfare la richiesta di interruzione. Siccome in queste macchine il prelievo delle .':~ :.:.. ~:~'~ istruzioni' avviene con un certo anticipo rispetto alIa 10ro esecuzione> l'identificazione' .:,;~j :'~,~. ',r del valore di PC da salvare per il ritorno dalla routine di interruzione puo essere cosa~~1 :~A·:', alquanto complicata. Per questo tipo di situazioni e stato introdotto il concetto di, :~:~ >~;:~~;: interruzione precisa, ~ cui si pa.: 1era al ~a~itolo 6. .. ,'
e stata cancata in memoria centrale. E \
\
\
\ \ 1
,;01-~ ':':,~
I
··~!.i, ';:":",
5.11 Interruzioni su CPU2
~~, :':':F
".!:( ':';'"')
':"";'-
~:,
, :';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 ,)~: ;}ii, di Figura5.21; faremo inoitre alcune ipotesi semplificative. .)~ ~f.1:
\
I \
_ 1, E prevista una sola interruzione: l 1 interruzione €Sterna. La CPU si accerta della richiesta esaminando 1a linea INTR in ingresso alIa CPU stessa. Se la linea INTR asserita, quando Ia corrente istruzione termina, anziche dar corso aI prelievo della prossima istruzione, 1a logica di CPU passa al servizio delJlinterruzione.
e
}~; :,:;',,
,~~~ .."': "~~:':',~':.':::~ '.~,',: '~:.' , .
~!:" ':'."
.
"
. ".' _., .
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 il ' ' 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. "'.. ,.. " '41. ',", '.('.,
'
\
,
"
I
.',1·~.
' ,"'i
(
;""~
24 La memoria virtuale e trattata 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. "';: ~,
,r "'" <~ .";·
':>-. ".2r
\
"
"~ ,,;
,~(~ ., • ,
.... ·,· , "..~"
La CPU
.', -'
199
.
;;·
.' .~.,:: .. ....
-
"
-, .
~"
,
.
rendere attuabile quanta detto al punto precedente, 1a CPU viene dotata :.,:", 3. Per 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 quale26si suppone sia permanentemente memorizzato l'indirizzo della routine di gestione .
....
:;<
,
.
27
Al repertorio istruzioni della CPU viene aggiunta l'istruzione RFI - Ritorno .;<., 4. daJl'interruzione, il cui effetto e eopiare 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 ~,>:" 5. 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 ;t".:,::· durante 1a routine. Vedremo pili avanti come db possa essere ottenuto. O:':";' , ~';:.:.,., 0 e aggiungere a CPU2 un po' di logica per: (,.:':....,' eeorr t>,:,,··, , salvare in SR il contenuto di PC aU'atto dell'interruzione;
~:::'<':,(." , . ' . rd.";~· " eopiare in PC il eontenuto cil XR aU'atto del-l'mterruzlOne;
,X<),::\.· ',' ~,
..'
d' SR
ff too dell'esecuzione di RfI.
::~:~. ,.:, ' • COplare m PC 11 contenuto 1 come e e ::~,.,? La 10 ica in questione e riportata in Figura5.23. n diagramma ~i stato di Figur~5.~O i,:/,~.""viene gmodificato come in Figura5.24, in modo da presentare II percorso. seg~J\~ lD /},<; r.esenza di INTR asserita (alternativo al ramo corrispondente aUo stato dl fetCh ) e ://:j;:, fl, per,corso relati~o all'ist~~zione RFI. ..' . . ~~~,,'\"':"; 'E un semphce eserCIZlO trovare le espressIOUl Ioglche. per I comandi daXR, d~R: , ,"::\' . SRWrite come pure codificare PCsorg in modo che SIano mantenute ie selez~oru F::~>r·':' ~i Figura5.19 e vengano aggiunte queUe rel~tive ai due nuovi registri. Un'ultenore )',:.:'.':" .'modifica erichiesta dalla rete di Figura5.22, ill modo da concludere: RFI al terzo clock.
-1., ',,(
~:'.. " '.
.~"
~~;(,:::,
,
,;,~,~\:·'5 11.1 Considerazioni
:.:~;;~;.:::: "
,'~:,;:;,
La nostra architettura non prevede alcuna informazione di stato.
Le sole istruzioni :' ':,,,:. che trattano una condizione, le istruzione JE e JS, la calcolano nel corso della loro -:':-,' esecuzione. Dunque non ci sono informazioni da salvare l escluse ~uell~ conte~ute :;':,.:.:.' in PC e nei registri di usc generale. PC viene salvat~ dalla.logIca dl macchma, ,. '~,"'" mentre i1 salvataggio del contenuto dei registri - solo dl qU~IlI che possono essere "', . modificati dall'esecuzione della routine di servizio - resta a carICO del programmatore.
n
. , "...' ."" " ' ,.. .\ "
'..
,'
..
;
',
".,
"..• . •
, •
'~.
~'
"
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 anornalo 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 agglungendo, 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 e asserito.
'. _' "., ·i'~,;;:,., .
"'"''''''
~,1 "'."',.
e
200
~
-":
. CapItola 5 a
X PCJMP X pc."
',,1,::
-; ~~ ...... '.',~~'
<
, d5
- ','. J
.~~~
,<,~
... "
PC\Jrl1:e
•
" ~:,lV
"
'-_;~;l :
X_PCJ£!JS
: I:
PCsorg
;;~ "
..
.,"
-
PCJE/JS PC.JHP
,,
" 'J:!!:
":~
PC+4
i
. .;~:~ m
.
, , •
'.,
.,/>~
~
,
,-,-" . ,,'
INDsol"g C
'--
~
SR\Jrite
I
:
'. .
..
·'L~. ::
. ,,'.. ~
c';
,
":'"
.
:j '; ,
•• .." •
,.~~'
1/
R
i
":;:.; , .....
L
-":\~~ '.
'--
-',",- ,.
.,-
" .••" ~:.~ '.
R
,.. ;' ~ .
, '::Ij
'
. . ~l:.4 Figura 5.23 Logica per salvare it contenuto di PC 801 momento del servizio deJI1interruiione _.::~. ,; .. "'. --, ',0('
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. .. ..
e questa la
, dr..:~:; ~
'." ' .", ,,-, ;;::~ ,~
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 al1'operazione>~t' ; 29 precedente . Se 1'architettura prevede il registro PSW, at progettista si presentano' .::~3' , queste due alternative: ",,;~ ~, Non
• 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',
':~;i i
• lasciare al programmatore la responsabiliU. del salvataggio/ripristino, prevedendo Ie istruzioni opportlllle.
';, '
\~
<;; :
. La prima soluzione e ovviamente 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, '\~I:': s<;elta e quella 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,
,.
,..,.I ,"
,I
29Nell'architettura Intel ee il registro denominato FLAG che fa la funzione di PSWj esso viene usato ,"i·,.•
I
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 . '. t:" interruzione (si veda pin avanti). ..'" , .·1' "
.'{. ,
';/';" ,...~ ~:"".
]
, ''''...;';;i;:;J:~ ....:., ,.. ",."
~1';f.;,'l:·
il~"<"'~~'-
mr:':·'!.:'
La CPU
201
_._-------------------------------
~l'i~<-, . .:.
)
,,~~I~l;;:;,:.;·,-~.': ,.-,¥", ' . ~'iI'l
,
., ,. ".' .
"','.' ... ,'"
,I
f.;'~~"",
.
.
"/,' ," ~';,i' ; . ~. ·~V -.-" ,",.,
"I,.. : '. "
,-
::J"\';::'.:~~, ,":~ ': 7
',"
",,{;,-:. , ' "
,
.. ,...
"
-
,
om!
,"'
,-~
,I,
:".(;,,".:,.:',
.......
,
I l' .
,
:}.> " ". .. : '," ,
. .. '1
'
>NT
;;:::<: / ,.,
• .' <"
.f;.. ".
'"LYc••
'.xR
SRlI'ril. P<;sorc··
IR'II'rlle. IN{)sora_ 1 PCserc-O SALUt_O SALU2_0 OPAl,U_ADD
,
",
!.
"
om! I'
.Jl
MRaltd
..
." ' .,j'"
I'
,
..
).
,
,r-;,,"
. '.,'
, I,
n',
.'f.~:. ::,,;.~, .. ,-j -,..,,,·I· e- , , ,..••.• ..
...
;;:.;' ~ ",I
DtsTII'rll. SALU\_O SALU2_2 OPAl,U-ADD
"
.' ,', I,. "",' '~':,'~i, .:':'
. ,'. ",'::'" ;,:;:;::,,~. '.: ..
) ..
)
,
.'
~c,
,
'.
.. co
"';;'" :, '.:
~'.~ .f,':" ' '., '. ." , • ,,,'
,
, 1./
S'r
SALUI-l SALU2-2 OPALU-AOO
~~:,;'" .'
,1/
S"L
S3S
SALUI_! SALU2_2 OPALU-ADO
~'.\"
, I,
"'A
SALU1_l SALU2 .. 1 OPALU_Al,U
S'r
: '-:,:'
,
..,:: "
.
~\;:
SALUI-! S.l!.UZ_2
:: ..... ' ...
."
OP"'W-ADO INO.org-O
;.t/', ,. .. Sor,e._l
,;..~.' "
Rdeat_\
'
llRud
,':~~-:: .",
i"'if
ARITloC
,I,
''''.',
:"'-': .' .... ,. """, '. ''". . ',;
:'.
'" ,
, 1./
S.S
SALUI-! SALU2"2 OPALU... ADD INO.ore:=O ""'rile.
,1/
JE!lS
1>1,
-1,-
,1/ ""
SALUI_1 SALU2_1 OPALU-SU!l X-,P<:JE!JS PC.erc_ 1
XJ'CIWP Pe..er._2
I
RF'
I-
...,. Pe.or.-3
1
I.
S.A
SAUlt-t SALU2_\ OfALU-ALU
,
0"'
,/
,
./ SSL SAWI_I SAWZ_Z OPW..... OD
S5A
)
SAUlt-\ SALU2 __ ! OPA,LU-ALu Rdul_O Sorle_O R'II'rile
lHl}~or/l;_O
Rdul_! Soree._l tfRu.d
'"
:'"
"
, ','
, I,
1-
,,
"
, 1/
,
/
,I,
,
Figura 5.24 Diagramma di state con il trattamento dell'interruzione. Quando it segnale . INTR e asserito 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 e disasserito 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. "
I '",
•
R lhih
-
I.
II-
" ':",
,
,
",.
.
'
,
•
,
)•
c_""
-"~.~
"1' t:~. .'" ' I~<:l,~
202
1.',\·,':.
"!l
..."
~,;~-
'~1~ ;~r;;
Capitola 5
-:.:ili! ::'i>
\
;;(~,.,,
~·.,·~l~ ,'~.;" " :-; " ,
..
5.11.2 Miglioramenti
. lj::f , ',,- '.,." '" j'i-;' ','. Vogliamo ora rendere il quadro pili realistico, eliminando atcune ipotesi semplificative. ',1::'
.."I ~
\
;,":,:1'
,'::,
-.
Passaggio alla routine di servizio Per semplificare l'esposizione abbiamo sup. .:;:::. .,. : posta l'esistenza del registro XR. Nella pratica esso non esiste30 . Al Capitole 4 abbia·, ,,;~~{i' ,'~:, ~ 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 e in 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..,
.
'>~:'.";," . ",~,
• un primo stato in cui PC yiene salvato e portato a zero;
\
'-
;'
': ",~
,
"
."
~"".
• un secondo stato in cui il contenuto della posizione indirizzata da
I
PC (Ia zero)
viene copiato in PC.
,,' .' :','~I" ';-::.
,\',', " ..,:
,,,'-I
n nuoyo percorso e illustrato in forma sintetica in Figura5.25.
"
.,
'.
'
. '_.".;, '.,''' "
\ ,'j '.'
::':-".. .,
,....
\ I
INT~
SR PC
,j "
·,..-rtl. ,;
, , ." , ,
...
../:;."
<-- PC <-- 0
~
·"'1·"
~I' ,.,,'
I
.)'-
l'~ " ,".
PC
.;~" ..
<-- M(PC}
.'
" :;~
;
.. .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'
;,
" .. · ,,,,. ":tl
\
\ I
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 l'indirizzo d.i ritorno, Questa tecnica abbastanza 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
n
e
·'t .
....
.... :, .'
, .'
,'I ,
".. ''f .. ·...' '
\
l
30S are bbe
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.
·, ,.. '
,
~
, , I '.
, :'.".1 ",. " :;'1:,
1" • .--,1 '
" '-
~.
.~;~,
,','
'.,
~ ... '
:.·, :
"
La CPU
;
203
,,
'dall routine di interruzione, per evitare che altre 10 modifichino 1 facendo perdere a l'indirizzo d1· n't ornD 3I Se la macchina e dotata. di stack, Ia cosa pili naturale e salvare PC e Ie eventuali 'nformazioni di stato proprio sullo stack. Come sempre, PC e le eventuali informazioni ."~i stato saivate devono essere ripristinate dall'istruzione RFI.
.
:,
~<
.
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 particolare, suI fatto che il repertorio deve presentare l'istruzione di chiamata a sottoprogramma. Questa istruzione, oltre a saltare al sottoprogramma determina il sal va32 tagg io automatico dell'indirizzo di ritorno (il valore corrente di PC ). 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 se~plicemente queUo di Figura5.26
,' ~
-
"
,
.., "
".
'
.
•
"
'
nITR
, IR:_
,/
"
w(pcj
lNT~
, ".m
IR:. }A(O)
I
'
• , .~
"
O."odiflea c
..
-
.
. Figura 5.26 Ramo relativo a.ll'interruzione quando nellalocazione di interruzione e prevista un'istruzione anziche un indirizzo. Il programmatore deve aver codi£cato 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 .
.
.' .
'
3lBisogna aggiungere che I'architettura deve corounquc poter garantire che, a discrezione del programmatore, 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.
!
'l
'.
,~
...,..,<" _
•
204
..;'1.
_ ;'i~i;
CapItola 5
:'
"'~1'"
,Ii.,"' '
,,:.':,". "
.. ~~~ "
,
5.11.3 Interruzioni vettorizzate
,~.II.
_
' ..' ...r- . ,,;,,: :
'.'
"J".I
.
Nei precedenti ragionamenti si e supposto che vi fosse una sola interruzione , nel c~t;.,~~ ?enerale, la, macchina deve essere in grada .di trat.tar.ne .p.ib. di u~a. Per trattare pHi,,:):}- ;" mterruZlOlll basta prevedere una tabella dl lOCaZlOTIl cit mterruZlOne. Se, per esem-''''h~ . p~o, le l~c~ioni d~ i~te.rru:zione contengono gli in?iri~zi delle, routine di servizio delle ;:~~: dlfferentl mterrUZIOlll, mdlcando con IRi la genenca mterruZlOne e con TABIR la ta- ,), bella, la logica di CPU trova in TABffi[IRd l'indirizzo a cui saltare. La posizione ~'~;~~: della tabe~la pub essere p~edefinita oppure pub esse.re a ~celta. de~ p:og~ammatore, Un,'~ '.~{ ,, analogo discorso vale OVVlamente se la tabella contlene lstruzlom dl chiamata. Spetta : Il:' sempre 301 programmatore il compito di preparare la tabella con it dovuto contenuto. "!~f:: La schema precedente viene anche detto vettorizzazione delle interruzioni: ogni h~:r:, . t 0 come un ve It ore Che consent e d'1 passare a11 a rou t'· ;·,'i eIemen t 0 d1· T"BIR' J1" Vlene VIS me', ;',F-: , Al C . 1 4 f 'U f . d U' d' t ' , d' h' . ,j i~ assal~Clata. aplto 0 sono sta II ustra I van mo e l l ve tOrIZZaZlOne I mace me :':'~t : re I . •,:.iI,l, "
.
-,,~,
"
..~:". ,I,
:,~;1~
'.
Eccezioni e trappole n trattarnento delle eccezioni e delle trappole e analogo a' ,,'::j~~:: ': quello delle interruzioni esterne, con 1a differenza che esse hanno origine interna. U' '~:# processo the si instaura e perb del tutto analogo. Per esempio, nel caso delParchitet. ",~'~ ' tura Intel, l'istruzione IN! xx asserisce interruzione xx, ovvero fa passare alIa routine :'::/)!:'. ; il cui indirizzo si trova in TABIR(xx]. " ' \,.\i~'i
,
.. ..
,.
.
. . ,
:, '::it
E norma che Ie POSlZIOIll lD TABIR the S1 nfenscono alle eccezlom Slana fisse e ·:~lr , ~redefin~te, m.entre ,per Ie interr~zioni e~~erne e ?revista ,Ia p~s~ibi.lit~ che i vettori di '~i ",Jt& ' mterruZlOne SIano hberamente dlslocablh nelle nmanentl pOSlZ10Dl dl TABIR. ",:/',~; . .',,~:~~, InteITu~ioni. este~~e . Nel caso delle interru~ioni ester?e, it rne~~anismo per ~assare .~:~ aHa routme di serV1ZIO Sl basa sulla collaborazlOne del sistema dl mgressojusclta. La ,. ,5.~ convenzione e che quando l'autorna CPU esuI ramo di servizio dell'interruzione , viene .,',::;'~~ asserito verso l'este:no u~ ~egnale ~IACKL che i~forma i1 sisten;a.di I/O c~e la,CPU ':,:-'l}, sta. eseguendo un CIcio di. m~erruzlone, durante I~ quale.leggera 11 ?US del ~atl. La.J~ 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 :'~:~i~ numero IR;, can il quale la logiea di CPU raggiunge TAB[IR;] (si faeeia riferimento "::::\1, quanto detto al Capitolo 4). );1."
:i"~~'.
:.'::r;i
5.11.4 Atornicita dell'interruzione
'j~
.'
I'~
,,) ., '", .,.
Una delle ipotesi fatte nel Paragrafo 5.11 era che, una volta entrati nel ramo di servizio ',,:: )" . . , 'I' l' \r;i dell mterruzlOne, a causa del nconosClmento di INTR assenta, a medeslma mea. "' venisse automaticamente disasserita fino all1esecuzione di RFI. Cib al fine di rendere -':,.; atomica l'eSecuzione della routine di servizio. Vediamo ora come cio si ottiene. .~~t;
,!'~
•.!.!,
,.."-
"3" I,~· .
:;I~l'~"" .
;~i;~j:;.t;': llittll':," ,
!
.!:\~~~'·.i'
. '.. . '.' ".. '.: ' __
~,~, ,(: ~._,".
'.
La CPU
205
'_'.~~~'.'.: __--------------------------------
1
. '. ;"
':": ;':',~ '.
]
":<".:::: -
"~"":'.
_~",,!;
CPU
':'
.. '
:!-.
HNTR·
.',
.>.,. / -.-
",,>;:·t-",'
.. , "
~,:'~:.,>.
0
Sl
S 01rE
RI
R
I
I'
INTR
] -+- ~
lACK
. :",'y," ':"',::,'>i', F. ura 5.27 Bit di abilitazionejdisabilita.zione del sistema. di interruzione. La logica eli ,' :':.:,,~': ,:" esamina IIN':r:'R per de~err~:Linare se c'e un~ ric~esta di interruzi?oe. ~l rico~oscimeoto , ,,: _', '. delPinterruzione, Vlene assento il comando RI, il CUI effetto e queUo di far disassenre UNTR, """'~: L'esecuzione di RFl fa asserire SI e quindi riabilita il s~ema di ~te~ione. n ~p-flo~ ~ '.: :.,:,;::';;:';'~" deve poter ~ere. coman~ato anche ?-a. .program~a, 51 'Pos,sono. Ipo~lZzare due. lStrUZI?Ol, ,','" "SETIeRSTI llculeffettoefareassenrelcomand15IeRI.Stnot'llalmeaIACK,essaVlene '.' " ' " ', ' , I ( I eli'J I . at '," '., assertta. quando 1automa passa per 0 state 0 a sequenza stat! re atlvo trattamento delPinterruzione,
]
c1u
,;:'
)
::,,'..(:: :.
".
,
:, .....
.,
., '
'. .'~ " ....
La Figura 5,27 mostra che basta UD flip-fiop per rendere visibile 0 no Ie richieste :, :' ': :"" ?i .rnterr.uzio3~e. Comandare tale flip-flop equivale a abilitare/disabilitare il sistema di mterrUZIQne, . . . . '.\;'!': .._. '.~ ,Oecorre assu~ere ehe alIa ?1essa ~otto te~sl(~ne del sistema, IE s~ ill .stato basso~ ;--'.,,::. 180 linea INTR, venga disasserita. Ci pub essere un modo automatieo, basato suI rico}/~:,. ~.~::': noscimento ,dello stato della linea lACK, riporta~a in !,igura5.27. Alter~ativamente, ';',": i., .. pub essere 11 programmatore a trasmettere al diSpOSItIvO che ha assento INTR un ::;'~::"::::'::<'::~comando che 10 faccia disasserire (Cfr, Capitolo 4). . . :>,\,;:.~~.'::~>_~ ',~~ ". : '.,:':, .",.
:':
.:.:).
'":'; .
'. :"\,;."<.
,:.:~~',::,:,;',::
.
::.. ;",5.12 .". ::,: r·· . ,
. .
.
I I I )
EserCIZl
:. ",: :' ~~ :~'. ': ~sercizio
5.1 In riferimento all'architettura introdotta al Paragrafo 5.2, si assuma :.::,,',.,.::.,:.. dl avere un ipotetico linguaggio di programmazione Assembler (si immagini che siano ;:~:".'>':', . defi~it~ .tutte .le possib~li ,~perazioni arit~etiche e logi~e, ~ompatib~ente can i for'.'. ,> ' matt dl lstruzlone posslbili e Ie eventuah pseudo operazlow necessane a comporre un ),; .. , . . "
"'."""
:::: :",::,' "Non ,i co f d t b't II dl b d II . , . . f' I:':i, ;" " ' . ' ,n .on a ques OleO? que 0 masc eramento e a smgo a Interruzlone, che UOZIO· ';' ,nalmente e SImIle. La nostra archltettura prevede una sola richiesta di interruzione rna 10 schema ~ p.r~edente funziona anche in presenza di molteplici richieste, basta che INTR sia I'OR delle singole .', ':, nchleste.
~i\I'
\
I. 1
I •
206
I
.s
~ff~~
""
,"'':
.~,~l
Capitola 5
li;I:..':'
I..
-'. - ";:1.":!
" ',':'li!") ,'\ ,::." .
-.-;:.
,n.
,.' ."
,'~
?rogr~ma). Si sc:iva UD progr~ma ch.e co.nvert~ ,una, st:mga di car.atter~ ~u.merici ;~'::~ :' .,: '.
codifica ASCII m rappresentazlOne bmarla, Sl ,potlZZ' che la strlnga m,z, doll. ''''; , '", pOSlZlOne STRNG; che la masslma lunghezza 5la 8 caratten; che ogm parola contenga' ...: :" 4 caratte~l' (0 meno:. ) ch~ I ' fin.i ' , , , . at ~ nnga . sea quand 081 mcontra il carattere dl sPazio ":J :',' , (caratten non numencI dlversl da SpazlO devono dare errore). ,.,.~ ":,,' :.i .' Esercizio 5.2 In riferimento allo schema della ALU eli Figura5,4, si discuta la soIu.' ,'~ ,'.' zione adot;ata n~l testa consistente Del portare all~ ALU il codice contenuto nel campo ...~~ :',:: '' f~~U delllStruZlone, confrontandola con la soluzlOne alternativa di portare I'insieme ';) .,',:,: eli hnee che corrisponderebbero alia deeodifica del eodice del medesirno campo. ::.~~: ~::~;' ~ser~izi.o 5.3 Nel' ~efinire l'architettura, a pagina 162 si assunto che anelle per Ie : ::r ,.:,;"" IstruZIODl LD e ST II campo OFFSET contenesse 10 scostamento della parola. diviso . ,'J ;' :: ~er 4.. Si faccia ora Fip?tesi che. p~r queste istruzioni il campo OFFSET eontenga ",:~: '.«, 1 effettlvo scostamento (clOenon eliv,so per 4), Comesi modificanoglischemidi CPU 1 "",0 " e CPU2? )! ' '.~1 ", Eseccizio 5.4 Si supponga che nel caso dell'istruziene JMP il bit mene significativo' ~.~ ,..:.. ?el. c.ampo IND indicbi ~e 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', . . . .:; .;.: ~s~rc~zlO 5.5 81 supponga che, ferme restando Ie assunziani fatte nel testo circa :-;}, ,,".'. il. sIgnlficato del campo OFFSET per Ie istruzioni LD eST, si debba aggiungere'. '."?' r::~ I'Istruzioni LI?H. Ess~ l~gg~ .la semiparola (16 bit) .in pos.izion: m~no significativa ",'~ ~'(, 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 ,;~"" , comunque Ietta sempre una parola (32 bit), si illustrino Ie modifiche da apportare a",:] : \ CPU1 e queUe da apportare a CPU2 per mantenere it modello di esecuzione in 5 stadi. ":~ ",' (Suggerimento: conviene intervenire sulla ALU,' prevedendo ulteriori operazioni e/o ':,\,{ ....:', funzioni di cantrollo in modo da assecondare Ie nuove necessita). ,:.':: ~: . . " , .. 56 C I'E "55 . . ::,';,: :,: E serCIZIQ. orne serCIZlO., rna 51 supponga che ora 1a scrittura nel registro .:/~. ,,\ eli ~estinazioDe dei 16 bit letti non debba modificare il contenuto dell'altra meta. del :~1i, ~;.:: '.:~ ':"regIstro. Esercizjo 5.7 Si aggiunga }'istruzione STH che opera in modo duale rispetto a1Pis" ,:,"i~' I'~' truzione LDH dell'Esercizio 5.6. , .l,.: .... :', ,', Esercizio 5.8 Si assuma che il campo OFFSET per ~e istruzioni che fanno riferi" :' :, . mente alIa memoria contenga l'effettivo indirizzo dei byte. Si supponga che si debba '::'~~, . prevedere l'istruzione LDB, che carica nella posizione meno sigoificativa del registro "~:'~ ~;, di destinazione il byte 1etto, azzerando il resto del registro. Quale modificajaggiunta d~ ~. sl deve apportare alla ALU di CPU2 per far fronte al problema? ,1 :
ill
\
e
\
\
I I
'.
I I
..
"
eli fare effettuare l'incremento di ..... 4 del PC dalla ALU durante il primo semiperiodo, Come si modifica 10 schema di ,>"\1 . ;'" :i \ Figura5,13? E possibile eliminare del tutto il sommatore per il calcolo del PC? Esec~izio 5.9 Si consideri CPUL2F e si ipotizzi
\
'
,
r,.1'
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 ",~c'I' .. : . .-, .. il primo semiperiodo del clock? In altre parole la codifica del campo OFFSET delle ",',', ...':',1" ••.< , istruzioni JEIJS resterebbe la stessa? "
..
,'f~, t"'~ '. ;',.,
J ,
'.1...y, ,~
~~::-
' ,,'.
:''
.
,
•
';'
L. CPU 207 --------------------------=.::....::....::'---'--
__
_
", "
.' ,.,' ".
serciz io 5.11 Si supponga che Ie istruziolli di saito condizionato siano del tipo JE E m if Equal zera), JGE (Jump if Greater or Equal zero ), JLT (Jump Less Than J (u)p che queste istruzioni operino in base al contenuto di una parola di stato e , zerosW ecC" processor Status Word) che riporta il risultato dell'operazione precedente. Si (P '. 1 modifiche in modo da permettere a CPU2 di operare come descritto. ' '" appartm a e ~:. '.' " In 'f ' CPU2" " T2 1" t d' PC I ''.; :::..:: Eserc~~IO 5.~2ne J~nmento a SI antlclpl a agglOrnamen 0 I ne : ' ...casa dl lstruZla '.:....; Esecciz io 5.13 Si supponga di mettere in atto tutti i miglioramenti ri~uardanti Ie " "'":,' ' 'a.ntici~azi?ni dis.cussi al Para~rar:o 5.9.1, in modo cia ridurre la struttura dl macchin~ a :l: .~:: ..' 4 stadl. ~l valutmo Ie pr,~stazI~m .della CPU, confrontandole anche con quelle relative ,.~. at p'rototIpo CPU1, nelilpotesl dl T=30 ns e T _12 ns. ".. , ' S,' h' 'd li d' eli CPU d' , 193" :,."'.' '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 .... :~<, stadia. Si rieseguano Ie valutazioni di cui all'Esercizio 5.13.
'" .'
...
"".;- '
•
•
•
•
••
,
•
•
•
•
EserCJZlO 5.15 In nfenJ?ento aile assunZlOm ~ell. Esercizio 5.14, ,51 ~~uma dl pr.e~~ .: ...dere per T it valore cornspondente a. quanta nchlesto dallo stadio pm veloce (eICe, :.'. Bns per 10 stadia ill). Come si trasforma CPU2 e che prestazioni fornisce in canfronto ~:>""" sia. al prototipo svi1uppato nel testo sia in riferimento ai miglioramenti suggeriti, di ,.-;::::' cui agli esercizi precedenti. ' ,.::.' Eseccizio 5.16 Si supponga di anticipare a T2 il calcola dell'indirizzo di memoria \ ,', ....'. per Ie operazioni LD/ST di CPU2. Cosa comporta la conseguente anticipazione a T3 '. . "della fase M? Si esamini la questione sia nell'ipotesi di in cui il periodo T sia pari , ", a quanto richiesto dalle operazioni di accesso alla memoria (30ns can i dati usati a :"».' pagina 193), sia. nell'ipotesi in cui T sia piu breve e siano previsti degli stati di attesa ::.,> nelPaccesso alia memoria. \., ::,' :. " ".. Esercizio 5.17 8i ipotizzi di realizzare 1a CPU multiciclo can Ia tecnica della mi-:,.' _ cropragrammazione descritta al Capitola 2. Si assuma che una parola della memoria " . .', di co~trollo. sia. divis.a in due .ca~pi. contenti rispet.ti~ament~: (~) I'i~dirizzo della .. prosslma mlcroI.stru~lon~i (b) 1 bIt d1 co.mando. relatlv1 alia mlcrOls~ruzlOne~orre~t~ '. secondo la tecOlca dl ffilcroprogrammazlOne onzzontale(pag. 55). 81 progettl l'umta . ' . di controllo, definendo nel dettaglio it contenuto delle singole parole della memoria di ... " controlla. 8i ipotizzi di avere una ALU e un banco di registri BR come quelli usati ,,;~.:,.,:. nel testo. '".
,
.
'"
", "
.,' ,-
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,
".. ~
'i'>'" . , . '.' '
"
.
<
'
~~,;\ ,:,.; . ,
, 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.
:
.-
208
,
. toto
Capitola 5
"',.,,1'
--
_~'i\."
~
..... " y(.,
,-- ,
: :!,:~~ {
Esercizio 5.21 Con riferimento aHa Figura5.25, si scrivano Ie espressioni di comandi ",:m' ~ e selettori che ne conseguono. ',::'i ~."'
<
-_.~~
Esercizio 5.22 Si modifich.i la logica di CPU2 in modo cia eliminare SR e XR , pre..
·I
.
-.f..
" 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' ! in corrispondenza di tali istruzioni. ::"~'.0
.
.- --,.:-, .::,.~. '.'--\'
Esercizio 5.24 Si consideri una CPU che esegue istruzioni in piu cicli di clock. n:·;~t '.
primo (Tl) corrispon~e alla. fase IF, i1 secondo (T2) alIa fase ID '. iI terzo (T3~ alia fase EX. Le. altre f~l. non Int~r~ssano .. La ?PU pres~~ta un flIp-flop (IE) 11 'cui ';"~~~ stato dete~ID1na se il sIstema ~l wterrUZlone eon? ablhtato. AIIJatto della mess~ :--,:i'~ ~otto te~sl~ne ~ deve P?rtarsl nella stato .basso, In. modo che non possano a~ersl .;;~~ mterr.uzIO~ an0e se la line.a INTR e assenta: IE vlene. po~ato ~ 1 quando Vlene' ~:~: a esegw.t: .PIstruzlOne S'I:I ~ nportat~ basso. se Vlene esegUlta l.lstruzlone C~I. Inoltre .":.~ se IE e ill stat~ alt~ e V1en.e ass~n~a I~ h.nea INTR, a partlre d~ p~osslmo !l la :..:.~~ CPU deve serVlre l'mterruzIOne. CIO nchlede (oltre ad altre funzlOm che qUI non _-;.'-':::.:1 interess~o~ che il sistema di interruzione. ven~a di8a~ilitato, i~me~~atam~nte smTl, :.:j~ e che restl lD tale stato fino al .mo~ento ~n CUI non ,,:ene esegutta I Jstr~zlon: ~T", ::~t~ oppure fino a che non.e es.egUlta 1lstr~zIOne STI. 51 supponga che Ie lStruzlOm che -,j.'t a~ls~ono ~u IE ~e mo..dlfichino 10 stato In fase EX. . . ,. . '-\:i~ •81 dlsegm 1a lOglC~ dl CPU ~e: ,~I) p~rta IE a zero m nsposta all mterrUzlOne;. (2).-..:1* porta.. IE ,~ 1 s~ V1ene esegulta I IstruzlOne STI 0 !RET; (3) porta IE a 0 se Vlene 'c::':~ e~eg.Ulta ~ IstruzlOne eLI. ' . :'_';~:~' 81 dlsegm la rete che al momento della messa sotto tenslOne porta IE III stato O. <:c. Si supponga di disporre di un clock multifase, ovvero di un certa numero di linee, ' "\~ denominate TI, T2, T3, " I Ie quali risultano asserite in corrispondenza dei rela~ivi -/~ periodi.
'f:·;,
»
·
,.~
':'". '-'i
..
':';
.''1
"'.,,
-
,~
· :', ";'
,,,
· -
, ,I
.... "
:,
''''1
· '\";
.;..,
'.'!?;'":!,",'
'e: ...·: l,'- .. ~'f-."" "." "l1-:t.... •- _
~" ~r:':-'.l,
1
(",
:m~;t(ll~~'("-
,tlttj/f,:;, ..,'
'/0,
.,,'.
~f~,·:·.,'.. S:i"~'~"<' ~~."l.il,' "I;,:.' .
'"
. -
, r.., . .
,
{!.:~;::;"
1
~f;:;\~ i':: :,'" " ~;i".:'i\:;<\ '
..
"" <-t:"" ,.'
.
.~,:,:,:,:",\::,', ~.i," ."....-
:~,'.~"
eline
_~:.-
'.~:';.'
...:==..:~~~~::::':'
"'
.':~:;. . .:,.,.
)
)
,~,
:~:'::,' , ~~.. ';': "'_ . ' ,;~."":::: ...... ':: !_;:<. 1,_\" ','.-':~,
)
,it:_ .\,;-;/.-_ .",:''. .", :~(':_'<
:.:;\:~.
"
.",
" ~ Le catene di montaggio sono larga.r:oent: usat~ ~el ~ettore manifatturi~ro:
il process? ....';..:. , di fabbricazione di un bene matenale e SUd~VISO In una sequenza d.i sottoprocessl , ~'ciascuno dei quali viene eseguito cia uno stadia della c,ate.n~. ?e la catena ~ costan: ':'::.', ,:, temente alirnentata , il tempo richiesto per produrre un umta dl.prodotto fi~ltO non e ,:;,,::-' ';~.' data dalla somma dei tempi dei vari stach m~ d~ ten: po del ~mgolo ~adl~ (suP.po3}" ';,:;\. nendo che la permanenza sia 1a stessa per tuttI gh stadt e che Clascun dl eSSl open su ,:i> .... '. 'di.una singola unita di prodotto 0 semilavorato). ;:""_~,"_' ' },~". ':,'.", . ,- Un simile concetto puo essere utilmente applicato nella c~str.uz~on.e di una C,PU I ~.< .~. ,s't,;utturando1a come ~a c~tena di s~ad.i che effettuano Ie .azION fl?ueste per I ese-: :,~,' .:: cuzione di ogni istruzlOne, III succeSSlOne temporale, .proPr1~ come ~. una ca;en~ dl :':('.. :,>:. ~:'montaggio. Uanalogia con la catena d1 montaggio fimsce ~w. Infattl m quest ultIma '~~':~ ',' : ogni stadio trasferisce al successivo un semilavorato che ~l va ~r~£ormando., me~tre .~.. . ,nel caso del calcolatore gli "oggetti" in movime.Dto sono lstruzlOlll (comandl)j g~ e~)I~" fetti del passaggio restano alI'interno delle part1 che compongono la catena (regtstn , 'i,', memoria ecc.) e non c'e un prodotto in uscita.
)
>,' ,.
I
)
_/:.', '_'
.j,: ,
:",t
'.,:'.
:' ',
.
"
,
.. Nel seguito viene usato il termine pipeline per indicare 1a strut.tura a stadi. Questo termine, come altri dellinguaggio parlato nel mondo dei calcolatori , e diventato ormai parte del nastro lessica e ha un potere evocativo di gran lunga superiore a quello di . una possibile traduzione.
1
I I \
I
. :"".
1,
,
..
,.'
I· •
..
1'
; 'J
La pipeline e stata introdotta poco dopo la nascita dei primi calcolatori commerdali. GH~. 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. Oggi la pipeline e un ingrediente immancabile nel progetto eli un microprocessore. In particolare , e ritenuta un elemento caratteristico delle rnacch.ine RISe.
I
n capitola e dedicato 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.
)
,
•
,.-
,iO
j?
,-' Il
210
~}~
Capitola 6
·~,I~j.':
ti1!&:~'
\
;.t~,~11 , _,~"
6.1 Introduzione
&~~:
,
c'
\
.
."'-'.>\ . -'v'.",,,
,';;'~':~~}:'
::::~i! 'f'?':; .~:>.
In Figura6.1·viene dato 10 schema di una pipeline lineare L' . , struzlOne e suddivisa in k passi ordinati: all'ingresso della : r es~~u:lOne dl un'i·,::,j~~M~1 trattata dallo stadio 1, per poi passare attraverso tutti i vlene:,,'1i!i S;adIO finale. Dlversamente dalla soluzione multiciclo esaminata al Ca itol~sClre dallo/~i:,t!.;'.
su:C:;':i~e~~ ~uzlone
\
1.lstruzlOne passa claUo stadio 1 aHo stadia 2 neUe stadia 1 entra 1" s~ . 3) quando . '~:"'tVI Slva, in modo da mantenere possibilmente impegn t' t tt' I succesI,. proprio ,:.:W come in una catella di montaggio. Natuialmente e ne attraver'l alcum stadl ,enza ,volgere alcuna azione, rna, almeno nellota Istruzl": .•. Flgura6.1, nessun stacho puo essere evitato. schema d.1 : lh <~.""'
s~mpre
\
/uzl~ne POSSib~l~ c~e IU~~ ~:
';'i".:;;,,,: '~ii '1\1.;,,<
_"~,l~~~~:~',:~
'~:! ~:J;',,
i;"'J .,,:1, L "~.""'" .-,. 'il:( :j~\~\
\ lngresso
s,
s,
"!~~ i":" .... :.~:'.:::::,' "I _A', ,.,:... \~':'-:
.
,
.
s.
Uscita
." ~,::~,;;, -- .. '~: .
::";~i ',1: , j,"
\
,-,'
Figura. 6,1 Schema di una pipeline lineare, Gli staeli della catena 51 ,5, ,,,,5, sono Con' ill rnameta senale: le lstruzlODl entrana da un estremo I borate I n~. ",J!: , previsto dalla catena ed escono dall'altro. ' vengono e. secondo I, ordlne :..',:-'..(,
:.i
":i
"" ;~.. :' ;:~ ,.(fS :,*;;.
\
"<~ <1> ~,~i'~, ,:-"
" Sebbene in linea di principio una p' I' . ' . . .' Ipe me meare possa essere composta da, )'\ ,~,e .' stadl comp1etamente asmcrolll, nsulta ovvio che in un calcolatore I'av t . . ' anzamen 0 "','f' "":'': nella i lin e' ~ pe e smcrOlllzzato dal clock, come III Figura 6.2 [Ram??]. ~ t;~! :~'!~~ •
I
:,·t',
.'j
'I
.",'?J L
\ lngresso
\
s,
L
L
s,
,, "
s..
,<::: "~
Uscita
'~,1. "~
-:;" '",:.:
')f', ~;;
Clock
\
,j1 ':~'; :~~ .>
"
".
•
',,~
"I
.
Figura 6.2 Pipeline lineare'sincronizzata.. Gli stadi sana separati da registri (latch), cui e ~i',:} ',:', 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 ..:'1 I' 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 ,.,'II, ':.:. .' , " 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 . ' -oL _" se richiesto dalla logica di macchina.. "
\
\
I
)\'
.'•
;, > ,
.'
,
;'L~ ......:', :l
,
.
,
,'
~:
';~ ':'
.
~';',.; -,.. ~.~
O'· ,.. "
,
?t'-~'
l~,:',~·
-
~~1\' :__- - - - - - - - - - - - - - - - - - - - - - L : : a : . ! : p : o iP:.:e::lin::e:---=2::1::1 .
':.,,)·
':o:~·. - -
1~'l' ',~::
..
,\"'',_>- .
•
',
:("6,2
',i~~' ,
PrestazlO
• lli
;';" per rendersi conto de' vantaggio introdotto dalla pipeline conviene confrontare questa l 1 . oluzione architettonica con il caso della CPU monociclo e multiciclo . II confronto e .'>' ;.tlO a parita di stadi, assumendo cioe che, indipendentemente dalla realizzazione, la ntl
.'" : CPU prese 2 sempre 10 ,tesso numero dl stadl e che tutte Ie IstruzlOfil li attraversmo I<~<' tuttl . ~ :,',:·. sempre Si indichi con T, il tempo richiesto dal generico stadio, cpu T il pe~Qdo di clock p
i.\" della ~9~uzione inpipeline, con Tmono iI. periodo di cloc ella soluzione monociclo e <:: .' conTmulti queUo dena ,?Iuzlone multlclclo. T dovr!> e,sere pan al tempo nchlesto p
' ... ~-
~.~~
,:.~',
daUO stadlO plu lento} Plu 11 tempo 'T"l necessano aJ. latch per memonzzare 11 nsultato (assunto uguale per tutti). Si ha. cioe: (61) TP = m a x {Tj, },'-I T + c + = m"'t,' - , •• ,,1< .. .
':..
T,
"L.,
\'::
n tempo per eseguire un'istruzione nei tre casi e rispettivamente:
"':'
....:~ ...
:':".,
T,
'
'
..,.,.,. ~ ",
.
-
T mono
-
Trnutti
=
Tmono kTmuJti
(6 .2) (6.3)
,'.
:":",:· ,
,.,'.... ,.. "
,:": .- .
"~~~~'", '. ..
.:}':'.~.'"
p
T
p
= kT
(6.4)
. . . ' In altre parole, per vIa del . latch, la' plpelme allunga . II penodo nspetto alIa soluzione multiciclo convenz.ionale. Questa inconveniente e perc pili che compensato dal migJioramento complessivo delle prestazioni. Facciamo un esernpio pratico a chiosa delle considerazioni precedenti,
>,"::.-' Si consideri un processore che esegue le istruzioni in quattro passi (K=4), aventi '~:~ d . ":":~', ,questa urata. :'.'I.,L,'' , ~'.:':': ~ " Tl ;;:: 65ns; T2;;:: 70nsj 'T3;;:: gOnsj T4 ;;:: 75ns ,' ':':"i~ , esi ipotizzi che i latch richiedano un 'TI di 10 ns. I tre profili di esecuzione sana riportati ',':'
~:
;:' '~...,' , 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 e rispettivamente 1/300 e 1/400 mentre per 1a CPU in pipeline} .' .-" a causa della sovrapposizione delle operazioni, il numero di istruzioni eseguite peT
':,: '-':
1
/
~>
:
;).
.....,~
••'
',',.".,'.
',
-:. :.;'
'"
"
,.,, ,
!' '_,..,
':'-:,r
e 4/400
;;:: 1/100, con un,guadagno di prestazioni pari a 3 e 3 16
,
e
I,"
:",
unita di tempo rispettivamente,
6,2,1 Indici delle prestazioni Le prestazioni di una struttura pipeline si misurano essenzialrnente can it tasso di
esecuzione (I.), I'efficienza (ij) e l' accelera:zione (,,), 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 sialineare l 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 e possibile anche con Ie pipeline.
212
Capitolo 6
".~~
_" -
I (a)
300
I
300
1:000001010
65
"
70
15
I
7' 90
"
"
75
I
.
"~
-~~~',
. .. '"."
·..·f,
90 7'
70
." -,
,.',I>!',
"'1',1:1 ~ • : -. :~~l'
" ",\,1; .- ':t\ ~.;£i
",
,,~:;,~
l,Itnlzlone J
lslruzlone 2
btru'&lone 1
'00
-
! .. ~J f .... ~ ' - . ,"
•0; ,
::tA!
I
.... 'ii'I~ ,,~:I'
1901901901'01901'01901"190190190[901
,.',):
I (b) raulUclclo
'"
I
Istruttone 1
(0) ptpaUne
Istru'l.iolle 2
400
I
90
I
360
360
SO
90 90
90
SO
90
90
90
90
90
90
. .
"'~"'~' . ,'" "'' .!"! -
SO
.
',;~
[Slruzlone 3
I
90 90
., ~::t: ,,~
'.':;1
":'1,;.
'. "1" :+1 ,- ":'tl " ,.:'~'~
: ;\'~
.;"!
-,',l:
.
I'
. -', ;"",~"!
~igur:.:" 6.3. Pro~i .di eseCUZlOne e te:np1 di permanenza ~n. CP:U. Ne la Sol~zlone monoclclo :':~~ l.te~pl degh stadi ~l ~~ano semphcementei. cel.la multlclclo Ii clo~k e u~lformato a. Quel1O::~J
rIchiesto dallo stadlO pill leoto; nel caso della ~Ipeh~e deve.essere aggl~Dt? II t~mpo del la~ch. ".~: Come si vede, sebbene il tempo tatale che un'lstruZlOne passa nella plpehne sia 400 ns, vlene J:':;! I" • 100 ' """', 1b ns. ':~::S;'. e a orata un IstruzlOne ognl
"
~asso dJ esecuzlO~e
"
,, " , ,:y~
E ~efimto c~me il n~:ro dl lStruZIQ~I_comWe.tate-.per
~l~lta .:~:
dl tempo. D tasso dl esecuzlone per 1 tre Casl dl CPU monoclclo (l-tmono), multloclo ~{J.' (J,lmultd-e in pipeline (.up) sonG riportati in Tabella 6.1. II tasso COS! calcolato non.:}~lt~ tiene conto del transitorio di riempimento della pipeline. :.}liJ: Se si considera invece il riempimento, partendo dalla condizione di pipeline vuota, :?~q per completare n istruzioni si richiedono k+ (n-l) dcli di clock: k cieli per riempire la ,<~. pipeline e completare }'esecuzione della prima istruzione, e (n - ~) cicli per completare ,,::::~ Ie rimanenti (n - 1) istruzioni. Occorre dunque un tempo par.l a [k + (n -:-.l)]Tp: ~ .'~ tasso medio di esecuzione l J.Lp, dunque dato dal rapporto tra 11 numero dl lstruzlom",1~ eseguite e il tempo trascorso, doe: ·.'>~ji J,lp = n (6.5)' ,~lj " ~\, kTp + (n - 1)Tp
e
':"'~
Osserviamo che, per n -t 00, jJ.p ~ J.Lp. In altre parole, J.Lp di Tabella 6.l·V; 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
~
',,;:;
-§fficienza .,Uefficienza 0 utiJizzazione e ~centual~ dU~po in cu~ .cPU e ',~,~ occupata e SI puo calcolare come rapport.o_tta-iLtasso.,.dLe~~cuzlone.me.dkuaJ.L1~o. .": ideafe:. ,':.\
_ I'P _
~-
I"p -
Si pub notare che 1]
-t
~ _ n (kTp + (n -l)Tp )/(Tp ) - k+ (n -1)
n
1 se n -+
(6.6)
i,:
':,,
:L
00.
-,,~
" .:'-
,:.:i ,
,'t'
.>\,
r~f~"i;-;~:'- _" ",.--, '>In:'· "-•
1
~iir,:1
•:?i~;i~lf;~',':>
;:~<,~": ,:.~;'
!l'.-). h•. ':<','J 0' ..• , ·.,':')!~:'r.",
1 •• , , - , . , , _
,·'.r\":1',.~," ~
La pipeline
__---------------------------==..02.==---=
:..-
."
','
>
',. \ ' .-''',,' ',' 'J' . -....t,. . . "
~~.,:::"
Monociclo
t~
\
~.
~'
'.:'. ''
,;:!:'·'.l,'.
,I;"
,,-', , . _
1Jmono =
1'·';',-,'., '' :',:..'
_
",\.' t, .
. \":',
1
-r::::::: ......... =
-V
,n·
'\'
213
, .... I,;' '~" ..: ". '. . " ,
Piperine
Multiciclo J1, multi --
1 n .....
1
It;
-
I
= k.mu{T";};.l ..... 1o
I" p -- To1 ,
=
I
I
ma:t{-ri}i_l .... ,lt+1'1
",.
'"
.', :."...
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. ... , . '''" .~. '. '
\
:.'.' .
.\;'
.',
I
1'"f'.': .' ,;,: :"i; '. A
lerazione Si definisce auelera.z.ione di liD processore con Illi>eline Uneare ri.:~:':~".. cce a un processore multi" I yeI" t 'I t ' spetto r.t.QJ.ra leora oc~ta, oyyero sa I oro as~l ::,::'. ',:, .. ':;' al"eset umendo per s~mplidta. Tp == T multi = T SI ha: > up nkT nk i.·.··'··, ' _ r' =k1] (6.7) :~';,., '. ' a - J.Lmulti - kT + (n - l)T - k + n - 1 '~_'~'/"_:"",' , . . .. . . . ',,~._.:.;,"'.- .. ~ dove (k + n _ l)T e II tempe per esegwre n lstruZlOnI nel case di ~roces~r~ plpehne, ":'-' .:,., , t nkT e il tempo richiesto per il completamento delle n lstruzlOOl nel caso ;~',:'., :.',',,' , men re. I .~' , ", convenZl0na e. '. . >\,\,.'. " , 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.
t.~':~;~:', .
: 1/1..:':'<::.
Conslderazlonl
•
.
;
ntasso di esecuzione
;t,·'';:" -,,.::,''":.' .
r..<:·.. '
"
.-,
;
~
t. ,":, ";.
~ }~'j':';':,.( .
T = 'TmE M
t'.:
Ll~ 'I'" •' " , ~1'
-'i \,~ "'~'." .. . :., ':, ,,j" , ". "
\,.,
. .:
,.,.':,.......
\
I
1 I
I
I
+T/
:';' :.:' _," . . .\ ..~ ,:' '. ,_ Assumendo che il costo totale possa essere calcolato come somma dJ un casto fisso ,'~:' c/ e di una pa,rte proporzionale al costa di ogni segmento secondo un coefficiente di ,' prOpofZlonalitac" il costo totale C dato da:
: ".'
\
...
sia di una CPU multiciclo sia di una CPU pipeline, e fortemente inftuenzato dallo stadia piu lento, it cosiddetto "colla di battiglia" (bottleneck). In Figura 6.4 viene riportato un esempio di rimozione di un collo di bottiglia. La pipeline .~~~'.;::; . _originale a) presenta uno stadia con durata tre volte superiore agli altri. Le soluzioni ~ ',~,l,~~.,.<..... : .. possibili consistono nel suddividere 1a struttura in tre starn seriali b) 0 in tre stadi i :,~', e,:' .,' paraUeli c). La soluzione c) introduce una pipeline non lineare, tipica dei processod superscalari. Questa genere di pipeline non viene esaminato in questo capitolo. , ,~,;~;.,::.:::':::., ~ ~,' 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. : :;:,1;..;: ~ caso ideale in cui tutti i segmenti richiedono un uguale tempo pari a Tmonolkl si ha: 1 "
q,,\ :,:-> ~',
1
_
.... i~.J :,,-, _. ~ ~~',; ',:,:"'-,,1' " 6.2.2
~
1
)
e
I
C = c.k + c/
J
I
214
Capitola 6
b)
I
1
2
2
•
•
,
.J
,-,'
,
2
•
" -\ .·1 : I ""
,
•
r
'
.
e .
1
2
3
•
3•
•
,;. '.
oj
2
,. 1
2 J.
•
2
',;'
· ~.
•
•
,.
h
I I
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.
..
·,"
,
·
·," .....
n prodotto costo-velocita e quindi: (c,k
+c f
I
,. ,
3
-
)(
.,
I
T;09 + Tz m
La segmentazione ottima k, [Ram77],
+ cJ T mono + kTI
) = k c,k
., ....
(6.8)
e quella che minimizza il prodotto in 6.8.
, - .. , -
,., . , ., I· ...
"
'.'.'
,,
I
I
6.3 Alcune estensioni al repertCirio delle istruzioni
\ I
:,
~.
.... ......,", l
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.
I
·'I' .
"
"
•
.
·
"
Istruzioni aritmetiche e logiche
t.
Restano esattamente queUe definite al Capitolo 5. Per brevita, nel riferirci a questa 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:
",.
• LB (Load Byte), SB (Store Byte)
!
'
',1,
,
., ·
..
•
,
.
."
La pipeline
215
L'istruzione LB carica un byte dalla 10cazione
.
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) . • LW (Load Word), SW (Store Word)
Corrispondono aile precedenti LO eST. La parola deve essere aUineata agli indirizzi multipli di 4. Nel seguito, per semplificare l'esposizione, quando non vi sia possibilita di confusione, 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: 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.
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. JLa generazione dell 'eccezione e eJementare: si tratta di confrontare il codice di operazione rispetto al valore assunto dai due bit meno significativi dell'indirizzo.
" ~
216
Capitola 6
I Entita di memoria trasferita I ENW I ENH I Byte 0 0
I
Word Halfword I Non permeaso
1 0 1
I
0 1 1
Tabella 6.2 Codifica. dei segnali ENH e ENW in rapporto all'indirizzamento delle differenti ,:}~ ent;t' d; memo,;a. La combinazione 11 non e c o n s e n b t a . ' i i . : : ' "
: :.:"j~ ,
<.J
';:~ }
• JAL (Jump And Link)
~~~
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 que~ -::;:r: sta funzione e percio detto registro di collegamento (Link register). R3( /2 . viene scritto4 solo dal1'istruzione J AL, rna puo essere letto e capiato in al~ .' ::':-1 ~ tro registro . n ritorno aJ chiamante si ottiene attraverso l'istruzione JR :.\~ / descritta qui di seguito. n formate di JAL e identice al formato di JMP. .:: ',:,:. . Osservazione: si potrebbe prevedere un'istruzione JAL che codifichi anche ..{ il registro di coUegamento. In tal caso il campo IND si sarebbe ridotto..~;~ > -:
,
• JR (Jump Register)
,
~
t "';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 sUbrou-~Ci'l:f tme mdlflzzandola al6 reglstro R31 0 a qualunque altro m CUI e state Coplato':'.~ , "',':.;; ,'. l'indirizzo di ritorno . ...,
,
...;
,
· '. I .' , ~"
~,
.,,'.. . /.
/,}( <
,
:.:
••
) La pipeline
217
] [Nil
ENH
Bus Es;1:"rr'lO
Bus I"ter"'no
I
'~; '".
,.. ~,
"
R
~
0... 31
l
f'...
I ~2
,
1./ '32
i0...31
I I
I
:..; ~ , .
};'.':;;::, .<'.
1 J
.:.:. ~
o
::;,
+.{>--+.
16.~31
1 I
~
..;
~'.<:.;",
/:::.: .,.; '.
ti >~> <.
f;., "',"
, ,.. ':, ' .<.-' ::..
,
·" '
'. ,:'... "
••';'
24".31 . 16...23 8 ... 15 0.... 7
•
•
I
r>
./
I~
I
07
f.
I \
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 e disasserito, un buffer Can uscita a 16 bit mantiene a zero i 16 bit piu significativi sur bus interne e l'ulteriore selezione tra semiparola 0 byte e determinata da.! valore di ENH: se e asserito vengono trasferiti i 16 bit selezionati attraverso At, se e disasserito 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 e consentita: la logica di macchina cleve garantire che essa nan si possa mai manifestare.
I )
).
•
J
I
ap :2::1:.:8:-_C= c:;:.:tO:::I:.:O...:6:-
__
\ ENH
EN'"
\
Bus Int
Bus L..=>
I I I
rJ ,
7
-I ,
0...31
, "
0... 31
"
V
"," .,
:.'
. J
"
0
V
,
~
..
16...31
" "
t'
0... 15
\
AI
I
I
rno
.
\
I ,I
~.,.
I'-
-"-
"
0..,15
I I I
,.,;
,
.,
0... 7
,
~
~
V
, ,
24 31 16 23 8 15 0.,,7
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 in gioco ENH a stabilire se si tratti di semiparola 0 di byte.
e disasserito entra
..
"
4. Istruzione di ritorno dall'inteITuzione • RFI (Return From Interrupt). ,
It
,' .
,.
"
219
La pipeline
,.
l'istruzione che consente it ritorno dalle interruzioni. Nella parte che segue essa non viene aneora presa in considerazionej la sua anaJisi e rimandata aHa sezione dedicata aile interruzioni (Cfr. 6.13).
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 repertorio.
I Mnemonico
I Operazione
I
ann ,A~ RA Rh II R6 t- R5 + R8 I ,_, "_,'>V LB R3, 30(RS) 1M...." (M[30+R5]Q}''][M[30+R.5] SB 40(R4). Ril-TM[40+R:4j t-, Rll,..31 I LH R6, SO(R2S) RB t-" (M50+~o)"11 M150+R25 I SH 30(Rll). R14 M130+Rll t-16 ttl 16.. 31 LW RiB, 40(R5) I Rl6 t-" M[40+R5J SW 20(R12), R4 M 20+R12 t-32 JE R3, R4, off set if R3=R4 then JMP target _~~ I PC t-lNDx4 JAL target ~R31 t- PC; PC t- iNDx4 JR R23 PC t- R23
I
n __
•
NOP
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.
6.4 Esecuzione in pipeline 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 e arrivare a progettare l'uniU. di contrallo per la stessa architettura nella ver13ione in pipeline.
'.
220
Capitolo 6
J 0~
.... ,:-,~.jl
~.
-::i 1
. 1....,
j
(tv! r,' • prelievo dell'istruzione (IF);
(,,\/ j.
\
'
.r ~. '
-;:' • .
I
'.:;:1 "
'~(o))'jJ'
• decodifica dell'istruzione e lettura del contenuto dei registri (ID); • esecuzione (EX);
:; ~ ,- ~,' \ '
• accesso alIa memoria (ME);
}).:/I/r: n /
'\
)."0
'.
' <:".
,,::.;"1,
t
r '
..
,.~J
'
',;' . ·~·I::,
,j,~
,..,r
'" 'i::' .
, ,1
"
• scrittura nel registro di destinazione (WB). / ,1 1\.' ',' r.
.: '"-
'.', I.
:1.•'
In Figura 6. 7 la pipeline viene disegnata in modo da esplicitare i nomi dei registd
;c....
interstadio.
"- ,.I',
.,
",
IF/lD
lD/EX
EX/ME I
IF
ID
I
I
EX
.'"
M~/WB
I
ME
I
I
.., ,
WE
. '. ,.'.
,",
~;'~Y ",.'
Figura 6.7 La pipeline di riferimento a 5 starn. I nomi dei latch intermedi identificano a.uto~aticame~te gli stach .che li ra~~hiudono. II r~g~stro pili a sini~tra (IF/~D). 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.
: 1-,
• IF - Lo stadio IF svolge la funzione di leggere la prossima istruzione alPindirizzo ..,"i., contenuto in PC e di depositarla in IF lID, in un campo che continueremo a chia. mare Registro Istruzioni (IR). In Figura 6.9 viene evidenziato suI registro IF lID ,
''.,
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 e responsabile della decodifica del codice di operazione e della trascrizione della decodifica sul registro ID lEX, 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 ID lEX 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 relativo. allo stadio in cui ha effetto; essi costituiscono tre campi distinti suI registro ID lEX, e sono stati denominati rispettivamente EX, ME, WB. La Iogica corrispondente allo stadio ID, essendo
e
J,
.....
,
.'
" ',!
,
'i#;i?';':
~[t;J\:X
.,.... d.,<-i,).·'
L l i ne a 'pipe
1':L:·· ~'
2 1
t
"-'_/,: ,- ,.'. T,
,': :;::.
2
T2
I
I
I __
I __
I
I
T3
I
I
T~
I
T~
•
I ....'1
-.,
ME.. ,.I: "<'!':fl.
.
EX. I ..
-
m
:",
'
If·: .
M~
I WB
t EX'
ME
J
EX!MEIWB
ID
'"
,
m
I WB
EX
ME
) I WE
Figura 6.8 Esecuzione delle istruzioni in una pipeline a cinque stadi. Lo schema evidenzia che dura.nte it periodo di clock T 1 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, decodificata. l'istruzione i + 1 ed eseguita l'istruzione i e cosl via. Questa modello di pipeline corrisponde a queUo delle CPU MIPS R3000.
c:., ,
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 AlIo stadia ID viene aggregato il file dei registri RF. Durante la fase corrispondente, U contenuto degli eventuali registri identificati dai campi Rsl e Rs2 dell'istruzione viene reso immediatamente disponibile per 10 stadia successivo9. • EX ~ In questa stadia vengono compiute Ie azioni specifiche dell'istruzione) comandate 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.
• ME - La stadio ME interviene solo per Ie istruzioni che fanno accesso alIa memoria (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. • WB - In questa stadia si completano Ie istruzioni di caricamento e Ie istruzioni aritmetiche, scrivendo in RF il dato presente su ME/WB.
, --
1
I
W'B
,. 'i '
)
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.
)
)
I ]
I )
)
I ) )
,
,.
,,.
~~','.(
·:!i'll:J:rh~'
:2::2::2_..:C::a:,p::i::tO::IO:..:6~
,~~~:~
_
i!;\'.~", 1
'Ii~:'/';',"
.
\
"~4' "'l':fi'~'"
;~~';':~ ,,?,) J;..;'\.
fl:o\...., , ,: ',_r' "~':'~':""
In Figura 6,9 viene mostrato anebe UP altro campo cbe si propaga da lD JEX 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 ;) .i"':. campo Rd dell'istruzione). _.:J :<:'~,. Mentre i campi finora descritti hanna significato univocol ci sono campi che in :j .••. ; base all'istruzione assumona diverse significate (come per esempio ALUout di cui si :."ii~ ,;:~:,:,.: parled. tra poco), n 10ro significato viene illustrato nel prossimo paragrafo attraverso ~ ..; ':. :! .;':.;,,' un esame dettagliato, istruzione per istruzione,
\
..
\
~lr;
'.",
\
[J
\
IF /ID
IO/EX
EX/ME
-'.2
vo
HE;
~
p
c L
\
~
r:l
v,
, .j"
r",
LJ
leu V ~ L::
.v '-
R
~
~
·
'r:} ,':.:,,:, ... ,.r
", ~,f j't.:;::, "J:; ":,i-:'-':. ·..:;' .:J::?
I
I
.,'~'J"
-'. '...
'), ',:::.:C
.'::':' :.'"
",!,'
"',
· -, ""-'--)
'"
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,
\
.... "
·:~:.\~t :::::;~
0
e'
LJ r:l LJ
ME/VB
~ v,
I I I6.5 Le fasi di esecuzione
,"
'-'" " :i',~ 1,-"" ""i' :-:.;'~
'' "";':::" · '."1' ',.-.-
,:;, I~. ':_
· ';'1 ,:,::.t;
·
:(1 .:.:'"
.: ,,'0 ,./. , \ '\
:',.i ..
":"
~.'
,:;,,,, .~ ,:~~~
,.~-."
"
~.i'I\\ . >:t
~; (-;':::
· . ,"" " ,: ;'p"!:
,.,,'
::.
.'
'
:-', :/.
.;
,~
".... '<'I ·
::-;'. "
~<" ,
"
," LL·.
.\
' ,i , '.-
· .
"
G Ii schemi proposti nella parte seguente si riferiscono aIle specifiche istruzioni considerate. Per esempio: Ie Figure 6.10 e 6.13 mostr~o ambedue la sezione relativa a PC, rna mettono in evidenza solo quanta pertinente 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 pertinente rispetto ai segnali di comando asseriti. Prima di procedere nell'esame del comportamento delle differenti (classi di) istruzioni in pipeline, occorre ritornare Bulla ALU 1 per denetare i relativi comandi in una forma piu conveniente di quella vista al Capitolo 5. 'l
e
\
\
. "I d ':
,
..I,
_c,
, ".
, d,
e
,
\
\
"
\
:. '
-."
:'
.-- .-
,
:', , '\ '
".:"
..~\;T:::'. \,:'
( ',"
- .: ', -',
~
"
1,<'.
"
La pipeline
223
___
.":-
~:' 'Contrnllo della ALU Al Capitolo 5 (Figura 5.9) si e visto che la aALU viene co~trol)': I.t. attraversO OPALU, ~be assumeva tre dlstmtl valon (denonun tl m forma slmbo. . lic, ALU, ADD, SUB). L IstruzlOne JAL nchlede che la ALU faccla passare m,uSClta, ere
.'. sen", alcuna modlfi~a, II valore presente sull'mgresso B. SI tratta ClOe di agglUng .' a nuova pOSSlblhta attraverso OPALU. Questa Clrcostanza offre l'occaslOne per dare
' d ' T b 11 64 :,.,-- '3unOPALU lao co d'fi 1 ca numenca 1 a ea .. "
;
- '.
[AUJOut B A+B A B -A-fALU B ~
,
~;>
:, .
.
U1 mALUJOPAL ! OPALUO i ~ 0
I
1 2 3
u 0 1 1
,
I
u n
l
1 0 1
,:'"
"
?'.:'I.'_--: 1.'abella
6.4 Codifica del selettore OPALU. Le colonne OPALU1, OPALUO danno la
C~."" '.,', codifica bin aria.
' 'i
'
,. )!"
,
."
'--. ~:;';'~."
"
" ,,'
''0 . .:" ,,'
_,;-;., ..
;:!,.:;' .
·'.'l'•.
0,", 6,5,1 lstruzioni aritmetiche -j, ' .',
"':,
-',
',.
,,,' ,,'" .'".,
~~~~; '...·Come al solito facciamo riferimento all'istruzione di somma (ADD). D suo trattamento t~~: :."" e ~chematizzato in Figura. 6.10,
:::':':',' " -', .
:·. '.
'.-
,,'::':,
'.
.', . .
,.
,
• Fase IF. pagma 220, Riguardo a questa fase si veda quanto detto a evidenzia l'incrernento di 4 a PC.
La Figura6,10
'
,.:-.;'
",
-
,.
,.' •
'
• 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 IF lID .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 ~ IF IrD.Rei e determinato da. un selettore cite presenta IF IID.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 '
.x "
,....r
.. 224
.,.. ,J __ ::~ \i
Capitola 6
.
.'"
.
;!,
:' .,
~
:,::' .:, , ,.d.
IF'IID
,.~
.•, "" . ~,
-Lj~H:t.
""''OlU
uc
.,
"
•
\'
:~~.
LUI
RF
""
F:
"~'"'
1iM1",..
,
•
.
•
"(..'1 i"~
.~,
"::~I
.I::~~
•
i!:.-
.
,
~~
" ....
,~
-.~ )
,
-• ,
..,
,
.:".,; 'I ',"
:
..,,
~
· ..
,.,'I'.. ..
·
I'I!~
..'··:1I.,' "
'. I' .
-
""
'j .
.,
-.'''
e
li'l ;
,
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 :"'~~I 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 ID jEX.IMM potrebbe essere di 11 bit tuttavia : _." l 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 e del tutto pleonastica, in quanto e del tutto irrilevante cosa venga scritto nei 21 bit pili significativi di IMM). "'.' ",
'.
1 • ,
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 contenuti 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 automatica, grazie al segnale MemToReg (che ora vale 0). .'
e
•
,
.
]
",,,oj!.' .. -
'''~;:;'~' "'-'" _. , ;Iii-""
,Jrf~~,'/'.
.
~ ~.:"
N'· .,. i;":;<;:.
',;;i'I':~'; ,. ~. '••
,-r..." .... ',
~:.·:'·.,.
:::>
''''
La pipeline
225
]
-
.'
'
6.5.2 Istruzioni di Load/Store
::-;':~:
r,,,_
.
.,'
-,
.- . .... . ;
)'
_Gli aSpetti rilevanti sono illus.trati dal~a Fi?ura6.11 per Ie istruziooi di carica.mento e ", dalla-Figura6.12 per queUe dl memonzzaZlone.
1
"
'
." ., ."
" ,,"".
. '..
"
' '
.'
HE/VB
lr I£D
uc
"
",'
,
,
CEl=
. "f1' '
'. "
'.",.. , .
e··. . \
;";'" ," "l'.
.'..
IMI ~
..1.
~:._" , , -.
1
I
•
I
RF
;_11 .......". I
:'·· '.
-
\
..
J
""
""
I
-;..,.; - " '-
,.
,
•
1 \
.•, ..
• Fase IF
,
I
Esattarnente come per Ie istruzioni aritmetiche.
,:
• Fase ID
II contenuto del registro Rb e copiato BU ID/EX.A, mentre il campo OFFSET delllistruzione eesteso in segno e copiato suI registro a 32 bit ill IEX.IMM. Vengono 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 didascalia 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 destinazion... 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:
)
I ) J
"
"
I
I
- ·-;':
226
Capitola 6
"'J' ,i", 1) ".'
_
~.'
,
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)
l I
Per Ie istruzioni LD:
I I
I I, I I
I
I l I I
,; ':: '.,.. ' I , '",I
'tl ... 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;'
; Offset esteso con seguo a 32 bit.
.. '
"
,I, "
~.{.
,
.. ; 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
ID/EX.WB.RWrite t- 1 ID/EX.WB.HemToReg t- 1 ID/EX.ME.HRead t- 1
I
.
., :.~
•
"~"
~,
y
Per Ie istruzioni ST: ID/EX.WB.HWrite t- 1
,:'t ','I
; camanda la scrittura in memoria ; data per la memoria
ID/EX.B t- RF.B IFlID
ID/D:
~\I,'it.
~,
uc
J..+---I
II
.. I/lR~
•
RF
,I
ol::::t-I-00-1 •
, •I
_. MD h ••
'I
,' ..
.,, {~
Lui
,.
,
_'...... 111.
,.
'/1111
ME/VB
!lVtlI.
~
~"
'n
EX/ME
-,!~,
t
"
" ,
,1:l' "
'
,.. •
:-'1
..
,
..,
Figura 6.12 Schematizza.2ione del processo di elaborazione di una istruzione di memorizzazione (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.
,
.' ~ . "
•, ,
• Fase EX
In questa fase, la ALU somma gli operandi contenuti nei registri ID/EX.A e ill /EX.IMM. La sola operazione notevole e quella satta ciportata, in quanta per
,
il resto si hanno i normali trasferimenti
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 in 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.
",
e
"
. 't'
":n>"
":7t:~'
:;'.f .
',
La. pipeline
227
• Fase WB In questa passe si completano Ie istruzioni di tipo load.. La selezione di MemDat e attuata 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,
-
jrl/D
ID/EX
~
...
""..-
uc
" r ', I~, I ItTr-
r~,-d:;1f!~
-J..j~,
~
lllll
ft.
.
'~,
,I
II
oX.
RF
I
•I
"
~
~
',.~_I ._ LU
J
.4..
l--
,
•
f---l:.--
~'~":::B'~~
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 e indicata come SExt32 x 4(IFjID.OFFSET)
• Fase IF La IF si differenzia leggermente nel caso di istruzioni di diramazione (JE e JS), in quanta occorre capiare BU IF lID anche il valore di PC, che risultera utile nella fase successiva per calcolare l'indirizzo di destinazione. n relative campo su IF/ID e stato indicato come pel.
• Fase ID Viene calcolate l'indirizzQ di destinazione dei saltij inoltre, le istruzioni per la
chiamata o
0
it ritorno dalla subroutine leggono i registri a loro riservati.
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
228
,:;;.
Ca.pitolo 6
'~"eI1
.;::;.;:
-...... .'::. {. ~i
,. '"
,.
Inoltre: per Ia JE: ID/EX,EX,JE per la JS: ID/EX, EX, JS
" ';.1.1, , i ..
1
,~, "
'/;''i
'-it:.:
• .\;'
1
',tJ
,;"
" ", -, ,.
o
,.
JMP:
..:.,;
F
"
Uindirizzo del salto viene scritto su ID/EX.IMM. Per selezionare in ingresso 5~ a PC l'indirizzo del saito I viene usata la linea JMP. . :[}.1
I; ,
"
ID/EX,EX,JMP ... 1 ID/EX.IMM t- Ext32 x 4(IF/ID.IND) ID/EX,ME 0 ID/EX,WB 0
La schema della pipeline
',:'""1:;
..' ,'"
; estensione senza segno.
'iJ
',.,j
'~r;11
••'1
,:t
e in Figura6.14
-.'
.."
-'~i .'
~,
" ;
IF" lID
ID/EX
~
I.. ~"ti
I
.. !I~~
uc
I ,-, r
EX/ME
-
ME/Vi
;' :~, ,I
.. , ..
. '.
"
".\, 'I
~."
'r' .--" '..j.
...
,~
,
"""'. 1
--+-j~~.
."'.,
:~,
,
.;.
••
1.....
1----"
.''.1'if<
I
'-,
'.
"
'ti) '" '. ','). ;:" "'h.; ,
Figura 6.14 Schematizzazione del processo di elaborazione di una istruzione JMP. It bloc- ',: i~ co X4 moltiplica per 4 ed estende a 32 bit. II segnale IDjEX.JMP e usato in fa£e 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. :.~ ,
..,",
.','
.. , );
o JAL:
:,":'
.'
Del tutto analoga a. JMP, da cui differisce per il fatto df scrivere il valore deIl'indirizzo di ritorno in R31. Questa fatto comporta una cecta complicazione, 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 ~uo ricorrer.e a un selettore, a valle di queUo che sceglie tra Rei e Rsd! che lasc! passare Pmgresso fisso "31" nel campo ID/EX.ME; tale selettore
:(
'j
~"5 :,,~~ .;~ ;:".
':;.0
'.';
puo essere eomandato can lalinea JAL nella stadia ID, II campo IF JID,PCI ."': " '.' ,
"
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.
" " .
,
,
'1
I
ro";".:. _
.,
~-
~~
..
)
'I'''''~-
~_it;i>: -
La pipeline
229
_ _-----------------------------=::..'-"c:.:-'---1i ",:"\; -..,i ""rr,:c. . ':-.
:- ;'.1:'
'" ;:::.i,:':'.',
,~ i!
,
.'.
.
'. 'i',',' " '
i., , '
viene fatto propagare attraverso la ALUj db richiede che IF/ID.JAL cornandi i! traslerimento lDjEX,B ...IF.ID,PCl e che la ALU Iasei passare senza alterazione I'ingresso B (deve essere OPALU=O),
::
'e ",
Ji .', " .; ,: ...
.; .
In conclusione si ba:
;. .' F:' .
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 e in Figura6.15
"
~
,
1
;11 "'
" " JI j
1; 1"'. 1 '" t
.
"i I
';-"-
,
IF" 110
', ,'I·· ,
.:. .
tD/EX
_,..... I'"
~
_.
-
A
uc ~
,
_
-,-
-I,.,h
:'
'
'"." .' ~
.
~.
•
:::1
·I:;~I-h
"-
,,
. .. ' .
1'
,
,
..
'.,
,,-..l ...
f <
1 ] ] ] 1
I
I I
-,
.
) ," .( .,-, " ; ,
~: ~
: _
~.I ..
."I',,
',... '
;
Figura 6.15 Schema.tizzazione del processo di elaborazione di una. istruzione JAL. Nello stadio ID il segna.le IF jID.JAL viene usato per selezionare: (a) PCl C;QPle ingresso al campo B cti iD/EX; (b) Ext,,(IF/iD,lND) in in~esso a ID/EX.IMM; (c) 31 come in~esso 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 e usato per
-Selezionare I'ingresso a PC.
o JR:
'11"
It saIto indiretto attraverso un registro viene cii norma usato per il ritorno
(\-
j"
5 ~ ~ .~I'
0"
. 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 e in Figura6.16. La selezione della porta A di RF come ingresso a IMM e ottenuta tramite it segnale JR,
:
'rl',
" I •
l I )
I 1
• Fase EX
" ,. "
,~
1;
o
JE, JS:
J
I
I
J
230
Capitola 6
~' ~
./~ '):'~i
I
ID/EX
1
'.,-'
,
::--1'/ _
HENS
-- -\1 '
uc I"r~
I I
(X/H(
I
IA~1
Rr
-L..j~hk-Et.
l'
ir';I
. :'
..
'.,
• ',': I'
.
" '" -
, ,,'
Figura 6.16 Schematizzazione del processo di elaborazione di una istruzione JR. Qui il segnale IDjEX.JR e usa-to per selezionare: (1) IDjEX.IMM come ingresso a PC in rase EX. :,. " e l'uscita A di RF come ingresso a. IDjEX.IMM. , "
I l I I
I I
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,
", --"
o JMP. JAL. JR:
.':::.
PC viene aggiornato con l'indirizzo contenuto in ill /EX.IMM (ovviamente _
,
utilizzando I'OR dei tre segnali per comandare il selettore), • Fase ME Nessuna operazione per Ie istruzioni di salto.
•
• Fase WB Solo l'istruzione JAL scrive in R31 Pindirizzo contenuto in ME/WB.ALUOut. <~~,;
6.5.4 Sintesi del contenuto dei campi EX, ME, WB
"f,1 -';:: -
,.'
'.
,
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. '.;., • I segnali facenti parte del campo WB sono:
,"I" . . ".-
l \
I
o RWrite:
o MemToReg:
comanda la scrittura del registro di destinazione;
..
per la scrittura in RF da parte delle istruzioni load e aritmetiche.
• I segnali facenti parte del campo ME sono: o MRead:
.);1 ~';
.
,~
,1:
-., .. "j,
;:
." ",
comanda la lettura in memoria;
:!:
: >i~." > - -,
j
,
-: :):.~
h
.
,;-''"''., }:'" . J:i:':~', . ,t_'"
.
r
'i.- :;.,--' ,:
;
La. pipeline
231
>'" ... ,-
IFlID
ID!EX
__ .-
" , ,
,
o¢
.
0(>
•
•
~
-
""
M
•
~
eo,
"" M
~
~
'"'
,Figura 6.17 I registri di pipeline IF/ID, ill/EX, EX/ME, ME/WB con tutti i campi contenutL 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 e normalmente 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.
o MWrite:
comanda la scrittura in memoria;
o ENW:
abilita il trasferimento di una parola;
o ENH:
abilita il trasferimento di una semiparola.
,-,
, "
.- ',',
• I segnali facenti parte del campo EX sono: o OPALU:
.'
seleziona l'operazione ALU;
..
o
seleziona l'rngresso B ana ALU;
o JE:
asserito solo per l'istruzione JE;
o JS:
asserito solo per l'istruzione JS;
o JMP:
asserito solo per l'istruzione JMP;
JAL:
asserito solo per l'istruzione JALj
o
"
ALUMux:
,;'
o JR:
.'.
asserito solo per l'istruzione JR.
,
:
6.6 L'unita di controllo , .. '.
'"
h":'" ";,.
. La stesura della schema della rete di controllo richiede la ricomposizione degli schemi che SOno stati tracciati in precedenza.
232
., ',:
Cap I'tolo 6
.
"
1~ .'d'ij.
i.::
",.:. I'
--""'l~:t\ ~r'
.~J:~
"_ ,:.}
.~'J':Yt;
'<'It\lf. ': '/'l:l1 . '.
" '_":.. ' .I
1. Stadia IF
'"':"',, " . . :Ii!', •,. '·,r'~
• 'J
• .-1 ," •
La logica relativa al PC e alIa memoria istruzioni 1 si traccia facilmente (Figu.·~;} . ra6.18). Si tratta infatti di prevedere Pingresso alternativo a PC+4 che, COrne "~ abbiamo vista, proviene sempre da IDjEX,IMM, .;'h·' ;
,,' I '
,.,;t
,
""
:,'
""JR ...... If liD
.,
~.
'v,
,
.... PlO.....
h,-t,..... tlcnI
'0' \...eIIl... :. ."
"
-
-
I
I
'co'
',:.'~
....
." c-
•
..
'.'
.,..:;1. ';
,'"'. I'
0
'-
.,
'"~
...,;';
I
,
•
~~~:Io
"",~
,',';: '
[)( ," Figura 6.18 Logica di controllo della stadio IF. L'ingresso a PC e seleziona.to attraverso: ~ PCMux. Normalmente PCMux vale 0 e PC viene incrementato di 4. Quando vale 1 viene : ,!:.~ selez~onato l'ingresso prove~ente da.l car:npo I.MM di ID/EX. II comando ~i lettura MIRead·~\·. non e strettamente necessano; estato eVldeuzlato perche 10 stesso segnale 51 rende necessaria . J, :~' nel caso di CPU con una sola memoria. In IF/TO.PCI viene salvato il valore dell'indirizzo' .~ dell'istruzione successiva a quetla letta (ovviamente PCl viene aggiornato a ogni clockj ',;;1 dipende dal codice di istruzione se esso viene 0 no usato a valle). ,:.;j:
I I I
I
I
'",:1
' .. ·..-1
, ",....l
""; .
. ·, . .'..... \ ., 'i'' I ~~
~:
,
'
2, Stadia ID
"
"
La schema della stadia di decodifica e riportato in Figura 6.19. L'unita di control· ::,~ 10 genera segnali per Ia fase ill e per Ie successive. ,I
":'1
lMMux seleziona I'ingresso a ID/EX.IMM tra quelli provenienti dai seguenti cam· " :~ pi: (a) fALy, ~on 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 , ' -.:
~".~,
I [ IMiVlux 0 ~TM L ,ST 1
~
, JAL
2 3
[1NINluxl 0 0 1 1
'(-
I IMMuxO I
,
0
"
1
,.
,
'::
0 1
",
;
,
Tabella 6,5 Codifica del selettore IMMux. La colonna IMMux fornisce il valore numerica, Ie colonne IMMuxl e IMMuxO danno la codifica binaria.
",
:
-' '"
.... ;
"
, , ; , ' ,I
I
,,~.
'-"'~~I~"" "'~,o,
,
~'"')!~.~".' , ... f·t ''''.....
"; ,'""
~(;j;.,;/·:,:,,· .... ,
__ ",..,..,.
!'''' ~ .
'«~';',,,, .
'
:-':-:. '.,.'. , I L • ," ._, .. ' .,' ,
233
-
_'~' .}.-,
.~
1.", ",in"I;.... ••
ov
D.o,.. k" o. RIJ,..I-t.,
.
1 .-tad",
ttl/ex
.•
-
•• u .....
;".,-
r
'
,
'<0
"
I-
•
Co,,"~o'l
0
~
~n
"
R .......
•• ~
.-
... R,
• ,•
P"'T~F
." I-
-
I
'v
•,
0
0
0"
I
, ..
,
l,
,
•
•
.,
,.,
I-
..
..
,
,-
"
," .
'Figura 6.19 L?gica..di cantrolla della stadia ill. La linea. MRead, seleziooa Rsd come r~gi, , tro di deshnazlOne In Juogo della standard Rdj a valle del relatlvo selettore, un ultenore "
:,;;7",' ':' ' ",':>':;,: '".' c,,', .
"
'"-" -,
\'
A valle 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 e asserita. •
' ,;
I,. " '
~r'<"
I
3, Stadia EX Lo schema della stadio di esecuzione
:.-,~
::1> ", , ,'"" I -.I' ":
~
e riportato in Figura 6.20.
5, Stadia WB La schema dello stadio di scritt\.lra dei registri
I
I
Lo schema dello stadio di memorizzazione dei dati e riportato nella Figura 6.21. I due blocchi Xst e Xld carrispondono agE schemi di Figura 6.6 e Figura6.5, tramite i quali viene trasferito il dato della giusta misura e nella carretta posizione.
,
,I:
\ J
4, Stadio ME
1'~.( ....'"
\
1
.::
,C',
I
n blocco LGIMM
serve a generare IMMux, tramite it quale viene attuata ta scelta principale per l'ingresso a ~"'."":'" . ID/EX.IMM. In caso eli ist~uzi~ne JR, 1.30 scelta di questa ~lettore viene r~ irrilevante d~l ~, ,:", ,:. 'selettore a valle, che fa coplare In IMM II contenuto del reglstro Rsi. La IOgica contenuta 10 :.:':, .' LGIMM deriva dalla Tabella 6.5 e risultera evidente pin avanti. .
l \
•
~ . ~Iettore impone R31 come registro di destinazione per PistM12ione JAL.
1
c-
,
,;
1
•
."
•
0
,_.
•
f""
LGI_
n
I
I
e riportato in Figura6.22. 1
'
'I , '
,'
;'L' .
1
,·0.
:
.-.
':'
",
;
"
)
,I
234
>
Capitolo 6
~I
l' Alto
I
PCM"'I<
stndio
"
"
"AC
OP"'LU
E
(X/HE •
,
'~i~··
...t'\.-: ,",:'1._
~,~.';I, ~ ""i ",t,·
,,''.~~
".,.\~,
/'~.~ .. ;
....·1" '. "il ..""" ..'.,......1
.••, ,
,'
ACU Ou'
•
,
,
CO'1'r-"'l.U
~
~ ...
"
· ".{t."] ;''';iI'!j1
~
· ':,·A\~ ' ,.::. ';~~·~;~· "d~'~: ",f''1{'' '.
• .1'.....J ') 'r-IIl:' \ , J"I,,!" -i
~ 'b\~ ,,~.l
21-31
..
.
..
....•..,.. ' l ,,' "' ",,~'lk.; ' ~~\\'f~ fl
.
···'''1 .
'~~'4~~4, 'i , "','I:,~.:I 'I '.-",ll " "
· , ... ,ll~ ', .
Figu~a 6.~O ~ogica di co~tro~10 della stadio EX: II selettore.AL1!Mux deve valere 1 solo";~~~ ' s.ulle lStruzlOn1 che f~o nferlmento alia memorl~1 ~unque 51 ottlene co~e OR delle due ~~ '~ lmee ~ e MWnte. 11 se.lettore PCM~ sceglie II campo l~M come lnE?'esso a ~~ i~ ;:~ : 0
JR; m presenza di JE e JS se
5000
venficate Ie relative condltloUi. J;~~'( ,<. ,,-,,,.,,'t'~'! "'W~~
.".~"." .
",,:':' r ,:
EX/ME
ME/\JB
,·"'~:Wi A
IJB
·j;.I':~ ~~~ « .
IJB
I I I
-: ..
Zpro
"..
presenza di JMP, JAL
I
'.::..: ) J "~i'~ \ ," '.
",::;M~ : " ;'''If;~ :-
S~g"o
. ""'.
•
""
"rit~
....,~
:
VO
A
Alto stodio IF
\
....
"
I I
"""
"
I
J
,.':j(
ID/EX
I
~~
,.('~!r" ":...1
ME
MR~o.d
\Jrite
'."~' ~
-""~
,:, '. ·
rl
I
ALU
.;:. ""\"..-,, ,-,-. "',:W;.1 , ';'~
I • I'ALU Out
Read
Out
, ·.W'~ :
:.',!{.,ilY.i :,
'•. "(.'1: " .t~lI~ ,
, 'i";f.!;fjJ'ir ·
W'l"'i"te
'1
.,".' , .~., , '$ '.;,-~"
~
., '!N~ '; .• ,. "'j .' ':';' "
.'ro.;;: .
, , ';11. ---""-"
' , : ,;." '~1i" .}~! ~
Indir-'zzo
'·"1 '
• I.' w, ." ,"'U • '~G',
•.
B
""~l
I
___
I
Doto
Xst t t
Xld • J..
rl V
)"~ ~'
IHEM Dot
-I
I J
",'Ij~
'Vf.l' l.
,.
'PI' ,' ,'.l:,~
, 'I, • 'iI,.,
I
~
'
.r,., ,".1".' '."
RIJ
I
".(ik\ :
';:~ ~
Jt ;
(
I I
Figura 6.21 Logica di controllo dello stadio ME. I blocchi Xst e Xld selezionano e posi- ,t~ ~ zionano il dato trasferito. I due buffer suI bus datil il cui ruolo ovvio vengono pilotat~ ·:·~n dai segnaii di comando della memoria. Il blocco F ha 10 scopo eli generare per il segnale di "'~'i ~ scrittura una forma d'onda che eviti scritture indesiderate mentre gli indirizzi si assestaoo.. ',;\a\.,
e
r
j
.$ ,
, ",f:'; > .' l ''....... ,
.-'"
.~,
.>:"'
P
l
· '~I\!"'~ ' " ... "
1'~~': -
..~
. . '··"'.. "I: "'1;',.,.,
]l
,'1'_'1.,<,.,
."
>~,j:~r:,:'
La plpehne
235
I;\t.~,r ',. ,,~ 'iI:b:i,J:; .. '
~~·\...k:,':· .
'fJ'"1 '.',"~',.- : . :J'ol J,II.,.,- •.•.
..
'
),;1,-:,:. J<" . \!~; ..... ~ ·r·:. ' {l:', ~·Z .• .....,.
RlJrit~
Allo stodia 10
ME/VB
"'.
i~~i;,,:~;:·i- ': ,'. , "'/i'" .'.',"
"",':1'
VB
:,(:.:t"(;("'i'~'" -;l-,<;t}': ',>r';
,.r· .
M~f"IToReg
c.
;·.~V:::,(,'·'·:
~~~ Ou
,'1-.-, -.. _"
.. . . " ,>~..,,' ',',.' 1:/'" .,. ...\.:"
'~"" ~·i·,·
".>'", ,.• ,
'
0
~I,;~,.; ~
'~""" f,' ..<
~·:··':·'1
'
1
,
'." ..', :":"r'" .;.'." ::,.. ',,' •.
"" Do
). 'I": '.' '... ".; \.i):':"'-' ~"'.. " .. " .'.' .': . ...... "'!:::';:-.;' ';' . .'.
..... '.,' .. ''$"",.'i~'';!' r'."-...~
.'
.~,.,..~,
"V
flO',. ,:,'"
.."." ... iii;:'::'''':''",> ,; '.
Alto stadia I
II" :,•.\:.,.," ", • '..
I
",
'~~~\":-':""~: Figura 6.22 Logica d,i c,ontr~lIo dello stadio W~, II selettore .M~mToReg stabilisce ~os~ ~'~.;.,,~;;_,~~;. viene scritto in Rd. 51 ncordl che su ALUOut 51 pub trovare 11 ~lsu1t~to delle operazlODl :~;:'£.'.:-. '::aiitmetiche e logiche, ma anche l'indirizzo di ritorno salvato dall'lStruzlOne JAL (che sara.
.. "'Ii' ,...' ,'.'
(~; :".(,', Scritto in R31).
....
.
!,,.,,,.,,",,
."
,'"',,
',~,
~":"
:·,\'-r·j,.-I, ".
A~\·'. ,~"
::N'';,.;' ~i
'
,/!~I.," ;." ",
«'JI..{.
.r.,,.·,, , ~.i<'''' .".
~."
·"ll:';':
.
-!..f,',., .... .,11,' ' ,:"'';''... ;::,,'
",ft',J"" " ,r-;.':"":'
1.\,:,,:,:.,:,
,"'.,. $;\",
.. ;"':'" '.,
,
~..
..}I."
.•
",i,:.;, .. 'to ••, .
"" t .• ' " ,",'., :r {.,l. I., •• .
"-: .. ,
~;':\::+":::'"
'.,." ." ....
""" ,.' ',', ..~,
'"
(~:+"
':t:..': .:. r"
'~; .. ,
.
,'/". ,i .':: i ' ',~
,
..
n OpO I Opl A~ LB LH SW SB SH JAL JR JMP
E -ritn
NOi'
I,.. '
'.",'.' ". ,.., '
I
1 1 1 1 1 1 1 0 0 0
0
I 0 0 0 0 0 0 0 0 0 0
1 0
1 0
IOp2 -1 0 0
I Op3 I Op4 I Op5 I
1 0 0
1 0 0 0 0 0 0 0 1
0
0
0 1
1
0 1 0
1 1 0 0 1 0 0 1 1 1
-{- { 0
U
1 1 0 1
1 0 1 1 1
0 0 0
0
' .
:~!>': ~>
;"
~,~
Tabella 6.6 Codifica delle istruzioni. Il codice operativo del NOP e un campo di soli zeri; per Ie operaziooi aritmetiche stata scelta una. stringa di 1. Per quanto riguarda Ie ;.. a1~re istruzioni, i primo lore bit eli OP (OPO, OPl, OP2) iodividuano il tipo di istruzione ~ (nferimenti aHa memoria 0 saltO, mentre i restanti codificano l'istruziooe all'interoo della dasse di appartenenza.
r, ..' .
~J .:.:, '..
,>'
,. .
>"\
" ' ·t.,·'···' ': l;" 'I,
P"
'~~';":.": ",.,
".:1' ,•.
e
'" 236
Capitola 6
6.6.1 Realizzazione dell'unita di controllo
an,;:tl
Siamo Ora in condizione di tr.cciare 10 schema dell'unita eli controllo. Occone tutto assegnare una codifica a ciascun di operazione. L'assegnamento m 6.6 stato scelto nell'mtento dl semphficare la rete nsultante. L'unitl. 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 tramite la quale si traccia la rete di Figura6.23. .
Tabell~
I 1
codi~e
e
::n
ARJTM
MI ean -IMMuxl
lMMuxO
OpALUl OpALUO MemToReg MWrite MRead ENW ENH RWrite
1 0 0 1 1 0 0 0 0 0 1
o
I LW [jw I JMP 1 0 1 0 1 1 0 1 1 0 1 ,
1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 , 0
I
!
JE
1 1 0 1 0 0 0 0 0 0 0 !
riPorta~;;:I~I: df!~ 6.7\~ ';~j0
I
JAL
1 1 1 0 0 0 0 0 0 0 1 I
I
JR
1 0 0 0 0 0 0 0 0 I
I LB I LH 1 0 1 0 1 1 0 1 0 0 1 I
1. 0 1 0 1 1 0 1 0 1 1 I
I SB
1 0 1 0 1 0 1 0 0 0 0 I
I SH
I
1 0 1 0 1 0 1 0 0 1 0 I
, ;~.!,
-':'it~ '!~ 1 .i!7 0 i""~ ';:~
Nap
~':iJ!.l "!iI"
'.,);~ O'"'(.i~
0 0
•
,"i~ O.,;tj\
0 ".":'I O.
'_~{, O',,~ 0 '. " !~ 0 ';',~]1
d. .~:.r..li ,~~ .... ~l"
".~
7
Tabella 6. Valori da assegnare ai segn.1i di controllo in relazione .11. codific. della · ,'" 'I precedente tabella. Si noti che per 'I'ipotesi di doppia memoria MIRe.d e sempre asserito 'eA' . ,,;:,~ .
,-\"1
',"";1
· i;-r, -'ii'
•
, , ,.'j, "
6" 7 Conflitti
""",
"'";.",'
,
·;~:~~
· "hri: , "ll
.:':';
'-I Poiche la combinazioDe delle i,truzioni che pO,sono trovarsi in e,ecuzione nella pipeIiDe:,)lli'\, al geDenco "tante dl tempo non puc prevederSl, SI POSSODO ve"ficare confi,tt, dl vano ,''''') genere. Esistono tre clas,i di confiitt!. •
'~L:; ·
"J _
.8;
c
•
C6Dfiitti strutturali; insorgono per l'uso di una medesima risorsa da parte di piu':'''!
,-,,':, stadi'~i;
· . • Conflitti dati: nascono quando un'istruzione dipende dai risultati di zione precedente. una istru- :':Y\ 1'1
j
• Conflitti di controllo: derivano dalla presenza di diramazioni e da altre istruzioni che modificano il contatore d.i programma.
'-:;j, J",
':.~
~"
• ,'i
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
e la 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.
",~~
?t{ "'..: 'I'"," ". "N~ ,:,-~,
'. ,I . ";'
c", ,.. _. ',-
I
· , I
~'¥.~':"
1 I
-
'...
i'$~':;'';::
. .. '~f0f;,i;~~·~_~_----------------,~~t>:~~;!5:-,":'.' ".
, :L: :,:. .'p: iP~: el: in:.e=- _2_3' ]
t,,~~j{,<,:~ -,,: v-'-.~.,_
~nY:;';j!:'?{~,
'.:rv.';",,·~;x'.> _'~,!;~, ..-, ·:·'·i'-'-·'
'(~l., ...•.• _',
"
.
7
-
,
l ;~~.:f·i.·:~
:11t~~:,-:.:.~:
1
;'0';:':;'.. :\ ';';!?:;:';'" .
~ .,I('.,:' 0 "'.i ,"
!
.
'" ~ ,~
~ ;!f ;',~ -,":: .~~' ' 71'..y'.:; ~':i;~: ' . "
-<
~
"
)
""
~~~~~~~I"~"CI~~~W~~Ci·~~,"~~n~~~~R~~~~~~~
.:-.". iJ'l
.." ...
!
j
_~~-,.... _~ '. ~c __ '. :ft"-',•..•.
1,
{.,.,•.•.•
Y\"
Mt~'oR·o
~\};:;; " , "'" ','.,
.
I.e",.
M'o'rlt.
,'0; ,'" .', ' '. ~~< '.>,; 1j~';''''_'
Iftud IlVl"lt~
~.it,."c':' ''''~,:>.• '':.,.' ',0';,:',', ,"
"'"
;;',S'" ;" .
:'/'.•.:"".
tiL....
""
....,
",';+""
'-". ,. '
1/:-;-,--
',," . 't,,' ',,"
~
•
.
t;~~~:~ J: ' ...-
. ,. ," ~.. .': ,,:C- . '.', ..:' ~'.,
_,
•
:"';;' . -'""
'
~;:
.':,,'
.'
,;,:>: ~. ...
o'
':•
~.:;",:
:, .
I'..
I' .
. ..
I .
JAL
J(
JS
..
Figura 6.23 Realizzazione dell'unita di controUo della CPU. Alcuni comandi com'e ALUMux 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, sempr~ asserito.
'~9~A~-' ., :",:,'
,~;..
i..
t
]
;,t.; .
;.....,' .
.
-..
-"'_.. 1
'•. oC···' ':
'i:~,
.) ".
! I \
,
":,:"', ' ,-',
.. :-, -).
I
-~\
,
.
C~.
"
I ]
!
.
• LA '>hl:( (.t:!-~"j.
n ' r0 -\':'J() II-..Ii. fl.."\ <.'./1
)
238
I I
C
,/
apitolo 6 ~"..
"
;..,.li
--:-: ~~';, "
··(vn.~ ~·t.l.lll'"
6.7.LCo.nJlitti strutturali
' !_
'"I" '"
~l';!J! ' ,\~"tW "·
,';,." c ,;-:~ ~"
'.{l;i ~
/r.~ ; .~,~})~ ::
:·,.~·!!~il ~
Si ba un conflitto ,trutturale quando la combinazione delle istruzioni presenti in maC.. ebina e tale per cui stadi distinti della pipeline lineare riebiedono I'uso (esc1usivOj'.:T:< delle medeslIDe f1Sorse.
I
'<.~~ ;~ :. ;:);
let.ruziootl CloU dJ e10ele
1
L --l) fv~
blru;r.ion. I
(WIST)
lstruzione 1+1 blru::r.ionc 1+2
IF
2
3
•
'"
EX
IF
ID
EX
IF
lD
ME
, •
•••j '
\"
7
W.
ME EX
'
,
• •
.: t.i ..:r} · ,£, c' '"
W. ME
W.
ID
EX
IF
10
lalruz;on .. 1+3
\
Stan,
IF
ME
we
I.Lruzlonll 1+4
I
Figura 6.24 Conftitto strutturale.
EX
ME
we
lettura!scrittura da un 'unica porta di memoria ' ...".
. i
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-
\
}:,,, ')'f .- '1< :
:~'i:'I'
truzione i fa riferimento alIa memoria, nella sua fase ME entra in confiitto per ]J usoe " dei bus esterni con l'istruzione i + 3 che dovrebbe effettuare il fetch. Ovviamente ~ "" ' '..q... ,[ obbligatorio far procedere l'istruzione in ME e bloccare quella in IF. In Figura 6.24 :~-!,>' c'; viene esplicitamente indicato che l'istruzione i + 3 subisce una fase di statIo, nel sensa ..'.·'i, . che la fase IF eli questa istruzione viene posposta al clock successivo. In tal modo si "/",li', -, ' eriportata introdotta una ubolla" nella pipeline 12 . La logica per 1a generazione della staHa e ,\~j _,,1; .... in Figura 6.25. 'I. c' ','.
't ..
I I I
,,~
'... ~
n modo 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 J
·i'i:, ,: ,. • '}
.'
. ";4~ ~' ..".,
.
•• ' I
.' :;; , ., p., . .'
6.8 ConfUtti dati
\
..
,...-\." ~ ;
,,' I ; ' ..
~
\
,
,
.,
','
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), [Ram 77).
','1' -.'" '.
_iL · ',. ~,
'\
".' ,
•, ,
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,.
.
,,
..• , .,,',' . •
;*1.·
".-,..
,'"
"
.
",7i"\".
'~''t'
:l'oi'. _ ,,',"., . ;
/i:;,',""\'". ''' .. ,1,
"'. 'V.
La pipeline
,
239
IP'I<;""
"{~1; ~.~ -
'I" ,." ". !-":':', '," , _t.•.. ,., .•
','" .,- -', "·'c· ,.
c'",' ... "-"~-.-.
~':'>":
~))>:..:,""' ' ;J,. <.:f:: . :~;" ,:",:, ':
~:X:..' - •
.
"".
~
_ock
.
M\Jrl"te
rli;~
I
..."cI-
Reool
L
0
1 I}
,
MeMoria.
1~1D
':-:-:1,,_<:; i I ~_1n
....
::.:
1_10;
=~~
UC §,
O/K:
It:
It:
.-~.
RRI Mi.'
-
.
A
Rr
Wi
~ 'p.
I~P
).
.: : :
Mlo'rlU
tl:
.:::.
~ALL.~_--1+"
-
I--
Pu~
'" "".
h
b "" \7-
f:t.:,
.:.:.:.'
A
.,.. B
t£/'WB
1\
v
.:..:,
..... P
... ;, ....
.:.:.;.:
Bus lndtrizzl
i
Figura 6.25 CPU con una sola memoria: generazione della bolla per evitare il confiitto strutturale. Lo stadio ME accede aHa. memoria se e asserito 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 e stata. 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. .
"
[
;,
.
,
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 possibile nel nostro modelIo di pipeline, poiche tutte Ie letture precedono (in ill) tutte Ie scritture (in WB).
e
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 e stata 505pesa. Neanche questo confiitto e possibile nel modello di pipeline di Figura6.8.
6.8.1 Tecniche per la soluzione dei confEtti dati 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 un 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.
e
,'
-,"(I'
.,>
240
, ."~~ ':'J!'oi .: '•. "'I'
.
_....'.~;.,~,
Capitola 6
~------------- .. Y.';."',;
- -----'-'----'-"--'--
r.~·,'
,'til. ,.
--:,''''~11
. "'<"~j~ril; ;, n: l, "~,
Anti~ipazione (ForwG1'ding): il ~a~o v~e.ne. presentato all ' ingresso delPunita Ai~~","~:.fj~i
z~onale che 10 usa .attraverso del ClrCUItl cil bypass. La tecnica viene anche de ;.:(A~ dt bypass 0 cortoclrcuitazione. tta,:\~-1! . . . :";.,,, Sov~apP~sl~lOne (Clock halfing): Ie operazi?ni di accesso ai d~ti cia parte di due J~~ lstruZIOnl avvengono sullo stesso clock, rna III modo non confhttuale. .~~;~j~
~ordinamento
(Scheduling): viene modificato i'ordine di esecuzione in mod ~";:fl.~ rendere Don conflittuale ]'accesso ai dati. 0 a ·'''.~'i5 : \,'H 'I' g t .COffiun pque si vo lia 2risalvere un conflitto questa va prima individuate COn la;' ,:,: :r8~ j d eClllca e aragra f0 6 .8 . ,,:'~~~,:)~, "0
"·:)~t~
. ' .,,¥.,
"'~-,~,},"i ....• .~i~
-
6.8.2 Riconoscimento del conflitto dati
','
.,',tt
",·,~t
,,"~',~. '.f
"
Per fissare le idee si considerino queste tre sequenze di istruzioni:
ADD
R1.R6,R9
to
SUB
R4,Rl,R7
MUt
Rl,100(R3) R4,Rl,R7
ADD ST
,,\',:i~;~ ,
Rl,R6,R9 200(R3),Rl
51 = ARITM V LW V LH V LB V 5W V 5H V 5B V JE V J5 V JR
(69)
52 = ARITM V 5W V 5H V 5B V JE V J5
(6.10)
,
'''.~"
-' i,:::,
"
,..
..
\~, ~,
'"
;:~ "•
,•
riscrivibili come
:},.
51 = ARITM V MRead V MWrite V JE V JS V JR 52 = ARITM V MWrite V JE V J5
(6.11)
(6.12)
'I;;;;
' . ,__ ,
"'J
..
.- ', · -, ",-
.
~~I
.' .
.-
13Non si dimenticbi "che i campi indicati come Rs1 e Rs2 hanno significato come tali solo can Ie 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 negatIVQ.
':i
',~
.
\;1 ,;~\
. .I ·<' .~
j La pipeline
241
'''-''f''~'
-.-".
~:l.l: ~~.) .;' ,
,,,,~
~~'~;,
':",
',.'
.:,0,;::":.:
I segnali riP?r~ati neUe ~spressi?ni 6.11 e 6.1,2 va~o intesi come queUi in uscita cia ,::~.;,' .:; _ Vel ovvero relatlV! alia st~dlO ID. Rispetto ~lla hsta nport~ta al termme del ~ara~af~ 1.:;0:.: ' - _ ···.6.5, Decorre prev~dere 1a lmea ARITM, ;or~lspondente all'mtera cl~se delle lstruzlom ".":,,. ... , . 'tmetiche e IOglche, della quale non c e blsogno a valle dello stadlO !D. :\;:':e'~-~'---- an Si ha un co~Aitto tra Pistruzione in ill e quella in EX se e vera una delle due ~~:-".:: ,.,',': ~eguenti relaziom:
"?~::""
(IF /ID. R.sI = ID/EX. RW) A51 AID/EX. RWrite
(6.13)
H;'.: .
(IF /ID. R.s2 = JD /EX. RW) A 52 AID/EX. RWrite
(6.14)
:.:.'<,-, ".:: "
:':'.~-':::,.,
.
'1'
~\,, .... quel am ,.,
ME' .
:\."::',.. "',.' ,.,. '. ". " ,
)
.'
,
)
(IF /ID. R.sI = EX/ME. RW) /\ 51 A EX/ME. RWrite
(6.15)
(IF /ID. R.s2 = EX/ME. RW) A 52 A EX/ME. RWrite
(6.16)
.. :,', . ,
';' .' .,c"",,_-, ••
1 I
, ,
,':,~:.-
I
Le relazioni 6.15 e 6.16 verificano l'avverarsi del conflitto tra J'istruzione in ID e
~':"
',~"'>
]
'. '
' .,
.-
,
; "
(6.17) (6.18)
I 1
)
,
I
,., Ir lID
OP.H+----j
.., ..;
RSl l ~
" "
IDlEX' ' ,
...
EX/ME
'v
'v
uc
MEIIJI
~ ...
J
,v
I
~
4'
.
..
....
,~igura 6.26 Logica per il rilievo dei confiitti dati. Sui latch sono disegnati solo i campi di
I'
'"
..-
)
mteresse al fine del rilevamento dei confiitti dati.
1:'
I-
.
) ~
,I
242
,-. j' i /
.
Capltolo 6
" ;1/ I . ,
--.j ~
-
-'
6,8,3 Soluzione dei confEtti tramite stalJo
I ,
\I
.....
)
." - '
I
~I
,"
........
)",
/"
•
Rl,R6,R9 R4,Rl,R7
LD
MUL
'
'e
._
I
---, -
J, --
: "~I " ""~'1. ' S ' \..... ~
/ l
,,",',., ''''" ·.-;lrw,:, .,"'" '';i':
I../
,'Aj S·:;
\
)~lfi, '~:" ."·']r ;;, ~~,;~ \~i::!,iij :..;o,
"
Si considerino aneora Ie tre sequenze:
ADD SUB
~
)..<
Rl,lOO(R3) R4,Rl,R7
ADD
ST
Rl,R6,R9 200(R3),Rl
.. .i: ··:;<'?i:I·:t~-:;<,
. "~""::_~' ..:'. •
','
· ,<;.!, ~ •. ~,.
0·.1
-~
',c.
'''
,,,
"~)j
,,,"('.,1,' " ~;"
..
Per curare il conflitto con 10 statio occorre posticipare la rase ID della seconda ';':::'~;l_:"~' istruzione (SUB I MUL, ST) a seguire la fase WB dell'istruzione che la precede. Si ~',A:: « tratta di inserire tre cicli d.i ritardo, come illustrato nello schema di principio di'~:.i;; "., ,
F 19ura6.7. · 2
;
,'.
'
'.
",,,. ,'."i':':;"'.-
. '."1/< .-.•"
,
,~~
",:,:~.':"
IF
I I
I •
I •
I ,I I \
EX
ID
ME
.talI• ...... .talI.
IF
·,~:~1f: ,~;:~
WB
/(;>~; ;:',<~ 'I :!!.';, . ,
10
EX
ME
1fII
:~·\~14·:{
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). . ....}~ ::,«
""" ... "":'l ,,'.1 ,
.,;:; L~ condizione di conflitto viene riconosciuta dalla rete di Figura6.26. Per attuare ""~:i:\' stallo e necessario tenere bloccata in ill la seconda istruzione: si cleve dunque ',. :':g,: ,(, ::;,i~
10
aggiornare il registro ill/EX, non con Ie informazioni che servono a comandare gli stadi;:J; L;' 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 "~,',i~il; :~~>' Figura 6.25: la linea Confi pub essere impiegata per silenziare il clock a PC e per ,,~~ :~t' seIezionare 0 (zero) come ingresso ai campi di comando su ill lEX. '11 :~ '-;, In riferimento alia prima delle tre sequenze considerate, accade quanta riportato ',.: ,::~~ .~~ qui d.i seguita: ::~:i
-~""
>-
'."
L Quando SUB
e in ill 1a linea Coati risulta asserita, in quanta e verilicata 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 ..~·~:i • .,' ADD nella stadio di esecuzione e l'istruzione SUB nella stadia di decodifica, schematizzato in nella parte alta di Figura 6.28. L'introduzione della stallo rio chiede la formazione della bolla, ovvero 1a scrittura in ill/EX di un1informazione' ,:.:.~ '.';che non determina alcuna operazione negli stadi a valle. In Figura6.28 cic e stata ' '::~,:,. 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 dis~ende che Pistruzione ':'~I~::.: 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. n clock cleve essere bloccato anche per il Program Counter, in modo ··~:I,;'. da evitare il suo incremento. Cib determina 1a ripe tiziane del fetch dell'istru- ,~, zione che segue SUB. semplice AND del clock can il negato della linea Conft ::':'1" sufficiente ailo scopo. .~,~'~ ... , .,
e
e
n
e "': \,:
"il"
e
...
"
r
,."
.-
l
'
-I'
,
"
,.;~,'."
..
",~~' . '-,~
I
~ ,_,'-J"
.~~,.~~,~ ,
""",,'
~i,jt~1".'. e,~M't..
~
(
J/:::=:;;\ I _ I l
I
'~t~'t ;'
'SR
,-,'
'
,f:·,: ~ "
~
~ ,_~
~
"
I
" ..' L·' " . :CJ::;.··,·
_--.:;~I I .
)
<
' I
1 /~ J ,
La pipeline
243
,/
_~.I
.., __
;;~'/','
I
.. " I
."
J
"';' :;': ' ; ,,'•...j.,. ,
...
' .. ".. ,:;;":, :.:.
,:"l~'..
."'i"" " ' .
.
Jr/ID
•
'.' •
- ". "
" ':'/. ". ,
«':':.
,; .
IF
.,.-,
~ • •
~I~
•
iD
;: •
"""
" ....,
~
ADD ••~ oi
ME/WB r-
Ell/ME
SUB
".-,
.'
ID/E>:
~
EX
•
•
..
~
"-
~
~.:.';.',:C'
we
L_-,
0
~L.;·.'.;;
ME
._'
{t,.-~,
. ' " «.-,J.;.
tF/IO
:':~ ,
...
,
ID/EX
EX/ME
SUB
bolla
1D
EX
ME/WE
ADD
"
"
~
1',,'"
;;;. ,
' ,....:" ":~::, '<"~;'
IF
HlI~H ~
~
•
ME
WB
~
.:,,>.;,: .
, '~':"~";'
".,'
'"~'~"'.'·
,
~;'''. ~,
'
~;:
IF/IO
- ,: ~
ID/E::<
SUB
ME/WB
EX/ME
bolla
•
~ .
,-.'
,
IF
~L-.W
•
~
•
ADD
bolla
ID
EX
~
idE
~
LW]oil
..I we
0
~
-t';'
.
:,
:~ .~,
"
,
•
.
"
~
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 ~ta generando 1a terza.
.' 'I :.,
"
.-..-,..'....
',<,',', t,;:-,
"
,
...' ~:
; "~'.
:~\
244
Capitola 6
jl
.',
J' "
'-, I> :,',
-
.r.-, '.,\",:,\\'
'
";",, .~ .•.,'f1'.'
2. Al clock successivo SUB eaneora in ill, mentre l'istruzione precedente e in ME L :,.~·t linea Confi risulta asserita per via del verificarsi della condizione 6.15: per qu~nt~' ,:']&: appena detto, l'istruzione SUB subisce aneora uno stallo, mentre l'istruzione in :~.tt~ ',·";.,.(~Vj; ',,,,*' ME proce d e. ~.~
.: '~'.'!"~ "
:;".,,-
3. Al clock successivo SUB e sempre in rD, mentre 1a precedente (ADD 0 LO) e in WB, '..F.y~~
Ancora una volta 1a linea Conti. risulta asserita, in quanto vera la condizione ':!£~ 6.17: Pistruzione in ill subisce ancora uno stallo) rnentre quella in WB (ADD 0' .' ;t~;;: LD) scrive il registro di destinazione (Rl). '.::,~j
e
,
"<",.,, ""~ "'~"i
.
da S~B, ancora in ill, non d~t~rmina '.'~:'~~~ ~on.fi.itt? (anche perche ormaz la plpehne a valle e vuotal) e la catena 51 nmette :,.:t~~ In movllDento I' "'rl
4. Al cl?ck seguente
l'ide~tita d~i reg.istr~ letti
.'-('>'/!~ .!~
.
".;,~;r.i ".""it
, .. :.~';,.','
:'
6.8.4 Soluzione dei conflitti sui dati traI)J.ite anticipazione
--
----------
,.:.~
"",,
---
~
·-'t~0
,., ',',:, .
.. , f
Consideriamo anzitutto il caso delle istruzioni aritmetiche riferendoci alIa sequenza: " '.'~~ . ',;~;:. ~j: ADD Rl,R6,R9 ,',~~ SUB R4,Rl,R7 ,'~'S¢t
,;'~1 '.. .'.'" ;:~~;
11 risultato dell'operazione ADD e disponibile in Rl dopo Ia fase WB, rna prima di ,,"~;~: essere scritto in Rl si trova nei registri della pipeline. Difatti, quando l'istruzione ADD ...'::~: :.':l'.~ "." termina l,a fase EX, il risultato delIa,so~ma viene copiato in EX/ME.ALUOu~1 per . :/:;[~ essere pm propagato al clock successlVo LD ME/WB. Dunque l'attesa della scnttura . 'g~ di Rl in RF puo essere evitata - e con essa i relativi stalli visti prima - intercettanda ':>·: il risuJtato e presentandolo alla ALU in luogo del contenuto di Rl. 8, tratta, in altre ,"':£\ parole, d, bypassace ,I contenuto del. camp, ill /EX.A e ill jEX.B (Ill questo caso d"i:~ illjEX.A),. anticipando l'operando alia ALD, come in Figura6,29, . ::~ 14 Sugli mgress! alla ALU vengono preVlstl due seletton che, 10 presenza d~l : ~;:~ conflitto, selezionano la sorgente cia! campo ALU.Out di uno dei latch a valle. E abbastanza facile scrivere Ie relazioni che danno i comandi per selettori. Essi dovran· ..,,;:'i~; no se1ezionare gli ingressi provenienti dal campo ALUOut di EX/ME quando sona: ,;:.:,~ vere Ie relazioni seguenti l scritte rispettivamente per Pingresso A e l'ingresso B 15:. .'..:~;~
':.<:t.
(lDjEX. RRl
= EXjME.RW) 1\ EX/ME. Rwrite
. '~"J ... (6J9)':E ~:)f:
(lD/EX. RR2
= EX/ME. RW) 1\ EX/ME. Rwrite
(6 • 20)
,
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.
,;
;,t .t;:i
.. ,:
".
,,'
, ';'
,~
'~.
,~:-"
~,
"\
',.,,
\ La pipeline
245
;r"~~11J1;'~ . _~_-------------------------==-'~.::::=_...::-=
~~.,.,,~. ",,,,~,, -
!.<. "-"\'I~ . '~.l·~·'h·, . ',((,"\!ir:<',I:~
J
';I,,_~I! "I".
""'4':<'\",\,
tI·:~;}~r"·
ID/EX
4P::~~~;,i,t:~·
,
RVr lU
~f~~f '~,
RVrlt"
,
Rv ..lt"
HE!IJB ~, '
RIJ ..lte
... .-,
I
..:.:,,:,;:.,:
'
"I~ ""'1 ·;i;,/··~:::'.::
::::\, ,c·,,-.....
,1"-' ',";',
~~.. ~\:
-
r,-
1-"
;;:~~~:D:?:",
,"' •
,
M~'\;'j", ",
.' ,~h ..." , _.~;.~ :' :.
,
B
:';, ,
,
'
,"
,,"', :':",,;';.
;f$?-:}E
ME
""
V
1:;;\
\,IB
I-'
""
I--
C-
.v
fo'v
'u
'v
l',y,",',.,"', .,..\~'-""''''''''
I-'
l-
ALU
"" '-'
'~".:-\:' ,
;~:~~'f{': ',:' •
A .........
rS"l" •
:tf~.\{:"'".'c ·Wr'.~,:j~~'" .
~~;'~~:i.<
(~ HE
t
I
Unlill dl
p"Op
1
..• !,~. '", . :p\i,;,,',,'/,.'. '
;'t.'/," :., ,
,"
1
"",>".,.
0~':~:"J/:;
"";.,1 .. . .l .... ".,. ,,~""
, .
'
,
)'1:.;::, '
S h d I b I fi stat,' r',portat,' solo " campi dei latch di > Figura 6,29 ema n ,gura sono . . . ~;:!::/, ::i '. " interesse ai fini dell'anticlpazlOne. L'us~lta della ALU V1en~ cO~)lata al ternune della Case EX '~":::J:~':
C
~
~pass.
~ '.~~:§~',);, in EX/ME.ALUOut, per essere trasfenta a1 clock SUCCesSlVO lD ME/~.ALl!?ut.. No~ar~ ;:~~\'; ;.,':.' de su ID/EX sono stati aggiunti due campi (RR1 e RR2) per contenere 11dent~ta del reglstn 1 ~;t~~~;:' : :- sorgente, in quanta questa d~ve essere c~nfrantata con queUa del campo R;W de.! la~ a ~alle. ;,.\~\<:.),\ ,': ,Ovviamente RRI e RR2 cornspondoDo a Rsl e Rs2 su IFJID, mentre RW Idenbfica 11 regtstro -",. .. ,,,,,.,",, -
:;~\p..:~t',~:
]
"::di destinaa:ione.
~~7·/:~""'·_,
,
~ . !f-"""'~'",""~'
"~"'"''''
'~~}::<~~::.~::.,':" . . jl' . ALUOut di ME/WB ~ ::::1~':~,:!~': e dovranno IOve~e selezlonare . lD~esso provemente dal campo :,~j.':r;~i:·:~,\:I,/quandosana venficate Ie relaZlOnI. \ «(ID;EX, RRI f. EX/ME. RW) 1\ (ill/EX. RRI = ME/WB. RW» 1\ ME/WB. Rwrite ~ -:'.f";:i,;"" (6.21) ~ it~"~''." ((ill/EX. RR2 f. EX/ME. RW) 1\ (lD/EX. RR2 = ME/WB. RW)) 1\ ME/WB. Rwrite ~ ,:t;,~,I:;,~r~F'" . (6.22) . ~~~< '>":',~':,': n~gli altri casi gli ingressi alIa ALU restano i campi A e B di ill/EX. In Tabella 6.8 ; '5:P./ ~\. ,,~ '.viene riportata la codifica per i due selettori SALA e SALB I tramite Ie quali si traccia ~ i~!~>:~;~;f.,.;, facilmente la rete di Figura 6.30. ".'
\
.':.
\ I
"e;:;:'
,
.
I
•
l i
~ ~f~,~::~:':i/:-:-'
J",'.' ,·~,:cS ," .. ' \
:','
... '
E 'C".' ' : J;~,;~::•.'.,,'~.:,,;:,
,,'" ' ,-' ;".J
t /{,..,: i. ~:X ,.
.,. ,...,. . , ' . ' ,j, :;. " .
',
~.
•
"
,.
2
-
0 0 1
-
0
I
{ -
1
<,
'.'.. ..,, ... 0-,"" \\, .~ 'i< •• ,:, <",':.-
:.. "..
0 1
"
". '
.\. ::
I SALx I SALxl I SALxO I
Tabella 6.8 Codifica del selettori SALA e SALa. La colonna SALx d~ it valore numerico; Ie. colonne SALxl e SALxO danno 1a codifica binaria.
1
I I ,I
246
Capitola 6
HE/VB.RV
[X/H[.RV ID/EX.RRI
IDI[X,RR2
F
F
EX/H[.RVrlte
l-
SALAl SALAO
I .
HE/VB.RVrite
SALBI
.
FO
~
"~;!:f
", .... ~.,".
,; "".'i
,':r. ;~!~~.
I
.
II
'" I
!
La propagazione per l'istruzione store di memorizzazione:
,,-A~
ST M(Rb),Rsd
:;':i~.
' "
Nella stadia EX'il contenuto eli Rb V . ,-:'·',;.-lr~,. ,~o ien' "" -'''-''M'' • n~. Dunq,ue il bypass di A BU ill lEX e lisato per calc~lare lmdmzzo di mem~::,~~ ~ Ie lstrliZioni aritmetiche. segue Ie stesse regale Vlste precedentemente per'it'.' .,"~~~W
. p~ ~uanto si riferi~ce 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 " " " "'" , t rUZlOne che modifica furl preced' d' . ,. . 0 sta. 10 ME, se Fis~."~;', _~ ~ EX/ME.B, se tra l'istruzione C:e~:i~~~amente 11struz~~ne ~T; (2) da MW /~fJ:J~ ~J\~ ill~a~o Rsdj (3) da MW/WB a ID/EX.IM Rsd e 1a~! c e .un lstruzlO~e. che lasciiL.!i~, ~~dp: 1a ST C1 sono due istruzioni che 1asciano inv~' se tra 1IstruzlOne che modlfica Rsd e,,";:;-:?, ;~H: Come esem:pio si considerino queste due ato fud.. . . "'::",;'1:' i~ff . . ,sequenze, cornsponqentl al caso (1): ",,:,~'~ ;i&i~ ADD Rl,R6,R9LD Rl,100(R3) , ,~~, 5T M(:ftS) .Rl 8T H(RS) Rl /';~/, :f~~'
,
":,:ri '~;ffi}
',,')1
In Figura 6.31 viene illustr~ta 1 t tt . %{~:~ ME/WB alIo stadio"ME. Si noti ahs ru ura d:l bYPa:ss re1ativa aWanticipazione da ~';:;~ '~\:V~ Rsd, prevedendo oil camp~ RR2 s~ ~~7~r~~ tisporre.l~ ME ?ell'id~nti.tf31 del ~e?istro:;X .~;~~\i per cO,mandare il se~ettore di bypass, e,dunque~ condlzlone dl confhtt~, da ubhizare " ~;S~~;
(6.23)';'~ ll
, (EX/ME. RR2 = ME/WB RW) i\ EX/ME. MWrite i\ ME/WB RWrite L antlClpazlOne completa per 10 8T . h' d ' • 'A~{;""' i casi' (2) e (3). _ HC Ie e, ovvlamente, an~e Ie reti di bypass per:J.'~ ';i~:i
. ,'I);J "0;'\
'~~"'l "'0',,0:' ,,,,,,, "I~., ,::,;,~
,;",""';"
,'::<$,:>1i~ : ·;':·f~:{'.4g
:"",,-l.;r,,' ',::;1:1 " , ::'$ """,
;;,~!\~ ','i;"f,F ...;t~~,(~~Yi La tecnica. del bypass non risolve tutte le situazioni qi conflitto a cui ,si pUG andare ''-:-'~'~~:')' '';~i'~
incontro nell'esecuzione delle istruzioni. Consideriamo la sequenza
I
I
.
6.8.5 I confiitti per Ie istruzioni load
1
',:'"
Jgura 6.30 Rete corrispondente al blocco "D 't' d i ' :-.),l;,;· III a propagazlOne" della figura precedent~y':.
I
I I I I
SALBO
,A.
':trf{
'~):2iili:j :!ll'~,. " • ,.?,,, "i '.. ..~;
.
La pipeline
11110 stodio ••~ ID
~
247
_ I
HENB
EX/HE
"
~
"
HReod
Hl.'rltr
lr;:Li
'" M
rt-r1
:\lrit
---'i,o
~"
vnt
M
'
~"""I"e
He... T0
'.g
._f-I0r---, I
,
""••
D.te
U-+-I.)---j° I •
'"
'l)
,I
r,
........,
~ u-->t~
'"
01
Ipr_
p,"
,tor,
Alia stndlo -
Ilr~:!~:i~ura ~.3: ~ete ~
st~r~.
propagazione per ole istruzioni' di La specifica unita di "i'fi1;:>propagazlOue e semphcemente 1a rete cornspondente ana cond.!zlOue 6.23.
o~""t1'!t;T~::l'_ . ~~5.~1{;EL· .
• S'l'.--"
W:;:'::'-
~i~F:"
LD SUB
~r"::<:;';,::'
Rl,lOO(R3) R4'Rl,R7
"i,··,· _~Wj!jt··,'
,
~~\~:;:~OI~e sap~i~o, ~ssa pure deterI?ina :onfiitto ~e: .R1, ~a c'e differenza rispetto ai
:,::;':Yi,~Casl esanun~tI
pnma: quando 1'1struzlO~e 5~ e ill EX, Il.valore ~he SUB dovrebbe :>(,,~}egge.re non e aneora stato prodotto d~ll'1struzlOn~ LD che SI trova,.lll ME. Dunque la fiF~~"relazlOne 6.19, che far:bbe prelevare 11 cont~nut~ del campo.D .~ EX/!VIE, Rr~du~~W>:/,',:r~bbe un ;rrore, per0e tale campo non contIene II dato rna l'm~flzzo dl memona (11 ,;,;z"dato .';'erra prodotto 1D ME/WB.MemDat solo alia fine del penodo clock). In altre ~':~t'(,:,paro1e, col Dostro modello di pipeline lineare, il caricamento dalla memoria, seguito }'i:'s:(, da un'istruzione che 1egge il registro caricato, introduce uno staUo inevitabile. ~r;i:: ,. Per ·introdurre 10 stalio convie.ne intervenire in faze' ill, in m~do non dissimile da ~~~,',\: .quanta visto nel Paragraio 6.8.3. Si tratta di introdurre una-bolla in ill quando e i:~~~,:;' verifi:ata ~na d:lle condizioni 6.1l~ 6.12 e al tempo stesso l'istru~i?J.ie precedente (in ;::':'" EX) e un'lstruzlOne LD .. In altre parole, detta CONDLD 1a condlzlOne:
l~;;((IF /ID. RBI = ID /EX, RW) i\ 81) V ((IF /ID. RB2 = ID /EX. RW) i\ 82)
'"
iiD:~' Si ha stallo se
\";' ,. .
:.>,'. ',,'
;"' ..
~}"
e verificata 1a condizione:
,.
g:'\,: 1",","',
,,,',",'
F{;',..
(6.24)
CONDLD ,
i\
ID /EX. MRead,
,
(625)
.
.Nello schema in Figura6.32 si riporta l'intervento necessario a mettere in stali:,. 10 l\struzione in ID. Quando la situazione e stata risolta, la pipeline riprende il ~#L:'. ,suo, ~or~ale cielo di lavoro. Eventuali altri 90nflitti vengono. risQlti~"dalla rete di {~~< '. antlclpazlOne. .."
.)!~:.(:. ,,,. ; \:---
,
,.I 248
Capitolo 6 .
Clock
L(;l
y.",'
.,~~ ,.. ~~
I
, )~il ,f ,;o..~
I
Ir;ID§j
.•:.j," i •
Stop
rcJ
, I
; .t~ II , 11
~
", ."0:1 ~",,1'
·~.\,l·'.i
f.lRend
o
1
,';~.
""'WJ
~. 'DIEX
•
':'~.~ "--";l~\
.. y
. ~'li
,., ... -
::•.~i'f.
p C
.:~
"
" uc I 1---
:' :'Xt',i
•~,illi ,"\'j,~.
,,:,.:;.~.:;. "':I.Iii;,
'''\ ;" -.,'.-",
\",llJ
, .',:'Jd
, "ll<'
,~~~,~~
.At.:
';'~"'i~
~i+rf.! ,
·'.':·i!!:( '~;~l'
~ \: :"" "it
•.; "1"11'
," !-;',I ii~'
Flg~a ~:32 ~chema ~ella
gestione del,conflitto per I'is~ruzione d.i lettura dalla memori'aJ~~ tranl1te I IDsenmento dl uno stallo. La Imea Stop e assenta Quando si verifica la relazio J~ 6.25. Essa ha Peffetto di inserire una bolla su TO/EX, mantenere invariato il contenuto ~~'·~:.l~ IF lID e non far avanzare PC. l~::f~ ".' ~ "" '~~' ~, .
.
·"l .:':i'·~Lt
' ....,I,.:fI'
6.8.6 Sovrapposizione
..
. ~el by~ass , .
". .
":t1~
.'\~
':"'~
La, teemea nehlede una buona dose dl loglca agglUntlva. Parte di essa p.uo essere.nsp~mlat~ consent~nd.o la sovrapposizione delle fasi ID e WB, in quanto, ·~,~~, SI t~atta ~, fasl che dl pe: se rIChledono norm.al~e~te una frazione della durata del.:.t',~'ifJl penodo dl clock. In partlcolare, se Ie due fasl nchledono un tempo T inferiore alia' ",'>t~ me~a ~el perio~o di clock,. il confiitto ID-WB evitato effettuando le scritture sui ~~~~ l reglstIl nel1~ prlI~a meta dl WB e l~ letture nella seconda meta. di ill (Figura6.33)l6.
e
-
,'/~
Questa teeDlea Viene anehe detta d,mezzamento del clock,
.,-
IO
.,-
R
"
ME
lD
.,-
R
" IO
.,-
R
;, :.,l?;:1 ',.:;;1-
lf8
•M'
we
•WE
" IO
R
l~ttura
"-
"
·"
. .. •
"
."I~
",~~~,tI
•M'
"'~
M' lf8 L_J..!IT-J
IO -L...l.!!J__ -'.R
''"'Il -
't ....·
'"""
,
<,'::~~~ , .~
, , ......
I, ''\' \
".iI('
Figura 6,33. Sovrapposizione della e scrittura dei registri nello stesso periodo di .' . ?f.;I clock. Le scntture avvengono nella pnma meta, Ie letture nella seconda.
16Q ues t 0 comporta naturaImente una
ab.bia~o a.:J0t~ato
~ ';~~
":~.; .:.~~~
. . :& vana~lOne alia modalita di aggiornamento dei registri che , ... ~/~
sin da.! Capitola 2.. Per i! WB bisogna costruirsi un fronte di clock per la scrittura ,~.~~ Dm reg.lstrI prU1:,a della meta. del penodo. ~on e quest~ una grande difficolta.: basta agganciarsi al .' ':A~, feont, ,"t"m,d,a, ch, pe,o d've p''',nt",,, 'ntra la pnma met. del p"iada,;~
."J?~ .• ',. II~;
o~.:"
~.."g;;::
.. ~,}~~;':". {.~Jl1·::i: ~...." ",
. . La plpehne
.f.~!~:!'Ji. .ij; iil'~,; :( . ' \'''''~":,,,_>_,_
\ 249
j
..;w..•• ", .
·t¥.'~;-;::j'
':
'..9.~""
~Jf.:.~':_:,-" /::r'·"··
;:-
Sintesl'In Figura6.34 viene riportata 1a sintesi dei ragionamenti svolti ai Paragrafi l"r" "'d a '68.3 a 6,8,6, .:.:., " ' , . E:lomplo di sequeuzo di c:odiee
A:lloo.
I
to
Non :Ii verifiell. llleUll eonfUtto; non esistono dipeodenze
j
., .. -,. ,.'~',' .''';'
.,:c,' )t.-.. ,
~,.> ~.'
Situwono
'.,'
\.~_~:',
.'. '. •
-,::.'
y:.I';", :"
':'1';".-•..
Nessuns
)-(,>,' ,;' ' . '\ ~,...,.,:::'
Rt,O(R2)
ADD R5,R6,R7 SUB RB,R6.R7
dipenden2S
OR
,,-.
";·I:'.~I,';' . -,-,,' -,.,:.... ,
R9,R6.R7 ,
\ ',t,,' '.,. '~;':'.:: .. '!l'--'". ,
Dipendenozll ac:cesso ordineto
'/.':,;: .<, "; (~;;::.:~ ..
}~",~,.:",~ .,~.:.:'
mtraprese. do.11a lIequeoS4 di c:odice
00"
,';" :..
J'r,,':'''. I~<' ." ... ;.,:,::.' ," . ,' .... :!'~:>-c , ;1:::'.-.;"'" .. '''-'''. '.. . ~','. 'J~f-':":" ::.'
Dipendenza rlsolle con ]' I ntlc:ip 1l.210 ne
~1:;~:;,';:,,::"
.
' d'
E
'F,'gura 6.34 'semp'
,,;';,.::':' ',:'-''1"" "'.:. ~:l',,,,,,:;,,
NOD c:'a eonflillo se Ill. togic:.. consenle Ill. sovrapposiozione ID WE
LD
Rl,bela(RZ)
I c:onfrontlllori rileva,no ruso di Rl e R5 in SU8: ambedue possono essen!
SUB R8. HI. R5 OR R9.R6,R7
c:he rlc:hiede uno stano
st~~{,) : ,~':'~::}\.,~... '
Rl,var{R2). R5.R6,R7 RB.R6,R7 R9. Rt,R7
ADD R5,R6,R7
Dipendenn
,~'t,· ';":'
LO ADD SUB OR
I
I
I eonfronlalcri rileva,no I'uso dl Rl in ADD.
Rl.alfa(R2) ADD R5.R1,R7 SUB R8,R6.R7 OR R9,R6.R7
prima cbe il reilitivo valore sia stato prodollo. .
flitt' d t' 'a
\
lI11tlcipali
LO
con
I I
L
'.\~·l'" "r;,,' ..·.
t ~~;;~:--'~"':'
~
~,';~;~;'::',;'
La Figura 6.34 mostra che quando I'informazione cia usa.r:e non e, aneora stata y~~~"ty,:~:" prodotta (ul~im~ easo) 10 staUo i~evitabile, In questa ~~ l'~~ soluzlone potrebbe venire dal nordmamento del codlce se la sequenza di Istruzlom 10 permette, ,~;M'~·:,:;·· illustrato a1 Paragrafo6.8.7.
e
~;'~/'\".;.'::'
com~
l~{:.'t;'>~,\:';,:,~. . ' \;t'~~"~!''':''''""
,~f.,l\!;",.;,;, 6'.8.7 Riordinamento ~:r<;>:.;. ':
..
if\:::'1'n riordinamento puo essere di tue tipi: ~>.'."'" '
..
"l',~'.'" . I\ ' '\
., .
""':~"
',t.alko
0
dina,m;co,
a
5ec~n~he
1 I
I. ].
ven a attuato cial compilatore 0 dalla lOgIca dl maeehma durante 1 eseeUZlone,
'H.. ','" ",
,
\
'"
It::~~;:~:, Riordinamento statieo , Si considerino due istruzioni in un linguaggio di program,~i:" ':, 'mazion. di alto livello (C, FORTRAN, ..): """"'''' . ~tfl~,";'::·,<.
,
\
J .
'.
',..c·' . , ..
'j
~
C=8+C;
,",,'
;;',\:;,
',.."""
,
D=E*F
t::{~·:"',~. Anche supponendo che 1a maeeruna sia dotata ?i tu~ti i bypass, necesaari~ un ~o~pi~ '2:~. :,", ::- '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
',:\. " '. .,
al nelle due coppie di istruzioni ehe c 'testa di. alto CP liveilo, con . bU'riusa degli stessi registri "\ ':'~:: ::, . , ancano 10 U le varIa l-
t',~..:....:.
:"i\;
;,
. ~,,' .-- • ,.,
~ "''"
I. •
)
.
"
ld ld
rl, 8(0) r2, C(O)
.', ".
J.
·:··1, ....."
250
I
Capitolo 6
P
'~
- -:r.:.
.. \~:~ t; :i'll",
'·l'\
st
ld ld
C(0), r3· r1, E(O)
st
;.:,
i..," ):
.. )!~.:;
r2, F(O) mul r3, ri, r2
(
;",i:iL
,. :1:....,
,:~
0(0), r3
Lo stallo pub essere evitato riordinando Ie istruzio . . " .. .. ;. e partlcolare Sl pub aotieipare il caricarnento m da nemplre Ie boll ".. }ji, '; a somma: CI0 comparta. l'usa di un d'ff . ana I e In modo cia precedere . <;;-;. !. moltiplicazione state ritardato l' . I erente reglstro. Per evitare 10 stallo dell aggiOrnamento della. variabile C . .a .,,'!,:i~ ":i.~ r\
~
dellan~ ~~doE
\ii: ",
e
• J
,:.;/;';
ld ld ld
st
1
I I
l I •
\
I
. ".,';.\,
r2, C(O)
r4, E(O) add r3, rl, r2 ld r1, F(O) st C(O), r3
'
.
'";,'"\( .""'f' ..q,.
;questa istruzione e stata an t :lC:lpata . "2~il; , .. ,':N· ; qui non c'e piu stallo . .. ",.,' . :
,
~i,-.'
0(0), r3
Osserviamo per inciso che l'ulteriore avanzamento di un posta della quarta istruzione 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 potu to 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 campilatore ottj?lizzato evitera. d~ riscrivere il risultato nella variabile in memorial fino al· momenta in cui il registro contenente il corrispondente valore non diventa assolutamente 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.
...,
, . :·~1
'.
"
" ""-, it
".
';-,
•
0'
.'.,.'
"1,,;J
-' 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 possibilita di riordinarle al tempo di esecuzione. riordinamento -dinamico ba senso quando la pipeline multifuDzionale, come quella schematiz~ata .. in Figura6.4 c) e quando Ie unita. operanti in parallelo sono esse stesse delle pipeline. In questa caso e abbastanza 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 .. ,
c'e
e
n
10.
I
6.9 Conflitti di controllo
I
,
."''1'';':.
r1, B(O)
mul r3, r4, rl
"
,':>
,.'.
oil,;,
" I
•
~
..:r.t
.,, 1 ,
·
~".
I ~i.J.1
add r3, ri, r2
.
" (l,5 ~' .~r ,.
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 qu~do il saito
'
..
( ·
·
:
•
l
·
·d
_It'~·,,,' ..... , . 'JI,li'l'>",- -
P
~,~~~".' ""!' :<,. :,t. 51" ,.. . '\O,·" r:h,." ','
,.".•
,.,;:.~
,
-
,'"
-
.-:~ ~.
>-:,:i;,,"
.'
4.(
, ,
'.'
• La. pipeline
.
251
; ;. eincondizionato, e diramazione quando e soggetto a condizione. Un'altra questione '.,.'.. terminologica riguarda Ie diramazioni: occorre spesso distinguere tra quelle che hanno
\'·~-··
-
luog e quell e che non modificano il contatore di programma (PC); nel primo caso 5i par o di diramazione effettiva. nel secondo di diramazione non effettiva~7. laPrima cit affrontare Ie dnama.zlOnl, eSaIDllllamO 11 caso molto pm semphce del
:-';"
;
'0'.
L< "' '.
•
ti sal .
.;:.:
;: " :. : 6.9.1 Conflitti per salti (incondizionati) !.. '"
",.: . r:~""':' \:0"
.
,,", ,
, ' ;- ;:-.,
'
. 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).
.;...
;t .-, ' .
-.
., . '
,'
'
.'" " ':.'.>' . "
'
IF
Istruzione di salto
.
isiruzione di destinazione
10
EX
Siallo Sialio
ME
WB
IF
10
EX' ME
WB
IF
10
EX
ME
Siallo Siallo
,
WB
. Figura 6.35 Stalio dovuto a. una istruzione di salto. ~i faccia l'assunzione che PC venga modificato nena fase EX. Quando l'istruzione di sa.ito e in ID e non e 8oncora. stata decodificat.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.
,'
1.··,
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'aggiornamento del PC e cosa elementare (CfT. Capitolo 3). Se PC viene aggiprnato, in ID
t-f ;.
,.
'.
resta comunque uno stallo.
J '. 11' I·
,'....
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:
..
- '" ..
·
·.i :,,t
$
,.~
'::~.
•,
,
Una soluzione software: it salta ritardato
::;
LD
R1,100(R3)
ADD
R2,R2,R3
SUB
R4,R5,R6 DaQualcheParte
JMP
.,
· ..
",. I . ",
,-.. '
Se le istruzioni vengono riordinate in modo che 1a sequenza diventi:
'l! ..f'
(-::i~ ."'j;
..
•"\'1 ••
l7 Gli anglosassoni parlano di diramazione taken/n.ot.taken.
· :r'~'.
:i ~)
,-.tt
d~,
,
:252 Capitolo 6 ::::=--:::::0:::.:::::..:..___________________________
. 'r,
--.....
LO
JMP ADO
SUB
~:j!
" ,.:.,-~
'"'H' ,:~ \.Ii;' '.:,~ ;:,~t
Rl,lOO(R3) DaQualcheParte R2,R2,R3 R4,R5,R6
I<
·.:~i
allora, quando viene modificato il PC, 1a coda contiene Ie istruzioni ADD e SUE e da qu~i',/~ momenta vengono prelevate Ie istruzioni dalIa posizione DaQualchePartej rna intanto ",~:~:St Ie due operazioni gia nella pipeline vanna avanti, e arrivano a regolare cornpletamentc.' \f:~ , ". Naturalmente se si intende evitare gli stalli del salta con questo metodo, ne- ":,{}i~: cessario che 1a logica di CPU non ne introduca, come farebbe secondo 10 schema di /1~~ Figura6.35. E percio evidente che un programmatore che lavori in Iinguaggio ·a.s:·, ...'.;t~ sembler deve sapere come si compo:ta. la macchina, nel senso che, se questa prevede.:il~' 1I saito ntardato, deve aver cura dt nemplfe In modo congruente cqn la loglca del ~:.~¥ programma gli intervalli di ritardo. E questa uno dei motivi per cui spesso si 1egge ':~?4 che Ie macchine RISe (intendendo riferirsi alia lora pipeline) sonG estrernamente dif..:" ',:f,.~l ficili da programmare in linguaggio macchina: rneglio lasciar perdere e affidarsi al"\),~ly compilatore. .,'. ~:.::Jj Nel caso del salto il riempimento delle bolle e teoricamente sempre possibile. Di ....)i.:.~ fronte a situazioni intricate - piu istruzioni di salto in sequenza - iI ~ompilatore puo. '~'~;70 sempre riempire gli intervalli di ritardo conquaicheNOp. Ne! caso di diramazioni
e
,,~
le>';,
_~.'~
cose sono plU complesse. DI esse 51 paria qUI dl segUlto.
.:..,';
,!;~
In [HP93) vengono [omite molte statistiche su salti e diramazioni e sulla loro incideDz,: :.;\ media nel corpo dei programmi. Esse indicano che, a seconda del tipo di macchln. e ' .. di programma, la frequenza del salti va da! 2% a I 1 ' 8 % . . : ; : ; . !
",'~'
. .'''\\:.. # ",,' '.',,'-",
6.9.2 Confiitti per Ie diramazioni
"'.;~
:
,.',
,~
,.~
"l Nel caso della diramazione, se questa e etfettiva, si presenta .anCOra la situazione di . 'Yi. Figura6.35; il PC puo essere aggiornato solo quando il suo nuovo valore e disponibile. '..:.::._~ 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 anche accettando . l 10 stallo, non conviene introdurre 1a bolla all'apparire della diramazione, in quanto ·",'Ii '~ ,,', potrebbe darsi che la strada presa da! programma sia proprio queila dell'istruzione ";~ ·····1 , ,\',+, attigua. ill al~re parole: ., "
,
' ,
"
a) se" appare un'istruzione di diramazione la pipeline continua a prelevare ]e istru. ZlOm successtve;
·.:. 'I
.\), ;
':S.~:
• •
'~i'
, •.
b) se la verifica della condizione di diramazione indica che essa e effettiva, la pipeline viene svuotata delle istruzioni che seguono la diramazione e viene alimentata a partire dall'indirizzo di destinazione, c·on cib introducendo un bolla lunga quanta il numero di cieli persij
~·t ·" ! "
:. ",,,1 ~
, ~i
,'i'"
; '.
e
,
..:1 '
c) se la verifica della condizione di diramazione indica che essa non efl'ettiva, tutto procede come se si trattasse di una normale istruzione senza effetto sui PC e senza alcuna penaJizzazione.
','
.~
""
"~:,,
- , ".: ..,-.".
.
·
..
-.~
"£:; .
,.1"l;:- :.
\ ~~La pipeline ?53 -'t~t~;f~'''' <>,;w:<~"-. __---------------------------=::..!~=::..:.--"iif'" -1_'" .. _. ,',c. ___
I!i ._·:b~_
'r,,·'\ '!'::
_
j;,:.;.,:.-/:",.
.
>i:';(,:·f.J~~i':"-
1t
.
la condizione eli diramazlOne
~~,.t:'.E1-,"'-:~'·, ·.':·' In Figura6.36 viene .rnostrata ~a 1?gIc1a pe~ val,u are verificarsi della condizione I b lla dl due penodl oe 1a pIpe me. n . aI II i:Y.,:":.::-".':inserire a '1 . t di un1istruzione eqwv ente a a ~~Lrr>·;.e peliraJE/JSll essa determma. a 1 cancabmelln °d' d e periodi' (b) 11aggiornamento i"!;';~<:, -.-:"6 10 e ID/EX , dancio luogo a una a 0
0
'.
()
.
0
1
U
~;}:~iO:C'~;,;('indirizzodelia diramazione (PCJE/JS).
-I
(~~1;~{::~::''-
;i~,:' ;',";," ' .. , :;:'.';""'C"
,
}', ,( :,'.',
:'~_~~:(;-:>
'-g . ~:;<.
.
,H
•
:t:I:.' "" .• 001I' 110_10
y,.- ':' ;~!'." " ' '~;'. ',' .' ::.'.";.:.,,'~
'.
•
~,.: "'... ,--
;;-
lr/ID '~10
u-,.
.'''~
RF
sx~CO$'T
.
L...~
..
..
11 d II condiziolle di salta per Ie lSOUZlOni JE .e .JS.
)
IALU
.,
,
I
.'-
~
"" c
U
A
~
L
_
.
, •
01' '~$
ll_~l
B
.
""' " .
e; . stata
. . ata
t'
"~~:~~~;~ N()~~~ IF lID e ID (EX, iD modo da ere"" 0
una bolla lung. due c oc.
e
(q I" In eli' schema nzz ad,' diramazlone Vlene ca1colato III ID.
I
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 corretta, 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.
).
..
",.
... '-
~" -
. ,~.
:~.
,
I '
--
1,
I'
: ,-
e
•
'1' ; t I
,
..
1 ,j
r
if ", 1', ,
'
~",.
'
,:.
:>.~
.
~<
)
0
!", '' , '".'. -
~".~:
\ .
;~c t
che il- test della condlzlone Vlene e et ua 0 ~ontro I";i~t0 ~'~.a.mt:~~:;~eS'~u:o;e
Figura 6.36
solo la p",te :".c. in EX, pe< ::. ::. ': .' aI)
'::"",",: . ';;' ,"'';':, -"
•
UnlU di controUo
,~fc«' '/ ;-. '--<.
I
"~/"
ID/U
"
}~":i:." .~: l'};'-::-': ,".
.
)
~?><, r,:':' '
I I
Ovviamente, conviene cercare di evitare per Quanta possibile di pagare la penaIizzazione delle dirarnazioni, anche perche Ie statistiche riportate in [HP93] indicano che Ie diramazioni hanno una frequenza cornpresa fra 1'11 % il17 %. 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.
e
J
Ij •
".
~H'
.:;
I \
I
I I !
.:i's4 Capitola 6. . - - .. ..
-6.9.3
La soluzione software: Ie cliraInazllmi.Jitardate
,
"~'''' Si puo ricorrere alla tecnica usata per i salti consistente nel riempire i cicli di ritardo~: 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 dallOj~. schema di Figura6.35 dove era di due dcli di clock, 1a penalizzazione sia di uno solo. ~~ Consideriamo la sequenza: Dest
Dest
I
ADD JE SUB
R2.Rl.R3 Rl.R3,Dest
R4.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: Dest
r
R2,Rl,R3 R4.R2.Rl Rl,R3,Dest
lndipendentemente dal fatto che 1a diramazione sia 0 no efi'ettiva, non c1e perdita di alcun ciclo.
I 1
ADD SUB JE
La sequenza puo essere riordinata dal compilatore18 come:
I
I I
~
.
.. altre istruzion1
SUB
R4.R2.Rl
JE
R4,R8,Dest
ADD MUL
R7.Rl.R3 R5.R2.Rl
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
La pipeline
255
-J}-.Questa soluzione ha molto sensa se e alta 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 .~15incerarsi che questo fatto non abbia conseguenze sul.codice seguente. Per esempio, 5e la sequenza:
Dest
ADD
R2.Rl.R3
.. altre istruzioni
SUB
R4.R2.Rl
JE
R4,R8,Dest
MUL
R5.R2.Rl
venisse ristrutturata come20 : Des~
ADD R2,Rl,R3 .. altre istruzioni
SUB JE ADD MUL
R4.R2.Rl R4.R8.Dest R2.Rl.R3 R5.R2.Rl
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 e sicuramente verificato se il registro scritto dall'istruzione di riempimento ha funzione di contenitore temporaneo per il loop, rna non e visibile all'esterno del loop stesso. Se la probabilita di una effettiva diramazione e bassa, 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:
SUB
R4,R2.Rl
JE
R4,R8,Dest
MUL
R5.R2.Rl
.. ,altre istruzioni Dest
viene normalmente eseguita l'istruzione MUL se e alta 130 probabilita che la diramazione non venga presa. L.'istruzione M UL viene eseguita anche in caso di diramazione effettiv3o. Anche qui e necessaria 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. 20Notare che i salti esterni al cicio che in origine erano verso Dest devono essere indirizzati all'istruzione precedente.
1"''I't'!1 ',. ' "<
,""
,
"0,_"":.{'-"'7ff".II-;r," • '," .. l' ~1'~
• 't"
.
.
i{~~';~rz~~·';'.i'4~,';'~ ""-256· (Oapitot~ Q,,: 'lil"i.,'::'t'''''~,.~;:;~?~~: "J:':" h.W 'j~",' ~" eo< •••••
'Y '"":,,
I~I ,~~
•
'(. ;i '.
,7' i ',,' 1
'!
I
I I
J.~
•
•
:~• •
••
',"
"
r:
In conclusione, per tentare di riempire 1a bolla della diramazione 1 it compilatore 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 e comunque .~., 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. ;f.~ 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, e util.izzata dalle CPU SPARC della Sun. Ovviamente e'" ancora il compi1atore a prendere ogni decisione in merito. 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 e stata 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.
I
I I I[
6.10 Predizione dinamica delle diramazioni La predizione dinamica delle diramazioni e a carico della logica di CPU. Concettualmente 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 influenzana F. Se F(XIIX'l,"') > 0 15, 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 incontrata e si predice 10 stesso comportamento per la successiva. Con tale semplificazione l se X 21 e il 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 21 Evidentemente
per x basta un bit
La pipeline
257
probabiUta. che hanno Ie singole diramazioni di essere eseguite. Per una predizione migliore 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.
\ 1 1
I
1 6.10.1 Tabella di predizione delle diramazioni II modo naturale per tener traccia de Ii esiti mco~n~t~r~at~e;:;;:i :ramm I con e ne ricorrer ~ 1 a sto a eUe recede ti ea bella di redizione delle diramazioni Branch Pr . ion Buffer :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 rinunda' 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. l
D
~\WV'c~r,
':)
\-
{
'-/'~.Jl-\.( y)}~
\2-, Or, ,
U '):..: (\ /
PC delle diremazlone
I 1 \ \
i
Statist:
\
I
I
] 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 mentre il campo di de~tra contiene ta statistica di esecuzione della "Corrispondente diramazione. Se la tabella contiene n righe ed e gestita con atgoritmo LRU essa contiene gli i.ndirizzi e gti esiti delle l
1
ultime n distinte diramazioni incontrate.
8i noti che·la rev' ione viene effettuata d B ". t e usa evedere l'esito dell'eventuale djramazione. Se fa previsione e che la. diramazione avra luogo e l\atruzione e realmente 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.
\
I I I
;~"
'T,": ,I; ,
~.
",,·~it
,,~\·:,:,
I
I
258
~
6.10.2 Statistica di esecuzione e accuratezza della predizione
Capitola 6
~"~""
'~1'!
In riferimento alla Figura6.37, la forma
piu
semplice di statistica
e un
bit22
~1V
~'ilt. "l~.. t
.,"'.1 . ""' ".-
;..'t:
,"l'.'
che
".. ,&:.\
,"0' '" rl;;
.indica l'esito dell'ultima esecuzione della diramazione. Appare chiaro, perc, che questa ,.". "'·1~ ".~~ schema di predizione presenta l'inconveniente mostrato da! frammento di programma ,~"~;IJ '. ~~, ,l'l,p ·" "",~j,;'t di Figura 6.38: se una diramazione viene,quasi sempre eseguita, la volta in cui fallisce. ,~.·/;Wi ';'~' .. ,,-: ..: :~t'::~' ~J si banna due predizioni scorrette anzich~':oUna soltanto. .,.,.,~, 'r.,~: · hi ·; ,\:,,~;," ".;". '
,.,~
I I ,..
I
-
-
I I
~~
"'." "':'I
sub rl,rl \.rl
loop:
add rl.rl.~O ... corpo del loop ..
.'
;rl +- 0 jr! t-- 10
, .. ~ '''' ·' "",.,.~, .;... "' ,~
'.."..
""~'.
..
'
""r.~~. · ,,;)Iii'.j'-','{),~, "
"'".' ,., .~ (:;~ i~'
sub rl.rl,l
bnez rl,loop Figura 6.38 Esempio di cicIo. La diramazione bnez rl.1oop e effettiva fintantoche il contenuto
.~;;l,~':.t:.~; :.~ \'8 @~;;: f .;; ;1<;{;"'~ .,')~~il¥i ,~; ·c
~~:J. ,"
.",,~. Fft
j/ ~"'a'ril "~I~~ '0 ~ ..
.;'"J'."' '. ", • '<:;~"':\I' •
"~
.
,.;lo.....
"h
.,'· .t.:.;~~. ~" ,'L"~ ,I t_"" ~!
'~~<1'1 '. '-.:!!.I;l1' I!!
:~ j"\' •." ("l~~';
..
.
,,~1i"
""\);''''r,{· ':'~~.-
, ';m;~' 'i'?' ,;
,r. (:'
.' ,;,fl'
." . ,~ Per rimediare fAlrinconveniente S1 ricb.iedODO ~er la statistica di esecuzione della diramazione. Con due bit si fa in modo che la predizione sia invertita solo quando ::' ~'~;$! t ... ,~i~~:li',~ ~ostra errata per due yolte cOD.se.futiV~'7"1JlFigura.6.39 51 mostra ilCliagramma · 1,1." !!: ) '.;;tt ' '.""\ . eg 1 stati di una macchina a stati finiti avente uno schema di predizione a 2-bit · ":":':.~.J,Il~':, \# ," l' • A· [HP93}. La,. maccruna eli Figura 6.39 e un contatore a saturazione a quattro statio n ~,, ~,\;;, ~~ · . ,~ .. ~ suo contenuto viene incrementato quando la diramazione ha successo, decrementato ',' ,"'~~;~"'''' ""',\' ' I"') '.1:0' /. quando non ha luogo. • ',~ ;f.' } ~.. , ;~ In Figura 6.40 5i riportano i risultati di uno studio sperimentale Bulla probabilita. !.>~:~~, .1r:'~Ii: , che ha una diramazione di essere eseguita in base alIa sua storia passata. i ,'ii:"",111 .' ,:.I< · ,.\•.:,,,r., " ,.. ' Poiche l'a,.ccesso alla tabella di predizione avviene utilizzando i bit meno signi·""M u. '''~~1~' r ficativi dell'indirizzo dell'istruzione eli diramazione (Figura6.37), l'accuratezza della ".:' .~'I~' ,,\ schema eli prediziane dipen<;le non solo da! grado di correttezza delle predizioni per '>~.:t > .,- " ' 'f; ogni diramazione, rna anche da! grado con cui gli elementi della tabella di predizione .' '~ "'I; '. :"il~,Mi'<' " '' • [HP93], ha evidenziato che 1a probabilita di correttezza, nel caso in cui la predizione .: . _ 'h;t '( si riferisca ad altra diramazione, di circa il 50%, mentre nel caso sia effettivamente :I,r,i't1' ••; ." .....;tj.~ riferita. alla. diramazione in oggetto di circa il 90%. . ;~i\i~jf .. flt!~,!l Indicando can P la probabilita che ci sia. corrispondenza tra l'elemento della "".,; •.,' , ·':.j;'.; tabella e l'istruzione di diramazione, con 'Pcp 130 probabilita. di carretta predizione e ·-'.,a,-> . ·'a:1" "':<~';; COD 'PcCP la probabilita di casuale carretta predizione (ovvero di carretta prediziane nel ,."'".~!{.', ,.~;~ 't caso in cui l'elemento della tabella si riferisce a un'altra diramazione), Paccuratezza "I,~~,, '..:'\,'<:1A (ovvero la probabilita complessiva di corretta prediziane) data da: .··\"..,r, "~'.);;qi.{ ,
•
.
'i ".,~,,,,,
'
I
I -
I
-
I
-
~!~';
,.;,-,...
\ -
-
""~:i
;'~";"
I
•
.:'\'.
I.
...'. ..
,~;
.'",""'.. " ~"",
I'
e
'~
e
e
A = 'P,. * 'P + 'P".
22Si parla di taken/not. taken $Witch..
* (1 -
'P)
(6.26)
,·r~~~.,
,-;liJ1:·
'l:,,~'i: • ',"1 1
" .r';,.:L ~,~1P': "'~'l ,,"' , ,,'~~"
",
',0,
~:.
,Ji '1i~"'J
J
".~ .. · :.,..:f ,,
·
"'.
,"
":','
,
:"", '
,,",.•
:
..
tf[~·,'
...
,,··
La pipeline
259
";'
!'~.
' ..
i"
;..'", .
"'."'"
.,', ;
V>
s
~Y~~Q~#~
.~~'..
t.:<_",. , 11';"':' , ''-'"'' , ' -;., ....
~
(
:;( "
-
11
'" . .,' ' " ".' .
Pr.dll. dl
..... N,.,- ..
..
ralllmcnto
.UCCU30
\::,.": ..
ueceuo
\0 PUdi1;, di .ucc•••o
Y.,
~~7"> ~~.,
p'
">'
t,:,',,".. ,
:-;':;.' Jf:· .:.:;.·,',:.. .
.
.!"
..
Successo
-
Succeuo
'
00 P~edi1;.
di r.llimentG
"'-l
F.lllnunt 0
01 Prcdh. di ,.Ulmento
"
',,,,~ :,',,'-
~
".;.-.
';"'C' ~",,:,
F·Igura. 6 3"l,II O·Ia.gramma a statl. con uno sch ema d·1 pre
,.. '0':'. ;:.,:,.
:;;:'/ : ;~;::.;... ;~:(":. :r·,'- "
ti'.j.,/
'P,(SS) 'P,(NS) 1',(SN) 'P,(NN)
'"
0i::: ." ...
~:_r"
.;., >'.
h"
ll:rnento
•
"--
'.-
":~' I., ~.."'.
, !b;'~ ,'.
!,~.
',I'
0,97 0,61 0,54
0,11
",.--l'" "
., ........• __
. ;','.:",' ' :......',.
·~'' ~-
~,~;t
t~~Y;"
~ i 2':~: ~', '.
::... ~'>':"
')"','" .. ,.,.-,
#:~},~:',: ,
..'.".
·,,~·A,:,
~".<'""'"
,,
.~.'
',.';.':;.
..;:.....,., '.,~ . }:""«;,', .
;~~.;.<."
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.
~"':(''''''''''. IO'("~>(" •
,t~~"
'';;''. '. •
;-..... , .
'. ,...~~".,'" ~~
-!;J{-':' ~;.
r,n'/>·:·' " ",. I":'::"',, '''. ".,,,,,.' ~: '....". ''t!'r .•. ,",'
'>",,;-''' . ,~'" "
:'i:,;,,~;,
=
=
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%.
"f,'"''
"'
,,,;. '-:~" '
,;C,"
'f.I~.;,
_. Ii\: j".:,
,1••{./'· ••• ,~!;~ ,;,
6.11 Branch Target Buffer
-:1-:;1.: . ;ft ~'.
;.·.;'F'.:
l :t[.,\'-:'
,
\!'i~'"."
t"'j~··
->"'.;·· :,'!'}.":, ;
,
::',;,,:'
e
,;'.'.,
t~t.~ ,"~"
'. '
- ?~;:'. , ""","; , { ~:~;:\.:':
:·
::
':.,.,'t, . ,';
".",,>:'
<1'" L ';:"'.",
I.'.'. ' l">"'" ,'~" .
"
~',.,.
,'
"1; ... '
.j;"-,,.
,
J".. ~-li?~~' '" . j.'t~~~'" ,.. .-
E stato gia osservato (Crr. pagina257) cbe can la Tabella di predizione delle diramazioni di Figura6.37, il fetch dell'istruzione all'indirizw eli destinazione pub iniziare solo al cicIo successivo a queUa in cui tale indlrizzo stata 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 e possibl e con a Tabella delle destinazioni i diramazione (Branch Target Bu er,
-------~~ ~ ch ~~J 2:~---·
--_.--.
1[>;
260
;:::~
Capitolo 6
1", ,.1"
" '. i
BTB), Conoscere questo indirizzo gill a1 primo delo di clock, anziche attendere
ilsuo':':;~i'
calcolo , permette di effettuare immediatamente it prelievo della relativa i5truzione, 'f; azzerando coal il ritard6 di diramazione [GL93j, '.'i~
:'~I'~it
, ,'II\)'
'.;:"] .
I
pc
corrente
PC Isln.Lzlone
Stall.l,
~'
.)~;. :~ ~:~.11~ J .".tt:;
I PC dl de.llnu:lol'le
'~~j ..
.. ,itr, ~ ',:.:~~
.'.;:~f:JI
"/:il~ ':-':,if
•J
~i~ur~ .6.41 T~?ella ~elle destinazioni .delle ~iram~zio.n~ (BT~). L~ p~te tag della tabella "",,~f;;:'" 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. ::';;;~fi;5' tabe~la (pw:te TAG): q~esti pos~on? ess~r~ me~orizzati per intero oppure parzialmente, ";~i~'
eons,dera:nd?ne solo I ~lt Illeno slgmfieatl':'l; oVV1.a:ment~ n:l ~e~ondo ~aso sulle prest-azioni :.:i~t; del BTJ:3 l1~clde~an.no Ie .lOt~erenze tra le dlffer~n~ns~ruzlOm dl di.ra~azlOne con uguale parte ':t~~ menD ~lgnificatIva dell'mdirlZz~. P~r qUaD:o 51 r1fer~sce ~l~ .statIstlche .per la predizio,ne, .Ie '/~i,\a ~a~~lDe ~o~:rne us~o preditton a 2 bIt 0 predltton ptu eomplessl, come quelli a due' .~.1~~ hv~lh ~~Crlttl m segUlto. '.. .' . :~~,~~
.
n ~TB e ~na cache ~i d~ensioni modeste:
../:;\:1<,
. ,~';M~
il s~o fo:mat.o e.il~ustrat,o in Figu·.' .~.~~~ Flgura6.42. Nel tempo In CUI un'l5truzlone VIene prele-, ·:.~,~~~
ra6.41, II" funzlOnamento ill vata ~a!la memoria ~fase IF), viene anche coufrontato it relativo PC con gli ,indirizzi ."j~,,: presentl (come tag) In BTB. . ,,' . ~1i~'
e
e
•. Se l'istruzione in BTB, essa sicurarnente una diramazione e.la sua destinazione contenuta 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 dira~ 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 e che la diramazione non avra. luogo, la logica di CPU continua a prelevare sequenzialmente 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 ,
e
'
.f'~f,'
.::':'~:
:'}l~
~YT~~
\:~7~ ::fi
~~~:i
:·:.~h\
:".~~
:;X
"J:;(
;.",.,
,,~,q,
",:.y,
• Se l'indirizzo non viene lecalizzato nel BTB, rna si scopre che l'istruzione e una
/~?r .Ji:
, ":. 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;'
,.'"1,
,:~~
-;F.-
r..:.,':'-
\
-.-,'';:~;'
;;JO,"::'"
j'''' '..... '
~;1~\..,:
.
f~f;r.> ,~~~ffi"1' _ ..
~~il~'''''' I~' '1'" :IS'"., ...",' . ·,~~';ll:~,~ . 'to' • , • jO..
c,~.
La pipeline
261
1
..,)-.
.
~
" " ... '
,
diramazione, la logica procede secondo una regola predefinita24 • La nuova d.iramazione 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 program~a.
~,
_,.0:: ........ -.,
;;!~~
~.
,1.",':'0', ,"""w" ..1-,. ,.;:..
.
~.
.-
;t·~11~"j,j,' {W,o""
~.:,t'~:t::
d~fr!;'.··.
-,..
'",
:: ~"'~\!Ii(: .
1
~)~. ., ,t:.\''l.;':'' '.•
,l~~:/:;:: Q:;~:<"
Incidentalmente, vale la perra di notare che l'indirizzo eli destinazione cleve comunque coincidere con queUo calcolato in EX, in quanto, se (come succede di norma) J ;:.:~;'i:·::'.", it campo tag del BTB contiene solo una porzione dell'indirizzo della diramazione, la ~~};~,:,.:, destinazione fornita: dal BTB potrebbe riferirsi ad altra diramazione., con 10 stesso tag ,~,~~(?,' di quell~ corrente.. In altre parole, potrebb~ accadere questQ:. (a) Vlene pre~etta. una
,
";!;:i~'::'"
I, ';~~l::,:'
.
diramazlOne effettlva con conseguente modliica del PC e prehevo dalla qestmazlOnej (b) una volta caIcolato l'indirizzo di destinazion~l si scopre cbe. questa e'diverse da que!lo predetto da,. Brr:~. A questa punta non c~ ~ono a:IternatIve: PC deve essere agglOrnato 0 con I mdmzzo calcolato, se la preVlSlOne di saIto e confermata, 0 con quello'dell'istruzione successiva (PC+4 nella nostra architettura) in case contrario.
,.
~;.(:?~~),.,': ::-'~~~t:';',
~~i~~i;:": 'J~~:~A~' :' ,~i;;:;~;P ' ;l~~{.,:, 6.11.1 Prestazioni del BTB
;~J~f~~':: ~:::::=--..:..:..=.:.:=-:::=:..:::-=--::.::.=~r;id~;~<, , .. . a f1~~!~f,~,:~: ~ ~n ~bel~a 6.9 .vl.e~e nportata la; p~na.hzzazlone a.sso~lat.a ~e diramazlOnt. per 1 ~ffe i~~~;~'::.", renh Casl posslbih. La tabella SI rifensce aile ass~lOnt nportate nella dldasea:.ha di ~" f~Jt:~"" Figura 6.42: .(1) la valuta.z:ion.e ,della :ondi~ion~ di ~iramazione viene effettuata nella j·~~'f:,: fase m; (2) 1l calcolo deU'mdinzzo dl destmazlOne In EX. '\,;~~~1ri;~",' . I casi 1 e 3 si riferiscollo a istruzione in BTB e predizione corretta: non ci sana ~[\q;.~;;;~ p~rializ~~ioni e l'es~cu~io~e procede se~~a ritardi25 . . . . ~;':&:f~:;i:f' '," Le' nghe 2 e 4 51 nfen5cono a preVlSlone errata con lStruzlOne m BTB. Nel caso :. t~~;::. 2 si inco~re nel. rit~do di un solo ~iclo di clock per~e,. ~opo il prelievo dell'istruzione ' ~~3>t ~rr~ta, 51 ~uo ,npart~e ?r~levand~ In sequenza (dall'mdinzzo. PC+~). Ne~ caso.4 in~ece ' ~~;:f'" il fltardo e dl due clch dl clock m quanto, per prelevare l'lstruzlone d.i destmazlOne i~r~tt· corretta, occorre attendere che questo indirizzo sia state calcolato, ovvero che sia ~~ '.~;~1;::':.; 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 ~1'.0:~~g' p.roced.e prele~do l'i~truz,ione sequenziale successiva, ~ome nell·ipo~i. d~ dir~a it~ I~~~~ ,~lO~e con predlz~one ~1 fall.unent~. Co~~guentemente, SI hanno d~e CIC~I di penallZi'~ ~:~F' z~ziO~e nel caso 10 CUI la diramazlOne e dt succe5SO e ne55una penahzzazlOne nel case \P, :lA~!> dl falhmento. .. . . , . ~~ ~.~~~\'" , . Occ0.rre sottohneare 11 f~tto che q~anto. nporta~o In Tabella 6.9 e }IDa semplifiX:, n',:':> ' caZIone di quanto accade nel processon reali. Infattl, anche una predizlone corretta ~l~ ::.:t;->';~/ ha un casto. Una diramazione eseguita, anche se correttamente predetta, provoca ,~,••/ ..1.., ~, ...' ,;,. I,:, ,),,:,"" 24 La regola piu semplice consiste nell'assumere che la dira.mazione npn abbia luogoj una regola r~p.tf.r :~~ t,:~:·~,:, 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., (,I~ :~;:.~';~ '. , 2s Si noti che, per quante detto in precedenza, nel caso· 1 ~ necessario verificare a.1 termine della 'r.~l ~t~· . <·,::, fase di EX, a indirizzo di diramazione calcolata, se questo coincide con quello fomito da BTe. [n ;';Cii·:~'::.·· caso di discrepanza, la logica della CPU deve concludere cbe it BTB ha foroito'l'indirizZQ di altra .;~~~r~;~,:, dir~~ione, interfe~ente c~n quella corrente a causa de.Ua limitazione.del t.ag. Se e'e discrepanza la ''~'ti ;;':'(~: predlzlOne e da COfiSlderarSI errata e, come nel caso 4, 51 ha una penahZUZlooe di 2 picli. ,n
:
:
'
,
J ,
I ). "
\.
1
II) \
I ,.
~'.,
.
:;~
''''''''.
~t;.. f\;~"i;:'
1
-
I
I
:~~:f
t ';L', 262
l~:'
Capitola 6
~~./
.~~..;
·tt:C-,
",·....~;j; .,1..1, I
"
__
';:,:l~
! I
IF
NO
)l
82: , memoria
/h.Il?
-')::.1
'~~: · , . .>, .
.. PC
....
'·".'
·'~l
".
, l' A )~ . I '1; ~
'., . •
. ':~~
?,.. l
2\ '"~'" ;l'~,'
"
,
,
"
<~i~' ""I·ill ":'". · ,i II ';-- ._: "'r:. 'CR' ....-!"
'M" ,
m
'" dlra.mnlon •.
I
~
"
B
.. ;,~-y.
prell.Uo
memorl.
· "';;ii:' :..".
I,\.-'" '.- '.~'! :"1,. ., .. . :~!lf . '.~ ,R::' ,-.
..
~
,,1;,;,1
. ..-.;_
,-~
NO
Pr.~e~· CDrT" ..
Sl
-~'
...
;";''1.,: ;',-
".~",g{
.... .. ",
.. 'if. :~~,,,
~\>..
(
EX
c."
'::'S:~ .~.{
•
lnnrimento
'" '"
Elhnlnnione
d.U'I,trudon.; <:&10010 del
PC _Item_tty,,: Pn.U.vo ddl'&!tn
:ffl0nu,m"ote ... I,Uch..; pro.ecu%lone . .IIU .l&1Il
dullnaziolle
I ,I
I I -
I
-I -
-
I
I
-- 1
.
.
,~t'•.~ ," ', ,·1~""1' .. ,,; -";1 ",",
-"'.t'~ ~'';'_'
,,'.':~'~" !4.. ..:t; ...... ,
,,~,{
..:·;d<
, .',..r·~:...,_;. ·~.l' ,..
'. ~.",'""";'l' ki', ""---""..
'-'''c ,:,'!X ':--
i .. ~~v";,' ,' c
.,
",.'
·_<'/....... :." • _:.
:;j""• .•':;.. , ·.\oG?,c "'"~
Figura 6.42 Trattamento di una istruzione in presenza del branch-target buffer. Le tre 'i:_', fasi IF, ID ed EX si riferiscono ad una generica istruzione. 10 schema. assume che: (1) 1a ,,',:.;.tr~ ':~f'.'! '·"" 'l;'~ !:. ;{\~ 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 j'-,,, .;~' i~? in BTB) e possibile prelevare l'istruzione di destinazione attraverso Pindirizzo fornito da! !~JZ~ ""w"-'t -.·1 campo a cib preposto. A seconda della condizione di diramazione valutata in fase rD, '::":~¥~f'~ nella fase EX dell'istruzione di diramazione la logica di CPU: (a) continua l'esecuzione ': 'l.'';1i.'t .;[-¥ . ,.•;rl1i1!i ·W senza. alcuna. penalizzazione; (b) elimina. l'istruzione dalla. coda, aggiorna. BTB e preleva "fMTfiI ,:"~ , ..··1' ::il :~;! Pistruzione dovuta.. Nel caso in cui non si abbia hit (del PC corrente), Pistruzione .pub ';:''!'~:':1 "\" ..•, ~;" .. '':iJ I.. ,.> 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 ",$0::: ,:!" ': ~\j, ;; Pistru~ione di diramazione PUQ essere tentata una. previsionc secondo una logica predefinita ,,,':~I.:,w 'i~ .',.~~,,\ :'i;: "'~"f';
,'."
B.
""~~"'i:"'~;"I' :';;: t",; .r ." <. .;~J.I:"
"'~
•
'(i
::(l~~~ 1:1
"-'''~~l' , _,.l,:,l.',to.. ,:w,
,...~1 _··~it~: G· ?r
_>".,.,'nI: . J '''J'''m;'" '.' "h if=
5 ~', comunque un'uscita dalla connale sequenzialita delle istruzioni, e il tempo di accesso '>l.t'··U ! r,v, per superare questo problema, viene aggiunto al BTB un quarto campo contenente " ... ,' " .,. ,.. :r,.,", ':" "' alcuni b~ relativi alia destinazione, in modo da evitare i1 loro fetch da memoria:. :'::ffi~ ';-, Questa soluzione, presente solo nei BTH piu avanzati, rende immediatamente dispo- .'l'P':. · ~i':jj~ 't ,:: nihile Pistruzione di destinazione, eliminando cosi il ritardo dovuto all'accesso aHa -~,'~'": ":.~~'~ :i ""j' ,' memona. ,c~··· _, .'
,~
'.,-.~'>
;:
~.;....
··"~-~l'
e
UnJaltra importante diHerenza queUa 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.
.!<"
':
·;~f;~':'r : .,'1, '! .,,:~~".
-
~
..''!.).'':
~,~
· :·0J";::.' ; ., -."'·l·r
... '.. ~;'··,t .
, ,,';I'ti! ~
·'?h:';&··" ._,~l\;,,~ .~ ."..:',,';' . - ~. ... :t:9:»
'
·~
•-.'" _.' '~;
, :';',',li5P' ~~
':!;~~li@: 1·
f\:, , '.': .:
'~'
La pipeline
::
/
263
;.:>;.
...".
',,'f '
1..
>,
Caso
.
,
.
l
1 2 3 4
'''-
,":-
T
5 6
..•
~
.-
Istruzione nel Buffer Si Si Si Si No No
Predizione -Successo Successo Fallimento Fallimento
ito uccesso Fallimento Fallimento Successo Successo Fallimento
vicli di penalizzazione 0 1 0 2 2 0
~
.. _ •.
...
.' ,. '
Tabella 6.9 Penalizzazioni di salta in presenza di BTB. Le prime quattro righe si riferiscono a.i casi in cui Ia. diramazione e preseote nella tabella. La. penalizzazione di errata. predizione e di 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.
.
{: ,..',
1'-''':,' ,'.-,'".
'\<' .. ,,"
.:t)",~
,· •. -t
{:-
.<:
/
, ..
6.11.2 Ottimizzazione del BTB
';·,·~l>
.:":.,:,, ,
..." I, "'~'~",.
,
cI'j'': ."
.,,, .,r'...
-t';". ". '...
.-1. •,. .'
~,-.;,,,
',;; ,:'
"-1';'"
~t4~.;;"
'i,~>'
?~~':": 1·••. ' ..
~~~;(L
-¥>-:.;.."
",'.-
W~a.~
~,~,~,,p'
!'i/'j'~l~,
"", ,,', .. ,-'.,., .• '
J,i',t-"" > '".
"""-'.
.~fJ:"
",."" " ,
t~;P ,;. :',
~ "?.-, ,
::':"." ,.
':';": ,
;;.;.:._ .
~~~ .... ,
i',"~>'
1*:.;~:::
'
Le prestazioni potenziali del BTB crescono all'aumentare del contenuto informativo di ogni riga del BTB. n dimensionamento 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 e necessario 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.
,;/ ...., ",', w·,' ).,'
·-,.;,' .·. r..... '~.,.
J"'.1.;.\ • "·'t~•. · " =-__,
,
Dei primi due criteri si parla qui di seguito, mentre al terzo ~ dedicato il Paragrafo
6.12.
,(%~(,(~'" '
'. "
",n,,\::
"
~
'
~~~': 11',.' >U''', I' • ./\., . ,
.
"", '..
-,:-~,. ~.',
t:.~".
:;';',','
i'~'
"
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 e quella 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.
'~'.,-,
,,""-..:.
::';1''-
rj::~ ','.
!' :.
~.~ -
..
,"di,:' ..,.'
., ... .-
•
f,''' "
",·' ."
'." ." ..
~.:..
.~.~. ,,'
~.1'.,~
;{:~"
l
"-
~.1,:'t>..:V·.' ·. .~l~,i·
260vviamente, la gestione del BTB come cache, can possibiliU. di interferf!DZa e conseguente risoluzione 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. Peraltro, 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%.
,
,.
;
J~
,~
;t
264
11
Ca.pitolo 6
r", 'I .
,
..:=.llil " .. 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 LRU I d.i cui 5i e ampiamente pal;lato nei capitoli dedicati alIa memo· ria, e il 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 pro~ dotto tra la probabilita. cii riferimento e la probabUita di esito positivo e minima. La probabilita. di riferimento (che indica l'elemento del BTB con minor probabilita. di C5sere incontrata) e ottenuta empiricamente come funzione dei bit LRU. La prababilita che una diramazione abbia esito positivo e ottenuta dalle statistiche di predizione.
'. :r. :\ .)1; ',
"',:,~~
:"'~'IT, ;,..,
:';',11; ,
". .. ;
....
."J!; ,
,
".
·..... ..· 1,:'','
"('~:r. • '~;Ji ,". ~'",~
'
· . ,,,,
"",~,:~,~~, -', ','
- .,...
...
.,,: .. ',..;"" .:;·,,~. . ~'.", i'-'
)V~,· ,."" "'i''f:~r -'~ ,.,.';t .:.. -., ~,.,'
.
,'i.-.... ~'·
.;",H
'.-~'f~, ....",1,1' c·.... I',. .••;,,~. ,
.,.:)'1:
.,.'
,
-" .'!.' ':',,:.'\'~ .,,~,"~
,,~:,
'".;\.'.
" '.1' i""
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).
,,"" ",.·",t'~
"
1'" ~ .. ' ..
'".' .,r--,.._.i .;· .,'-' '" ..,'~:t' ., . , :"i'" ," · .t.(~~
..
~
", .;....:;'
·\i~d.,
",'" ", ,,"',''';''
~~~;:.~;
...' .:)::,~, , ... '. .~, •. (!
".,..~i
I
I
I I
.......,.,. , ::;:i.i"i '.
",~.
• '"
~I.M,
('1~ ..::~7Ji
"
"
I
':~{{.
I
,, ,.
.',~,~ "" , ;,,,,~;:.~
'.
000001
.
• .,:~!..:
.....' \..~"c," ;..;
,
000010
,I.~'>:'
. '\ ";;i':
'C, ',," ,~,
~,:
,
'.
.
;. ,,:
...?.......~
:.'"\-,~ 'i'''1
. ",'-;':>
. HU10l 11111
:,1~
;'}.'"
..
L
bit 0-5
"";
TAG (bit 6_31)
Indiriui di Destin.... ion.
Bit di Predi'Z;on.
"~'{:
J: ,:;;
,.
,,~ ~'
.,\,
~
Figura 6.43 ETB a quattro vie del Pentium. 11 campo a sinistra bala funzione di TAG per 130 ricerca associativa nella cache. La "storiall e su 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 6~31 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.
"
..r)
,~(
'. "J
'\
"'
.,;:
.' ',: ..,
~1'
,~-.-hj'
"
\
.~.~rt·, -.
;r'~'
~1f.;": . t':, ~""" ,
,~ "., '-I
1"<'
La pipeline
!
265
,c '.',
".'··· ,fr'· .•'," '
1
_ .. ,'" .~;.~ ...-.~ \ 'r:
{:;'::.
Ciascuno dei 64 elementi (per ogni via) del buffer contiene:
"
',:
'
.~,
,",.' '~:"
'
"
.
1. gli indirizzi delle istruzioni di controllo del jlusso esegtl-ite: gli indirizzi, utilizzati come TAG di accesso ana tabella , sono memorizzati parzialmente , ossia considerandone solo i bit meno significativij
,
',-
'''',
'.
,. : .-,',
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
'
..,.
"
.
".
".\
'
. ,; ....;'...' '
"
,.
'. ""
,;;;
.. ," ,. . . ,,"
c,'," .' . .' '. ........ 1 ~.'
..;.:.' ' '
l.~
.
' j ,'"
.
•.
~
., T'
...
..
~
..' .......
' -:-,..,; :":"
,
,
::'..,:, .:.".
,
~.,"~;y .
""', ...... ,.
;
-(...... ,,' ,\,," .' ."
.
i
i;;' ,,::,,:.,.:.
..' . ~ 1,'\' :,'1',.', i :,;;,,;:~ .. " ,~ , .. I",') " .. 0;";",'
.,.
,;. .'" \.' .'~, '..','~'''.'; ,.. .. '," . '
:>
; :.' ~..;. "\ i , .......
"':
'
:~
-::".,:;
," /.... . ' ','
'
,:.'
~;
:,'
~, ". ,., •
.,
~, 1!:
->'..:
'
"'i" '
~.-
L,
,-
;~ '
:r ....
;' ':' '
'.:'
l
",-,'
,
.
~~
)}
,
(,. :: ,
Ji'
>
... \" ,. .,:'
'.
"''~'t: ,.
,·r,'';' .,,'
:
e ricavata
A un data momento , il prefetch che e in funzione carica sequenzialrnente le is~ 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).
'..
.. ;'' ",.
"
3. le statistiche di predizione: la predizione dell'esito della diramazione grazie a un predittore a 2 bit.
: J,:
'! i ..
,. Se l'istruzione e presente in BTB , il conten~to del campo storia fornis~e l'indi~ cazion.e per predire l'effetto delPistruzione. Se la predizione e di nqn saltare, it caricamento delle istruzioni continua i.r\ sequenza nel prefetch buffer in fun~i9ne, altrimenti il prefetch buffer disponibile comincia a 9f..icare istTU~ioni dall~indiriz zo di destinazione d~l salto (questa e gia in cache e quindi non richied.e perdita di tempo per essere calcalato) e ve~gono aggior~ati i due bi~ di storia. Se Ie previsioni del BTB sono corrette non si verifi,cano conqizioni di stallo, In caso contr~io viene svuotata ~a pipeline relativa al. percorso dimostratosi inappropriato e riprende il caricaniento deUe istruzioni lungo il percorso corretto, con ritardo minimo di 3 cieli di clock se l'istruzione e in U e di 4 se e in V (vedere pili avanti) .
un
• Se l'istruzione non e presente in BTB, 130 Iag;ica·del Pentium assume che fa diramazione 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 e passato su di esse. Se la previsione e errata, 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 necessarie (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.
I ,
I j 1 \
1 \ \
I \ 1
I I
;~,
~~,
.,' r:-.
'~
,;l
266
-;;," I
Capitola 6
,,;l'~""
"' 'j, ~',
.L1\l
\.
'l'lr •jV::
\
if):1> ,.I,~"
6,12 Predittore adattativo a due livelli
·,",I"! ••.•.
La predizione delle diramazioni diventa tanto piu importante qu"'"to maggiore't: la ...... ~
g\:,:,I '. '
~.t-r
p:ofondita. della pipeline e il grado di parallelismo della medesima27 .. In questa genere w~r cit processori, il predittore di diramazioni diviene di vitale importanza in quanta le ."'" ~ ;j'~~ errate prediz'on' . 'd'1 e I"lIDmare ."A" 1 1 pravocano n'tar eli rno It 0 eVl'dep t'I, d OVil t'1 all a neceSSlta /1:." ~.'i !~':. dalle pipeline W1 elevato numero di istruzioni. E questa la ragione per cui sono stati .' :~'.?kt ;~~4 . studiati preelittori multilivello come quelli descritti eli seguito. ·. :~\~.!;,lfb~ alia base eli ':ll livel.li e. di utilizzare il primo livello per seleZlOnare uno specifico mS1eme di informazlODl stonche legate alIa diramazione in ... ;l~to;;:;~ oggetto e it livell.o.per la propria [Nai95]. In altre _ f$; parole, al pnmo li~ello SI l~en~lfi.~a la s~tuazlOne Ul CUI C1 51 trovaj al secondo Hvello ',:,:',~i~;jj ::~.: vengono sfruttate informazlOID pm specifiche volte alIa predizione della diramazione. l/~'ff' 1t; In. [YP91] e [~921 e~tato P~Op?sto di ut~lizzare, per il primo Hvello di predizione, ",:;'.1:~ ·~ la stona delle ultlIDe k diramazlOnI 28 . Per il secondo Uvello si considera invece il· "f::(~ ~~ 1 :O-"~I 'iii comportamento che Ia diramazione incontrata ha avuto nelle ultime s volte in cuiI}"t:-·<,~·F{;r·. ',~~' . :.-;.' 'il:.. stata precedut~ da! corso. storico indicato Del prim~ livello.. '" ' :"~.~:;~.fiI·J . Per esemplO, SuppoDlamo ~e, ?er k. = 8, I~ ultlme k d1ramazlOnJ abblano avuto. /f,~ ~~; 11 comp?rt~ento 11100110 (1 mdica drr.amazlOne esegui~a, 0 diramazione fallita). '.. .'t~: ~~ Supporuamo m.oltre ~e s = 6 .e che Ie ultlme 6 vo~te che SI e presentata 1a sequenza 3-:~\;~/i! j11100110 la diramazlOlle abbla alternato succeSSl e fallimenti, cosl che il secondo ;'lr~~~ J~"
\
L'id~a
!
p~~ttore ~.due
s~con~o
\
\
\
I I \
I
~ffettuar~ p:ediz~one ~er~ ~
>J~~~~~ ,,~~~r
livello contenga la sequenza 101010. n predittore dara predizione di successo, in .:'~~'t~li quanta la sequenza di secondo Uvello contmuerebbe 10gIcamente con un 1. .<::;.~ }. . !,.er conservare due liv~lli. di .in~ormazione, i:l preditto~e adattativo a due livel- ,1..~·T1i(~~@ li utIhzza due strutture prmclpali: I1 Branch HIstory Reg~ster (BRR) e la Pattern t4JiJ ~ History Table (PHT) I come mostra la Figura 6.44. ..\:-)~ir) ;i L~ informazioni sulle quali sonG b~ate ~e pre~izioni vengo~o ra.ccolte in rase di ':"4~~ ~~ esecuzlOn~ del programma e c~n esse 51 agglOrna II BRR e i bIt di stato relativi al ':;~~' ~t corso stonco. n BHR e W1 reglstro a scorrimento di k bit i cui contenuto indica gli :.:,;l';:; . ~ '\: esiti delle k dir.amazioni pill r~cen~i (1 per successo , 0 per dirarnazione non effettiva). ,,/':;;~~: ~ Dato ~e il B~R ha k bit, CI possono essere fino a 2k combillazioni differenti , ":';'~I0K ~W ovvero 2.1: differentl corsi storici. Per ciascuna di queste combinazioni, esiste una' :;~€-i ~4 e~trata corris~ondentene~a P~T. Ogni entr~ta d.ella P~T ~ontiene l'esito di dirama· "i.i:j:;~~ ' Zlone dell~ ultlDle s volte ill CUI Ie precedentl k dlramazlom sana state rappresentate ',\:'~itj : dallo specifico contenuto del BHR. ".~~:fjrr\. ? AI momenta della predizione dell'esito di una diramazione, il contenuto del BHR, .:"J';,'!j! denotato can Rc-IcRc_k+I ... Re - 11 viene utUizzato per indirizzare la PHT. I bit di :':,'~k:'i ~ stato SCI relati~i at corso storic~ <:he si trovano .n~ll'entrata ~ella P~T indirizzata da :':.-'~~lf1~ BHR, serVOllO mfine per la predlzlone. La predlZlone della duamazlOne e data da ',:A;1·:!l1:;N:·
,
"'¥.:
". , ..".;10.
z, = A(S,)
dove.\.
\
quel~a
e la funzione di decisione di predizione.
.
"'
(6.27) ".'.~i~.;,·; ..,. .. .~,
'';-.:, . (
.
--""'~~ "'
,
-. '."r,.
· '-"J1"'l':'~ \:",, '. : ~'\~.. ," ,. ", " ."
, . " ....:i •.
.' .lJ~--\!~ .
" '. ' i','~I, '7Per il momento si stanno considerando solo pipeline linea-ri, at prossimo ca.pitola verranna ·, ,.". ,-:' , .,.,., considerati processori superscalari. 28Si pub trattare della storia delle u1time k diramazioni incontrate 0, come vedremo, degli ultimi k incantri con la stessa diramazione. .."',, • . ...··1' ., , " .
'
\
.)}~.l}.?;fi f
.. . . ;;1;11"
,
..~.,' ·h'l · .: ',
1
l
,
'
;
,'l:·,.
,"'"
,' ....
.,
~~"
l\i·i~"' ..
,.
267
La pipeline
"'''", I 1,..,. .
j, ,,. ..
""
i/o( .
r~,·i+ :,.,,,..
.
>,'"':,;;';•
!i'" . . i·" ,
r;~~~
Pattern History Table (PHT)
I.~~~~::'" "''-:\ '
cou,. s•.. Onel
r~tt~'.
dsllt.
~"((::'.
B h H'sto R "ste (BRR) iS':,"<'· ralle I ry egl r.. .!:.';" (Per I'.ggiorn~ento trul... Iuultr..)
4'~;~':'" ~~:::
00 00
' I" 'I' 'I ~e I 1
00 01
i
s,
i
R O O ... 1 0
Bit di st&to
>.(5. )
re.l ..tivi II cOlaO atorico
Predizione
He ... H C_Io+
~\:' ! 1
~ '1.:'.
Dif.muion~r-~
1
...
1
0
t
;;'¥'-'"
.:~/:,:",
11 1 1
10 11
s,
I Logica. per
;.(::::.
I.. tr .. nli.. ione.
~t~t.~ ~""'" i¥,~'::-·
di n ..to
Rc_E.ito d.lI .. dir .........;on.
'~~~,~" " .,?: t~·
J~tr.~·'
;~~;':~'~
~1M:\·
-t}!'.'
"~iti::"':
i~~;:, .f:~< .
@&]\'·>.
~:l/".
it~L'" ~:1i~:' t.::,-
:';~~~(;:;'" '.
k
Figura 6.44 Struttura del predittore adattativo a 2 livelli ideato da Yeb e Patt. Le 2 entrate della PHT sana essenzia.lmente dei semplici predittori a un livello come, per esempio, il contatore a saturazione a 2 bit. .
Dopo che I. diramazione e ri80lta, BHR viene [atto scorrere a sinistra e l'esito ~ Vlene messo nella pos1zlone del bit meno slgmficatIVo, talche il contenuto del BUR div~nta ~e_k+1Re_k+2 ....Re. Per quanto.si rif~risce ~.bit di. state questi vengo~o agglOrnatl (da Se a Se+d III base alIa funzlOne dl translZlOne cil stato 6 che, a partlre 29 dai vecchi bit di stato e dall'esito della diramazione, genera i nuovi bit di stat0 : 8 c+1 = 6(ScI R c ). (6.28)
..
.".
..
81 osserVI che quest9 tIpo dl prerlLttore 51 adatta dmanucarnente al programma
~f7, in esecuzi?ne: s~·la. ste~sa d~ramazione ~iene incont~ata due volt~ anche C?O .10 st~sso W::!~~' , ' corso stonco (bit dl pr~m~ hve.Bo), no? e. detto. c?e tl contenuto III PH~ S:I~ IdentIc~.
4\.;Il',
'l~<'
:~E\:>
?!fi~'
!iw-;
~ll~':':"
~;r.
·:r.\~::.":;"
.";Jil
'\'"
..
",
..;~4~;'.-
Un confronto tra I d1verSI scheIDl dI. predlzlone tratto da fYP92] e nportato III Tabella 6.10.
.....
"
""
. 6.12.1 ReallzzazlOUl alternative del pred1ttore a due livelli Uno dei punti di forza del predittore adattativo a due livelli ora visto di scelta tra tre opzioni:
e la possibilita
• GAg: global history register e global pattern history tablej
,,~.
(f!'';';':''''
.
"":-'~' '\'-<
,~:'1'\:\' .,:.;
,,;,<::~ " , .., ",. ; .•", •. ': ... _"t,.. '''''-,', . '~i'.,.-.
• PAg: per-address history register e globa£ pattern histQry tablej .• PAp: per-address branch history table e per-address pattern history table.
'
,~n;'
''l;,;~
".
•.J
ff:fi;;'::'
."'. ....~',""'"><:,.
.....
,,~.,.'
~
..
l.'1:!'::;-\,~,
, ',.~~ ' . ~ ..... ; ..'~'- ~~,,'
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.)
,
268
Capitola 6
,.I;~
'~
Predittore Predittore adattatlvo a 2 livelli Contatore a saturazione (2 bit) Predittore Last Time (1 bit) Predittore Always Taken
"'-"'I ...."
Accuratezza
,.,I·:j~
97 % 93 % 89 % 62,5 %
,
·",,"'" ".'':?' .',;..! ., t.
"'.".
';."'!:lJ"'I,l'" .:.:>:.1:;'\ .."- . ,• ",-,(~'d1
;c1i:.'~
Tabella 6.10 Accuratezza di predizione di alcuni predittori camuni fYP91J. Questi dati :~:'!'~:, ,}i•• ity.1 mostrano come con il predittore a 2 livelli si riescano a ottenere Ie migliori prestazioni. ~" .;",:;:;Il ,:\' ·'t D'altra parte, gia con il semplice contatore a saturazione si riescono ad ottenere risultati eli ·, ..-ci'i~ tutto rispetto che pen), nei processori piu avanzati, non sono sufficienti. .~
,
,
·
::~~,
· ... ~,~\
,:",~,"t;:m,' .
• Predittore con organizzazione GAg E l'organizzazione meno complessa, rna forse anche quella di pili difficile giustificazione.
~>...\;••,." ".
"":"".{~'!' .
·;:',·t.;tt~ i
:"",:;,t~-@!, ,
". ';.r;~Wi.i! .
-:,:6t;~i~~~ ;~ ".'M~."·
Glob,,1 Pa.ttern Hi~tory
Table
.....,'.'/:':~(l'
'·/"'~1~ ",
'''';-''~' :< .
,"~'i':Eij, .
..,.\'."t" ~",.\'t".,
(GPHT)
"."
:'-'~;;W~'~,: ,!!'~ r:
\,~ijl . i~ ',: .~~1,.~ , ..c, ~, .
Global History Ragister (GHR)
· ""~:""j , .·: :,·~.~1;:, . :~
,,;'Wiii~·.::~
';'~:iij~'~l'~ . ''''''' :q!' '
'
"-;,,1.\:] ~,':'~
. ".. ,~.,~
,''''
:.:.,:~1R~.'i
: ."
.; . . " .J ,'J;",ilt:."",
"/;'f
";"'~$iJ{ , \ ').i~;'f:'i" -..,,t,:C<..
~'
:
· ..tt!'1:1 ' .1 ,j,. ,\[J4~: :( ':~1:;:':
Figura 6.45 Realizzazione GAg del predittore a 2 livelli. Dalle simulazioni di Yeh e Patt [YP91] e risultato che , per ottenere un'accuratezza media del 97%, si deve utilizzare come 18 GHR un registro a 18 bit e nella PHT 2 contatori a saturazione a 2 bit (2 18 = 262.144 !).
".~; ,'~';:~ill,:i
'N':'~:"'d":\' '~
.,,:~:;';t~ ~: ~"~~'~-f ·''
,.'~:~~~llti ;
, . ,~~",i~i+.r':' j
--' .i""'""lJ, " ,:~.~iJ:': ':' ";:\:!tff~ ~' ... ~(),~,,.~ .
:
Nel GAg (come rnostrato in Figura 6.45) troviamo un unieo Global History Re- ,::):f~~ ""''''~~;';')' >;;i~:;J;;)'~': ,gister (GHR) e un'unica Global Pattern History Table (GPHT). Tutte Ie predizioni ::·.'i~$~~; ~; sono basate sullo stesso GHR e la stessa GPHT che vengono aggiornati han appena ;,s1'~I)}ti ,, si risolve la diramazione. :';!i~~~: \': {; ..,',. ' I' .-'. { n grosso svantaggio di questa sempIice realizzazione e che si presentano interfe- :.:i}~;(~ ;;;:~J'!,.:,. .';';",!1~: .' renze sia al primo sia a1 secondo livello; Ie prime si verificano quando il contenuto ,.llr·',~ storieo del BRR viene mutato da differenti diramazioni , Ie seconde quando due 0 pili ·,
·'''tr· ,.' ,,'~~::i,~~ .: ~"'-'
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
.... <:~L~ ~
"'
,>~;t8 ); .-""','" . '''. ··"r-" ",
.
':;;"'k'~
"l.;t . ·"S,:i.~~, _
'''1.'''''' ]" .• ":Ij,,,!,. ,
..-,. La. pipeline
~>.,.i,~'.
269
~:;}i:Y'
ri"~~ "." 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 I I
',
,;';' "'r;
·,t·,
Per-addreu Bra.nch History Table (PBHT)
<'"
,\
Global Pa.ttern History Table (GPHT)
.'
.,:~:\'J
.~'.'-'
, .",": ',' ,.
3:;:~{fj::·
,,~.,;:.'< ~"~;''''';';
Ind ice
.
,',
~~,'i:':;::('" . ,.,. '.
",';.~P:~·
.•-,.,,"
;h~:'~.~;.'
<~~,:,;:,;
,,:~,).:,."':':'
t' '.. " .., <'.':;,"'·i··
'.,'." ' .:'."~,,.;>",.....",.'
:~iLL:, :'" ~~:;:::':::,·
,';:;r"",'," . ....,. . .
'\
r
! 1
\:
·F"';'·"';·'-'
,.
:,~;:~:.),'
~i~~j::!' ';
~'i~\':':'
';,;;:.,hil·?, ," ~,.
''-
~';'(.;"';";'A :,,\\7' t
",·,~1,
• ,
~. ~ J ,'} ~i .:; "",
~:':·1~;\.::·
~:I!:;;S::'
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 12 2 contatori a saturazione a 2 bit (2 12 =4.096).
\~~.f';;,';·.~ '::!,'.(;';J', "
:~~"/'"
.;'""
j,;!j·V;!:"" .,. Jr', .
(:r.~i'>V;", i:":;'[~:F: '
~'!(-i1e;/'
:'I~.V:,:\-,"~" '-''I··f'.'·,,,' "
;i~t;;:F.
j,.J::';:"" "," ',.,'t·,
:',1_,',:;':'.' ':Y';-X' . ,,':': .:..
:tJ.;:.:,/,
',':-'''' -,.,,;~::,"
L'esito di ogni diramazione aggiorna it BHR associato alia .diramazione stessa e una entrata della GPHT. La predizione e basata sulla partieolare storia della diramazione 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 predice un comportamento analoga a differenti diramazioni che abbiano 10 stesso corso storieD.
r
I r J
;11,~',:::~:
,·ti'.: "
;'k::'>: .... , ,.
{)~;\,
..;~. ;
,
'.,"...
::..,>"
;:~::.
."". "".'. ,".,.:.,.,.. ....... _,;,',:,-:'
"'_'1' . "."
Predittore con organizzazione PAp Per rimuovere completamente Ie interferenze 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 e anche il numero di BRR) e chiamato 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.
I ) )
J'"l~,
~:I:"
:,>"
',0;>
I
210
.'• %, n, . ",''''
Capitola 6
c'
~
· ".
.,,
· "t;r,
:'.:~~ ,;'.:
',,- : ,
\:~.~
, '
)
Per-.d
lUanc:n Hinory Tabl.
rU-&(lCnn
:';f':~~, ,"'" ";',
,,'
':~F! :;~,
,
;"l'C '. · ',,, ;''', ,
(PBHT)
I~
1
• .i...
-..
!'!.
In.dice
w···
.. . · ~,.",
,
'.,1'"
-' ,j:,
----------
•
;,. ~ i.',
..,J."
5,i~ .~
1\
•
,. ""
:,'j~
· ',! ,!~
. I-' .
I
I-'
·::':,:: ,: ':,-1:; , · ,~~,:: ,.~~,: ,~:'~
-
:',;:~ '1~
,Jii::{ ,"':.!
·r~~
.~:( ~' ",~
''''~I
•
/
, \
-',:~I:;:.; ,-,,:,~t
> '..J),
'."'1" ,\ ., : ,,:..;,,; ."
''':;''1,.
'
'.' ',1:i-\:' .1,
·
\
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).
,'~;: 'i '
"·~I;· "", ., ·- j':'jj.,• ,'t.
.'. · ~ '~.• ,( <"
-
'.;
• '~>,;, ;'
,:::,~j!l' '-'
\
-' ".,~: . " ';',';'.:,::;.: ;' ',""l~ r ,:;".~~ ': " .....;. ' ,-"">0"" 'J ..-..... "
6.13 Le interruzioni
':
'.~:l,J:/
- I •
Riprendiamo ora 1a questione delle interruzioni, la cui gestione si complica ulteriormente nel funzionamento in pipeline. Diversamente da quante fatto al Capitola 5, in questa sede necessaria trattare anche Ie eccezioni.
e
"';Fj'., ': '''.. J ~ . ';'~,' ""',~, _. ;~,!,-
.
:
· .",..~< -
.:-.:~~
i
"'" .'' ';"1..
•
•
I
! I
•
\
. , "':: ·
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. Consideriamo 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
.... I·~ .' ',::~f, : ••_'!
,';.... ':
"
,: ';" " . ,;~,,~ .'. ", . "I;, .;,;;- :
,,&-; , , /"
>;.'~' . /'
,;,1,1
',.;'1
"'~~. ..:,.~,: ...
"."..., , "
- "'~I
'
,
-" ','
'
:~ "
'''' :%,,:!:' ,{~:~
, 'l1'i
',--\, 'o~f
:,~,>
·;·';:~'
... ",. , .': '';:F.,
"~~'\lt: ~
\
"'::i;'~;;lf't
"'. ;'''.<1'1,
, 'I ""
".
',"
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 discusse 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) e seguita cia una istruzione piu semplice B (tipo una somma tra interi) e se A e B vengono eseguite in parallelo su unita. diverse, e possibile 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 <;:ent~ale. Si parla in questa caso di interruzione imprecisa. Al contrario un'interruzione e detta 'precisa se lascia 1a macchina in uno stato consistente col modelIo sequenziale di esecuzione del programma; per essere pili specifiei, 10 stato salvato al momento delI'interruzione (che vena utilizzato per ripristinare iI processo) cleve verificare Ie seguenti condizioni.
,
'
...
';
~"
: :' ,, ,.
:'i:,
.'
~' .... "
"
:, '.
,:,
'
'
,
.
"";:'
'.
,:," J '. 'i'? :
.,"': .t;:-. "d'. <,,..,.
.' '-',::'
-'(';" ,
";
',.' ...
'"~''' r~ i'l
:~).,,
'
J". .. I'.. '•'
:;::',:
:",~;;
.",.~. ::, ' ,'.
...:'.:~,.
-,.
I
,
·:~r<,. ',', __ :'::;:<." .
:"
"
,I,' ';"
"
'.'"
...". ,
•
"
.~ "::'. :'
•
.
,',.;.
." ' ,,
'.·'~l'
,,"f(;.':,
~ ,.,
3. L'istruzione interrotta, a seconqa del tipo di interruzione, puo essere stata eseguita oppure no; a ogni modo l'istruzione interrotta 0 e stata completamente eseguita oppure deve essere aneora iniziata: non e possibile quindi ehe 10 stato salvato eontenga istruzioni solo parzialmente eseguite.
Priorita Un problema con la pipeline e che non solo Ie interruzioni possono veri~ 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 e necessario stabilire una priorita., che ovviamente privilegera Ie eceezioni che si manifestano in stadi pili avanzati della pipeline
":, ,', . "
:;'~,
2. Thtte le istruzioni successive al PC salvato non devono aver completato l'esecuzione, ne aver modifieato in alcun modo 10 stato del processo.
Nella parte ehe segue faremo aneora riferimento alla nostra pipeline lineare e tratteremo 1e interruzioni precise.
i· ., "
1. Tutte Ie istruzioni preeedenti al PC salvato (relativo all'istruzione interrotta3 0)1 hanno completato l'esecuzione e hanno gia modificato 10 stato della macchina.
.\,.:.
'~~~"
,.!fVi, "
30 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:; ,,"
Capitolo 6
272
,>·
:I·
!
,.
_
"
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
...· ..~I' ," '. .
di interruzioni coosiderati in Tabella 6.11 coprono tutti gli stadi di CPU. La tabella
·:;'·"i'
riporta 10 stadia in cui Ie interruzioni si manifestano, dal quale discende la priorita. Un esempio sara. di aiuto: supponiamo che si verifichino contemporaneamente l'ecce~ione RI (a causa di un coclice eli operazione non esistente) e la FAdEr. Poiche l'istruzione illegale stata caricata prima di quella che ha generato I'errore di indirizzamento, e poiche e plausibile che la gestione della prima possa evitare i1 manifestarsi della seconda; 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 precedenti quello dell'eccezione da servire sono cancellatej le istruzioni che invece sono negli ~tadi 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.
e
e
[1'lome
~
.LH
0
~
@gr
IN".t'Il:
I Tipo
.~"
~ '
• • J'
.••.
}~"
;,:',0:;'
~,J.,;.l:" '~:.t"'f1
.;'t:. ,{ .,~
._",.,.
-'~,'·I·.
'"""".~
''''';"'(il_...,.;iJ:_ .. ~~,
. "",'•• '1i"\V ,.1
. '·':li·· .,:~.
entativo lettura scrittura dato c .sallineato &cezione iVlsione per 0 Qurante opera-Zlonl aritmetlChe 'l'l'a.ppola eCUZlOue dt Chiamata a sistema (, ystem call) cceZl0m ~uzione Istruzione nservata 0 co ice nOD~to cceZlOoe ~ntatlvo lettura dl un lstruZ1QUe ctisaI1meata ""IF" Interr. esterna vento esterno Tutt,
ccezione
J£
,
r' _ "t:1',:\
, '>;" ".
~;'!~~}l
l Itr
I Causa
I
,
.;.t,. .....
.;:../'1~ 1
'," ';1. "")I'l~
:t-r:,.~, '.' ,~,,~,
.
:~JQi'
'~...
\l );,~ ~~
, , . ~ ~l ....,.j,.lr,
.,""
,.'
':':V'~~
~~; ::'"
- . 'I .
..-.~,:/,:,~ . . . ~\~i'-
-":-.i'''';' ·.~t'!lj
·
,\.~'tll:~ \.;" /:I'
. ._
· ""
':':'~'.\'
..;'.:f;,l;[l
"'~"{:,r,(
:~i~r:;:
,,;~.'~\
.~~",' '''1'0
Tabella 6.11 Le differenti interruzioni considerate riportate secondo 13. low priorits. di trattamento. 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.
· .,fro "
'
l
,~;f~~
~r~
.~~~
.',,'':,'.1".". 'll· .' . ·
~
~
"'''
l,.,':!.~ ,'" •
•.." ·,...
.
Jr.$ ~, ,'~
:it~
'l,,,
~",lr
"\';~I
.'J"
,,:ii,.'
• -.";0/
.'
n
e
Le eccezioni non contemporanee criterio di priorita. di cui si parlato nel paragrafo precedente risolve completamente la contesa per Ie interruzioni che si manifestaD0 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, necessario 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
e
"t/
"~""J 'J ';'I'J " !< ,
".:!-" ...i
·.·
,~.
, ,.1, · ',;..
~
;; ,
...'/
.... : ,
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
· •
,
·
·"
,,
,~ :
.- ., !f"';~:~~;"
\
~<'
~~i;
. ". ·b,··
,t§(\ .'
",,",".'/'C' ,~~., ."~,.-. ,\ k~" .
L~
:;.},·'):::' " ~ ,....-~
pipeline
273
..,..,.-' .,....-.;. ··r,,'~';·';·'" ••••• ~ :.
1
!"~"" .... '
.:':"~'r.:' '. ~
"'."r,~"
che questa condizione accade nel caso della nostra architettura; si veda l'Esercizio 31 6.9). La Fig. 6.48 chiarisce Ie precedenti argomentazioni Nella parte che segue, si assume che un'eccezione cbe si manifesta in uno sta-
"e'i ......'..-'.''". ' " ". '-:
.,
I"
i' _..•.
dia .vanzato della pipeline debba comunque svuotare tutti gli stadi cbe la seguono,
""' '"
indipendentemente dal lore contenuto.
"."'. , .,'.. ,
'. ,,' ,.",'
Clcll dl clock
:. ,; . (-'. ".'
..
"
,
,
V' ',.. : ...
·' r
•.,.•
'.'I'
,. ,
""',
'.2
"v"-""
....,,' ;.•
."
...'
'!
.,.. , .-I.-,~.:'
.:---"." "',,'
>..-..
'
S'
.",:.:.
' ~.;
._,.-...,.
.:...... ." '.
"
:.. " ·'f ' . ',;:.;',
u.>
ADD
ST
sus
XOR
I I •
RS-F BoU. RS-M
DoH ...
~D
8011 ..
sT
sus
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 RS·M.
\ .
-
\ ,
.
\
' .:' "'.:).'~' g~•.••,.
j
~ :;.,,'<"~'~' ' ,. ..l.;'>''';('', .•
..,
....
l
:~-~":,, l,.>~_-:,~
:
.
(
\
., -'" .',""
., ... '
J'
'
','
"~.'.
0·:0
-.'
"
,-, ,,;'J
~
-,'.
"/'," . ·· ,J,-,_,,, .-.,,,. .., .'.\'
~
'~ ..;. -',',' ••, '>' ..;'."
...
$-',."'~~"" "'~ ~.
~~
...- ,',
-
,r:"'~':" ,'~"
~I'"
_< .:
-
.','" /:
,
/', ,
.
-.'
J. J1 <;:.
-
"i'\.
··1'
.,
, " 1·' .;i" ,I ~ I O'
",'
;\ I:
/.
,
. , I . .:',
·
q.
. ·.
,h
""'\ ·c .....,
,/.
..1 -:';
~ :!~
,
• ",';\.." .
~ ,i(/'.:'\'"
~
6.13.2 Interruzioni esterne 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 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).
e
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 ve~tori'm interrtlZione (TABIR); c'~ qilindi per 10 meno un cicio di lettura deUa memoria centrale (e non c'~ 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.
\
•
\
I\ /-
I•
I
I (
274
Ca.pitola 6
10 schema per gestfre Ia pipeline e in 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. . lNTR
1
IServ
Bu'
lst,.uzlonl
o-
0-'
h
I~EX
w
~
\
I
IF/ID
EX/ME
ME/WB
UC
,ECHuX
I I I
•
•
I
I •
P
f-
,
+
•
C
f-
~
+
XR
" SR
.
•
•
I
~
-
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 viene copiato il contenuto di IF/ID.pe!. Quest'ultj~ 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 e posposta at momento in cui, per effetto dell'esecuzione dell'istruzione RFI, in PC vena. ricaricato il contenuto di PCI (il suo indirizzo).
sa
i INTR
•
~
I ! I \
I
IINTR -l
'I
s
'1
•
01-
IE:
, s i/
0
IS eru
Figura 6.50 Generazione del comando IServ. II flip-flop IS Testa asserito per un solo periodo eli clock.
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 med~ima funzlon~. In Questo easo, 1a scrittura in R30 di pel comport~ 1a propagazione di questo campo per tutta la pipeline fino allo stadia WB (si veda l'Esercizio 6.11).
La pipeline
275
• Le interruzioni esterne potrebbero essere vettorizzate. Cia comporta un meeeanismo 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 apposi~ 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 servizio, che, trasferito in PC possa permettere il fetch della prima istru~ione. 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'istruzione. 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 interruzioni, 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 essere fatto necessariamente dal programmatore, prima di riabilitare il sistema di interruzione. .
·6.14 Eccezioni 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 e che 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. • 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 riconoscimento, che verra. riabilitato solo dopo che e stata eseguita l'istruzione RFE. In altre parole, si assume che Ie routine eli servizio delle eccezioni non siano interrompibili.
"! ;"' h
276
"""".
,.
Capitolo 6
,
".
.
• n passaggio 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.
;~
·:k;
.. "f" ; ,f"
.<~~
"iii
..' ; il.,
.'.~'
• 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 carretta. Per esempio, nel casa di ecceziane dovuta a page fault, l'istruzione che la determina deve essere rieseguita dopa che la pagimi. stata 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).
". :6
~,
:~:;.;
;,.'I
'. r;., \,{,
, 'I'" ,.". ,.'" ' "':;: .
e
e
Per servire l'eccezione oecorre anzitutto identificare 10 stadio in cui si tata. Si hanno Ie seguenti possihilita.
-. .~.~~iJ' ~.
..
.\-'"
'"'~l" ; ····l~·(,
·.. '1i~,: ~....
,~"",,,
::'~))"
·"' 'or .~~ '"'l*'..
"" .
"i'~' ·y;:.s-. • ·l,·!f:r:.
:;\~~::IS'l' ·
e manifes·
• Veccezione si mani£esta nello stato ME. Si tratta eli:
.-:;'. j
'~''l):;.''
::':~j,~'l" ,
,~.,'.l.';l.
..
":"1'" .'
·'t"· ';'?~'
.,,::'kw',
.:,.:.-§'1; ~,··J;t.
<~~l.:.7.:
al tempo stesso l'eventuale lettura/scrittura in memoria;
."
·,}_i-t .__'i: v ·'
"·1i~·~. .. .." ';' .:':;\l\~ ,.~ . ,
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;
.
~ "'~'
. .""y;; ." ,.'\,,;~.~-;;.
1) svuotare 1a pipeline a monte, inserendo una bolla in IF, ID ed EX, annullando 2) imporre che il PC dell1istruzione seguente venga scritto in R29. A tal fine
;
,"',,: ,,:1;1,
.
""['
",~~~
,~. ·...,..
• • t;;,';
',:.,·'·:i· ;' j""
.,~:;.~;.
, ,,:.,::·~.1; ,. '"~I
·.?\~i~1;1 ';'~"'I'~ .,~,,.
..' !
3) copiare in PC il contenuto della posizione TABECC individuata in base a1 tipo di eccezione32 .
. :•. t · i'it <,1.'1,:(.:-: '<0,"(
r.~""(\o!
"?~'If,
V·f~(.·
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.
".J; "f
'-;:"','
",~!~~
· $;.
.;iif
""::'.~
,
~,
;";':,"
,
',."
-;:~7" 'o.!
,\~.;;
• 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
:~}:P'\; ,.. •. ~~'i
';' 1l. .',' ~ '.(:l1I. . /.j:;,.I
~
,:;·:t~ •
3 2 Si
esso.
tratta bana.1mente di dare un numero a tutte Ie eccezioni ed entrare in TABECC in base a
•.
. .'1;
:'~:,:
'"
'... '?:
.I'!;~~
",.. ~ .....,..
"'"
ol"~
i>~:',;
..,. ,..... . !lit"",,, '. h'.,,:,,.;,,,, , , "'", ~:.;.:' .. ,... :'f:~lc,
\
','j>,:> .....
"~"I"~'
.,;.~~
La pipeline
'~,'
."
277
e
proseguire (su di essa non piu 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 . • L'eccezione si manifesta neUe stato ill 0 IF. Situazione del tutto analoga ai casi precedenti, rna con una grossa differenza: non escluso che Ie istruzioni che si trovano in stacH pili avanzati possano dare un'eccezione a un clock successivo, prima di uscire dalla pipeline.
e
'. "
.
.-,~. :'.
;'
,;
">
,'. '", ...,,"" ,.:.:,. ,-,.'.' ~ .>"
... ..~,'.
. ,.
• ~ ...
''C';'"
:..':~: ,.y' "
::,~.~;;~::; , ,.. , l'e'"
:.":.'.",,.' !:" ."
\,''-::'
..'., ,.. "..... ,
.,".., ,.:... '
;.. {":,
;;!--/ ,,'.' ·'··' ·;X~"·'
;:-'·1.~:,:·': ,,:~ I::',', ,'.
,'.-, ,. , " ',:}::'} ~ ;:: .;::...... . .. ," .;.,':;-;;~'.'~" '.:;:'
',,'
......,.."
,~ .. ,
\::;...':,::. ~;:}!:
....
..
~:'"'.:" '!-. "
".'"''
'
." ,~.'::;~)" ,,;..
..
~~.~'::;':
.' ":,:;,.:' ,.,
1 ,.;,.,; ''':'. 'j'~"" ,,,,::y,,.'
l I
II problema del punta precedente e di una certa complessita.. Si faccia riferimento alla Figura 6.51.
1. Quando l'istruzione LB in IF genera l'eccezione FAdEr, in IF lID viene inserita una "pseudo bolla", nel senso che non devono essere svelte Ie azioni previste da LB33, rna vJngono scritte au IF lID (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.
..
\
I
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).
2. Al clock successivo, l'istruziane LW, che' ora e in ME, determina l'eccezione MAdEr: viene inserita una bolla su tutti gli stadi precedenti e viene annullato it comando MRead. Su ME/WE deve restare immutato it contenuto del campo 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 p~ossimo clock venga effettuato il fetch della relativa routine di servizio.
..
.
\
I. ~
I.
.
t,·- ··' : .' .'~' \",: .-,
"V" ': .
, ~~<;:>
·
'
Per traeciare la logica di controllo delle eccezioni (si vedano gli Esercizi 6.14, 6.15 e 6.16) Occ?rre quindi prevedere:
,..,.,.,,'
-', .... ~ , ,
.:
~ • ';,~':>, .. --<." ,:'-
f ·1:~··?'· ~ ':", _. , _. " ...' .
,
.'
" ~~'.;;' ..-.,.,
; ,~~'<
;~ ..,-i,~>::/, j" ' . i ,.-- .' '.~
a) un arbitro di priorita che selezioni l'eccezione prioritaria in caso di' contempora. neitaj
e
b) un contatore che tenga traccia di dove si 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) ;
. .;:,:·i
.-:; .'" , ... ,..
~
.,
I.. ;-
.'j."
~j ..~.'.,
;"
..
c) Ia logica per propagare PCl.
:) .~;.
": ,.. .
~'
~,
'.>
>.~",'
:·~i< ... , \
" ..-,'N; ....'t~,.. ,;' ~ ..: '."'
'
I. I. •
l. -
i 0; ..
1;; .• ',"'
"
1
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.
~~ii
0
t.ll1t
,
I
278
Ir~!:/
, ,Li
Capitola 6
"lr "
~.f
, t,)
...;, ~ ;:
.
m/D
~/m
\
LB iii
SUB
II
.. "',
, "l:'
LV
II
'· ...~.;'I!L ..' ~ · ",:t<~ "',"
"1'1l
EX/"
""".,
,'• ...""\Ik,' <;~:J T~'','
ADD
"h~. 'l
II HUL
:.),
':"
'.
• ""
·;",~...~' ...... I..
..' ,
::.~!~ .;'
, ld~.
,)
"I"
m;",
tXjla
SUB
:',...."lrW '.:~':r~ ,:":. :
"1'1l
LV
.....:,\~ ",
;'."WjlIj ,:1
"'~. ~".~t:-'~' · ...f.f .•
ADD
.~~.
I
I
("I,) ':"0;.
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'eccezione 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 e indicato tratteggia.ndo l'intera 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.)
I I
I
I II
1
.....'1·., ." !
". ~',",l~J' ~~''''~Il-.''
';.:t~t '., " "::'?:!'I. ~.~ '··~)h
'.~ ..tj:... \~
. ".i~!'ij Ij; .... ~ 'I
..,,,.
\:
",
....'- \,
,
v' 'J'
,
'···,:.-'tj,·1 "~
":Wj'lr ' ",,'jl,.!
' ..r~
" '• ."
"-"'l"..-.il .. J
'·7~'I;.li '.' .".....;1 ~r.J;. ,"'
· '0{' •• r " "
',' ;;'Ir
",.,'
..
· ":"'~f. '
,..':lilll ,
6.14.1 Eccezioni e interruzioni esterne
I
',.
:,,;~.!~, ',:-:
1
f
";.!~'"',;,
,'.
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 programmatore 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 esplicita3\ con cio consentendo di nuovo it lore manifestarsi. L'esecuzione di RFI deve in questo caso essere preceduta da!· ripristino del contenuto di R30ss . Al Paragrafo 6.13.2 si era fatta I'ipotesi ebe Ie interruzioni esterne venissero rilevate (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 servizio delle prime, non pili consentito avviare 1a routine di servizio delle interruzioni esterne in IF. Infatti se cio accadesse e Sl verificasse, a un clock successivo, un'eccezione 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
"t~!j:it ~~
*" ..
•
• t
1 .',."j. ~f "' '~J;J ' ,,'Q,'j "~ "'.- ;;: -
• '':''<;,. ' " ';,~ .
'IS
':'!:: ':,.' 1'1 "l' il"fI',i. ,'"
·,~.~''' n :"
'"~.
.;'"ii:\ :. ";' l· ..
' ,.
-'"
"i' :f
• "~. .. 'I"'l .. ~ '; "'>;.l1il·~ .',iZ':i" ." ' ~r., ".
,
r'
'..... '~~:)I :~ ' III. : "1'.Jj. ,'
'';::!J~: ~l
''':u.! !:
.-"f;;os '~ ..'~:J;:b ~; '
'f
noetro repenorio noD prevede una tale istruzione, rna non e'e rnacchina reale che non ne sia dotata.. 35 Alternativamente 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.
....."".,
"11 OO:'~ ".'
,',,,,,~ ": · ''!t\Il:' ~.
·'}h;~ ..... ": "~'\ -"
.,
'. ·"f, I' ":
i"l"
~~ .
·
,,~~
'r·'~·I" '. ""' :1"''.:'1 ,
e
34n
~
,'~~~~ {,
..j:. ,.~ •
··'.t·".. " ~
•. ~t1"
.
"'f'I,' "···I t •
.
';'~'::-il~~1 ; "/' '<;'1
,::-r:~:'I '. •• I ';"'~
,~;P~. [....,.;0,. · : ~'.\ " ~ 'f!',. '(N~J1
, 'i\.' , ''l-~!
":'"
~,It',•.. (is;~ ·
,k~Q~;; ; ;;:~:QI
-.. ,Ii, "'M;~1l ,~~
....
,
iJ:
t!!'.'"
:/:
La. pipeline
il,1 ",I
279
f
' ,.,
~~'"
:/
'.!
,"
,.
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'eecezione in qua!siasi stadio, l'interruzione esterna cede i1 passo a quest'ultima, per via della minor priorita.36 .
~, '", ,
"
l'~ j
., '.
.'
,
:.,.'
, I •..
~', "
.,•' ',' .".
,; .•"
..,
6.15 Esercizi
-:-;r,.'
•• ,
. 'I
''"
c,
",',::. '", .
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 e la frequenza (massima) di clock per il caso con la pipeline? Qual e il guadagno massimo teorico che si ottiene con la pipeline?
~,l'
~~., .
;!'. '.
:./. .• , ,~, 1 '
"
~"?
'. " !,.
~,
.. ,
J .•• ,
'~'~' '" ". "'A, ". " ' J•, r;.',. ",.. ")":
~ •l':'
j
"..
f"
~f,
.
..
',
-', """"'. .'0;..;0.,
:::",(.;" '' . """',, l'1'.... "'.i. "' """,., 'j
,.~,. .i,'~' , ) .,.... ~.
~':.;.
,,~.~.
f'~'\''-' . "' .• ~,...r" ... ~r"t",.. · . h."
....
I'
'I
." ..'
~:\~\':'t : "'.,'"
',."
l.~t,.'~~"
::..,,__
~'~~';'4'
,;,f;;"/ .... ..
.. :'\, ,
':'~~
":1'-,"':''.'.. ". :~:.~';:,. -".
"
,
.
:"~~'-:"'"
., .1,.
"Y'
.7i;;}.,~ .. ' .. 'i '.
"_!>. ',., -'1' ,t\..
,".'0'.••..:,
•..., ••
.,
.~,',
.. ,
'.,. ' •. '',
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.
A:
LD ST
Rl,100(R2) 200(R3) .Rl
B,
LD ST
arehi~
Rl,100(R2) 200(Rl),R3
Si supponga che 1a macchina non disponga di alcun aceorgimento per evitare Ie condizioni 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, e possibile 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 U by-pass). Esercizio 6.3 Si supponga che la macchina possegga l'unita. di by-pass e si consideri 180 sequenza di istruzioni '
LD ADD
RG, 40(R2) R3, RG, Rl
;":,:~",:". .,;
"
I.,:> ',. _ • ~"1",
'\"','.. ' : ...." •• -:;,
.
..;' ..,
"~I
"',
,\ "" "'. .
· •.',l~',';~ . ;~,*r~:;; ", ~"
. ,~ :s.~~,
~lf<. ,..... fli1
.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).
280
Capitolo 6
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. Esercizio 6.4 Si consideri 1a sequenza di istruzioni che scambia il contenuto di due parole di memoria:
LD LD ST ST
R5, 0(R2) R6, 4(R2) 0(R2) , R6 4(R2), RS
;RS,= M[R2) ;R6,= M[R2+4) ;M[R2) := R6 ;M[R2+4) := RS
.
, • .;•.>
,.;"
•," '~ij
·I
.. I'
··,t7
. ":l":)~; .. .- 2
"/1
.'·;iJ
.-,~ ,:~~j~
...';~1;,'
.'/:. .,,~• ...,. '".'it .,.
'''
.. ~'I\
..... ,.. "'l .' ,.
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 pipel~ne a 5 stadi, si assuma che Ie istruzioni di saIto eondizionato siano del tipo Jc OFFSET, dove OFFSET ~ 10 seostamento rispetto al PC. La condizione (indicata genericamente con c .nel codice simbolico del saito) e determinata 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 e necessario memorizzare la condizione c all'uscita deU'ALU? 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:
LD LD ADD ADD JMP
Rl, 220 R2, 100 R3, Ri, R2 R4, R3, Rl qUALCHE]ARTE
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.
.:.,.~;'; .,'.'.~
'':! •. ..,'..
'!,,,"
'~'
: ~~':
'-:'\
.. i-1~j j""
.•:.:.
.;-":'"
,;.I!
"'-~' .. ~
'.,:.,. f ... ,.~~ ~"H
",8.1 .".
(r'l'
,
": "'~l
~
.•/ ol, t
.. :'~
' , ;.'~
~'7
~l~
:.·
,
'r
:~~. :
--"1'1,I.~
.
.
'}~
.,' .
';'I
\;,
.',
::,.·
",X
,.
"~''
.
·"
.
-"
J ,,
.:,:i
'" .,
-
.
,
} La pipeline
281
1 .. Esercizio 6.8 Facendo riferimento alta Figura6.49 si verifichi che in IF IID.PCI si trova l'indirizzo dell'istruzione che verra ripresa al termine del trattamento dell'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.
•
.' ,"' J j., Il' f ',--!, .
7, \:.;~'.
,
~;!il~ !:~. :~ . 2 ) ~"=.,':
1"'-"
J" ~ .,.'-" ',:.
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 petrebhe esserci un'istruzione di saito cbe sta modificando PC). Quale tra ID ed EX inutilizzabile per trattare l'interruzione?
..
~~' '; "~""
,
'~" ... '." ""'" . ',! :';,:", •. ,'. ,",~',. .tt, ffi" ,, . .
.''t
e
"".. ..
.
~, lji' _I, >',~."
;'t~~ "~':", , ':.L·,,'
'!..>"'-'. ..!n"":.. "". ~".,.'" '" : ...
"'"~
:}1 ~:t5: ('. :l~,..~·,.
j-~~1 .,'
""':,. -
:.". 1·',1,·>:". "":~"
.....
I!., ; ;~':, __'.\,:
~". " , ....... '. : , ~,
.",
..
. ,."\ : ... ' . , . , , ' , •• ~: c.>,.:,: J Hi!W' r'l.(" ~'-!,," ,
•..,...... 'kJ-""',,·
~
&
'Ji'
:~I"""" lll ':> ,:~ .. , '
. .. '. t~J.;~ .' )~I": :;.~.~~; ~', -,. ',£11 .. _ ,. ,~~~~ ~"''1 .... 1." '. "'." .. ' . ,('
~:~ . L,Ot;,
7'f;"
.':
•
, .. \ ·,'l~r. y.:~: "
~'l'
,t-~'i~~,"'_'
r6~!?f ,c '>::,;".:,
:~: ;~! ':}:k\' .: .,"~;':' i
-~.1,
Po,''~'''''''''''' ,,,", ....,,, . .,,~
... ',.
.:~ ~;: ..;',
~'"
:~1+>;'~
. ~L; , '!i\::';.:~,
IQ:l, .::.:; :. '.'
,";-~!.. 't := ,; ,U'1~/I ".,'~'.,.'
,rtr,,~.;el'<' .~, ·.. ·to, " "".
X){
Esercizio 6.12 Si faceia l'ipotesi di avere 130 tabella TABffi in memoria MI. Mantenendo 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.
1.
\
-
"',"
'
.-··it~,,~,
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 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.
un
Esercizio 6.15 In riferimento al modello eli tratt~ento 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) .
''"';:ili ,:"-,:. ;.
"C' ., • ··fJI~ ": "
. "~,"
"I,·i" ,." .'-..
'.
".I.r,,<.' .', '
J~~ ::':;'\" ,:;~~;:., ':<":'::" 01);, I·"'.,'..
:-rt,"'; :~'::::~' i ...' ,.:.j ".
"\i .:", ."..... ':"j, . ,. 'h:, :.~ " I," r. ' .~
.., .j".' .. -: ,,;,~ ,'~'~ ... !.Ii. ,~;
,"
,ll~'",: ·c::;c~>.
.... .. ':I,"l;;.,i:"". .~"
,
,
' ,',. , .
:(.,~., ".'.!" ,,;
, '~'Q\I
~::'~
\ -
\
1I
..
;.•
~"
Esercizio 6.11 Facendo riferimento aBo schema di Figura6.49 si supponga ora di rinunciare all'impiego di 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.
sa
,(\P~-'" •
-
,
-
" ' .•.
\i 11 ";.'~' .. ' ','
1.
)
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 eccezioni 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 riconoscimento di un'interruzione esterna. Verificare se questa situazione fa perdere 1a
I\-
1-
-
1-
-
II-
~I
282
I
'I",., "· ~'~{ .. ,. .~ ,.,) " t W ,,' :,~
~!iJ}:
Capitola 6
r...
I"
!,c,i~
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).
I
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:
,
I
./.
'"
' J"
,.,
~,.....,t' .
i~i~ ~«(.'~ ",1,?~J: "." ..,.....
~
.?~.'b
;:"-",,c
'", ~.
.!,~' '
"1_
....
.~k
~.
..
--
, :(~
o
';,'I.··~jl'··I,",~W.l;;·;·'''
, "'"1"-,0
IU: 1; MDl: 2; FU: 2; MDF: 3;
l
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:
(
,
....
.'".hc:n,( ,},",:x . ;:f" J.,
)
I
;.'
'~~~il.~ '"jl\:;: . !1'~" '.~ {' v Yi;~' ;.';;".1 ....'
I I
1':.
.' ,\W~ll' ~.;
, ~?; ·~iwrl~"~r~!\ ~"~" -.' ~ ,.,:rt' 1,,, :~(1 .....:,.1"' ', ".'-·' "."i:\ ,.,.
....
..,.", .. ;'t'l:l·
,
~
~",,
::-:.:>
': ~~r:v~ll:~~k)~t" ~';t:>
..
t~
·:·J;!ibt!,-..'"·,' .,,:.~~ ,.. -}.
·.•.·""1 ".;.~:i;..~, ,r.', ....'.
· ..
~.',
'~':Io).' .;'.~. .... ,~..,,;,,~ I ,.,' "",, ; ,I"; ':,' ", .,'+
..
,",'
.:;~.\ . ,. ."" ·~"'<1"\\! :::i,'..: " . • I.~ ", I
ADD LD
R3. Rl, R2 R4, 100 (Rl)
;Somma tra interi
MUL ADDF OIVF
R5, R3, R4 F4. F5, F6· Fl. F8, F9
;Moltiplicazione tra interi ;Somma tra floating jDivisione tra floating
I~" ••
.. A. • "",~ >i/o{ ~:"
;
,. ~ .,.,.,. _,,., ,.".c ,.::
....'>1":....
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 accorgimenta 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).
("f'!.'. . < '~
,
:j::;.~{t:,~,!-:I
· ;It' ' . ~ .".~~~I::!l;! ,';i,,". ,:'l.'"''~.''''' ~"",. ~, ..
,:.j.r~~;:
,~'lli"
";.' " ",,~., · ':~'~ ':;:~ )·7\;:>1.
·~l~·i~~£
.>-... ·...----i:;~; ;;i.~,
,.,.,,,,,:~t?', ., . "0·'.1 c. , ~
..• o·:"h
... '" {i~~i
,. f',fI,:;l<' rJlf. '1'i ~;1f ,. I., "' .... ,.-,
. "a ,@,'~f, .
·· ?l.'l".;'~...~>«.. "
",."
~i
~.,
"" ,..~ ~.,~>'t,::s!'
);~;r~!< ~'Oil'l.~,
I
~ y.! '
. I [U
"'-
· · ..~.·h l>~
-I '
,'. ':",tig~''fl' :~,. ~~l:,-;':
'.,I"'~~ ".~., .•. ,;,. "'7~'" ,.:to
~',I',.1 '".' ~~ .... ' ~ ;j .
I
MDI
•
ID
ME
1,18
FU
""
~ . . .t.. ,
,
IF
':1
,.~.;;:::c:., ....• :;I',
, ~'" .,,1-'·5·,,,'.''. .,:;"l~j;..",:,j '.!..~ ,., .,. ~ ,.
... · >~.,"(. ,:."." .. \"~.,
"
.~. '."'_'f;it .
, ~'W''''~'' ""i~j:':-,.,
\
"."'" ':'~;;' ......."'~..,.~
I MDF
,;~:~~.~:::':'
-I
'.('I.~'I.' ~
.J ·'".'1".' i,,,,,-Ji' " ,r· ''''~I''''' ..l·-'$~··· ,..,' .
Figura 6.52 Schema. della pipeline multifunzionale dell'Esercizio 6.18.
,....
I .1
I"
".,' .. ··"tJ',
t;".,q ."
c":i~".' ',.
..' ",,~.,. .:, ,.:..., ~
~ ~. ., .
"' ".,:;11 T:f; ,," 'X'':". '. '.1
, '1"'I'~"
.'" ,._, ,
,
~
'!'~
'lll'" '/~
,
\
Ir ,.',,: .,"
{",
.
).'
tW.·'
~.'.,:.
..•
..
~-{'
;
:~('
....; -,
7
~
"t·" '.' .',
~/ ,
~;.::
:;' '..
.. .
~ ",
La memoria cache
b
',,",!, '.:.... '
,.:...
',
,
:':;' ,~, .
': ':,
.1,'. '
-,"'" '. ''· ,
0,.,
. <
,'.
;~"
\,::·. "~ . ~.,..,:.
..... \"·~ .
,'
>':-'.'
"t.:· ;;.., '.. " ''lfl: .~. ., .. '
',: .. ...~,,' , ..
,
{
',
.. "v.{ . I:', "
"'" +, • "·
""x' .: ",' •
, "",.,'j\
....
~.\
'
~~.\
' .'
:' cy.·
I.n' •. .T•.
!:r~ :.,
...!.",~. ~.,~, ..
:'~~:.'
",., ." ~'-~ ,:
.,);J""'"
.. £~J·' I~,¥
,··\1 .',';
.
1'-,· ,., " .' .,'
hl •
i:~~.
ffi'-'
i//"'··:··· -"
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 e da 20 a 1000 volte piu piccola della memoria centrale, rna e anche 5-20 volte piu veloce. Se ben progettata la cache rencle apparente alia CPU una memoria della dimensione 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 velocita di questa rappresenta illimite superiore teorico at miglior~eDto delle prestazioni deUa memoria. La tecnica deUe memorie cache e nata negli anni '60. n primo sistema a presentare una memoria cache fu 11 modello 360/85 introdotto dall'IBM nel 1969. Progresslvamente, can l'avvento di microprocessori sempre piu veioci, la tecnica e arrivata 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 .
,'4·; -,
,~'H :: ",i!'
i-'
«~ , ,,'.
'jl"
7.1 Funzionamento della memoria cache
"
<;J".
I
1'· ••.
,,\,,:
"".
,..~., -C".:
','• .,"...,.-.
;;" i"' ' :"~·
• .•
Spendiamo due parole per spiegare il criterio generate di funzionamento della cache, riferendoci a una operazione di lettura in memoria2 . Un'operazione di lettura si svolge nel modo seguente.
." ('/'
o •U".
';, .., '''
j. , .
1. La CPU genera l'iD:dirizzo I e iI comando di lettura.
,.:'" . . '" ,~".,,
2. Se it dato alPindirizzo T ,di memoria centrale non caso di miss e necessario:'
.,"
.'.' ~,.,' j, ~"l
"t..:;, ...
." •
'(' ,"'.,>
;'i. ",,
~
..
. '•..• ,',
·'j
.. .,
q··· .
.~l'
,,'i'
.'<~' ,.1'
"~'" ' . .
11"'''','. ':l.,~. ~,." "" ~' 1: 1 •
"~••,i.·. '~- ,
ha un miss. In
• leggere il dato dalla memoria principale;
':.:.: ' ~ '. J,..:.'
r·'''-'·'" ,.
e in cache si
1
Ii 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.
,
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
e in 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 'organizzazione 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 descrizione 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 memoria 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 l'unita di informazione trasferita tra memoria principale e cache. Ovviamente la linea viene trasferita in blocco3 , 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 ;~~~:So~l~o~e~se~pre nella stessa .pas;z;one di cache; sj parla allora di cgdie a ~atura 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 ~anizzazionedetta associativa a pill vieS ,
e
;
Nella parte che segue assumeremo tendenzialmente di avere a che fare con una moderna 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 il caso di lettura/scrittura di un dato, in quanto possibile che it
e •
e
3Questa tecnica. viene detta. trasferimento in modo bUf.Jt. 4Sem bra 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. ~VieDe 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
i!i~ : -~l"
''Ii ' ... .. <
~j;~1;Jt!~
La memoria- cache
I.:';:/~"l'; ,
285
I
J' . , ,i.'-:~'~"7·'-· I,,~t;:;~~:: ",,~Yl;'
.
,· '. .'. ~"."'
irS-i>' .-
I
'-
" ."
"'.' .,'-,-.;. ,-",. , .' ~
j"
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 interesse7 , 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
• una memoria centrale della dimensione di B = 2b blocchi, multipla della dimensione 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 Figura 7.3 facile ,piegare it meccanismo della mappatura duetta:
e
7r
I I .
\
= 21 lineej
• linee di W = 2w parole, ovvero una capacita. di cache pari a C = L x W parole;
-
1
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
I. •
I
I If
-
I. f . •
i.
.
'S6
,I
.
Capitola 7
,
=til , JL
~
,.
~,
-
-'"-1
I
•
n'
'0 ~jy)
~
·"
~? .. J)CC D
,~
•
'l
'IA.. . . J.,Q... ~JJ.. ~"'r:, ., ,
...
MEMORIA
"r~. -;;L,..,. ~ ~
-
- ,,;)
,
, ;~::'" L'J
I inea k
•,
I
·'I "'i"
.,~.I
~1
.
.
..;\,.;'
)
Il!,c
:t,W~
I?:'~'li ~:
BloC'CO 0
...
~~ '
I~''!';
I
I
'·'I" ;)u!'
CACHE
,
\
.
;,~~
UUClI k
\
Ii.~ rf9t \':'fi.
Linea k
i1$~ .,.,;:
810""0 I
,;',;.
I
"
\
1j;\ ''
'1o"
Linn k
;
-
"~I' ., ~"
,
".. i
'~",
I'~•
I:~L
Bloceo 2
,l
" •
I
\
I~~ -~~,
.}
\1
h~r
'~~I
Unea k
'I
I
)
.
eloccc n- 1
1,~it~, '~~
. ...a '"".,,,
,lJ~o'
,'t1 ,~
,~\
~!I ", .~"
.
""~I' " ':'~~~i!.'l:l\' ~r
,.'
,'.: ~'lil'.~t\
,~,
~;,f:" " ~,'~
}li
i
~.
dell'inditizzo permette di identificare la posizione della linea in DATA e in TAG RAM,
• n contenuto di questa posizione della TAG
• 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.
I \
• 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 disasserita 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 pen a 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
';/i
'7
,~
:"'f!
~"':,l·- ~ ... "
'~"
. ,,. ,,\~ t.!t .. ,f".~
RAM viene confrontato con il campo
IB dell'indirizzo.
'
.",'
'::< m:, ,
• n campo h
..
~
'f'
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
,
;" 'ti:~"/,!I!" :'l ....... ..." ,'"\' '""~' " '"'' \l "'~
~,.
,
''l
,.:.}"l\
",:b ...~ ..,,,",'" ' .< ~ .. ::f'::i~ ~
'.. ;;~~~ '"
.,.~~, ¥ ,:",~,l., '(J
. "",I.;~
r !;"'
"
'!::i;lIFt! -.
'~I!,~1 ::
. "" ,
:3!~';j' { ';qt'flJ ' .'-' ~\l. . .t.~j~" ': ';::"~'
.. "l
-; "." 1'.
; ."
j
- :."j:i(~" ,,' .."'~ '
·,·'·~i;;
.•
..
-
l";.~
~,-r1')
~~.
."",\1
"
.\..~.~. '
""','., ,,',-,,' "".'" ',1:,;'" ".
."" , .>,:~: .- ...~'l'i.-, ",,'~
:i-~'''''
, ..t~.
· :"j'"
-:f~ ('l
'i " "~ ' "_ :;-· '.,...1!1·.~
•• "~,'''
·"~l" "iT"'
· .' ',",'i', ',·.r~~ -:''Ji.''~~
.or.. .'
,:,.~,~: .
, .. ':;l~ ''I ',Ii ~
\
-,,". ' {?j,!'"
~~;;';'" .;g~~~;:,,:
..
~~~~,,:,
·""".,.,., .•..
."
• ~.;;;J ..
'l
'
_
, 1,f"., ;:(i"" , " ':~).,
La memoria. cache
287
1
,,~,~
~';;;:"'!,
,
~;~
'··..·
I"
Indiri~~o
'
dal pro"usore
IL
IB
1.L ,:"
.. ~"
"·i':",.
~..... l;jt' , '
DATA RAM
TAO RAM
~~~':
i'';
--------
'~M"':
:(t·, ., ;;':' .;
"~,r" ),","..
~:ft
"I
I
,
t~I" i.d"!; ~,.,."
. ..
~"~; ::'
,
~
:,.,;-, .. "
.\:.";--'
•
'1r. . ·" , ",','
"'ofI>,"'"....,' "
;~~
hit \ OE
,~~.
''','' "nd" .
COMPARAT,
J ,~
SEL
/
• tiP"" ~." • . .,..:1'
~L~t",.
I
~~ri ,\, ',e,. ,
T
mr;s
}~i~~"i
" Ij.J;:;:': "'"-"':, ;y.' ~.".t..,·"
r~c.
.
'~~~,:";;' .:", .
BUS DATI
•
,v
~~~j,'
Figura 1.3 Cache a mappat.ura diret.ta
1'J,,:,' ' It;"*:,,, '.,
~~~.,
,j.,. ",,", . ."",, .'
r,l;:< '
,r::::'"
';:j;i
i!"
'
;II,,~'
io'll'''it"
7f."'~'~'
~~1!f.;','
....
"~'ir:""~'"
" "J'" ' ~li)~ ~l ..' '
l;j~if;;:,""
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.
..
'~'i'· . ,. --,
"\',.,, ~'"'';' .•'
l~'''• .-''':
.
~~'''''''
<:1>"" , .
~i~',,'
"/i,~;":"
¥t~~:,
7.1.2 Cache completamente associativa
;~;'~i'"
''.t~..... ""T~' ,,~
-:.... 1~"
:(f/."·' : ,,,;t. .. {'~~,OI':'
'";~.,;.,:~ ,. .>;I~,). :':':i'L," ;o,.,p<.'- _-' ."'" ",:'."
j-'i'j;,-", ,
1;:&' ';-')l ". -;"';".. ~... "'
)"';"
",""
' ":"',
'-/~f·
,.~ ~,. ...I'
.. '~., "......,
"'''-'' ,(("....
";';'.''it '
.;..",:.1. .... )">
".~
~""~
..
.' ".,.'"
.' .. ',,",. _d,_" ': ,.", .(
'J<'''-'!' :\C? ,... ~,Ii, "t'·· • "'~':"
·~~:c.i,,· ,~",.
. J~~~'~" :~l.;cJ
~ ,...'Ii... "
,
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 comporta 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 memorizzato 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 presente viene con it contenuto di ciascuna locazione della TAG RAM. Se il Ix 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
e
288
Capitolo 7
Indirizzo del processore
t
,
l
w
IX
1W
Y
l
o)
o '"
l-
I
I
/
, •
TAG RAM
,"
DATA
n
,
--
0 0
•
•
RAM
I
~
n
> ~ 0
'" ~
l
L- 1
I /
:...
,
IrL-11,"
-
-Read hlt/m!ss
n'
"J
.
. 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 conc1usa 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.
e
7.1.3, Cache...Earzialmente associat.iva_ ~
,
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 ~evono 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. ••
~
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.
La memoria cache
\
289
•
I
La cache completamente associativa ha un grado di associativita. pari al numero di linE.~e di cache. Se il grado di associativita. n si parla di memoria cache a n vie9 In Figura 7.5 viene mostrato il diagramma a blocchi di ·una cache 3Ssociativa a due vie. Si noti che, come nel c..o
e
.I
I-
In.dirino d.l IIroeUlore
,I
I
1B
I L ' l l...
-1
I
l
OAr... R.Ol.
T"C RAW
-----
\
1COMPAR.
hitO
or SEt.
~".
COMPAR.
,E
sn
"BUS DATI
,
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. • Con una memoria cache associativa a due vie, ciascuna linea della memoria principale 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'influenza dell'organizzazione della cache sulle prestazioni si parla pili diffusamente piu avanti (CIr. 7.3).
7.1.4 II problema della scrittura Una operazione di scrittura pub determinare un hit operazione di lettura. gIl termine anglosasaone
e tl-way Jet associatitle
cache.
0
un miss esattamente come una
\ J
I'\-
I-
I. I.
l1i
290
ifg
Capitola 7
~'fu ';\'J
,~i"li i.l!~!Y.. '. ,\I&i
-
~
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.
~
I /
•
La tecnica write non-allocate viene spesso preferita. preferenza ci sana Ie seguenti fagiani.
A giustificazione della
• Le operazioni di scrittura si verificano con frequenza molta
'trf~: ;b~:
-)V;
t;;. ,.,. ""'.
:';\'1;"
I,' ,,·.r,! ·r I r
,~,
'~.,)
'I., •
.. ... \.".'3'
,'''''' ""'.:
~,
'~)~~'
'., .. '
:~~ t:~.:: ~ '.1; '-~J'i ':ii,;
....
..,t.., , '1 1 '.'
~!p.
, .,
:.-, ".-',
:"~i"l( ~';"",\!i
:. ;J_t.,
piu
ba.'3sa rispetto alle operazioni eli lettura. Un semplice conto e sufficiente a spiegare questa affermazione. Ipotiziamo che il profilo eli esecuzione del nostro programma sia mediamente composto da:
.~
....
• ,"":"" .: ,.",' ..1 '~.I(' .~,"~. ," ,
"'00::, '"
"I"'
·:~~:
, ."!
1~j;
.. :~ t ~,: •.
·~i~~j ~~I,<
::"~'?~ rf~\
o un'istruzione di lettura di un data in un registro;
.
1,1';·11
I
o una operazione tra registri;
/:),~ '::t, : t~~1 ;~':\
:.~,·t~~ .:/?.
" ;"\il' \ ,
·.7.*' 'j.'
o la scrittura del contenuto di un registro in memoria.
..{~~:-j,~
- \":'I>'l )'~.'"
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.
(
I \
• 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.
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
~be 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 ~ossibili mo9i ..per tra.tta.rt~·-questo,aspetto: la scrittura immediata (write.through) e la scrittw:a-a:2.§teriori 0 difIerita ¥Jrite:'baCk c'-copy· back. -
•
I \
I,
I
-
.:?;:i~~ ,;\;y .'
':;~f~~l t;,;; ,.j~'\' J'
'."'~~ \, ',"
""'·"'1 ,·I". -.,
'.,~..
C' ~~\ •• '.".1; .,' ,~:
'>·ff' ·:·'
;j~~~(j\
....-(.:~,. .4~ ~I'< ,..","\" '.r"
.'.<1'~'.\
, Ii· · ··~~li" .' ,',," :~t:'i.l :::...
,:i!:~"I'" i:
, ,':':"t!::,;'· ,,:,,"~ " "'~'
· ·
'.,,:,~
' ..,
:"'i~
"'i~.J;
.• ,,;:~, · "'0")'.' · '.>"'
... ..,I.e '.'
"t'.' . '. ',.
~'~
J"~:t~ :~.\ :o~·'"
:...~
.,;!>! .... ' ."i
,:.> '.. .;;" "." ., :;.-"t, ".;, :~~~,~'
,.(,.';;!. ,.,,
' . .'~;
"
l·· .... :. ~
.,;:!ti ':
· , ·"i ".,
ScrjUul'a immediata l).Itte Ie scritture che aggiornano la cache vengono effettuate
·,·"'" I ..
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.
•, '·1· .,., ....:.'
Per alleviare questo inconveniente molte architetture prevedono un buffer in serittura 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 processore puo procedere oltre. Purtroppo il buffer e efficace solo nel caso di scritture isolate, che consentano 10 svuotamento del buffer nei tempi che intercorropo .... medi~eIitEt- 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 'l:t " 1'0, .., .~
"":.\
...,
• :Z..;. •
·
t
.<
. ,' ' . :i.'IJ~ ;J.
,"<~\~ '.~ ,
'~~l .:
· ,:,y. ,.
:..~.;~~;'; ;;
"~.;,
. ".J' " ,.:>11;, .. -":l:!ll1 ~
· ...';.A"
, ," i5r~.f~' . rti/'",~
,~
gtl~~,;t,~· ,..
u"i~1.:~~:·' : La memoria cache 291 Jl'~""': :....._---------------------------...:=..:::::===:::='-~--
i~il)?\A' _. i~;\,(' '.'": .
-
.,,:.ti,'
-~':il " ".",,,." >•
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.
11;.;1; _
:-~~·· :l ..,',
;"~."d·
..
.~p"
,,
,.
,,'''' .".",
" ;:. ,,;:,'
-!'"' .' .
r.,"
",
! .', '....
';...
,
•. ,'",
'~.
'
,,.,, .. '
:~:;· :.':: ;'-'
;-','::: .•;' .
,
.
,
,·,·,'i.,· ,1' ' ..
.. ,,,,_.,
1.."1.
,.-
,,; .",1
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 indicate nei sistemi a multiprocessori con bus condiviso.
e
,.~,.
" I I:" '
;)'\.'" Scrittura differita In questa caso
.:;J'v:.
<:,;:.:.:". . \~'. :':
,;·,::"..
\:.~.<-;''''
.:..\ 1.
,,' ,
'.,:~::."
~':'.!
" .'•.
y:;:,:.:,.:.
;:"\·:::'.' ..,. ,,' .~, ..",'.,. ,',' '.,
e previsto ~ol~anto l'a
'ornamento della 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 cosidd.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 corrispondente posizione in memoria di sistema. Se 1a linea non e marcata come modificata, il controllore di cache passa direttamente aI caricamento della linea da memoria centrale, Questa tecnica ha i1 vantaggio di permettere qualunque numero di acCesSl m scrittura alIa cache senza ritardare il processore e senza generare traffico sui bus.
" ",'I'"
•••. ,
, ..
:...
':';i' ..
\:.'. I""
<. -joJ.,
~
.}.".;
~'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 te~nica comune consiste nel tenere setto controllo il traffico suI bus di sistema e invalidare ogni linea della cache che stata aggiornata da dispositivi eli I/O, Tale tecnica detta bus snooping 0 tecnica snoopy 10. Di essa si parla nel Paragrafo 7.5,2.
e
e
e,.. :
',.~, .' ' .,.,,' .
~ •.'.'"
\;~1: .
~._
. ",',
i"). ;.,
>.,'.. .',, ".' "".,.'., ,.'" " ,:,'
.....'.
:. •
'
",·:
..,--... ;
"
"" ;'.
< .'-
..
~
,
.:~-':.-
~:~::>,;:. '
:,.•;, ,
., --'.
;':if- ::"1
,,
.. ,
"'.,' .. 'F'. _'R· ~; .:'-:"
7.1.5 La stato della linea di cache Al paragrafo precedente si e osservato che in caso di scrittura differita si pone il problema 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 particolare tecnica di gestione della cache, rna essa non e 1a 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 significato. 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 lOLetteralrnente, it verbo to .snoop significa ficcare la dizione anglosassone.
il
naso (negli affari aJtrui), Preferiamo tenere
r11
_\:
Capitola 7
292
'.
~!!J'
;;~ r.-' '
'1'
,:~
~nea non ~a1ida~. n ~aricamento di unaY~ea dall~ memoria centrale cleve deterrninare ':~~I ;~~ tl passagglO dell mdlcatore allo stato dl linea vallda ''''~ ll
t I d ' - Ii' .' . . . ' ."m*l "".:.. . uran ~, a p:esenza 1 una nea In cache 81 pub determmare una sltuazlOne di
un trasfen~ento.III memon~ modific~do II contenuto di posizioni corrente.mente in .:~~\~ ,:< :ache. Le .lm~e dt cache corns~ondentl devo.n~ essere invalidate. La ricerca di un dato ',:;;~ .. : In cache n~lede an~he 130 venfica della valldlta del dato. In altr~ ~arole, non basta ~'1~~ :·L confro~tare ~l TA~l 11 ~onfronto deve anche tenere .conto d.ella ~ahdltA della linea. ·.:J~im : I st~teID.l multlt.as~g p:es 7ntano ~n altro ~otlvO per mvalldare Ie linee di cache. ,.~·~r\re, '_ In un sIstema multltas~g 1 differentl procesSl sono in esecuzione in tempi diversi.....:1~i! ; Quando un 'pro~e~so termma 130 sua esecuzione , i1 sistema operativo sceglie un proces- ,,~'l.lW '' so tr~ que1h .attlvl ~ .10 ?~S~ in. esecuzione. Evidentemente, il nuovo processo ha un'· .;.~,\ ~~ pro~no spazlO de?h ~dirlzZl~ di:erso da queUo del proceS50 sostituito. Se il sistema '~'!-J~~ "; g.es.tlsce 130.memona Vlrtuale,. mdipend.entemente. ~a dove eposizionata 1a cache, epos- '\~ffi!~ .' slblle c~e 11 nuo~o processo III ese,cuzlone genen mdirizzi (parzialmente) sovrapposti .' ~.~i~ ~ a:quelli gene~atl da! prece?ente. E d~nque necessario rendere invalide tutte Ie linee '.1Si~ ': di cache. I ~cro~ro:esson con cache IDcorporata prevedone una esplicita istruzione, ,'.~.;I~~f!V' :;', ov~ero una Imea In IDgresso al micro che svolge tale funzione. Si puo evitare di in- ::;~~, .~ val.ldare tut.ta ~a ~ache all'atto della messa in esecuzione di un nuovo processo se tra -. ''-'J.JG'!~ Ie .mfonn~lODl di ~tato si aggiunge, per ogni linea in cache, l'identita del processo .~,~~tt CUI appartlene 130 bnea stessa. In questa caso, 130 ricerc30 in cache di un dato deve . tener cont? dell'apP,~rten~nzadella linea, confrontando 1'identificatore del processo a ~\. ~;~~: :· essa ~50clato ~on 1 IdentI~catore d~1 ?rocesso .in es~uzione. Conseguentemente; un :,~~ ~L ~~bl~e?to dl .contesto ~il p~saggl.o ~ .ese:uzlO~e dl un differente task) non richiede . i~~rr&, ,, I mvahd;l.ZlOne cil alcuna linea; mfattl, 1nfeflmentl generati dal nuovo processo anche . }"~f.~ ·. nell:eventu.alita che producano un indirizzo gia presente nella TAG RAM per 'effetto :;~~t t dell ~ecu~lOne del processo sosp~so, non danno luogo a hit, in quanta non e'e identita . "!~fi! : t.ra ll?enhficatore del proeesso III esecuzione e l'identificatore di appartenenza della : ·1>~· q lmea ill ~ache. U:'l'lgoritmo di. rimpiazzamento delle !inee di cache (Cfr. 7.2) porta ::~·Y\t " automattcamente m ~e Ie lme~ appartenenti allo spazio degli indirizzi del nuevo .,,·.'1~;~ : p~oce.sso, Questa. soluzl0ne ha OVVlamente un rnaggior casto, dovuto aHa memoria ag- :"~~ : gmntlva necessar.la ~ m.emorizzare per ogni linea di cache, l'identificatore del processo ' )~ti~~ 1 che ha generato 11 nfenmento alIa linea stessa. ::':~1¥, ~
:
':tl_>:
,'):".:.7,:,:
\ ,:~~~Z¥. ;
",;~~:}~,
7.2 Algoritmi di rimpiazzamento delle linee di cache
~.':~~<
;.\r.~
".'\'u\. :
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 e stata usata da pili tempo. L'assunzione e che se da malta tempo non viene fatto riferimento a una linea, c1e un1alta probabilita
"v.;',"r.. J''''''!' ;,'1. · ",'I),:,.: . · ",·"r'.·.... ,) .. \,: '~'.~"
,,\,,~
,
''. !'~.~;\,
'I ~;:\t' ·.~EI J"fi1)r
""11':
· .... ~:,;j, :1;'.,.. , ';',
,,~ ';.~~ ,
'"
,.
~,.
,
/1~;:: ,\.
.
:..:~:<': 11 Si
noti cbe linea. invalida. equivale a linea vuota,.
- lS;:,
'..;",,:1,.,
" ~""" ~ ...... '~l.o,~
. 'I.. ",,
,,"'. .
""/','" '
." ,,,,If-,'
.
N:}!., ,_W,,-~ :;>.:'."';11.,
\
1i!il!;;J:I' ':
:l~;'£uh
"
.~~'-!
':~(!J~~::;:'
'~~l'':'' ;' ,-.: ,:.,,-, ';:i:"!"~ • .' ~, j.\?:.~;~
La memoria cache 293 ..=:..:===:.===-_-=-=
---------------
\
~~\tj'5j;"
che si tratti di una linea contenente un pezza di codice 0 dati poco frequentati . d i G '11 algontml . . LRD rIS . u1tano al quanta comp1esSl. dalPesecuzlOoe e programma. e costosi da realizzare.
..,..,.,.... .
.~';\'.(":'
,i-';": . ~.~:.,:,~. , :<,-j ~~. RAND La strategia RAND (Random) rimpiazza in modo casuale. Dati sperimentali
:~:;. . .'
mostrano che Ie prestazioni non degradano eccessivamente. Del resto, una tecnica di questa genere appare 130 meno sensibile' alIa distribuzione dei riferimenti e, in particolare, a programmi aventi comportamenti patologici. L'algoritmo RAND e i1 pili semplice cia realizzare.
L,I-':· .
:,!~>h.'
_."...;..... ' ; :'~~:,".: '
'.~?:'.:'" FIFO La strategia FIFO First-In First-Out assume implicitamente un modelio di ese~~,:.f.:,:'~ : cuzione del programma di natura prettamente sequenziale. Un algoritmo FIFO ;'~I:., e di media complessita realizzativa. ';~~;f;;1 . .. . . . . ... . ~, ~ . '." ~ [HP931. ve~g~no ~orllltI datI sper~~ntali~ulle prestaz.lOID In funzlone delle .~f~
:~;/':;';::
,:',Ii':,<' \,
~;;.>.!,'\
~I-l' ::.'
:;,(. ~
::':'i;; .
·J~~:.;i'I"· Li'.:'f. _.;< ,:'~:,.':-\.
·.n:..'"
t;~t:
fere~tl st:at~gle ~l nrnp~az~ament~ ..QUI dl segul~? ve?-gono.illustrate.alcune POSSlbll~ ·.reahzzaz.lODl de?h algontml. :ruth .51 bas~o sulll.m~lego ~l centator:. n numero del cont~ton comblD.ato can 1a ~unenslOne .del med~lllli. forDlsce una .~ur.a d:lla com~ p,lesslt~ della lOglC~ necessana al~a ?estlOne ~el n,mpI~zamento: 81 fa nfenmento al caso dl. una ~em.ona cache assoclat~~a a. N .vle, di L linee p~r via. . . . Gh a1gontml vengono presentatllO nfenmento alia genenca pOSlZlOne (al genenco set) .di cache che vi.ene indi'o:iduata at:traverso ~l campo di indiriz~o I L · Alla posizione h 51 trovano le N Itnee. cornspo~d~ntl alle N vie .de~a cache. I.e Vle.vengono numerate dl& O.a N - 1. e Ie corn~pon~enh hnee vengono .1~dicat~ corne I? ,It ,... ,IN -1' Q~~do c e blsogno dl mettere In eVldenza anche 130 pOSlZlOne di cache Sl usano due pedlcl: li; i~dica 1a lin~a ~ di via j ..A o.gni ~in.ea 114; e associato il bit di validita indicata can Vi;; 51 hanno qumdl L x N bIt di vahdita .
...
:·~~~r;,
q'f':':,.. .
.
.
...
.
.., .
.
":~~~':;'(;:":' Pnma. dl proc~~ere e necessano. stabillre In ~resenza mlBS ~ pu: lin~e non vab?e alia ::~(.t~\:. . med~lIDa POSlZlone h, quale VIa verra selezlOnat~ per COP1~VI 1a linea ~etta In me:::~'j~.. mona. Ten~to conto che 130 scelta: ,deve es~ere fat~a. dalla: lOgIca .~e1 contr?liore ~ella 13~~;;t,,:: c~he, conv~e~e rendere la sce1~a plu.se':Ilplice ~osslbile. ~sulta plU convemente, lde~ ~::(.::( .tl~care la .V1tt~ma attra~erso una pnontA statlc~.pre.de~ta, assumendo per esemplo :,1:.;<,' " che verra Implegata 130 1mea a se essa e non vahda, 130 hnea 1 se essa e non valida ed \'-::'.':;' e valida 130 a, etc.. In tal modo, 1a scelta si effettua attraverso un semplice arbitro ;:\>!::':' di. prior.i~a. ..Nell~,parte che segue si indica come .via prioritaria.la via pili a sinistra <'>',' (ClOe, dl mdlce pm basso) tra tutte quelle non valtde. l
I \
\
\
\
I ,1
I
~".,V'
:, .' ';,. .
•
' .":'. "
.. ..
7.2.1 Sostituzione a caso
l
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
I
:.'.... ::,',
.,.,c,
'.j' •
-:'·,·, ,- ... "
'
\'. ' , ,;,~
., :"'....
..'.",::' "
."
I.
,'.,
;/\i"r ...
:".:."-
.'. '"
~
.
";.,
. . :~.
:.~ . '., r,. "'.'
',--
,
."
,-,,~,., '
12Nel seguito si assume che i bit di validita abbiano valore 1 per lineo valida e 0 per lineo non valida.
294
Capitolo 7
. t'i
I
•
•
cache. La generazione del numero casuale si basa quindi nel tenere un cantatore, unico per tutta l~ cache, .incre~ent~to .modulo N ogni volta in cui c'e un miss. n contatore m questlOne Vlene mdicato can C. Poiche la sostituzione e a casol non si cleve tenere memoria dei riferimenti prece- . denti. Dunque, in caso d.i hit,' non necessaria fare alcunche. 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). ,
e
Hit: Miss:
I
.'~ ,~!I
'I· -,.
)::1
;~~.I
"411 ]~I
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 pasizioni, il precedente algoritmo sarebbe del tutto casuale. Per il principia di localita. la sostituzione non avviene con processo del tutto casuale.
7.2.2 Rimpiazzamenti con a1goritmi LRU 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.
•
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. 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..
1 "
.I
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.
,
. ]
LUrI 8 h--1 8 hclk
0
v
\........
1
I
La memoria cache
f
-I 8 2 1
I
295
-I 8 3 f-+
YI\-
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 e manifestato 10 hit e rappresentato da j.
Lo schema mostra che al registro So viene presentato in ingresso il nUffiero d'ordine della via che ha determinato hit. Lo stack va aggiornato portando in So il numero di via j su cui si e avuto 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
13
a2
si passa a questa configurazione:
0132
e
La propagazione verso destra controllata 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 e banale. 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 immediate. Pili complicato e tener conto della validita delle !inee. A tale prop08ito si veda PEsercizio 7.8. Metodo dei contatori per linea Un modo per realizz~e la lista consiste neWassociare 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 sequenza di eventi (hit, miss, invalidazioni), con Pausilio della Tabella 7.1. In questa tabella l sulla terza colonna si riportano i 4 contatori, Co, Gl , Cz, 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 e riportato l'evento stesso. Seguiamo l'evoluzione dei 4 contatori a partire d.alla condizione iniziale corrispondente alia riga O. I valori dei contatori della prima riga di Tabella 7.1 indicano che II e la linea cui estato fatto riferimento pili di recente, mentre 12 e quella che ha avuto il riferimento
296
, Capitola 7
-_:I .,' j -'", ,""
"r
Evento condizione iniziale hit sulla linea di via 0 .
0 1
2 3
mISS
5
invalidazione linea di via 1 hit sulla linea di via 0 invalidazione linea di via 3
6
llliSS
4
7 8 9 10
{;o 1 0 1 1 0 0 1
mISS
2 3
mISS mISS
0 1
hit sulla linea di via 2
{;l
{;,
0 1
3 3
2 2 2 2
0 0
0 1
2
2 3 0
1 1 0 1
2 3
~
'1iit Val. 2 1111 2 1111 3 1111 3 1011 3 1011 3 1010 .3 1110 3 1110 0 1111 1 llll 2 1111 G',
"t
'
;
.: '
'. ':'\:;'ll~' "",,
-~>:;}l~.i
).~ ......, ,.
"""~:l , ....,"'.,.
,', ...
Tabella 7.1 Esempio eli politica LRU per una cache a 4 vie. Aguiornamento dei contatori .9~/" 0' ,.' 'I' relativi aile 4 !inee in posizione h. Uevento si manifesta a partire nella coodizione della o.:~~;, 1'. riga precedente rispetto a quella su cui l'eveoto e riportato e determina la condizione della ':~'~:: . . . .:: :?! '.. nga stess.. . '"'' . "~~J,~,"'.' . ':'~" :
.
.
.~.~"
.'"
piiJ lantana nel tempo. L'hit sulla via 0 ha I'effetto di portare a 0 il relatIvo con~atore ':'~':~~r' e a 1 il contatore della via 1, i restanti due contatori restano invariati. A partlre da.,¥.~,\, questa condizione, un miss determina la situazione di riga 2. Come si vede, stata y~,~m. sostituita 1a linea usata meno di recente e tutti i contatori sono stati aggiornati.'.:::"Jjfi'11 L'invalidazione di h e il successivo hit su lo portano alla situazione di riga 4. ,t,. ';1 n suc~es.sivo. miss capi~a quando !e Ii.nee ?elle :rie 1 e 3 sono non va~de. ~on .·;jf 1 l'.ass':lnto dl nmplazzare la linea sulla via dl ordI~e mmore tra: que~le non ~allde., vIen: ~:,~r~ I~ r~mplazzata 12 anch~ se l3 e quella. usata m~no d:t recente, .e SI ottlene 1a sltuazlOne .d~ ~;~.~, fl~a 6. La tabella nporta Ie modlfiche denvantl da un hIt su l2 e da due succeSSlVI .. miss. .'~~r~~~
e
JIfi
Uesarne della sequenza illustrata fornisce Ie seguenti indicazioni. 1. In caso di hit si tratta semplicemente di aggiornare i
• azzerando quest'ultimo contatore.
. .
'.
<;'0.i~
.(';i'I'if
contatori;A;~(~
• incrementando i contatori di valore piu basso di quello della linea su cui si ' h,a 10 h l't'
,
...~~lt~
,,:~'~fj,
"~~~~
'!~IM ,'.....'"
. :!;'\~f
j.~~~! 'j.,'i\Q
' .~,;~~~i
2. In caso dl mISS Ie cose non sana mol to dIVerse. 81 deve pero tener conto della '~~J possibilitil che ci siano una 0 pili linee vuote, Si deve quindi: '..
:;:l1J
• selezionare la prima linea non valida 0) U uaJe aN-I' g 1 bit di validita.
. ,.'; in mancanza , la linea can il contatore !)gt
',1.~t1
.'•.
!~
"..~~~I
':.~
litt' '> " ~'''\.'.
r; ,'••·1-:·" ' ~.',
;'\,..-.("
1
'
.'
\,;~t~~?';·.
I' jj::~·,';i'.
'""...
~ l':h·.(·,:·· ',t'-'~"
•
r,."",,~, ,~ . ",' : -, ., ,.~"" -';;,'" '. ,
La memoria cache
297
-
)
.
"
~.!ft:~<~'·
Vogliamo ora riscrivere Palgoritmo in modo pili rigoroso. Si indichi ~on eli t¢:t·~k.!:': - , OIL N - 1) il generico contatore presQ dalla matrice di "'t"" .... '(I ". I - 1-I i = 01 , , .. , '~{~;}:f'-' ·contatori C! di d.i~ensi.on~ L x .N ~ si. indichi con Vii it generico bit di validita preso ;:·t~~/:y:-.', dalla matnce V dl pan dunenslOlll. Sl ha: ~
.....
,,l!,',", :,'''' ," r
,
'~:~~~~>:'::.'
:r:~/i;.',>·,
Hit:
.!!,:.i'J:.}:, ,,' , l~,.,. ....,~ "
j +- numero di via su cui si verifica hit; Vi ~ale per cui eli < Gfj : eu .- (Cli CIJ f- 0
I .'
.
1
+ l)modNi
7:., )'i:~,",
\~,\~"~ . ~if;.'iY':' ""."l.'
Miss:
'::,:~;.~i:-.: . ;'lit::;.:: '". ;,;,.~"~,~,,
"
"
..,',.,. '." ~1\~:;~;,{'
, ,""'" '."
';~""',," "
~~'f~.!:~::
esistono linee vuote? Si: J' .- via prioritaria; . No: j.f- i tale per cui eli = N - 1 ; . \/1. tale per Cill eli < e l;: Cli f- (Cli + l)modNI CI,' +- 0'
Vij
.
f-
I
j •
..
\
1
. ,:~~~,'",: U aI 't d'" t d LRU L'algon'tmo LRU sopra mo n gar! rno 1 rlmplazzamen 0 .pseu 0 .,".., - , Ri h' d ' f ' 1' t to ' rt 1 . d' ' ~)l'!~<:.' : strato alquanto costoso. c le ~ m a~tl 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 'i ':';~~(~'" " .riferiamo aHa'tecnica usata dai progettisti Intel per 1a cache interna della CPU 486 e l~~~)':.: dei modelli successivi[Int91j. . ~~!ti:1. 486 ha una cache interna associativa a 4 vie. Ogni via contiene 2 kbyte. Le ~,t~t.:~,~~::", ,linee sono di 16 byte, per un totale di 128 linee per via. In scrittura viene seguita 1a 11 ';~~;~r'~:" politica write-through/write non-allocate, conseguentemente Ie operazioni di scrittura 11~~~'f:' aggiornano ~a cache s?lo ~n caso di hit. di scritt.ura. . . . . . ~ :·:fut'J::,.-:', ~a gestlOne del flmpI~z.amento.Sl appoggta a soli ~ bit per ~ea anzlche a 8 bIt . ,) :~!~;1<', per ~nea, come sarebbe nchles.to .dal quattro contaton de~ aIgontmo pr~cede_n~e. 1 ;r~~1:. tre ?It (B o, 8 1 e ~2) 80;0-0 d~ttl btt LRU ~ servono ~ c~trwre Qll albe~o di pecisione. ~, 5.!~r'",':, ESSI ~en~ono agglO~natl OgOi volta che 51 ?a ~ .hIt (In lettura 0 scnttura) oppur~ ~4.{{~·, un miSS m lettura, In accordo alle regole dl declSlone sotto esposte (con lo,lthh St ~~ ;Y!\~:~'{,' indicano Ie linee nella generica posizione ILl relative aile quattro vie). ffi' '~,*'I: Bo = 0 indica che Pultirno accesso e state alla linea 12 0 alla linea 13; Bo = 1 ,J ;~%¥{ indica che l'ultimo accesso e stato aIle linea 10 0 alia linea h; ~J ~~~~~.;. :,' B 'd' ch 1 1 l' I ' ' l l Ii I' B l' d' M' '~;-1';:~'" • 1 = 0 In lca e, tra 0 e 1, U tlmo accesso ~ stato a a nea 1, . I = ill Ica "'RJ". f' ~·~t:~ che, tra lo e iI, t'u1timo accesso e stato alIa linea lo;
. }..";f;f'.
~
e
. \
"
'
n
,
i
-: .
~ ~:~~f~:.:'"
!,~Q; }J/; il',.~"".
i·~;~~if7;·:;,
Ji;b'"
•
• B2 = 0 indica che,tra2[ e l3, l'ultimo accesso estato alIa linea l,' B, ::::: 1 indica che, tra he
l31
l'ultimo accesso
e stato alta linea [2;
Ji :[E'1>'
~~~ h~li1t1.· "
.
\
I
~
\
-
I
..
I
, ~
L'algoritmo di decisione e di aggiornamento dei bit LRU viene illustrate in Figura ;~~~;; stessa. seguenza. di Tabella 7.1. 81 puo venficare che ill Questa <4501 a causa delle ~ :r.t:;&''t,.:, invalidazioni) 1a. sequenza di uso delle linee esattamente 1a stessa fino ali'evento 9 incluso. Nel caso de: Ii~~~·'.·· (Tabella 7.1), 10 pseudo LRU sostituisce 1a linea l2 (Tabella 7.2).
e
\
1
~
I I
•
298
Capitolo 7 >:':;-;
r< . <, W
""', ., ,-:.j,<. '.• 1'·"
," '.'h. :{~:O
D motivo della ~er~ziazio.oe r~siede ne~ fatto che l:al~oritmo pseudo LRU opera ',,:{~; ~: secondo un albero d.i declslone bmano: un mlSS che sostltUlsce in una delle due vie di >':~>~ ¥; s~stra predispo~e i bit ~R1.! in modo che un immediato, succ~ssivo miss sostituisca.'~Y.l (
nel d~e blocchi di d,estra) m,dipeD?entemente da! fatto che questa seconda sostituzione '~;~ I1:0n Sla. ~uella preV1~ta d,all. effettlVQ ~R~. Per .es~mpio, si supponga che tutte Ie linee ':::'~i#/ Sl~O. valide e ?te gli ultllll1. qu~ttro riferun~tl SI~O stat~ tutti hit a tutte Ie linee in: pOSlzlone fL. In questo eriline. 10,ll,h,l3. SI venfica factlmente che 10 stato dei bit<~~~~ LRU 000. Infatti, II primo indica che l'ultimo riferimento stata fatta aile due:"'~ d' h I ,,0,11 , 1.In~e a dest ra. n secondO' 0 ill lea eel ha avuto un riferimento dopo 10 ; il terzo 0 }i~~ lD,dlca ~e 13 ha .~~to un riferizr.1ento.dopo h. Si supponga O'ra che seguano due miss. "?~)~.. L algotltmo sostltwsee 10 suI prImo miss e aggiorna i bit LRU a 110 il prossimo miss ,:~~;1: "-'\o,~l· por t ecd,' a 50S t"ltwre I'2 'mvece d'I I1. '.:~:~.~
At
e
-
\
~
'''
a
e
1~
~~
~
-, ,
'
~:
;
~:
...
•• "1:.,' '.1::.:......
... 'lt~
No
/ Tulle Ie UNEE \ del SET valide? Si
S1: 10 e 11 usale mene recenlemenle
I
Sosliluire linea non valida
No: 12 e 13 usale meno recenlemenle
80
\
"
~
~
':'7fl~t :
";\~f " ·"./:S! )
'r~!.i ~
.·: . . -(i
· ""'~'.;:-'': · .~ .~~ ' 1J:1o'~
"13\~ , ,'~ 'r:1;'1 •
0'
'::TS ~ -R<:\"
Si
81 '" O?
No
Si
01
B2
No
:
~
' .•.-..if .;~~ : .~ .:"'';;;; . -.. "N.Diiji , .=:"'-~".':" '.:":iff~I' ..: ·,i;~i'..
· "''''-'' O) ,:fi't:t..c '; ':" ,~-:\, ~
.
.' :>->', .. ~."- . ,~ c., "',"., .i ,,:,." .",' ..... ,,~~"'! , ·I, .,•• ,,:-
I \
- Sosliluire linea 10 80:- 1 81:= 1
F'
Sosliluire linea II 80:=- I
81:-
a
Sostilulre linea 12 ·80:= 0 82:- I
Sosliluire linea 13 80: ... a 82:- 0
7 7 Sch
d ll'aJ' . .. 19u~a. e~a. .e ,gontmo ~ deCISI?ne pseudo LRU. Nel caso in cui venga sostituita una linea non vali?a, ldentifica~a ~a linea, bit LRU ve~gono modificati in modo da riflettere colloro val~>re la linea usata. II bit LRU vengono aggJornati alIo stesso modo in caso di hit.
. :~f!!/ r
,,;?~~t,: >
"':.~~~1
/'";j}.":
'tit~i;
~ ,
':"'~!,i~ ~'.~~~:W ,<~~.~,
,.,:.;:.~ '.':?~.~~
I \
I,,;;j,~~j
7.2.3 La tecnica FIFO
·
-;~~~,~
·'''J'1fI:
~~~~~ 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 '~,~::b;f lell'arcline Iii ingresso basta un solo cantatare C, per ciascun set, che conti modulo N, ':.:~i~ 'I contatore viene inizializzato col valore della via su cui deve avvenire Ia sostituzione. :,:.. .~j~h, SuI miss la'nuova linea viene copiata nella via individuata da C, n eontatore viene :}i@~~ quindi inccementato. .~~ Si consideri ora il case in cui tutte 1e linee di un set siano invalidate. L'algoritmo .~ i~~ sostituisce ordinatamente Ie linee non valide e si porta nella condizione sopra descritta, ·S~~L~ L'a1garitmo dunque II seguente (ovviarnente II caso di hit irrllevante), .,' ~
e
I
.,1.~.~
e
!t~.,
',:" r, "
.~" .', .\"il.i.",
-
,
I .. . ~
,#,,'
La memoria cache
<., )\':""': _' ". ' , . <',~:\A\' , 'j,:II'\ , ,. WI""
•
~::X":!':-
''JIT;):~''
~vento
:w:~:r'
;f£~>!/:",
(~~~J::L.....
~1?:§~-~"":. ,(."
~i~;.;~~.:\.,' "" .
0 1 2
. ,.!.r~,\!!<~,;;.
3
'-""r' :$'~~.'''~''.:
6 7 8 9
~:~~~~:~ '~,.
4
5
,~~tji{,: ,.
;·~1:"t.!, '
:j}~j~it.~:-"l::
... /i,~.,;.--
299
.
\.:~J'::'~':':'"
10
"l(~·.'"
~'-..y,~
condizione iniziaJe hit sulla linea di via 0 miss invalidazione linea di via 1 hit sulla linea. di via 0 invalidazione linea di via 3 reuss hit sulla linea di via 2 reuss miss mISS
B o B, 'lj, 1
a
1
1 1 1 1 1
a 0 1
1 1
a a 1 0
a a a 1 1
0 0
1 1 1
1 1 1
a a 1
Bit VaL 1111 1111 1111 1011 1011 1010 1110 1110 1111 1111 1111
~~:~;.~."
:i~i~~i:" . Tabella 7.2
Esempio di politica pseudo LRD per una. cache a 4. vie. Aggiornamento dei bit ",:;~1;~.r~~.·' di LRU. E stata presa Ia stessa sequenza di eventi (e la stessa condizione inizi~le) usa.ta per )~jl:i(~.'i 10 studio della politica LRD (efr. 7.1). L'evento si ma.nifesta a partire nella condizione della ~~it:.:: .r~ga precedente rispetto a quella su cui l'evento e riportato e determina la condizione della ·.'.~E,' -:ilil-'. \.. . "g''" ,tessa. '. ~-.,~~ ,-
'{'~t.('.jf.'-'
,}!rI,·i~5;,.~,.·.'
• 'w'" , '.
..
:~~,:lit'.~'·;' ~. !\~1-;'> .,. ·i~.... -_.".
Miss:
:~,., .i.ff!"
.;::. ........11..,"
,,\1r~<;ii?~\
:'~:;1~!lJ'~ i'· • ..·/1:,'1:..'....·' ,s, _.•,." , O":t~:v.,~'." )';.?j;~~ , ~""i~ ..." ~~";;;/I" ..· ,:.. ,,' '-,l\;"( i.... ,;llo1l~· ''', ,f , , ~ , • '""~'''' 11" .:",I." " ",
.
Pf:'~
r~~;?-'·,·,
esistono linee vuote? Si: C f-- via prioritaria; sostituzione della riga in colonna C;
C<-C+l
. Nel caso in cui venga invalidata una generica linea, il precedente algoritmo de-
>;~;;~;:t\,'termi~a una modifi~a di C che ,non co~risponde pili a un ~ettivo algoritmo FIFO. ~~~;~~*:::;~' Infa~t1, }luso. delta llll:a .non valIda la.:>C13 C a. puntar~ alia. VIa che segue quel~a su~,,"l.,:;j,~'.£:" ceSSlva alIa linea SOshtUlta. Non e detto che questa Sla Ia bnea entrata per pnma 10 ~~~;'., cache. ~H~;~~'~:(:,', . . ... , . . .. . W'?~~(;., Vale 1~ ?eDa .dl n~tare che 1a ~osslblllta ehe una g~~~nca linea. Sia lDvalldata, .~~;'~'~' almena Del slsteml a smgola CP U1 e un evento molto PIll Improbabile che tutta la ~;t~~(::::.' cache sia invalidata. Infatti, l'invalidazione di una singola linea e solo conseguente ~t~~I~:,'~ ,a even~uali operazioni di .1/0. ehe ~adano a ~erivere n~lla corrispon.dente li~ea in :(~D',: memona. Questa eventuahta. Viene dt norma eVltata cial sistema operatlvo, che nserva ji~':~~hr,~' per Ie operazioni di I/O delle specifiche aree di memoria e che definisce tali aree come i....,L~,,.? non cacheable, impedendone la copia in cache. :l,r.T'( . • J~~t,;,' In conclusione I'algoritmo sopra presentato, sebbene dia risultato non corretto in fr~;W\l'. ~" caso di invalidazione casuale di qualche linea di cache, e da preferirsi a un eventuale ~~;~Yf.:' algori~mo che tenga esa~tamente canto dell'ordine di ingress~ 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 t~.it precedenza. . . ,. . '~~~t::> Un modo per reahzzare l'algontmo FIFO e costrwre una memona TAG operante ~.t~J;" I? mod.~ FIFC?, aggiornata sui miss, in modo che essa identifi'chi irnmediatamente la ;-'t~;(;~ Imea plU staglonata. "J,o,t~.. . .
'
'.
'., "E!i4 . "",:to", . • ...
,r,
;~~~ .'f"J,1 , ~ , ,,,
f' • '. • rJ .' I I~,,·
• -.;. ~';,~ ,', '.;Ii
.
~~tolo' J·':.~··:t ';
3QQ
.tlt<
!,
_._
..
e...
..• ,
,
i
l
:;~;ti~
",
::-);1
7 3 A . r'
t .. . ..
~rn
:,'},\~i.
. ... ' .
n~' ~~~l .~ ~._~ ..:~;' .-.p.~~'~". ~~l ~.~- .,~.. ....".. -.', ~. .
.
l~.':
:
.."I'~" . JIi'
<:~~i,
..
_~':;?"',
_,r, .' ,'-"
",',::.-."
~
La valutazione)de~e pr:5tazioni [A~.881 ;d~[ una' mem~Fia tache e tu~to~a ~n argri;:~,. mento aperto..ll semphc'e modelIo usato:,q'Ul sotto e.utlle a d3:Xe una mdlcazlone del~, guadagno IIiedidbttenuto con la cache; ; ,<:' f ;:1 ·n:: '''''.'1 ."i,;.';':', :.' ,',)~ Designamo 'con te if tempo media cli· atceSso a:Ua ,memoria in pres'enza di cache~JW." te puC- essere espresso come:: ' :: ,i ' i!: " ",:! " ~,,~ .. :, i'· '~i ,r,).~, ~ ""I : ., tc c..h··t·'+m·t ' ( 7 1 ) ". ; '-"1' c p .
"
'"
dove:
-
e
.
It
,;;, • , ,
'.
'.
.. '
h tasso di hitj , :' !
,
. '.
.. I
,.
,.,
","
'''" "
,
','
.,',",:f
,-'
":~:l.
"
•
•
:
',:'::<'
'I,'"
-':;'("'i-'
.
'
~
\."I$.\·
" ',i:,'
:¥l.~ '''~
; ' ,
. ,: ~ , , " " ';" ""'('m = '--1 - h) ; .. ,. ....., m tasso d1· mISS
....,..
tc tempo'di aceess6 alla ca:che,' cornprensivo;.del' tempo
·p·~r·'Stabilire se,'si~h~ tii~'f .!~.t:~~~~. .
.. .....
;"11~; '_.... :: .".'
'd"ir:"pe"n'a'li':"~~~'l';' 'e' "s"o"m"m'"a "de'I"t' e'm····; :d'::;'\ 't':" ~.,) 'd"'U';o '.. ,~ .\~,'" ,. t .' I~ l.l J:<:?)1t t:p., te··m···p:·l~ . "'.. . z"'~ vn j .' po 1 a enza e a.memona '~r-mClpa e'e '.lif, . '1 •• t1del terilp6' necessariO-'a trasfefue'l~ lin'ea' in cache. "';",':" .,\.: I '. .;, ,"\"",: " :.j·~ff~" l
.~,~ '\' ".!<~l,!·.t~~,~f.
Vequazione 7.1, fornisce i criteri per l'ottirnizzazione di una memoria cache l;f~r consiste di quattro aspetti: ,%~:~
,:-,,:~, 1) massimizzare la probabilita di trovare un'rifedmento alla"mernoriia direttamente :~~~~, r
\~~I'
nella cache (massimizzazione del tasso. di,ihit); " ..-' .
. , .
.
I
,'.l.'~ :'; .',
f!' ,'. I' "l! .:' ' .., ' '.',' ,.'
-.:~~IF: '
.
2) mU:l~u~zare. iJ tempo necess.anh.o per accedere a ,u~~ ,1~formazlOne nella cache ~l~. . (ffilll1mlZZazlOne del tempo dl It)· . . "", ' .o....\~ . id' -.,,1 0) '" ']'t d d t . ('" . d "~" '\J, .r~l!lJll1IZ~arel,;.n ~~ .~. qytl.. Q ~ un ml~s. ml~l1ml~~~lOn~,. e tempo l,pen",I'lzza- :)~, ',' , . . 'zlone)',. '" " .. . . . ... '. , . " '. .. . , , .-.,. .."'~1"'~.' ,,'
. . , .. , . ' / " . "
,
",·.'H'.
,
:":'.'
., ..•..
.
'.'
"
'.,:
~
"'1' . . "".:2<""1"'1'
.
.
,
I ","
J) ~ni¥iz~e ~r.!teInp.({~e.~~5~~io· a: g~tl~e la'~c6~*e~i~ ,~el.l~ c~ch,e '~eil si~teirt~\t ~,~ t.
"mtilti'processdri
0
iri'sisterni con'piu livelIidi'cache. . : ' . 1 _
.
I' .•. "
,'"
·",.t"~~
'.' " •.'" '" . ':·.!~l . ,,,,l·~!:-t '·1(/' :,::
, ...··.'i;')",:;\j :,'
;:!'-""
,,'1 :.;
\".
~;.;';,,, ";' "
". ".'
"i..~I1·
'.':-;;!f
,,.
VogliamO , ora,Clu.a,ntifiSNe: t'~~et~o ,dE}U.a·:pre~nz~. d~lla ~~che'sulle. prestaziQni. di, un :~~~~ proC~'SOre, , Vn,.popolare .lUd,"e: deUe :preatazlo~I' ,e ;1 coslddet,to MIPS (Crr.2·..4.2). ';)J;'5< Indicando con.Tpi il.tempD"'1I1edio nchiesto per I eseCUZlOne completatdl un'lstruzlOne ,y~.~ (fetch ~ decodi:fica/esecuzione) ,misur:ato,in .microseclDndi l sir ha: . ".. ':'1 , H' .,: ';;'; , !110f .I . : , . ; ' '~'M"r'''S'':' 11' . "iift: . " '. :" .• j '" .':. :" '''/'', I: ' ; " " ',.j . . . ;··'f·:·~r~ r .\ I,' = T~, . (7 2\ ':'" "::!'.',' '.' ··i; ,::~~., . ,'1'.:;' ,.".'~"'\' . . ,'.,;' '.••. • • pl
"
••
'
t"
,
"
",
"I·" , ... '.; .. ;~,:,:"
,,'
.. '
, . ,,,
, .• " • •••
..
,,'
,'.'
,·,>,i,r,I':.,
""/i.".'.',,_·.,'.,',
'J".
"~!
."
;
'~-:"""
,"':'...
'. ;: S)Jppo~~q.~9 sP~ll~:f~~:di preli~vo ~ 1~~p~~c~/~e~u~io~~ ~~n,s.i. ~9Yra.-pponga~9.!:E}. '~i';~:' su,PP9,n~do,~cBe.l:'e~~c,\I:;Z~?fl_~:d~\le.~~~:rHZ19!4p.q~,provqt",:~~J;lO.?;!~r.l acceSSl M~a. J1HWrQq?:, ,::.:ft.;'
~~ ~W,~51)l'(~I.9 r~l~t~y!?; C).l..ff;l~chl' ~.i, pu~.s~riv~re la,~~gu~nte: .~qu.~.i
., .....
",I,
dove·:
",
:J",,'.,,,,, '''.
.,
"~' ,'~
,. " . ' ... ,
"
"
.. ;, I , •
.,
-"
..... ,
,;"n'("'2:
1,IJ,iT':-·tM-t'-:....-....\'
f
p. -
,
tM tempo medio di accesso alIa memoriaj
."
'.".,,~.~,'.'.'
'."1"'.
,... , ,
,;:
. ,~",·,,·;;J·,;,2 "'-1;
;"~.J
, , ~.:t';i.I '.f":\
.; ".: ';:-, ,..~ ;:"
'-
,.
,
, ..
;;::~I.\ 'f~;~t
"1"" .,,' ""·!tl<: "':l':~.(7.3.)·.
.'"
;':',
:' I
, .• , .
n:' "',; j
I
~,
'\ .. , "
.. ,"
,,~~~
,:,'.' ':J~,ll '.
,,'I
.... ',,";i!'.
..'.',.:')
-;."','
,.;:'
.:
I"!.'~
;;J,:r;:' '
]
~H'
,j."" .iL~V,';
,
~;:-,;,,'
e'.1'.·
<'~i!~~r,
La memoria; ~ache'
c,
'~-.!:~ ;~_
"ll*~~
.'301
,
~l!,l'F< "W"'",
~,~
~~:ij"~:A"":""';\;"
.
1
cieli di clock per ,decodificare ed eseguire ,1 'ist~ione;'
.
.
':
~{f@~~!;.;;'y" f;equenza;del.c!ock di macehina,.
: ,'.
:.'
~;
.
: ,': ,':
';";;,'::::"': . "".~1t"i:.",~: :,.. . ;" ' I " ' · ' . . . " " , . " ; . ' , ,. ',.';;,~' .. ' .... '!r~,,, .. , .:.i. :1~'~~~i:~.',!'),·, Si indichi can Neil numero di deli irnpiegati dalla CPU per leggere in memoria ,·tt{~1~r\: ~ con N w e it numero degli eventuali stati di attes3 richiesti dalla memoria principale. ~,;?~,::.~';:: ':!n' 'assenza di cache, il tempo med,io di accesso alia memoria e dato da: ~?'~'" I;J'~'( . ","".\"'" . N+Nw ~:-;. ~,., .' ",,;~I~'.":~"\~'·'~·'" t _,_~ (7.4) ,"~~~!"!r:." M f
.'
".,,~7'~."O :W."",,':1·'·· ': ~c:,
~~~i!tf.tH
f N
~,~o:.o_""
+ N +n W
.1~~~~~<~~_:
(7.5) (".2:
tc'
I'
•....
,
"'
, •. "
"'~~'I"···''''''
~~l(o''.4
~ .~~~f.( 't'.'3.i 'L~
~J:)J£~!.
,'.'1,',.. '.
".'
..
: 1 " , ; . , .. \ " " ,.
""
",' .
·cau.'se di fallimerito 'n~ll'~cces'sb aila ·~tich~·' ,.;' ,";i: , . . "',.;: ~); "",.1:,.: '.;.1,",
,~~.j~
. ' .•
" " " ;, ' , "1. " , .. '"'' , ' "
.:
·.1-:1 ..• ·
•. '.
,.!.
-"
. Jti~fk~~:,' fi:IS~~!l~:".'
In uno studio sulle memorie cache [Hil87J e stato proposto un modello intuitivo per ~ '~i~~~j.'; capire it comP91~~I?e~.t~:.?e!I~~ ~ac9-~". ,n,: fQQ4~llp; l~f':A¥~at(~ fC9rI!e:· ;",~O?~!\9 ;,qell~. ~~ <~ .;6!{.' 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 ~ore qualitativo e non ~ ~g:~\ f~ '~t}:i~'" rappresenta i dati reali 'di un sis't:ema: ben definito)!' [' "tre' tipi di 'riliss' 500'0:' .' ,': .; .l-···,...·.
~;:;'~~;,
I'.,".,,;... /f:·.•·,., 'f
'_'H'.-
<
;,' .• ,;;~'", ,
,~. "".-'.".-,;
"'-"\-"''''
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",,\
.,.
..
'" "'. ' ~ .,i' "",,~'. ~,i,
"
... "'.
• •
.; .,.
2;~I.'~\f,i:~i:>,·' I,~ "";,',', I .,J~,.
~} ;.:0[;,;:;': ,
l:'l ·,,:'i~~:•. ' ':
'~',f}, i"
.I': ,~;.,~!).\" .', ...'::-.,.•. :\. .:1 ",
'~:;"A\""
I.
I. I \
I
I I
I
" ' .
,
,
1
'
,
•
'.
"', ,
,
•
•
"
'.....
..
,
.'-, ,
".: ... ~ ,,:' .
.,.,
I'
I.
.. : .• " ;. '., vo.lte. ill _cli!
2. Mlss ~l capa:lta (Capa~tty). 51 ha un ?1~SS. di _capac.~ta tutte Ie l~ ,:'~ ,~ac~e ,n6n, e m ,grado dl contenere, tu,t~~.,~. rifenmentl: ,.a:({aus~. den~ :1I:h~e~slOru :'~"-r.';~.,,',;, ·'i,·hmltate,,,;~, .. ; ':'''',' ':1 .,'::' 1., .. :··,·.,.,;;.:~,.:,·:l'i :"·.··;1.,"·:;),; .'", .~""
:\{'
J
. . "..,,"1, ,:1' '.:.,., , ";.1.' ).,' ,'.~ ,",.",. ' .•-,'
'~ ?1t~!;<: ";!~l.~,.t' t~ ::~1i!{;~ \.,;-~.,.'
I.
•
11 massimo delle prestazioni si ha per Nw = 0 e N = 1 ovvero quando la memoria ,y~~1ri"~iene letta in un solo ciclo di clock l6 . Come gia. osservato in precedenza i moderni ';;'..:'Y~,~' . . fr ' I d d' -bil il rifi . .~~;~ mlcroprocessor,l ~avorano a. una e~uenza COSl a ta a ren ere unPOSSl e ve carSI ·:Ij~~¥fl:,'.~ di questa condlzlone con le_ rnem<:!le DRAM, ,;,~~:t{i"": In presenza di cache tM = te. Una cache ben progettata deve non solo ave!e I).~~~J~ , un tc che permetta l'accesso in un cicio di clock in caso di hit, rna anche un tc -f.;~;ll' , sufficientemente basso. La 7.1 indica che te dipende non solo dalla velocita della f~~~~~" cache, rna aiIche da m e da tp . 5u quest~' due parametri.infl~.cono fortemente ~a '~a~l~r'. dimensiohe; l'organizz~i,on~,~ la, ~O?~i:~~~~ 'ges~~o~~ '~~Ua .c~~~t· ".:."; ,: : ~\.'. '.' ~;·:':'l '; ~~;:"'" n modello precedenoo non pub eSSere utiltzzato per dimens[onare'una cache. Nella ,~~f~.~"~ pratica industriale, per it progetto della cache si ricorre normalmente alia simulazione. , ,,.,,t,·· Ii . . 'ch d II :}j,,~1tj?' A tale SCOPO.f mt~res~ante leggere come so~q ,state ?~ n.lte I~ car:att.ens.tl e.. e a ,=" .., ,"cacue ~ 'de1'486' ta901' .. ' , . ,. . . "',' ," .... .. ... ' . ,' ;~'::'~~jl!'I' !f~':1.'~I~ . .ii" ,I. . .,'.", . '._;, t· .. , :,;:! "" ~.: ";".<,,. ,i, :,·.;;.l!,., . ;',q':' ...:
'""iJ!'~"~~'" ' '_ '"
I
\
in 7.3 e in 7.2 si ottiene:
'V~h"MIPS= fi',.~~~'t~'-·
~','"
I
I " · ' "i
.'
i"
•
",
. '.'".,' .,: ... ,.. ". •• "',' .~.~ ,.',.' • "', '. •. . ; . ,.,,1
' .•
'., '.'
'.,
,.
''',
" _
: ,.' . . ,.'
' ~6 ~s,sL~m~ll~O N; 'l'; ~ e. ~e~. .; ~" I!ag,gi~ntil: ~ Un ~olo, $ta~.q, d,i '!-t\~a ri~Qlf~: ~e~ ~~~o}e. pr~~io~~, de,l pr~cessore: L a.n.ahsl precedente e semphfi~a.t~ perche suppo~e~e ~e op~raz!t?,n~.~,p.re)I,~~Ad;~od~~c:a. e dl esecuzlOoe siano strettamente sequenzlah. In pr~nza. dI pIpeline, SI ha'n6rtria1rtien~e~ N+ne:i: = 1, dunque un solo stato di a.ttesa-dimezzer\:ibbe h:l :'prestazioni'!d'el' processore:';: '.,:;, ::. 1,1:' l;.i .
I..
I·
302
I
Capitola 7
3. Mis$ d.i conflitto (Conflict, Collision). Se la cache e completamente associativa la probabilita eli un miss di conflitto e praticamente zero. Se 1a strategia di piazzamento delle linee e a mappatura diretta 0 set associativ3, vi saranno fallimenti dovuti ai conftitti, a causa delle linee che devono essere scartate e recuperate.
I 1
20%
I
18~
16714%
Miss rate a seconda del
tipo
di
falliInento
127.
107-
Conflitto a
1
via
a
2
vie
Conflitto
a
4
vie
Conflitlo
a
8
vie
876747-
2% 071
2
64 16 32 4 8 Dirnensione delle cache (KB)
128
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.
I
I
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.
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..
\
I
Tuttavia, altri aspetti intervengono nel determinare le prestazioni della cache tra cui: Palgoritmo di rimpiazzamento delle lineej l'eventuale precaricamento; 13 scrittwa in memoria centrale (write-through/copy-back)i il fatto che lao cache sia divisa 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 (monoproeessorel multiprocessore). Alcum di questi aspetti vengono discussi qui di seguito.
La memoria cache
303
7.401 Dimensione della cache
E
evidente che a dimensioni maggiori della cache corrisponde una probabilita. maggiore di reperirvi l'informazione cercata. Questo fatto eben. evidenziato dalla Figura 7.8. Col passare deg.li anni Ie dimensioni delle cache sono and ate 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.4,2 Dimensione della linea La linea rappresenta l'unita. di informazione che viene trasferita in cache dalla memoria. 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 contemporaneamente allocate in cache, riducendo 1a probabilita di trovare 1a stessa linea in tempi successivi (diminuisce la locatita temporate). Tale fenomeno e stato approfonditamente 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 incremento 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 preleyare 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.
7.4.3 Associativita La Figura 7.8 indica che 1a crescita del grado di associativita migliora Ie prestazioni della cache. Intuitivamente 130 cosa e facile 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 mappatura automatica delle linee nella cache. D'aItra parte , at diminuire dell'a.ssociativita. si riduce il tempo necessario a stabilire se lao linea e in cache, in quanta la relativa logica diventa pili semplice. PilI alto e it grade d.i associativita. piu e complessa 1a logica di selezione. • Due argomenti vengoDo presentati contra le cache mappate direttamente: '
1750no sta.ti considera.te cache unifica.te , solo istruzioni e solo da.ti. Per questa aspetto si veda. piu . ava.nti.
Capitolo tJ
~04
,
..
. 050
• -"CI'l'"
,.
,',:
;-
.,
:;
, : ,', i
..
' •'
'l
.
.
...
F ::::::::-.....
i,
u
u
l
"
... , '.
"
,f~ 010 ,,'0' :
•
"
,:1
0,05,
..... ;l'IS,
_,,;,,'1':< ,.
".
": I'
....
,-
i,
"
1',_: ,; ,:! •
'~!,
1"''0'''- ,··.i.l· ...
'.\
':.oM1 '.r;',-", "::'"
~
" i',
'"' ~.
0.01
,d' ,;
;,
.,.,.
;~:
"
. ,;,
. :-
.
"
"
.
I: .;;/;
"j
,
" ..
',: I'
, • .2 .....2
,
2
,
2
' ..
Hi l.
•. ··.·pO.oO·:.E' ..
i'·
, '.
! , (. .' .:
,,. .! 'd,"
i :! .
!
,
..
,
; •' !
'. .,
'.' .,
,
'"
'
, ,, '
• .• ,"
.11"
,"
",
.. '",.
,
"'r
, , I :'
..
,, ,
'
.. ,
'
,.
.;
,", ..... 1.,/"- _'.. ,...'.... ,' .. ·.;-,-·."llr~'
;.
,,'
\1 "::,1:',) ,,,,,,
•
.. ;.' ,
0<
.,A
.,
••
;
,
.2:·
';
81Q~
.)3:'.. ,. ,
~~j I ,':,.
•
'$
4,
l:;'.'~'·;·'i .,
ll;la '.i.,~ J21A .
......
,r.!.;! "'\'~:I
.,
l'
•
,., "I~'" ',I;' .... .. l··,'.· ... n.
"/'1 .'.'\.,,r;;: 1./1(":;, ,1.,. ,1''''''1
'Oimensio'ne"deha"l'ine'a (Byt:e~'" ~
s:::
'j:H':,'.'
~ ~ .:;; .. :2,;
'n,,2
•~ ~
;.');:.!
.: ~',,:
'.,r. ~.,. ;:'
.,/
'"
50 t . °
"
";'~!'"
•
~,
,
;
'.'
~,'.d .,! ;';,
~"'.
O~_i""'"
i'!.
I
;,' .. ' .. ).;
::;·'::;::",ri..:'
"
.p'"'"
.t,
:1: ',~,--,.J:J! ·" .. llJ . '.; .,';
;'1; • .
),'
.
,
.';'"1· •••
\··.··,'·.I},::: .;:!:':'i
,~
O"Cf1:
",., ..
"
,," 1""'... " , . , .,. > '",., "1
,
'" 1
.,
'"
";"
,:~~I i. .... 1'; i,,!, ;.'·",i,.
.
~,
"
.:.'~.'
,
~"
;.,'.-
:'.,
~,
,.,,"!!"" I "
0_05
,
,.
;;:::.. ,I '.j,
,
,"
. " iI .
,'·:,j)J;'·I': \' i
I.
,t.:!
;';'
"
•
, •' " •
_·.• \',.1
'h";!- ·.1,:<....",
,.0. 1,9
.'•
. :. ':' ,.
i ]2 ':-
i
• _I 1
.
"j ,
. ~ ,':
,",'
~.
2 ... ,2 ',"
" - ',";';"'";$4:' I'
':,1 '~:'l 1:-':,",-0
, ~J•
..
.'
...•
~".i~; i;,
.,'
'>
··CO".'·'"''
'. ... •
·,.II,:t~,.i;.1.:
•
Dimensione della linea (Byte) "f.. '. :
.. F· ...'
..
,,"
., . \: I
~ioI7.~
-;-
, ., ! I
!
,'." ...... \.. ,
.,'
Jl,
,," - I . ,\.. ,.. ,_,~ ..,.1', :~,m,
:::---:::::
---- -----~.
<
••
,
'.
,
E ;:,;i·:;·;.·,: : .. , :p .....,.; . ;,' ...~';I : :-:' , ' ::: . . ." .. ' : :,,', • • •, .,' ::: : .": :' ,. .. ·1 ,;, '" . ·,!I.,.IoJI '0.10 _'., ".'. ,;,., , ,.'1'.';' .. ,• ."~ :·:.·,·,..,O··!·..... :.,;. '::'I"":'.io"';:J:~,.Pj"iJ:::"·";;" " '. .,." "(II'" u..OS· . . d .. ii,. ' ' ; ' 1 . " , ", .... ' " ' ' ' ' .. 1''' ,,, , ';;"~:'\l' ,", '''" '~"·'·':·'·'J"o",j"'·';l"'I';d .. -··,,. :, .,. ". I"~ .'""',._""'" ..... "". ,., '". "'. " .. . , , I:
,~,
~
,r:-,.!.'.. , ., , ~".t: , .• ·. , .. :0-91. " I)''''.,....,i-••".''I'"
::~-::~"":"'J>. """,'.
-
'.,
\, .. I~ ,j
,i
.'
.. , . ) , " , ':.l,';';:;' ,. ..,-;~~, .
11,,:'. ... '.'
';'.' ~
,
;
..
:
\,1'"
'j
,
;~,
i'
I J
'3
":;·li.; .• ,
".;:
~
_~. J2 • ' .., 32: U
,",
.,·f '." , lIlt
~doi_
I i'.'"
-- -
I,.
,.0-
I.
2·,<,2·',,2
I~
,,2,
I ",
'.
2,
. ,.
.2
1.,·.,;1 .•
..
:,'1 •. ',
,
'., ~ k .1,·",::,·, ,,1i:~:',
~'~'327111;""
'7
(I:.·.;I~.lj
'
'. : " .
\
,. ,:, , . ' ":-1": ". , ::
. ",:(..:
(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 n:el~caso di cach~ .m'oito piccola ilecc~sslk" cresdt'a: 'della dtro:ensione 'aell~ ii~·~a. 1i~' iih" ~'ffgft'of b:egil.tivo~'7': ,:" . Oimensione della linea
:,
"'.\l
"
...
1 La memoria cache:,
305
,a).a ,parita ·di' dimensioni 130 oache mapp:ata. direttam.ellte fla;-un -k minore·,·di una cache'assodatiyai' .1.,'.\",,,
':::'
I: . •
b) La cache mappata direttamente
t"
: ' .. :
. ;,."11. ·,·',·t.; .,; ":'
'.i .-::;:. !
1
'''~''.:
e prona al trashing's,
n primo argomento esenz'altro vero, rna diventa rapidamente irrilevante a11'aumentare delle dimensioni della cache. I L3iEigwa 7,a~I:Q.psWa chi~$n~~:¢he p~r. ,piC:~ cole dimensioni Ie cache mappate direttamente hanno ~un 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 4~IP ,3%.. J:1e)"dim~~sipnediyel).ta,~2kbJ1e Ja qilfe,~n.a, ,~"la aliI' 0,5%",. ,,;,' ,; .f'L1I1, ,i~u.1ta\ofinalej ~he> p.•"ql.che. dU"'JO,ghe.;pa~ti~ol?I'~"~l)'? ~y,~r~;fl~~~ .~~1?~~~F . ?: .~~~l_tf~iq\lE(i~ linee, oe nsulta una attlvita di contmuQ\ ,cadcame.I,1tq n.en~..J'st~.s~a. .PQl?izio.ne .dl. qu:be. " " " .. ' '"., ... .. "".''1')'' ." T~.nuto q:}nt,9 ~e it t.rasferimento di una lin,ea d~ caCh~ iichled¢'comunque' piu' tempo della 'let'tu~a: di" un.a'~ingdla: 'parbla:'di memoria tep~rale~'ij fiSilitate Ii~tt6"'pu:O' Jssere i1i1'\l.bbass~rrienti;!d~lle prestiiZionl'i! '
I I
I \ I
I 1
.~
.
','. . ;'!.' '~i~zi~~~· ~ei1rliile' . . . . I"';",".H'.'·'·l:""·'!p..~ ,~,.;; .• _".; """",·::;·;' ..
,. ;:"'~.!is6ho! '~~~.~: costo~~ i~:'J~~: a"'d~"i(~ii'~f~:~16g~~aeli~~l6: .
:";·:·,,,!;.\,,,·:,~,';'h!:""··'~'·I : J.j
ill.:.
'h'!
;j/ 'i:Ptei-h'pc}'(ii': a~cb'sso' 1tc} e: i"ilferi6'ie .perl"I 'e'tii:riinkiid,iie' i.deil.a: l~gitk'di :t'!i"S"opta;;
':'.' :',' I,' " ' . ; , " ' . ~oi~.
;~.'
I
1·" "f·.;
,'.;"
'
:!
. q.
,
.'.+ .t a
.·
;1
.: '.:
.,:.
' .. ;'
: ..
. .,
,j
.,'
.,.
': " , ' •.;
1: ; d'
I
.'
,,;~~,
'.; ,
b
;),'.
.,.
L
i:'
.. '"
-_.d.·.'"...
18Con il termine di trash'ing si denota un fenomeno ehe puo manifestarsi in pres-eriz.-a"di"uso
~~f~ik\~:~I't~~'t~t~r;~~ki·nt'. sf ·tk~~:iaK~~';~ofislff~iai-eIW"f~nometiCi'clli'I' de1:cri~VO .. ~ $i' s~p~~4ga e' the ;ra.: parola
una:
\
I
d!
indlnztata' sis. lal :prima' di line'a} in: iCoIitrdntire- 'di "cache 'foroisee il :eon~enuto "della' patola,' :e, prosegue ''Con/·j ,prelev.amentil successivi. .Si "supponga, di 'essen! .sfortu'nat\ e.'·e_~e~ qei,~~~I!,.~u~e~S!l.i~.il p"rQc~~~..gelJ~r~ N.I! .a.\tr~ ~*~!:l. ~~a.;d,e,~ ~~.~~~.e \~.co,n~~llo.r_e abbia fin ito i1 prelevamento per accedere alia. memon~.principal~, 9c~.Qp.~ta a (a~r.e;~~~.i.au.?i.ca.ep.~: In casi particolarmente sfortunati la cache pub diriiinWre Ie ptesta:zioIii' dfH 'sistema: \ La:: sind-r6ine \iien~.detta f71'~$onv. pp'l(ution,.jnquiname:nto della.,mem.or-ia (~e),.con.:da~i inutiU.per:il ptQCe8S0re. Qua1.'~~ .9-:~ta jH~t.r~ ;~etlie .I~ ,f.ll?~\v~iC?!;\.\ ~~I b~~p P9~iLto f, p~~er~.~'s~~,4!'f~P.t~oUo:~ir~t~o av'er~.'uir 'mlss
II
~~!, p~p~,~or,~ ~~~~e,?p~r.az\~!p ~~ ,~e~t,~,q,;\1. 9~1~.~!S~~I: 1~, m~~? ;t~~, .9-3: P.9~~r:. ~~~~ ~~,. ~o~~a::e
che' 'la' 'Utlhnl effitienteh1'ente: fn' p,anlcolare ~1 'nfen:ilito a 'Sisteriii '(!.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
I
I
I I I
306
_,,~ ,:J:,.
Capitolo 7
~",';~
,'~'
'.:ti
\
'r;\.
ti~W .,~~
• non e necessaria la logica per il rimpiazzamento in cache, essendoci corrispondenza diretta fra le linee della cache e queUe della. memoria principale.
I~i),
"~' ,\~1l<;
. I
It~. ~;fF: ~'~1~
\
~:4
7.4.4 Algoritmi di rimpiazzamento
I
trti; f~'~ \.gi
I principali a1goritmi di rimpiazzarnento (LRD, Random e FIFO) sono stati discussi in precedenza (efr. 7.2)20
I~l: ~tt; ~1!~
LJalgoritmo LRU sembra queUo capace di fornire migliori prestazioni21 . 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.
I I
IRf
'::
~t~
_,'\' :\j
Prelievo della linea
L'algoritmo standard di caricamenta della cache prevede che una linea sia caricata solo quando essa e effettivamente ricb.iesta. Si parla, in tal caso, di cancamento su richiesta (demand fetching). Una tecnica specifica per Ie cache e il precaricarnento (pre/etch) della linea. Tenuta 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.
\
~~;.::,,;, ;,i \!:{~ ~ ~$
'<:(,10 \r
':,<~t nj:
"i';;j~.~, 'f; ";~;V~ ~i~
,.
', \!
re~izzazioni.
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 "':'::f.t\~ ' 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 · ;:A~l: v richiesti. In altre parole, se il processore richiede uno specifieD indirizzo non si deve ':;;~i"I". ' '","'. iniziare il cielo eli prefetch, per evitare inutile traffico suI .,..", :t' , 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 m~ggior.e ; ".'.' 1 ' · _";, '"', i , ,,':;j'l! : dimensione della cache: il precaricamento aumenta drammaticamente l'inquinarp.ento '-~'':i . (informazioni entro la linea non utilizzate). :~::\,~,~ .,~~ ".,SI';~.,. ';:"'~"~'i Nel caso di cache secondarie, siccome il loro h e relativarnente basso (dal 50 "..';'.:;-;....:::n, ~~ .' ""'r, al 90%), l'inquinamento derivante puo considerarsi innocuo: possibile ottenere i1 ·-,'"';I"l' /~,..t~'li precaricamento con un minimo aumeDto della complessita del controllore, stabilendo , ~·,·i ;una dimensione della linea maggiore nella cache secondaria. "~(!'l:~1
Ci sono clue possibili
'.'
\ \
• - ,.
;0
.
(
"
e
\
, _~,,,,"'. '.
\
\
200vviamente gli algoritmi di sOlltituzione non en~rano in gioco se la. cache e a. 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 veechi (1983), riferiti a dirnensioni di cache piccole rispetto agli standard attuali e ad architetture tra.Iil.ontate.
'. ~1"."I .. ''l.W.'. . , ,'Ii' ". ,
..
,,'~'
•• " ..
.;': ~
,., •. l>' """':01
·.\;~! ;':..'
, " ':.'.~. "1
,~~ ; ,.~ '<,'$' . ,.
-'-";",
-, '1·.
\
ii-·p;>,- ., ~~i./o;; .
~ ."~'"
~h~:,'-. ..,,,t;'f.•.,
La. memoria cache
307
~:J;t'\.·
'J;!\\
..,:.' . -
.
i';r:~,'~,:c
.'1l;t~lF!-i. ' .
W!"l!t w'" ~,.,,,,,
, ~i.I, ..,. '. ,
. 7 4 5 Cache divisa .,
0
unificata
';j}.li.:,\,." . "'1'" :",., ..
I",'"
.f~i~Y"~· 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 unificata 1 il Pentium e i
41:~~~{'"
22
modelli successivi hanno una cache istruzioni e una cache dati . Tra gli argomenti a ;;?'-l~,.:: vantaggio 0 a svantaggio della divisioneJunificazione ci sonG i seguenti. ~;t~F,'.: . Sernbra evidente the gli accessi relativi alle istruzioni abbiano un alto grado di i~~.:'~,,: localita. Dunque, prevedere una cache per sole istruzioni dovrebbe alzare il valore del :~:¥i;\ 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 no~ viene. modi.ficato (e una cache d.i so.la le.ttura .da f.}J~, parte della CPU). Naturalmente, se 1 compllaton tollerano programml.cUl e consentlto :1i!~;0iY di modificare il coctice, allora nascono dei problemi di consistenza: l'eventuale modifica ~2~~:':' di una ist.ruzion~dev~ essere ricoI)osciuta p~in:a dell'esecuzi.one dell1istruzione s~essa23. ji:l.{;;~,," . Tra 1 fatton che mfluenzano Ie prestazlODl della CPU Cl sono la larghezza dl banda i{.!;1.~':' -i e il tempo di accesso alIa cache. Entrambi possooo essere migliorati can 1a cache $~~;It~, , . divisa. La larghezza di banda raddoppia con una cache divisa, perche possibile in 24 r~~~t';:" contemporaneita il fetch e la lettura/scrittura eli un dato . :}~;',:"',' La suddivisione pUD portare a un uso inefficiente della cache stessa, in quanto ;~.~~:i;,_"" la ~ercentuale di memoria occupata dai d~ti e dalle istruzioni varia frequentement.e ~J.~::;·;', I' all'mterno del programma. Una cache umficata tende a sfruttare megho Ie sue n,1X~~,~'" 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 ~t~f~~'<'; abbia pr~stazioni superiori.. ... ,. ., . ':~~f·,.' J.n FIgura 7..9 sono stat! mos~ra~I 1 nsultatl dl ~no ~tudIO s.ull'influenza .della dl: ~~*I~<': menslOn~ della h.nea s~lle. prest~lom della cache. 81 notmo Ie dIflerenze tra 11 caso dl v1ii~,1[~r.7 ..,. cache umficata, lstruzloOl e dati.
,\:'
..,:
e
',~-'~l',.l 'I'
~""" it.,.( ~
t'>t. ',~
~~~~~;:
" ' d., ;.~
7.4.6 Aggiornamento della memoria centrale
.
',~~:~.':;"
~if.Jjf·'. .... 'I'i"-';."'··
,'.' "~::')' .,
i·..'··,.·..··
:';""'..':;::'
.
.j':>',":"-:
f~{~"" ' ......... ·l~":·.'·
d:"'''. 1.'9~'"F.: ,;: ,;>:,:
,
', .'-"'~." ,"~"
..
J.i,"{,~:: . /~ '..':
,""ill I \ '-;...' .•
,.'r-,;:·
.l.::-~·_'"
'."" " lI·~··:
.. '«'" ~. "." '.
. j,
;1':.:" ".."
..,'" " 1' -,'.
! ~:~;Y;.i" ,' t .. , ..,
;; .
. 'j '.,'..' ',' , -.~.'":
.,."" .. Il"l.,-»." - '
':ti'..r,t-, ·.Y-·~f·.
""'Wii""'j,':'l" ".'·'oil·'. T', _ .
Delle due tecniche write-through e write-back si e parlato in precedenza. Ambedue prese~tano 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 e il 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 e stato 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. "" ..
r-
"~f:·. "I .,~.
- r.~ ..':<
.;~: ,.. '..,S: .'~';?; '1.:;-'
.3~0."8__C::':,:,a~p~it::o:,:,ID:.-:.g::.,.,::,·..:·.:-,--C-
-
,
,"'''~i\' .'
•
••
• • •
•
•• -
•
"
•<
.".
...
1,~"t;
•
me~?na, qW~dl 1a pohtIca ~nte-?ac~ f~ usa ,dl-.una :banda pet3same .?lU .iplc~ola .ed. e '.;;;~:~;!.
I.
perclO convemente nel caso di ambient! cil lavoro multlproeessore per ndurre 11 traffico :.;.~it . . . I ., d II I f '11' . II I.. ""~(';'" tra processpn,e memona. L~ COgI,P e5~lta . e a .qgIca.,aum!:!n~a. Fl. ~ .1 pgp.l, YP . ~ cJ.\.Q .:',';. ......,., .. ". cadlg,vtene ''"' "'t" " , ,." "'il '"1'''''1''''' .. '. I. ··'····1' l"~'" una..J.iP.,ea.dl SOS.l~Ulta oq~qrre:.col~1arn~, ,C9P- e,I,lU C?iln.me,m9Ha, c~~.t"~,~" :;Al ';.".J: , "d' ,! ""·.,. ...1, .. ' 1 · ' " ' i ' t t ' :. !'d"ll 'll'· .. , .' \ " ',' \;., '.'.,' ' I ' .,' ... ! "'J;.";' se ill prece" Elnza. c e stata una sen ura. su. que a. nea,. , . . ." ~ .~ }it. , .. ' ~. :.. ,.'; ~lt'" t ;' . ~"h ) !rb: ~' Hi li~e' da" > "atiZ ~~~tr'is ~ ~tto' ~il~' t ~~l >!~,~1. ,. -'. ,l?';~¥Q.f{ C¥..., : e- ~.rR'h'g "~il'" .. "~' ,P , ~, "' . p '·" d··J~ ..,'; 'J']: 1 ,;~ ..,., "'J ~d"'· "Pd"'' 'I'] ~.~;;:: cedente. uest~ tecruca ~ va.tlt~gglo dI g"J"agt jre I, per S. a Goerenza, el a 1 -, ", . II 'T";: . : : . ~'". ' . '~'I'li" ." ,il~, .:. ""II" ;" ' -,:' ~.:' .' . 'j'~:l~' ·'Ii" :,' ~ . ~ . '!;: ":'C'''l: l.' ,:~ ~:~~~n,t~ ne.;f c ,: .·~,P~)?~~~.f;g~t; .B!~~P~~ .~~ ;~..~~~ona. ~I! !~T:-\?-, ,!n~e'~~?~~'e; Iv ~ ;,}~~
Ita:
'sehr
lea'
'J.'
'a.ch'
p~\l$~W~~"rfi;~~f~1di~:;~,~j~;~~~h~r;;;\P;~~1~:~lt...,¥¥'0iS'S'~H'~~c1i4':S?«C wr~t~~~~~o~~.~!?,!~oP.y;-:?~~~:$,\y~q~:r.~~/~sl~.~Py~J~~;&~L-,.q!j',h: ·fI·,·:'·i~:ii!: "
,,~
.1 '.; ',.
,;, ''I'':.' , .... .'"
.,
:,.~,""
"; ,".";.. q'Ji. :rl";"::.
A~ 7 . C·. ac ,', "Ii'e'illli (;.;:.'., It'I'" '~ I'lve II 0 "... ' 7 ·..... .. . , . ,.. . . '. . . .'" .;: '1.
'., . " . ·
•
~"l'"
'.' ,."
. . , .•
'.
,i
'
.",
' .•
.
•• , • . • ,
·1'
" ".' ,,',
,
, ,
.. ' ' ' ' .. , . ,_
'.,'
.', "...., ,i' ,; ...
'. .
'I' . : .
'.
'f'"
;'~.
,
"
,....
:
In :';"' .. i~,·;-.
'
".
,
.--.
"I
I,;!!:~'
m1.~
..
;!.,"j', .. -''''~.
i':' ,i'" " ., I'-,".I ':','. :::~ M
, .. , .
I .• ,
.. ' •.. , . . , u'" --;- , ,., "
.·r
"."
. . ' .•. , . • .
I '.:'.
,
I .. !
,
.'
.:: ."
", . . . . .
:~:~ ~:.'<
,'.,
"
',11,\ . , . " ;:, ".
':~:~'
~b;~~~.orv.i~~i~~~;.l!~:~~e:~ ~t~t:~ ~q#~R<;l.Qtl+a;!lo,,~c,~,p.qA~~~~ww,~~1.4~~~,~iR·'#~I~~iocit~ ';.~~ t~~,-9p·V ~,P1E:;~qp,~. C,~~t~~.e, . Th:~~~v~,~ l~~~g;~~~ d1.Y;~\?~~~!~~~,~.¥~a ~PI;l.',.~u,eJl~ :d~, ~.~f (l:,er~l ~.I\~ .~ach.~, 9j ,~Q~.~,€! 4~.Q.?:eIV?~0.n~ ,ca;p'~~~ ,q~ ;~o,n~~?~'i~J~) ~~W?J: !P¥~€!' .~ei,pa.m :~~:1 dt un programma. .. '::: '0 i;, '-.:' r!' ' :;'1.' ~:" ;:',";i fi ., '.''''"i ":' """:':" 'f'll) ,:~.:;::,, n bl 1>' . II I d ." ad' d' libert'" d I . I . e'. ", , , . ',!-. p~o . ,em~, p~ .~s~r:e poso. 0 !~~~n ~, Q.1 ,: gr.. :-~. "~ .,.'" .f!'lll:' e; "~~~ JP~aj CIO '-} illtrqq !.1c;e~1.9,F . .~~z:o; l!v~l~~ /9:i. 5~9\e .t~~. su~Ua .~\~. pI;esent~, :~.' J~, ?1~,mR!!fi,. ~~~t!,al~~ '. }~ j'!
"
:e~i~~\~~«r!£~;~;~~qS~J~«~~";~o~1&:~~~~:;;I~~?\j:l04li~~~,~~I~~:i~!.if~":~~: par~e. 4~l1e r~q".lest~: q~$t.w:a~~ fl.1~~,p;.eP:l~~I'~i fE1.~:tr~le. \~, ',.:·r :.;,[~ .. ,~, '., ,. :l;:,,~ ":"' 7 a . ..,.~ r pel.I.a:. .;1: i~q9 ,;r}P~~~.~ } lv~IQ:I:~ ,~,p~.91. ,~,~~, pn.p.~lP.~~ ~~.~~~.~~i~~ :u~f!l :g~;~r,j ·,:~ '.1:' ':."
,', . il.
Chla?i memone.pe.r ca.che d~ pnm~ e s.e~ondo hvello..1 4~~~'~9~9 :~W~,\-:~!l::·,wr-gW,.: -if La ~~f£~~e~,~.~.,.P.~'t',P.~f,;~r;f;l dw= .+~vr~~~:~ ..cr~ lr:. ,!~~~~?~~. c;I~l,·.W.l~~ :lp~e1191umuen- :t zif };
~~.,.
Primo liv. econdo liv. Dimensione della lineal(lfyte1 J ;::.~;; I: t ~\ r:: ':~·li28 ( I ; a~'J f~ "IJi. 1·3!l-~2.~& A (! Hil lime (deli di clock) normalmente 1 4 - 10 8-32 , I,!,':,: ,,~R -~9 710,*,), .,%.,\,~" , ,~naliz~~zi~~~,?i1'\tli~~.r1\9Jc\c~ 'i~%: 3% •. ,',,' · .• ~s_~'~¥·'·;"'!'·l"" ;'\ ""':'<1 .'l:',?·,~·:!.·" ' ~d,o "25 '-"." ·oi,.: ,. · J)..llJlell,sion e A¢.lIa .c~<;he.(kbYI~l. " " . . 1,.p .,,,..., ',z56:~ddd'" . . . . . . . '.
';'i~: , ~.~, '")~ --,..,
.\ -.:~
"":
:0:' ' ',~(.. ..,·,.~
gi
I
': I,)
..
~
"I~i ') TabelIa 1.:i"JVil.1Ciri't\pi-ci'ded)ti'Jitipald)a.rametf'\:Ieue·hach~"d'niHin1Y~k'ecbnirtdiveltd.I'd·> ,, .. . . _. .•. _ _ '. , . . , . . , < •. , ,,I . " ... ; ,. ,: ,". " : ,.,., ,.,. , " .',,"i.,':i ), 1.',\'" ".,j', '·."'l'.;· '_ . .' . . ''
:.
....
.,
.
.:'
"
,r
'
",. ~ Ristriviarno -1a 'follmula cite lega, il ·tern pO' 'medio ,dj~'adcessO' alla.. ca-~h~:··~~r ·il;':~·~~ .': deld?ppio l~vellO". Fac~~do·.tifeI!,mento:al~3:·7.,~, Be' i "·li"Vell~··.·sG~O ~u~ ',si. ~a.:",. ;." '., ~.::.'.' .,:: Jl '.. .' . '.. l' ""h'x t +ht-'x (h "xT+m ':Ii't)'" ,. . . . ' "(7'6)' ',: ",.;,...:,.".,'.,." ...",,9:.::-:- l·i.,yt .~:.:,.2·,.J?~,1·"'}":' P'";,,,'II': '"",: ..,:; :'.'\ '~"-
." . : ' ~9Y~, il p'~di<;~1't~~i ~if~~c~ ~j ~r~~,l? ~V~l~§J~v.~H.~.,:p'i;?',Yi¢i~~({~H;~i~~~~)~(q'p'~Cllci~'.; ~. ,s.~ n~~IJsc~.i\, ..s~q:md~ l:iV;E;~,?~",,,~} Jtp;tL~h~, ~O:l",:ll·~~E1mpo,dt·f!!Sc;~~o .~IA8:.Ca.f~~, p~ <,-:
secondo,liveUo, .comprer:tde anche il tempo,d~ trasferimento,da,questo.ljv;ello a1.prlmo,~ 1:;
.
'l~'''··.
~h'"
1
:1'-'"
I\~~~':~'"
,-,•. '," ,.. ~,c.,.'~
,
tl'l,"~"'
"c"
,~;~:I':'·'·;.. ."';r, ,~~ ,''. ",'
- ·.ji~·~h~i;
--.:=L::.~m=e:m::O::·r::i':.:oC.:ac=b::e:.,.'__3:.0:.9:.·
.,..
1
., h'i"cl-l',',
'"j;y I~"'r'··' I"['."'!:'
.'
~~,1~/.
..
•
tela combinazione del tempo di accesso al secondo livello infenore e del Li.'I~~'~~!:· men re :cessario a trasferire il blocco.dal Iivello sottostante. t1a memoria centrale). . ~L;' tempo n d' fall' I' d II h di d I' II ' urato suile t
n
l'
'
.
,
~~
~~
C;l ~~~k.
~, ~b$l~~1~<~':,·,,~
~.
~~m
M~
<'
.
'"
I
!S'
valore del. tasso limen t e a cae e• . secon 0 lve 0" t:: m b " " • • ,I."..:;,,:.. ,'chieste che. f.lhscono I accesso aHa cache di pnmo hveilo. Per eVltare am IgUII. Sl ~:\I~1;ll!:"'-.:.:. ,r .. .... ' ..' ..... - . _~_ .. .... -, ~.<.,~.~. '. ',.dottano Qumdll seguentl ternum: . ."kl;i!,"'· "{;Wit~,'::.,.. . . . .. .. r.ji-~·{~r: ,,'." • tasso di fallimentt locale: numero del falhmentl relatIvo al secondo livello dl cache ~"""" .., d I' . . all'" -. I' II ( . d ) ''''~;i';.·::-·. . diviso per il numero totale eg I acCesSI . b stesso lye 0 cornspon e a m2 ~t::¥h\r::,.,:-:, ~ .. -'''' ~: ", i : .. _. -'. ,>;!~(i.,;...,:,;.. , :;P-,4!P}.";;' ,,'
t:,,;~[i~r'''''::;
. :~:~ed~!;~li:~;::/~~~:~~I~~~~:oc~hf~~:n;~:~;I~ t": ~t' : " : ~ '.
1
per il numero
. \ memona lmpijca che la dimens~one della cache di
n
concetto di gerarchla dl ~~:N!fL;~~';:. vrande " di quella 'della 'cache di primo Uvello. .,I:,..,....:'.. . secondo Hvello deve essere pi u. 0 ' , .. .$.~;:,.~:<~;' '-' . Se la differenza di dimensidrie e' niCtOIa. 'it lasso' dffalliirieritt sara. alto: la cache 1'1"1.. ·'1 .~f·0;:''''':)· dfsecoiJdo livello deve avere"dimensidni vitihe ~ qu.elle 'ill' :Una: meqtoti~ centrale:'Se', '\0;,
"
'
" .
•
•
.
1.
. . '
~~!'! t\ttf5j~;:,~' ::':: 0~~~e!·,t~1~'·di~e'refi~~ e·,e~~vat~y:·~~~ ~,/~~~~~.f ~Io~~~~,.~ ~~~~.V~~~~~~·~~~l1~'~.~
fm" :.t1)~~ .;;",.., 'una cache a un solo hvello della stessa dImenslOn~. ,.~,.. .. ';" .. : ',. 1t
,'1~" }~
...' ;: I, ., . , .'~ \~t1;;,:;" ~ Ri~ordiamol ~finel la p:oprietd di incl~~ion~ dei live~li multipli1 pe~ la .qua.I~ una ·jJ~z{j.:""',' cache dl secondo II.vello contlene anche tutti I datI presentl nella cache dl pnmo hvello
:,:' ..'
-,' ,". .
;~l;;'*'~"~ :'::'[~'V18~
Ji;1~' iJ:\
,'j':,"i ,;, 'I
f;" ,
.'f •• ;'
:;.;d ,;, . ';l::.:f i': " " II: .. /
.]~!
I'
",)
1
.
li~ i,,·r,'. , "1:";.;
~~ :~~5{~~' ,. '.:)'~~JF x~~~~q.'~, \¥,l.a.,·~,h,e ~e. __~9:de. 9A:;y~lit .pmi?~~t~ s.~. fl.~~ ~a,~~?j~e: i\'~~r:!Dit~
:(·,;·.'~~l~~~~c~~~fs;~bU~~!:;:
•
~~;~~~il!~~~tr~R~~~:o\6 ~a!~!:~i~rir~~~':::
\.
'~' ~¥3b:~;:·.~~pIJ.p.p.h'(Pl1Qri~.~t,~v;la. :nel,c~Q .qeU:~~cl~$~~n.~)1il :r~V~:1(;>~, ~~g;~.~ ac.c~;~.~gg~nsce
~~i~ ~~I}~~~~.:.'~,,:,:: ,,~;,ay:er~, b.~~cmi,PI~', p~ccp.h..n~lJ~;c8:~,~, d~. pr1J;!;19,:~;y.enq·.e .m~,gpp.t
f:~~' .~~~fY:!'~'· ~:y~IJ.9~~·""i
' " j ',_ :,';:",,[Ji; ....
'!,
.j,:!." . • . "
J'.'lj.',1.
i!!'I"I".' .,'1'"
.,
~,;"i
:'
,J,',;!
~;l, .• r·,;;:,. ,:'!
t~ #I~j\~;./
f,-;q
,.,
?M,~~j"
\i:;'.~~o~~~~.~p~qq~ntl ..~~.QIQ~co 9i l:!~<:q~~q ,\1:V~~9 4~,~~tl~\l~~ . J~,qsllf~en9Q, A,~o[l)!.
:lo
~t , '.
.•.7"a~~.. ' ..\i;';l'1-...i.1';· '~1:;;}~~"';. R~" "
:J;~
~~'"
q~ !~~':d
.
,
;.t&:';\!'i..l~"'"
;1;~~j).t~'p~i~a:p,\l.? ~_~§efe an.q),;~ ~an,~~n~~~,~\iP'~I.~9 ,qLf~~ntp neW~<:~~
>alla;cachedis"I'qn\lo hv~llo, ,yengQnq, 1l1vali4ati.lll\lkq\lelJ>10ql'J1i,~~1.Ia. ,
de I Iasso d"1 :1'.1'::1
au menla..,.;.
mISS
. j.:i;'I" •
''
.
\I, ..... i.:." "~." 11,· .;.
. . . , • "'li !,:., .., i"\"',,! ':. ,,;::"::'
!.>lit',
1
.',
•
",;,':.j'
.
'.
j!:~".,. ::,'"
\
I.
c",cJ>e di,p,lIl)o, I . . . .
·c.·.;·},::: ;,. ~:nl."· _ •
<
··;:.-,,'1 .... ,. ,,In ',,-.1.' '1:.' ::1
~~:.',: f&1@i'~'· 7~4:~S'j~)b·stii~i{~·m~'rif(;·'·:d~:lial~~_2h~, ;.;;',i·ii,I;I.,/ i,r.' ;:'::.',!'~. i,!.' /;,;.':j;~~;~~':[I;~i(~':':,,~I,;: !: . ,.'.' r.,.,..' ." '." "'.' ,. . .. ,.,. '''.' .' ...
,~:~:-i:l 7:~~~'.,;
~~~~ . '~!f:'~""
n··
.L
.'
·,~.... ')·'.'l;l
'.. ,,; .,~
j··Ji
,\'';!!;I
'.', •.•.. j:.
lid~. ).J,:·:~)'h·li·'I·;!h '-:~!:".I ':':'}~iJ:
t
•
." ,:::..,.{,;:
•
.....
,
\,\.\'i'
Nei sistemi a memoria virtuale si pone un altro problema: il posizionamentQ~d'eH~ ~.~ ',~~~:~.:; CaChelI'ispetto..a:lla- M~nJ~,MemO;f:y.Manag.emem Unit;.l?llIi.ita,di·ctra:duzione·.degli iindi)~~~~~ \~:W>':'" riz2i'd&"!"irtuali·;a,fis~ch··lnFigiira'7..l0. mostra Ie' due altemative,nel:-pbsizienamento >;:~"",.,~~U2t... deUa,cachei"" 11.'·..·.. "d· '.';'"';'\>1', "Ird ·'/,Ii, I~:~ ,.; '."(-,';.' ,~;!, .. "". 'j """:',L(!:r:.";11 1;' ,;\~ '~:?tj.. [ due casi hanno Ie seguenti ~ara.tteristiche,distintive;. ';i',~! " ... ~ ',,:' .,.. ;,';,1":',';.' "':, ."G?~~" '~"t"
,--,\';;;1,
_: .• :.,"W
-'."
.
fo-.t·-·." ft,,:.:.,,;,. ".;;.
,
.:' "j Qac~~,ji~fca,;\Lc: .c;~,*~ ..e;pps~a ;ai·~Ue .~~~\S!~lt~~,Eij,,tr.¥~ion~ :d~~i i.p.~rizzi.
.
:~Il;WN::;::' ' ,':,,: ,4\/'lW~~tQl~O ~~f\~.cesso
.. ,:r~y· i1t:::'
:1l:'1:~~:t -'~~!t~\';t;,,'·'
:,:~~i¥. %:'
;-~'~ ';.~~~~. :!~t ~.,
'
,.,.'.''l1.''
,.'
,," .... , .. , . . . . . ".1 ,.".,""
• Cache virtu-ale. La cache
.
-
. " . . • , .. i . , " , . ;
.••.
J.'
"'.
" ....•'. ''.':', .•
e posta tra 1a CPU e
......, . . . " ,.. " ..' .• :0'
:'".:. " " , : " " , _
'I}
"".
''''J
1-
,"
I'hardware di traduzione degli
,~!: !~.inqiIi~zi,; j~. t~,rp.o.dq J~ r\~ett'a.~~,.~ach~,.~ effett~a:,~i~ia~eJ;sq,l!l9,4ir:iz~;~I(igico
generato dalla Cp.·U,.;Se il:dato,appartiene:.a:una!linea·,(nello spado deglidndirizzi'
I
I. -
1.
I•
).
I I
310
Capitolo 7
CPU
lndirizi virtuali
Indirizi
MMU
reali
',
CACHE
I
'l
Memoria Cenlrale
Bus dati
.''.
." .
" .,.,.
,
,':~"
I
CPU
\
i
:o'lfi',;.,
1
-~.'
I
r~,
. "
lndirizl rell!i
·r~,.
~.~~.
~
:,,""
--;;~
;.~" ","_w
··
lndirtzi virtuali
Memoria Cenlrale
CACHE
"~,
'\"~""
I
, "':,1,')' ':-:,
i
:;',~~~,
,·Jt ,.
·
'i
','''' :~ .. ~~
Bus dali
Figura 7.10 Posiziona.mento della cache. Nello schema in alto la cache
eposta a valle della' ,::~~~~li~
tra.duzione degli indirizzi e dunque 1a ricerca in cache avviene attraverso gli indirizzi fisicij ~.,/}~jr:. ~ nello schema in basso la cache e posta a monte deUa traduzione e dunque 1a ricerca viene '::':;;.~.t~, ; effettuata in base agli indirizzi virtuali. f
..
l~gICl) presente
. In
,...
,<}1Wi .~:~;~~'" " , ,:;~.i~~
J
Cach~l non c'e.-bIsO~n? dl fare :lcorso al n:ecca,1llsmo dl tradu· "kl!~ A
quanto esSD 51 :ende disporubile entro 11 tempo d1 acc~so della cache.-., .~~. [HP93}. I microproces50rI Sun SPARG [Sun87] hanna 180 cache Vlrtuale. ,..:~)~.
Zlone,
ill
;!~ ~n~rambe Ie S~I~10Dl b.anno del pro e del contro. Le cache fislche sono PlU '.-:'Y"~~{ semplic.I b.anno COst1 PllI ~ass1 e conse~en~e~ente hanna un favorevole rapporto co~to :>:~
. ,
.
.
'.
., ,"
1
\
I I ,
;'~\~~ "",~.
.-
MMU
-
I
. ":",-
I
I I
· '.:,'~" ",'.,.
I
pres~?lll. InoItre non Cl sO,ao cO~pl~cazl0Dl a espand~rle, ~ualora ~ ne present1 ~~ .• ~~;~ nea:ssIt~25. D'al.tra parte, LDdu~lta:blle che le cach: ~rtuaLJ.sono 1~1 gran lunga. Pill ,,;~gJ!K effic,~ent.l.. uno hit eli .una cache V1:tUal~ consente dl. nsparrmare 11~tera,tr~d~Zlon~ <:'t'~~,i ?ell. ~~zo_ Thtta~~,le c~e.VITt~all presentano 11 ~ro?lema dell a.mblgUlta negli :\:~~~t mdirlZZl discusso qUI eli segwtol il coslddetto address ahasmg. . :"~'~'t, In un sistema a memoria virtuale, 10 stesso indirizw virtuale l puo appartenere '·f~~ indirizzi, ~elativi a differ~ti processi. Evid:ntemente" ;:~~'" a una mol~eplicita di ~pazi ~ n::essano. accertarsl che il dat~l ferruto dalla ca~e ill . c?ns.e~~nza dl un cer~Q;:,..,;.?;_ mdirizzo 10gIcoi appartenga effettlvamente alIa SpazlO deglI llldlIlZZl del processo In ; :;j~, esecuzione. . . .. , . . . . .. .' ~:~,~ . P~r .ovvIare alla pO~lb1lita ~e ~l determilll una Sl.tuazlOoe .per CUI Vlene generato" ;:~~ un .lnd1I1ZZ~ che determ~a un hit ill cac~e, rna la lmea cornspon~ente rap~rese~- "::"'~~ ta mforma~:Ione portata ill cache d~ u-? dlfferente processo che era m eseCUZlOne In ",:~~r precedenza, sene possibili due SOIUZlODl. :<:f;'l! ", • La soluzione comunemente impiegata consiste nell'invaJidare (flush) la cache non
e
?i
, .u,
I \
~
' ',u," .. r,:~
. r~);, . (:.."
215Non si trascuri questa aspetto perclH~ esso incide p08itivamente suI tempo di vita atteso di un sistema, ossia. lao finestra. temporale entro lao quale il sistema e competitivo.
"'""[ '~,~'
. '. ;i~i
'r:'~ "'~
.&:/.,
J
La. memoria cache
". ;"i~'L - ' ']J "i .. ,:,'~l~!'~" '.
.-
.'
"'.~"
i~"
, ,~;.i;:!'-;.
zione. Questa soluzione e adottata per 1a cache dei microprocessori Intel 486 e , ' sUCCeSSIVl.
."I·~i'('':W l!r)' ."1'
1'1, ~.
,1!Ii!i":",' 1~1",·~I·",' , ',. II.' ~·~,"I"i;·' ll.Irlf.'(Ioi'l~wr;,', '~ " .. '
.'ru::':';"~"l"';'~' 'l. """ .. , .l'~fl':;'''''... .~
'.
-
-,_ ••..,11:.". \'''-;' ~
'..
•
l:~.,IJ!'l"!',··.·
'.'''' J.". • I)··.. ~··, r,Jt"rlr~:'
i
1;~::l,!:'::I"
1,_II".i~' ~',
"e"'"
1~"(I~,,' 'i
•
I" "Ii:,.',>, . I;'
":l'~'. . .
. 'I"~"~"''''
~\lr'.. ;:-·... ·I~·'· 1'1":~, .'::'T'il: ,.,
,.,,\,.
I~'\l'il '" "W' i :~'".. ~I',~I",.
i':l
311
~~,",~;:,'L
Un'altra soluzione, leggermente piu efficiente ma piu costosa, e quella 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 e adottata nei Si:,t1'~S [Hei93].
•
'~"!\.''''~' .' '
·'~~f~:rJ~':. 7.4.9 Multiprogrammazione " .~'" .. , I'~,.~n'~·-
'.' ~
/
'
~i~t~1D;',;, yn fatto~e che ~nfluisce f~rteme~te suI tasso di:.rrl.iss ela frequenza con. cui un process~
~ijJ~~:;~~:>;. m eseCUZlOne VIene cambIat? 0, mversame~t9~11 valore del. tempo medlo t:a due.cambl ;~~'{~I;\}~\; di processo (Q). L'effetto dl Q suI tasso dl I111SS non e facl1mente valutab1le e. dlpende
f~n;~;;(:,>
in particolare .cial. cari~o di lavoro e .dalla dimensiQne della cache. Si
~uo notare che 1a
J'~~r.li;"(:".'.percentuale dt mISS dl cache do~utI a tal~ feD:0men? aumen~a ~on. "wcremento d~lla
rl~~Jjl;~G:,_, ,'''idimensione della cache an~he .se il tas~o di ~all~~entl
total: dI.mmUls~e. ~~esta derJv~ At,~~,~.~.,:~;: dal fatto che per.cache ,dI plc~ole ~enSlonl 11 t.~~o di ~ss attnbUlbile a fattor~ ~~~}~:/~'" diversi daJla multl~rogr~azlOne .e elev,:"to, per~I? 11 BU,O' .lncremento provacato dal t~i;/;':' '~aJ?bi di processo m esecuzlOne e piccolo III terffillll relat1Vl. .1'\ , :~~~)~'i;~' "., . -Alcuni risultati sperimentali riguardanti la dipendenza delle prestazlOn~ ~ella ~IJ~~~~::f:::(,,: \cac?e' dalla ,multi~r.9gr.amm~ioneS~1l0 stati presentati .in [SG8.3]., Si .tratta dl r1~ul~ ~1~~f~t;~'.>t~tI ot~enu~I tramlte sInmlaz!one gU1d~ta dalle tracce dl ese~uzlOn: di pro~amm~ ?l \':~it:~:~.:". tlPO ~clentifico au calcola~on delle sene IBM 360/370. I nsultati sono nportatl lD :~~~~1fr'::',,~:.~i.gur~ 7.11. . . . , . . . .. i.;~~tf~~:>,,"', Per .v~IQn dl Q molto basSI (1?0, 1000) la cache vlene. condiVls.a tra tuttI 1 pro\ltf~~,~(.1.,'.; ceSSI attlvl e qu~dD un p~oc~sso Vlene ~osto nuovamente ill eseCUZlOne, una elevata 1,~.J;·~~~.;·" percentuale delle mformazlom precedentl e ancora presente nella cache; per Q molto /1~t~l::i,:::;:. elevat"i (100.000, 250.000) un programma, quando viene posta di nuovo in esecuzione, .~b' ;:;t;,~:·,:::,,~ t:ova una cach~ vuota rispetto al prop~io .set d.i lavero, rna iJ periodo .eli :secuzione :1~'1'~~::L"':" e suffi.cientemen~e lungo da permetter.e ~ n~mplmen~o ~ella ca~e e qumd~ da ~r~rre .\1.~~4.,": vantaggio dalla mtera cache; per valorI dt Q mtermedi 51 ha una SltuazlOne III CUi Clas~i~'j';-:':' CUll processo viene ~eguito 1?e~ u~ tem~o ins~~cieote a trar~e v~t~~o dall'intera ~l~~~~~~:.:, .cachel.la quale cont1ene POChI nfenmentl relatlvl a1 processo dt CUI e mlzIata la nuova 1~1\~f:t·,:,:: '.' esecuzlOne.
.' .
:.~~:;~,,?-y,~,
:*~,,~\:
.
>"l?,
7 5 S'lsteml, a mu it'lprocessore: coerenza d e 11a cae1Ie
"Miff.v", ,'.. '1"1.,,1',." ,:"".:·y,:,1
Un modo per ottenere elevate prestazioni consiste nel realiizare sistemi di elabora-
: .......... ' '., ~,..,.,. ~"~
~ione
;~i1i::f(,' ';I,o"".~
~
."
:
,?,'~",i'"
,,", ';-l~':';''';:'I''' .. ~~ 1~"'"
"["1""".. , .;.,)\.l~"
~~Itl~;:'
<
~I
,'" ~ . 11";':1; .l~.~. I, ." ", ('';'~'', .... ..
", ~~~",
/-~'
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-
w ·
312'
~..,
, .' '~!:<
~.
Ca.pitolo,l7: ." .. ' . " ;
. ,:"i~1!, ,~'l ••j
· '. ,'., ·
,/,0.-'00',., Q-l000
0.100
.',
., ... .'
", (
.:
',:1
... .
,.. ~. '.
'0:050
...
--, .2
,
',
"*:. "
.~ ,~
..
'1", '; I ~" ;
, I .
/.
"~d' ,.' ~,I
tr-o
- 'Volore del' tempo 'medio comb; di proce""o
"'~4c
~due
· '~'" ',r.
"..
• i~;[
O_JOOO
:,:\
, "' 0 "
a
~.,:
'
..
,.
i
0.010
..
" .'
-
. . , ,'., 0_ 10000
. ,
,. ,.,'
Numero
'
set·,. 64
,
.
.~
,
.• ;, "-',.:\11,
•• ..··n
IJ>~
".;'
i'
" : .,
..
. " 0 ... ·10QOQO . , " .. " ,
".
,
','
!•. ,,:,..,;
"
.!
..:' ""r,',
.!
.
'.
~.,
~
, '\-I"",'
'.,
'I
" ,,
"'. '.'
·..:..1!1 ,~,!, '~~:tl
· "::
"
"
:""~~ ';.~."
".,·,t'
"1 ,
·:'.:!}t:
,''":ri/.n ......!:!\ · .. 'l'j,'-
0-250000
'-':':.1' '.I. .,. -",~,",', ".-,...,'
",.'." '·I""""!.'''"·''''''''·", , ,' ; , ..• ,'.,., ,!, -'
0.005
Oimensione dello
.:' "\"': 20000""
.i·O'··"
, ~'; ':I~ :{.;~
~ ~!~j
'~Q_jo'OOOi'l ,!'
'":
/'
di
,
:'
'.1
"'~ 1;40000,;
cache
,;',"
-i~
'·.~~-I«··.~
' . ',,:~j
byte
....
':;)"60000'
I
'.
· i~", ",,", , •.,;!;"j',<~,
Figura' '7''-11' TaSso' di 'nllsS per'd:ili'er~nti 'interv,alli' di' niulti~)r'd:gra~a1:itih~ Q'(misura~o' i~i '~':.i[~ millisecondi)' p~ tra:cce ri'caVate- da: progranimi' scie'ritifici;' .'.~'.J:.)"'_:.".:: .. ';,~ ., " ." , '.,
,!,.
J ..
.,,' . .' ,';
\."'
. ,~,
,
.
.. ~l·I!
.. ,
.;!. .:: ... ,."
•..•
• •'
""
.
l"
..
,
..
'
.;", ,."
. ..
_
..
:i
)
. ;,.. ·.\i
l.
. , I.' _ . .~,
.'
••
"
.
.
f',
\.'
,.. "~'" ..'
.,:.!
"':',
.
,.
' , ' "": ; j-
~';1:(;,I.,
.,.;\.:.i:d···~t.il~
,'.,;,-,,!:
• ".' '."'",
',','" •••
_.. ,;or, {.,.-tt:w
': ~,.:' . . ,d;i,,'.';·~~I
piati .(.loose.ly;,~otLpled),.c,osti.tui.ti ci~ da rn~cc.hlp.e :fisic.a;.mente d,istint~, .conne~se jq.··')~L rete.e j:omunicanti.att~av~rsoscambio,di messaggi.. i'.,.:,:'" , j' ;,;:" .,,: . : ," i\:J.~;'
.
. '"l''f@ ~ )n ~e.nere q~an1Q. ,si p~ia' ~i~~~~~ ~.Fui~~.p~oses~~r~ '&i ;nt~~d~. ~if~r~~:si' a 'rri~c~J ~v.l.~ <7hIn~ C~D: C?,~V, {ort~~~~te ,~?f,~Ppl.!lt~., .~Wlft.t~y .,qf?'lJ.p'~etf),: f??~'~rwre ..p.epa. I?e,d~~~~~,: ,~'Nlt
¥
s~atol~
-:- .s.e !l9J:li ad
d~s~inq}i~~ '(~,~~~r~V~S,9';\in' pV~·;:~~~~le~~~;e~~~.~ijj~;~i' ,f,~t~i.~?p~.~$,io~e ,'q!1~C;l~q-J.i lo,'t:?: :~~;\f
numero
e'elevato).
In questo caso 1 dilferen'tt processotl accedono alia me~e~Ul:~a,1lJ..~ ,,~,~,
Q~:~~~'~~~~~:~~~~i:i:~t~~bf~J~:)~tJ::~~i~V::aOita~~~t~b'~~~~:~P~~~i··,.~~~
copte.n4o~·q.~a: rn.~.~6r~~,¢e~~~~at~',''~;~te~~iii~'?o~'~~J.~r:i~~({piobl~mi'.4~~:~O.ri,~rs~~p~·~'~:".,\~!i~ dall'altro di degraQ.~i6ne. delle prestazio'ri! ~ s~~.ur~~o.nf;!.·d~11a:.:,~a~da.,d'~rdisposi~iv,i ·df ·.1~·1
iil~t#~0ru1~~S~9t;t~:[Yx~$'51;'(A~~~l; ,As$'q~!~r~:;~',:Gji~.s~~#.;q~cls~~sO_~~;Wn'.~:~#ll~.~i~~~~~.':f:~ ratiC"am.e te .6bbli ·t 'ri6:::DeI, rest6.' i ''r'OC~sS6tt' delle t"bor ·ehti'·, ~rterazionl" oitiIio1 : !~'r 1?, .,,'i i ';!' ~11i.f';" Ch€lft;:H~1 .!:.{' ai;r(:l~":t~~~" , ";'l!,I':d~":'~ .;f:.r""'?'l()I!!:"H·;·lit.B";I;iii": "l':""~" ~ol1}u,t;l,q~:, ,u?<,~ S~E1 c, '~I;"!":-'.\;,.:,,: ,.~:n"'i liJl '~~ji ":"';1. t,;': ';!t';:! ,j,:"'~" ;;:!'i ;il::i',":'cen rdo-le. . . .. " . . . . ,. . , . I I," '\J\.. .1:,' :,(\ ... ,''',' i :'i' ,:,j;;;'..-; :H;""J::':"J\'J "1'(", ":n,)'j;I~(' .),'~1I:' ;.; -'Ii ,,~~1 ''''. .' ..,
,I
f
;"".,
.....
"
• .:.::
Negli anni recenti e ernersa l'architettura a rnultiprocessori simrnetrica ('SMP)!'SP r~~ intende una struttura priva di relazioni master/slave, in cui tutti i processori sono a li- ':, :~J vello paritetico e possono eseguire sia il sistema operativo che i programmi applicativi.. ,~,~ D~~r~.~qRe;sti; ~~t~·H1l i ~QP?"~tf~~.~P,~,~~Je;· '~I~ ~ ~PJfYllffc~a;~ l ;B;~1~,~~~~te~p.t~' ':;: assieme da componenti specificamente progettatl per rendere il loro runzlOnamento ),ij coere:p.t,e e. traspa~ente ri&petto at nU!Ilero di processod presenti. Questa orga.ruzza:·, :. zione' ~"tipidt tter'cosiddet;~l 'se'hJe~; :mcit¢hihe'~el1a'C1~se\ der PE!isonal Cotnputer ad' ... alte ;p' r~st'azH)m:!, 'dbv~'si' p'OSSbno ttrovati{2 .14!#rtcilvolt',ffino.: a:, 8 CPtJf" ,-' :.ji In;;;l :l;!,;'., ·~", . • , I .
Ali
,~'ii\ it:''':';!·:·l II i; '.J' ':;;"
:; t
~~I'11 t'C·")"h'ii, .. ';'.•; t'.l[ ':!"ijt:;;!',o"l .1rfi;tU.:!:)}
'
::)JUna:'-caratteristiea di, questi ,sistemi,·e,che~la,tete dli j-ntere6,nnessione ei semplice-
i
mente '. un' ',bus"sul. ,quale· tutti i ir;pmcessori I sono, ooUegati' ·e· che tutti" sono.'in· gr-.a;dti. di. .
)
"
'
''
."- ,:,," ..
e,
,~(.
'I
"
", ,. It' ""- . " ,',," ,"'~'
,~,
t_
.'"'i'" t_' II,~."".,
~
~}l.(-'
....
La memo'ria'cache
..!l!)'r.,. "
313
'
"'--'' ' ,'".,.,. -".;"I .'.. ....." . ~
.
1
. :~~r'''~:·· "
, !~·~t~~-~~servare e di pilotare26 . Ne~. seguito faremo tend~nzia~ente riferimento a sistemi ~~. _)1~~'SMPi ass~m.et:emo inoltre che l~ 1singole ~.:U abbiano una cache privata, come nello lt4 :;.t~~k"; ~chema dl Flgura 7.12. . r:;; -
,
·~I\.!.,
L~·AI.<
,
' ,<,t,.-, ·0-,_'
r.f~~' ";ll~:r:, I~\~
,~~
'"~ ,. "i,!!'
,
,~,
..
;
. , ,'~.~ ,,\i.-. , :'t" c.
~Jl\lI"'1:~"." '1_ ....
lOP
..". ;"\''''~'t,
"',,'/.' I
o
,,~
....:• •
.~m .r,>i~~,...: It. 0,0. ,d'li),. :
.>0
.,<.,,~_.1
. "',,",' ..... " .""illi!;'.,. , . ""~i. ,!I.,·:·'.:.hit;;l·, ... " ""1' -,' .
~
" .'
"
',l~.,~ -. <~ ~ill}k,,:'i1T·i.\
;i\~,i''
,-,,~-
I·'
'1l:r'j~'~'>"
,
~
'" ','.
.,
w,;:.
.
.
..
.
M,
.
~'."".',~I""i'··' . . . JI'I~i;':"i '. I . ~\~n-1l.~':'·'I1::"'~"""" '~':_'.:;;::;., f~~~~i,flighr'" 'i:t2' 'Scl.e",~tiizaiiori~ "
I I
';.",
1•
. J: \ .~,
..,:.,,1'
"
..
t ...
Po
-~.-
' 7. '.'.
, '1" ' .... " . '. ': .. "'7"'~':' ,':'."", e-
t,'
:~
"
.
Rite'df"fn)lereonnessi9ne
:~, .... :' :""'I! ".
,'I;;, '.'1 r... ' ,.,.....,
,<>,!:~,..
·IV. '~.
P,
I I
_J c.
,
!;i" :':6•.rt~:', ."1r,' ~
I I
C, .
.. --s=-_...~..._,..-, _.
.t"
'~b~i!I';;II., " ' ""!!1:":~' ,'I . :I),\':\' " _,:~
"~'~:~,~'" i"'1', \j("';':d.'1"(" rt ,,).,,·: '" t>" ~~.,. "", ; -' ,.~;... ~,Ii,' P'h"l;,'.,:
I .1 .
..
t"
-~'....
I
. -
" ~'
1
F
" \. 'i,,1t . , ,. . ,,I.:. . ,,,' . .I, .. , ....... , . 1'.:,."','.
,
·':.1 '"
I. ,
.
••
,
l. .. ",1
,:
I
•
;! .,.
e-
M, .~..
1
M.
•
. ""'.'\,1';";'
I_<'.
.'
,
.
"
" .
I':l ':fit~~f',<"di me~ona comu~e, meD;tre IO~ e un process?re di mgresso usclta, pe~ esemplo un canale L :. ' il~~l r.~r~:i.:i.: DMA~,.I.!:~ gJ;'~do dl trasfenrE; q~~l tJ:'?- la. memona e l·estenlO.. ...
-1.l1t
~~~
I 'I
.',:.",~, • .'
e;
,~
,~..
'~~'''J/'' '1',':.' ."",,,,,.'"'' .,.~
.' , .",' 1 '.
",~.,
"'!:'~~"-'I 't""
t:, '11~~'~'i~i;... ),,". !IlA'\"':~ " I~'" ,. ..,,... ~, ...,\;
f'
~~
~~ ~
~
. , 1
"." '.",.:
'"~ " ....... .'
, •• -'---
!.
I..
,,":ii"•. ' ...... ~1,.'
,
'
.. ,...
'.
I 1
.,.. ,
,.".'.;
.~"
.i
, .'
' - •• '.~'_.'_.- . __ •.•. "-".~." .,-•.•.•.• '.~ .• " -
•
''''-''._'' : '..
."'~"
.•.•. ;
.... r
..•~, , .•.
\
.. " ....
: . ' ,'..:
,r..
.
1
'.
~':\"!
'.- .." -
• . , . - - - - - . - ... - - . - - -I - - _ .._ . _ •• ' - ' - '. • •_
i,~~;*::~i·Un.~~stema.~.defini~O',Go~:ente se, ~er o?~i l~ttural ..un.~
?P:U. e.m- grad~ eli rice~ere
~~l :irJ1.~·~~t~:':se~~,(~t"fU'l~lma copla agglOrnata del datl, mdlpenft~m§jiI~tedal :pr.ocessore che 11 ha
IT
r! "
~'. 'L
-~W
.'~~~
.\',r-"
.''~~
J~?
~'"l1,
;:,*',;
ji;~,",
.!.~~, .,f1~~i ",;"ii\~. ,f.~~'
';"Al~i
'lm:U{~ 'prodot'ti;('Ii p~oblema.deUa coeren~a n~ce.dal fattfo'cntnrdato.puo..trovarsi in piu di '~"'~i;" una cache ed e conseguente a tre SltuazlOnt [DS88]: d; i'~~~,,·,.·1 .1..'" .J . ,. ',... • ·IM~~'!~!'l··"· 1 d" . d"'" ,. \'. '" \L, u~"., ..., .~ .. ,.(I ,,'. ,e:~ft."'W-f,;;::. a c~n ~ 1VISIOI}~ . el da~li , " . ' .' . ..• " '" '~r~1"'" (J"':\(J \'J' '• .•• ; .. ,.-,,'.:, " •. ' "',,' ')': .... ".:.~;. .', : -'\1. ·Hi'PI ... ",,:,.;:,,1'-" ,.'1.' ,~'u.,r;
l
'.",,:i;:'::'\'
t
'.
.
""1"';"~"
.' ... ' di'f/(j: .
'.
.'
:,,>., .::. ,":' "Hl~"': ,,:
.
..
.-
,;~
.
.J:,"');:.., : ''''.;::. I€.~. ":i:fI~" Ill; ,.·P. ~'I'~"'" III ,. I, ' . . !",.'! ,. ,; "·'):'.(:.:1·· ',j •. ,.. ':I,' .:•. : ....•" .. :,' ·1 ,~'. l~'I~ ,~~_' I:; :;\·.'~J"·l;'i:~'·";·"h·"":':'·': '!', ' : " " " ' , ' : \ . : ' . " . , •. ,:; ""~"'I"",.,·,'.,""l / .';1""" f ... '1ll!?~.~" c) mlgIiaZ10n1 dl proE:essl..... ;/ '.:.': ·r·,' 'I, ',.' '01 ,':" iI;,' ":',,:, '.":"':; ",.,,',':"!." L·' "."~!'i::-, .~
:1:".".'·
"', " ,
'.n."i·:';·"!
.
~,,'
I \
). \ J .
~ ~.~,R;' .
I~~.~~;;;/
Le tre situazioni possono essere analizzate considerando un sistema composto di ~~~\:, d~e soli proces~ori. con l~ loro cache l?c3:li, che condi~dono la. ~em~ri~ principale. ~:ii~;/',: Stano P t e P2 1 proe-esson e :x: una vanabile contenuta Ln memOrta pnnclpale e nelle rnt~~l;.",·', ~ue ~ache. Assumiamo che la con~izi?ne iniziale sia coerente, come quella illustrata :~')1.'y;.~ m Fl~ra 7.13 1, 9le p'ren¢.ere~o a n~enmento.... iilr,~",,~ '. .,,,.......~·,;~(n,· ·1<.;z .'.i.~\:.:~.: ,., ,. ,~~~~~.>,. ":'i "".~"'" ):1' ..;;1:,;;,)., , , ' __ ..... ::. • , " . (," .': 1.. .:.)(;'.' 1~~ff.?X1,·';"
i~'t~~. ~~'·Wi:"'l:~~: :'
);i
,.,
_'I.~-~~/' "bl""'h"~~""'iorii
"fjj , ,.<'
•
..
~.!i''''''.' .. ,
·1·
\
,
,.,'. .I;.'
... !
1'
. •.,'
~d.l~ft.7.5.i{'C.6erenz.a·· I~ 11 !It~t:{~,;·; . ,.
1
:,'
•
llGI· ;'~~', '~~'l:~,,:f;l~.",,'
"
.4i' ~~.s~te~" .S¥p'( $ii,;""i"!,ciii" MJi/i. Prod",o~.;ii'l;rrI) • ~;~~,;~1i': .' Pi, P::l, ". P" sono·le CPU, dbt;'ate 'Cl3Scutia:' di"una :t>.rdpna clCh~'; Ml', ·:.M...:~no"1 moduli
@
•
\
[
\.:. "';; '.; :/ :.;. "'.;
,;,':,·,'1'
>lIt·
.','
;:"':"j,
,,' "if
... :,::',
,,':, ..... '
. ',' ,'. .'
Al~ta',26sa: sarro" sisteini" m~sivamente;par~lieii;;'TW "qiiaii fa 'r~t}e "eli; int'er~bn!:iii3Si6rie~' ~:'piij
,'·20 I ~J:~!M'!rIl" , ' . ",',,';-.~::o:.}CI!::>. .1;;\\;',"1
'll~iI;[)l , .i-.lii I"~"il&. .": '!:~ .If I~ ,,,~~'.
"
complessa:
i: .•j": ,'::'·.dl i;'··.
'·'i:·,fl}:\,,:·~I~. :.,.i'
.. .\11 ':'·,Hl'r, ~:(.,u :>:,/ ,;".:r) :1!",/;::
•
I. ] •
.
,,,
r"
I
314
". "", '·t!.
"'~'
Capitola 7
~Itl\
~'''
ll~'I
.:':.'
i,'l.·
'J l.
'~. ,,'Co
l
II
.
,
''''
P,
,-~.
~.
P,
~.;
"\
,,·~
I" j-"~' 1;!) '.', .' .!1:~.\ """
I
",
X-14
':'J,~i' I:~~\
X-14
".,~
,~.
"'I'~
I
~
'.';:;X~
I
"
"',' ....'
!'.
II
.. ';"fJ 'of1
I
\
.
;"
,'·yi'.. I,"
, ";\?li,',
" ••, i,'" >
X~14
~
"'I-j'
"'"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. tr:~ Ie due
cache.
'~'l' ·:,l ",,._
'... ~~,
l\Y;
"
~
ii< .:'!I\'
~!
. . ,""", " '._h
•••
,
,.:;~i~',.; ··i .'.;,~,,,,
"1'':'01
1j' '.''
,':;::1.i'~", :W
(
.,.,L't'
J'
,,:.;p:
··
"' 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 .~i.,l.. ., ,'~~.,.' ·I!i " "~ j modalita di gestione si ~anno Ie situazioni incoerenti di Figura 7.14 '~""';;i' ~, '
',,:,,~~ \ .'
,;;,,--" ,I:;;.::.~ "!",
:It"
P,
P,
P,
P,
I
•
J
X~IB
X-14
I
I
I Memoria Condivi.sa
:r
~"
.~
1~
,, ,"." '.J'" <" ," 't!
,
'."'.'" .. 'I .. f
'. " ..;I.~.
'i
.'~ ...rr ,~,
~
~
'~.~"'
,
X=lB
X=14
I
I I
X-IB
:'I~'!" .~.
~'
X=14
,~,
't,U
: "II P,
"~
J
..
I
',
I~
( •
I I
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.
'
~:
"
;:
'
,
;
Operazioni di ingresso/uscita Si produce incoerenza anche quando un dispositivo eli I/O carica un valore nella memoria principal.e, oppure quando preleva dal1a memoria principale e 1a politica di scrittura e di tipo write-back e 1a cache ha aggiornato, rna non capiato un blocce linea, La situazione e schematizzata in Figura 7.15
\
,.
,~,,,,,
r,.""'f.":'.~ . .n·,..
..'.;~"J·· w"" "" , ,. ,,,.
'1
\,l';'-'
La. memoria. cache
315
1
''Ii" "
I~i~·,r., "
'ry'!,l';
· ...'II):,
.,;'-;:~,,'.
.<"" ,',' Co"'. ..;.. _~
P,
'';~'
..','~ '; ;."f:;. .... .." ,','
.
.?
CPU
P,
X~18
Cache
X=14
I
~'j."h
"""" )":':'~';
P,
P,
CPU
X'="14
,
Cache
,.~.";
X=14
"·'1";.',0" ",
.\~''''f,,:''' ....
I
\
"~\;I"':
..
~'.
'I ...1
"'"
!d, moria Co ndivisa
X~6
lOP
1.~.,"':,
T
I
I
....' I"
~ ..:.'
':;';'~~': .:. ,l·'~ _ •.••.':,'. '"
. ~:.,.",' ,.~Ii't:,
'a) Scrittura in memoria centrale
;'!;.'".~,
", ....'.
:
,.
!!(;t~j,
":It,.•, ...-',. ' ....
•
i~~ '.~ '(-t
J
'
:~:
'l.l.,,~li.1J~, 'l~.
,.;", ..'
W&~J:~~\: . :
'''''~:''''''
'~'l·'·'-I;".'" "1"''''",
,
da parle di lOP
X=14
lOP
!d, moria
Co ndivi9fl
b) Leltura da parte di IOP di dato modificalo da P1 (wrile-back)
Figura 7,15 ]ncoerenza dovuta. a operazioni di I/O. Nel caso di scrittura. in memoria centrale 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,
'~:~t~'~· ~
ir.:·',,!~,'
·r,;c-.. j'.'.' ~:.i..' . .• l· ..
·\.r·, "',"
't\.",\<-,; .
Migrazione dei processi Nei sistemi a multiprocessore i processi vengono spesso ~.,,'~ :~£atti migrare al ~ne di bilanciare it carico di 1avoro del sistema. Dalla migrazione pUG ~1'~"hM;";_ ,~,ll"'" '.' '. ,nascere incoerenza, come illustrato in Figura 7.16 per il case della scrittura differita ,.. ,." <"",'''' "'~.. ,r, '" "'l';j.,,\:.... i:~' 'e in Figura 7.17 per il case della scrittura immediata. ~.':.,'.".,'.'
'''''\".". r<",'""", ' .. "'-l::"',-'.
,~,
'I~~~ " "ll:"<,'"..' ' ",...' ,~-.. "'~',,.,..'~.'''''~ .. ,
'I"\1 ~""'~
':~~
,,-,~.
,.~: ~."
,.
~~.:.j~:~~l~~:~.:. :. .
."'.,
,t" :\;\' ",UI'~~" " :;;'''''''I't''' 1fi ;c/r'r~.. .
"~ 'l;lli l" , "~'l"'" I~, "(', ,l' t·
,.
PI ~'~!:!<'. ,~ !.'.. ,;.
Jj:·.l.!-,:":Ioi •
... ~ "j,,~'';' .'
A P,
P,
I
T
',i!l.;·""",
X~IB
~ ~1~~!;: '.'
Cache
1~1) ." r 'i~. ,
. ,", .
, ,
,~!,
,.
'-,"~" :' I ,hI"
,. ,
"l~.' ,t;~,~,
.•'ij"~",,, '~,·,·I;-;;l,.', '
iie,"'1"'" 't .... .. ,".' .• ~
'~J"""
s""") ,.. ~-'""'"
;. ~:?:~~ :~~:~"" .
'rJ""·.... ~ '., I..~."·...
•• , "i~,\'
.
,~. :y:; ~'t':, ' '
; !~\(~t
....'. ,~"i:., ,~',
~;."'.:p.::'
,
~ ::";,.i'~"
' ', .... ".. . ::..
..
"l""~1'" .' a~'" '>I:~" " ",, ..... '.3',ft-·"·· . I'. ~ (u ~
~,,~.
-~ ,'Ito".': '''''('<'-
~,i!':~l
.,
-".' .,.
,:r~~',:;r:
1i't~t'~~'" , •• ".J-' ,"
!'
"l'~"I' •- ,. ' . , 1 .,',1".1 .I ·ll!.;':;;,,,,~'" ....' ,,' ','. , :'~"'~'
. '" '~:~'I:~f~~. ' .' ,~
X=18
Cache
.
I
I
I
~i\!-l
A P,
I
X-14
X~14
", lri?-,.'·' , '~' : J;,,'-'"
:a) Siluazione iniziale: it processo A . su P1 ha modificato X
b)
X=L4
I
I
,
-,.'~
.'
<
CPU
,
,'" ..,:~.
..... 1••
P,
Memoria
Condivisa
n processo
A e migr·ato su P2 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 ~tata aggioniata 1a memoria centrale), Successivamente il processo A si sposta su P~ e l~gge 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.
316
Capitolo ,7.-" ';" ,:,1
:f.
!T
"'! '~
"
'
·i'l, A
CPU ..
PI'·' "
~
r-L, X~lIl;
r
a)
Situ~zione
,
....
-
-_ ..
",
...
.1,.
ill r.X X- 18
CPU
:'iliA Pa:
:~
•
~f~
I
i~
.
?\
-.--
'...
.._ .'.,
Memoria
.! .".,' :"1,'.1.'
Con~Vistl;
._. -
't
x=rB 'I., e,cache",,·I·.. X=14 J. ,." ,
X-l~.,[ ,'.' .
,.,
..... u.__ .' ._.'
Pi
I
I ,: j:a,cb,e... ,'.,
~
"".-,:.''; ,.' ': ! .,.,.,;'. .. ' . . .
P,,
,'j
i.'' '. dr.-..:···"
.,
.. '... -, .. .... ........, 'I ,:-;:"'18,, . -.,.
~:
--;
,~
.J . • •, _.,
Memoria Condivisa) \ , ,
"-
;i
I
iniziale: il processo A
~
~
,.
I
, ",,!
-::. '.Il" ", I
..
.
Y
.;:,
:':""~ .,I
""I"l"·':f~.>~{~1, :
;"",~" '~, '..
':I :.'i~l';; '*
,:~,~:t
7-5. 2 Protocolh per 11 mantenlmento della coerenza .
-.
.
'''l''c'c'''''l
Ime€caIiisrni the cOhBehtbl:10 "dr,manteh-etEda coerenza-?ond chi:aIIlati prot0t'ollqGT9l~)l '::';'~~'i~ di ·coeteii2a;:delle· ;cathe,':' I.""; !"~ ':!:' ::.:1 ill'.:',';:': t : i ::.; "~i· '.',::'! i .: !,; .. , i.; i,. ""1: "1::~: ~ 'j ~~d' ~.~~~" " " : ;I~ prilii-i' ptmocdllii sohb" stafi 'rl:lat.izzati!tn "hdrowarei -~'ru d:Ur~tentl(~i :§l"e' :ori~itta:t'i ..~'~~ anche verso soluzioni software, ,:, A:iiaJisl!i·Spetirli~ntalf'rra.n:nb\ "trlbStrato·"cne··lit! ~o'rna ,;;.~~~~ . un prot?collo dalle. caratteristiche del sistema. 1 protocolh hardware Sla quelh software possono presentare prestazlOnl mlghon a:'~~~'Jii seconda del carico di lavore, \?i~"i. . .'. II' ft I I . .et~·· , NellamaggIorpartedelprotocolsoware,e eC1St0n1;nguar0 eazlom lcoe·'·,·"ll : . .' , II" . I d " ! ' .,.,,/ ~ renz~ s?np ~1ese Syaplcam:e~t;e:es~ basano sul lDserunen~q ne pr.ogqgnm~: 1. Istr.,~,ZlOm '~,("~t~ ,
:.,>
~i
dipen~e
Consegu~nt~m~nt~, ~ia ~g~'
d .. '.'
d
'ed',
~~~~I~~~~tJ1:,~:::~;I~e~~t~e:~:s~~~~~:::d0::r:.~~~n;r~;~~~~ii::~~~lfi· warelel~~~o },~i;f;?:nuI¥c~l~_~~
tra processon, nducendo cOS;~L,~.~fffi~O,.,/,~.,~~anto:\~~~;1 mant~~~~b per~anente~~nte'l~ coerenza ~~evenenF~~e~e Fa.use. ; - _.~ j ..i:~~~ In: geoer81e , 1 protocolli SOftware sono pm semphcl da realizzare e , sebb~tie molt. <'iJ:~~ .... ~ee li~·~ ....· Lsuppo! . - .._'-'" ee"l·~·<"~ d1 essl necessl 1;110 ape e U-l un ~o ar ware , a comp esst a 1, dJ.e suppo! ~o t: so- :~,":~
··--·_'-_·'t·e... . hd . ··eI-e·,·-o·'·\·" '_"_.e"'=e" ' . litanJ,~nt•.mdlto iiiii\9re della logic. richiest. dai pr.otocoUi escl\iSivamente hardware"~:~1
~:~~::~~i~~~e~r?c~~fi~:~z~~:ein~:tt~::t~:'n~~~~~:~f~~~~~e~~na~~~~~~~~~"e~~~ [DTAS90].;",e;:.etoefpo$nbll~· It n~merojd.el.:PDqCf!S~?r1~',se~a,.do~er :~~
8.u:r;nebtare "rriod\fi: ' :' care drasticamente·u.:prGtoctIillo;. cosa che mvece e molto pm~,diffici:le ,nel ,protocolh --;.21~"H. ar.-:l :::u: . , . ' . " ", ,"'-i ,.',.rf~l!l~ h " . l-lw~:e ... ,,' .. ' .. ' :'1, <";:1' , 0;::' ,~'" J " " l r.'", ,,::,.t~' '),X . ;'.i'~ !~.;". :.". :'" . " ~., '.'·W;,l' • '-:?t-m.~. .:';:·.d~e! _C?~tOOI: i\pl'otocolh ~ar.d,"":,,are'~ese~~a~'O'l-l v.~tag,glO,dl-n~.'r.lchle.ct.er~~!~~n~ ;::':&I·~~t :es~_~n.~ab~~.t~~.al.~~bgr:am:n~.to:~je., ~ ~compl.lator.e:· ·~·~~tr~l.. g~~tl~,~~~;~mlg:~~(m. p.~.~~ -::::1' "ftii l st'azlOhl soprattutto -per·slsterm·con·grande'quant1Ui dl'datl candlvls1 , perche trattano ""':;;"~ 1a coere~za dinamicamente, riconoscendo in tempo t'e'aIe' Ie tbi!'diiioni"di' violaZ"idne::J.,,: .<:~~ , . . , . . .~, .., Nel segUlto CI occuperemo escluSlvamente del protocolh hardware. QUestl pos- :,"'~1;;; sono essere raggruppati secondo due classi: (a) protocolli basati su un catalogo (0 ·:~.)\i'~;itiiJ '7~:,:, ' directory) .1 e () b protocoII1 snoopy. "<,,~j1Jr," "~"' , . ,\, :T,::'s~j :'-"
.
r , e,I," .
;<" .'; -v'·· .w ,.: ,1>."
.~.r-:~:
j~~1~ :.:,"
_J~i¢.';':;:
.;~!1~~.;t.
La memoiia:cacb:e".'
31'·7'
1
Tl'""",,,,.],,'."
> ; ••
.
!l!!i"::~';-\:' , ~ ;,._~'"
_;j,c:,." ••
i:t"....,,C.,
'f,1"~'<'
.' .
i'II,,~),":,.. b ' su .un c.a . t awgo' Un cataI . di qu. ali. da;...'1" sono In . ,'~f~1:;J\.'_: 'Prolaco Iii ,asatl 0go' "tlene"tracoa' ~(~fr:,,' t; "quali,cache [(i;F:901~ ·Per ciascuna linea catalogata.sr tiene·memoda del. suo 'stato: ~~!;"i;l~r. . ;-U1~'(se! ~·o m> valiqa;: se e' stata modificata, Q'mrecc.}. :n eatal0ga eunicG;' m~·v.iene) t3~t~~/: . . . ~i ,;:fnonriaUnenteTealizzato,iri.fotrila dishibuita) rn!modo cheiIlichieste di.informazionL' e
~;:4tf0\
.'
-
,.,:;i~diverse 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.
.;·"l"l;~l:
\~!~-:k~<',
:~:~t.:~,,';'
Protocolli'dl questa ti:po'son6 USa.fJ prefetibilriiente per slste'irii cori 'tin~elevafo:nu~' ~~4~<'::· mero di processori, quando e impossibile che questi possano condividere un'unico i~',~~?~;~: "...:, R~s ,f?~! ~~~~e&uell~a, ~?_SSQ~9 ers:re ~~~~.c~tf .p.it\J~.~eft~~.qH~q?~~i..l~WP~~ I~;~~~~i"::' ,r;·.~:.;m+~~I?~~e H:; n;u~e~p ,9~1 P~o.C~~O~I_ {~~<¥,~~~~~~ .4~J ~.~s~e~~.)ln ," i .; .. " I:. :i,. 'I \ j, ~/:li$::.~.:.'" .'- tit .Le 'infor-maz.ioo.i rneces$arie aJ .controllo. della,cacbe ·SP00. proporzipnali al .. numero'. ~~li"~01""\':' ," ' . li . IIa.I)1emona: . pnnC1pa . . 'e;.. I '. . " . .-:\ .' 'Ill ".". . ,~~ •• ':'I::.~."''', "d1: Dee .nre!3ent1:ne . . .,":''. . ,: .,.: .,,~....f.~ 'i: ~ ~ . T.,. , . Yo .. '.
.
II~~~\::.::'-'PtdtdCO'n~ s~hq~~y.~e'~~~9~~i.,~,i?:~,~.:~.l;l~.. y~n~~;no"'~h~r~':'i~ !i~fw.·~\~ik~>~~,:; 8jt:~~9:
Y!fii.lJ:!~:;," - ... (non l.lm\~ate a1 bIt d.l vahd.lt~) necessape f!.l pro~o<,:ollo ~tess, C,a.Clle e la.m~mo-
I~t~.~~i,:~"~ :~,':~~·a.".c:ep.t'~,ale.·~i ibj~ri?'~~l ~e9~im? b~s ·~.,le.·tr?~,sa:i:i.?~":~fr.i'~;~?&?b ac,c~si,
:~''"W::~.l~L·.· ",;.' laIle' smgole /~'ache!
0
·aJ.la n'remona centrale' vengono' tlpbrtad!1 ~U} ~.USi s.t~~: . r
~2!~~~::;~ '." ':':l':I;i:elati,vi 'controllori, '·o~~e~vano.contiTlti~a:rne·nte· {ficc-a.~o .·il rl~o' ~elr }~..h:aJis~i(j~f. ~:~w~;.::,' :~ ;!'cne' aVv'~n.to[lo' 'sui bus·'e, se
verific:ano: C?odiiioiii 'c~e ,p,~rtiulo,· ~Wincb'er~~7' ~~,jJ.(;,ri'" ." [(1".'(' iza~' ;effe'ttu'atlO' le aiiop,f richieste :dal protocolIO" (per etkiil'pib'in'valiaandd~i l 'loto' j2m,lii.,·"'-'t'''''' : ··N'···"·o····!.."L,.·'il···· ., d" ,. . :,., "~" .... ",. ·"·,·,·"r"····,',,-~.'··,,, ~:i:,:·tt!F(":,:' -..' .'. ,'c;:ontenuto/;'in rno o.,,"J'Ie 'Slstema I memona re~trcoerente. . .....' ,. ' '. ..
'sl
~'~~\:.:.,j::';~.' I~: 'q~~'sii' ,~~ot~~olli)e. f~fQrm.;z.ipni n~cess~ie 'p~r'~g~ktir~ .'1~·,.cq~~~Qz~a:;!~:q~~·: ~~£j.:':.l;:~'p~op,or~\Qtl'aJi)al p~ro.~~o.' qi ~~~e neUe ~c.k,1e~ ". .", '.. r<;': ,,~~',~ ,..' ';. "~; '. "~'.,,
1
I 1
I 1
I I
"....: ....'., ..."",~.--~' ,"" :,' '.: ..... " " ::'.. :.. :.,.::, ..,.' .",":, .".....,:,~,\:' ." ..". ~ : ~
';lJi:~.>/'-.~~,:.;~:J:lr?~~o~l~'¥.bOO~y'-~~no~·,dl~~~.t~tl"~ ,~t~~~d'~':r.~ . s!~~~· ,a.·s~~?fo 'l)y-s/ '~,~~: . I
J~~~~i;f;'i' ..l)':~';"
. ~?rO ~Bl~go
A,!,~~(\:~~t.:l~.q~~f,~ot~t~.d~~~.m~c~~e com~ercl~h. .n:~ ~ _~c~pr?te~.~?~1 d.en~ ult~e
~~1~~,< g,~~::i~lOn~ ,1~cIu,dsmo.~r.oto.t~l~,.~n6?~y per
i1: ,m.. ~~~t~~·:.~~ . Inblt.r~ I'~\~' II 'eVen~uii!i .. \ " " " 1 ' ~I:;'~";:""N"ll": l ' . ··e"' .. dl·'···o"lli··!··'·, ,,:;,.,~:~:~-.,!,' e a'paxe'c eseb'Uecl'occuperemoescuslvath nte prot ct> ·sn·oopy:'·:·' " " ,iil~*i:'~;\f" :(';;':~'I' .. ""! ' .:.: i i '. 1 '. . ' 1<:. . I,.' . !.;.:.,. 1 .; ; . ; •.: I, ." .. (, . ;'.! .,:, . I > .. ! ". " .:
I
1 ,?:~:iM~:~uested~e pohtlche: (a~ scnttur~ a
1
,vengo.no''t"h" pure prodotti dlSpOSltlV1""" per man\ellllIlento (Ielle ',,'.,,',,"
cadie esterne.
·r;ilt'~~ntieh~.J\' 'e·~~~i~i~~~a". So~t~zi~';'ent~. i,'~.~t~~~w"~ ~~~~~~:~~~~q~,; ~~,d\; mvahdazlOne (wnte-mvahdate); e (b) scnttura a ,jJ-~~if.';:',~rOpagazlOne.delle m~dlfiche (wnte-update).
'::';;.~ ~.7i,:~." '" .' ." ~.u ....".r., ,,' ....:-:' t,",e.*, SCTlttura amvalidazlOoe Quando una CPU senve fdeRa PfopHa e'ilclI'e ·pnVllta·I Ie ~~4'i"'i'" artre cache che, leggendo ~ul bus 1 mdmzzo del dato corso di modifica, scoprono _I''''
i>'~:I(!L~:;:':.'r
I'
••
•
'1'"
.- •
. ,
In
~)!~.~~~~~;::t:n;;::::;:~:i:::d;::~~~~:~~~=~~:~~;;:~~~~~.l::V~~~~~d: ~r;I.',~::, ~·~c.~~· ~~'.'~lt~'~ ~~c~e 'poss~edo~d ~11~' ,cl1p):a pq\rit~~'aI. W.tq ·ir{~ern.9.
:'
ptiyat?'1
":.,:LJ
'qte',ne'
~~,~~i:' '~~~,>I".,la;ggi'or'nanc;~¢9P·ir~r9r~.1Ch:e ~t~'p,aS~~&~ s,tU ~tl"s,:'
"-':\"i·1,,'t)1,:.,~ ';,,,,, . .11' . . '"
.. ··!,···.·J'l·(
" " " , . .,
j,.!
.', . . . .
,,,,
,," "."".J'~.
:;; . '. /:.!I~ '.
,hI.' ,·l,:".~ '·'!l'.'l~.;.t.' ~,I.·
,::: :"1' ·h(,'::·.,.!I' ..
I
). 1
., 'i~f't"-;:~.:, """ ... ll p'rQtoc.o\1o,,~propagaziope.de,ll,a 5crit:tfura,.co~eAte .sQlita.iiieD.~e ,.di segn~e..L
, '~lllt.;\,.:c,,( .. ~' :blo'cchi 'come condivisi '0' privati' (iocaUL in ~odo the I~ c~e'~i~ c~~~orti 'c~~e' i ;~~~Y:~~-:" 'una cache write-through per i dati condivisi (propa azione alle altre cache\ e come
e ~t:':~:';~~II~'\':US'~~ c:t : ~h~~,el'~Ptl.~kl~·t~~:' ~:.d~:~i"~~~ka~al'I·: ~:~h~:/ l,:+h:~~"J .. I
tr:~r.;""'" ; ,'j<,~'~~''':''.
;~~~~.~'<. 'I~;f,.·i~'·':
"'i(~.n~·''!. \: '. '~'.~. ,\I.
to"
r~:~',i:t,::;'-
Ii>
<.
• . • •
••
1 Cal-'I~Ce C e a pOllta wn~e-[)~ .
' 1
.~ ',': _.-
• - - _ . ' - ••• ' ••• _- _..
ZL
. ,:..
...,;:. ~'I'~ :~~;'~:" .1 ~:;~,~::':!.~~,~: "':i:.':.:::~~~:~j ~~ ~I~'il": . ve ..a 'trio to',pesil-P ~:SP (:1 ~qnQ' ,l,I'ff"uenti' .'. ,:.
' " ,,,. "
"1:" " , "." ., ;I.P'IJ~"
')1 ':
.~~~O~rt;41}~ntl (S;1,.1~l:~P~.,.l qp~.9::jt,o ,C,Of! 1?-e~ C,~9:~P.~~'R(~C~~~I~~V~\l~ ~,q~~~~J.ra d1ffenta
I
e.vantagglOsa proprIO ne!)(}as0 dl.frequentl agglOI:Ilamentl);:·",')'-"::':~;:';"");J;, '
I·
318
I
Capitola 7
-~~
'l¥
~
'~:;
I:
.Si Dati che le tecnich~ preced~nti presuppongono che quando una cache viene '. modifi~ata. sul bus co~p8J.ono Ie informazioni relative27 e che tutte Ie cache (e la , metn:0n~ centrale) mom~orizzinoco~tinuamente il bus in modo da pater intraprendere Ie ~lom d~vut~. ~ partlcolare, per 11 caso dell'invalidazione con gestione delle cache a scnttura diffenta il processore ebe tentasse di leggere la variab'lle I'n co d" d"fi . rso 1 rna 1 ca l fi ch 1 ach ' d eve essere mterdetto momentaneamente dalPeseguire la I tt contenente i valori aggiornati non sia stata copiata in mer:or~:~~nt~~:. e ace"" ,"
\
;,: i.: r~J :.t
~'i
·'I
~J
~~; \!.lr
',':!':'.' "~':!
';"i r. c,. ~n:
\
\
I -
I (
':~'
Efficienza In termini di efficienza un protocollo a invalidazione e' dl" norma superl"o-' ,:';!;;:i~ :~: .'''' '!!I:~!' . "' reI i~ quanta dop~ l'invalidazione sono eliminati i ~turi accessi per gli aggiornamenti ··:t~t[lI ,~ locali. AI contrano l con un protocollo a propagazlOne delle rnodifiche l tutte Ie volte {iaf.~': li~ che la cache viene modificata si ha.un a~,sso al bus,. per propagare la modifica a :l~~V~' :' tutt~ Ie cach~ ebe ne hanno una capla. Clb e del tutta lllutile se i dati non verranno >.i~i ,~ usatl s~cces~lvamente~ppur: se ~no ~utt~ ~ operazio~ intermedie. :. ~::J;.~' ~W . . Cepero una .sp~~al~ ~ltuazl?ne l~ CUI I p~ecede~tl argomenti perdono validita"':"~"P~B ~ E il easo d~lle vanablli d~ smerolllzzazlOne. A tltolo dl esempio si pub considerare un ~ . ::,;~, ~ semaforo d.i mutua escluslOne per l'accesso a una comune area dati n semalo . .,' ,A'li' :i . . . . ro Vlene . '~"!o"" "; a~tuato ~ramIte ~a vanabile comune _ chiamiamola mutex _ che n processi su n<:,':~g~· r ~~ different! processon leggono e modifiean028. Con il meceanismo a invalidazione , ogni r.':;~~~;fj ,~ vo~ta ~~ un proc~ ~tra 0 esce dalla se~ione eritica aggiorna 1a variabile IDutex e. ':.:1;''So~. ; qwneli SI ba la trllBIlllSSlOne del comando eli invalidazione alle altre cache (della linea3~illI ~ ~ontenen~~utex~. Co.nseguentemente i processi ?he sugli- altri n -1 processori sono ~'.,:~~. ~ m fase dl S~Cr?D1ZZ~O~e devono nuovamen~e ~leari.ca:e mut~x. Quando l'n-esirno .'.i)(~v· ~ proeessore ncluede 1 agglornamento della vanabile di si~~romzzazione. deve eonten--' ?!.~, dere il ~USI nel cas~ peggiore, con n _ 2 pro.cesso~i, e ~l JU,mero dei transiti suI bus.:-':iW~ ' cresce crrca come n . In altre parole la teclllca a IDvahdazlOne presenta un pessimo :,;'*"2" ~' eo~portamento in pr-esenza di variabili di sincronizzazione poiche fo'rza i processori 3' :':'<1~" ~ chiedere o~ volta la variabile condivisa, con eonseguente 'tendenza ~ saturare it bus...::.,~l\i. ~ :"-1 contrarl~ u~ p~otocollo a p~opagazio~e delle rnod?iche e rnigliore in questo CasO, .'::;;1~: h ~ m .qu~t~ distn~wsce autom~ticamente 11 valore agglOrnato della variabile, evitando," :l,H:, . qwndi gil acCesS1 alla memona centrale. . :·;::t.,r
./{' .
7.5.3 Protocolli snoopy . . . .
:":,~,~,, ' '.-i-~:~;,
. :,):~J'.
''''-', .":~~~
..
ESlston~ van protocolli snoopy differenzlatl tra lora dalla politica di scrittura e da ',>J~~
I I. -
I
,
\
'
quella dr mantenimento della coerenza. .,l~:~~ . . ~essu~a d~lle due politiche permette di ottimizz~e le pre~taz~oni per '. t~tti i '~,l~® l tIPl dl canco eli lavoro ed e per questa che sona statl propostl del protocolh ehe .. ".J;.41,l>!i j co~binano sia Paggiornamento ~e llinvalidazione i,n modo opportun~: essi iniziano ; :;~~. senvendo e propagando Ie modifiche, rna quando e osservata 0 prevlsta una lunga "::i~
"
:l~"
21
. '
,
.
".:~~'
~aturalmente I controllor! delle cache e del bus hanna un fUDzlonamento coordina.to: poiche la '::-i~;:1W modlfica della cache camporta 1a. presentazione dell'informazione sui bus, solo una cache alia volta. .>I~q~1 pub effettuare un cido di scrittura, ~~~f,:" 28S pet ta alla sottostante base hardware - il repertorio di istruzioni - e aile primitive di ';',::-\, sincronizz~ion. ""ftw••• g".n',"r. I' t '"t' d 11' '" d" 1 I' '''.,i~:' . "" _"'........ a omlCl .. e e operazlonl I ettura scnttura. ,,,Yo
",."
,~@)
.. ,
'~~.;'' I; ".','
La memoria cache
H;i."" ;h .
~':;;" .
319
¥.fi' ~'-.' ,.
~f.·;:;r
,
;,'i"<;!:::'"''
" :'/:'l>;l.:··
:~l~;l~\' :': . .. . . , .. ., . :l:;;1.,~,:." sequenza ~l scr~ttu~e lacah, Vlene .s~e~lto u~ segnale cli. lUvabd,azlOne per. la. Imea. L~ 1 J~~t,:,'. ,scopo 1?ell mva~dazlone ~ q~ello dl limltare 1.1 numero d~ acCesSl a: bus, ehnllnand~ gl~ tf.'~:'}:"' access superflUl, co~e quelh ebe ,segu:o~o scntture locah ~onse~utIve..Queste s~luzlOn~
~.'% ./, i~~~1\ '
possono essere considerate adattive l ill quanto cercaJlO dl modificare 11 meccaIllsmo dl d d" d ' t ' I""" coerenza a secon a el atl osserva 1 per ottenere e prestazlODi ottlme·. Pren.deremo in considerazione i seguenti protocolli:
I~~f;L.,',·:'
Jii§·;,
;J:,';" .Jl:".,. , r.l..tf:"!~:·.
wnte-through'' - wn'\ e- back:, - write-once'' MESI. -
':::~:"':"'
:~:~:~:.:.. ~:*?:;.;:. ~:'1!";::~:':I" ';'~~~~~,::' . ., ...'. " . ~!+t~:/ ',Protocollo snoopy a lovahdazlOne c?n scnttura Immedlata E il Plu semphce W]tj/;:' prot?collo S.DOOPY [St~81. ~a coerenza. e ottenuta dalla o~tura 5t~a del~a politica ?i ~~~~(:{. 'ge,stlOn~ wn.te-~rough. moddi.che fatte m cache vengono nportate l.lIlmedlatamente m
'I""""'''
~~~~r,
memona pnnclp~e. .. ' . . i~1~,Y~li .. .'. ,In un certo lstante una hnea dl cache pub trovarSI nello stato valido 0 non valida ;1~j,*·fC,. ( d t' d t' . t') ~t~I~'r~;;', quan 0 ~~n lene a 1.000 agglOrna 1. ,. . e ~~6·i;.:·":· " " . Tut~l 1 proeeSS?rl c~ntengono la vanabl~e possono ~e~gere x dalla propna ;-~fi(\., ~ach~ pnvata se l~ linea e .vall~a. Quando P i. mO~lfica Xl tutti 1 P; ~e conteogono x ~4~itV;" ffivolidano 10 cornspondente Imea, Nel e..o m cw P; debba succesSl\'ilmente leggere ~~'~f;:: x, la.ottl~ne dall~ memona centrale l nportando qUllldi nella propna cache pnvata la ~~;f-':"'" relatIva 11Oe3 v~da. , . . ' ,~~r( , . Il passagglo dallo stato non valido allo stato valido 51 ha anche quando un pro'1.~~;~,:;, ces~ore ~e lha la li~ea no?, valida (~ehe non ha affa~to l~ ea i~ eac~e) effett.ua una 'tr:.:b";..~\. scnttura. 10perazlOne Vlene esegwta sulla memona prmClpale, 13 linea agglOrnata ~i~$:~;~,.",,: viene caricata nella relativa cache (write-allocate) e vengono invalidate Ie eventua· ~Iri~j"." li co~i~ nell~ altre each,e. La sehematizz~io,ne del meccanismo, e in Figura 7.18 (la ~;~\;.~g~~"i'.,condlZlOne dl partenza.e quella eoe~ente dl Fl~a 7.13). . ' l .~!~~,~;~" ~uesto pr~tocol~o unpone un discr~to ,ca:nco .sul bus special.mente In ?resenza ~l ;j',~~~t"-~: ", 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 '~1;g;t.· porzio~e ~ella cap~cita.. del bu~. ~oltre ei sono alcune complicazioni rela,tive per . ,i.f::,~: 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 ",'%<,," . :1#:~. . uIt' enore pro blema d"I coerenza. '::., .f~~;': ,
ct:
m:
':
Il\~~h,' ',
liJ~it:r j.'.l't;<';i~· ~~~i~::; :I.~~~~.:' ,.,;?:{:;.~
-Protoco~lo sn.oopy a invalidazione con scrittura di~erita In ~uesto ~rotocollo (Ste88] gb statl del protocollo sono tre: 10 stato non valido (mV) nmane rnalterato
.
,
ris,petto. al protocollo precedente mentre queUa valida vierre suddiviso in due stati chlamat1 RO e RW: .
l~;%;1:r,
• RO (read only):
iiri.'2~~:'"
•
~~~.,
~·~;~(f;
.~"ffljrt". ~Sjl~~~';J:' .•~gfi"~.'
130 copia pub essere solamente letta
RW (read write): la copia pub essere anehe scritta oltre che letta ,
Le cople . a so 1a 1ettura (RO) de 11 a stessa linea possono essere lette localmente dai ' . memona . princlpale. . <~~ir\l::. processon. ch e I e pOSSledono e sono coerent.. con la, copla ill :t$i~!r" ....,•.. ....'r.o''';'''1--;'' •
i!1""~' ~ "~I.
:
Capitolo: 7..""
320;
...f
l~.
l
~~,.J
...'.
. ,;
..
,"WjJ ,
,
.•.... I
.oj
• '.1' ,);,." •. ,,: ..." 1.'1"'''' t'
cp.'"
"," , ' . " .. '.. ·,i r;;', .... 11., .•• ,,:
U',
·"l~,;··,;:·",
.. ll.:
t·,
.;;:, . . • • , . " • • , . , •." '" .. /1..; \' [; :",:.~.:
·p'~,:i,·,.
'"' :
' ""1""~ ,. " .. "
"P ' • '.a.,. .;
, I , '. , ./.
).,:
"
, 'I-
I,".;"
i! .:.,·'.... ·H[I;'I
.. !,,;!l'f. "J~!l
,
':i" "1
,!
X'"';18,
,
1;,,1:.
,
.I:D-val. , ,
'
" .. r .. ".:
'\
.
" R ,.
,
'.
I •. .
•• ," ,::··li.:'
'.
1;· .. ,.,l·,,:I;~'.
, ,
,
'
; ,;
,.
!t> I.!".l ~:,;
.. '
, ;\
'J
~·
,~"
' "'. ,... f'~' .. '. ,
,
,j; :. ,
'~~~ ..
'
'[;.1.1,:
',.
"!. •
J.QY~,:
'''"
' ..~ ,l,,'"
. , ,. ,, '
'\
"c· .. "1,
. ' ;! ' .1
,:
..
',' ;', "' t ..
II "'
'.'". --.\, ,
:. \',
\
"
,
'I 'It.
!:'.I?
, .f· ',,, ..
X-18
.' ,.p".:
"~;1 '. . , ,',', ," Figura 7.1.8 Protocollo a invalidazione con scrittUX'i\ immediata.. La. cODdizionJ·;a{l~.rtenza.'.;·~:~~! ', ...
,..
,
e un
sistema. eli memoria coerente con, x = 14 sia neUe cache che in memoria. centrale. La'~: figura mostra i.1 nsu1ta~o .?ell'aggiornamellto di x da p~e d~ Pl .. La. scritta !lInva!''' sta a. ':~, itioldar' e"crre' e":sta:'ta iD:;;aLldat'cH.FHft. .ea itdtifen.ente·'i':' '\ ,I.', ,;; I ...':.i f,'d. . ;; ('-t' I ' " I' ..i;, '.., n tCJ l ~i, .. "~ l' , , ., , ,,', I .• ,:,,~ ".';";""l:,~
. .. I"'~;"
;;.,·\'Ji~,,:!\·
.
,I, .;11;·;!'::;Il"H;·''''.:~1 11··,,~.. t,·!
iJ
",:"
...... ,.;~.,
.
.
i'",: .'." .. '
,:1;'
,'I, ,
,-;1,,\ .;,;
.:
;:.\. '.:
i!-: 11I{
'11t.
'11~•
.. ,W
Iti
.. ;.,.:, ,,,,,,:,,:;,'jv,:~IfJ~~
'
:rJ!.u';·i1.'- ~," ,I ..'
l'!i' ~~
;: .:,,,,~. ' :i"";I"",'I,".~;~{", "
~"'·l·
~T
~
,
:
~
Quando un processore (diciamo PI) scrive nella propria cache, la:,linea:ppsSa onellcr:'ii:.~ stat'o RW·"e ,le, alcl'e' copie vengono ·invalidat,e;"LQ stato-RW ,corrispEmde:alla- situaiione '\j~., . in cui nell'intero sistema esiste un'unica copia 'aggi0Eqat'a :del bio.ceQ;· I!lossedtit.a'·dal\:'::~~ p1'0~eSSptre' the !ha: effettuato· -lao ;sed ttUFa~ S'i oJl(j)ti, che~,aneh:e' tal memor!3.0 centrale ~ :~.1:~, incO,enentel e .quindi' se uno ,qua.!unque ,tra! P'2,j'f~ Ehl leggesse :-x.;da.:::quest'ultiniai.pt'ele-:~ ":St)l I~ verebberoiun !valore 'obsoleto~~" 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- copi·a. .)6rj giusta, comandi una transazione di sospensiooe della lettura, copi:la\lirrea di'~ca'che'in: ;:.f;!' ,, ~t memor,j.a".~ I quindj:.iilasci ;Ia. sospensione, della, lettura da ~parte::.delL'altro~PIo.c~ssbre29. ,.,:';~~~~ ~. La: rJinea ;~esta ~-ell() ~t~tOI RWi j.~, seguito' a.. ~?etiazionL16cali d~~seri~t'ura'e ,}~ttur-a~';;o:.,~.{~~' .. ;~IIIDa:gb,"st"atli.RO e,-RW, :la' ~hnea"nel1a.'ca:che; tieL processore',:Pr,passa: nello: ig'1iat(j: :~'!-l-.jf; ~ IN"I" quando uri :altto; processote' (Pi}; m6difica,~il oontenut6' Idella.> propda ~cdpia~;fSe· .·~l~~.' Pi sostltuisc'e 'ta"propria:;copi,a;; ;13" Unea' ·viene ·prim'a:. copiata. ·in, lnemoria.! centrale ~ '~,\~,_ poi vengono invalidate tu tte Ie! iestanthibpie in l tache;, :DaUa 'cbnaizi0ne l di' linea: i n'On:, >:~~~~. v.alida' si .paBsa inveoi agli~ stati iRW 'e -RO" rispettivamente:, :QUfihdo· il'"proeessqre Pi ,":"?$. , .0; Iegge!I ai'linea:.:::1; ' .'11. ,... ,- .:" J! ' ". ,I, " ,,~, ., ,', ""}" '... "."", scrlve' ; ... j '' , , , '" ' i " ..... 1 \,,~..;"'·il·"a.l ; :.,)lU;, ~~:' ".Jl·.l iI!Ja sepaItazione· delln s~ti:)'valido' in -due 'Stati'"distfutifctmsente'di fldurte,U·tfaffic6 :')~: , . !''\<'' su'llbllS: ~ Ii1fattt' le.·eperazioni)fcli ·scnttuta 'e l'etttlr-~ del:iprocessbt~·Pi'~; 'effiittllate ;iteHo: ,.~~~~; statG;'RW;; "non 'intplicano'.{tin!va;lidaiione ,delle :cop'ie';del bt0'dCO' n'eHe ·altr.e tache3~!Jt·1~:} ..:;~;~ 'i!; . ~Da' sclierriati'zz'azrdn~ldel meccani'srno"e-i'ri i , Fi'gu'ra~7j 19; (la' icb'tidiiiohe: ldf ~pittl:Ytl~'N ,.~;;'. e quella coerente di Figura 7.13) . '.: \,: ,I'."' .-:: i!, hl '1 ,j',Il .. Hi . ,'~' ,; ;',ilH ;:.~.~. '.'"
~
:
,~jJ , ,U':'
flib"t~ bill b'Ja:;i~~9:~ibiU!- rdji'ti}) J:j "1Jfrit~\~ btic"el:':J: 'Fli1 ~tH6ostO I if~1'19g.~ :e:ra~fN~' senta"im~ eV~HiZidnk/dei 'i\rbc~d~tlti '1#' 'qlJa!nto' i:omoir&i' 'v'diWig\;id,W \lr8tofciill"": irWa'lida-ii'one 'diitf..l..'BJwrite:''Uiroug''li'e ..write~ oadt [S.GS:3j;':' .\'.1., I,; 'j:"'."':: ~ ..\(: lJ. '.; 'I'):,li;,n " .:0~T;I'" V
" ' ":
~
,"" " .....
.,
'r""l~'-
,..,.' .'..,..
Ne1 protocolio write-once gli stati deUa copia nella cache del pr'6cessore'P?dhiha: ·:~·t genericalinea sono4, ~~""':'>;'~.:''l:i'''; J·"';~."" ..'i·':, ":'i".';:; ·\·i:.~:!·:·\.'l"~ 1.:;11; )}!Jl.,';",' , ",~i?~
''';;}':~I
pe'ri~·>MbMer.hi;e·
entre'I'iA'ee ca:c~~ 'h'ah~~" I~' iTi.J.citi;i~' \~t~\b~ (i'~' ~u~to
I"
29Yale solo la cEle th' di'
"A:il 1;1
,.o':;'~~
~~:'.
~~"~":
I
.....'f;;":·.
-.;J'l:"... ••
.......
1olI:1I'1 ' ',7;1',':1'~
.. 1'1,;11.-,.-'. .. ,~",,,
.. :aih,if/ ' '~j! ~.:,.
f ..... "~'···
.i,;.~',,'i'
La mem6ria'~e!
321:
•
,_
\
l~~W. .·:,'
Jt.-"l.;;;,' ~
Jh~'il~';' •. 1 . ".,
.. >"~" .." "~,~"
'
"
.ll(i:-.h' ;y-,.. ;,;;;~~,,~,'., .
c 'u
.','
·<:rl",·
..
"'r':i··I.
1:::."
.'.
..~1t;~r;~ !i'... . ,. ,.,. ",1..: .
~,. 0" ", '1:1,1;-.,',
·
,'
~r.·n.
'... .. , ... , _..."
.
,,1,',., ," ,....~,
I~"
,.-
','lJ~.. ~
•. '_...
,
'
,
Ca',he
-
.-
.'V"
P,
~1i'>lI;"" , O-F' .,.
.•. ,
,
W~~~·I',·".
•
-
..,
"
...
.•_, ;d.··
,I
'/:;,,'
1 .• _ .•••.•••.••~'_.
,
, ..... .I
•
P•
..
,
" ..... ,
,
r!~:.
" •.
, .•.
... ,...• ':
",
~.
,'
I
,
,
; ., .
::~.'·;1
I
\
..
iNV'
[NY ~:.:;
, :, I,,,,
.J
:i.i"'1'··· {'i:;>1\,t..'..... ' ! , ".'. ~ .::f;!~'.i't;~' i ,', .._,..
••••
X~i8
,
'.¥
...,
P,
'.'
..
,
;
\
....
' ..~,,·,.,ilnvaL -
' ~'-"
,
,.'.)
•
"\
'
,. .J
_"."
. '._' .• ,
..
-.
,
',....
, .' Metnona: CondVlSl1 i·'
. . '
,_.,"-~
'.'-:-r--'
'.'-:';:" .
,'.j
. .. ,:"J .. ,_,.1, .. J.... ,~;;: ,,, .. .,,..\,v . ".,.,' .' .j.;.
,
"--.~'
,.
'
1
.....
"!t··
ilj·::rf!~.~I~;;-:~~~,' ,'g'ura r:-l:9~.,Ptotaconaa , ':invalidaztone- con scrittura differita;J·oa·-condiZroue---di-p8.rtell2a: e . ' ~~l~,l?f-:\ tin sistema. di,JD,etppria: cneretftt ~n,.x = 14 nelle cache e,.ip... .ffi~Wor1a 'cehtt"aJe', con Ie copie ir.;t?~~'.' in cache. nelLo:,'~~·~o ~O:XB~~~gUta: mostra it risultato d~.lll~QVn~~_~t~~.?:i_ :fda' parte di T;~h'{f~iI"i.·· P,'. La lmea nella cach--e-¥di --Pr ~ 'Passata aIlo stato RW. 'F'
'~"""
," .!r,'''~'''~~~ ~·3,"··~
~
.. . :~.I"('{'ili- ~;j!1~; n'~r.·" 'Ora ••·;
,..1
.:-'~
:.
:';h~,;·"'1;
!:.
:~
:tl',:~; i-,;,..,~I.l
I
\
.
:'i'.;.pJ lc; :.1
~~~f.i: <.'~ ~y -l~ copia in c.ache.del blocco non e'coerente con quella contenente 1a versione
1
.~~<' ~: plU agglornata del datI.
~f~~~!i\';VAL -la FOPl"-QaChe;~'sta~':i~tt':,d;<),!a
memoria conlil~
:!~~~k,~·/.
RES -
la...·c~~i~ie ~t~.t~.m9d~ca:~a.~~~~tamente una.; vblta~~~iY?!·~~r~~:ta~~ l;~~a;
,~l~~i~~.iii.~:. ,,:, d.a.lIa me~dtt~ . Ro~dlVI.~~ e:q~m~~~e 'c~ere~te con l~ n;emona ~~nc~'P~~:h~;n~-cOn: t;~·~.vr;;::,,:,: . . tlene 1a 501~altra'coprao.gglOrnata (il pnmo agglOrnamento'm ~'he' e·t;eallzzato
' can polrtiCa,,:w~i.ite:th"iQ-uiIi:)~·:·· :..'- ~..._. . ". ~.,._._ .... _.~._- i......',....~-· ....·-·---.. ei_". ,. - _ ..., '." ! :' ... I ~'~~!§4t:.mC'~ .•' DRT ..~l~:b~~ia~e s·t=a.iii mJdi6cata pili di una vol-t~~~·,~ri1n~~:i;·kDica. copia con i 1'9,1/~a::~,::.~' ~ati a.ggiornati..?,.nc~~·i~ memor~,a. princi?al~ c.~nti~n.~ ~a ·Copi~·obsol~~a d~ d~~i
...-;'\j"l!!'h:: :.-./'f,
• ~ ••
.. ,~ • •
·7...· '
"~\iW '~J!;,.,>'·7
~
o'
'(' ,.' ~Jt}l ~,-·,"I:' :'r.·,.!I·· ',:1",'. ~;I" ')..
tttr.~/.
' ) : l " '}
~:·"""I~~;·!.::. .,. ",\·.il".!""
, ' ~ "., I·f;")·,,,,~ .s .·'::~·
n protocollo usa,.una;..p.ol-itic.a.,di,gestione della'11lemori~di!tipo;write4thrf.lugh peL':U
~.:I~~~imo ag~or~amento, .mentre i 8UCC~5i~ 50~O gestiti. ~on 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", H Iraflitol s~l ,bus,phe, sare\lb~'
,~I''tJIChiestP'pi:tr~~\eMsl'' MGt 'da~h~'-l~cb.M 'g\~bdve'm~lht!,! p~i'hOii) ~6tigest16Iiar~ :~ebus, i cl~l '''lbtc'b'' '&ip''0 'the 'sono "l:-.iit~fil'Jiirot'liat~''ia;'i\ieriioi\a'!l6lC/ar 'riI6'rnento "ella' sl\!itrt,(iibiig .", =;,..I~ bO . f " . l--' ..... I-' . , . . ·······1·,· ,I.,'. ·t'\·,,·,·····,.'II\' ..
~'.:!.>'~.~
I
.;t ... '!i'
•
ErT<>I;~I,ri:statl
attl gIl agglOrnamenti localmente. :., -,: '" ": " "".".'.' . 1:\,' '.,'..
I.
....
).
::isequenza dl eventr
~":l::.'
'. .....1 E~l..
:\"~'.t!.t)
. -.~~~l) P1leggex(nonpresenteinC1)j
~ ..
.
!;~; '.m;'!:'~~::~t1: l.i":'~;
_
_._
I ~:'~I:':') 'f'
__
_'_
'x ,;;~,,;,,;, ~.' ~::';<::,.' ", :i\'2tp;'~~'d'i~~~~1t;;;io;;;'~~t~'~' ;';;~~g~~dol~';l ;;"i~~~"3((' """",. , c",:; ,'~;L::',,, ~1~f;~);P\··\~odifrC:a: ~sk·gn~d:~itli- ~~1~~!~·;26; ;.' '.' il; ",,7:>;';'..:.
,.;:'tty" . ,.'-~if,·'
;I
.:-,;, .. :,
1 ,
I \
I )
<..
:B~t:r.) t:;Y.-Tl.. /~~~~PlA.: ~hi.~.~~ }~l~g~.q:' ".qo~;q~XUia.IT\q :~J;!h'Q~\'-I: ~)~ ;~?:t:~~~iJ~ t:r ;! ~~l~ tcqn~B~'l;V,-~.BJ;~.P;lJ\~ :~:'~\~'!'t9fJld. ~ p~~~p.~e ~e, a, ~91~ ,C{l,ffi~!W J'~~~·C9.~r~~.~p'et0 alIa ,~,,;i!,\I'!'18fiWc~n\rl¥~ ~,ifl,1,\atoYAL, A!paI'ti[~ ~a;l)a, ~\t~,az.\9~ ,U,ifial,e ,~i I'0!!~i(!.[\ qge,ta >'4
)
!
~ .~.>.' 10 quanta l'aggtbmament0g"della, memona <.tvlflemf'S:ola:mente--:m,·corrlsp-ondenza §j'~l#" ~f$.,~' ;:,.((9.~U~ p..rirn~, ~q-i.i!tura Q.~J. plp.cco;.. :. .:', ,.' , : .: '., ..:: .," f: ,'.' . 'll' ".' !. ( . ~ :~. .'\ l ' 1 \J~",;''1 ~~>;; ..• , ..."
I
1 1
";;'.. \ ..
.",.
".
1
322
J
Capitolo 7
'ifi ~ •
~
1
;'' ,Ir.j
"l" i'f,..
I~}.' .~q
1) P, legge x;
'f\,;
~~J!
La Figura 7.20 illustra il contenuto delle cache che segue agli eventi.
\
P,
I
p.
I
I
c ~che
X*lO 'AL
c
P.
P,
I c lche
X=-10
~AL
...
P.
X=20
i Ji ,~.
,,~,
P.
I
I
~Jj: :j,~' i~~
:j?'
r,~)f~
~~'.~~
L
i;<.\
' •.
::e !J~:
X"'10
i'r,
I"H'it
·
:~;
\
X-1O
Wemoria CondivUll
X..,20
ifJ
Wemoria. Condivi311
";,
,. ~I ., ~ ;t-
2) Pi modifieo X per 10. prim~ Tollo.
1) PI leue X (Rea.d Wiss)
t~
\Ii
~;j
~-
"
-,
\
CP
I
I I ( \
c Il.che
P,
P.
P.
I
I
I
X-30
X-l0
...
X_20
c c lche
P,
p.
p.
I
I
I
X-IO
X-3O
X-20 'AL
""
Jlemorio. Condivisa
X=-30
AL
tf
'W
~
~;
~
[
'..!,.?
.
\.'.~?J
,~
,,~-t;P : :'.:}~~' !
Wemoria Condhisll
,~.,~f~.jiJ',
.... ,f,.:,
.. '
,\;~? ' '~W,,' Figura 1.20 Protocollo write-once. Evoluzione del contenuto e deUo stato delle cache a 'l~~~ : se~to di una s~uenz:a di eve~ti. ,La condizione di parten~a e che x sia nella. cache di P2 e .:,:~~~~ ~ 3) Pl lIIcrin nuoTamenle X. ('Wrile Hil)
4) P3 1egge X (Read Wise)
,.~~::,*1., J
che il suo stato Sla valido (e qumdi coerente con Ia memona centrale).
... ' ':,<
,~i"
. ~. :j>t'''.--. " :I,:~~r . . "~·:,i·5·?
n diagramma degli stati e riportato in figura 7.21La coerenza viene mantenuta con due gruppi di comandi
.,·X~ ~
• GIi archi a tratto continuo rappresentano i comandi lanciati dal processore locale .~i~Wl-- ' Pi in riferimento alIa generica linea di cache. ~ e Wi indicano rispettivamente .'.,~;~" . ,~,S!:" un'operazione di lettura 0 di scrittura di Pii " . . . " . . . ,:,~tW' • Le lmee trat~egg13terapp~esenta.Il:oI coma,ndl, esegul~l daJ 'processon P j dlver~l da ·~f.)~~f Pi e 05servatl da quest'ultun0 31 • Rj e W j llld1cano nspettlvamente un'operazlOne·:>~~~ di lettura 0 di scrittura da parte di un Pj; Inv32 il comando di irtvalidazione :.};~Jf." (della linea) trasmesso da un P j' . :. '~~t~, ~ ';~'.:j~~~
e
-
\
.
I -
.'.
.. .
.,
"
:,~:")~
,"
mtesl come nfentl alla stessa hnea. dl cache e nlevatl attrayerso II meccailismo '.':,~f~ s~oopmg: . .' . .. . ";,,,:,~~ L'esposlzlOne e semph6cata. nspetto a (SG83]. dove sono previstl un re4d~mvalidat~ e un wr-d~· ,,~;~ ...~
di 31 0vv:amente invalidate.
e5S1
'
'\:,"
".-;i:;~~'
. <~
I
. ,~.
... , -. ,. " .. ~~"" . ~:.~
~~
J~ki~i; _--------------------------~L::a~m=e:m:O:c~i:a~C=ac=h~e:-_:3:2:3
i'-~' ";0';';" .,~ ,1."._,. "", <,' ~ I" ."••- ••
''''~I\!i' '"'. jl ;~r:.~., "h" ,',
.t.~I1l~:, '"
'''WI ,~ ..." qlt,_, _..
;~J'j(" :.',:
!~;tj';:.~
.....
-r'
:V,t',~I"';":' ,: ' '~' .~"." ~G\j·.',:·· i1"""l:!' 0 "~:,"; , .
,l'
Ri (miss)
Inv
.
/
------ '
~
Ri
.. '• . .
'{1f!\~: :;,/
~·'!~,li:,l'.,.:
"
............
-~' ,'~"',1,,<;,.: -... "
.\, tijf:::"
'~ . ":- •.ll·,.,I
e••:~I ,~I{,'
Ri '-
,
In\l- ......
".'.,"'
"
Inv
,,!;;'t¢"": .,.--.~
it'''' 'e ",.. Hf~" '"~ '" - .',
;~'I l
...... ...... '-
X
/
rt"·::,. ',' '.
//
J!.i~~Y'o' ;.y
,:.'@:li~:"/_,
/
/
'
.ttilW~\::.. I; , ,;~~.";:.::.,,. in~. . ":~,, -" 'J ~4~~'7;:~ .' -ll..-?1tv', " '
~~;~{~,/ ':
...... R')
Ri Wi
......~'--'
/
/
'-
Wi
'-
'-
...... '-
Ri Wi (miss
i~o!',~~;',.
jl,.~z.~'L"':
Wi
-tI~~~h':Figura 7.21 Diagramma degli stati del protocollo snoopy Wl'ite-once. L'arco marcato Rt
0
f.;z~;~~,p 'Wi proveniente dall'esterno indica I'assenza della linea in cache e quindi i1 suo caricamento dalla. memoria p~incipale 0 dana cache di un pr.ocessore remoto. ~'u8Cita. d~lla linea ~a~a, ~f)'+';:~';'>'C¥he puC> avveDlre da un qualunque stata, carrlSpondentemente 51 deve ntenere che Cl Sla ;!~:,~;~,\, ax,co ~ ~scit.a su o.g~i st~to. , II diagramma ~on mostra I,e att~vita. s~l bus! a p~te la ~~~~~,~, genenca wdicazlOne dl mvahdazlOne. Per esemplO, nel caso lD cw una linea 51 trovl nella [~~t:::.~~',·,.stato DRT e si abbia un miss in scrittura che porta a sostituire la linea 8te~. il ~agr~mma ~~~i(t.1:",: :,mostra solo Parco che dall'esterno porta. alia stato DRTi non mostra l'azlOne dl Copl
WiWt;,).,
un
.. ":1(~;i~< "," ~;;,,,,,,, '", '~~'" "
':~~~".~:;'," :~~1Sil!'}' :',~~'.;~X;'· . ... .. ~i~~~;,': In se.gulto alla nch~esta ~I.lettura o. scntt~~a dI un bloeeo da parte del processore J.l~:~,rl~cale (Pl) possono venfiCarSI 1seguentl eventl. lffi.!r'~"(!' '"
, .
',~~ii;i~'~ead-Miss Questo evento si ha quando Pi legge una linea che non si trova nella .:tl~~./,"~·,·, r~lativa ca<:he, 0 che si trova nello stato INV: Mo~:litorando il bus, .i vari Pj ~1l~'<~\'~' dIverso da 1) vengono a eonoscenza del.l'operazlOne In corso. Se non CI sono cople ~'~f~~~.-", DRT nelle cache dei vari Pj aHora la memoria principale ha una copia coerente '.k~;~'<; '.' del bloceo. In caso contrario il processore Pj che contiene la copia DRT as5erisce ::\~f,i;;:,,~ un ~egnale ~retry) che ~~i~is?~ la lett~r.a di Pi e aggior~a la mem~ria. A memori~ l ..i';it!."}· .'. . agglOrnata II segnale eli ImblZlone ntu3to e Pi legge II dato aggIornato. In ogru i>:e~lt\'-,> .. caso 10 state risultante della linea e VAL.
0
.
fdf~'<>..
e ..
.
. . ,
:~~<,Wflte.HIt Pi agglOrna una lmea che 51 trova nella sua cache ~T1vata.. Se
1a copla e
",~~V:]':."'·· nello state DRT 0 RES l'operazione viene eseguita localmente e 10 stato ri5ultante ;.~~;~..: . ,'~.-e DRT, Se 10 stat? e inve~e VAL allora vi~ne inviato il segnale di invalidazione ~\,:.;;<;:::,:
:.~i~~~<: .:;,~~~;;,:;::
.
aIle altre cache e V1ene agglornata la memOrIa centrale,. che resta coerente rispetto a questa cache; 10 stato risultante RES.
_.,
.
e ..
.
:f!~.~~," -Wnte-Mlss p. agg10rna una lmea che 51 non trova nella propna cache 0 the e nello t t !NV' L I' . I t dall ' t aI ( I . £ ..
'·~it~'
~r.~,;;",:.' '. , ~~.: ..:,.. ~~~~~':,
,!c: "
sao
.
a mea Vlene pre eva a
a memona cen r e se e
In
ormazlODl
"
Ca'pitolo It!:;",,,,
32li
I
,,"..
.~
!~
<:\1' ,;;;;
i~
. i,
I"
",,,-'
'!iI'1
':' >;~l -,~j',
lm
. >:':"~ .-.
!'t, !I~
in essa contenute sono coerenti), oppure dalla cache remota che la contiene in ;:;:"r~ iM stato ''PRT~~. Trasferita la linea nella propria cache, Pi asserisce il comando "'-j~~. :; di invalidaz~one' Inv .a.~utti gli .a1tri p[O~essori1 e quindi procede ad aggiornare'A~~, j~~
locailllente II blOCC~. Lo ~tato nsultante e quello DRT. , " .:'j~ (l Read-Hlt Pi legge localmente un blocco che contlene mformaz,om agglOrnate (quindic,i!' h si pub trovare nello··stato DRT J VAL a RES). Questa operazione non comporta .'}.'4 ,.~.,/ ,:j !ii • , . una tr.anSlZlone di stato. ,,}~~ ~ SWAP' (sostituzione) Se,la copia della linea sottoposta a sostituzione si trova nel1(/"::~i;~S ~' stato DRT viene aggiornata la memoria principale, Se 10 stato invece e VAL, INV.' ;'!~ ;: .,~~.. J! o RES non e necessariQ aggiornare 1a memoria. ":--:~' \,
." .
. '.'
.
"
, - . ,v
.,·:/~t:l
u
Protocollo MESI n'-proto~ollo MESI (Modified-Elfcl~~iv~-S~~~ed.Invalid), e lar?~:: ; gamente usato nelle mode-me CPU, In particolare essa...viene. usatp ..n.~lla farniglia. ,;}~~p~, ~ '1'1~ P ower P ~ d'l M I'" ! .. ' P en t mID e P ent'lum- P ro d'I I n t eI ,.come pu!e ~eII~ farmg ~toro a. ":;:'~~1,' ; n protocollo MES! prevede 1 segtleDtl 4 statl (due bIt) per la linea dl c~che. . ',~-£fJ'~ r ~ 'I :. "'r' , . . I' " . , . . ' . • ', • . , 'I /.''''' ""'1 :':1' ·_ii.~1 1 . . .. , ".'" 'j,. " ., ' '. '. ,." ." ',' .... I,;,'" . _ ' t •• ,n',···... ":" ,... ~!'."'-:' .. :.... . _. 1 •• ~J .. (.I:.. ~/ f":;:iil~
'~~:.''1ndi¢a:9~~ la~1mE;!a non Ie P05s~uta.-:in ~a:1~ra'".eache('e· cne'ridh11e'coereIrte' 1~6~· 'I:k::~1' l . • . " 'n" . al ," ""d ·t·t'I·· "'t' : "memOrIa 'l,fmClp e,' essen 0 's a a tlscn ta;
,'ill
,<,. ',pi~Iidi:;~e ..'····la'·toa'I
~.',
·'L;c6tnsporr .,1··,· d'" ""'~.l..T ~'\.F.!..l'''''{J:' ent-e nt'U1l:;::mOr:la ;\"W
'la 'cepId
l
!
~ dftii~p.e't~·'n;9#.JV3.1!aa.:);~~~~4~::P.f~!~~~~: ~S~~~~~Y~~eIite.:ili'\ati1.~~·.~ .' . , ".,>I 'f ·t·..,J·,I·,· .. ··,······,',,··'i1l."··'··l··'-·"·A .. :,.,J,.,'.ul~';'+;;\ ' "~:'}l, I, .,,~ ~., :~:Xi ~E'f.~~t~:, f ~~ ~!~l. ? ,~, ~1~~9P,,~ g~nc.\Rt " ~"r~ IHPme~.~R~ ~~;q~U1, 'm-i ft, ,~{Q ':};i;~~ : ;p,rE,~,~~~or~~,.. ,9!p~~md~, .Q~P'W;E;!., qe,. , ,~rn~I;l~q:,4~,1~~. ~~C},-~9,st.~~4~~9n~\;.~9n"HB. ij,~A:,~~~~! : , . .<11 ... ',. . : ;,. ,Il·"·,,..~;"'.'~.ldl;"'t . .." '. ...,:.~~. :.",~.RJ.Q.cq~!d~fp.'!.rte._,e.,p.r(U;essC!r~~~ocaJ.~,. .. ! .. l.••. ,.. ·"l, ····i,·' ~,·.h=.~ . , ; '.... ·,I'f.· 'k' 'l~'co~ia.· I~O~' Ie' pr~~ent~''i~talt~~'cache ad;'~' :c9~r~~tJ~'; ~,~~',.ia:: ~~~q;,r.~ .~e~~~~~:!t, , .. :
t ..
,.1/1';
I
'." . . 1'
.•
"
'.1,
':"'"
.,,,.'
"
",
. . , . " , ..
st~ta
",
"'~,'"
";
, •. ' • •' . • '.
st~s'o
u~a:,1Jf",
cioe non e modificata. Una lettura lascia la linea nello stato; eventuale scnttura la porta nello stato M, senza generare acceSSl alIa memona~~;:;~~ centrale. .;"Tf~
pre'senl}e ancHe 'ca2h'e'"ed Eh:ber'ent'e:'c6n 'ia. ;m~fuoiia ;pcl'n~rpale'l~~:~lj}t Una linea in stato S viene letta da:l l su6' pI'-8'cessor~ lot=aIe:~~eb'z~' ~knled~t~ '!aCc~'s~1'~'f:$tlk' II .. . ~ L 'tt . . l I' , t t M. bbl' '1 i"~ ,;\l,.',.:a,,~;,J?eJ.I1qf~,~ I?~~~~.~?:.I,e::l'.:a.}'H\ 1:~,rJ?9~PI~ ,,~ .~P~,~};q:.s·~'·'~I./\'" lJ?f:.ll~";,ff!fJ :' :"~qz:)~~ollor~,,o\~~,~)hH~Y1~;¥e"9?~I'~1)~~~!;py·e;p~~~~t;L.te,l;p~~e.~:Ht~,c,,,.',"~:"!·1· ;:~;~~i1: . ~ " . , •. I . • . ',~.': "'.. '>lr~ .rndiCa. 'cbe' )la .cop~;t ~b'ori 'f·Villcfa;. ·,t~; 1~~t'ud. :g~n~~a ui{fuiss 'che p6rri..'~r:fiem~·}r;,#ro:, . ~':.".~. ~.p~~·e~~d~·:se~:.I~, ~~~~' 'S~~·'t:~~va 'I~t~~ :~~C~~':~1l;~a([., ~lMJ ~S~~~~d~::1~~1~.~e4 ~~1wen~':~:~~~~ " :i':"3":~~",t:a "';~'l~,'-~atq 's; se I" Ime,~~on',~i!'iiltt~~a~~e (!}f!iU rH!s~, ::Et:~!?slVe) la ,':f.: ~ .JI lmea 51 porta: 'lh ·statl),I.'E:' ·L::i's;cntttira' 'S.U' lin blpcc;'C)1 ~nvahdo")~o p,orta' mvece"nello .;)2~'$l: :,1',;', ·st1.to M: l' ,~ \.~: ,: :.;' il I ~: '~lJ..:'/-; ~ , ~ .\ " , . ":.' ':;; -; ,.;,:, .,..\;,: ,!i; ,!. ,,~:; ~ i ~,~:, i; ,:.':e ndl~.~;i' .. ~~~~; ! r. I .'. :' ,,' ~t ;.~;,. , •.: 1,::, III !",: ,.,": :,', '.; \.,,0.,; , ,::::~~~t .1
S:'
Ia copi~j>e
, ~"::~~f'
i In';alt'rs
;M..,!..
Yi
.\ I')}' M~$J., e. ,1,J,9 P~.~tp~qH9. ,Yff-~t~T~.~c~'>I~ol,~9 -1~pP.!~~,y~.l.,?:~,ce;qer~; .pr~~o<;?pp.,~1jtt1:iL:~'ihl
o,Q..~~.I~~~.fL~~~~9~~~I1SC~R,~F g.f~t,t(? 1t!\qn,,~?~,~~~f;~,~l JTP~€!qoA~ p:1'tq;t~p~'i~ ~,~.':11~~o~la,·:~;I~,
~~P£~'~f~:AP·~f\e~~e,s,o.~J~?:3f..~.~;ii1~~·'.?P~~'~.<:f;:l·~i~:'~'r~~) ,¥~.~.Iih'~~~,~? Pfl,~~ 3cnt~<::A::)'.' GH1~, p'e~~rmW.~;\P.l~;.~~~~~~R~;~~?~·:m.~W:\~~191i1e;.~.:PP,~\~,1,a"h·f,le.~.Q.',:G~he,.n!rll,?ptat.O :>.-.;jfi;' ,
I
.
. i.~'li~.,
• . . .
,,~, \:J,:.'( ,':!">
,I!
;·1(I' .. i'.1 L';;;:";!~~ J_
.
,:.j,;!'
'::'U:'i~;'-
~,3S! ~ ~~P.Posto~ c~me_ .i.? [SG~l,~~.e ,~~s~~ ~~ P'?SSibiljU., ~i. ~,~~~~.~i.n;, ,4.~. ~~,e acc~~, ?:1~r,i~.e~IH~'$~~,
... 51 'deve
ass~m'ere"ch'e la;'-ic3:che- contene~e I~ '~a;'ll.~ D.~T'~ospenaa·.'a;: tr~n~l6'n~ "d~~, ,'~~oce~~~ l:1'le,J~~'
t'enta:~l""scnttura;~
trasferlsca;,ln' memor:ta: la,llnea,m ogg-etto'/ dt\ dove Pf,Ja.Jpuo"prelevate: '!'" .-.
\~lf/ ,-""
.
",. "
~~~(, '. ~'i
1
.; " .
<, , .. ":', ;\t,r~" '
l'''~' 4~:': ,,-.~, -
, .'"
'~r',
~'W~"\.'··
.
">;,' ,"- . m~i~,:" ,.
I!j,I:.I' 1-'-""·'"."
~'25
La memoria cadt6\
i~~""'"
J \
.
I
, "r.•.,' .. r,·r ';
MI\,',
modificato M. In luogo·della·stato:RES .c'e 10 stata Ej eS8o:tndica semplicemente eb:e ;)~;~:f:: .Ja.;copia:corrispondente,e coeremte:con,la,memoria!e che -si:trova esclusivamente' nella ~~.:'.,::.' ca.ehe·consjderata.: .,-, . .... . . " , h. . " '.', .,:: :"";"~I"':::' ,.;
l~~': :.fi,.d!agr'0':m~,d~i_ta.to.d~i pro16t,oU;' !>;lESI e ~~?Orr~t~ iiiFf~~';;72~, i'erh\?tlvi h'\" ,~l~?nCret~zza tl dla.gramll)adl Fl~ra ,(,22 e que~\9 del pr?~CO~d 0ESI ~el ,P,dwerPQ
i~':''''':''', . 601. jn~~,,"", .. ;..
n protocollo ope~a m modaltta. wnte-back. :.11::', '.: "., . . . ':' .':, ...
t
. . . ~ : " . '.;;'.;i! ti I"·· ::' ~~;jt ',~;,:~;-,Per compre.ncle're iLdiagramma'di Figura1.22j bisogna.telier,.:ptesente die:iil pre't~~~~;::,:", ~enza:rdi:riIiSS lao vecchia line~, viena inva:lidata,e co~ia-te. in ~emoriase ~era nelle. st.ato ::.. ~:.::;. ,M:.- Dld:onsegllenza.tuttOlavv11:me come se la nuo.v.a.Unea partlSse cOffiunque daUo stato !~h··',· I .. : :. . ', ',', .. :r ,.\. "" •• I" ,! ' . " . . ,~h' ,~~.(. ".. --,'";,, ,,,.... '.' ' • . ' : " ' . ' .. : " .' ..... " : ' I:'~, ." ,'::' ~ i;\j:, ",:.
I
u.~~~~;\\.~(".~~,,;,;,,\:
\
"IJ'li'
;~tit,~~;;.~r)h;:
~I~\~~~':~;
~,t.!~h~): .:,; '~'I
1lR."",~.
[iI.~k~"
. "".
~
::,.":' ,.". ';
",) T,'!
..... ~'t·l). ;,*~&.tJ':'
~
' .'
."
."
".,', ,.,:;, '1'
,
~,: 1 i'- •
,
'1
., :.1::1· ... '::' ~ '. :',;. .
'
.;,
.
hlJ
.
,.'".:
S
.'
, " .....
hI,,!'
:~~'\" :~\~;, " 'j I " : :~~~?-;):, ~..Id .,r "" .. ,:' i; ;,~~~ ,'.,."
f" J,. d"
~R
:'
,:'1\:' .", .• ,.,.'.':
,..\.I.h
1 :',;:;' ll' '.: j .'
'1J:,
,.~'
j
"1:
.hl~·
.: "
.: ,1..,
~
\.In - IJrlte'Mlss :ShR:=. :Snoop· hit, 1)0-0. :Sledd . :~j ,-
.
' .....
flo ..
"(nl~e:,~r, :
'R"o..d-"r1:h-ln1:el"\t-~O-f1odlfy 'q , ' . .~ . . ", "~I ,I, .
.:'::';'::.,
;.~
........ "f : .. : ;,' "'.' CD-'C'h'U 'fHl 1 \ . , .,
[nvolldote tf"Cln o..ctrO!1 .. ", .,.0., .. :" . . ,~". ,..., . . """":"$';' ..... ' .R}); , =Reo..d-wl-th-{n,;:e1:-.to-.l"Iodlj:' ; '::: ':<1 . : i",; ; .:: l', . :', '::.-; i; i, I;, 1 -,' ,:;:~ .r ~ ; ~ ~ , ' . : ' , !.' .~",:", ~: ~', :'1.', ~::: {,. I. " .J , '~,. ,l .., ... :., " I,:H '("~"'~". 'C""
:'.... , , , . ; . ; : , ' .
~~~~~7.-· . ' , ~~~';~~:;,~: \ . :Ii';i ,';' .;.: ,1"',I:l ..' .;:~!.' :~,: :, ":",: . . ;,:,: .:." ~'~ .:, ".' ',' . "; f~1i~"". ..... " 1
:::
1'
: " " \" . 'CD·- :s~·7 .. e:r' ~,~: ,:; , ;: IJ~',,; I":,: '!' \..:. ., ' ...-: •. ~~o~ . ~~:.~ '.; '•. 1. ,'.: l', ;. ~ ,
.. ' . '\"E'
.',
),;~
r
I.t ,"
~' ., ~h~ i'~ , S~~p"hjt, ,.qn
.';
.' '.' .
',:".
··'~i'·.·~h'·:I".
,~~~)A:.:'·: ,.:~~~:~,,:
I.
,\ '. ,.', ; . ;
~.I· .,.. , j',4~\;:..\'., ......,.. ,"';(i. .... ,. i"", (''''''. . ,. . . • IV,.·
'"
• ,.-":.j l.! RI'l_S' - 1'1:"00 I'>is5', ShOf"e:- Rt:o.d·.miss,; Exdu5lve'''; ',.,..
I'
(~
I.,
,.',;
" . SI'lR. ! j . 6!h.. L.· B~'!L·d 11-)(1' "
RI'lE
l'\Jlll'",·
'[k;tll~~''''-
i'
,J"
I"';, " '" ,,':i:l' '\~~'."";"'I',\\'~,;;'.',~",,';';::il :.':~' ,;:":::.' : ,l~': : ...\;·:~:~;;
f'I~':": "':R~~'
ll~~~t:~.:...
,~;tt~~,t.:.~.,
"":"" Sh~
, ...
, ,)1:,: " ". " .:
!~~I;.;·,;:,~,,:.• ~,:
l
,~:"
.
..
,,,:',",.;'"
't
: .'
1~~~::::' ~,iff~~i~~.'! '~o: ~~pi~ ,~,:h:te~6~ia :c~I1~ra!e :I~;li~~: m~difi~~tal,5o!? .~U&!il:lB~'si:'l1ctorglf<:he
~u'm~":I., qualch~.altra,catb:.e mdltlzza ,Ia. medeslma: linea', In lettura: 0' scnttura (eventl ShR e·ShW)·:· . ~j~V'J~r·:!::J ....",· ,).! :'1' . :. " 'I ,~, ", .. I.:, ::; =" ,'":, ,,' ,.,' ,l!i -:,.,.1" -': ;./ ,:":"':; hf1:t;.~;~·'·... . .~(; .:. ':;'. " , j . . :"" .,', .:: . ,.;.:' '.' .... ,.;.,., ,.:~ .. , 1'.:<' .... ',1:' .. : ,-,.: fI[¥.l:v.:lv· . !ilr.~r'f:~~~:~' ~X·~;;··' ,;!. !~. d, .. ~ ,~< .: ; ~ ., ":. d '.;:;' ..: ,'. ' : 1;' .. 1: .; ,," ,::' ..:; ~ '. , ,:,~.; .• , .. 1 L .1:' ... ') •. :,,; / "~~;~'; '.(~i'l.:J 'Si-notirto i d~e eventi re!'atrvi 'airattiVii-a 'di;sti~P,i?g~·.~HR.,('Sti~~!" 'hit '()nj'~ '&,0.4) ~~~~~,~, e ShW (Snoop h,t on a ovvero Snoop Read-w,th"nftn't'focmodifil)! 'fu quest. '",10"V-f~,' "it d~nomlpazlOm, 11. termme hIt 51 nf~nsce al nconOSClmento d1 un'operazione fatta 0 ;' q~1:~.:.:t€rita.ta.: da: ~,1t:Fe .-caehf sullaLli~ea' '&, cui. 'c!:e 'c6pfa·' n'"e}f~ 'ea.th~p tdrlsiderata:ilfilal6i ~}: 'parolei ShR! iildi'C~'che 'larcacl1e,to"nsi~'eratasta 'os~etvando tih tentiti~6"di'lQttura~fatto 'fJa)E\~:. cia un1altra cache alia copia della linea (non indica cle hit sulla cache che effettivamente ~.~;s.;'~~;.~ ten.ta 1a lettura). Allo stesso m~do, ShW indica che la cache eonsidetata:oSserva una ~!:~{/:,~, scnttura s,:lla l~ea che e.at su~ Interno: In qu:~~o.,:~~.l,~ f?',1P~ ~?e;,~ff~~t~&.1.ascrittura ~~":~ nRoendha ~athh~eta, It etventod~~~) amfesta come lettura con mtenzi'one di modmcare (Snoop -Il,;:i"r..,..,~.. a -un -m en - o-rno IJ!I • .!.
WNte
.
,'"
,.. - .. , ._
,_
~ ~\i~~,.stato S
...
.
~.
0
Ip.:
) \
I )
,
1
_
'~~i'~ ," ~~I:.::~'.t~e,~~?:'~'~'·,(~¥~~; 'UJi,~~'. ;1~!i~~fC?,#~R.9i;t?~~I\~:i~,n [,#i:~s. ~:.~~,~~~~. ~li~:.~~~.~q.i?~lf: 1~1~~~{:; 1.3::p~e,s;e~~ft., ,~~~~.l~p.,e~,
\
":'; • . '.' ."
'~ilt~'A';":q~'r~i:li', s'e '~n: istato 'M; copiata. 'ih..riteih'oria:. Si -n'Oti' t$.e:.~qli'~to 1>'r~to4oU(j'<)J:ieftL t&':Scrrt'tui"a.
.
1
f ;'
~'W~t~~:,;·, ~lgu:a 7.22 Dlagramma di stato nel p.rot~collo MESI: n ?iagra~ma. np.orta Ie, tra.nsazlOnl ~;1,"f,;';'l,: che 51 svolgono sui bus. In presenza dl mISS, 13, vec(;lu3 lmea .vle,ne anzltutt;o mvalidata. e
'~\~i~< ..:, .. ,.
I
~ltr,e..~~gie,.~.l~ ,.st~t~,,~~~r~,~te, :C:P~'I~a.~Pl~9t,lal,( dJ.lJ\qlf~',.-4J.
E). L evento Rm...E (Read mlssJ ExclUSIVe corrisponcle 31 un·.miss, di' lettur.a
\,
1
~~ ~ Itc
:3:::2:::6:---=C:::.o.p.::it:::o.::l0:...c7
I
'~".
"'j:]~~
I'
.
."
).", ... ,
..
l
,}~ ~~I~
I \
che invece non rileva la presenza della stessa linea in altre cache34 . Una,linea; che si trova in state S, s~ si accorge che un'altra ~ache sta leggendo ~~:~ ~~~ l~ medes~a linea, (evento ShR Snoop. hit on ~ Re~d), non. cambia stato, mentre 1a /~ ~,~'l linea che 81 teova 1D stato E e osserva il medeSlffiO evento 51 cleve portare in stato S.~'f,l;i ,~~~ La stesso evento ShR, osservato da una linea che si trova in stato M, porta la linea in 'I~~ ~ ·:tR Si ma ~etermiDa anche 130 scrittura della medesim~ line~ in memoria centrale (SnaoP\~~:~ij' ~:~ push), ill modo che l'altra cache possa averne copla agglOrnata. .' .;-!~ '~,: . D~o state I 1~ li?ea ~i porta ~n 5, E 0 M .a seconda del fa~to che si aQb~a'~::,:~g :6t nspettlvamente: un illlSS di lettura m presenza dl almeno una capla della linea In :.'~q;: ; ~:i; altre cachej un miss eli 1ettura e nessuna copia della linea in altre cache; un miss dl· ..:;~ .,~i; scrittlITa.. Nei ~rimi due casi s.i h~ un ~mediato caricamento ~e~la .linea. Nel terzo ':;/~t . ~~ caso, 1a linea Vlene letta e qumdi modificata. Questo evento e mdlcato all'esterno ;;~~~j ~f come Read-with-intent-to-modijy; esso dice che in corso eli 1ettura una linea dalla:~~qi~ ~;t . e elle tale linea sar G' .unmed'lat amen t e agglOrnata. . l; memona _<.,.~~ .g~,•. ,~~ .In pr~.dell'e:ento ShW. (sno~p di un hit eli .scrit~ura 0 di un caric~mento }I"~,~ COD mtenzlOne eli modificare) la linea vlene comunque mvahdata se non 10 e gla.. ,'"::;.'.)' !l\ L'evento W h porta la linea in stato M se non c'e gia, rna se 1a linea si trovava :'}!i~'/ ;~ nello stato S, oecorre ~a .transazione di inval.idazione sul bus per permettere alle.~;11~~ I, ~ij cache che ne hanno. COPI~ di passare qu~te COP1~ ~lo stato I., .. .:--'.:~)~ ~~ Vale la pena di agglUngere alcune mfonnazlOlll suI modo m CUl 11 PowerPC ges- "!:;~j!,~' 'h tisce il bus. E previsto a tale scopo il segnale GBL , pilotato dalla CPU the al {;:~. ~:~ mot:nento e master, avente la funzione di indicare aile altre CPU che la transazione ?~, l'~~f corrente cleve essere osservata. Se queste ultime riconoscono che l'indirizzo sui bus' .L':l~!\ ~~; corrispo~de. a una linea al pr~prio ,interno, .Ie. r:la~ive cache rea~scono secondo il pro-.:,:::?':. ,'~;; toco~o di FIgura 7.22. Pe~ cVltare che l'attlVlta di STI?OP OCCUpl tro~pa banda, quest~ :~?.l1i 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. ,';~~i~:;;"';, '(
e
I \
•
-ml
' l ..'f
';'
:',....'
\
•
'I~~"
·,v~ ,'.~i .. ,... ~
I I \
(
I
,,!'
....Ii
tc
. _7~··,jl \l :{
ApPl"ofondiment~ Nel protocollo illu~trat~, un miss. deterrnina sempr~ il car~ca-' ,~:;'~, " !l mento dalla memona centrale. Nel case lD CUi questa Sla non coerente, Vlene pnma· ~~~. ~l 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 '/~:rJJ } direttamente dalla cache con~enente il dato modificato ~la cach~ richiedente. ,,)~r~. , . .Nella ~art.e ~e se~e, 51 fa u~ confron.to tra (~ du~ modalita. pr~ndendo come ./~fjll ~ rifenm~to il caso In cw una c~e nconosca i1 tentatIvo dl1eggere una Imea contenuta )~~~~1~f al suo roterno (Snooped Read HIt) ·.,,~il~
Trasferimento da memoria a cache La conelizione di partenza questa: 1a cache .~\~~~ ~ B contiene il data aggiornato, in stato MoE, e la cache A tenta ra lettura. ~,;'/J!~ ~
e
".,:~ ,',.1.f:JJ.• .
.?
• Linea in stato M:
1
iii' '\
a) 1a cache A tenta 1a letturaj
"*~'
~o,& '
:.:;r~~': !
,,:'-;Y,r, Il ' .. .
,·~I J,.'i::'" r: ""/"~...
,:;1'I:1.
I
340vviamente, il faUO di rilevare la presenza della medesima linea in altre cache e legata 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.
,.~.',~ ,
'···~'(l ~
<;,~t1i' ,..",'J .,
" ., :''';'(.''f ','" :",' (.~i!:~
,.,.",'"'~ ... ,•
'H..k!:
,..'.''i",l;,'L,' , "'\'I: ,~ ",
":!£:i:
J
"'~~
T
~
.\j;,:..
~, c; . :'
~ ~~
"'!h!!::;' mlfH,:-" f7,·,' ;'.. .....\ .
La memoria cache
.•..
327
. "l:j'o,C:--'
ll~~l-
~:J:"
"..'
,l.:',,·.'
~!_~>"
b) la c""he B ""serisce il segnale ARTRY e il segnale SRI (Shared Indicator).
~lt/:"
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 A che 1egge dalla memoria; con A e B che portano la lora copia in stato S,
lj~~~:: ~::!:. ,:, '
R~~?:.·'
~~;':,:" :~':~.::'
t.~<:.,
;J~Jj>"
;?!-"~"·.
~!f~.',:
f~ ~
..
ttt;;/.
• Linea in stato E: in questa caso B non asserisce ARTRY 1 rna solo SRI e 1a transazione procede come al punto f).
;h.. ~fr~:'"
da cache a cache La condizione di partenza e la stessa: la cache ~~~(, " Trasferimento B contiene il dato aggiornato, in stato MoE, e la cache A teota la lettura. \k~~~~~: ":
W~~~:':" 'ffi~j}?';:' .
~~rzr;::
h~k;~",'
. f;;}!:;·;,,:'
~,:fur;
;~~,-,:':
;fi{{~;:,',·
:ltlf~~:" ~~~?~.
(~i?!X:~/
\~;",-.':'
c~W:~':'.
{Jtj.-,::;.,,-
• 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 svalgimento 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.
ll~il:--'
lf,~;'-:':
~jP~~::':,.' ~!~7}.~. .
,m~1f.: '.,
~~F.
f:~,~~,:.',: ~!f;';i.,
~it<: ",
~£~,t}
.
?'l,,:;O:'''' .
•'" "... ~.,.~,
'I':~;i/:';'-
!,{(l;~.:,::~:
'l~;ri:,: .'.", . . :",:.~,C .. ' ..1..... '
1.!rr.;/.
,:,:::~._:
~"'\.'--~;'
,.
,;;~U.?· ."V' ..',. ~
';'-'rc ',. '" ~~,. . ,"'"' •. '<;i<',." ~lt~'>" ,. '<:-".:';"
.. ..
,.-.,:''"
,i£e-;~·.' "ilIr~\I,'
7.6 Esercizi Esel"cizio 7.1 Illustrare 1a clifferenza tra cache fisica e cache virtuale. Esercizio 7.2
Spi~gare
1a differenza tra gestione write-allocate e write-nan-allocate
della cache. .
Esercizio 7.3 Si facciano delle ragionevoli assunzioni sui tempi di 1ettura e eli scrittUfa, 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.
'328
Gapitolo:.7..,·
'i _
"
,.. . <+
·· . . .oS' .~- . , . . . . . . . . al ' d' 226 Mb . ',I;." E serClZIO 7.4 1 suppongaehe la memoPLallnnClp e Sla ·1 yte, COn parole dl . l'c " "b't' 'di' , '32 b't 'D ' "I t tt d [" d" , h d N', . .32 I em nzZl~SU \ I~' ·ete~rrnnaa:e.a.sru ura. egl.lnlnZZI.per·unacace a :I~ J . .. b D "} I"··· ,:to" t 256kbyte,a8vle,Conhneed164 yte.; etermrnaret: numerocompesslvodl bit di :;'·::M. ~f TAG' .. ~:., ," .. 1. "" .. , ., .;.. ,,;: '; ,'. :,i,~ f
... '", ,'" .;, ..
'
"
"
'"
.., "" ,
. ,\L'tf;4I'C '~'l!i
"..,
,'
EserclzlO 7,5 SI consldermo queste , quattro orgamzZaZlOnI dI' cache,' (a) cache a .'::,~,f "~'" ," " . ' , '. • ". i : " " '. , .,' :, ,. . "'.~ mappatura. duetta: dl 1:6 linee, can lrnee dl una parola, (b) cache a mappatura dlretta '.n:J..., .1, , . ,".' d~ 4 li~e~, .con.line.e..eli 4 p~ol~;. ~ c) s~t .;as~~~i~tiv.e a.2 v~~: :cd~ linee di una .':'::~~:; parola, dimensl(!)ne GompleSslva 16 parole, pohttca:dI sostltuzlOne tRU, (d) cache. .set ,J'~' " .. . . . .. . . • .~,~. '} a~soct~twe. a 2 Vie, c~~ h~ee dl 4 parole,·dlmenslOne,cornplesslva·16 ·parole, pohtlca" '::'i~~( dlsostrtuzlan~LRU.,~ . I \.. ,-·~''''~:~ . "; l;~. ,.!., ..• ,:' : ,",' •.• ' . ' •• . '.' ;··.·'."1. '.,··.·:;'.1... .·~&.;7 81 conSIder! questa sequenza dl nfeqmentt I~ me~ona (~dtrlZ~1 dl parola): ~':'1:"\,~~, .
each: ,
... , " ' ,
"",
'
,
Jr.·
.'
':,'tl,}"
1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17, ' _ ')}l\~1; ,," I:," T,. :',1 ',:' ," . ',' , .'.','.1,: '. " ;.'J,' ,', '.'~, :~: ' "'" ..f,' ":,I:,~'fi' ':'.. ~,~qgg:J:~ ~!-1:":; Pet. ciascnn~:~eUeqiiattr? ~ache sb~ra'~}e'ncate, ~~nini~ndo ~'e .inizl~l~len·te'siano . :{~t~ ' vuate, 51 deternum l'effetto dI CIascun nferunento (hit 0 mISS) e s~ n~?rtl II c~.ntenuto '~:.~~'~I, ~ finale della cache, " . . ,;,.)l!;'iIL , .,' ,
,
-::'}Pf~~~:" la'seqtienzA. di riferi- ~,.~h:~
, ",1
'Esercizio 17 ..6 ;Si cOIisiClerintY Ie dJe" br~'ani~zazioni di tache Ie .menU Ynd~iz~~ ~i para~a) s,o~to ripor~~te:., . . . . ~.. . ,·)r~?l. a) Cache a '4 vie," linee idl·2, parole, dlIDenslone complessnra':parr a: 32 parole. Riferi- . ,};~m ,' . . .,·,\:;:.:r;l,.~ "''''1 Ih~nt1':"" . '-"',[~ ... :'i:,·:,:, 1:.;)[ .... ;, I"·.,, ". " . '. ,.'.j:" .. ';. , ' " I , ' , ,.. ,."""'J:' ,. 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. b) Cache~ a ;4 vie" Iinee··ill ,4 parole,' dimensibrie 'complessiva 'parj' a. 32 -parole. Riferi- ,', ,:<~y., ••• j • I : . "' ' :iit\. mentl:• '•1 . " ' : '• .. ,.,:~.,.,.", .. , . " ". ',. '·.:~.
l,~l. 20",6 1 19, 48, 8~ ~~l ~h ~" 4~, .1~~.,21 ~l. ~~I ~41 .3?, .~.~,. ~?, ~41 ~~ql r8,.! 9. . .R~f~ .. ~~.~~,~ep4?lcP:e !~~~~~.t~ ;l~.:~:~hl;! I~I~~ ~pte.,. ~~ ta.. t~cn.~~.';l- ~:h ~est~one ~ia .!Wtk
2,. ~, 8,
LRU e che m presenza di pm linee vuote alia stessa pOSIZlOne, SUI mlSS l venga nemplta ':'\;}"{\?' l~ linea s~lI3:. via pill a sinistra (quel~a d! indic~ mi~oreL marcare ca~ "h" 0 co.n um~ ,:'~':ift clascun nfenmento a secanda che Sla hIt a mlSS; nportare a parte I contenutl finalr ,:,.',:~~~
)!,f~1
delle cache (TAG),
"~:~rf.~:~I
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 ·";;.J~'~' "0"\ . .\;.,',••! bit, che vengano sempre indirizzate ~arole di 32 bit e che i byte entro la parol a vengano .•.•. identificati attraverso i 4 segnali BE3,BE3,BEl,BEO, carrispondenti alla decodifica dei ':·',\'~\~i ·0,;.';' due bit meno significativi dell'indirizzo. IS.!· .n'"'}':"'. ~ t ~;. \ Si dispooe di. integrati SRAM byte..wide di 2K, 4K, 8K, 16K, 32K, 64 kbyte, .~~i~ Gli integrati, oltre jagli' ,8 piediniJ. re"latiri ·al 'dato ·.e·"ac·ne<;essarir piE!61irii '"di ,indiriz201 , ;:L~~ pres~ntano questi piedini; CS (Chip Select), RD (Rea~) e WR (Write). ... Q~an,do ~S .,>~;~ 'e asseritb Ii mein:oria' effettua l'operazione riChiesta da'queUo'dei rHrfanetiti ·dtfe the)~ .,,..,, asserito. ' II;, . j,i:"!!, <~:.il . !<;·~,t .•'" , "Si"sce!g3\l-o,; gli ,in.tegr~"i per Ja, ,p;;rte PJ.'rle. p,er.,la .,parte·, 'r,'\<;l,.,jn.,JIlodO,;dj1. t~al,izz~r~ l~,~ql1.\'LiQq~' piu ~cQnoIl)icaiquel\~,~h~impiegaj), I'),,,m~rP: mjniJlJ,o. di "'tegr,~ti d'"' ',~,~~ ~)"a p¥ita 9i Q.umero ,di;'~I).~ewati" ,q,ueUa,~,'.a9oper::90J:t?-gli:piu, p~ce.::QU, li :,: . ,!',;;: . , ",!:,, '~;'\':'l' .Sil,~cqerna~i~zi,!~ ~tI;1,l~.twa:~degU.iq9irjzz,~" II~··I ,.,1: ';' I;' ,,:. ":":J'! \; ';:i.i~;. I:~'i·'''.::.(,~ ,. ',,:\> • :';\;:i ""i:» 8i tracci Io schema re;&.li~.zativo mos~[~do i coUegamenti dei. v~);Lintegr.ati di mempt.1a,. · ,'.,..t\_ . '':;:'', -.""' ~
c~
,?;fr:
·
."!$E
J ...
·~..)~i ," ,~~w
,·9.1':
~,f:
)
T~~"""
.t~: "
r.1l~"I'h r {.j ~ .• '.',
.'~::J! ,MY!:!' !· ...."
La memoria,cache'
329
",j , ~"J; ,I! f t,. ir~<; llf~'· ' _'':'~!ilr,,:-\ .'
,
1
:. '.r:.~(.: "m" ~re"" . .,
." "~ ",.',
, ,r . . data'una caChe .' . , , c,omp. I ' pan,a· ' 2 56k~' 'di EserclzlO -7..8'"l!l; dl capaClta esSl-Ya; u.yte;" a d' ue:.vle::' ""1".,·.:. 8:Kyt' L I' di 8 I ~'4'byt (32'b't) Gli,' diriz' "(di '[')
+~":-/.i:;j.:
12,
e CIa8CUna, ' e Inee sana ' 'paro e U> e . 1 ,.' .m z,' paro a dt' "o't'31'2dlb d 1':_..1:-' . L'al 't di' "," . t' t",'i~f': '·ye.ngqno: a LSUl':·1 ,ft .. .ft.,. e,· us eg1.J.I.l.WCIZZI'. '. gGnmOi ,nmplazzameno,-c. f;~')l/l::;l,:';~;"" U L'al 't 'b 11'" di t ' t " '" ' .... " ,; .'O,' ' f ; ~ .•. ',. f',91'~\~" ..' LR· gOr! rno 51 asa SU Irnplego con a Orl~,,·... :,.', ....•. " .. , ., , , .. ,..... , ... ,.,
.',Y':."','"
J"I"'~'":''i'''
tt;,:,
,Siric;hiede,.(1)lastrutturadegliindinzzieilnumerodibitdel'J,'A9i(2)~~~mer?
'.. ,c':': di bIt compless,vo·.'(per l'mtera' cache) 'nchiesto' llen"contaton 'LRU;'(3) -la'· rete-ill "~'''';.. ' "aggtotnamen ". . ·t·0 'd el'' c'ont'a,orl t " (I" 't d" t ' ,', t d' II .' ,; ~,"', 11' dl"~"di'"'I" ~:~;::\';::'" 'a~e e . eve. ener con 0 e a'conuu,la ~' .·v~ .. "do' non 1,11;:" ••, • "al'd't" ... 1·"'[") ,"'" I . '" 'I . . . .'" . , '. ., .. " " . ,.,.. '''','",... . . " I,· , • ",",.. '.• ,"'1· ". ,. . ,,', ':;:.'.:, I 14''d'e11' e-sln,go lnee .'."" ., ,., "' ;~i:0j:f' v Per' quanta si riferisc~ al punta (3) ;., ·si' 'sliggeriBce ill 'titkvar:el'l~' esfjrtissid~i .iai ", .. ~;c .•.·. ' ,Ie atl, er Ia. reaI'IZ'l.aZIOn , d' }ii~~': :". et /Reset d el'JI'1 - ft a 1m el can t a t on.' ,.... ., ._ (~JJ(~~,!F;. ' ~,l"!'! "1:1'; ~; ,.~. ';"~'i ,.:p.' '?,~'i:P:". :.~ ;.1 .. ".'.'< 'I, ~ r:~ j. : .... :,'., .•. \).; I;i": ::L. -:;/, ~ ."d:'i~"'·I~":~'·; ~n.tl;.-,~· .. , ~.r:l(I~..l' ''j'9 1i+r'\\I,,]'';' .(.1 ..,. ':b" usl:d..al.a t····:32'·b..·t .. W·'31!'D'O·)·,1.,! .. ':·::J~~··!·.d" .,~I.:,~•. ,.I:lO'ercl;c,lo ... vncacolaorli!con 1 enera l l i'InalnZZIl ~-;:";"~':I~"~:";"':: r' i i)4~':b!yo;:: '-t~).' s'11\I']'"e \-'tnt:: ~';e". / 'd"1 ·...;d'·;·1f L r~', A'3' l' '~A2 "'p':::!: i •• 'd( ~~:t'" . &.:; ".1 .,... gli"o·j~..+, .~,i.: ,: :! • ·1,l~~~':r;':(:'·pAroa'~ III Irl:GZu - . erm UL«a.ry~~mg9.. J,,:eo,I:u.n,a ;;;,:r:::.' parola vengono lmplegate Ie quattro linee BE3, BE2, BEl e BEO, " .. , "' .." ,,','. ~': . ~,~;~~·;,:'I'.". Qi.vug}e I'ollttuire unatCa~e:diI5U.2kbm-e.a:.lT'tapllat~a:diret.ta I.coIl'lin-. ..I~16 ;~~J,;,,~.l,.. ~.;,,~ ..;¥,,' .•. N ••• ; ' .. , • . • • • • J.".I·,T'~" , 1 _' __ ~~y,'4.. __ '\~~1{;ft~>·c. p'~!~\e'i;..Pe:r J~IP~rte P~~.;9~~~'.f~h~:.~i,.~~~9J?e,,~ ip.~e~MLb!lt.e.:w.i~~,;{lj: ~~ ltPyte,;
.:. :
I )
0;::
>;! '.
~'~:i~~j'(;'" R~r)3::p~,~. r,I'A..O ,~ol)P ~1~PC?~.lq~J.l .M1~em:~t~~9!.:tl:\ttp:~~l,i:,.:mfl._~.e~mr.e:~py:e"U!:1~~~::,:,
LI';!:{r,,:;
I \
I
i
,0 ,: S.~,~<;he!'!~\f2i~I)1':' ~tru\tllta,,(\~I~I!1dirizZ0, GQA I'IIl·:· taglio git,lst,9 e qu~ni? minim.9, rr:a. ~~~ci~nte all'uso).. .' . ... '_ . . _ . ;:~f~~~:.:·:":· ~·."I.~., 'Ttiiiieat6 'con 'Vi' :Pip'dica.t'ore (U! 'Val1dita;';della~ ':g~rier)di'liliea" ~;'~si ?sugg~t'isca!una ;i"',l:'h.~·' ,.: I' I ''r'al~!1 '.. . \ .., .[ , ' ,.' .'.,. ""'·"11 ", ,I.". .~l~V~!:;f':'::·:·souzloneperasuae'1';( ..zazlane.;·' ".'' ."···':,··,,·,·,,'"..-.(···,····,,·,,"·"··1··
'
J
~§!~{~Jrt~' .,-. _,' ~.~ ?}s~~i~!l~ j~~f,~,:?e~l~ fe~~,FP~· ~~.~q~¥.~~~ . s:~. st.q~ :?t;,?:?:~i~~ epJD.~r~?§~y,q ,1~~ ~{~\~\r.L,.;, c~~~~~~~p~.1 ;~~~17~~~~ttJ .q~:I1~ P~~,i~~q,· .L,a: r.~~~ !d;~:;~ ~~.er 59,~e?';~7P; 1"~d~,.98;~9~~ \~:4;,;;~:', dl vahdlta dl Imea. Sl dlsegru 10 schema del generico CS (aup Select) della parte ~{~~;~';1,~(,,'; :q..~:r~)~;~J.~~~~~ ~n~g~~q.ti:~, p~e.
bus degh mdi~z~l eel mdmzzo de.lla hnea da m~dare. ;. :.:': !J;~.•. ,:J, ::':'i' ,.,~ k '"ii·. ~ ;;':,,">''':. Per semphclta, escludendo la dornanda dell'ulttmo punto, SI consldenno soltanto ~ ,,,,,',,,. . [. " d'l' 'l:""l"'i'I";'" e:operaZ10lli.l·ettuIa., ' . .,',.;. 'I~""" ,.:~:,),.·,;i:', ·.',I·i .. (.: I': (:t ~~~i.~~·I·W.'.:,! "-'1,,--'-"" , . . ',-,".. '. . ! r,!A :.~ .. " ,--.~.,. ,;.,<:, :'. " .• Il!:.. : ." .JI·,:· " _ ';' .. :Ji.!;·,.'" i: ,.;'.' •. ~,p ...: ,:~ .i: ',. '.:,'!i ,.;~.i. '·.. !:·l:h;'·l, ··i:·l;.': 'I.", .. '. i ~~:;-. l,",:,' Ese~Cizio, 7.~10{, Con tifetimento,aU '.aUgoritmo,pscudo Jt.RU:p.er La gesti,~ne·della;tache ' ,;j';;" della CPU 486.. 'CfI:"J.2,12)"si ',iporti,',lo ,stato, \lei,bitdilo',B,eB 2! e"dei,bit di Yalidita ):::,~:", VOIV IIV 2,V3 a seguito di ciascun evento a partire dalia candizione iniziale data (in ~ ~(;":'~;\,' :~? di ~~ss, ~ presenza di piu linee non valide, viene utilizzata la linea non valida ~ ';',~( :,:: pm a Slll15tra , Condizione iniziaIe: ,,~ ":(:,/.;'~ .... ', .. l, ",.i>·,.~; :'::, a) tutte Ie linee di una generica posiziane sono valide (Vi = 0; 'Vi); ,t ;;<~I;.. , ' b) B'1-- 0• " j" ..
I 1
\ \
I \ ,
I,;~:\i';:":i:
~
:
E'' t~·:~:'.;·:' ,."
Sequenza di eventi (M sta per miss, Hi sta per hit sulla linea di via'i, Ii sta per ,tnva Id i azione della linea di via i ) :
~H:T~'1':;'
,. ',' ,,l.
"
'j ":,':/:'::""",. >: •. , .... ' i,! "" I. .. : •. »' ~, . ,t ,'" ' ,,,,~ ,
.. .. _ •'I:' "', '.:
'~
I,~\ •• , ,."
i :J:.:h:~'~
w.
,,"
,~,,.:.--,.
'
M; M; Mj Ho ; H1i M; M; Hz; M; M; IOi H t ; H3 .
I 1'
I
~"
i!
"
330
•
~
*
-~
Capitola 7
!,J
I
L~'\
f""
,t-t
,~ •.•:'
e
\
.
"'i "~" "
EseJ;'cizio 7.11 Si osservato 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 e Pordine eli sostituzione.
~$
t:f ,"
:, ....,
t·~ 'i'I.
"1
'!t' 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 ..x .w non valide seleziona quella di Dumero d'ordine piu basso. La rete cleve fomire BU 2 bit 1a codifica del numero di via selezionata. ~ ~~I't!j1' .". \'{,-
•
,
I.
I
I ·
l I I \
· I
I
.~F
.j,-
"
"''J!',l
Esercizio 7.13 In riferimento alla Figura 7.6 si aggiunga 1a parte di logica che pre. ,::~,i~~~ ,~; senta come j, il DurnerD della via BU chi si eavuto. hit, oppure il contenuto di Sa in caso ·iN',;'" ·",f!.i" .. ..;...." 'J di miss e linee valide , oppure il numero della via prioritaria non valida, Si supponga :\~
.:. ril '_',l.\.~~,~ :'" ~~
~
che la cache sia a 4 vie.
I
0'1'"
'I~ •• ,
-~,
'::~~~ ~~
Esercizio 7.14 In riferimento all'algoritmo LRD descritto al Paragraio7.2.2 e basato sui contatori, si 5tabilisca come devono e5sere inizializzati i contatori. Si tenga :.''\}~ift1 >~ presente che l'inizializzazione deve determinare la situazione di cache vuota, ovvero .;;-~:~f: 'Ie linee devono essere tutte invalidate. Se tutti i contatori vengono inizializzati a 01 ',(~~~ ii :i',:,,~~ ,"; l'algoritmo presentato opera correttamente?
,i~\t S
;:;!~ ;~ 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. \~:~'t~ 'i · ::~~1r';1 :~ 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. :~lt~~ ~ ""',~it~~m Esercizio 7.17 In riferimento all'algoritmo pseudo LRU del Paragraf07.2.2 , 5i pro- : '!-~~~ t getti la rete coriispondente alla logica di decisione e di aggiornamento dei bit LRU. ,~ti~!~:
:
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.
:,:\t~lf
;:~~ :·, .;I~~, "'~ ,~
""1';'1':'11 i~
,.,~:£J~.
?
~~~;t ~ ,,::f:~: .• ~
":'~r~~ri~
,..'~r~~ : ',:i'tJ1b'~ ' ·';'t,i ~
.-;. ;.~?~~~• '
.,.~~,j .J :
';'j~~ ,'~e: ~ ~
....
'." .*. -
I
",,' \:.c.,I """ "'~"\
· '1 •••'-' "1. ,
',".:t..;tl .,.,,~~~'"
!
~
'.. II'''' ",.",,"
·,·;,~·it~,
I"'i~,".:'
•
.J
I
:.:i~~'ftj
•
··~.'1I~il·
.,,~~?:):~<;
,
,·;~t(~
,"
• .. ",1~-"~" ,~~ ..,.' ,
,r'
•
," '\:'
I
r
.·F!~
.
":',;_~~Ui
•. i· " ''''~
'. ~!,.:y..
•
I: \::",
tX"~'
"'''-' ~
!:".•'i:.,....,.
...
","!4, _.:
~-" "
*-".•..- ..
~"''''
J-/[i2;:' \;:;~'b" .
"-'--~'"
.
t<'{f{.,:'
~t~' ';:;t!.t. . ". , '-- ~, ' i"')~:~ ',' "!.»·'l '
.'.
$~/.
8
>,'
f~:~t,·:·. ..:.,. ,.' " ,:,;J, .i'· ...
~!'.r;'·l : .'.-;C;:' :
La memoria virtuale
1.":;. '
'j:.,:,..,.-., " '.' ... ,
{~{:i. ~
x't-..!.:.' :. w·"";"::. j .• >•
,,~.
{.;'-".,. :. :\' ~ ...
~F,,~:
-""'.' ,';'.' .
",ii"'"
;\t~:;:~.
"". ;"..... 1.:,..,~,
,;",~.,
•
..
~'::"w.,;;.'
"f;,::.~ :.
~i"~~" L~ me~oria virt~ale e stata introdotta p~r ~nsentire l'esec~zi~ne di p:ogrammi di
~~i~j>:>' d1m~nSlQ~e supenore a quelle della m~~or~a fis1ca. La mem~na vlrtuale Sl. e afferrnat~ -~'i1::':,> negh anru sessanta, quando) per motlvi dl costo, la memona centrale del calco1aton
i·:--;~;.<:· era necessariamente di dimensioni ridotte , tali da risultare spesso insufficienti rispetto ;)~·i'::',,,"F. alJloccupazione richiesta dai prograrnmi. .
S:t}:·;·:·
~;~~::,/>'
:Cd~j/>':'"
i~~;:;:,,;;-
~i:\~\:'
~~',~..?,. ~~~+
.
Altra motivazione e la protezione, ovverol'insieme dei meccanismi che consentono l'esecuzione di processi concorrenti, evitando che indebiti indirizzamenti da parte di un processo danneggino i~ codice'~ i d~ti eli altr.i pr.oc~ssi. La.. mem?ria virtuale c.ostituisce I~ base natural.e su CUi a~pow~e I. ~eC?~OlSml dl protczlOne, 10 <,luanto ogm pro.cess~ Vlene dotat~ d1 un, prop~lo SP~I? .d1 ~n~.hnzzament? p.rotetto. ~c1dent~~e~te, 51 no.tl che la creazlone dl tantl Spazl d1 mdlI1zzamento nchiede grandi quantlta di memona e ripropone la ID
, . ' :ifiV\."..
tf~~'~:.
:~£~:.:
f:~]"'"
-;:<__ ~.::}-J,
~
".,
,,",,~,.,.
~~:lil:-",'f
?lh~;rl"
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 ~S!'~:" avuto tutta la memoria necessar~a e) di, c0J?-se?Uenz~, .la .memo[~a .virt~a1~ sareb?e ::t~(~" ~ 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, ~'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- stato :"-~'''','' , .' ?I~. ~ediamente del 35%, contro un tasso medio di aumento delle risorse stesse per unita ~;,~,:r:r"., dl costo del 18%.
e
",' ".', "~J' " .• ,,,~., ,-r~i~,.~,
'
!t,:·~";:;
-, .".. ,--,.-"., . """,'.
~"',~~.
8.1 Introduzione
':"'.·:'
h'/,:::~" '--'.~
rl.>-",}'
•
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:,:.'.',.-,.,
;:;2::\~'"
-,",,'1'"0'-1,
:V;ll;,:.:.'-'
~j,,';:";
~·~~')I~~1,
~!£l.'(~"
"
332
:,
0;
""i' fll:....I
Ca.pitolo 8
, ',.,r.> !~~'1~i f~'\I~t I f'.\'·
~"it
,e'" ,.;::; ','.. -,:,
due tecniche fondamentali,
r,1r
L
\i~ ~.f-ti r, .,~ ..
ge~eric~ Pa:'so ve,ngono memonzzafi i-,: ~le di appo~o ternpor~nei,c~e.~engono . ~:::ftt.I"')~!
POl lettl dal pasSl che seguono. Una tlplca ~lasse .dt progra~l es~gU1bllt secon~ ',;.t};t~ ':1f do .questo schema e :appresent~ta, da ?ompilaton e tra:ctutton: gh ass~m.blatori ..;-t~t;.\ •. ~~1. sohtamente operano III due pasSI (it pnmo passo costrUlsce la tavola del slmboli, ""(~ .~1~ it secondo genera il codice), mentre i compilatori possono prevedere pili di due .,~:~ I. ,'.."·) passi, a seconda del grado di ottimizzaziane che mirana a raggiungere. ,t:"%~ti .',:~,.'.~.~ "'-" ',~. . '" -.., .
.. :.r.~':f'
'''''1
J'.$,
I.
2. Strutturare it programma iuarti, dette overlay, e stabilire preliminarmente a.lli!Ji _ ~:.;~~ :~::~ parti saranno presenti ~ntemporan~amente~n. memoria e I'~rdine secon~o cui le'~"i~,~~~ ,:~~~ r I ~erranno cancate 10 tern 1 success}v} dalla m mona sa 10 mOdO""tii(';~~:I""#. cia. nco r a ~entr~e. ,In questa casa occ~[re pr~ved~re ne,l t~to de! :;:>1i~~ :11 programma Ie opportune lstruzlOm p:r dare modo allmker ,di. cancar~ 1.dI~erentl j'.~~~tti :1 overlay al momento opportuno. Ovviamente e sempre posslbIle che Sl nchleda la ~il-¥~~,\~ creazione di file di appoggio per contenere i dati generati nel corso dell'esecuzione . "':'Ii."~~~~~~ >~1 '~.·"::.~f':~i,~:"; del pro aroma gr . . ,l~~] /~ d S &ZIO e a mona fislca, rna In modo de tutta traspa,:, ;:1~ 'I ~ .roJte ai l2EQgrammi~~ssi: pr grammatore neve preoccuparsl e a dimension ':".. :& del progr,amma, essendo q~esta ~imitata solo daU~ capaci,ta. di indir~zzam:~to del~ ::~~t~,;. 1a macchma e non dal1a dimenSlOne della memOria effettIvamente dlspomblle. Dl :?~~(} '$ c~nsegu~nza, i ~r~~ammi s~no portabili, senza alcun intervento, su macchine aventi".:~~~&, .. }~ dIfferentl capaclta dl memona [Den70]. [Den71]. . ~,..;< :j La gestione della memoria virtuale si rira al principio d~ localita. spaziale e tempo~ .' '~,1;~,~ ;: rale, principio che suggerisce di tenere in memoria centrale solo Ie parti di programma ::;;f/..:U:'; ,; che sono prossime - spazialmente e tern poralmente - all'istruzione in esecuzione e ai ::,;-l@';... ~ :: dati event:ralmente in?ir~zzati. E previsto che, ~l:occorren~a, vengono automatica- ::it~~~~!~ mente cancate Ie partI di programma non presentI In memOrta centrale, prelevandole : ;':~;~~)i 7t dalla memoria di livello inferiore, i discbi, dove risiedono in modo permanente. l~tf;1ffij ; Cia comporta un 'apportuna suddivisione del programma in blocchi. Esistono due ":~:?~4r~~ , scherni fondamentali: it primo si basa sull'impiego di blocchi di memoria di dimensione )i}J[it i fissa , detti pagine, it secondo sull'impiego di blocchi di dimensione variabile, detti ,;,...t~ii
;
p, ',..
,::;WZi~ '·
.~ ,;~!rf~ ~ . \";J.~';;
1 A titolo
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
~
.....,.. ~~"", ~
"':I~~\f;:;!
-
',,",
",' ,
"":Jl:"" . ">. .t:~. :
.":~~~~i ~
·,{,+;:'jf :
'fJ"
~; ~
,~" -~"l' .,,'"... :"",iQ' ..:' ,,1 ,'"
~:1 ,.f,'
IT' ..
)
....$-,"'-. :ill'('~"i" . I!h~·\·· -,... . ,,-;~~~~._ ;
~..,_.
,
••
Ij,.
La memoria virtuale
l .,~.
333
:,,;/- -, ' .. -~'," >:..;.,.i'~}"(', "
tr'iJ'''~ , "'..,:
•
" '.,. , segments. Viene inoltre usato un terZ? seIi. e~a, cIie d~r~va ' dall . a comb"lOazlOne del:;,1'" due , consistente nell'impiegare segmentl e dlV1dere questl m pagme [FM87], [JM98bj, ,.;«. -,.
1
rJ~i~:">,
~;;.\r' [JM98a], [M,M90], i~~,;i '" Per trattare la .. .:,f" '
!l~!:.,_
"
fY}:'~';,· .t~jj",. . ~~:d.;:;.,·",
memoria virtuale conviene rifarsi a queste tre astrazioni.
La spazio degli indirizzi del programma P, indicato con V .
I
{VO,Vl ,. , _ ,vn;-d-
Gli indirizzi generati dal programma vengono detti indinzzl VlrtUali, avvero rn.dinzzl logici.
•
·)';:;;,;th"" ...• La spazio di memoria, indicato c,on M = {O,l,2,... ,m -I}, Ogni membra
.-;:,~".,,;,"".'
1;.", ' .
.
,.;J.~;,'
~jlj:.',:.<'
:",
• Una funzione di mappatura 0 di traduzione degli in:dirizzi, che, a ogni istante di tempo, mappa un indirizzo v E V su M:
~;%~l:;:.:·,·· .if!~:".'; ,
11j;,;t~ 'i.',' ,
1~jj~Cd,. ~:1~~' ,"
(8.1)
f:V->MU0 ,
La
" ' . funzlOne f e defimta come.
1~";'<:';' { " ;i;1.:~·;< , _ 1. }M'~:r. f(v,t) 0 ~~~{.~·,' ."
all" dir' ' M all I ' , se all'lstante t l'oggetto III lZZO v 5,1 trova m a ocazlOne tse all'istante t l'oggetto all'indirizzo v non si trova in M
.
;"§~~~~'.'
,
'
.
.
.
'. ". In t~nulll prat1c1, tra 11 processore e 130 memorI~ Vlene.lDte.rposto ~ ~ec;am3mo ~~11~~~:/.: ,d~ .tra~~zt-one, per r.nappare V SU, M, corne schematlZzato lD Figura .8.1 . ~e 1 ogget~o ::;;.': ,: dl l~?lr~ZZO v non .SI ~ro~a memor1~ centrale (esso ?eve comunq~~ t~OvarSI ill ~emor1a
~~;~;'I'':'' auslhana); ~ora 11 nf~nmento all o~getto ~etermma una condlZlone (detta df fault), ~t:i¥\ '" .~~ p~r~a il slStema, a tnterr,ompe.re 1 esecu~lODe d~l programma P, fi~o ache 1ou,etto
~t~~tf<'
. dl mdmzzo v non Vlene cancato
In
~.~~k-/'" '.
memona, con 11 conseguente agglOrnamento dl f,
&..~;';~~;':j:'
~{-$~:::,:'
j~~\:"~:-:.'
,*~~~~~.
CPU
11
V
'.
·:>'hf.",",
~;'rl'~~:!
~-..; ..,.'..,"
~.:;>';, '. '
!.~l:;
",i
,,':,,:.,'r .'"
:r~,::.:'::'
~{'.;,!; ':
:. ,; ... ,'
~'f.::"~: '~I'''1r'''' !I..,..... "~dj,; .' :. ~'"•.t'.
I. \\ .
i
I
MEMORIA
1
indiriz:zo
indirl:z:zo
d.
di
programma
memoria
I• I
1
i;;r:f:t.':'.
i~4~~.
1
V
~~t·::~,: ;;'~;;:'''
!
\
T
$f~:':"
t:!1J~:~~
1
tabella
.:,~td(·
:~j~:lf'~~t,~> ;~};~{~.;, :~~~~~;:.;.
\
j..
MECCANISMO Dl TRADUZI0NE
~I
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 e stato caricato in memoria centrale.
I
334
)
Capitola 8
,'-"1
""
-'-
,.~.~
. .E imp0r.tante rilevar~ che 10 spazio degli incliTiz~i V e indipendente dalle d~~en~'. }~": Slom e da ?gnl alt,ra assunzlOll: ~u!"1. In alt.re parole, ~ programm~tore ha solo VlSlone :i~l d~~o ~p.azlO V, virtualmente ilhnutato. n hI~llte p:atlco e determmato dalla capacita.' :::~~~. di mdirizzamento della CPU I ovvero dalJa dimenslOne della memoria ausiliaria. .Iilt'
,
1
,
ft;
~~
'~
i
< -,•
-';""'J~
.'
I
•
•
\ •
I
•
I
'=
!f"
.,~'
Come ~a osservato, l'alt~a motivazione per la memoria virtuale e la protezione ':~~l, > tra processl.c task) concorre~tI2. . . . . .~.~>;j, "a In un sistema a proCesSI concorrentI, SI pone II problema dl fomire al program- :~~'.l! '. m~to:e ~a visio~e ~ella quale non compaia 1a nozione di condivisione della memoria :/{~~:, ~ e 51 nchlede che il slDgolo prpcesso non venga danneggiato dall'esecuzione degli altri ·.'t~ '( processi attivi in memoria. A tal fine, il sistema deve simulare uno spazio di indi- .\~fl~~ ~ rizzamento virtuale per ciascun task, in modo che il task veda un proprio spazio di:~ . in~irizzamento, tutto per se. Gli spazi di indirizz~ento d~:on? .es~erE~ pro~etti, ond.e ~'.:;4~~ ~ eVltare che un processo ppssa.sco~a.re ~~llo SpazlO degli I~dlnz~I dl altn 'p~OCes~I:. ,r;~t Dovrebbe perc essere consentlto llmplego ill comune (sharing) dl eventuah Identlcl -'>~4~. li tratti di codice da parte di pili processi, in modo da evitare inutile spreco di memoria..,..:~~:"- ~
. d" . . · t 8 . 2 S IS eml 1 pagloazlone
.'. i~~;:.,
l
;\:;~.
~'
.'."'::IOl!'
. ·j ,I
:,' ;'~l: ' ~ "~;;'~!
~:,.i!~
". 'U'jj'
•
I
•
•
\
•
(
•
I
l
'
;1
(
"
J
1
~
~
dei
ilcodicevienepoisuddivisoinpaginedallinkerodalprogrammadicaricament6.,:-~~ .'<~m~ ~ Ovvi motivi di efficienza suggeriscono che Ie pagine siano della stessa dimensione .. :"~!':~ , blocchi trasferiti da disco (ovvero dei multipli osottomultipli). ,··}1"·
Ai .fini della s~a traduzione l un .indir~zo virtu~e viene interpreta~o cOffi.e com- '~gl : posta dl due campI che contengono nspettlVamente i1 numero della pagma lOgJ.ca e 10 ·,-tf1~ ~ scostameoto entro pagina, come schematizzato in Figura 8.3. La traduzione avviene . ,::~1~ . attraverso una tabella di mappatura delle pagine, indicata nel seguito come PMT (da "~.::J Page-Map Table)} che fornisce, in corrispondenza di ciascun numero di pagina logica "';~%~'~ (VPN, Virtual Page Number), il numero di pagina fisica (RPN), ovvero l'indirizzo -'~~w fisi~o de~la prima posizio~e ~eU~ pagina nella memoria c~ntrale. ~ numero di pagina lOgIca vle~e usato come mdlce m PMT. Un elemento dl PMT Vlene denotato com ,)~t~. PTE (da Page Table Element); esso costituisce un descrittore di pagina e contiene :'f~""!~"
.;.;\:j:.
•
•
'
',"V~·~~
\ •
Can la paginazione 10 spazio degJi indirizzi viene suddiviso in sotto-unita. di dimensione :':;~I~·I, fissa, chiamate pagine logiche. La memoria fisica viene a sua volta vista come suddivisa';",:~,~ ~ . . . . . . . . .......,~ In un numero di pagme fislche (page frames) della stessa dunenslone delle pagme ". ~~I 'loch t 11 'fi ' h ; . -I"" 10gI'che. L e pagme ogI e vengono mappa e BU e pagme SIC e. . >~:m~· In Figura8.2 viene schematizzato il meccanismo della memoria virtuale in riferi--.. '.:.~~jil.l :~}~., . . . men t 0 all a a lDazlOne. ,'. p g '.,';~~~1 • il compilatore traduce il programma in uno spazio di indirizzi virtuali lineare, _.'.;;W' ,.)1:' (praticamente) illimitato; .
~
\
,,~
'.. ::'\t: · .. "I~'ff " .'d):.
,
\
'I'I'i~ ''Jl.'
2Un processo e un'entita dinamica corrispondente a una attivita ch.e 5i svolge nel tempo e pub ·.' ',fc~ '·'I~'''' corrispondere all'esecuzione di uno 0 piu programmi in successione temporale, come, pure, da. uno "·~·i,· ".. ';;,1 stesso programma. pUll derivare I'esecuzione di pili processi. II concetto di processo e piil adegua.to · :·v' t " di quello di programma a descrivere la dinamica di sistemi in cui si svolgono attiviU. in parallelo, T,~
'1,;"
'. :":.:; ."
,.. ~ /'
J
~~~ '. 'Rh
,R',;;
~"\"
.r.~~~~
La memoria virtuale
335
';""""/.1:,;..".."':. ' ", ffi >'J" " ~r; i'."- _ ' , .' ~
i.· ,
;':'~,t"\!k,~
~~~~;;';"
~'~~~;.::"'
~~i;:-,
PO
i'~~:f"'" .
"='1'1'/":<''''' '~1·,·,·
SPAZIO
DEGLl INDIRI2Z1
,.
>~.m:(
Pi P2
a~~~:;:.'
.,1 ~~:::
~jf%4H;:. (it ~t·",
~
V
/
~
Paalna lisle.. 0 Paalna t\>lle .. 1 Pallna Hille... 2
SPAZIO
DI MEMORlA
PaalnD. lillie.. 3
P3
Paa in .. hsielL 4
P4
Paalna Iisiea 5 Paal na rblcfl 8
~!:';,~s~t~" ' .til:'t~,.1:;:;,,·
Paaln" nste... 7
~rl~~~::,,:-,
~'W~J~;;"" Figura 8.2 Sche.ma del m.eee:mi5llio di gesti~n~ della. m:m~lria. virtu
i,I'~~'z-A~,"" istante di t.empo
.
memona S1 t.rova un sottomSleme dell'mSJeme delle pagIne, ill CUI e lOgl~'~r: camente ~iviso il p~ogramma.. S.e viene generato un indirizzo corrispondente a. uD: bloceo ~o~ l~~~r~. :': ,presente In memona. c~ntrale, 51. ha un pq.g~ fault: Esso scatena una sequenza d~ op~razlOD1 ~~l~1.<:·; il cui effetto e por~are l~ memona central~ il cornsp,ondente blocco daUa memona dt massa, '~)'~', .;;;<,.'.:,. Lo scheD1:a mette l~ eVldenza che, delle cmque pagme POI PI, P2, P3 e P4, solo P.I non e ~~t,:~. presente III memona. centrale. PO, P2, P3 e P4 sono mappate su aree non necessanamente .·'~~q:·l·" . j·~arf;;"'~',·;~·, cootlgue. I, ~1:1"'1'''·.'' '
'~"~%if",
III
.:
l·~ful~~·>, '1" md'lnzzO , d eII a pagma ' f isica ' ' dent e. L" IIId"IIlZZ0 fi' te . ;i,t\\..:.,., cornspon SICO , 0 ttenu to conca~
'.ii~,"' .
d I' t t ' I" Ind'lTIZZO , fi' d' U ' ltd 1\. " ,;~,}:, nan 0 0 splazzamen 0 en ro pagma con SICO e a pagma pre eva 0 a (j'.f~,f;'·:~: :.PMT ":' "l~;·.r;.{~~.. ,.... ' U' d 'tt d" t' I t I" dir' d 11 .. fi' J~r.l'!':..~~:·:, n escn are 1 pagilla non con lene so amen e lD lZZO e a paglDa Sica, '.'\\ .L'\;·..., . .. . . . . .. . .. 1~~!(.~' m.a anche una sene dl mformazlOlll "aggI~~tive utili .alla gest~on~ della memOria, ~he 10 ~1~lr*r:~> ~lgura8.3 sono raccolte n~l campo .Prot . Q~este lnform~lOm possono.essere dIverse ~:l "'?~f~:: m numero ~ r.~ppresentazlOne da Sistema a SIstema. Per il mom.e~to Sl ac~en~a aile ~~;~t.~~, componentl Plu comunemente usate che comprendono Ie seguentl informazlom . ~i~~~t;, '1 U b't (P) h d' I " t ' ' ,~@)~~ " . n I c e Ice se a pagma l;: 0 no presen e 10 memona. ,~m~~~,.~::' Facendo riferirnento alia Figura8.3 1 il descrittore della pagina Pi conterra Pin:?l~;;;/;, dicazione che la pagina non e in memoria. In questo caso, tutti i rimanenti bit :~~;~t; d~l ~e~crittore perd~no di ~igni:ficato. Essi pos:ono essere utilizzati per contenere ~!";f~:, l'mdlflzzo della pagma loglca sulla memona dl massa. . ~~I,!¥i{' Quando viene generato un indirizzo interno a una pagina non presente in memo~,~~~.' ria centrale, si ha un page fault: un'interruzione che viene raccolta dal sistema ~:M~ilk" operativo che provvede a1 caricamento della p'agina dalla memoria secondaria e ,~}.;.' all'aggiornarnento del bit di presenza.
,"
j~!fh·.' ,l:.~ft~f;,:
"!i.,~~.:t·,, .!~ .*'~'..
. ·'·'f{~.-' I~~""'.'i".' I~"';·"
,.-
.
'~'~"" '~',
,~:(.
''''r.' ., \l'l.\.::~;';. ~'" ,Il.~'t.,
't·'
•. .\f~'~ :;t~.,·.
"~ .• ,,.,
1~,~I;ib:'" .1!:. t .. .j;'
"
~
~''};''
'
2. Un campo (A) che indica se la pagina e stata indirizzata. Di soli to questa campo e di 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 e quella denominata
SS6
Capl't00 1 8
i
'
't
"
J
Indlrluo ""Ileo
PrWNi 10C;"o N
,.
.
"
Spl. u"-"'- en\" nella ",In"
H. di
t'
... , ,~.'
't ; "
I"
• "'~:J
RP
.,)t
,
'~:;l~z;'
PMT
lnlfirizzo
,
p
M
Proy
V ~
,ccV
;
'
':~%~~ :
,~
JA5{
"
",
." &! ":-:·,L:.l4: .., "I'"
II, dl, ~:"~"'" nile. R N)
';
.".~'
- ",,.~:-,
N. dl p".loa fl~leo
(RPM)
• In..
:
I
~
~
7::~~: ~ ,,,\:i>'it'f:· ~ '", ,....... , '.!,;~~.' ;, . ';',;'7,-
!pl,,:z;:cnto
0011"
•
, ' '!"i~t.
• .!f ~r'
, . .~,~.r..
lndlrluo "~I"o
"
,
;, "~"~''; .;
.,~v"
.'"''':'/''' ",,,·f·'
.
'
\
Figura 8.3 Co~versio~e~ ,un indirizzo virtua~e in indirizzo fisico tr~mite 1a. tabella di ma~·~~;fi~~., : patura delle pagme. L'mdlnZzo della tabella di mappatura delle pagIne (PMT) e contenuto, ·"pl;;., j in un apposito registrc di CPU, qui indicato come RP (Root Pointer), La parte alta delPindi.::.i(,\~'~~~ . ; ri.zzo v~tuale, fcroisee .10 scostame?-ta in P":'iT; Un ~Ie~ento. in PMT (:T:e), oltre a1 numero : .~,'i.~;, ~ dl pag,ma fistca,. conbene .&n:che m~or~a.zlOnl ~gglU~t1ve (11 campo 1Ddtca~o C?D, Prot, da '.,E;:i$t'~'.' protezlOue), cornspondentl at campt qUI esemphficatl can P, A, M e ACC , dl CUI 51 parla n~l .. testa. . :, j;'~:! ',. \ ,'I"q;;t,. ~...£o'c
i .,
"
,,,<;t
' ...... , .,~~..
LR~.(Least Rec~ntly Used),. che preve?e l'el~m.ina~ione della p~gina in~~i1izzat~ ,,:,;.;ji~>
da pm tempo. Dl questa e dl altre tecDlche dl nmp13zzamento SI parla pm avantl :~~;, . :':!;;;;' (Cfr S8 6 2) .
..
~:.li~~~rf '~.(,.f" ,~..
.
, . ,:',·~~ll,
3. Un bit (M) che indica se la pagina e stata modificata.
evidente ch~, se durante.la permanenza ~i ~a.pag~Da in memoria centrale .i1' i:,;if~ suo contenuto e stato m~dificato d~ operaztolll dt ~cn~tura, ~lo:a e necessarIo, '::.:~~~ r~nde~e co~gruente ~~ cO?la dell~ p~g:ma nella memon~ dt m~sa. 8, tratta dunque (,:JJ~: di coplare in memona ~l mass.a il con~enuto della p~gma pr~ma che que~ta 'veng~, '. 'I;~t~~ usata per un 'altra pagma 10gIca. Se mvece 1a pagma non e stata modtficata, It ',~,~>;':;j', caric~m~nto, in q~ella stessa ::ornice d~ pagi~~l ~i una differente pagina logica, '·,i-i:{~.;'l n~n r~chlede l'~ggJor.namento 10 me~ona ausihana. ' . ';:'~:zt~ ~'mdlcat~re d1 modlfic~ avvenuta Vlene messo a 0 quando l~ pa~ma cancata ::x,{;~ m mem~:ma centra}e e VIene por'~ato a ~ q~ando su quella pagma vie.ne ~ffettuata .::~~i.~'~ una. scnttura. n slst~ma. operativo deCIde m base a questo se la pa~pna e 0 no da ":;:i:t coplare sulla memona dt massa. "::~~),~~
E
e
. ". "~'"
.
4. Un' campo (ACC) che identifica i diritti di accesso.
':::~J ' '.',0;.
, .{'.".
,";',.•' ;jt'. "":;"~""'
~.-. 'j~~
Sono da prevedere dei mecca.i:tismi di proteziene e di centrella degli accessi all'informazione contenuta ,nelle pagine. Per esempio, cleve essere pessibile definire una pagina come non scrivibile dai normali prograrnmi di utentej oppure che una pagina e di pertinenza e.sclusiva di un dato processo, mentre un'altra puo essere letta da tutti i processi.
",<;;.
:·.'~'7"l
"5~~P ~~;\,;;.
.:::~~~,
h'-,-~
.,.. ~ . .. ?,_ .
)',,',~
'/ "'" ")( .
,~.,
w" .
)
~:~;(,r: ;,"
"I' ~ .' ,
:
~4li_~'
'_-'------------------~-----.:L~a~m~e=m~or::i:a--v:.:i::rt:.:u:.:al=e:...._::3::3.:.7
,
il !Qf.if.? ~fJliih\'~-:~
'iIjjJ'"'''''',.. t..·,· . '.
","II....'" .;
t'..
'.¢iii'
--. ,
"
"',
~,',:.,: 'I' . . Jr;~ ':"':':. ..", '~'ll'.•. -
I
"r;
.'lt~,'11 "~,., "t",,~ .\., -. '" '" ~ '·'i"~'P,'" "',"
t.t~"~' ,f."'. ",$ . ".
1 meccanismi di protezione sono di per se un motivo per la memoria virtuale e verranno discussi ampiamente nel seguito.
I
'.'
;·;t~ ;,~'~",
.-'
".~·,r~~·, ,,,,,. '1',' ",
;~'l!DY;. 8,2.1 Dimensione della pagina
'''~~;~t;l.'::i
:~~~:'~'!.~::-'r: scelta della dimensione delia pagina non e banale per via delle seguenti considera-
•·.. ,~·"f'·.··
:~'(,i.
.
.,
':'
'':'n''".r.vt'
~..:'JI'~" ".'
~~·~it":,~",~ ~t.t;:,~";:;;;,~,, ""\"~"':~ ~:: .
, • Una pagina grande tende a sfruttare meglio Ie caratteristiche dei ~chi magnetici infatti il tempo richiesto per trasferire una pagina dalla memoria dl massa3 edato .
'~"'1",,-.
\·+,l!"~,',,
:tf.~::'
j,K?~i,,;::'I.',
a) il tempo di latenz.a per posizionare la testina di lettura suI primo data del blocco che viene letto 4 i
'.
b) il tempo di effettivo trasferimento del blocco di dati.
;~tr';\:1~.';.\: '.
~~~:\::~'" _,
Eo evidente che il peso del tempo di latenza
';r,.,~r.~i;;~... 11 ," ",~ 3~qiU'; ..
~~~~~I'}ti:;i ' , ''J<..~lf:;.>('', -1',1', [1',,'(, ' ".,I.;l."I",' .• ',.' . ... . ' ~.,
~~':F;,~" ~:~~~~':~~ ;~,1t."',·;
.
~;1r,~V:!i:t ~ .1.."11'' ':)1'' ' '
,~i~~;;',~:
ifk1t\'i-' ;~~~':"
~~~$:'~.:.
;:"1fjj~~),
~':fJj~~f/\.f';-:·'
':
~2~~t·,::·,: :if~A~": ;'..
~i~~~l.:.'
~t~'l~\:'~'~
:,~~;:.;, :,~~~.<,'~"
:til ~:illl.,~"
I I ! I
dd a ue componet n I:
~~,\.".,
;i:,;~l j (f.f.:':~ ,r,~~!!lI'" ",:, , . .., ·flll'" '", , ,<),,,,.ltJ,;l~\,... "~':?""'_ :~;:,·:J .. ,7_,;,.' . ii,;,~~l ;:,•.
I~~~ ~
\
.
ZlOnl.
i :,
e relativamente minore con
pagine
di grandi dimensioni. •
L si di rna atura delle a' e e clirettamente proporzio 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).
I
. fie introducono u 0 dl memoria dovu• Le pagine di grande d' ta~al1a. COSI etta frammentazione interna, ovvero alle parti di non usate. SCcBnsideIi un ~istelIIa in cui ciascu rocesso e stru 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: assumendo 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 sistemate in pagine diverse (allimite un procedura a pagina), con ulteriore , possibile frammentazione interna,
I
1 \ i \ J
'~l' ,lJI: .. ' ; t-iH,f\j~ .~.
·;~~.l~\\"N""
liEl~''''\~·' , 'f,' , ",
",
,.,,:,
'J' ',' ,
'!:;'ii~H
..
":\"~l, ....)-, ';'r~''':''i·."
3Si ipotizza., anche lle cia non e necessario , che Ie pagine abbiano la stessa dimensione dei blocchi
' • memorlzzata I' in f ormazlone . . a d'18chiI. secon d 0 CUI su11e memone
P }~1ijT\ < 4 A sua volta questa tempo e la somma del tempo richiesto a posi2ionare 1a temina sulla tra.ccia ~~if0"~", " (.1eek time) e del tempo cbe intercorTe daJ momenta in cui la testina ha ra.ggiunto la posizione in
,. ~:-r~~}i~ :,:..
~*:'~$:~r"
.
~
~\;'lf.!", ';.,~.F", ,7,,:; ,-,I 1 ,"
sensa
di~metrale 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.
'
)
\ ~'l-
-
338
I
Capitolo 8
Dimensione di pagina Tempo di hit Pen . zazione di tault Tempo di accesso Tempo di trasferimento Tasso di miss Dimensione della memoria e;entrale
\
. . ...
-
..
I I I
. ..
...
..
'R
I~
,
~ii
,
'o
~ )~~1 ~
.. '
'''~:\~~7, h
. ' _:,:~i~r,
,
;\~~~, " .'~':i~:~,tli
Molti st~di. 80no ~tati £atti in passato sulFinfluen~a del.la dimensione delle pagine .:;'~'~~.!~ sulle .prestazlolll del ~lSt~a [GTB73]. Nel corso degh ~Dl c'~ stata una progressiva .\';-j.~i cres?ta.. Mentre ~egli a:nDl settan~a era normaJe una pagma dl 512 0 1024 byte, negli ; ',.1:1;~ anill novanta la dimenslone prefenta e 4-8 kbyte 5 . . -..:~1"~' In molti casi la MMU e in grado di gestire pagine di differenti dimensioni. Per ,:::;:~r esempio la M~U Motorol~ MC?8~5.1 e in gr~do di gestire pagine, da 256 byte fino a
...
I I I \
\ •
r;
512 - 8192 byte 1 - 10 dcli di ClOCK 100.000 - 600.000 citli di clock 100.000 - 500.000 dcli 'di clock 10.000 - 100.000 cicli di clock 0,00001:70 - 0,00170 4 Mbyte - 2 LiDyte
tao 81 co~~n~m? questl da~1 con 1.par~etn cara~ten.5tlCI delle c~e. 81 osservi che I'alto '>;;~i' Q 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, :'::;:~;r, l
-, \
-
.
'\!"
Tabe.lla 8.1 ~alon tlPl~l del. para:netn cara~te!lstlcl ~el.SI.steml a. memor~a. Vll"tu~e paglna· ",:»~, ;
~\ f
- I
~
.
-
-
'.
'I
\
-
, "'I
I
.)-::!f
8.2.2 II Translation Lookaside Buffer
---------
:':'-:;1'~i
';':-J~i\!~'
,:'>4', ::;1$,'~ :; ~}il .... ~",
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 raddoppia, Net caso di PMT gerarchica (CfL 8,2-4), ogni livelJo nella gerarchia tabellare ~~,':;,f¥.i introduce un accesso alIa memoria con conseguente degradazione delle prestazioni. ,'·:~2. In altre parole, l'interposizione della PMT ha, come minimo, l'effetto eli ridurre di ..... ':.:;\ :~:r 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 ".~(~, vviamente, anc e il TLB ha il suo fondamento nel principio di . ..~.~~ usati di recente. localita. Trattandosi di una (piccola) cache, la ricerca in TLB e, tipicamente 1 pili "ti,Jiti veloce di un ordine di grandezza rispetto a un accesso in memoria. "":~"" n generico formato di una posizione in TLB e schematizzato in Figura8.4: 1a ,"':~{;~ .:~:~:f 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· .• :.tj.!;~ . >-\~~ dilicata ecc. 6 . Questi indicatori devono essere congruenti can quelli della PMT. Se, )~~f, :·~r&
,
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
"~~
·~'~dl' :'.~ .lt ..
,..,,/)' ~
.'...''";" .-"1' i!7....,."
.'"
_~r.
""i'"
.
~r~~:, ,_.,.1-.'
'
!t".,.
,;,id7!:J' '".: -m"k' r;;;.i " _. ;,.;..,. .. .. I·,h.
La memoria virtuale
.,.,'1,.',..·-'
339
~
I', • r;ti',,,:,.· .
"!J!W""" ~··t,'>·
;.;,~.{tt " J. ','•..-'1-
,,11:;1;,-"
.. , ~"""':"'"''
R':ll~:;'-",
.
'Ij;t""
.,~,."
i~.i,t!-i!K:~"~· , ~i.~~~r~;, ,
~I numero pagina logica TAG
,,, 1;"'_
, • '-1
,.. ,!(,-'-.'
oil;,;;;"}'.', 'Ilil!l'';;~< .
11 PROT. [BJ nurnero pagina fisica I DATO
~~~~"k~' ~\~tf;,~
Figura 8.4 Formato di un eJemento in TLB. V e it bit di validita, PROT e il campo dei diritti di accesso, M e l'indicatore di pagina modificata. Potrebbero essere presenti altri h!~~r;:::'" campi oltre, a qu.elli indicati; in particolare nel TAG potr~b~e.esser,ci un campo dedicato a ,~'.~~).,,~ : contenere l'ldentlflcatore del processo che sta generando I'mdinzzo, ill modo da poter tenere ;;~l\.~.~~;'. 5eparati gli spazi dei proce5si (5i veda anche l'osservazione a pagina 342, a conclusione del Q'l~;;';";.;:~ ,<-, Para.grafo 8.2.3.
!~,~W~':>,
li~~f{'"
"~~,-~:. .per intende~si, u~a pagina v~e~e m?dificata il bit che in.dica l'a:ven~ta z:nodifica deve 1
~:.~*.~~:r\
essere assento ~l1a nella pOSlZlOne m TLB che nel descnttore dl pagma m PMT. f~:~t:;.~. In pres~nz~ di u~ page fa~lt, d~po che la ~agina e .sta~a caricata in memor~a, ~~~i~\;" .:'lene C?strUlto.11 rel.atlvo descnttore m PMT; Ie mfor~azlOI1l che serv~no a costrmre F,J~~.',;, II d~s~n~to~e dl ~agma ve~gono pu~e us.ate per cost.rllIre UD, eleme~t? III TLB. I ~uc ;:~~~~:: . ceSSIVI nfenmentl alia pagma SODa nsoltl attraverso II TLB. E posslblle che la pagma, :'~l,f~~~'{" pur restando in memoria, non venga indirizzata per lungo tempo. In questa caso e ~,~;~~Y:\:::' probabi~e ~he 1a relativa P?sizione in TLB ve':lg~ impieg3~a ~er un'altra pagina.. Un ~Jf:~~~'t:H," nuovo nferunento alIa pagma precedente deternuna un ffilSS ill TLB e la costruzlOne ;,:11~:-:,':: .. di un nuovo elemen~o con i dati gia. ,disponibili attr~verso. il ~escdttore in PMT. \ilWi~Yt: . Vale la pena dl osservare che 1 TLB hanno dlmensIOlll contenute entro poche :,~rl\~': decine di posizioni; per esempio il mic~oprocessore Intel 80486 ha un TLB di 32 po;[1~~~""" sizioni, organizzato come una cache associativa a 4 vie. La dimensione d~l TLB e *!ijj;f:>"~ dunque inferiore di qualche ordine eli grandezza rispetto alia dirnensione della cache ~I!.t{(· 'interna della medesima CPU. La ragione delle piccole dimensioni del TLB deriva da ,~,:t,~~... s~mplici considerazioni pro.babilistiche: l'elemento in TLB relativo a una pagina viene tl~.. ,··,\., ' ~~~~~:;{>.' costru~to q~~~do la pa~ina viene. i~diri~zata per la prima volta 0 quando, pur ~sse.n?o ir.~L·: 1a pag~~a ~la In memor~a, la: poslzl~ne l~ ~L.B e.stata ?s,ata per ~ltra pa~1fi~1 l~dlnz~ ~~;;;~:. zata Plu dl recente. In 9gm casa, il prU1clplO di localita suggensce che 1 nfenmentl .'~~~r~~~;·>· successivi a.qu:llo che determin~ la co.struzi~ne di u~ elemento in TLB saranno, con J~~~'.lr.":.,··. alta probab1hta, nella stessa pagma 0 In pagme contlgue. r;~}l~$~,' A titolo di esempi6, si assuma una di~ensione di pagina di 4 kbyte e istruzioni '~~f'b'; di 32 b.it.. Si co?sideri .una pagin~ conten~nte .un t~attP linea:e ~i progra.mm~ t"§R.:~r·/· s~nza clcll 0 saltl .-. e ~l assuma che l~ I?nma lS~r~zIODe esegulta 1 questa pagma ::.~~~(~ ~la quel1~ alIa poslzlon.e 0. AHora t~t~l 1 ~u~cessIVI 10?3 fe~c? ~a:'san? attrave:-so :;tl~~:;,: 11 medeslmo elemento m rr:LB ..Se POI ~potlZ~I~O che 1 da~l LDdln~zatl dal COdlC~ " ":.~(\it~L '. contenuto nella nostra pagma SIano eSSI 5tessl III una medeSlma pagm3, ecca che Sl ;:~H;'.:~:' i; richiede solo un secondo elemento in TLB fintantoche ~l centrollo resta in pagina. f .tit~L-" ·In riferimento al 486, che. ha pagine di 4k?yte e un TLB eli 32.posizioni, si ha che ~ (I~~:;'-:'- 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 , ,·~~rrf~·. caricata, resta in memoria finche dura l'esecuzione del programma stesso. Assumendo &t~~~f~':·
.
j
,:.
"
:
,"
~l'k'
.
t'I t~~~" . . ' 7N~tura.l~nente si fa l'iP?tesi .che pr.ogramma stia in 32 pagine, ovvero che il codice Don sia ~ 6.'r~:~' frantumato In un numero di pagme superlore a 32. il
.
,
~·f»' "~,,",,
,
•\:I.. 1·• •
' ~»!' ..... . " '.
.-
:~
~ :~~~' "~'
340
'r~ '"-~:\ "," {r~~ •• ~..
Ca.pitolo 8
:
~~"::':2::::::'::''':''
~"
-i""~'~
,-",:;..
,. ~
;
r~
primoY~~ '
la politica demand paging (efr. 8.6.2), una pagina determina un miss in TLB al indirizzamento (cui segue un page fault che ne determina il caricamento) j i riferimenti ~Tl\~' successivi fanna sempre hit in TLB. .~~~.
..',."":,~"
,~}G:f'~' t# '.. ',.:,:'J.?~ ~
Dimensione eli un elemento 4 -"Fbyte 1 ciclo di clock Tempo di hit Penalizzazione di miss 10-30 cicli di clock Tasso di miss 10,1%-1% Dimensione 32 - 8192 byte
I
La TabeUa8.2, tratta da
8.2.3
.
.. .
:::,",~'I.;~ '; i{"', r ...
"'~~t1i ~
,,; '. (1! 4 ;:;~~" :'
J~i;' ~
Tabella 8.2 Va.lori tipici dei parametri caratteristici dei TLB.
.
i~ :' :
. ...
:.;.'~~.,
'
. ~:f,~: <.~
~
, '.~·;c,;'
~
'<::~\~;1 '
[HP93] formsee datI quantltatlvl carattenstlci SUI TLB. 'i"r' ;:~ ~
":);j~:'~" : .....,,,,1Ji,. ,
.
GestlOne della tabella
.. ... ~._," ('
L• • • ~'"
'
E giunto it momenta di affrontare direttamente Ie problematiche relative aHa gestione" .'~j~~~*
della tabella. Cominciamo col riehiamare rapidissimamente alcuni eoncetti relativi ai ,,~~~~.:""- , sistemi a processi eoncorrenti (aleune delle questioni sotto esposte vengono riprese nel .' ~:~~ capitolo dedicato alta protezione). :.';.~i:-'::
...,c,~:=;'Oi {-.~~,{, ,.". . ~,,!;j
Sistemi a processi concorrenti L'esecuzione apparentemente simultanea di piu ,~,~- ' applicazioni viene detta multitasking. Si parla anche di sistema a processi concorrenti; '~:)$, La coneorrenza viene otte~uta ripartendo la CPU tra. i differenti proeessi, in modo che .,:"~!J tutto avvenga come se vi fossero tanti elaboratori quanti sono i proeessi in eseeuzione··'~':':'/~t· '. Si usa il termine eli 'processo sequ~nziale So tas~) per denominare ~,a attivita c~e '\~;.~. 81 evolve nel tempo, cornspondente aU esecuzlOne dt un programma (0 pm prqgramml) ,,:,1.~~ su di un sistema di elaborazione. n concetto di proeesso evidenzia l'aspetto'dinamico 'YNf' dell'elaborazione, in eontrapPo~~zione all'aspetto statico, rappreseotato dal testa ~~l ,'jt~;:< programma. In qIodo un pa' pm formale un processo p e rappresentato dalla e.oPPla '~-0?~~i (P,S) dove P e un programma e S e 10 state raggiunto dalPelaborazione. In 00 dato /:~~" momento 10 stato S e rappresentato dall'insieme dei valori assunti dalle vaiiabili di. :,'~::J~~: progr~~ o~tre che daUo stato del processore s~ cui ii. ~ro~~~a e in esecuzione. ,:.7Af~ Le vanablli dl programma fanno parte dello SpazlO degh lOdmzzI del ~rogr~rnm~ (~. ::",£1l' del processo), mentre 10 state del proeessore e data dal contenuto del SUOt regtstrt . 'i~h.~ (generici registri di macchina, PSW ecc.). , ',:~~lt· Tn un sistema multitasking la CPU viene a5segnata in tempi diversi a task diversi .';9",~: (per semplicita si assuma the 1a macchina sia monoprocessore). ~io vuol dire.che ~·~Ui;"~~ l'e5ecuz~one dei task deve p~ter essere sospesa e ri.pr.esa all'occorrenza. La sospenslOne ··::;1@·;·' puo denvar~ dal fatto che i1 processe non ha pe.r 11 mornen~o alt~o. da fare (perche, . "''">$.; per esempio sta attendendo 11 completamento dl un'operazlOne dl mgresse) oppure '" ....~~.~ ). ..,. .) . .. d'· m 0 '''>:~l:~' perche (e questa 11 case del slsterru hme-~haT1ng e. termmato 11 quan~o 1 te . p . :' .;:!.1~.J assegnatogli. Nel sospendere un processe e necessano salvar~ tutte Ie 1Dformaz~om ".\:,~;~::, ehe servono a farlo ripartire come se niente fosse aceaduto. A tal ~,~?c~~rre a.c;SOClare ,(~?J.
.., .
:.. ;~;¥l \".,.\1;
J;\~
~\ ...
,I;,~::" ~::..
.
"'):1:-'
.•".~ti'::lIc!. ' '. .: ~":t.:1-", ,~" Ifl'~ .
La. memoria virtuale
~ ~"f
341
;,\<".;"~.>!'.,
~
.X,I- ,j , ,...
'~ig;·,. ~'. -a ciascun pr~cesso un'area di memoria per queste inform~i~ni. L'area.in questi~:m~
I •
1.
,: '.
~f,l;~~3i viene denommata Task Control !Jlock (TeB) .. TCB e l'msleme d~l1e informazlon~ '~.~1i:::~'_ di stato del processo lisate dal sistema operatIVQ per tenere ttaccla dello stato di ·'i~1ffi.',~/ esecuzione del processo stesso, Quando l'~ecuzione di un task viene sospesa, tutte Ie
•
#§:~;~:i;' ~.:inforrnazioni relative aIlo state del pr~cessore, che servono alIa successiva riattivazione ~1f:ft~1: vengono copiate in TeB. Queste in1ormazioni vengono pertanto copiate da TCB nei
;l~~~h',:. '~~gistri di CPU all'atto della riattivazio~~, Si ?ot.i ~e una ~ queste e sicurament.e i~ r~~t.~!::, ,.- valore Program Counter, ma ancbe tutti 1 regJstn di macchma devono essere coplatl ~;N~~~~;:::~ in TCB alll~tto della ~osp~nsi.one del processo, in ~uanto questa pu~ arrivare in mod~
1.
4;.;;ti.~~(.
del tutto aslIlcrono e 1 regtstn possono, per esemplo contenere valon appena calcolatl '\Z~i;!;(,' p~r Ie variabili, rna non aneora assegnati (cioe non ancora "registrati" in memoria). ~'F~~r~ Per 1a sosp~nsio~e/ attivazione ~ei processi si usa. iI. termine di cambiament? di 'f ~~!\~" contesto. La logIca dl CPU pub formre un supporto mJDlrno 0 completo alla gestlOne ';t~~~~i~>· del car:nbiamento di c~ntes~o8. In ogni. caso per gestire il mu~titask.ing, it ~istema ~,t.4r~~~~·:.'~~operatl~o asse~a un ~de~tlficato~e a clascu.n process~ e ma.,ntIene alcune. hste:.. l~ ~';41~~~$J:1;~' : 'lista' del proeessl pronh (ewe quelli ehe sono m grado dt esegurre), quella del processl ~j~~t.~1\;::bloccati in attesa di qualche evento ecc. Per costruire Ie Hste si impiegano puntat_ori :r;~~t~;2:,..; che vengono eontenuti entro i TCB (in pratica Ie liste sono liste di TeB). $empre nel ,~1'i''\:1'::'TCB si trova I'identificatore'.
.::''" ' ' _
'~ ...
,.,..
~;,
.'
r~''','
.. " ,~~.~:::~, Memoria vlrtual~ e m~ht~~kl.~l~
*~J.'f.r·
. .. . In un slstema multItasking, og~ pro~esso deve
:~U~\ ,P0ssede!e un proprIO ~pazlO ~l. m~I:lz~ar.ne~to, separato da q~eHo degh altn t~k. La ,i~i'"l'" .separazlOne della SpazlO degh mdmzzl dl Clascun processo puo essere ottenuta ~1"""':1.:J,r '. ',modi diversi: .
In
due
J!i:.r.l'' ·:- ~,.,
t1!A~'Y~\I\"
:~~..t~ :0~~:~<
1. prevedendo una tabella di traduzione per eiascun pro€esso.
~~;~qJt?~)~
.
!iit.fi:':;:.. ,
E
questa la soluzione piu usuale ed e usata, per esempio, nell'architettura 68000 Motorola e nell'architettura x86 Intel.
ll~f:"i:;J;-~. ~re~~de.nd?una.tab~ll~ uni~a per tu~t~ il siste.ma e p.re~ede.ndo the gli ~p~i
degli mdmZZl virtuah del smgeh processl SIano del sottom:neIDl della SpazlO virtuale del sistema, in modo che ai processi possano essere assegnati spazi virtuali non sovrapposti. Questa soluzione e usata oell'architettura PowerPC e di essa si parla nel Paragrafo 8.10.
:;~~~Fi:·;..;·
'~~~';"(. ~·r~1,fi};i~:.
..
:i~V,i!~~~~?C,/ ;lkl@;,~.:;·.
: ;~~~i::"~::'
... .
.
Facendo riferimento alIa soluzione a), vediamo come un sistema operativo po1f~~:r· trebbe ~estire la ~emoria vi:tuale. . . . ',.:,@~~~'\':". POlche a ogm ~rocesso e as~oelata una sua ~MT, 1 TCB dovranno eontene:e il .;~~~.~:;.', p.unt~tore aHa relatlva tabella, lD modI? che ogm volta che un clato processo vtene · TF.;t>,:;· " nattlvato it puntatore in- questione possa essere eopiato in RP (Cfr. 8.3). Dccorre poi : ~~~~6':~.,:, stabilire come,vengono tenute 1e tabelle in memoria. La PMT descritta in precedenza ~~!i1&.{.'.:;',e una tabella piatta e quindi deve essere prevista per essa tutto 10 spazio che pub
I •
1
•
! •
l. '.
I I
, J. •
\ I. •
1
). •
·' .:l~ltW'.~~(:" :~~~t··,·
~' J',;.. ?~,.:... 1~.f:~·~I~'."
8
,
'
..
.
"
Nell a.rchltettura Intel, 1a loglca. dl CPU (a partlre dal 286) gestLSce direttamente 11 camblamento delcontesto (Cfr.9.4). J .~~T':t,. 9L'ident.lficatore pub essere un semplice oumero d'ordine, rna pub anche eMere un qualunque altro , :?'im~:'~I'\ g:~ere ~i informazione assegnata univocamente a ciascun proce5SO (nell'architettura Intella. funzione ..~~.t¥ dl Identlficatore e svolta da un ulettore Cfr. 9.4).
.,
(~1$~·::, .... ,' .,:'1',~
•
. .
J
- ;~~~
,.
342
I
I I
! , \
-
I \
•
,::!>' :~
Possiamo ipotizzare che la memoria fisica sia divisa in due parti: 13 prima parte"~~!if usata per contenere il sistema operativo al completo lO I 130 seconda parte usata per <;~~~" i. processi. .Possiamo an.che ipotizzat~ che la parte contene?te il sistema opera~ivo :}1~1 ala. non pagmata e che Sla tanto amp13 da contenere al suo mterno tutte Ie posslbili ~~~~~ PMT. All'atto della partenza
si~: ~~~ ',,' ,_.)~~t
,'-"'::~.,
"':"';or,~tl! • . "t:jl....
:.\}iii'
Lista delle pagine libere: 50,230,20,21,179,40,41,43,1030, ..
-.""'~j!i'.
-" ,··H'lt.; ";.l;".
, ,.";~!'il'
Supponiamo che alla partenza del processo il sistema operativo allochi solo la' ·>~I 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 e stat.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. Ne~ discutere il TLB (si veda in particolare la Figura8.4), si e osservato 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
•
-
<;;'f;:'
occupare. facilmente intuibile che cia porta a uno spreco eccessivo di memoria: :.~:~L tra. poco abbandoneremo questa ipotesi. Peron momento 13 manteniamo per ragioni :!,.~f.ID~ di esposizione , facendo finta che la memoria sia illimitata. .>I~",;
I
•
~'~~.
.E
\
: I
".,~
":'£i
\
.,
~'1'
'IB Caplto 0
•••."':0:;
I
I
,,",','
\
)
lOOvviamente anche questa. e un'ipotesi irrea.listica.. llSi pa.rla. eli lista. perche e la. 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.
La memoria virtua.le
Memoria Fisica ~
0
t•
'Sistema Operativo
~
, .. - I ' - ' l-
PMT pI
~
•
0
~
,~ ~
Spazio
Virluale
•" 0 •c • ••
'
343
I
--.
.
File System
o
~
GJ
I
o
Allre PMT
dl pi
o
,
2
CJ
3
,
GJ
•• • 0
0
\.
"
~
.-'
•
,.• ~
.'.
P&.ginfl. 50
~
"
~-
~
yaslna
230
-
Figura 8.5 Scbematoizzazione dello stato della memoria gestita secondo Ie ipotesi semplificative fatte nel testo. II processo PI ba fatto rjferimento aBe due sole pagine virtua.li 0 e 1 (inizialmente e stata 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 comp~latore e tinkerj e uno 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.
8.2.4 Tabella delle pagine gerarchica Una tabella delle pagine piatta come quella fino a ora considerata matica da gestire per due motivi:
e alquanto proble-
• 10 spreco di memoria che essa comportaj • 1a difficolta a mantenere uno spazio di memoria contiguo in uno spazio nece9sariamente virtuale e quindi paginato. •
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 e di 12 bit, mentre il numero di .pagina e dato attraverso i restanti 20 bit. In altri termini si richiederebbe una PMT di 220 . == 1 M 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 e inaccettabile, anche percbe si ripeterebbe per ogni processo.
•
344
.'
Capitolo 8
t,::\:\.
.., .
.,;~~ ~
,'-'a"" -::'1 ~i
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 ";'~,#.I 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 ;J~': paginata 0 puo essere un blocco contiguo di memoria fisica? In precedenza si e ipo- ,~~.l~~ tiz:?ato che quest'ultima fosse la soluzione, rna si tratta di una soluzione artificiosa ":~)~t~~ in quanta la memoria paginata e} quindi, naturale che anche gli indirizzi generati ~'~~r. dal sistema operativo quando manipola la PMT siano soggetti aI meccanismo della ""'J':oS)~~ traduzione12 . In altri termini, e meglio prevedere che anche la PMT sia paginata. "¥'¥J' . 'to'" Per i motivi ora discussi} la PMT viene normalmente strutturata in forma di ",?f~ gerarchia di tabelle, come illustrato in Figura8.6 dove si ha una PMT a due livelli. "';~t,?~ n campo de11'indirizzo logico dedicato alPindividuazione della pagina e ora sud- .,~:(9& diviso in due parti: 180 parte di primo Hvello e la parte di secondo livello. La parte '~'i~;r'Wf';' eli primo liveUo viene interpret80ta come numero d'ordine di un descrittore entro Ia "'~:'mr:. tabella di primo HveHo. Questa descrittore fornisce la base di una tabella di secondo ".)~I;r~~" livello, dove contenuto il descrittore di pagina individuato attraverso if campo di ,:;~" ~ secondo livel1o, che, a sua volta, fornisce 180 base della pagina fisica. ,.YI~B.i In altre parole, una tabella gerarchica costituisce una struttura ad albero (albero ./.;~~ di traduzio~e) . . La Figura,8.6 indica che. or~ i1 r~gistro RP 1.a ra?i~e ~e~l'albero" ""\~':~i'!1 ?vvero co~tlene II puntat?re alia ta~ella di pnmo hvello, neUe Cut. pOSlZlom sl.tro~ano', ,\~;'~tl': 1 puntaton alle tabeHe dl secondo UveHo. La MMU responsabile della navlgazlOne .,'i~ 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, ',~:~-tl~ 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 dispersione) possono essere descritti attraverso poche posizioni nella tabella di primo livello e dal corrispondente nUIDero di tabelle di secondo Hvello. II vantaggio principale consiste comunque nel fatto che la tabella risulta paginata in modo del tutto
)'#
e
e
e
e
e
12Un ben noto schema di traduzione che usa tabelle piatte e la memoria virtu ale 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"..... lndiri:zzo u .... Uo
I
1
I
Memoria centrale
virluale
U ....llo ~
l"~,
345
T..lo.l1.. d.I "".. ppal..... eli 11_110
,
I $~~,._hrn ....... !'lo ,n. ,,~
II..... l.b. 1I_110 II
'\"
I !
.
T.b.. lt.. d.I .... pp.,...... dl l1... uo II
4
• • •
\
,
\, ~
~
I a....
d .. ll. p.,lGa
I Pel-gina fisica 1I\
1 )
Figura 8.6 Schema di traduzione degli indirizzi con ~a.belle di descrittori di pagina. organinatoe gerarch.icamente. La PMT risultante una struttura ad albero, in questo caso a. due livelli. RP e un registro di CPU che forniscc l'indirizzo della tabella di primo Hvello.
\
e
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 rif~rimenti. 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 ~econdo Uvello basta allocare una pagina tisica e inserire i1 relativo descrittore nella tabella di primo livello. Durante 1a normale esecuzione ~a 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
1 \I . •
1 •
l J
346
I
•
Capitolo 8
.. ".~
,~:~:\.~:'
comune eli pagine eli memoria 14 ,
A tale proposito si veda I'Esercizio8.L
,,' :\i' "'Wl'll '.'"
:,;:~ ",:1.", ''"'. '1' ,
,
, ',.\,,~
1,;1 1'-,
..").'i:
. •...?>.i
\
:\'~~I'
8.3 Tabella delle pagine invertita
'"'\1:\'r-t''' . . 'J
. bJol
"", ,r'11'.•1il"_,j
Un modo per ;:~~~j conteneme la dimensione consiste nell'organizzare la tabella delle pagine in forma di :l~~~,
E gia. stato osservato che la PMT pub diventare eccessivamente ampia.
\
"tahella invertita" [JM98a], Schematicamente una tabella di pagine invertita (IPT)!At , . ':::!:~,~, ' Presenta queste caratteristiche:
. I
.. 'I'·'
'" :',(l~i
\
:,,:~'.[k~'
a) ha un numera di elementi pari al nurnew delle pagine fisiche;
.~ -.}"~
",:1 ';,,:\1;
j
. "" \'1'
b) ogni PTE contiene non il numero di pagina fisica (RPN), rna il numero di pagina ,'~;~~ virtuale (VPN); , , ".l,I.;1' '",,;1. • , "",
I
I '. I
,
c) l'indicizzazione entro la tabella
e ottenuta attraverso una funzione hash.
'.' ',,' 'J ~'
"';:~j~r
'n,••
'.,
. <.,
!
. ' ,_. ,:Ill... ,
Memoria Fisicll.
\I
o
0 b
I
,
!\f~l t'~~\~!' i?i~,
:
;;I"~ .. ._,'f. .' I:
"
P..gln.. tisle.. 1
,
:
...
"~~1<~l! , :;:l.1 .~
nJNZIONE,
~
. -j!;',. .. '" ~~., . t, '" i'i, ..:~i;
,
VPN
,1
,," ''',J~"
VPN
Prot.
::".(~l .~
." -, .... '0;.'
. 1
1
Palin.. lltllca 0
'PN
Prot,
j
.",rll~ ,,'".:~i,l£
.
'liei''''
,
, (. ,,~
I,
'PN
Prol.
""SN
, ,
I
:
, ;I(..~
In Figura8,? viene illustrata 1a struttura della ~PT e il meccanismo di traduzione ':'~:·~if; dell'indirizzo. ·La chiave di ricerca e VPN e 1a funzione hash produce un1associazione )/~~'" i tra i VPN e Ie posizioni in lPT. ,~ I
IPT
:\
'I
'·','I'l' ,,", 'I ~" ""1
,
,
1
..'-~l~! ,; , I'
•
l:t=l
:~ ~_
.
":'\' ," '''I!
,
':'lll' , 'I
-·jt1tI'C , 'J\l
,,-r~'
R-I
Prot.
,
..,;~'. ',,'. ",Ii, I~
'PH
!
..;~," ".,i\!! ,... u:~~
• ,~m;.
R- 1
1
I
Pallina IUle.. R- t
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 e fatta 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,
, __ ,'~;'~.' :~~:'fi"
:}~I~'
\
140vviamente ci saranno parti speciali del sistema operativo che non potranco essere paginate (si veda il Paragrafo 8,6.3). .
"~'b
.J::'.
,,:~.' :,l:,..
I
"':'("H; J)'
,.,1Ii"
,.'" '.,',
;
",
' 'k:' 'Ql-":"~ , ,,'I'. '.
I"~.
'~ft> __-----------------------L~a.:m~em~o:::.n~' .. -
:~f-;,~'~.
v a:-.:.ir::,:::tu:al,:::e_-=3:,:4:.:,7
~~ '..
)¥ii,j':,: ;
l;l~~!· " ,.' .
J~~r~;:; <"' " Per via della relazione 1:1 tra PTE e pagine fisiche, se i1 campo VPN del PTE in ~~~~?~:_:'posizione x contiene it nUIDera Y all?ra 130 .pa'g~a ~uale. y e ma~pata ~ulla pagina I
~~'(~~.:;. fisica x. In altre parole, nella traduzlOoe dl un mdinzzo VlItuale, 81 ha h~t se i1 PTE
~:~if{:\'selezionato dalla funzione h(VPN) contiene un numero (di pagina virtuale) uguale a
r~j,~~:',: VPNi si ha fault in. caso cantracio. ~ssendo i~ ~urnero di cbiavi (il valore massim? di 1~~~~~~'\; VPN) malta supenore aJ DUIDero dl elementI In IPT, se k i e k j sono due genenche '\'.~~~~~k~:~,;' ~~iavi. con ki :,;,'\\'\~~I\,~·",,,!·J' .
i- kj , e possibile che si
,~r~J~~>:.',;'
'~~!:ti::.Ovvero che due lj(;Wi;;rn.' 1,1.,,) " , :,ltJ:1i:"t\i;l- .",
abbia
h(ki ) = h(k;)
(0 piu) VPN vadano a collidere sulla medesima posizione della IPT,
'.
"1h)'J,!¥r" ".'
;~(iJ~!.':~:,;
jf~~f~i~~i~",?~~. ,3.1
L
a co
d'fi 1
h
ca as
h
'N~j::,~;;ersamente da altre tecniche di ricerca piu castose, quali 1a scansione completa I~lj.:~';:" hash
la ncerca bmana, la tecmca tenta dl ncavare dlrettamente dalla cruave dl :~§1~~~';",,:'rjcerca la rnassima quantita possibile di informazione circa la posizione dell'elemento 0
ifiil\ll~i,,\:)cercata [Luc72], [Knu70], Una funziane hash davrehhe, da un lata ridurre al minima if~§:>','~'e c?llisioni, dall',altro essere piu v~loce possibile[D~c901_ Esistono diversi modi per It,j1,/reallzzare 1a funzlOne hash della ch,ave k; ne elenchlama brevemente alcune[Luc72],
!t1'!;v;,..':' a)
If,~~~'::'- "b) 1L:;"i~.""', !foi!"~J!.l",,, "",'
oI';w;.'f""i'~''''''
•
~)~>t!;i·',",.-, :;:!t.'l'~,t,l-. ~,. ~~:;:~, " '·""~I';<':; ,,, ..,
e un sottainsieme di r hit di k; h(k) eresto della divisione tra la chiave e iI numero delle posizioni della tabella 15 ;
h(k)
.. c) h(k)
";'i~~,~"" " "~";~)""' ',' ":.
'
e la somma bit
a bit di due sottoinsiemi
:~1~(~'-~"
La soluzione del punto a) ha il pregio della semplicita., tuttavia non assicura una :;~;~:"': buona distribuzione dei valori degli indicij quella del punto b) buona da! punto di ~~1ij:>i v~s~a, della distrib~zione degli indici l ~a ha ~l di!etto di essere lenta a causa dell~ ~:;$~.}t,:. ;:-,q.lylslOnej la soluzlOne del punto c). ha 11 preglO dl essere poco onerosa ~al punta dl ,~T:: .,vista del calcolo e di generare una distribuzione uniforme degli indici 16 , E questa la J~*~i,F:;i. '.tecnica usata nell'architettura PowerPC (Figura8.43), J 1 ~;¥Ji!"-~ .!>,~t" -,. ' . ~',,.,""",,< ,;.,
e
li'll<·,·~
''I
",~~~,,."
I'~'p"
;(lfb:
:~~1;.~,,~;"~:': i ;:w, '., -,.-,
8.3,2 Gestione della tabella IPT
,
L:organizzazione di Figura8.7 e poco 6essibile e safIre di un problem" paiche un dato VPN non pub che finire in una sola, ben determinata posizione, se un programma
(l' _.-w,.-
,.\~t_-.. )~
,iif~[~,,:,
" . ISSi not.i che se R. e u~a ,pote~za. del 2 si ricade nel caso precedente, infatti il resto della division!!
,4~~~.;:.'-.:
"~4:<,::" "'~~;~j;\':'
k/2'" COrrlspone agh ultlml n bit dl k. L6La distribuzione ~niforme ~egli ind~ci deriva. dal fatto ch.e l~ tabella di veriU, dell'op,era~lone
XOR presenta. due zen e due UnI come nsultato. Se per esemplO Sl vuole mappare uno Spa.z1O dl 256 ;~if : . posizioni su uno di 16, la funzione bash pub essere ottenuta come XQR dei 4 bit piu significativi :;~:;F':, con i 4 menD significativi del numero dato, Per la proprieta dell'operazione, gli iodici prodotti sono .'·ir~~;~;~~', equamente di8tri~uiti su tutte le p08izioni. Ovvi~~nt~ ~i questa propr~e~a ~on godooo gLi operatori ...~%~~,:; AND e OR che, mvece, tendooo ad accumulare gh mdlct su alcune paslzlon.. '."'!",' ~n,:11 \, _ oj.i!""" ,. '!ll'.-~~'!f;' ,Yo
-
";
V.":'_ . ,~
348
Capitolo·8
.'.". "'i'l! ."
,.\'1.:1 '
~~
0'1,
' ..'
'~~ "'of, ~'",
'.';1.:.,
volta un fault. Occorre un rimedio , ancbe perche it principia di localita. suggerisce~ di <,~l\ 17 tenere in memoria Ie pagine piu frequentemente indirizzate . Si cleve percio rinun- <;3~f ciare. ad aver~ i .VP:t:'l solo nelle posizioni in~ividuate d~ll~ fu~zione ha.c;h, e preve~ere .. ,.')~}~~i
10 BVlluppo dl liste III ~T .. La schema corr~spa.ndente: m Flgura8.8. ~: c~se 51 ~e. I.::',.~. eorda?o bene C.OD !a dinarmca della memona vutuale,.m quanto Ie 'p0slz1~m r~latlve '~~\l;r: a p~gJne non r~er~te possono essere oe:u?ate vantagglOsamente. d-:u descntt07'l delle \~rv pagIne spesso rifente. In altre parole) Cl SI aspetta un processo dl tIpo adattatlvo che .,;~.~ porta ad avere in IPT un certo numero di liste, corrispondenti alle pagine pill spesso .:;~~~. indirizzate da1 programma. .::~\ \~~
'-·,~~~
IPT
.>,!'
,',', ':~~f
0 h
,
Prot.
Y.PNz
,
:~~~
•
.})~ :'!!~¥
• ,
VPN
FuNZION(
HASH
Prot.
VPN)(
,~ .• {:
~~'il
LlNK
...lir,·
,jiJ1 ,..'" ',",,,:f,< ,. ''-
-, I""
• •
·~r.J£'~
,.. ','., "', ",,, ','-
k
Pro1:.
VPN y
LINK
l-
.)f~~1\l ..
.~
• ,
.
,
'-~·'!~
h"
"~'" ••• ,;,
'.' ~~
:'\'\w :':'~1
Figura 8.8 Formazione di liste eli PTE nella tabella della pagine invertita. La funzione hash ·~·:; trasforma VPN in h. Ai fini Qella formazione delle liste ogni PTE contiene un puntatore ::--:"i (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... .:.r: Ii~ta. La li~ta e nata n.el modo seguente: ~art~ndo ~a. IPT vuota: si e presentata la pagina .<2~ virtua1e x; 11 suo descnttore e stato costrUIto ill pOSlzlOne h con II campo LINK posto a /1 in I~s~a a seguire .que!1o in~. lnfiIl;e si e presentata 1a pagina Z che e ~tata sistemata nella :.,~! poslzlone 1 (fo.rruta dalla ncerca hneare che h.a deborclato oltre la mlsura della tabella) e . ,~ accodata alIa bsta. :"1'
. ~,t
,;,,-! .. ~
" .:
:.... In riferimento alla Figura8.B, si ha hit quando IPT[h].VPN=VPNj in caso,contra.-- "':1 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 '~: .,·";"' ,m ques t 0 rna d 0: .i.~
.' :.
.• -
N '. ·~
a) detennina Quale pagina fisica utilizzare (quindi Quale p05izione occupare);
· '.
,
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. 17n
...•
"
..." ..
,,~ '
•
,
".~: ,1
'1\,
.
.~
'.
,_ "oil'.
·I;;l~,_··
~li~ , . ;.ltl'il~l··';' •
\
rU"t~"
"I., ...: """i"lI:,C,.•
La memoria virtuale
r)<.!i
ll., , :' ~'"~r'r' • ,~J
349
',J. " ' - " \ .
,
ci'";.!!
1
.'''. ,.,"', ...':~~" ~;'!":l
~il'
)"""'~"';
-~>r>'::
posizione h. )~~,P\:-,:' a a chiarito piu avanti se 130 pagina fisica utilizzata era in uso (ovvero se il ,~~,~t::· p~~ee:a roccupata)1 si cleve teder conto del fatto che 1a pa~a vm:ua1e ~ essa allocata fJf-,tt:::- poteva trovarsi a sua volta in una lista. In tal case Palgont~o di g~tl~n~ deve: (1) .;~' . 1:;:.· rima di tutto aggiornare questa lista, escludendo da essa il PTE mdiVlduato; (2) lih.'f/<:~. ie are i1 PTE. come detto in precedenza. . Ni'~~' lmp g
i.
., : v ~.
c
Y
., i,~~~:r~;,·'
.
. .:
_.
.
: ',:!rrt~:::.' Un cas~ di esemt;>io ~acciamo rieorso a un esemplO numenco per illustrare alcum ~ '~~;t:i~~·:;" .. , problerru nella gestIone dl 1PT. . ... . . ~);t;~:,:'«'~·\ Ammettiamo di avere una IPT di 10 POSlZlOru comspondente a una memona .~(~~Ck ~. fisica di 10 pau1ne. Supponiamo che 10 spazio virtuale sia di 100 pagine e che 1a ','~'"':(' , f#~t (~tt'~~'-',l' 'funzione hash 0" faecia da "imbuto" 10:1, ovvero riporti il campo { 0... 99} su {O ... 9} . ~. ·:~t-r~I'~: . Partiamo dalla IPT vuota (e quindi anehe dalla memoria fisica vuota18 ) e assumiamo ~' '~~l(:>,' che il programma generi la sequenza di riferimenti (VPN) sotto riportata e che la ¥~~... fS2-"./;·'.' funzione hash produca la sequenza pure riportata.
:l~
'-" r.il.:.'· .... , ..... ·.. ,..• 1, ·,j'- -:--"~'Q' .',. , .
\ \,
I
.
l>J
1ii1'
1',:'",. ~ '.' .
"-''~' .•
',: ~.' ...~,~
~
l l
..('''''''.('' ,,'
~,'
~;-;:,
....\II,!:>" .. i" .
,.~;,. (~·,
wf .;~j!>;'";':' 1.,t, ~ii'•."*"
;\l~~~~!}~~f:.
:~}~ \';if?i·t\;~ . ,[{~:· ~;i,~;('J".
f~~: ~j~,t~:i"::. 1, ~~ :ij~~~~,,~, ",
!;r~· i;~l~':'" ~g-~ii, !0:~?:t" ''':",~~, til;·,".·:· .
t:~.~,,:J. i ':.::;:~ ,.
.;,{~':., J~1'!~>·' 1g~, '.?,{t" :~~·i'i.~~:~,~<,;.'
:~'.~ .l&'~~~' ' .. ' ';.11'1,.',',
'.~-
"'"1iSl
o
4
37
o
66
96
6
8
48 8
39 8
e
messa nella lista originantesi in 0; cia richiede gli assegnamenti IPT[0],LINKf-2 e IPT[2j,LINKf- P;
,.~.
!'i ".~".'ij{.;lf/?;'· ~ •. ,'
1
24
e
;{~~ 'i(.!i:';{~:
~'i,
3
70
2) il quarto riferimento aneora O} rna la p05izione 0 occupata: 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 219 I cbe viene
iti~~~ .i~~;!1..:
:~~~~~_ 'I'~"'~,i"
61
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;
"
~~. ;1,~'~'.{!~~·"·
;..H~
o
13
Seguiamo 10 svolgimento dei riferimenti:
ll"", ~ !~;$1~":" ... . ,"'" ~l.f~. f.,;y.~.-;-,
...
60
h
"~':.:~~. :. ,,~, ..1"~"~1"'"'''' ,,', "",.' ' . . . ~., ",j . . .
'"
VPN
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 questa (la terza riga riporta la pagina fisica usata):
1
I \
]
e
'
VPN h
RPN
60
o o
70
1
o
24
1
2
4 4
13
61
3 3
37
o 5
1
I )
~,~-?~' ~",~';:I'i'
.~,(('t~· ~.,f, ·t'~ .."'i'
-:..'-..• Y.,·',·
.
N.
~""'~'" ..,><.
'~~. ~
~:r:-f¥.S;\ ;"':~:\"-"
.• ~!llff. ~~,)....
'~'l'hi,' ':'l ~,'"
.-.",
"0
,;'-
.. ~:s-:'i{:~ .. "c,.')'''', ~ . .,-.",'R '" ... . ,'-'". ~ ~
~jY1l"p., ;;(~::' 'i,h'~" i> '1'' . 3::' , .•• ,~~~.,;,
,~.
"
"i-o', ,. ;1"-'"
: ,1l~~ "1"~~t,"
:'::j~~: i' :~~t:.~. 1,1- -~' t. '-.,t ".; ,"
.~
'~.
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.
I I'
. ,~'li' '.':;,
~3..:5..:0~-=C..:a:op.::it:::o.::lo::...::B:-
··~'~'"
<'1 I
_'.;
r;}.1
1
I
.. ..
\
,:,f.'
4)
~~ue ulteriori riferimenti (66 e 96) generano indici di PTE non aneora llsati (6, ~.;;:~~ ':';,1 :"
'£' 5) il prossimo riferimento (48) genera aneara l'indice 8. Essendo la osizione DCC :JN~l pata la scansione della tabella trova 13 pas,·z,·o e 9 l·b. P , u.v'~ . ' n I era, ques t a Vlene meSSa ,/. In coda alia lista che parte da 8 (per il momento ta lista f d ,,-,~. pagine: la 96 e la 48); ques con Iene ue so~~ ~~
.. .
\
.
/1~;'
nuovo 8. La 5cansione della!~ tabella nporta la pOSIZlone 7 che fimsce col chiudere la lista che si origina in 8.~lfih .. ,... , 'j:'~l~i La sltuazlone dopa 1 10 rifenmentl e quella illustrata in Figura8.9. ,,~,:y~~~
6) il rifenm.ento alia .. I
"
pa~a virtuale 39 ~a generare dl 20
,L',,';~l
","I:,
",-"
.
I ! ., I \ , I
vPN h
RPN
60, 13, 61, 70, 24, 37, 66, 96, 48, 39
0,
o.
3.
1.
,.
1.
o. 2,
4. 4.
o. 5.
6.
6.
8. 8,'
6. 9,
6
7
o
60
1 2
61
,
•
5 6
.~:~~~
2
70
•5
13
0
24
0
'7
0
66
0
7
,g
0
I
96
a
';:)L~
""iF~
K
.,<.~
...,
. ~:_~:.~., ',"'._
,~>:~, ,,',,- .
=))
. "l~', ..,t.'.1' ,.;~:. .r
••. ,
, ,,·;it ' ""\11' '~r.',
I. 48 I 7 ,~ ri.feri~enti, i corr~pondenti
.:,!"'i1" :1,,,,,.
9
Fig~a
,
8:9 A sinistra. viene riport~ta. la., sequenza di .10 h e l~~;:~~i~~· pagme fislche allocate. A destra ~1~De r.lp,0:tata. la. SltuazlOne In IPT dopo l'ultimo riferi.,~''''''' ~ento. Avendo ass~to ~a condizlone llliziale di tabella vuota, i 10 riferimenti (a pagine:;,;Jl. di~erse) hann? tuttI qU~tl ~enera~o un page fault cd e stata. per essi alloc3ota una. pagin30 ..~ ~' fislC.a. A p~rre daUa S)tu~loDe di figura, se .i1 program~a rimanesse sempre in queste 10 ~~iji!~ pagme nOD. s~ a.VTebb~o plU fault e la traduzlone dell'indirizzo procederebbe attraverso la '/ii~. IPT (noD 51, tlene .oVVlamente conto della presenza del TLB). In alcuni casi, per esempio con }:if,; r VPN=39, Sl ha hit dopo a.ver percorso parte della relativa.lista.. \,~;:~", ~
'.;';,:i'i~'
\
·::1:
e
I •
I I
,:~, '.
-:<,1,('"
2°In questa caso la acansione deborda illimite basso della tabella e riparte dall'alto fino a trovare ,/,~$ la 7. :j~~lrM r, 21Si deve osservare che la gestione delle Hste ba qualche complicazione anche nel CaBO in cui non '~,;:r: . ". ci sia. da effettuare la sostituzione di pagina. Riferendoci alia sequenza. dei primi 10 riferimenti, si . ""I~o, ...... supponga che 1a funzione hash generi per il decimo riferimento l'indice 9 anzicM 1'8: efacile verificare "~f-OI'~' '/'1 ""1 , j' '.
'.
\
I
I
Fino a questa punta stato considerato solo il caso di, dover sistemare un PTE in una p
..\,
""
I
'::1 ~
:~,.-
':!:-,
t~>:·
L
~~'F.. _. ......::...._ _~ ....l. _'
. . tuale
351
.....:~a~m~e:::lIl:::o:::r:.:':a..:v~ll::.:::::.:-_.:..:..:.
.~~.t:l.~;!~~ ",'
,;J!'';
,
-1(~'~*7~~r~talel ch~
tenesse co~to .solo delle esige~ze della ~aEhl usa?"do la 'posizion~ 4 per '-, '~(~~):': la. pagina vlrtuale 84, runplazzando 1a pagma 24. Dl norma 51 prefensce segurre una ,".•,." LRU '4.. ,'~t:~kfpol.itica - (Cf~. 8.6.2). . _, .,. . ,~i~lr*-L' ,,, Per mettere matte la gestlOne LRU e necessano che il SIstema operatIve tenga ~;9~~"4..', \. (. LRU) . d I'd· d I· . AI t d' ·%{r:."t?"~:' 'una lista 1a hsta per ncer are or me eg I acCes5l. memen 0 I un page ;.'l~~ifl:f:: fault, il sistema operative riardina 1a lista, in modo da tener. cont~ dei rif~rimenti ~, "~fW1..·-~ avu.tisi tra il ~rec~de~te fault e ~uello c?rrente. Con la tabella mvertlta convlene the ~·~fj--.·; I.a}l,sta LRU. Sla nfen~a ~lle ~agme realI, . ~~r:;~:\:, :.- , '- Supporu~o c~e 11 nordmamento deI~a lista LRy consegue~t~ al p~ge ~ault gene(:~~~;>:,rato.dalIa pagma vutuale 84 produca 1a lista LRU nportata a SlDlstra In Flgura8,lO.
,
~,; r~0;>',:" '
;(!~t~"t".-
' !\~'""""'.''511''~''~ ,-'
IPT
j~~~~~';.,>': '·:,l\~,,·m;·~·-· . ~r,:?:' . ~oif:t
',,' ..
"~
If~i~~t':-·<.
84
jt~~!.:·,
rUNZION(
4
IPT
0 -60.---
2
1
&1
•
2
70
5
_ 3
13
0 2
•
,
3
HASH
r~~'':;':;i'"; -''. .•'-. ,'"
;
,
,
.,.~.,..~
!tl:ii!."'."..... :';", "" ~
~I~'
i~~
.-
,
'ft"",,-:,
e.
x ~
, 3
'~t!1i~~'I{':_"
t;}:'f;P;:~':''',,'111'~~';':':'''':'.1;':;1'~'~,~:"
60
2 0
70 13
5
2'
I
37 66
0
39
0
96
9 7
.e
I-'
0
..>/
0
""'
./
"lX>'\""- ".'
;I:~'~:-
~~'~1\;·-. _,_ ~~~~!;i,..:' _-:_ I:, ~1'~:;' Figura
I
'-'-'-''-l...'-J.-''--.'-''-J..':-:-''-''''-l-''-J-'~,stQ LRU 8.10
E~etto dl un page fault.;
. .
,.
A slDlStra c e, 10
stat~ de.lla
1FT al m9mento
de~
I., f.:~;~.;._: p'ag~ fault; La lista ,LR~ e quell~ che ,nsulta dopo che e stata rJordmata ~er tener co~to del ,I/,%},;.i", rifenmentl aile pagrne mtercorSl tra il prec~den~e e corrente fault. La .li~ta LRU dlce che r:i/"f~{~,~;;.< 130 pagi~a fisica da, usar~ e,la nume~o 1. POlc~e il campo .LINK alIa poslzlOne 4 l!l vuoto, la ~~~?(~;\;'{ c~struzlOne della. hst~ nC~lede solo tl SU,O agglOrnamento 1ll modo da puntare a 1. A de~tra l~'~!1i;-t~< ":lene pres~ntata 1a Sltuazlone a conclusione del trattamento del fault,
.
I~). '· .'.~
La lista di Figura8.10 inizia con il numero della pagina fisica riferita pi" in Ii< nel 'f~j:.- tempo (quella da usare) e termma con 1,1 numero d~a p~na rife~lta p1.U ~ recente. ~h !..';'~1.'::~''''< .noti·che la lista LRU e diversa dalla stnngs. dell'ordme eli al!ocazlOne dl FlguraB.9; Cl() ~I~:\': indica che l'esecuzione de,l programma ha re~ la p~gina 1 come quella riferita piu in Ia. Wl1.y:;.;;,:., nel tempo. La lista termma comunque con 1a pagma 7 che, per essere stata sceIta sui ~~~l;;'~::" fau1~_ preeed~nt.e (queUo re1ativo alia ~agin~ virtua1e 39), ,e stat~ certamente riferita )~5'~hE:~:~'.::, tra 1 due ultlIDl fault. Guardando 1a lista 51 vede ehe nell evoluzlOne del programma 'Bi~tf;;:';-", la pagina 6 e stata. indirizzata piu di reeente delle pagine 8 e 9, mentre le pagine 8, 2, ~~lJ~::·.~~ 4,' 5 e 3 hanno avuta riferime,nti pili prossimi della. pagi~a 9. , ' ~f~if~~-"': La lista. LRU indic~ che 11 contenuto della pagma fislca 1 e d~ s~crificare a fa~ore ~;1lJ"..~~:.~~.- -_della pagina 84 22 . Agglornata 1a IPT, come nella parte destra dl FIguraB.IO, pnma ~t'tJ, ~~;
;,S?;fi;{.""-;
.-
','-
~~~~;;" che non ha senso allungare la lista che passa per 9; bisogna fare iniziare una. nuova lista da 9, con '~"'~lr{:,:.'·~, ..... ',~" . cio rinunciando a tenere la. pagina 48 (5i veda l'Esercizio 8.11) . 11:,~,';,"1\'J"; (';j,.q ,~, ,.' " ,
~~;"'h~~'::·", 'j!i1~,!'~"
'It!~''''' 'il:,,"':'
. o ,"W· ,
•~'"'.'<,.~:'~ .
22S e 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,
...
' ':'''''',ill -
;;[!
':':ri~i
....::;~:;~~
-"3-"52=----=C:.:a"p:.:'.t.::oI.::o:.:8C-
. -_'~:.l" . """'~,
: ...,j~J<, · . '
·i~:~"
,,'I, ,
di restituire il cantralla ai programmi oecorre aggiornare anche la lista LRU ponend~t,~" 1 in coda23 . AlIa ripartenza del programma verra aneora generato il riferimento alla';:~' pagina virtual.. 84 e Ia funzione hasb dara h=4, essendo IPT[4J.VPN;i84, la lista,che.:}t! parte d~a poslzlone. 4 verra percorsa fino ~~ trovare 84 nel PTE 10 POSIZlone 1., :
(Rer cui8 deve finire col puntarea 7) ; (ii) utilizzare il PTE 9 per tellere VPN=63;:;\~ (111) agglOrnare la hsta che UllZla ill 3 ponendo m coda l'elemento 9, ,"~~:;~' ,~!
;,
o , I
2
63
1
rUNZIDNE HASH
.0
S. 70
2
,• •
2'
I
• • •
S
37 66 39 96
9
'S
S
• 7
9 7
r-..
13
./
, ,"".
'.-'!J , .. ",~~.
;, ..u;;'1 ,
9
• TI
I
•
..
-
".
, "".:.:.'i,:., ~
'\'.-",
.:- jjj~r~
.;i~~1
7
-(.~,~, ·\-·N~~' ,ii;?{-
•
63
""..""'"
, ·""l, "!r;'l , '~i ,'. '·'h,·l~!: ';lli!'" I 'ir{'ll ' , j "'J-'\~ ,~-!{.,.w~., ;·i~' ~ ,~~",I
• •
66
"
~
,•
70
_
-,; ., ':'~~""
2 •
-60e.
,
?[·~f,
IPT
13
~r ~
....~.'..
-,
IPT
. ·'·".1(~~
",, ,.W.,' '~''''('.
913J4121816J710 1:511 Us'to. LRU
'- ~.1 i'1~ l}
8
6
7 0
:5
I
Lls'to LRU
9
.:~'~'~~i%i ..~.il!~ ': .~',u';il\..~~,
, ,I'!' "'.~i\!f;'
Figura 8.11 Questo page fault segue queUo della figura. precedente. 'Ita i due fault i rife~;'~1{~" rimenti h.anno modifi~ato la Ii,sta LRU: son,o state indirizzate 1a pagina 0 e la, pa~ina 5, ch~,';Si~~1 ora sono m coda alla hsta, assiCme alIa pagm& 1 che eertamente ha avuto un nfenmento pet: ,:~,A1IW~ aver determinate il fault precedente, La pagina viriuale 63 non e in memoria: l'algoritnio,i~:lil~ LRU determina la sostituzione della pagina virtnaIe in 9 (la 48). L'aggiornamento della IPT,;:~~~ richiede l'aggiornamento di due liste: quella che si originava in 8, da cui viene sottratto un.,j!l.\~ elemento~ e quella cbe si. ongina in 3, che ora diventa.~ ~ue eleme.n~i, COD. i~ ~U:0vo in coda. '~;~L Per .1'agglOrnamento la hsta cleve essere percorsa dall'mlZIO (Ia POS1Zlone dl JnlZIO e data da!. ~:'~'ic.;f£ codlce hash de1Pelemento da escludere), "'i',:t;~i'$l~
..
"',
· .::;,,:t.ij --',
. "'• '.,:T-.l!"i1; . ,;If. ."
. ' . "":iIi
Qu~st'ultimo
caso mostra che C'~ da ag~orn~e u:>D solo l~ lista in cui si inse~ise~ ~~iti una pagma , rna anche quella da CUI la pagma nmplazzata Vlene esclusa. La LRU ,;S~~:l' fornisee il PTE da usare , rna, se questo non e i1 primo della lista , Hsuo aggiornament6' .~d~ltl' richiede ehe 5i risalga all'elemento che 10 precede. A tal fine, oecorre percorrere la .'.)lS~" lista in cui si trova l'elemento da escludere (essa parte dana posizione eorrispondente .. )f'"~~ al suo eodice hash) e aggiomare il puntatore contenuto nell'elemento ehe precede con ';.jl~l '.-
-
--
,
·
~.'. t;o.l~
',~;;;:,
ii?
'.\»'i/~~
23E necessario cbe Ill. pagina 1 yenga mesaa in coda. in quanto il controllo tomera. a un programma ,::",,~((t~~ diverso da quello cbe ha generato il page fault; queat'ultimo potrebbe, a sua volta, generare un pas;e :j~i::~ fa.ult e au di esso non deve essere usatala pagina L Alternativamente, Ill. pagina 1 pub venire escluaa. \'~i£~; 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-..~ ... , ..
,,; · ', ..
~'
, ',llil~
,1, ';1/.
La memoria virtuale
353
c·.;e-:......------------====-=:::.:..--'-'-'. ,
I
i!f!.I1 ~ .
r' . ~~i~(:·quello contelluto nell'elemellto da escludere".
,,!,;¢:;J,' 10,','
~~~i~,lliw;~~::lf~a 0 piu 1PT? . Si e visto
che nel caso della PMT conviene
1I
avere una ta~ella
,~~rS'; .
''Il~:''81'>''':''
(
!
'
i'h1!i~ ',.>~ 7·,
'~I¥~~C~8.3.3 ~ ,.':,.i;:f .... i
~l .. -,_·_-"
-
II problema delle catene troppo lunghe
-
'.~fC'6·~~ l~ tabel.la invertita puo accadere ~i, dover se~e una lunga eate~a ~ puntatori
~:Jlj~~t~:per-trov~re l~ VPN cer~atol con pos~lb1le d~gra?azlO?e delle prestazlOIll. Ancbe s: !I1~~>-la macchma e dotata dI TLB, per CUI la naVlgazIOne In IPT ha luogo solo quando 11
e com~nque auspica?i~e che Ie. caten~ modello e teoneamente pOBslblle ehe 51 forml
~~lf~,;':;;TLB n?n fornisee la traduzione,
non ~rescano ,~b~~,V~I,).:,',';, adisffiIBura (nel nostro una lista ehe ~§~~:~[~~':i·;·?CCUpa tu.t~a l~ ,IF!; .cia p~o aC,eadere quand? BU una ~~essa posizione si mappano un jiil""~~\~~U~ero dl mdmzzI.V1rtuah pan ~ .~u~e~o di el~mentl ill tabella). . . 'll,:Io-I:"'~~-~:;'ii_;. -: Un modo per ndurre la posslbilita di espanslOne delle eatene cons1ste nel mettere .,,;~~~1;U~'a· tabella, con funzione di "espansionen della gamma dei valori hash. La tabella l"ilIlll~~:.~:-:questione pr~nde iI, ~or~e. di Hash Table (HAT). Essa n~n ~a altro ehe fih1lprovvedere un livello dl mdinzzamento mdiretto , secondo 10 schema.di Flgura8.12. ~~i /~~~~~:~,. n rieorso a u~ ese~pio nu~eric~ chia.:isee la ~ion~ della HAT. Supponiamo ill.. t;ll'l{i0;,fll. avere un masSlmo dt 16 pagme virtUall e 4 pagme fislcbe. La IPT cleve avere ,ll~~[ll~~}:~1;t~~i~en5ione 4. Una funzione hash ch~ distribu~sce equilibrata~e.nte gli indi.ei m~ppera. '~~~I:J~':quattro VPN sullo stesso elemento lD 1FT. E dunque posslblle che Ie llste In lPT ~l' ·~~tDUTivino a eonten.e~e ~no a 4 ele.menti, oceup~dola tutta. Se ora si ~terpone una ~.J·-HAT lunga 8 POS1Z10Dl, una funzlone hash equilibrata mapped, al maBSlIIlO due VPN ~¥Ullo 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
4n0or
/'o'ii!'*';Ula lungbezza della HAT. NelJ'arehltettura Power" Vlene usata una tabella HAT ;( '.' ~k:"I.~;:'~:- , " ',l~~:-;'-.·- _ .. ifI"~';-""~'
-;0'::::--,--,---,------::---~, ~{~rt~l:::'-·24C'~ inoltre da.. coosidera,:-e i.1 8~gueD~e
problema. Si .f~cia. riferi~ento. al caso. dl Figu:a. 8.11 e si I!~l:;~~\~~~'::~upponga ora ill. hata ~RU ,mdlc.hl che de~e e5sere sostltUlta Ill. p~na. vtrtuale ~n 8 aDZlche qu~lIa !~~~,,~:,:;-:I.? 9. Se I'elemento 8 vlene lDse~~o neU~ hsta che ~a.rte da 3, togliend:,lo d~a- ~8~a (8,9,7), Ill. hsta l{.6~~?;:5·...,:'':·.~~ma.nente (9,7) avrebbe Ill. poslzlone dl partenza ID 9, mentre Ie pagtne V1rtUali In essa contenute , :{.1ULl$:;:)" ~I mappano in 8. In altre parole, se l'elemento da sostituire e il primo di una ca~ena lunga piu di .,g~it;~,:,uno, Ill. sua ~08t~tuzione e i.l suo inserimen~o in un'a.ltra list.a PD.:ta ~ un'incon~enza.. Cib ,impone :;~ il't;''i--...:~}a. non sostltuzlOne del pnmo elemento dl una. catena lunga PIU di uno. Ma CI~ comporta tl dover , 'I. ~£.~(!iconoacere ae un elemento ~ ii primo della !ista.. A tale scopo si hanno due alternatlV1!l: (a.) aggiungere 'it '-J.-~::::::uno speciale marcamento, oppure (b) organizzare Ill. lista con puntatori in avant! e all'indletro. Nel ;'~ ~1lt~1:~._ ~guito si illustra un esempio di memoria gestita con tabella di pagine invertita (quella del PowerPC) ~ ~4~?4~t!{)~~~·:or~anizzata in modo da minimizzare il carico dovuto alia. scansione delle li8te. ~ j~!1~2lif~1f<-:;~ _5Parlando del PowerPC si vedra. che in numero di elementi in IPT pub essere in rea.lta. proponio~~ll',it;'ilH';) '. J,lale (non pari) a1 numero dl pagine, rna secondo un coefficiente di proporzion&lita. molto basso (cioe . ll\~jl.\,~f,('.:", 'l,ilfl~,fi'·""2"'4 ) , .... " ~d~~~,~(:"' 26,Qu~ta architettura e stata introdotta dall'rBM a fine anni ottanta e ba fatto da progenitrice il!t'!i!Gif)L_ ,dell archltettura PowerPC. :;;1'
:~~i~:··
\ \
t
I (
~ )
I ) )
!. t
I.
I
354
Capitolo 8
IiAT
o r'-----,
I
•
IFT
o 75
I I
r-
..0 97
r::-::::::::::::l FUNztONE
11321
I
..0
32
6'
f-
_I
HASH
"
\
NI
, •
97
k
)
I
I It
I I
•
•
I I I
PTEO
p ~
... -
P1CGO
v 'N
VPNI RPN
r"",:rlon. HASH ,
,
,
•
,
,
• ,
.. "H~
...<)l"
"\"i~
~:~l~~
P1EGn
Fi ura 8.13 Or aniz . ' . . ;.}~l~, L gfu . g .zazlO!~e ~ella .IPT c~n hs~e che S1 sviluppano sempre sulla stessa riga. '';''~~~-' nzlOn.e hash for.DlSce llOd~ce di una riga dl PTE. Una riga di PTE equivale a una lista.. 'I: ,~,:,(~O\l nen~ens(I~~e ~assllU)aLden,a hst,a e necessariamen.te.limitata da! numero di PTE contenuti "",~~; . a rIga lD ~a. a nga vlene p~rcorsa da Slll15tra a destra. Mancando una relazione ,,"~~~f. diretta tra la . .... ,iJ· che RPN. pOSl2lOne del PTE e Ie pag1ne fislche) 11 genenco PTE deve contenere sia VPN .·;:~W~4.., ~
L: .
1
I •
\
"',:~. .r,;::~~,
,~,
Nella tabella HPT (da Hasbed Page Table) di Figura8.13le liste 5i costruiscono . sulle .nghe, se~a blSOgnO. dl pu~tat?ri. La dimensione della' riga rappresenta 1a di. ·;~'.\t~:"'1. n:ensl?ne massuna delle .li~te. L mdlce hash viene ora preso come indiCe di riga. La '<~::1M~lf d . PTE t' '1 .. ;:.:,b)t~~. rIga Vlene percorsa da r:llntstra a destra. Si ha miss se nes VPN. In caso di hit il PTE D " j e l i ' fi ~uno:l con lene 1. " ' / ;;~,' ormsce 1 numero pagma SICa. Rispetto alIa. IPT dl ,.~iti: I.
...•
-,.~ .... ;~.. 'W;.
< ,"',
. ",;~~
.>.;
...
i'("}"
'IV ,.~
.-, .... -..-~'i"-'
:__ ~i.:::;"
La. memoria virtuale
.' ,.,
355
ti:I1l:i11:!>i\ ' III'Jii,,= ~" ;;
~.!, •."
i~~~[~.' ·Figura8.8,26 la HPT e piu rigid a, m~ il meccanismo di scansione eestremamente piu .
~~~~S;:-:: efficiente . 81 notl che la HTP equlvale m un certa senso alIa fuslOne della 1PT con la HAT.
"'W,;v. .
tffJh~("'.
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 e valida 0 no, ~ir':;.:;~ Qvvero se esso e 0 no in lista. Cio consente, durante la dinamica del funzionamento, d.i ;~iWJ~<'~-" esc1udere un PTE da una lista semplicemente agenda su questa indicatore (in questa ;~t1;;";::· sensa la HPT mescola i concetti ~i tabella invertita con quelli di tabella diretta).
\~~~r'
Un ulteriore vantaggio di questa organizzazione della HPT e dovuto aHa conti';S!~L';', guita dei PTE all'interno della memoria, in quanto, in fase di scansione delle liste! cio ~~~~~~\,: comporta un :eloce ricalcolo .dell'i~dirizzo del prossirno PTE. .. ~(rr~Il'::'-, ,In ~aso dl page faul.t e r:ga pI.ena, Pele~en~o da escludere dalla nga Vlene sele.:~~; 'zionato III base alIa tecruca dt gestlOne del nmplazzamento (LRU).
\t:",.g ....... -'" -
:if,i;"':" .. :
" J '>l"'''' hi K:,',;:l'::;. ,"
i8j~~~~: ..,-'
,j~'~f.8A La segmentazione
L~ I ?~;"" ,*',,,"," <":.
-
,,,,,,,
~ ".,.'" '." .".... '"
t~.Jll~:;}'{; Can la segmentazione 10 spazio degli indirizzi di un programma viene suddivis~ in ~t:fit~t:.,,-: ~:~-blocchi che rappresentano parti di programma logicamente correlate tra loro. La seg· :~~~~~;;r,:;'ment~ione corrispollde aHa ~uddi:isione naturale del codice e d.egli oggett~ dell'ela: @~l~i:.;'.·. borazlOne. Can la .segment~zlOne! Ii p~og.rammatore raggruppa, In segmentl separatl lfl~lj,~ ~ e secondo la propna convemenza, partl dl programma che hanno una comune conno~ ,~~~~::,-__ tazione. La suddivisione pili ovvia quella che prevede uno 0 pili segmenti di codice, "~~f.~~t:~: -di -dati e di stack. '7ii~1'" La dimensione dei segmenti non fissa, corrispondendo alIa suddivisione dello ~ttr~i~F',~~ spazio virtuale secondo la convenienza del programmatore (e del compilatore). Un l~t~,~:~~t.,segmento puo quindi avere qualu.nque dimensione in dipendenza d~la scornposizione ,~.~~~f~!t~::,\ a. centl~ala dl ffilghaJa. dl byte, corns~o~~en~l. a ':l~ mter? p~~gramma. I h~ltl aHa J~J~"~<:' ' dlmenslOne sono semphcemente dovutI at hffiltl fiSlCl nelF mdirizzamenta del SIstema, 'i~J~~f:>_ Normalrnente la dimensione massima di un segmento perlomeDo di un ordine di jl'hl.ift~·;;··- grandezza superiore alia dimensione tipica della pagina27 . '~~Y~' Si deve qui rimarcare che, al contrario dei segmenti! Ie pagine hanna dimensione !~:f~~~ fiss~, ~el.tutto. scorre~ata ~alla natura del p~ograrr:ma, ess~ndo ~ss~ dettata cia pure , ()~!1£~',\ ,raglom dl efficlenza cit gestlone della memona e del trasfenrnentI dl I/O. ' '.'i:~~,\~,~:<' '" In un sistema segrnentato! un indirizzo logico si compone di due parti: A~~tt;,:; , '?~~\fJJj:" a) it selettore del segmentoj
I
e
_
e
e
.
. '-· .
~,t1i'~jt::::. J!"."
, (~~~tc ' . b) 10 scostamento all1interno del segmento. Il,t'{
_
'~.~t,~·
La traduzione delPindirizzo avviene secondo (0 schema di FiguraB.14.
1.'fit/;·
. \t,~~t" - 26,~ ~~E sono contigui!. i1 salta '!.~;lf.!#;.: ". -de~~ mdinzzo con una quantltA fissa.,
. \.(t~~;....,;,
!,\f:~ljA, 'lV~'lt1~:. "'~;;" • .~.;.
':i.'"l•
,.
.~':
dalPuno all'a.ltro 'richiede se:mplicemente l'aggiornamento . . . n s~gmento della CPU 80286 puo am~are fino.a.64kbyte, mentre I1 segm~nto.della CPU 80386 puo arnvare a 4 Gbytes, II 386 e I modelh SUCCesS1VI prevedono anche 1a pagma2aone, a valle della. segmenta.zione, con pagine di 4kbyte.
',.J,'
· . '::'",
,. ".'"",1"'
'.,\,!It·';l ,'<"#
356
i!.i!' \.. ·r~j
, -Ii
•
Capitola 8
~'t
"".~ "'\"1::'"
-:'·".If \:",~.,
'·ir.!1
···.Fi~~fl' . ,." ";.~.?\..
. . '; ' k;;;. · ,":&-...:
Indirizzo virluale S<'lleltor<'l di ,,"' ..;.., ento
· "J'"
"::;::H~F;~
Seolllamenlo
,..:?,:
c{):> Indiri:zzo n.leo
Loca'Zlone ..... ,
.... , ........... ''','''.'-,''
..
.': ,-.1):::;, · : ~'~
....
~
• -J:<, _.
, .', -"c." " ,.t~'t!(.j; :, b J".:
:" ·.~i'b' -.,!",'
De"crtttore dl
S.
•
l
BlIse seamento
Segmento
':,>A'F ·:/:,:::tJi,. .. ''''' i~'.:j:{.i::'
,
l
• "'_Im,_, • N""
.' ..'.)
t-~·..;
," - ~j;'j.~
Tabella dei
'.,' (tf~: · ..;;.
..
Segmenli.':·~i,,=' .~ ·... ?11t.5r.,
Figura 8.14 Meccanismo di traduzione degli indirizzi logici in indirizzi fisici nei sistemC/{~t~ segmentati. L'identificatore 0 selettore di segmento punta a un elemento (descrittore di' '::fJ~ segmento) alPinteroo d.i una tabella.. n descrittore di segmento, fornjsce l'indirizZQ di base·.r1..y~~ del s.egm~nto che>. so~~ato aIlo scostamento cia Pindirizzo fisico.. II ~es.c:it~or: di segment(j,:~~~ contlene mformazlOfil Circa la lunghezza del segroento stesso e orca t dintti d\ accesso. . :., :_~L ...... . ~
.,:<:\~:
,'i.:':i~~~, " ,,..,.).1):,
· ·J.;j:,f~'f';
Dal punto di vista delle operazioni di I/O la segmentazione e di per se meno effi··~:jl~: dente della paginazione. La perdita di efficienza e dovuta al fatto che viene trasferito \\~: un iotero segmento 180 cui dimensione risulta in genere del tutto scorrelata rispetto'~;'~~\' alia dimensione d~ blocchi-~a.ti trasferiti dalle o~erazioni. ~i I/O. . .\;".11i'~~ In realta, la mmare efficlenza della segmentazlOne emltIgata da questl due fatton:',{%,,;ri: .... ',·~\;jW! ' ••<;..
;.'.. i~
• un segmento contiene generalmente codice strett80mente autoreferenzi8ole; Ie ope_-',~;(~~ razioni intersegmento sana abbastanza rare, corrispondendo a cambiarnenti der-,~t~ cantesto di, esecuzione e dunque 1a probabilita. di restare entro il segmento corrente·'~~~ , ,.:"'t>!it,,,'l; e tendenzlalmente e1evata; ~ ;'<,:,f~1'~ ,, .'..1..,.f<--"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 un~'.{1J~r unico segmento di codice, ridurra. Ie operazioni di I/O relative al codice 801 solo ~.':~ caricamento (ancorche pesante) deU'intero segmento. _:,:.'.:;;;~~.,
paginazjo~e?~tl
Dal punta di vista della protezione la segmentazione e superiore aHa in quanta essa segue i criteri naturali di separazione dei differenti moduli di program-'~/:f~j rna. Per 1~ stesso moti:,o,_~a segmentazione fCl:cilita 1'uso in .comune (sharing) delle ~~-~I, stesso codlce .da p~te dl pm procedure. . . : ':.\V~r Un1ultenore differenza rlspetto alia pagmazlOne e 180 scarnparsa del TLB, sostt·' •,~:~,\?;1:. ",,'.J, tuito da un numero ridotto di registri di cache. Per fissare Ie idee, se supponiamo·-f4~'r.; che 1a nostra macchina preveda che in un data momenta siano attivi at massima tre,',}~, segmenti (codice, dati e stack), per la natura della segrnentazione, e sufficiente te:- ;'d~~~, nere i selettori dei segmenti in tre distinti registri e associare a ciascuno di essi un S~' registro ill cache (in pratica un'estensione del registro stesso) che punti alla base del>~!\, segmento in memoria. In pratica, si tratterebbe d.i una sorta di T~B determinlstico, :.;;~\~ con tante posizioni quanti sono i segmenti gestiti dalla macchina. E questa il modo ·,~':;t1i1 di funzionare della memoria segmentata dei sistemi Intel dal.286 in poi. "~':;~~ll
,-'.-'lt1lF.:,
).
. 'Ie·· ,
~i;fr
,~,
~.,r-;:
...
. .
i~~:'La memoria. virtuale 357 ~~.,,",'" _------~----------------=:::.:==:.:c::=--==---'----=-=-~t··-
,!{~{
:i~1;:;': ','".
Anche 1a segmentazione puo dare luogo a spreco di memoria, infatti i segmenti :;:w.~~~:{;~o'oceupano regioni contigue di lunghezza variabile di memoria centrale. Dopa un certo ~~~~t,:. num ero di a.11ocazioni-deallocazioni si formano zone di memoria non utilizzate tra f~I;~~.;t: $egffi~nto e segmento, che potrebb~ro ri~elarsi ~~ivid~almente tr?ppo .piccol~ per .~~;l~f:\ ;essere usate, anche se la somma degh Spazl non utlhzzatl potrebbe nsultare cosplcua. ,r~~lr:(~~~;;,;:, n fenomeno viene detta frammentazione esterna e rappresenta uno degli inconvenienti l~Tlr~t;f~ d~Jla segmentazion~. n ,ricompatta~nto dell.a ~emoria ~bera, eseguito ~'occor:e~~ r4.';?i;J, dal sistema operatlvo, e una soluzlOne sconslgliata per il suo alto casto tn termlID di W~~~~r:,". tempo spreeato e di complieazioni aggiuntive.
;
'
.\II'I'!f,·~; , 1""',\,'1'" '11 "~1 ~:jljf,~J.:'· .
~~I't}~r·:I~~l~e architetture combinano i due scherni di traduzione degli indirizzi, cercando ~
,~;JIII'J,Il,"i:~ sfruttarne Ie caratteristiche rnigliori: ;li ,,1:t:i'1
... . .
~,;~~~1i;. :':.:'. la segmentazione per suddividere eODvenientemente il programma in base alIa 'lo1!'h:-f!""t•• ' li~:Wt··~~!~·.: . "sua struttura nello spazio virluale; ., ~ \'11:\1" '
·~ll~~~;:L:;. ',~r~f~f:'l~:/:
. .,
i~~~!I:,:_
.
La paginazione per garantire una efficiente gestione della memoria e per eliminare la fr~mentazlOne esterna - OVVlamente ncompare 1a frammentazlOne mterna.
PiiI avanti viene descritta in dettaglio la gestione della memoria segmentata e ~J;~r:I'l~~·.;':'paglOata del ffilcroprocesson Intel 80386 e suCCesSlVl. ~~'r.:,:~." - . ;,~1~~~.::·,,;" : r;~~~'~t''''f(,'' .... , '~i~1>":·,· .'1I "t",
8 •6 Approfondimenti sulla gestione della memoria ,0·jl'>I:.',., .
I••• t
~,~ ,M;:K~
. .·,;:' ,
.. .'I~r 1'....'i~ 'i:~,J. " ' I ''!<~' . . ' .. ;~:'
....
','
~
~
.-.~'-'
~;!, .-.:,-.:
cornspondenza dl un page fault, della gestlOne della pagmazlOne e della segmentazlone bf~t:#,:.~' ecc. E giunto il momenta di approfondire alcune delle questioni finora toccate appena If,!'i\~~~";: di passaggio. .iI:~'W ! '"i'~ ,
1\1',,1.. ..' '......... ,".''''•. ,".~" ... « "\~"',
;(li:r~-:~l:,'
iiff;\!".,:,8.6.1 ~~~~i11·:.', "·~II~r,··:, .. ,... ;~W'~~. s.~¢~~·:T
.
.
.
Quando la CPU genera un indirizzo che determina un page fault si ha una sequenza di operazioni come quella satta riportata, .
0
1;!~~~f1t.
\
I
I_ I
)
]-
un segment fault?8
. 1sSi ricorda. cbe un fa.ult a!tro non! che una interruzione (Del gergo della materia si preferisce , ~Y~iJ}.':'~": parlare di eccezione) interna, causata dalla. MMU che non trova. in memorial'informazione indirizzata ~ ;$.~~f>' .(nell? spazio degli indirizzi logici). L'interruzio.ne viene raccolta dal sistema operativo, attraverso il ~¥f.ll~~;>,~, .. suo mternJpt ~a~dler, ovvero attraverso 10. speclfico page/'egment fault handler. Risulta evidente cbe 1 1.-;",~il:1',\,:" questa parte dl slstema opera.tivo deve risiedere permanentemente in memoria centrale. Di questo si ~~;i~~ parla piu diffusamente nel Paragrafo 8.6.3.
,
I
.
,';..
~$r~i "
\
GestlOue della pagmazlOue e della segmeutazlOue
r;J~I~I,t'I':': '., :;~,.t:t:.,
I.
virtuale
~~~~f~W:r~ell~parte ehe p:ecede, si espesso parlat~ del sistema ~per~tivo, del suo intervent.o in
"','
•
\ .
(~~~:;r8.5 Segmentazione e paginazione
il
•
,.
~~:l".
,~"~,,,!I
I l
I )~
358
I
Capitola 8 ,'
..
~
~~
"~'!I
,"''I ,.:Iii'• ,!. .'~
1. A seguito del fault, il sistema operativo cleve determinare la posizione della pa~ ::~; 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 ne~,,)j~l'f I
1
I \
cessario che la re1ativa infor~azione sia stata scritta ~ PMT ~l'atto ?~Il'avvio:~~1 del processo che ha causato II fault, A tale scopo, e necessano stablhre delle convenzioni per il compil~tore, per illinker e per i programmi di gestione dell'a(;~r~l~ locazione della memoria d.i massa, in modo tale che all'atto del caricamento de(~~; 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 natura1mente\'~~i' scritti alratto del caricamento. ,(;";;~~~
',.m·
"
!i·
~
~~
rM:_
~~
.
,
'
:
~
{i
~~:
,·
ft
~}
'1 ~~
~! ~; . .'''-''' La soluzione d.i tenere nelle posizioni d.i PMT l'indirizzo su memoria di massa>~,411; t~ delle pagine nOD presenti in memoria centrale sembra quella pili naturale, in ":l~~' ; quanta uniforma il trattamento delle pagine non presenti a quello delle pagiJ1.~)r-1r-;:, jL presenti. Non e tuttavia obbligatorio scrivere in PMT l'indirizzo delle pagine':ii~ I~ non presenti , infatti il sistema operative (anche per scrivere questi indirizzi i~~:*.;.; "i PMT al]'atto dell'avvio del processo) deve comunque individuare Ie posizioni del1eJi1f~'1 ", pagine sulla memoria d.i massa attraverso Ie informazioni relative all'aIlocazione':'(:~i ~[ 29 dello s~azio diSC0 . n man~enimento degli indirizzi s~ disco per Ie pagine non. ~~~~\ "~' presentl comporta un maggIor lavoro alJlatto dell'avvlo del programma e' una '~13r ~ risposta piu rapida in caso di fault. '. ~.'t¥r~~: ~1 \ ~,Iti:i' -' , ii',':J'" ,il'!; 2. Affinche la pagina possa essere caricata enecessaria che sia disponibile una pagina :ll~ii, : L ~ fisica libera. E percio necessario che iI sistema operativo gestisca attraverso un~ ':~'~~i 1 lista l'insieme delle paglie vuote. Si pub decidere che tale lista non venga rnai ::t~~i. IJ del tut~o s",!o~ata, nel senso. ch.e, se il nume:o di p~gine in lista. s.cende a.l d~:~Il~r , 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. ' .~}~t1R '.~~.
f
I f
I
.'~~"'J J
\
I I I
In ogni casc, e possibile che per caricare la nuova pagina occorra scegliere una'.:~:ri;.~ vittima tra Ie presenti. Come, accennato in precedenza, ci sono diversi criteri per ,'~~OO' 130 scelta. Di essi si parla pili approfonditamente nel Paragrafo 8.6.2. 5e la pagina. ~~' vittim30 e stata modific3ota a])ora, prima di caricare nella corrispondente pagina ;·~~r.I' fisica la nuova pagina cia disco, e necessario copiare su disco il contenuto della!:i~/ pagina vittima. :·,~I,~~: '~J,&i" ' " " ',kf~J 3. Complesslvamente il trattamento dl un fault comporta tempJ alquanto lunghl - SI ::;;t';, v~da la. ~abe~a8.1. Ovviamente,. non ha nessun s~nso sosp,ende.re t~tt~ l'attivita.":~£li;" dl macchina lIJ,.attesa -che 1a pagma 0 segmento siano statl carlcatl e 11 processo "1~lJ 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 £f.~~~ una lista dei processi in stato eli attesa (del verificarsi di un evento30 ), passando 't!~t. in esecuzione un processo nello state di pronto. "fJiJ~
'.'~'::~1t$: "''''~(~
\
'l1i~\ 29lnformazioni di questo gene-;e devono comunque essere tenute .daJ sistema. operativO, ,~,:;!:~" indipendentemente dalJa memoria virtuale. ' 301n questa caso l'evento atteso e I'avvenuto caricamento della pagina indirizzata "<'f"
"'<'!1
~.',1'.
II
"I .'" ~l" '
, ,<'1,
'-
'
~
:
i
l
,
~
'
'1.'1'.:, '
!i~
m'" j'j"l'~~'
, Vll~ua '~I e La memona
359
__-----------------------.::::.c='---------
-~~~.:. ii'i~'ll }l'.l~~· fi
'·~lf;.b'...
"',,"1.·... :I;,,~. ···,·~'.,',I i;";,.", " .,
~.;·,u
~
~~"'~!'~
_.. ;.;r~..!, ,-
~~:,'N.,···"
..
::;'.r.-!!:'~
,','.
.~".,..,.,
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 •
.
" ,",J'~I"."" ',p",.\~ ..... ,
~~",,,,,,,,,'
.
4. Quando la pagina e stata caricata33 , il sistema operativo ha la responsabilita. di :'k~~i~r:f:'i">: ',".: aggiornare la PMT. Uinserimento in TLB e di solita un compito della logica della ·;r.-·~if~", PU t:1i:v,~•. ~-·-, '_ C . }tt~t~S:~,,~; ~'" Si faccia attenzione al. fatto :he un. page(segment fault determ~a un'~terruzione 1:1~)1 :,'_ -nel mezzo dell'esecuzlOne d1 una lstruZlOne. Per portare tale lstruzlOne a corn~~i'lo'~t\ '. .pimento e necessaria rieostruire 1e condizioni di stato della macchina. La cosa !!~)~,~ir;~\, non e tanto semplice quando la macchina opera in pipeline, perche anche altre ;!~~ir~,,' istruzioni si trovano a essere parziaLmente eseguite all'atto dell'interruzione. Un ~~_:t~{<:,;.' modo 'per ~ro~tare il problema consiste nel trattax:e 1a p~peline in questa modo: ;,r!14M~ .. ' (a) Ie IstruZlOnI che precedono quella che ha determmato il fault vengono portate L\J;f,.::.!' a termine; (b) l'istruzione che ba determinato il fault e quelle che la seguono in pi~~~~lt~;-,.' ,,~",' ?eline vengono annullate e viene salvato il PC ~ell'istruzione che ha determinato i\'.~,~, II fault. ,:~;:""":"- '.
i5:{"g:\;
~[i\~tl{"',,,
Nei sistemi con paginazione apiil livelli, o".':ero nei sistemi segmentati e paginati~ ';;J~~~t;: un fault comporta qualche comphcazlone In pm. Infattl, riferendocl per esemplO aJ l~~~;t.' sistemi con tabelle delle pagine multilivello e ipotizzando che 130 tabella di primo Iivello 1;t~~~L. ': sia coml!-nq~e semp~e in memoria, si puc avere .un primo ~ault a ca~sa della. mancanza '~l~1";?,~ di una (pagma cornspondente a una) tabella dl secondo hvello, CUI segue un fault per L~~£ftm~",maDcanzadella pagina logica. . ~~~~~\,>: Un problema ~a1ogo si pr~senta in quei ~istemi ch~ p:evedono istruzi0!li di ~cr: ~;~~'1,;: );'imento da memOrIa a memona.. Per ~emplO, 1a farnJgli~ .8086 prevede lStrUZlOnI JWilfJ:~i¥~~,::come ~OV~B~ che spostano un(a stnnga dl). b.y.t~ da una poslzlone.a :m'.al.traj l,e stesse ,.J~~\p;\_6perazlOru dl PUSH e POP prevedono 1a posslbillta che l'operando 8t1a In memona e non ~1~'::~, solo nei regis~ri., ~e ne J'operando. sorgente , ne quello destina:zione sono presenti ~J1~t:\ s.uccede che l'mdmzzamento del pnmo operando detenruna un pnmo fault. Concluso J@'~~7.~:::., iI trattamen~o ~i t~e fault, ~'istruzione viene di nu~vo eseguita, generando. un second.o '~[~;&~~~:';;)ault. IstruzlOm dl questa tJpo vengono trattate dlrettamente senza ultenore com ph~~:::·l.caz!one aUa logica ~ella mac:china~4. N~turalme~te, nel c~o specifieo, e ~ecess,ario '~}i~":\-"t:;·,che quando l'esecuzlOne dell'lstruzlOne nprende, sla·la pagma contenente l'lstruzlone :J'.\l1k~>j~1n!1:, che Ie due paO"ine contenenti operando sorgente e destinazione sia in memoria centrale.
;'.
?i
.
"J5~/j:'"r . . f:!;q.
..
il~ 8.6.2
l~'"
O'
Algoritmi di rimpiazzamento
.'
,I~;;}',~~ algoritme di rimpiazzamento (replacement policy), e Wla regola in base aIle quali,
~r.~;;: ~ in presen~a di un page fault viene scelta la vittima. Prima di eliscutere gli algoritmi ,~~~1ii~;':f,: d.i ,.rimpiazzamento conviene fornire alcuni concetti generali. l~t· ~J'r;. :..' .. ',,._
1hl''''",
","i'!i~'(,-;;,,;:sc-,- c--,c-o--,-c-o-C-o- - -
II d I"
d II I ' d '
h
d
'
'iit.jl"j\llj:;{,,-':· , 1, conf ro~ I ques a SltuazlOne con que a e nmpla.zzamento e e mee I cae e, ave, mvece, :~~~i:,; tutto e fatto In hardware
~.~r/·"_" 33La. fine del caricamento e un evento segnalato di solito attraverso un'interruzione al sistema ~~Jfi>:5;:,Jif~' operatlvo, gencrata dal processo di gestione del trasferimento, Si deve ipotizzare cbe anche qucsto '~1~;r("!· processo II parte del sistema·operativo e che e880 esegue in modo asincrono. <9l'mP;~:: 34 Per tale motivo questo genere di istruzioni e detto normally restartable.
..":' '~~'" ilt
"
,
l; :l'>~
.
.'
360
Capitola 8
Anzitutto it rimpiazzamento avviene di norma su richiesta (on demand). Le pagme vengoDo rimpiazzate solo quando c'e necessita. di averle in memoria centrale, ovvero in presenza di fault. Viene caricata la pagina che ha determinate il fault. . All 'avviam~nto di uD: pro,cesso .e t~oricamente possibiIe avere in memoria la sola pagma che contlene Ie pnme IstruZlOnJ del programma} lasciando che i1 caricamento
.~::~~~:,
.
<~~~;: ,-"1'~?:i ...'J.X ;
Alcum 818temi operattVl 1 assumendo che dar.e una pagma sola m fase iniziale parti a ;':J,~h; una ~equenza di fault tropp~ ?nerosa, c:aricano. ~ .numero iniziale .di pagine 1 nell'as...,.:~il;.:, sunZlOne che questo abbas51 11 tasso dl fault mlzlale 34 . Sempre III fase iniziale il"~W~~: sistema o?erativo potrebbe assegnare a un dato processo un numero di pagine pari a1 ':;p~~ suo worbng set presunto (si veda piu avanti). ':~~~~. Un'ultima questione si riferisce alia possibilita. per il sistema operativo di rim- <.~~~~I~:: piaz~are Ie p~gine i~ modo globale 0 lo~ale. ~ ~mpiazz~ento globale e queUo che ,;t~{: 5cegh~ la pagma (0 il s~gmento) tra tutti quelh m memona. Con questa tecnica ]'oc- ':·.'.;]~~ cupazlOne della memona da parte del processo che genera fault tende a creseere. Con ::~jEI'''' il rimpiazzamento locale 130 vittima viene scelta tra le pagine assegnate al processo·")ri~ .. che genera il fault. E evidente che in questa caso it sistema operativo deve stabilire :~;~N!, ~e c'e ~ massimo DUIDero di pagine ehe viene assegnato a un processo, far crescer:e I OCcup~lone fino a ~uel punto e, succeS5ivam~nte} impe~re Pulteriore crescita. A ,/~~ meno di n~n. ~are SUbltO.~ pro~es.so t.utte Ie pagme che eornspondono al suo massimo 1 .)f"!'*,g, nella fase ~1Z1al~, la p~htl~a ~1 .nm~tazzamentoe necessariamente globale. ,,~;!~ Alcum degh algontmi dl nmplazzamento sono stati gia discussi in . £ . t ,:~i""1~ii n,enmen 0 c<,·" aIle rnem?ri~ cache. I concetti restano gli st~si ~ q~indi non verranno ripetuti. Vale :.:.:Ji~' la pe?a dl nmarcare che mentre per Ie cache II nmptazzamento deve essere fatto aUa .·<:~t~,l :eloclta pili alta possibile e quindi deve essere ridotto al minimo per poterlo realizzare '\;I':4 In hardw~r:, nel ~o della.memoria virtuale, i~ rim~iazzamentodi una pagina procede :~~l~;;, alia ~e~oclta del s1ste~a cil I/O - qualche. ordme dl grandezza superiore rispetto aHa :'D~W.'~: veloclta ~ella memona centrale. Come gla. osservato c'e tutto il tempo che ci vuole ',.i:lfJ.: per esegmre elaborati algoritmi di individuazione della pagina vittima.~~};~'l~
j
•
./!¥-"I
. .
'.
,
Rzmpta:zame~to a caso (RAND). E. la Soluzl0n.e piu ovvia che richiede solo 1a generazlOne di un numero a caso. Se 1 programrTIl non avessero Iocalita e cioe se i .programmi non most~ass~ro 1a pr.op~ieta. pili c?n~inc~nte a favore dell~ memoria vutuale e della gerarchia dl memona in genere, II runplazzamento a caso andrebbe ben~. E se:npre possib~le tro~e qualehe pubblieazione dove vengono riportati dati s~er:z::tent~ s~lla. banta del nmpiazzamento a caso. Si tratta J ovviamente, di dati nfentI a SltuazlOfil speeialissime.
'.il~~
',;~~
""\~1i
:,:{ll
.. :.-1
':,:}~
,':~;
';~-r
:.,iti
Rimpiazzamento della pagina piu stagionata (FIFO). Si tratta di tenere traccia ;:'~: dell'ordine d1ingresso delle pagine in memoria centrale. La cosa e estremamente sempUce, basta prevedere una lista, it cui eleroento di testa e il numero della pagina fisica in cui da piu tempo non viene fatta una sostituzione, mentre 1a coda e it numero ..,::~"tdella 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 :...:~~;
.:::Ji
',~4~
34.Si osservi che cit> non e vero 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
,::':;I"
.- ·"'l •• ~ ~'.--"}
::t!:""
~"~1~
:""~"i
','
,~~'
·:·'1""
<.1f:; , '..
. " .1:1'
., ".'. . ,\
~.~.,
:;.r~;~
'::1'-"1.
)
)It!~ .:
·1"'"" " ok.~-'1l~/.·': ~~,';
l. . 'I". ,",r-.
,
,~
.. ~
La memoria virtuale
"'~' ,\,~ ,\. "
;J
361
~:. ,il"'" ~'"'\''' .,' ,
, ,.~\I:,:~ ..
·~~t~·~
.:~t~t\·: 'c'e neSSUD motivo per dire che la pagina pili stagionata e quella che merita di essere
II
.';~;:~:\~;,~~t:'
rimpiazzata. : {L~.~-': - Rimpiazzamento della pagina non usata do piu tempo (LRU). E l'algoritmo classico. i ,n}:l\\:,,: '. Anche qui.oecorre una li~taJ rna il suo aggiornamento ri~ed.e c~e ~i ten~a'~raccia dei ; ::~,;\. ~: : riferimentl. In PMT ogm elemento presenta un campo dl! bIt (il bIt A di Flgura8.3),
elemento. In occaslone dl un fault 0 dl ~n numero predefimto di fault, il siStema , ;:;~':~\;; " operativo puo legg,ere i bit .di ~vvenuto riferimento ~ella PMT e aggiornare la lista in : ,.",:.','::':;. conseguenza. OVVlamente 11 bIt cleve anehe essere nportato a O. ~ <.,( .... " Si noti che alcuni sistemi non hanno una MMU che automaticamente porta a 1 . ~;:,:r~~:~· il bit di riferimento. In tal casola gestione dell'algoritmo grava maggiormente sui :·:i'i:":':':'-" software. Nel caso del VAX 1 Parchitettura prevedeva un bit di pagina valida/non:,;;~:.>: valida per. ciascun e~ement~ di PMT. A pa:rte la denominazio.ne e. a parte i~ fatto ~l :~;~1);'.:~., ehe tale .bIt non ve01~a agglor~ato ~utom3tlcamente.dalla ~~U della macchm~l la '; ·:t(j:~-;: sua funz10ne era pratlcamente Identlca a quella del bit A dl Figura8.3. L'algontmo ~'tfJ;? . :· LRU per la macchina VAX viene realizzato in questo modo. A intervalli regolari 1 ' ~;;~1:;~¢.~,: nel corso del trattamento di un fault., it sistema ~per:3tivo le?ge il bit di validi~a.e ~o !~A~t;,';i:' t~atta come nel caso precedente ve~~ t~atta:to ~. bIt A. ~l conseguenza tuttI 1 bit ~ ~~.;{~~~~«': nsultano ~Ia ?ne o. Se or~ lao pagma vl~ne lDdlnzz~t3o, SI ha ~ fc:~t ~ cau~a ?el ,' t~:(~}t::.. fatt? che lmdtcatore. e ~ a (mdlcando. pagIna n?n valida). Ma pOlche il btt ~ l~dlca ~, ~~~:;~<'" pagm~ presente, per II slste~a ?pe~atl':'o lao p.agma e pr~ente:}1 page fault 51 nso!ve i! h~'.~.;:,; semphcemente nel portare a 1 11 bIt eli vahdlta. In pratlca, I mtervento automatlCO ,,, "l·' , d 11 MMU' .. d [ ill . , . di I/O d '. ~~:t~i;'~' ea.. t: SOStltwtO . a ~n p~g.e a t, C~ll non consegue trasLenrnento ,e a lK :itjif~'."~' u~ ag~lOrnamento del blt di vahdtta. ~er VIa software. . . 41;,t::~~~/ ,~tr;:pt~zzamento sull? base ·del Workt~g Set rWSR). n. working set di ~.n processo ,:!:~~\t ~.llDsieme deU~ pagme ~e esso usa In. un tnte~o ~ tempo .4t. PlU .grande e :?'~#!',7::·:' 1mtervallo eODSIderato 1 pm grand~ e ovvl.amente 11 ~orking set. ~Iss3oto un mterva~o :.~ .~~+ 4t un da~o processo a:ra. un p~o~no wor~g set. n SIstema o~eratIVo} te?-endo traccl~ ~!~ff:·,.~, delle. pagme .usate nel SUCCesSIvl ~t da c~ascun processo} e m grade dl. adattarne 11 ~f~~~;;<. v:or.king set. m b~e ~ll'uso eff:ttlvo. che il proces~o stess0.r~ delle pagme. ~~~ un ~ ~jM~1 ~lImle ~lgontmo, lPO~1ZZ~do ~ partue da un working set IDlDlmo (per scelta) IDlzlale} i~ W·~,l.?" it workmg set medesuno 51 agglUsta col passare del tempo. ll,;~~~~~;" Pre~izione .Pe1etta (!'P) .. Non e ~ algoritmo reale. La p.r~diz:i~ne. petfet.ta e Pef1~ ~·ti:":l fettlva sostltuzlOne genera,tl ~ello spazl0 v1rt~ale. I.pO.tlzz~do di tenerne traccla} 51 potrebbe costrwre a r~ .,;~.~. postenon Ia. sequenza ott1ma dl nmplazzamento. D confronto con tale sequenza con ~(;~.".', quella dei rimpiazzamenti effettivamente avutisi per effetto della politica in uso e una :~i\;Ji}' misura della bonta. di quest1ultima.
j
! ,
::;"",': '.
I
.,
ti,
ii ·,~,5·':.{',.: ;':;h,.:,
--S
?;l: :~:.~."j/"
;$! ').~. . ~~ ;:)~~,.:, "f I~"rr:':,:,
~ J,"'(. ." •••• , •• ,
~.;
~
• '.;
'.'
.:-- ;;,":'
. ,., .\,
;~iV.-.j, if,,' •."", '".•
\ I
I ! \
] 1
I
c:e
i';,,' .;'
i"~ ': "',
'"
.Come ultima cosa convie~e ripar.lare del fatto che Ie pagine mod!ficate richiedono pratlcamente un tempo dO~PlO per II tr~ttamento del ~ag~ fault, ':ll quanto, prima dell~ lettu:a ~ella. nuova pagma! da ~erIvere 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 devono essere sentte.
\
3lSGli anglosassoni parlano di reference string.
~
362
I
.':
Capitolo 8
,~
"1 . ~mu
""'
t~
,,1=:
. Se l~ p~gina modificata non viene ~critta su~ito, e necessaria i~dividuare u~laltra ·.~:i~. ~ pagm~ v.lttlma.. Se an~e questa e modrficata filllsce nel bu~er I ~no a che non 51 treva- ::..'j,~ ~~ una Vlttuna non modificata. Solo a quel punto ha luogo 11 cancamento della nuova .'.::;i ~\ pagina. La scrittura delle pagine Bulla memoria eli massa sara gestita in background, !)!~ i1 in modo cia occupare, per quanta possibile, i tempi morti nel sistema di I/O delle .l~J' 1~ pagine. Si capisce che, con questa tecnica risulta molto conveniente disporre di una -n~ j~ list. di pagine libere; la pagina cbe e stata ,critta finisce in questa lista. Ovviament~:~~i, '; la lista deve sempre contenere Wl nurnero dl pagme superIore a un rnllllmo prefissato, ':;;~ ': '.~~~,;J.; "~
I I
.·'15i;I:11 ~2
····'l;;ili
\
8.6.3 Occupazione della memoria
- 1
-I -, \
I
-I
-
\
1 •
,I
·\I ·
"
\
·i I
.r,~j~~I~ f ',C~flli\~
'.1
Nel momenta in cui una macchina viene avviata36 , la logica 5i porta in uno stato di'J~~ I partenza che non. corrisponde a queUo. di gestione della memoria virtuale" In partic~:~j~. : lare, 5uccede che il Program Counter Vlene portato a puntare a una zona dl ROM dove ,··;.:W~; . stanno Ie parti di programma cbe ,volgono la funzione di inizializzazione dell'inter~ .:,~~. ! sIstema. ':.~":Yi~m ~ L'inizializzazione del sistema comporta alcuni test sulle parti della macchina37 , la :-;~l~ ~ prep~azione ~el vettore delle int~ruzio~, iI, coman?o di ~utti ~ dispositi~i progran:. ~'fH{i' ~ mabih, come il controllore delle UlterruZIom (se eslste)1 il cancamento m memona.,~'1i ' ~, dinamica Ie parti di sistema opera.tivo che resteranno residenti, la preparazione delle' tift, : aree dati e dell'eventuale sta.ck per il sistema operativo stesso. . ';'~":~~~ , . Consideriamo il problema delle parti di sistema operativo che dovranno restarej;~' : resldentl lD permanenza m memOrIa. Non Cl rifenamo qUI aJ trattl dl COdIce In ROM,",~~ R ~.e,. c~n. l'~sclusio~e.di ~ualche gestore d.i ~as5o livello v~ene eseguito. solo i~ .rase d~ :~i? InlZIahzzazlOne. CI rifenamo alIa parte dl SIstema operatIVQ - la qUasI totalIta - ch~ ~r-...,_.. , viene caricata' cia ;:~ , all'atto dell'lDlZlalizz3ZlOne: 1 vetton dl mterruzlOue, 1 geston delle mterrUZlOnl, una .·~f~!1i
(
.~"j~~1~~~ :';::}J"\'
36Messa' sotto tensione 0 Reset. , ,. , ' 7 3 Tipico e il contro110 del buon funzl.onamento delle memone dmamlche, svolte come confronto tra ;, "~jt, dato Jette e dato p~eceden~emeDte s c n t t o . . ' ' ':;~~'l 38ij g~tor~ dell'm~erruzlOne.potreb~e essere.anche.m ROM, ovvero potr~b~e essere m ~OM 11.-:-::~~~ tratto di cOC:Uce che nco~osce l:mte~zlOne e ~OI passa II c~ntr?"o alia parte dl slste,ma ope~atlvo che /t~f,;e responsabI1e della gestlOne di tutto il marchmgegno del nmplazzamento della pagma. ChlameremO '-!,:,.,.l Questa parte del software di base della macchina fault handler. :\{ 1,,'.#,-' :,t,,)/;
, ':\1" .. .~,
."
".~".
"'~"
':;'lI"'"
r;:-',:' .
:1 ;(; ", 1 ,: "Il'i
::~!t!i~: .__-----------'------------CL::::..;.m=e=m=o::ri::.:..v::lr=t"u"."I"e_-,3-,6-,-3 \,;1,1'(,·
.'JiII' , ,- ,
u.""':4:r-'
'r.lf'~-'
",
~U};F".'
~1f}< eventuale
tabella radice della PMT, la lista delle pagine libere, la lista de~le pagine ~:r.' in scrittura, tutte le eventuali altre liste e strutture dati di cui necessita 11 slstema \~!~r,."", operativo per poter fUDzionare.
i1;;:,:~'
~f!F:·~.'''·
~M~:'':
;~";' '8.7 Esempio di memoria paginata: :·f!!r;':.r'· 68030
~}?~:~'~:'
2.r.;::-\; t -
• la memona del
ffilcroprocessore
I~,",
f~~!~~~~a ~emor.ia virtuale del micro' 68030 costituisce un esempio malto istfl;lttivo di me,ti~~/ ,mona pagmata.
1
IJi~~~'::
II dispositivo MC68030 e un microprocessore a 32 bit can arcrutettura di tipo ::~~~~i~~.'pipeline. E appars? nella sec~nda meta degli anni otta~ta, q~ale rnembro della f~i ... ~~:"'::.glia 68000 {CK86], lntrodotta calla Motorola a fine degli anm settanta. n capostlplte !~~~J;\ di questa famiglia, il dispositivo MC68000 era una CPU a 16 bit di cui venne .ncbe ~~~?~.~<. prodotta una verSlOne, It 68008) con bus .esterno a 8 bIt. Al 68000, segmrono :1 68010, ~~~t;:'~'n 68020, iI 68030 e it 68040. A meta anm novanta 1a Motorola ha Jntrod~tto II 68060, ~Fi;lf/\.tu~tavia) da qualc~e anna prima, 1'impegn? di questa industria e ~tato. rIvolto preva~ ,~t~tr%c;Jentemente allo sVlluppo del PowerPC, assleme a IBM e Apple. L a:rchltettur~ ~8000 :,~,' ;~~~,:\ non e stata comunque del tutto abbapdonata, anche se e stata parzlalrnente ndlretta '.~ :~b~,"verso il mondo dei micI:ocontrollori. Per quanta si riferisce in particolare al 68030, :iiiil'r',;'questa CPU ha ,uperato la soglia del nuovo secolo e continua a essere presente nei R~~··\;,hstllll Motorola. I1 modelIe dl punta lavora a una frequenza eli 50MHz e Vlene dato '~~l;tp~r una capacita elaborativa di 18 M1PS39,.. , . ,':.~~t~::,~~' La famiglia 68000 1 oitre a essere stata Implegata nel McIntosh dl Apple, trove, 'I~~~:~agli inizi degli anill ottanta (prima dell'avvento delle maccQine RlSC), largo impiego 1~~~;0~'-come unita centrale di workstation operanti sotto it sistema operativQ UNIX. Una delle : ~{~f;'~~,ragioni di tal.e successo fu pr~pri~ l'org~izza.zione d~a mem?:i~ - ~dirizzamento 1~~{tj[£1;:. !illeare e gestlOne della memona vIrtuale ill forma pagmata a plU livelh. .~ • ,"Jf!;~:', 11 68030 e stato iI primo microprocessore della. serie 68000 a presentare una MMU ,:}'k~~~;!};, integrata sullo stesso Chip. In pratica, la MMU del 68030 corrisponde, ~ dispositivo tW~·.WL>.68851 impiegato con il modello precedente40 • OItre alia MMU, 1a CPU mtegra anche :, ~~&~/ una cache, divisa in cache istruzioni e cache dati. seppure di dimensioni estremamente ~~.. '~~~',' ridotte. Lo spazio degli indirizzi, sia logici che fisici e di 4 Gbyte. La memoria virtuale j?i'{,e gestita secondo 10 schema della paginazione su richiesta (demand paging): 1e pagine r~!t~i~-" di memoria vengono allocate al programma solo al momento in cui si rende necessaria ;1,~t.~:.:-,1a lora presenza. Sono previsti due livelli di privilegio, detti livello di SupenJisore e ,t:~~y~~;)iveUo di Utente. l~' 'ilX:::',
(-
¥
~.~:.',·--;';;;'::ll-6::8::0::3::0-v::ie-n-e-.-D-c::h-e-v-e-n::du-to:--an-c7he nella versione seoZ3: MMU. Questa versione, continua ad .::~Uf;V'" a.ver succ~sso neJ campo delle ~pplic~zi~ni embedded, tra cui una molto significativa e quella ~e~le ~r~;: ,:_, sta~pantl laser. P~endo .dal Sl.to pnnclpale della Motorola, {http://IlVV,.motorola. com~ e possl~lle
~~~t~C: r~ggl~ngere la pagma dedlcata mteramente al 68030 e scancare manuall e documentazlOne teclllCa ijf~.'" dlvanogenere. . . . . , . . M~:>i', 40n 68~Sl era una ,MM~ estern a In grado dl gestl.re ,uno s~azto vlrtua.le dl 4 Gbyte. La. ffilsura. r !:!.;j! ,,' della paglna. era selezloDa.bJie l da programma, da. un lDSleme di otto valon che vanDO da 256 byte a. :r ~ '-'f,~> 32 kbyte [Mot88]. Jr;J;,,:,,':' ~iJ\.f..,:
. .'. ....
~/.
364
Capitolo 8
l
;
:1
,
WlCROSEQUEH.
CODA'Dl ISTRmlOHI
~"
.'
'"
i
'. •,
CONTROu.o
CI
BUS DEGU lHDI1IllZ1 iSTRUIIOl'l1
,u, !NDlRll1.1
r
"""
r
II "'
'-'1 11
=
Tl.ll
, I,1
I
BUS _IDATI
UNITA' 01
,
ESECUZIONE
"-
--',~("._ ~.;:."
·
BUS OEOU INDIRIZ'Z.1 DEI DATI
."'. Ji.'$J
",· '""~'lI' ~:.~~~~
CO
;, , jit~~'
Figura ~.15 :I?ia~amma a blocc~ ·deIPMC68030. CI. e CD ra~pr~senta:n0 rispettivam~n~e'.":;1~'~' i la cache lStruZl~D;l e.l~ c.ache da~;I: TTO e ~l sana I .due reglStn usatl pe.r lao traduzlOoe 'l:f~:' t1"aSpllrente degh mdlrtzzl. TLB e 11 1Tan,,zatlon Looka.nde Buffer. ,,'7:)O~~ ,,\Ii," ·"".t",~, "'-
I,
,",' '·;'1f.1~ ,'.
"
8.7,1 Traduzione degli indirizzi
'U'Ir.~'
".J(,"'.
";~
'." -.":
.. ',,'.,'.'....
,~' ,..1:;.'
In Figura8.15 viene mostrata l'organizzazione del 68030, In particolare sono eViden~<~.I~\, z~ate Ie tre p~i interne alIa CPU che intervengono nella traduzione deU'indiriZZOda,3:·~~6~.. vlrtuale a fiS1CO: . . .,: '~,1ft~
· h•
• la cache dati (CD) e la cache istruzioni (CI) -
.mbedue di 256 byte;
'"
,
'-;':.1;1, II 'Ill'
• il TLB -
··'iI ~
..
di 22 posizioni;
~'...
,;~
. , -'" "
, , •• ,,~.
K
. . . '~}}!M, ~.t~· .," .
• Due registri, TTO e TTl, detti registri trasparenti.
, .'--"r'.'
. III
"""'"~'''
n processo di traduzione deg~i indirizzi ein 4 p.assi, di cui i primi t~e si compiono,,·.;:[*.·.,
parallelo, entro la CPU e colllvolgono Ie partl 80pra elencate (F.gura8.16).
D,.;§: ,
quarto passe consiste nella ricerca nella tabella delle pagine e viene eseguito solo se la ..~':.'.~~ 1 traduzione non pu~ essere, effettua~a attraverso i contenuti delle entita sopra descritte. "~~~(r$ I quattro pa.sSl sono 1 seguentl. ;,:,;}~~ ,,,~., , . '.;- •.~
-.~;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), Ovv~amente le due cache sana di tipo virtuale, . ,'·~~~: nel sensa che i TAG sono indirizzi virtuali mentre i DATI sono i corrispondenti . '::t~'
.
.. .
..
.
."
,
. .
~dir1ZZ;l ~SICl. ~e la ncerca ~n cache ha suc.cesso,. non c e blsogno deU~ pro~edura dt traduzlOne e 11 processo 51 conclude, altnmentl procede attraverso 1 pasSI sotto
"'~!ff#
'i~.:~
·
,·1.... · ~':" '
,1,0'1;:, '
'JI~' '.
'¢.'.,::' ':'
.
"~,, ,;.
i'
\
,
Jt:{':', . -
~"
',"
~;!f~~-::
La memoria virtuale
365
l":~j11";,;:.f'~. qi~.~
: -
)
;a\~),r~i€,r!/· .
:ii:1'i)"'W\~'~"': , It' ~~ ',. ,., 1<;" ,j,~".,
IHDlRI'ZZO LOGICO (VTRTUAJ.t)
~~"ilJl;"'" ""'-''''J f " .. ,, .
",.,
'~"~""";' ""f~:" .~,:.,
i(@~'~>j.';;~·'
'.,iOO' ...~' ,. " ,."~•. 1 •,; .fir.;"":' ,.",.,.~.:,~.:.~ .. ·I.~ jf,. 'I·-, "".f~',r~, I'") 0"'1\,:" "". '
'..);11 ."
"
~"'*~~.
I '".
,:!Bj~:,::,:j,~.'
'.
ITO, TIl
.. ,;:I.\?r.iii;
~~lt~k)~ ;.~:<-,.".
: !HDllUZ10 Dl PAeTHA
'J .. ".
" I,1 ~-~:••.I~·':.~,
I
TLB
"::'l>'~'r'~', '~y,1i"
R
a
I,'
.
0
'r.'?' e'",;:w. .. K.: ....,, 'l . . , ,:.. i
IHSUCCESSO
lHSUCCESSO
I
"~_
.• "1
\
c
'T",w.,. '
i'
,!~~~"j":l"
,
e',:r ••
\
PMT
,.,',t"il.:~ .., ,"'"'h' WI{i",Hi!,;· ,.,:" ~"1
'~\~""J:':'," " ''':.t ,f".,:,,
·'l~,..;.,;t
il:~:'~~;;:." 'Figura 8.16
! i~:~·,'nell'MC68030.
.
IH01RIIIO DI PAGINA
Schema dei quattro passi che costituiscono la traduzione dell'indirizzo logico
;,.I"Jl&.l,~:,.,·.
:li~{;~~~ ".:
descritti. In caso di operazioni di scrittura, per come e gestita la cache CD, si rende comunque necessaria la traduzione dell'indirizzo 41 .
~~~S·t}-.:~.~ !.:,'.~,l~, .
.t_N~.]i:I" " ! .....,'.',• \ .. ,"'.,"'\'";
4!,,1~~~:(. ::',"
",\~.l:"N"';~", 'i'JI,:l'~~""!" .''''''!>-''.:', I'tk'*~ I"." ....
.,
'l'";'~Z:''':)',,..,,''
. 7~\~;>
f~~~\~:
1;~~';~f::;:; '~,;:
t1,~ ..
,,>.r,,"
>
"
2. 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.
, 3.
l·i~ ~::r~:
· ~~, • . ,<
,
-
ttrolRttlO m PACDll
•"
'
il....J .' " ,".
l
1lmtU1101f!:/DA'l'O
CACHE
'.
~
.
"~,. '~i;:t(.:·. . "l.d~··', '~' .... ",
;
",,~.I;t?,'J,"'" " ".' ••;'
,'4
'
',I, ,v':'",
."...·.'· ,.... .1,:" • 'ij'~' '",
.
',.. :,..... t'll'
K
..'t'" H~:l~~, 'f ilf,l' 1';"" . ~ril~h."
1f1:
~~~l
' ~~\ j';~t;,\i.:~
$~ht~:?
,~ ~"",,,,,," ·":,f,· ,~~ "lI':o~;t.
.
:1~ 1(~. I
,~.i':?i
~'" " ~i'~\t<.~,
'\h<~ ··L'-. "",.".. or.
e strutturata ad albero.
I nodi dell'al-
'
I
t I
)-
hero 80no rappre,entati daBe (,otto) tabelle che compongono la PMT..La profondita
e pari
. .
a 5. In Figura8.17 viene riportata una ~abella .
.
•
-
. .
~~ c~.he. CD opera In ~odo. wnte tro~9h e q~m~.h .SI re~de com.unque necessaria 1a traduzlone· degh mdlflZZl per poter scnvere lD memona. Sugh bit In 8cnttura vlene aggiornata anche 1a cache; in ~aso di miss, 1a cache vien~ ag~ornata 8e sta operand~ in ~odo. write allocote, altrimenti (modo wnte non-allocate) CD non Vlene mteressata dall'operazlOne di scnttura.
:~.V ...'
~ :I~i~'.~:
·•
La tabella di traduzione degli indirizzi (PMT)
41
't~ f1"~~1;
#
8,7,2 La tabella dl traduzlOne degh mdlrlZZI
rnaSsima possibile dell'albero
~~~l7J~:'·
I.
. . . . .. .
'.
I
I !.
J.
,',' •. I.•~(i~$..-""; ' ',lii~;.""·''-:'
,:' ~~::."
Se nessuno dei' confronti precedenti da esito positivo, la ricerca procede in PMT. La ricerca puc produrre un page fault Be la pagina non e presente in memoria. In ogni casol una volta che 1a ricerca completata 5enza errore, I'MMU inserisce nel TLB la coppia indirizzo logico-indirizzo fisico .
e
''''''~'' ,',
" ~,.< "W" • ."
,! ~r~~~~\:,'
L'indirizzo logico (parte alta) viene ricercato in TLB i in caso di ricerca positiv3, TLB. fornisce l'i~dirizzo di pagina fisica. TLB e gestito in modalita completamente associativa.
1
}-
\\l
366
I I
;~~j
.
'::'~
CapItola 8
.' ,.,.,.
.... ~. ~~
,~.~.
, .' l'
•<;'1:J 'e'
.;<;'.~li
":. '.,~
··t,:
,. "
.
~
: "..
','
1,:
".
Come osservato in precedenza (efr. 8.2.4)/ l'organizzazione tabellare a r;!t ~ve.~ p~rmet~e di ~enere in niem?ria solo le parti di PMT utili aHa traduzione degli ,J!.. ~ 1~~ mdirizzl usatl nell'rntervallo spazlo-temporale corrente. :,:./iJ<. .~ n nodo radice dell'aJbero epuntato tramite un registro di CPU detto Root Pointer.::·~~ ,\~:fr (RP). I nodi foglie dell'albero sana Ie tabelle che contengono i descrittori di pagina :;~I.. i:~ (fisiea), ov~ero i puntatori alle pagine fisiche e Ie inforn;tazio~ di stat~ neees.sarie per 'j·!£t;" J'$ la lorD g:S~lO~:. Quest~ tabelle vengo~o dette tab:llE! ?~ pagma. I nodi che ,51, trovano ':;f~(!~,' Delle POSlZI0nI llltermedle della gerarch1a sana COStltUltI dalle tabelle puntatnc~, In esse ·~~,~m ;1J;t ';"'_!l:i!, ;':"(ii
au
4livelli42 •
,;;m
\
,~
I."'
~"
I progettisti hanno previsto che sia possibile, quando oceorra, evitare di percorrere ',:';i~~ ~~~ tutta la gerarchia dell'albero. A tale scopo nelle tabelle puntatrici possono trovarsi >i;/ij- ' ,~~~
\
?agina, ovve,ro i, puntatori alle pagine fisiche, Tali descrittori'r~i:~~~ ~engono ~ettl descntton early ternunatlon, "::;i;i>' /If , OVV1~~nte., ~a ~trut,t~a gerarchica di ~M!.presup~one ~na congr~erit~ interpre-~,£%~ _ ':r. t~lO~e_ degh u:dmzZllogIcl. D for~at~ dell'lD?lrlzz? 10g1CO ~ lll~strat~ III Flgura8·17:+~1 '~~ 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. ~e _';:~1 :I~ ~nee FC son? caratt~ristichedei micropro~essori della, fami~li~ 68000; e~se ~odifican,?~~\~g ~~I~i, il contesto di. ,esecuz~one del pro~amm,a,(11 co.nt~to m CUI, Vlene e5~~lt,a Istruzione ;~r~ , ","' correJ?~e). PI~ specificatamente l I COdiCl, Fe mdicano, se 1attuale lIldUlZZO genera- ~,:?:f~ ': , to dall eseCUZlOne del programma appartlene a110 SpazlO del programma utente l alIa ";?~, "i: spazio dei dati utente l aIlo spazio del programma supervisore, ovvero allo spazio dei ::~~ ~ ~~ d~~i d~l. su:pe~ore .. In conclus~one, i codici di funzione,individuano differenti spazi :~:l::I, *r dl mdirizzl. SI rntwsce che eS~1 hanno ~n. ruolo molto lm?Ortan~e nella ,protezion~.ff~l ff.t (efr.8.7.5). Per non appesantrre l'esposlZlOne del meccamsmo dl traduzlOne attra- /41. ~ !if verso PMT, la discussione sui codici di funzione viene posposta al paragrafo dedicato:~;~~';~ mt alia protezione, ~:;~, ·~ ~ d il FC" I'·ill di nzzo . , ddi· . . I· ABC D ;'k;-;il!;' ,,: tt;J .J.J.3Scuran 0 campo t: Stl VISO nel campl , , l , e, :::~;?'. ~ OFFS.E}T. La dimensione di questi campi non predefinita, bensl determinata attra- ?'i.1 't~ verso il conten\!to del re~st~o di c~iltrollo della traduzione, TC, descritto pili avant~ -\~~'jt, :) (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 v~ore presente ne! campo. OFFSET fornisce 10 :::iJ~~",. ~~ scostamento alllmterno della pagrna fiSlca. n processo d1 tradUZlOne attraverso PMT _:",:~~, ,1it~ e sempre illustrato in FiguraS.17. Esso si svolge secondo i seguenti passi: :,/~i :
anche dei
\ r
I \
I I
I
\
,I
d~crittor~ di
e
''''I]' " qt"'. !':\ raggi unta mediante il:~~i~("", .{ , ,';g,~:~ 'i
\
1. La tabella radice dell'albero (tabella di livello A) Vlene contenuto del registro RP.
<.~jl :~
. I" -, ":, ~I'''~ -f 2, S?mm~d 0, al cont eou t 0 d ,·I RP il con t eou t 0 d eI campo A. d e11" md'~!1Z~O ,ogleD, , '~r.1J.tt .~ Vlene Identificato un descnttore entro Ia tabella. punta alla (base della) tabella di livello B, .-
n descnttore
COS1 selezlOnato -,
4:ln
quinto. livello de.riva. d,al
~a.~tGl
cbe in
real~~
j tre bit del ,F~netion ,Code, (Fe) vanDO
consider~ti
c~me parte IDtegra.nt~ dell'lDdtnzzo ~ ~eterm1l1
1\
,
- ;,,"
,
;
:'-'~
In
,~,..,~, '~ ,:::,p~~, ~~ ~,r~:~
'it.
}f
: ',,;-":1<);'"
i?
_f?~ :f
:'.;~'~, -
. ' - ..:';t'i'~ : "Non c'e niente di strano Del non considerare il campo Fe. infatti, sempre attraverso un bit del . '!t~ X registro Te, e possibile imporre alla MMU di non tenerne conto. Di conseguenza, i prossimi esempi -- >~ifl~ } corrispondoDo a situazioni del tutto reall. "i\'!~' ,'i' · R\;!i
,
'.;-"-'M
·,-~,~1.P'
:\
."'"
·.;-, .. ~
~
~
:~'i-::
:i>··, 4.~~:~'.
La memoria. virtuale
367
-----------------------.:~.::::::::::==-c:::.:.::=----
,r·
"".,~
. . ' .' .
,., j .
..,,,,,-. ,
:-;:'.,-""- '" ",",/-, ", .
t~(',:
~t>
~rr: r;S~'"
.
a
Z\l~l
@J1'1_lalclcl
~~~ ,'"
Slrultura deU'i.ndiri-zzo virluale
$>~'
Tabelle punlatricl
m!t "
t~,~~;.:,' ii;P' ',,-
~"
RP r--
',): ,-,
'I'
R;'~~'
I
CFFSET
'
L-
~,::"
UVCWl • ~
I
~
,
UYI:U.O I
LA ~!!!'Jlt-,'r-T uvw.o c
~~:;""
~~t-r,:~=j
f~i';::: ~~~~.~~~~L:::::~~---.:':"L
.~ff.~t:-,' ,~l!Scrlt.ton ~r~:,;:'
!i'l¥':'" ~.r'~: ,:;:-:,'
-,-
di t.abella
Descrlttore di pll.gina
~.
L_
~~D'" nlIlC.
OFFSET
PMT
'1C}I(':'
.
'
'
,
"
,>~1:'~", Figura 8.17 Schema della struttura ad albero ?ella PM,T. La ~ensl~ne del ca~pI dell 1U:.~';.~'f'· dirizzo virtuale e determinata da! contenuto di un regtSuo eli macchina denommato Te, ~f~;: registro di contralla della traduziane, Nella schema manca il Hvella corrispandente a.i codici r~::::."
RP
t' ~t{·
A.
ftffl i , . tt t 'I t~.'U:: . 3. Analogamente al passe pre~ed~~te, son:maD~o ~ p':l~tatore appena? enu 0 1 ~~;t.· contenuto del campo B dell'mdmzzo 10g1CO, Vlene lDdlVldu~to un descr~tt?re nella J~,,,,,".. LL tabella di Hvello B' esso rappresenta la base della succeSSlYa tabella dl hvello C. ~~ti' '
~"~:f;:': '-'" . .' . ," ' . ~~,~:~\",' ,1: In modo analogo, si attraversano 1 lIvelli pIll bassI della gerarchia di PMT. ~~'{ ...
~('"''''
~~;';:~·',
5. Infine, il descrittore di pagina contenuto nella tabella di pili basso livello, contiene l'~ndirizzo della pagina fisica, Sommando all'indirizzo della pagina fisiea il conte-
:~;:~> nuto del campo OFFSET, si ottiene l'indirizzo della locazione in memoria. ,\>:I!. , ;,~; .. .... {~!;e';';~:, ' ', , ,.. , .' . i~~~Y~,:.' Nella deSCnZ1?ne pre~edente 51 e assunto c~e I alb~r? aV~5se tuttI 1 l~~elh posslblh, ~~;:::;': In realta e possibll~ s.~e~lfic~e un nurnero ~nore dl lIvelh (?no ,a 0) , Del. res~o, f$:~·t",· anche in presenza dl pIll hvelh l esempre posslblle trovare descntton early termmatwn ~~:.~".; atri ' ~t~:f.~',' eotro le tabelle punt Cl. ~'~-'
~~~~~~. ~
In Flgura8.18 viene dato un esernpio di PMT a du~ soli li:~lli, Si ~oti ehe leo taf.i.J:.!~" - belle ai diversi livelli possono essere di differente dimenslOne, ClO confensee maggIOre f~;;::,:::'. ftessibilita, rna implica che il sistema opera~ivo deve essere in grado di allocare tabelle ?-.'f/.~~;:,' di dimensioni differenti da quelle della pagIna,
-{it~,,>.
:~?~":.c '
Xift..C '
};~~:'" 'f;.·'~::~.1 i'I03 .",
~'"
l'tJ '
~I': :f'fi'i-~'"
'''';.
~~
,-
Un numero di livelli e specifica.to altraversO il registro TC di cui si parla piu estesamente nel seguito,
,
36B
Capitola 8
~ INDIRIZZO
A (12 bit) ,B (10 bit) ,OFFSET (10 ~')
OOAOl.AOO 1000000001110100000001101 E
xxxxxxxxxx[
,
X
:-----1 ' I ,
ROOT POINTER
, , , ,
TABELLA OJ
UVEUO A
,
--' ,
INCRESSO OOE:
PUNTATORE ALLA PAGrNA W
INCRESSO
"t'
'~'l'~' "i;~i.'f2
006
. ' "'n
, ..,..;~'(\"
;"::!;';.Io\
l
. t~;t _~,-,!fI!,'., '( .:i-I,-,
• 1
01,t
"I,~
c·l .....
-"','" ' ';"1....."1. .:',:>J'
,
•.
.
1
I
,:Cl"~'.
')1' j. .',..•J' .
< ·;~l . ..:.
I
TABELLE D I · LrvEll.O B
~:?~, ~:";~'~f
•.
Figura 8.18 Esempio di a.lbero di traduzione. L'a.lbero e a d li lr I C . A B '(:i~ PI OFFSET sonG rispettivamente di 12 10 e 10 bit per cui la tabe~: d~el' I'll A":"d 4 k'b e .q~ .' "lIve0 t: 1 yte 1,. , . que11a di hvello B di 1 kbyte. Pure Ie pagine fisiche 50no di I kb t II t t d I A' !,~: " d' , Y e. can enu 0 e campo 'r ~ d eII m 1rlZZO logico (HOOE), sommato aJ contenuto del root pOI'nter sele ' d 'tt :~·,··J ' ziona un escn ore " , aIIIvello A dell'albero di traduzione, I1 descrittore selezionato punta all b d' t b II ''1;1,' _ eli Hvella B. In questo caso essendo la gerarchia a due soli livelli Ie t ball a5e Sa e an".ll d · /Iveulnla 1 t b II di ' II • . • a eel 0 sono::l, 1 ,e a e e pagma.. co~tenuto del campo B (H006) mdividua un descrittore contenente :"1 " 11 puntatore aHa pagma fislca. . ;' .~f.'Vi.,
.
.
.
.'.
'
"~ ]~oP.!
.:.~:,J~
eli eSanlmare ~ ~~tag~1 offerti darla strutturazione a livelli della ·::"ir;t~ PM! 10 nferunen~o alia sua fiesslbllIta. e nguardo al problema della eondivisione delle.t.::~~~~t pagme da parte di piiJ processi. . . '.. ;:~.(\
V:a1e .Ia pena
::.,;A
Ta~ell~
'.
; :d~r:
~"'~~J.
non .resi~enti In Figur~8:19 viene mostra~a una PMT con ta~elle n~n '~(.j~ resldentl, e resldent1 (1a tabella n di livello B). ·Non e mfatti necessaria che l'intero ";::I' ~lbero dl ,tra~uzione del ~~k att~vo sia subito presente nella memoria, basta che -,iX.l~ In m~mona Stano presentl Ie pa~ne che presu~bilmente verranno indirizzate nel ';'1.1, : prossuno futuro. n concetto cornsponde al coslddetto working set del programma .~~··t [Den68], [DS72],
[8T74], [DS78], ovvero alPin,ieme di pagine che consentono una ,-i)1i
accett~btle eseCUZlOne del programma. In Flgura8.19 V1ene presentato un -albero di ':""~ traduZlOne solo parzialmente presente in memoria. _ ':'~;:!~
-, ;'\"~ '.,l.lf;
;f;~:
'j'" • Ij'.'
111;;,
__ ,,,,~, ,':1. ..
'~~."-': '
',.,~. , .... \..~
-
;,~~tf.~_:-:~:--__~
---,:L:a:..m:::e:m::o::rc.:ia:....:vc.:irt:.:.::u:::al:::e:-_3=-6=-9c
,"
;<;l~'~,': '~"
-'
~'iN'
Ili'll.m:'.r,,>''-: :-·~,rd~\·' .
I l
~)i~"""'-J
~ii:t;!"J;'",
,""'""jl~,',., U,W
"j-".-
;.{:",~l:.tY-~
A
:..
r.~;ldFW%!,\':_·' U~DIR1ZZ0
. '.:-'"
':'·.I';:fj<'~'r,i'i"
DOAD lADa
B
''If.~~ ;;~
A
6
~!>;;~".~;:.
9Itkl'!'f~':i"
' ':::i;.'i;;",:r: .': RP '''~J1i '~"'" ,"" ,,:
i~~~~~-:"
~~~1~~:':--~ itj,/""I}":'~' ,0:;:~~ A{:/~
",''',,,,
'.Rf~~;;i3i';f.!?' ~~~
,.
'
'~l''''''''< -' \'i~r,(il.·· !rill~\~it;;··· .
","
: fr,;l_~.;:'"
tl~~t~;'~~'
INGRESSO aOA
.
~
11t a
.
..f: '
1
------l
:'lfhl'~~,'i"
"..
UVELLO B
TABElLA. m
UVEW) B
(PAGlNA NON
,
I
PRESENTE)
i
I~l~ tP
1
:~:~:~. Figura 8.19 Esempio di albero di traduzione con tabelle non residenti. L'albero
. :~~.~'~·:··li.velli, .~"~~,>:.. d
e a due
Se campo DT del descrittore della tabella. di livello B contien.e il codice- n~n valido si ' , ' II I 'I ' t ,', d d ' , ;1-::.~·,i~.. etermma un ecceZlOne , a a qua e 1 SiS ema operatlvo PUu nspon ere portan 0 m memona \J:;l I;'>.' I dell'alb ero assente. S"I notl ch e se 'II campo DT ill 'dica d ' I'd ' J.I" .~~f.Yi~;( " a parte ~cnttore non va 1 0, 1 , ~'0 ,~~,' . b' did . . . . dal ' , , _ '\~;,!~~WF: restantl It e esCrtttore possono essere lmplegatl ststema operatlvo per memonzzare l "?}~~~!':) l'indirizzo/la posizione su memoria di massa della tabella (in questa casa) non residente.
1.. ':~
"
t
I \ 1
DI
I
li*~ty ((i&:~iI-'-";:::S -:: . ?' 7 ,.,:,' .
TABEILA n DI
I
TABELLE DI L1VElLO A
",It';',.·'
~Slr~;.:· 'it:W)"~
DELLA PACLNA
'
1,-------,-,_ I
" .. r:Bl~j'-
lNDLRI7.Z0
008
'
\IT • 1""'UDO
i'~";y,,," ,$:",-: /.l:,,~_. . . ,iI/:'lr.!·· _; . l~
' INCRESSO
1
nt • l1t
;"~~;l~~:"-~' ·,).Jhf.,' ~ I~',o;~";;:~,:.: .. ' ~. ~
(PAGINA NON PRESENTE)
.
~l.1.t1tj~·:r·· '.'
'i l'~
UVEW) B
trf-.-ll<'IAUOO --
li..1 tl~I,~~\ '. }~ "111-' ';1, _•• - • "'I'~"
DI
J
.'-
,"r·,'·~'~
TABEllA 0
, I ,
I
r·,..~ '" ,'.
I
I
-C=:=:=:::Jt-o "
X
:-----l
·'r;:ll;;.!!!.:;;:;-' ' '!'!j' /,' (, :~ .- .,
OFFSET
joooooooo 10101 0000000I10! xxxxxxxxxxl
·,~/,~~~,r·.;~
':"~"
~
I ! \
~"f.';,:,
H~t, it ;~.,
, "'~~~'~>'.'
!!: )~i,~~;t~.·:· Condivisione
I
Aii
1
delle tabelle da parte di piu task Pagine a tabelle puntatrici ~~, "~;.s:f." po~ono esse:e condi,?sa tra.pi~ proc~si collocando i punta~ri ~a ta~ell.a ~ondivisa ~ij'~f~~~~fr:f,:':~i:' nell ~Ibero ,d~ traduZI?ne del ~~erentl task. Le. tabell~ a ~l~e.1h su~enon nspetto a tr"J l1£;j!~: : quelh re~at~vl aUe ?agme. con~lV1se consentono aJ. task. di utllizz.are 1area camune can ~~~~~t. c. permessl .cit protezlOoe dIvers!. .. . . . .. .. . , \~, l]tr;L",_. In FIgura 8.20 due ~ask condlvldono llarea dl metn:0na 1ew mdirizzl sono tradottl :.~ :;;/~;ir. att~ave,r~o la t~bella a1 hvello ~. ~ tc:sk A ~OD pub s.cn~e.re .nell'~ea.con~visal ~ task .n: ~~i~ :.~ B SI. 81 ass.ervI che l'area eondlV1sa e raggmota da mdirizzl IOglcl dlversl per claseuD ~t \ M1t~;:: task.
,
'~l' :H~~if .-
~'i .~t,l'·'"
:~',~ ,;~1~t:,'_' Tipi di descrittori in PMT Per i descrittori sono previsti due tipi di formate: ti~; :~-F'~,;;t.:,' lungo e eorto, corrispondenti l rispettivamente , a 64 bit (due long word) e 32 bit (una i~j:;i~:~i, long word), La disponibilita di due formati damaggiore f1essibUta, In Figura8,21 ,i ~~1 :;~~'~-:"..' nporta come esempio un descnttore dl pagma 10 formato lungo. ~~" ~~~~~:' Brevemente, si illustra il significato dei campi,
~
;t
I~.:',!(t ~~l',"l', ';:: ,
:~ '- 1li~fi\~';,:
f
370
.
,~)
Capitolo 8
,~,;i
"~" · ""."
.I
,"" ·"'I'· '~;',
f f
A
INDIRIZZO
B
OOAO lAOO [0000000010101 00000001101
,
,
I
..~ "< ,', r.
'~·
I
,'
\
00'
I
v'
'11
. ~'
.~::~~.' "!a ,:':'ij, .. ./rl,(i., .._.n
~'~,.
',
"'ij' ' " ~d ", ·~
,"-';
I
I
I
":'i~rJ, ;J!'I /lJ:, . .~~J'i, , ""."·
I
"~', . II ,<,!' '\ ," " '" 'I, .: -:J"i':i:,' ,I·'~ ".~",
TABEll.E DI UVE1LO B DEL TASK A
-.1''''> . • '."
..., ' . Y'"
.'
'I~ . !r.I' .
"~"
I I
WP DISASS.
I
I
"
-
lNDtRlZZO DEUA PACINI., FlS!CA
POSIZ,06
:,.J.. ,..-il]
;Il
\
I -'./:,
. ,,~\~~
" , ,I'~' i<"
1"}.
~
'!
1;
,""'" h ':.'!l!.4!: ~l
(PROTEZlONE SCRlTIURA ATTrvATA DAL TASK ,0\)
11 I;J.~ , ~>
I,
I
Ii
..;
~ ,'Jl~'
CONDIV[SA 01. A E B
II
-" '~
"
~!'t'l'
I
)Ji
fABEIl.E Dl UVEL.LO B DEL TASK B
, iJi',:,u ,,;t/W
TABEIJ.E: Dl UVELLO A DEL TASt<8
1
,i;oI·.
:.'
·'.F
,
TABElll: 01 UVEL.LO A DEL TASK A
I I
'I"
'hJ;
'" """"'"
I
"
., ;
~
POSIZION!
.'
",. "-
~
, ,
\
,
'I
x
:-----l ' ,
RP
~
xx:o:xxxxxxl
,
1
' ~ .~
OFFSET
,:ar.CI
, ~-"
:$ri
.t
:JY; . ·t
traduzio~e che usa tabelle .condivise.. ~ punta alia ~ase, ·~~r~*·' r dell'albero del task correntemente lD esecuZlone. I due task A e B condivldono la medeslma ~.'~~ . ~ pagina attraverso i due percorsi indieati. La pagina e protetta in scrittura per il task A e :,~~~, t
\
Figura 8.20 Esempio di albero di.
I
non protetta per il task
:.- r.'~,,{
B.
'"
\:i; , "!j1,
: -ill_'
31
l~IS
031
~
STATO
1
87
,'h ~~ '~ '~y I
D
',';1.;0"1",
!tlDIRIZZO 01 PACIIlA
_
...7.'ll:-
,,
\
:';i"f.
l
?~~f-
'
i;:\~
LI.LLLI.IIIIIIIIII ,
.)~~~~
' 8 21 F '(f ) I F 19ura. onna.to dId e escn'ttare
(satto) tabella i descrittori devono essere tutti dello stesso formato.
\
,I
.,i'~':
,._~'
• S - Identifica una tabella
\
•
I
~;~~~.
1'" • U - Indica che il descrittore e stato raggiunto nel corso di una ricerca. In una: ,~~~] "~,4 .. tabella di descrittori dj pagina, tale bit indica che lao pagina corrispondente al .. "~ ."" descrittore estata raggiunta. In una tabella puntatrice einveee posta per indicare .;...', ' . ;~J~P che stato usato il puntatore in esso eontenuto durante la ricerea in tabella. .~..
e
I
l~
'.....:~u
":ti'~j
una pagina cui puo aceedere solo un programma : :;),/ eseguito a Iivello del supervisore, ' "::~~~:' cr . (Cache Inhibit) Inibisce' l'impiego della cache per quella pagina, In al tre "',"~;;~' ' ;-~'{. parole il contenulo della pagina non trasportabile in cache, 0
e
• M - Indica che la pagina e stata modificata.
' '-;
f
",n,\,-'"
'~h: . \\' ,-," ~,,":"
.t\.. ',,<-.':" ):..t:'Il'~
i ,;*,~
La memoria. viTtuaie
·!<'jd·' "....,·c- ,
""""" ·"T.·.,y",·.' ':. "i~'~'
.wp -(
fl",~_;':,'e
. .': 'I\\) " ~ ~ .'7:~:".
":li~";'''''.' .
~ ~",;-
Write Protect) Indica 1a protezione in serittura, ovvero che non eeonsentito
~~".
." ~'""',,' ,. . -"',
371
at programma. di modificare la. locazione indirizzata.
' ·"l·u~,,", . " r,_._, .. , " ~ •..•. ,. • < DT - Idenlifica il tipo di descritlore (Descriptor Type), Sono previsti 4 differenti ,"••,.J .~'",.,........ . •.' ,. "Rt'
"
tipi di deserittore e cioe
.f'"·:'l".'''· ~ ""' '
. ',"' """' .i$~.-.
;,-' ~ ~", r" ....,." ..•<,., ~~;".,;
Descrittori di pagina (DT = 1) I normali descrittori di pagina' sono conte·
.• ,(· 'i"'''a-
1~.,~,
'.'t:"·
",'-,:
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.
a~~~i:' ..' <:> .' c
.'.t,. ~,;;,:,"' ,
,.""_' ""k ~tt.\; .,'
;~'
!t-d;i/.i:.!·
I".'P\'~""
·'' ;:\l;.ol;' I,;~._,~., \'I.~,t,-" ", - .'. ,,''::',j''.i,'''.'', ::,,,. "".
,
,
Descrittori non volidi (DT = 0) P05sono essere presenti a ogni livello del·
'
·~'!'f:~'<:~f'r, ,·"'1' , "'f'.""."
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.
',,>:."JI " ........
I
"'~';J:'" ~i~~,l.\~."
i .• ~",
~ •.• ~. l
'
1""' ,!'i,:1,",'" E""":' .:l",.,. -p.."..
l;~,:
~f. ;-'~"
'
, ..
!').~1"ijo.)')·
;""lh-';~."i":.
h .!';),i'!...•. "<<4",
' ..
l\:j'~lr1\.r;, ~'.
1;:9i~'k~":" >l'~jl1,:'
$..'t.';;l,' "r"~;' ritt,) <:.,
t:-t.1.t.l . .1 t.t,t~~~",:",
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
~
r~~~;;:: ;
relativo all'indice nella tabella, Ie informazioni di stato, inclusive delle informazioni 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),
~~l;;~~~t ,.
..:
t.f;;Ii¥,::~; ll!t;~i:r/:'.' ~~;'I_;''l",'
1111.~"'1",s, ... ~;;;,.
'
.
'~iltl'" 'I:'~-'~'" . "'il;'~'"
~ I
..
'__ ~:' ..'
l£!ii,:~,.", 8,7,3 II TLB
f."~'!.-:.;
';~~'~~I!~W:'
45 presenta 22 posizioni eompletamente associative e l'lr~·h,.:", 11 Translation Lookaside BujJer .r~~'~h~l"
'!J~',' e gestito iI bit . di .l~~t";:.',:·, .., con polilica . ('(pseudo) LRU, A tal fine , F'per ogni voce ) 1viene ' a lusalo l '~~:~;.: vahdlta e un altro blt mterno, non mostrato m 19ura8.22 re ahvo a sua stona.
-.' '- ,~7
ili~ff.tX-''': ~fi£$~"'"
~\ 7',... , ~f<
"K'" .ll~ ill<' .• 'I; ~
Z8
U
U
0' I Fe
.
,'l" •
C
INDIRlZ20 LaGleo
I lm
TAG
)'(i.~'" ,• ~;",,' ~f;I''-"" P!':i: ·ff
2728 25 24 23
P
0
INOlRIZ20 FISICO
I
DATO
•
~:~'~"I{ Figura 8.22 For-mato di una. voce in TLB. '.~\~i-I, ~/' ",'
~J;!;§"···'t'···'
It~~~::::',
ha eo~e TAG l'indirizzo l~gieo e .co~e ~~TO l~indirizz? fisico; ~l.f.""::i" nitre ad alcum bit dl stato (Flgura8.22). A parte I campI di IOdmzzo, 1restantl campI K'l",' h 'I I ' iii f~r-t~: anno 1 seguen e SIgn cato:
r~J\'"
,
1~I'l'i·, ~i.f ;.'~;~:} I,.:>,
Ciaseuna.p~izi.one
-
tt:,.. .
. '" , ';;;Il ,
'~ ~:
..~
')
~~
,t."
312'
,'if'" ~
Capitolo 8
.1~. ~~ ;1, ~, ,r"
1 ;f
-
i';~~ ;~
';'1";'"
• V - Bit eli validita.
,~r.·"
\.
,.
"~'.~ .~ .~.; '.."'-i~ ~i;. , .~ •. , :I... .' ':
• B • Errore di bus. Segnala se durante la ricerca in PMT che ha portato alia costituzione della voce in PMT, stato incontrato un descrittore non valido, una ,"\", • E . violazione delliveIlo utente/supervisore 0 una violazione dellimite 46 . n bit viene :I'ill asserito anche a causa di un miss in TLB: il miss provoca unJeecezione a cui segue JJ~t ~ la ricerca in PMT, a conclusione della quale viene costruita la corrispondente (nuova) voce in TLB, can B asserito. A questo punto la CPU riprova l'accesso at TLB usando il medesimo indirizzo, generando alleora un 'eccezione per via di ~}~:I; : ··t~i! : B asseritoj a seguito di questa eccezione il sistema operativo azzera B. ..':~~~:t F ... _.,'
e
_
~~I i
• CI - Inibizione cache. Se asserito, blocca l'attivita. delle cache per questa riferi- "~(I : mente alia memoria47. "'~~'):: • WP - Protezione scrittura. WP e asserito se, per questa voce in TLB, ·uri bit WP asserito nei descrittori percorsi in PMT.
C'e
,;~,. ' ; almena S1 ; : .:~~~ , , .
• M - .Modifica avvenuta.. ~ at~ivato a seguito di una scrittura al~'indirizzo 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 PMT I ass~r~ndo. M nel descrittore ~ pagi?a. A quest~ punta vien.e creat~ una nuova poslzlone m TLB con M assento. Clo per garantlre che la prIma scnttura a una data pagina asserisca M sia in TLB che in PMT , anche quando la posizione in TLB poteva essere gia. stata ereata per effetto di una precedente operazione di lettura .
.
.
,:.~,,~I
)~;).~: ~ A r;·~t·
:
i:
'::1211' '.
"~~.' ~ ;
'~1~~,' J ~;:Ev' : ;..~' : L
.\~~~ i
~II' ~,la ; . •. • •• • . • • • ;.Y,;.' i . · 81 .notl c~e il ~arn~o dell'mdmzzo l?glcO ~ d~ 24 bi:. ~~si.comspo~do~oa~ ~n~ ,/', J.~~ dimenslOne dt pagma dl. 256 b~e. Per dunenslOm maggton I blt menD slgmficatlvl dt /~~' M~ questa campo vengono 19noratI. 'ij'~(" \P',,
:\l~'~~ ~; :':, 'ir, . 1·~L
:":,'.,,!, .
,
'.w.; ••• ~
8,7.4 Su alcune caratteristiche specifiche della MMU
'..','tV"· I.''; ''; l:
. '''.•'
Ov~~amente ~o~
e. possibile dare .tutti i d~ttagli del fu~ziona~ento della MMU.
.
't"'
•
Per .t;"J~, esSI lliettore e ffiVltato a leggere 1manuall Motorola e in parttcolare {Mot87]. ":~~ l n modelIo di programmazione della MMU si compone dai registri sotto eleneati. ',:~i~~' I registri della MMU possono essere modificati solo dai programmi che eseguono a :~:/;f/:L Hvello cii sup~rvisore48. ~ .tal .senso, Ie .istr.uzioni di manipolazione dei registri di '."if/J:~ MMU sono dl carattere prlVlleglato. I reglstn della MMU sono: :i'!~ i
"~.!'!.~
• un reglstro dl stato dell'MMU stessa (MMUSR), dl 16 bIt; 46~:l; Mot~rola chiama questo bit Bus error, percbe quando si genera produce comunque una,
·JI .;;j;. '", '.
~ . : ' ;,t,:,
condizIOne dl errore s.ul b~s.. . .. . . 4~Qua.ndo questo.~lt (e .11 com~P?~dente In PMT) e assento, un rlfenmento aHa. pagma. fa assenre '~:I.£~d 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 .~j; ,' bit S) del registro di stato dena maccnina (SR). Si noti che quando il processore viene meMO sotto .~'., r . . . . .",~.01 tenSlOue, 10 stato dlventa autornatlcamente quello dl. supervlsore. ,,4
.::-;i'} .
""" I'"
...,:,ii:~-.:
.~~:~.~,:-.
I
''''~'i'i< )]; ~~';f ~I~'J"\':'" :
"ii'l·~" " .. .QIo ,: ~~.
"-.
~I .. "'-. ,"
~.~~»
La memoria virtuale
373
~,::J'~::'
ff.'!;~'j:~':::>'
1
~'i,/):<~:; ':
;'..
• il registro di controllo della traduzione (TC), eli 32 bit;
.-:",;:::.1' i" ",-' '. ",.'"
."'::.·l~'" '.:,_ :;;' ,.,~ .. ',."'.. '
_,,' . .
J
•
r~,":::··
• i due registri
.'
:;,J,.:'.' .•-.0.
di traduzione trasparente (TO e Tl), di 32 bitj
(
..t"l,.,.-
E -. . .....'."J, ••••
~:f.\):;.
• due registri Root Pointer (CRP e SRP), 64 bit".
.'
i:~>::~ "
:B;,:f,·~:;,:;· II registro di state di MMU La funzione del registro e intuibile: non vale la pena
:~;(;;'~'j::':. ~""":,,
di perdersi nella descrizione dei dettagli del suo funzionamento.
F .•
:rf;A~>;~':' If . t dO t 11 d 11 :."~,J.( .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 :;:;~E~:/:. vtene.sc~emat~zato II modo: IS, TLA, TIB, TIC, TID e PS SODa i nomi associati a .li!~\i"':·· campi di TCj 1l lora contenuto determina Ie misure dei campi dell'indirizzo logico. . 'M):.'1,,;l'.
Ai$):(~;-;':'.'
:,:;\~:z;(.~:!·'l:,
"
;·~·~~ift+f:;,
'.
:&~;';;f:~,:,::;
1" I
N
I
m
., no
,I
m
,1_,~~_ _I
l I I
J~PB·L· . Po ~, " . tI, 0fr.I:IT I :;~~t~:~~'~'Figura 8 23 Cam . dill· d·· I . .. :~~l~~~~~r' dell'indiri~zo'logiCOP~ d:t~n I.nz~o ;sco. ~a'dim~snsiTonedei campi I, A, Bl C, De OFFSET
I I
,~~~£r!~:,',:,:'~· ."
\
r;I
I ' I . [ . [ ,I
1------
0
i·'t!j')~b·>' d·
. rmma a con enuto I lA, Tm, TIC, TID e PS del registro ;~c"':;~~~:i;i':"" I <:<>ntro.L1o della tradUzlOne TC. II campo FC viene abilitato attraverso un bit di TC (n .~1~'~~,,·.-':.mdlcato In figura)j se l'uso di FC non e abilitato il . r 11 d II t b 11 . .. on ~~i:'f~·>::.':' campo A dell'indirizza 10gico; in caso contrario 'la p::o lve 0 e a a e a e lDdi~IZ~a~o dal M~:~~?1~r:;:. :·.~al codice funzione.FC. ' p a tabella della struttura e mdiClzzata
I
;'~~w*~);)':'';'" .,' ".,,:Ik"~r,"· .
,),iC~,l'Jl~m, .. ~'.
" 't::...'-"',':.. , i ;;·~~i'
:'f:' .
.
~,~.'" '1;."'.,
','.~::'Ii,\;~, -",' i '\'~''''-1''''. .·.<,,!/i,::.......f
I Campo I Bit oi inizio i ;-19·~.~'l:!"· A . 31-=IS' I ~y.~~T~·~· B 31·!S·TIA l~~~~:~~r C 31·IS·TIA-TIB i~l¥t~)/:::;·· D 3I·!S·TIA·TIB·TIC , ;:';;;:;~N>,:':, '
~~~,f;;:::':(."';,:
~:V~ki,Tabella 8.3 ~ilW.;,f.· .
.
Limitazioni aa 1 a 15 bit (minimo 2 se .~=O) da 0 a 15 bit da 0 a 15 bit (ignorato se TIB ~ 0) da 0 a 15 bit (ignorato se TIB 0 TIC Sono 0)
.
I
I
IS .serve la dimensione dello spazio deg"U dirlZ'.,' virt' uali Ch e vlene . t a stabilire 32 IS ~~,;~« ..: e~rmma 0 come ~ - . Per esempio, se IS=O 10 spazio e massimo (2 32 byte) s ,~,< ::>.:,: IS-15 (valore massuno assumibile) 10 spazio de Ii indirizz·· ... 17' e di·"~'~:)A· g 1 VlrtUali 51 nduce a 2 byte. In'
··~;;t··~
49Diversamente da. quanto detto .
d
b~f.:~:/2' oppure per gli accessi in ,tato d' t' t ase. e t ~~;lt>··
. ~&;.~:.
'.. . . , ,..-.._.
I
.
t edr.o r. uZ1~ne per gh acCessl in stato d.i utente en e e In 8 a. 0 I 8upeIVISOre SRP f, . Ia base dell'a.lbero di' traduzlOne a esclU3ivo usa per gli ""c•••· II' dI . ornlsce -- ......,1 a area e supeIVI80re.
'·;}.1".' " .
I
VIDcoh per Ie dimensioni dei campi dell'indirizzo
:~~~:('.' d. t
::i~k·,:;,,··: '(;~l~~t.'.':'
t
I U
I I
"\1 '. ;"'"c'> .. ... . h:j ,~_." . .,',':r ,.';"-i
~.,.." , )t',,"< "~: ~:.-' • ~" <1 ':,f':'~"
\I
374
,,",
Capitolo 8
··.,F•.
''; (I' .
..1<'-~<:,
':~:ij
..'.'~'-
'I ::~,.
.1':,"":
'o,{,~ ~",.,,''-'
- t
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.
I
'~i,lh ",!,<_~:
·
"I'~';',
).,:,:~.;
· ' '!:'.
'-1"' ';,l' . ,?.L~:'
';.e\'
';:;1·~
I
1. Abilita.re/disabilitare la traduzione dell'indirizzo. Se la traduzione gli indirizzi logici sono usati come indirizzi fisici.
l
.~~'-':'
"~ ,-."','
. ,...g
, \
I
ii'~
:IIr.,1I .... ~ ..
::i:,'J
;".\.:
e disabilitata, -. ;;.~1t ~"j": '-~'
..'..• ">.
""~'" "~"ll,
. ,.
.''';:
r,.;.~,_ ...
. p~~ ::;,.~:::. -'~i.;~ ':,,!.:~
,..;:!!: "'.,~. 2, Abilitare(disabilitare I'uso del registro SRP, Se il registro SRP e disabilitato, sia ,":. i:;:;ll :'''!:''~; gli accessi di utente che di supervisore usano 1a tabella di traduzione definita dal ", ":
' '1 "," "
I
I \
I
I \
'j~
,"'~\" ·or.,.,; , I ',"," ' '", ,'.""'. 't..1!! ~ ·'I,"·"-
.
· 'i .
Registri di traduzione trasparente I due registri di 32 bit TTO e TTl servono a <;, . ~)t individuare due blocchi nello spazio degli indirizzi logici che vengono tradotti in modo /~tf;~ :~*;': trasparente, nel senso che gli indirizzi 10gici ricaden~i in questi blocchi vengono presi '''~i,':~~ :~tff direttam~nte .co~e indirizzi ~ici (senza cantrolla di ~rotezione). A tale .s~Op?,. u~ :,~ij~ :~~: campo dI8 bIt di TTO, ,TTl Vlene cOnITontato con Ie hnee A SI - A" degh mdinzzl; i:;$H>:8 III caso di uguaglianza SI ha la traduzlOne trasparente. . ~'i~ "~~:i, Ognuno dei due registri TTX puo essere ,indipendentemente disabilitato. Una :::;'.~~ ~~f~ volta disabilitato, il registro viene ignorato. E possibile stabilire se la traduzione ,.:.:;~~:§ ;!.i. trasparente si applica solo in lettura, solo in scrittura 0 in ambedue i casi. ~"~I.:;%.~i$ . Sor~e spont~ea la .domand.a delPutilita di questi registri. Essi con.sentono di :\'t ,'!~;~ eV1t~e il .mec~a.wsmo d1 t~aduzlOn~ .. Du~que potrebbero esse~e conveDlent~mente '~:'mt ,,:~; 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 ;~\~'" :~~R;:
...'. ~»;' :~I:!'~~ '.',..,.
' ""':-;
~,
;~ ~
~
, \'
I I
..~;;,
""'"
'
Ci sana due registri di macchina che fungono da puntatori ':')1~ ;~~< alia rwce deU'albero di traduzione: CRP e SRP. \.'(~': +~n registr.o. SRP viene ~pi~gato ~olo per gli a~~essi del supe~visore e pub .esser~ 0 , ,:.:X?\~' ,);(~{ non es~ere utilizzato: L'abilitazlon.e?~ ~m:' e stabilita attra~e.rso un c~po .(dl un ~lt, \;~ ~3;~ denommato SRE) eli TC. La posslbllita di avere un albero di traduzlone d1 escluslvo '-:S~ ,~#; dominio del supervisore e mirata a garantire l'integrita del sistema operativo. Se SRP ,·,.,:~~~,,~~n abilitato, CRP punta alia tabella
I registri root pointer
:I
~. '('
e
,li!!'!\l
e
':;,,1
,
" .~" , .. : .';J "I"" · !;Q' ' ' '. "')' ,I •
·
..
,
.,.."
> '. ..
,
".... <.,
"
La memoria virtuale
"
375
..
i",, ,
" --.
,: . .-:'- :.:'
':''''''
'·
-
'.-
.';.
8,7,5 La protezione
::~.",
~'~,'_
' .";
,
,:'",
;: ....;..'
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 , ;:::<' ;" ',' 'I: del programma supervisore e aHo spazio dei dati supervisore. E evidente che i codici i<-'· . funzione, separando i differenti spazi, devono necessariamente essere considerati nel '-:.-'. :':'" ., t;, ~,,' , contesto della protezione. In Figura8.24 viene riportato un esempio di albero che oe '... {, ' ~.:.."' .. ''.. "., fa uso. '''
'-' '-.~ .
".
'~ ..- ."' .. .'''.,<' -~:;:.<:
.,~,
'~:""
t- ::}..::" f~\"~~' ,
:r'i/
RA1IO DELLe SPAZIO DATI O'U7ENTE
RP
j~'.
TABELLA 01 lJ'lEU,.O Fe
,:?;';'
RAMO DEWJ SPAZIO PROGRAldW. D'UTENTE
~l)::'
.f~f:~.'
$:,!~:
RAMO CELLO SPAZIO DATI OJ SUPERVISORE
~~#fJ;:" ','
;~~:
.
~:;:r. ".::;~::.',·
~e}:',' '-''.'" ';-'; :,:, '
-.,C:·' I':
.,;''!:.i''''.' ..•...
,~ ,.:.,'
.",
<;'<, -{,~.
'
{';::::
~.9.,:~ '.
;t;:;·
.
n':f:;'
RAMO DELLO SPAZlO PROGRAMMA Dl SUPERVISORE 1. (1foN DEmmo. R1S£RVA'fO)
2. SPUIO DATt O'UTENTt
3. SPAZIO PR,OGR.uou. D'on:NTI;
• !DEFINrrO OA UTEN'l'E.RISERVATO) ~. HON DEroITT'O. RlSBRVATO) . S. SPAZIO OA.Tt 01 SlfP£RVJSORB 7. SPUtO PROGR.UOtA III suP£RVlOOR£ S. SI'/..ItO [)t CPU (HOH TRAOOTTO)
I
I I 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 e riservato per un usa delPutente, 1 e 5 sana riservati dalla Motorola.
~t;>;- .
~r~.·
ir~;' ,..) .':i::::' .... ,
H:.t,' ':'
;:'.....
~:.'·
t:~t?·,~;,
,l!.!;;. b",,"'
::>~ '. "
",r.'" "'''''',' "J•• ,
J'~"
.~,.::.
QueUo di Figura8.24 e lo schema pill g~nerale di protezione. Esiste un1ulteriore possibilita consistente nel non usare i codici FC e nel costruire (a partire dallivello A) una tabella che divide i 4 Gbyte in quattro aree, secondo 10 schema
,
316
Capitolo 8
RAMO SUPERVISORE
-
DJ SOLA LETTURA
RP I
e-
RAMO
sup~~rr' 'ORE
Of LEITURA- S( RITTURA.
."'::;1
"&1 -_"::~!
3=1. 'KP-I 3-1, wp-o
. .
s_o 5 .. 0
.~.~
RAllO 3UPERVl: :ORE\UTENTE
OI
liPEl
SOLA
LElTU RA
:·:;;
:::iY~ _.~~ :':~;,t '-"'i(i
wp-o
TABELLA DI
RAJ,{O sup~.~~: ORE\UT£NTE LE'M'URA SC 'RMiURA
D[
UVEll..O A-
....i~i~ p'
8 25 E
'.
.
TAB~~
.
D1 UVELLO B
,.~,:~ .~}~
..
~gura '. semplO di albero. di tr~uzlOne c?e usa 1 btt S e WP per dlvldere 10 spazio .. ::_~ dl 4 Gbyte III quattro aree con differentl regole dl a.ccesso -'.. :>;"'1': . ",''-~''
.
',;/i~~
..
..~~~i
8.7,6 ConslderazlOlll sulla memoria virtuale del micro 68030·"r.\\
""'~:!
,,~'W:.
Quella d 1 " 68030 e ffilcroprocessore •
e
"
,.
~:-{~Il
.<'·~i~
'.
1.1n tlPlCO esemplo dl memona v1rtuale pagmata. ,,:':\~llJ
:~#!jj
La MMU gestisce una I.bell. delle pagine strutturat. ger.rchicamente, secondo' un albero the puo presentare ~no a 5 lIvelh dl profondlta, can tabelle di differenti. '~~~" dimensioni livellI'. . E possl'b'lle de fin'lIe d ue bl ace h'I d'I In , d'" . ai differenti , InZZI per I: qua1·,~ I ,~.;~~t' la tradUZlOne non vlene effettuata. ,i~:,:;\~,
.
,
'.
..);~:t
Uelevato numero di livelli dell'albero di traduzione conferisee estrema flessibilita' .:~t al rnecca~smo di g~ti?ne deIla mem~ria,. anche se questa flessibilita viene pagata a1 ::·]Zi1 prezzo di una n~n mdiffer!2!nte eon:phe~lOne e al prezzo di un elevate) dispendio ~i_ 'if~ potenza elabor.tlv" a causa della nduzlone della banda dell. memoria conseguent~ .' o~:'l~~rr1Zzamento ~n.~lf~t:0. ~ d~e cache vlrtuah (seppure dl ~lmJtata dimensione) r>t~.
'xf:
1:>" ,. ..'""'. ~
~o sehe~a
ut~nttr~~lj
. di pr?teziane si basa eS,senzialmente su due livelli, illivello di e 11 hvella dl superVlsore. Attraverso I codici FC !'organl'zzazl'one h' d II ,,~,~ , gerare lea e a·:__ rt; PMT e l'nso della protezione in scrittura e possibiJe rendere!o sch d' t' ..1.,--..: "alquanto v a r l e g a t o . · ' em. I pro eZlOne, "~" , ,L:~r.!
. .
;).;JI
Va!e la pena dl ncordare che nel modeno successivo, it micro 68040, anche se i '~~ criteri. di ~estione sono restati sostanzialmente gli stessi , l'albero di traduzione epiu }%~ ~emphce, m quanta puo presentar~ al massirno 3 livelli. Inoltre , nel 68040, Ie cache ')} mterne sono a valle del meecanismb di tradu'o d r ' d'" . d' . '~'1 . I d . di' 'ali .' Zl ne eg 1 10 lrtZZI e, qUID 1, vengono ~",,;~ raggtun e a ln nzzi re ' . ·',1" ,,:'i.' .."" . ....:l ",J
' " ' , .-';Fi ;,'"
,rt· ".
~
,If'l'r' '....
.~~ihf
-.I.l:~'-'
i""li'lill~;;~ .-"'
~i:S:fM::
""'~J;::\'
',
'~';"f:': 'f\l{x; (' ..... ''''l;f'U, ,.,
itt"';;",,· .". "<'j\".~",.,
/;"\v:,~::·':,,~: "':"" .....' "'''":.i;"j-'
~,h"-.;1: ',1' ,.
La memoria. virtu ale
1
8 8 Esempio di memoria virtuale segmentata: ,
la memoria virtuale del 286
"~··~~t " "~'N
. • "'/1;"-"., , .
I:.~"·'"
377
"
'i;x,.",.... l. ~ ,~'" ""iI.",,,oJ".
J,~?~~;'?>::'Gome
esempio di memoria virtua.le gestita con la sola segmentazione, viene ora des1", ''i~:')''' '. ;' critta I. memoria della CPU 80286 [Int88J. All. data di scriltura di queste p.gine il !~'" .'~~:~/i:"'::_':'." 286 e orrnai 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 1',;H!~'~:'''':; 80286, non solo perche costituisce un esempio di sola segmeotazione J rna anche perche ~~'·l;~P~~iii<:·<.';"'essa ha determinato ~ condizionato lo sviluppo dei modelli successivi. A partire dal ~~~ ~~~.f/· 386, i .mo~elli della fami.gli~ 8086 pre~nt~o l~.se~eotazione e,. a valle di qu~ta, t~;f ~fJ1.:~d~:·::;:, la paglOazlOnej s~ non Sl ~a peso aile I~eV1tabili eliffCTe~ ~relatlve per esemplO al i~fj, :~~J¥f<-.:: differente grade dl paraUehsmo), la gestlOoe della memona virtuale segmentata resta ~l :~~f~:!:·.quella del 286. ~~. ·~~kr·:·,:>. Come gia detto in precedenza, i meeeanismi di proteziooe sana inestrieabilme,nte ~~ ',~;~~~k:;:~,',:)egatialIa gestione della memoria virtuale. In particolare, i eontenuti eli aleUDe tabelle ~~ M£~';'~'::: '.e di alcuni campi all'interno di queste mescolano informazioni relative alia gestione : 1J:h."-i.~'·:· " .. '/'''' ,'f;:~.!!~t;i'.:',::;-della memOrIa vlrtuale con queUe propne della protez.lone. In questa sezlOne Vlene ~~,~~~(;~;~~:"::',~s,ol~ discuss~ la gestione del~a memoria ~:tuale s,egme~t~ta del 2~6, .rimandando al i'. ~(¢/'.' capltolo dedlcato alIa protezl0ne Ia descnzlone del relatlVl mecca.rusmJ,
1
:
I
\·' ,~~~~(;"
!$f~I{M,~,?,~:,t
•
.
..
.
•
~
t
I 1
. ,
'.
..
D 286 ha due modahta dl funzlOnamento: 11 modo reale e il modo tnrtuale protetto !.t:>"?i;~ (Si veda anche il capitolo espressamente dedicato alParchitettura x86). Gli indirizzi l~ \~i,j.,i;\:-;~.·logici so~o dati attraverso due componenti di 16 bi~ e veD:gano rappresentati con ~& .~t~'!i/!(.:l~...:.- 1a notazlOf1.e SR: OFFSET, dove SR rappresenta un regIstro di segmento e OFFSET 10 J,'ii "'ii~P'~; scostamento entra il segmento.
.
I
jj: . ~Jl~#~;
~ ,
l
I~~j' /i .:'. -, . . . ~·li '\'... 8.8.1 Indlrlzzamento III modo reale ' .I:i ~ ,,f~--..~.
)
t4 ' t
I I
,
''', /iiw,.,;''t::.: .. j'
$t~\.:)n modo reale il contenuto del registro eli segroento (moltiplicato per 16) viene inter~fr"I~'~'~" pretato come base del segmento in memoria. L'indirizzo fisko e ottenuto sommandola
i1:., "t,)~}~: ~~e con 10 s<:ost~ento.
~~:
:
La teenica eli inrurizzarnento e dunque quella eli Figura8.26, )'~::--~')" esattamente ldentIea a quella dell'8086.
~'!J!;t.:,: ..
. i.~rl'5.t.·
~
•
j;: ~~i~
'*1'i '~:.I:t: •. ~ ~ "Ik~ .
Jlt. '"k~:-.. ~~t:·,,··. . , . . , . , . . . Come Illustrato pm avantI, modo vlrtuale protetto il 286 gestlsce uno SpazlO dl ',' . ',' lIt.;· .
lD
d'" . 1 Gb b'! . 16 Mb 5 0 ' J , £is' : Ji4 ,';t,....~ .. ,m InZZl amplo yte, mappa Ie 1D yte dl memona lea, "" '<.. . U In ques t a rno d"" "1 d I . d' ' .. !,; ,its; ~'~r",:.',,· ddltd.> operatIva, 1 con~enu~o e. regIStro 1 segmento non :nene PlU I:,:' ~,~i}~(t'\'~ lllterpretato com~ base dl un segmento m memo~a, bensl"come 3elet!0re ~I. 3eg"!,,en~ ~t '~~~,.: to. n s~~~tt~re dl segmento pu~ta entra u~a tabella, la t~bella d~l descntton del ~: ~ !.~1,t'~~f.~}egmentl ; 1elemento puntato In tabella Vlene detto de3cnttore dl segmento (DS). }\.' ;~~%~n:;.~ 1~1 ~2r·•..(I;·' " ' " ; ; ; - - - - - - - - - - - , . - , ~, ~~, .11'""" ~.~La. dimensione della. memoria. fisica e limitata a 16 Mbyte, L'integrata e datato di 24 !inee di " »1 k,o,lndJrlzzo. ';~ !t:~, " ", "" J,r .1:<' llI • •
;;
)
~ I
378
Capitolo 8
] "
0000
o SCOSTAWE~TO
~';'t!
(OFFSEt)
.'::::':,Ii:' <'!:h
"
1
".", .j~'t ,.. ':It-
o REGISTRO 01 SEGilENTO
-, 1(;'I~'
",;~l'li,
,.(.::,,~~'
0000
.i;a. "'fi/,
:;':'~~
_,:).~Il
\. -, .'.;:11:; , ,Pj;ijl1;
\
i:,~'l·.r:
SOMMATORE
I
"
-~'l ,...•. ~!:l,' .' :;;:.. ",1"-, , ,--.. /~",t,
o INDIRIZZO
flSleo or
,
20 BIT -_._--~
......
.~j"'!$.,
••~ .r., .. !i
~.
.'.,')
Ii__
'l~;
Figura 8.26 Generazione dell'indirizw fisico in mo.do reaJe da parte della CPU 80286.' ·.~~~:~ contenuto del registro eli segmento viene interpretato come base, ovvero come indirizzo fisico, .Xj"ii~; del segmento in memoria.. "··iJ~~i"
\
, L'iIidirizzo fiSico"~~1' ,
:I
n descrittore di segmento fornisce
,~."~"
.. ...., i~1
,jl',,",
l'indirizzo di base del segmento. viene ottenuto sommando 10 scosta.mento aHa base cosl determinata. In conclusione;:"~;;.l~i"" il meccanis~o di traduzione dell'indirizzo 'del 286 e queHo canonico dei sistemi seg~:'~,~~ meota:ti schematizzato in ~igura~.14, can .la paz:;icolaritA d~ dar,e il selettore d!:,}::SJ. segmento attraverso un regIStro eli CPU (11 fegtStro d.i segmento Implicato). "/~~1 Le parti the seguono illustrano nel dettaglio come 10 schema di Figura8.14 si ,~t.~' materializza nell'architettura del 286. ,,".~~
rna:
I
.,~", ,~,,~,
~. ':-t:s.!f~'
\
.. I descri~tori di ~eg~ento Un descrittore di segm~nto occupa.8 ~yte, presenta:'~;:~~~: tre campi, denommatl BASE, LIMITE e ARB, e ha II formato dl FIgura8.27. n .~'i~ significato dei campi e queUo sotto eleneato. .~!!: d~~. "
",~.;~
I
11.'....'
.t·' ,·'\\"1
• n campo BASE e ampie 24 bit
--;~('@. ;::1~!
(2 24 = 16 M) e contiene l'itldirizzo di base del
.:-~;>;~
segmento.
I
l .I \
.I
',"7"" --
• n campo LIMITE e ampio
"
>: ~~1
= 64 K) e contiene la dimensione del~t'i$' segmento. La componen~e scostamento.dell'indirizzo virtuale dev~ avere un va~ore ,}'-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. ,.,.,::;~5.1~,
•
16 bit (2
16
. J--~n byte ARB (Access Right Byte) contiene Ie informazioni che definiscone la natura)!!ll~ 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 il':'l;~ momento ci interessa ill.ustrare i clue soli bit eviden:z.iati in Figura8.2751 : . .:'!:;~~' .. . - -I:~~'l\.J~,1t P: Indica se il segmento e presente 0 no in memoria centrale. Ogni riferimento' "l~; ad un segmento non presente in memcria centrale (P=O) determina fleece; ;,/.~ti· , ,'~~i~" •• 1;,.,. •
'. r'li(l"
''
51Tra i bit di ARB non evidenziati in Figura 8.27 ci !Klno anche quelli the definiscono il tipo di
\
..,
'~"'\
,~.
'
La. memoria. virtu ale
379
zione 11 52 . Se it segmento non e presente-i campi BASE e LIMITE perdono 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
~
l~
3'11
ARB
I
!
BASE ,
I
0
UM,ITE
I
~
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 nell'~chitettUIa 8086. Del byte ARB vengoDo messi in evidenza. i soli bit 0 e 7. Si tenga presente che I'interpretazione come PeA e valida solo per i segmenti di codice e dati, non per a.ltri i tipi di segmento (Cfr. 9.2) .
,I selettori di segment a II formata del selettore eli segmenta, e cioe il contenuto dei registri di segmento, illustrato in Figura8.28. Si notano 3 campi.
e
~2 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. Un'ec~ cezione viene raccolta dal sistema. operativo che provvede a prendere gli opportuni provved.imenti
380
Capitolo 8
·.:i~
• INDlCE - Puntatore in tabella, 13 bit. lndividua uno rra gli 8192 deserittori ehe possono essere contenuti nella tabella. <:ii~~
--" Stabilisce se it se1ettore :1;M1 .,~,
• TI - Identificatore di tabella (Table Identifier), 1 bit.
identifiea un deserittore in GDT (TI=O) oppure nella LDT corrente (TI=l).
·.,?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:~1'~!!
1.
n bit T1 del selettore indiea 8e la tabella da·usare e GDT 0
LDT.
2. L'INDICE individua il descrittore entro 1a tabella54 . 3. II descrittore fornisce l'indirizzo di base del segmento selezionato.
"
, , .-~,'.-,
, " .... ,~.{iJj;l
eottenuto come somma dell'indir.i.zzo di base con 10 scostamento.,~~~ E stato detto in precedenza che 10 spazio di indirizzamento e pari ad 1 Gbyte'::~:~
4. Uindirizzo fisico
• _.... ",.•'ri{F
~ale d~ensione deri:~ d~l.e seguenti considerazio~. n ~~po INPIC.E del.s~le:t~re,~/,~! dt 13 bIt e con esso 51 mdiVlduano fino a 8192 descntton, Clascuno del quah mdlvldua,. -.f.!,J~ ~n segm~nto.~ 2~6. byte al ma.ssim~. ~un~ue, attrayerso LD~, ciascun pr?cesso ha,:.'i;t~ 1 16 29 uno Spazl.O .dl mdinzzam~nto pro~~l0 di 2 . . 2 , = .2 by:e! ~o~tr~, tranut~ G~T, :_~~.~~~, pub condlvldere' con altn processl 11 medeslII10 Sp~lO degh mdmzzl. Da qUI denva )l:u1 uno spazio di indirizzamento totale di 230 , pari a 1 Gbyte. '.:i~~~' '"
".~
-.'~ .. ,,"~~'l
Cache dei descrittor.i di segmento Come gia osservato, il meccanismo di map~_~t~~, patura degli indirizzi logici in indirizzi fisici tramite tabelle di memoria ha l'effetto di:Xt~~'1 ridurre la banda passante della memoria in modo proporzionale al numero di passaggi ':;}~\'~i~ indiretti attraverso le tabelle. ' :,~2 .. ':;ji'
. -'..,;.it:,.·, " ,',;"\.;:", "., ,~
.53Si parla di Rt.qut.stor's quando i segmenti in oggetto Bono quelli di codice che, essendo s
-, -:Ii' ,".,.... ~.,
,,,'+:' ; ~.""
-
';~!.(:.-
'0 !\,): '".-
",,,.,,.. :l~~V;.:;·:--
.-
I...,
La memoria virtuale
"~",,, • -"'I";
I>
381
II,>.1<1" ,.~j~~'!S\ '.' •. .', ~
~
.....
.... ri"':"',·,'-, ~ .".. t,,·,...'.. . , , ...... . i"~"'~~';''" ~ • '1~'1 " .--
CPU
,
t,
1
c6:,~,,_
'
.",
"",",ORIA
{ '(.;S~··~:··,
1 INDICE
111 ISCOSTAWEtnol
J;
;~IJ;4 ::'1, '. "
"':'",,~ 1{l1'~'l!i;\:" !-'."}'o' r..,.' '"'
t.' ',.~"'" . ·t_~ l;.;oftlt1'.1'J"· .' ~. " I :;:\,:,~1<; ,.•
It
,
.. ". "
.........
,
SEGMENTO ,."
.... ..... _
."
'!'!,!R'f.I,
~
...::J""e' "~' ,n ...
"•
BASE SECW:ENTO
1"J';'~"
u
'lo".~. }(.l••
"• "o ." " ." "" il
, ·'4',' ,',"'_ "j'•h,
I\"";·~·"
~~'.tt,:~} ,',
i"',:~ '" ' ,..,\;.,"" v-
.•~.j ..
~•.r '.,)!ill'']'.-
'mi" :;;
,
,
'~"~",:. 'I"" .~'~,.,1,:,.,..,' _
,I"~
,"
',~
.~'
~:.
~
c
. ',.,-:
, ~~, .' ..
.'.
LOT
~
It, ',' ~,,~; .
"lr~~~2.,·,,·. rI~~ '''''0' .. .>. , - ,~' ~\'l'
P''d'if,'-"'-'-" n· ",',_' .' 'i:~~"'""". "'. . " .',' ,- ','- .• [.:.j -'J' ~I,",.,
,i~!Jf'
1,*,"'.j--""." -, '.
aA31: LOT
.
OESCIltn'¢RE
~ ,
l
I \
l
.
~u:,~l~~ .':. -
~~\\ "lif~~~:,~~'-F"'ig~ra
8.29 Schema di principia del processo di tracluzione dell'indirizzo. Si ~ assunto ~. ':;~i:;'it·. TI~ll 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 .\- '-.
.
~.r.l,·.-·
I,y~, :~,t~;';:'. - Per evitare questa penalizzazione, nella CPU 286, a ciascuno dei registri di seg,!~ I- ~~t.<: 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 ~(,<;"-;·Figura8.30. Si tratta di registri invisibili a.l software che vengono aggiornati autornar:WN ~~~}; ticamente e usati in modo trasparente dalla CPU. Ogni volta in cui un registro eli i>:~: ,~!:t~, segmento viene caricato con un selettore, il corrispondente descrittore viene automati,~~~,~ir~l; ;~, camente caricato nel registro cache associato. Da questa momenta, i succesaivi accessi :~II~i\·}n 'rnemor~a che ~san? il roedesimo selett.ore non ~chiedono il pasaaggi? ~~tr~vers? la _~~~~;tabella del descrlttort. Tenuto conto che I segmentl rappresentano suddiV1SlOnt lOgtche ',),", '~~~s:,~-del programma, e abbastanza probabile che it selettore cambi molto raramente. ~\ La cache .dei descrittoii di segmento corrisponde al TLB dei sistemi paginatij _per I~ ',1 '~i;~·:.'- i. motivi descritti, questa cache si riduce a 4 sole posizioni, pari al numero dei registri ....• ~f':·di segmento.
:f
,r··, '.- -;:
~
1".·.--, .
,ro l~\li:'
•
"li~I~;)·!L8.3
Il "
. Tabelle dei descrittori di segmento
''',,"'','1
1:",''1'1 ,~~,
f~'"
:" 'O:k~~:··., .. Come gia detto in precedenza sono previsti due tipi di tabelle di descrittori di Beg· "ilf.(~ , x:::mento: GDT e LDT. I due tipi di tabelle hanno dimensione variabile, da un minima JH "~,,, dl 8 byte (un desenttore) 55a 64kbyte (8192 descntton). Le tabelle vengono trattate, " :.;{Ii~},~;~,. esse sresse, come segmenti .
,
I
INDIRIZZO 1.0G1CO
\',.
,," l{.~.. ,. ",
"T
t
l''lr
I """ ':~j~~~'"
..
,;11~1:: .• ~;~i::~
;"1' .
~,"" :.!:t~(.
' "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
l t
! \ \
I ~
I
382
I
" -'*..\:!I
;;~i~1
Capitolo 8
,.,,;oi.~
·"'·1
··'11 ....
&-~
\, I
47
40
39
:;,'~~M!W
16 15
0
Sel.ltore del SeI;DeDlo eli Codice
,
.
Se1tltor. dd Seplenl.o DaU ,
Selelloro della Sellllonto S",ck SeloHo" del Segmento.
(
'J.ji
,
..... ~'\ _'p;i;g ".....".. i',. ,.rI"1",1; rjl .....~'J ,.,
_~\.. ',.."
"~..,..
\I" ~' r
\'~ '."
t~fi!\' ,,;':
I~~,!
.~.,';r.(
i
.' :\~~;,
ARB
Ertra
BASE
UMITE
·V~ .;,)" ,~",-,
!.gi~~l
.._, t ~l ~ ',lt4 ,'";~.. :..'"~ !~\ ·!"~'''i-' '~(,~l ,,.' ... ' ;'1l;iH!, " ""l1l', '. A -.:·>r~. · ',i.D, , : ,'j!,-' "\I~~ -"'\'1.;", · . ,,
:'/.•,~iii,
;.'~
Non accessibili da software
Figura 8.30 Registri di segmento e registri di cache dei descrittori di segmento del 286
".lff 'M~ <,
•,;;i,~i$~ JR
,[~
Accessibili da software
I
~.i"'t:~ ·
'I
~
Tabella globale dei descrittori, LaGDT e la tabella globale dei descrittori. Essa'::¥~ ".;"~ i~r va mtesa come 1a tabella che contlene 1 descntton consultabill cia ogm processo del ;;;':,J\;~ ,1": sistema. GDT pub contenere ogni tipo di descrittore, eccetto i descrittori relativi.~1~: i!, al servizio delle interruzioni. Si assume the il sistema operativo mantenga un'unica ,~~~"
I
GDT, nella Quale tiene i descrittori dei segmenti usati dal sistema operativo stesso, i )·i~.~~i l~ descrittori dei segme.nti eli ~tato. d~i singoli ~rocessi ~si v~?a piu a~ti) e i descritto.r~, ~~:\~~}1 ~'' ' ~';'\~1 delle LDT oltre che 1 descntton dl segment! comum a Plu process1 56 . GDT ~ individuata attraverso un apposito registro di CPU (GDTR) come sche~, ':'~~:k~'; matizzato in Figura8,31. Sono disponibili Ie due istruzioni LCD! (Load GDT Register) "~ .;i" e SGDT (Store GDT Register) per caricarejmemorizzare il contenuto di GDTR57 . ,\~.,~;:!~ ,.
i
'::r~1c'
\
,~':,;:Z~;;,:
.:' . ,'\i!t.~
':'I!~
':,ri~l1'
I
1
,,~ "
•. ;,~l"":
I
,I
:",,~
)1>'.. ,~~ ,~
\
I l I I,
Tabella locale dei descrittori Le LDT contengono i descrittori dei segmenti che fanno parte dello spazio virtuale dei singoli processi. LDT ~ individuata attraverso ;:~{~;g! 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 '.'~:j'.;i4l·'" di segmenti di codice, dati, di stack, di porte di chiamata (call gate) e di porte di. .';;7.~~~ 'l~i . processo (tas k ga t) e. .,',"", 'I":'T__. Di norma un sistema operativo terra. una LDT per ciascun processo: in un dato,<,~~;~i istante di tempo, attraverso LDTR, verra puntata 1a LDT relativa al processo in /.1Jj:'ff-~-' 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 nella.\·~ LDT corrente 0 nella GDT. .1;'iJl~~ 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'attivazionejdisattivazione dei differenti processi, per l'accesso al1e LDT ~ state scelto 10 _;61~ stesso meccanismo usato per i segmenti. A tale SCOPO, LDTR non un descrit- /:~~~
~'~0r~l"
.1.}:;;
e
tore, rna un selettore (16 bit) al quale e associato un registro di cache (Figura8.31),''''~~' Ogni volta in cui i1 process.o in esecuzione cambia (si veda piu avanti), il selettore ,;.~t:
,'~ C'
"·
"~"'~"'"'" 'j,"'-',(;;\ .,,=,
· ";:.' jJi:!
: 1
coincidere con un segmento (si veda. il capitola sulla protezione). "(~~,~,, ~6Si noti che la prima. posizione di GDT non e usata e viene faHa. corrispondere a1 segmento nullo, -(:PI; .. '" nel s~o che e~a.. restit.ui~e ~ ~a.l~re nullo dt;! pun.tatore. .. . " - . .' :,~'q 57 S1 tratta dl Istru210DJ pnVllegJate. Un'lstru21Ooe pnvlleglata nOD PUQ essere esegUlta da! ~~F~ programmi di utente. I privilegi rientra.no tra i meccanismi di protezione di cui si parla in seguito. ' ,,/·i~~ .
I
"~~ .;,'~-~j
··-./';.. '
'. ·;7,·:'<'· , ' To:,
.-",.
~~ :~
ITh
l.
W
~~
i
l
~
,
'
.ii'if;"n;;;:;. ..,...... ".~
.....1.\" ",,, ",
,
La memoria. virtuale
383
.
.,. ~.-
".
"'ti~" rmOl~". ,..
~"\j-:· ,.,' ':..,,:., i;Jd?,; .
CPU
!I1:'~;:
~'iJ;.;i'
.. ,
Memoria
,'.
.....\.'l:' ?".. , ~" . ~:'l ...:...., 1.,~, .. " .. ' ~,~nl~' !
LDT
~, " .,~:~. ~
."' 1 ' fit::; ~A:'i' .
.-
Rt'I"'·",\.-
LDTR ~lclto~.
LOT
0
.-
~
I U,n,ll.
urr
", I
0 lIou U1T
l;;~~:,
'I
~ht::. ~
4l'f?::> .
-\ l,\';' , .'.
Il:I: iI'" ..'
~i
'
",'
1)•• ~r1"on lJ)T
:.L '."
,'I'" ~J: "loo("." "
A"".,: .
19~" , ' ~;';·::i·' ~;'jj.t..~, ..-"
.-
"1"""." . GDTR I Un>ll. :Wf.IJ]('", ' .•
r:""";··
~1~~(·:~-·
eDT
'"I
8 ...
(;1)1'
.. '
GDT
... ~\.t.;".:;.
.~' ~'~::.:,. '.
~I~:~<:: Figura 8.31 Modalita
eli a.ccesso a.lle tabelle dei descrittori del 286. Si noti che il registro '-l~.~~::1.:GDTR ~n effettivo descrittore, con 24 bit pe.! la base e ~6 per ~a dimensione .d.ei. segmentoj ~iat.:;;L_:'!". LDTR e iDVece un selettore, at Quale e assOClato un regLStro di cache non VlSlbtle da prO~
..::.,'
e
':1Jfi~:h\_ "gramma. II descrittore di LDT e tenuto in GDT. Vistruzione LCDT carica un descrittorej ~.~' . I'istruzione LLDT, carica un selettore e il descrittore prelevato dalla posizione di GDT cui ~-;'2"f,:" ' punta il selettore stesso. Si nati che la scelta dei progettisti Intel di realizzare GDTR come ~ Uj,~Vl'i<," descrit~ore e LDTR co~e selettore non e c~uale. In.fatti la GDT e unic~ e fissa per cui ~. ~.Wi~iJ\::- e megho .avere un. descnttore .da1 c~ntenuto lmIDuta.blle,. mentre LDR varia a seconda de~ h-1: ..\~,~~>~::,: proc~so l~ esecuzlOn~1 per CUl.convlene 10 stesso meccamsroo del selettore e della cache del .'1f~i.~'i_
.....
.~);:.
....
'.
!; .
,~;~~;':'v~ene aggiornato e con esso viene caricato iI registro di cache, con i1 contenuto del
',i~4. ',:
:ij).'
corrispondente descrittore in GDT.
.Riassumendo, i differeoti criteri che presiedono alia gestione di GDT, LDT sooo
:5;;.,,;~: .
W:
·!il~~:>:···
~Ii~ i{~:~',~"
seguentl.
.• La GDT e di norma unica.
if~1i'~': rNi~.lt.::.:
lli~t&~-f)'<'" .
~iC;.;
" ."
" .. 'I~i~.,,"~ ,t,fI-,', , .
,
!j
'
'i~\':'''':''.'
,'~:¥\':.
1
Essa rappresenta la sede 'in cui sono contenuti gli altri des~,rittori. Una volta.caricato attra:erso .1'~struzi?ne LGDT, .il re~tro GDT~ 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 58 a1 modo protetto .
.
Le LDT sooo tante quante sono i processi, D selettore LDTR e la relativa cache
58Durante il funzionamento in modo protetto, la tabella non e direttamente visibile a1 program· ,fM.:";:'-"" .rnatore (~i dic~ anche.:n-e l~ tab~lla GDT non e un segmento d~lla m.emoria virtuale). Si noti che '~.~~';t.-_:: ne5SUDa 13tru2lOne ut!hzza II reglstro GDTR per accedere alla memorIa, mentre, se un programma I ;~IV;;::\_:. di utent,e ten~a di e.seguire un'istruzi~n.e 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 ~ 'i'~e:::/' effettuarvi eventuali modifiche) utili22lUldo la tecoicll. dei 6eymenti editH. ,,'ll~~~_ .., L'istrU2ione LGDT ha questa forma.: LGDT memory. AHa posizione memorll deve essere stato ll....'t~.,' ',preparato Hdescrittore.
I
~r.;'
;1'.';' ,.
,"
-"'~" .'
Capitola 8
384
vengono aggiornati attraverso l'istruzione LLDT, rna anche in modo automatico come conseguenza del camhiamento del proceaso in esecuzione.
;i",f"
\"i!.'~!I
, Jfi!~~ .~~ ..-:.
Attraverso 1a LDT il sistema operativo ottiene l'isolamento e 1a protezione tra i 11 processi; attraverso 1a GDT permette la condivisioile dello stesso segmento cia parte ",';,... >~~~ .~~,\'I di piu processi. Questo concetto e illustrato in Figura8.32. · - ,j" " .,. ' ,r
'.:fI'
'.
.. ::.,•.
Proeeuo A Sp"210 loe .. l. Indlrl,.,.unenlo Sip .. ,.10 vlrluele d, C
"
""
Ind.1rl,.,..",e" to A. dlllnilo d .. WTA
;~ .. ':'~:":'
I--- S".:do dl lndlrlu.• ",en~o v rluele dl A Sp"210 vlrluele
"
.<':~~ ;)p,
...· ~n ~~r,
lndlrlt.l
dl
jB
1
'cl
Srce.:zlo dl indlr'h,.e.m.nlo II ob.le, d",Unlto d. GOT
Spe.l
""~"~
!~:·::~~
,'' ':i':' C ·:,,,/:,. ~.~ ":~~i:;
,..
Spado dl lndlrl,.,...rnenlo loc.le dl d.llnllo de WT>
••
~.w'
. ;~,. ,
..
.: i ~,;/ -'" '"'l""': 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 . :'." .•,,'iJIl •. , m A, i3 e C. Proeeno C
Proe ••• o
•
, "',,,
·.;t:~ ....,
,... '!'!t,1
.'ll
. ;;,~.
,,' 'iJi , \"Ai
,
'No' ",~N
8.8.4 Gestione della memoria fisica
; .",~:".
" '~:~ -
'\~':
Non e detto 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 . ~:t r~sidente .in memo:i~ fi~i~a .(bit P del corri~pondente descrittore a 0), il ~ecc~nismo ":i~ 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 :)i
fislca. ~ . ~~~ · ,''' II trasferimento di un segmento da memoria di massa a memoria fisica dunque ;':\: su domanda, ment~e 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 in memoria fisica. ·La stima di tale fr.equenza e resa 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
e
e
.
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 residente 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·
e
La memoria virtuale
385
~
(
.. 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.
I'
~;
.~-
'l1
~
I~,
.. ,., .
"til
r" ";<" "~ ' '.
8.8.5 Alias
~t:'
,~
r~
':d~
~~~? ,r;1
n, ,J~
CW' ...:j!:' ~C, ~~,
Poco sopra e stato osservata cbe non essendoci istruzioni Che permettono di indirizzare direttamente la GDT, LDT, IDT e TSS (questi segmenti vengono gestiti direttamente dalla.logica ~ella CPU, in modo trasparente al programmatore), ,si pone il problema di come permetterne l'accesso ai programmi, in particolare a1 sistema operativo.
'
"
...
:r,il
.
.,
Ilili', m
,~."
,i) ,1
~:~~!' ,.J
1J' ' ,
~ Ali_
Segmento
WAS or UN S£:GMENTO COOIC£:
eodice
~
t
I I I
lt~'"
r
. ,. i;,
iJ~~'',',
i~' i:
'''' N~
.:-II,..
:£11
~~~~
A?pl1ca.done
EO Sola
~
I
I
e,...cu:iolJe
t~! ~}~~
RW
Letlura Sorillura
Sl.,teD:la opera-tiTO: au.Uio per la
l
m"sse. a punto
?~,
i~~
~,
''
,
:Mw~'
/~'!'
Se,mento
WAS 01 UN
\.--
All~
I
dILl!
SEGw:ENTO DA.TI"
Utente
ARWL, Lellur.. Serltlure.
II
\ ao
Ul_le B
Solo
let-lura
Figura 8.33 Alias di un segmento dati 0 codice. La parte ~ta 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.
I f
'
.
.h
'1,,'"
·'
..
386
I -
"(ii~;
~0!:
"~"'1
Usando gli alias e dunque possibile moflificare GDT, LDT, IDT e TSS, come illustrato in Figura8.34.
\ •
GDT Descrlttore dl LOT
\
-
,
Ca.pitolo 8
"
\
-
,."I
(
LOT
"
D••
AUBs- LOT
AU •• GOT
.§~ 'tz ~::~~~p lY
~\~~t-~R
~l~
~;
;~~'~
',l
,:.'4'h~) !'
I
Figura 8.;l4 Alias di GDT, LDT e IDT. Per ciascuna. ta.bella e stato castruito un segmento dati alias. La modifica al contenuto del segmento alias equivale alia modilica delle tabelle.
I
"·~r;
,:{~I ?~i
:V'.?l: ,:.~f~~~1. ~~. :~\~i,
I.
-
.,,\'I""
,h~~ ;fr
Ali•• lOT
- \
I~~
'L":~ ~;.:.
IDT O~tl
D8;U
"1~! 'I'" :-'C..e
•
~~
~~
"~~ ·~
'~
I.
i~')
I~~
\ •
·
,-
8.9 Esempio di memoria virtuale segmentata e paginata: la memoria virtuale del Pentium
l l
A partire dalia CPU 80386, I'Intel ha introdotto la paginazione a valle della segroentazione. Per motivi di concretezza e per dare al lettore un riferimento certo, la parte che segue descrive la memoria. virtuale del Pentium, come. da (Int~3l. 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 piccol~ differenze dovute a1 parallelismo a 32 bit) e la. stessa del 28660 . I modelli successivi gestiscono la memoria virtuale come il 386. In precedenza (Cfr. 8.2) si e visto che 1a paginazione si applica a memorie virtuali
(
, l,
cioe
:l \ ,
\
e
lineari, noq articolate in segmenti. La paginazione utilizzata 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 &OImmutati sono pure i mecctmismi di commutazione tra processi, la gestione delle inteeruzioni ecc.
-'
I
,;.~ '~
'i,j
'':, ,
,
d
~t
"'
~
: W
I
¥
.
~
......
'
h', •.
'II,"." ..
'~i.". .' \ .f, .~.
,
'. ;~·'· .
La memoria virtuale
,,,-.~
:'~L
387
.
..... , !r" ',''''
1,, " '
"e-~.' .;.:,
~f:{"
;;'l;i:,
con la componente scostamento, rna nel trattare tale indirizzo come un indirizzo logico, pertinente a una memoria virtuale lineare a cui applicare la tecruca della paginazione.
",'
i¥:~'>';:'
~a s~ruttura. della memoria virtuale del 386 e :no?~lli succ~ssiv.i vi.e~e sch~matiz
.J':' . .' zata 10 Flgura8.35. Esattamente come Del 286, l'mdlrIZZO lOglCO (mdmzzo Vlrtuale)
zgL;~'-;: e da~o attraverso. il selettore di segmento e I? scostamento entre il segme~to_ Si no.ti Y':i;'. ·::, che 11 selettore dl segmento e aneora a 16 bIt, mentre 10 sc~tarnento puo essere Sla
~t~>,·
,: -: a'16 che a 32 bi~61.
Sono ~~ind~ possibili sia s~gmenti il cui corpo puo arriv~re ~ 32 r.~~::<~-", piu ~ 64kbyte, s.la segmentl 11 CUI co~po puo arnvare a 4 Gbyte (2 ). Nel segulto Cl ~l\·:;~.,'· rifenremo escluslvamente a quest'ultlIDo caso. ;ik::i Essendo 14 (13 piu il bit TI) i bit del selettore con funzione di indice, si ha uno 46 '~~,~';.'.':" spazio ~i indirizzamento virtual~ ~tale pa:i a 2 , ovvero 64 T?rabyte. L'i~dirizzo l:tV::.:· logico vlen~ mapp~to su uno sPal:lO lm~ar~ 4 ~byte, e ~unqu~ da.luogo al cosldde~t? '¢~,(::...: indiri~zo ~rt'Uale lmeare, su 32 bIt..L'lD~mzzo Imeare Vlene qumdl t:att~to dall'unlta. ~~:~. . ;, 'di p~gl~azlOne. ~uest~ prevede pagtne di 4 kbyte e una PMT su due livelll, pur sempre ~n~~;.:: costltulta da pagllle dl 4 kbyte.
?l
~"f,';'"," ~J';'l'l.~
~"~ll'~-1:~,,' tlu,:r.,·,.
')l,.)i1I)'"
~,:""~ii~':;.r"
-",'lj~"'"
..
INDIRIZZO LOGICO
Selettore
,
~.'!rl/!"f'· ~' ; ~"ir~~;"'" ~
.:,~
Scostamento (Offset)
i'M','· ' j~P.g~,~,~,
'~,~ ~'I'" :~~'·.1i::~":' .... . ~i~,j[&:' ' ,,,";-'
MEMORlA
32
:"",,"
,.
,
INDIRIZZO
'
, 16 /
t-':~I~;"'.o '
"I"'-', "." rp.,,,., . '~l'"
UNIT'"
"
SEGMENTAZ.
LlNEARE / /32
INDIRIZZO UNIT"-
d,
FISICO
"~~'d;;i:"":;'>'';
'~
'/32"
PAGlNAZIONE
'.'''
.
"
..
z2 ~'~\"""
:.'f'-+'1i"'" .'.,~ir -,
,.
"""" :,.'
~f,'_~:::
:~i~{ Figura 8.35 Segmentazione e paginazione nella CPU 386 e successive. II meccanismo di W?I~:;"~. _. pagina.zion~ tr~uce gli indirizzi ~irtuali lineari in i~d.i.rizzi fisici .. La ~emoria vir~uale lineare Irl~"~:'''''''''' e la memoria fislca vengono conslderate come costltUlte da pagme eli 4kbyte. C10 comporta ¥,~t.i.:::> : '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 ~~.~'~~~:::<: a il bit 31 del registro eRa (Control Register 0) di CPU.
.'
'.
0
disattivato mettendo a loa
;,!f,\ ·n,t." '. ,~ .'. ". I ",..Ir.,\, ,.t,I.... ..".", •.,' '" ';;;"'''~:1!'''''' -, '",,-, .. "~",,,.. '
Si noti cbe 1a memoria virtuale lineare e cosl grande che il limite al numero e aile
~'~"1!i;' .;~l~"~, :'; .
"
I.""','
"iij\'~ 'J;;I"'" I ~~I":}
I,~,'," ''l',ln',·
, .
e
dimensioni dei segmenti che il sistema puo gestire dato dalla capacita della memoria di massa. Si puo quindi pensare alIa memoria virtuale lineare come a una risersa
'~' ~ :fft.'i!,i:~'·
th,, iiI.:. '\l)!, ',' ;~~~F.f~;~;"
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 ::~l7Vt;::'.:.' conti~ua ancora a parl~~ ~~Ue riviste ~i i~fonnatica ha qui uno dei 8uoi cardini. Per molto tempo 1a ,t.~~>;I. queatlo~e dena .co,?patlblhta ha. reso dlfficl.le I'avauzamento dei sis~emi ~oftware p~e queste ~a.cchine. ~~~"" . In partlcolare, II sistema operatlvo OS/2, mtrodotto da IBM negh ann! ottauta, mconteo dJincoltii. e ,u'·',~~f(>." &conto notevoli ritardi rispetto a Windows di Microsoft proprio pee la questione della compatibilita 'M' ". :--. ,. verso il 286. ~.,' '. " ..'I",."....-, 'r~,,', .' .
i
lf~
,
"~
61 La
Capitola 8
388
praticamente infinita62 . La memoria fisica pub raggiungere anch'essa 4 Gbyte, in quanto gli indi~izzi fisid sono aneora a 32 bit. Nella pratica costruttiva, solo una piccola parte della spazio di memoria fisica presente 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 e una delle pili complete e complesse architetture 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.
e
......... 'I.'.. •
. ;,~-.,
,,' ..if ;,':,~~
':::~~f!.~
',_~.
""",'
.' .••. :\.". ,_,~l<,-
, ,,.,,",,
.:;,::"' ," .,«-". ..''
,-.
'..,. ,
',f- "
"'~
'i"~
':;~~ I'
• - .. ," ,
;;~ . 'f';:'."
8 . 9.1 La segmentazione del 386 e modelli successivi
."
segmentazione'.&;~:'
Vengono ora mostrMe Ie differenze che merita ricordare rispetto aHa d~l 286. Sl eVlta .dl dare tutti I de~tagli, cercan~o dl m~ttere ~ eVldenza. solo h~" ~~'T' dIfIer~~z~ che c.ornspondono a maggIore. complesslta. 0 ~ dIvers.a mte.r~retazlOne del "".;;y..: campI del descntton. Ancora una volta 51 parla solo degh aspettl relatlvl alIa gestione ·./fi·· della memoria virtuale, s~nza entr:ue nel :nerito dei pr?blemi di ~rot~zione. .'~:~~~i· n formato del genenco Per . if' l' ul . descnttore . 4 b' 'ddl segmento . ". F'Vlene 8dato 36'III Flgura,8.36. . ch b· . .:.",< . ' l'.~.\ quanto 51 r ensce a~ I tenon It e:'l ~nz~ati In I~ura . .' 51 os~~r~1 e un It, deve essere necessariamente 0, mentre 11 slgmficato del restanll campi e 11 seguente. ,,;~},~,
'? :,
.
_
(.
,.
..'
::,
G - Granulanta.. S~ G-O . granulanta. fi~e), al!ora I umt~ eli mlsura della lu?"ghe~za ':~.' del segmento e II byte, dunque la dlmenslOne masstrna del segmento e pan a "'iij ~ 1 Mbyte. Se G=l (granularita grossa), alIora l'unita. di misura della lunghezza.~J~..... del segmento ela climensione della pagina, cioe 4 kbyte, e il segmento puo arrivare ':;i~ 20 12 cosl a 4 Gbyte (2 .x 2 ). ";';~j D - Ampiezza degli op~raneli (~ol~ ?e~ i ~egme~ti di codice). Se D=~l aBora la. CP~, ~'~'?f;~' lavora can operandI e con lOdlnzzl di 32 bIt. Se D=O, allora gh operan.dl e gh .:,'f.i·~ indiri'Zzi sono presi su 16 bit; in questo modo viene mantenuta la compatibilita·;.~:~; con il 286. . , ," ::;}~~~:.
, (,.~
,
AVL - n campo (1 bit) e a disposizione del sistema operativo. Potrebbe essere ~::;:." impiegato, per esempio, per tener traccia dei riferimenti alIa pagina. .,,~;~. ' ....J:;r,'
';f[iI',. Le pagine vengono mantenute mediante una PMT a due livelli. Nella' ,::{If!l
Pagh;tazione terminologia Intel, la tabella di primo livello viene detta Page Directory (eatalogo A~ delle pagine, nel seguito), mentre Ie tabelle di secondo liveHo vengono dette tabelle,·~:f£.f· di pagina. I vantaggi della struttura a livelli sono stati ampiamente descritti in pre· ,):,~~ cedenza (Cfr. 8.2.4). D costruttore ha anche fatto la scelta piu efficace, dando alle .:~{' tabelle la stessa dimensione delle pagin:e (4 kbyte). n meccanismo di gestione delle' :;::~~ pagine illustrato in Figura 8.37. ~,~:,..
e
(I2Un esempio numerico chiarira. meglio: se si suppone che venga prodotto un nuovo segmento da 32 kbyte ogni 5 minuti, occorrono altre 15 mesi di lavara ininterrotto prima di aver saturato to spazio di 4 Gbyte.
'" ..
ill;! .,,",
-'~~~';';'" ,",.:".c' ~~t&·.,r.::,,:
\
;,
,. ' .., !i!iI
"'!I,f". - '.
La memoria virtual!:!
;,.._, ikt,l\ ~~,'\fS: ~,~", I" •.. ,
~'~i"il.};."_ - ,.
389
;f
1-
I
( ..
_. , , !tl'''''H "' ..'
"ll.I'V~{",""·"
~~~~];I>,~
..
,F.-,f
N>,
~~;!~:)~.
."X-.... .... ..
~_!·,t'l:'i~l'!, :. ,"~ ,." ,r,".,.' __
.
'l'~
o
.
~~I'~'I~
->\""-'" ,-. )t,O.!\ . • . :.~\ ',..i•.'J1. "r"~" 1','['."'>'1
',., " ~'''''';;\(,''\'., . \~"<'\:,' .•<.",,,,,:,, . ',''J! ~~t
or
8
I
ARB I
or
32 !
I
BASE
I
I
I
20 I
UMITE
'
I
~~
.:.,
'\',\:;";1"", '
.;;: ',';l", , ~ '~;;r.;~':~4' .',' ~ Figura 8.36 Formato del descrittore di segmento del 386 e successivi modelli. Si nati che ,~ -'.,<1 .,.,... . . it descrittore occupa tutti i 64 bit. I campi BASE e LIMITE qui rappresentati come due "·... ~·"If· 1':'~""~I';\' c· campi di bit contigui , sana in realta. campi sparsi nel descrittore. I bit PeA del campo "11,' · : :',' t ',·.a •.•• I- ,·n-f."." ,(,'.,.. .. ' ' ARB hanno identico significato ai corrispondenti nel 286. :/f:'J:i:l'
~
I-
;';~i!J'~'
.~
'''''1'''''. ..r,,., .
""u"'=,; ", ¥fj,!<"~
,
, tr, ~.~' ~'J:' ,~. t'"
;:t)~
t
,,' •
i"'"..
:,f'1~l'
lnd1rt:l:so
-{)
~
~;';t' ',;,1 "
' i~il.lii~{ c. .1i~~~~~'1,· ·~~,rr;:>.,;:"
·:r§.;r!~lt.
i· .~~~2
\.
'
~
~
1
,
.
~. ",
.:
. ll
~
·:
~.
~;
.
« 21
Direclory
,
CR3
I
I
Tabla
o
11
"
PaKe Directory
Pale t&ble
~
C><{?-;..
,,'" .., F'Igur. a 8 37 La pagi' . . L" diriz' lin nazlOne ne1 386 e SUCCesstVI. ID 20 eare
."
~~....
_ ... -4'
\
l ~
,
SU
.~uf<"";~;::' fislca. L mdirizzo della pagtna fislca che la osplta e specifica.t9 d3J 20 bit plU slgnificatlVl :. ,,~;br~;,: .. del regi~tro CR3 (Control. Registe.r 3) di CPU (qu~to registro vie;De anche chiamato PDBR:
.,' lT~~J.'.(.·,:>; Page. DIrectory BG3e Reguter). '\ ~?'i<
j.~;\1 ~~·:.r>!'"
ta~elle
delle
pagi~e
risiedono
.perm~enteme?te ~ella memor~a di ~~sa
e 1(':1~l~;: .. ~I~cuna dl .esse e ~utl?~atl~amente canc~t~ In ~emor~a fisica quando Vlene utlhzzata ":~ t~~;.:;"",dal meccamsmo ~1 p~gllla~lOne, com~ ehlanto eli segu.lto.. . . ,.." ~ ,lli',;::.>.:" La tabella dl pnmo hvello contlene 1024 "descntton di tabella", uno per ogru . ¥r~.'~ ~':, t.abella ~el!e ~a.gine. ~ mecc.arllsmo di p~ginazione,.nel tr~~e ~ ~~~o vm:uale ~"1l~ ~ \ . ~l.ne~re III mdl~zo fislco (FIgura 8.38), mterpreta I 10 bIt pm slgwficatlVl dell'mdi;~lI ~~;.::' ri~zo della pagina virtuale come indice, nel catalogo delle pagine, del descrittore della ~., c:~;::::,::.. t~beUa del~e ~agin~ coinvolta ~ella trad.~zio~e (? "tabella delle J?agine c~rrentell). n "". tr:~..-:v bIt meno ~ngnificatlvo del descnttore 0 bit P lOdica se la tabella delle pagme corrente ,Wi~~~(. (P = 1) 0 non e (P = 0) in memoria fisica. Nel caso in cui la tabella delle pagine e j~~~~'\;',:, in ~emor~a fisica, i 20 bit pili significativi del deserittore specificano l'indirizzo della ~~ ~:.,-,_ pagma fislca che la ospita. In caso contrario si ha un page fault che si manifesta ".:.': I.~~.:" come eccezione numero 14. In presenza di fault l'indirizze virtuale lineare che non )~ )~l~rCf,.,:... estate tradotto viene me~or~zato nel registro CR2 (Control Register .2) interne ai ~~:}i.,: processore. SuI page fault il SIstema operativo provvede a portare in memoria fisica ~, . .~ Ji-f~,1:' la tabella. delle _p~gine corrente. . 1 . . ~~~:.~~ _. O.gni tabella delle p~ne contiene ~024 "~escri.ttor~ di pagina", uno per .o~i.pa ."~1\~r ~ma vlrtuale a essa assoClata. meccarusmo di pagmazlOne, Del tradurre un mdrrlZzo 'I ,W i':~;~~', 'virtuale lineare in indirizzo fisico, interpreta i 10 bit mene significativi delPindirizzo !-: , ~/: .~ della a ina virtual l'indice relativament 11 bUd U . , . !lIM:, 'd I'd P g t d II e co.me. I ' A ch' e a a ta .e ~ e e p~~e co~rente, .' ,'~\ffif~, .,' e escnt ore e a pagtna vlrtua e. n e 10 questo caso II bit meno slgnIficatIvo del
.
Le
y' ,"
"
', .
n
1-
O!lsel
32 b't • d tt I t: pro 0 0 ~ ~~>j: " ·d~Wu.n~t~ di s~gmenta.zione .. La PMT ~ a, dU~ liv.elli, ~ cui U, primo e detto PGg~ Directory. . ~f)~ri:)~~ L'~ndlftz~~ ~s~co ~ su 32 b~t. L~ tabella di p~lmo hvell?e semp~e pre:sen~~ ~ ~emo:l~ :
j ~ ''''~(''''':;'::-'
' ~.
31
UDelU"e
~\
.l
-
1\-
If j.
'.
390
.
Capitolo 8
1
:~S~l
;r ,.-,
INDIRIZZO
· ,.::IZ'I .r,
VlRTUALE UNEARE
o ..
CRO
\
0
.. <:.;~I
··k'.
'~"'lsflf i' ,~,.r
:.fSj! "[,~i
II.
20,
" '\'c~"
10,
dir.tto~10
X 4
Sco.tamenlo del de.crllto~e d.en. le,b.U. d.U. p •• in.
•
, ~-
10,
x 4 32
.... ~~~
:-i'~~
"''-11m':
· '-, "",.~ !.,'",. '.',' ,!;,"
.:.-:.:: r :'-).<,j' "I""'f," .l~
· •.,.
. .' 'I' '.,J"···t"I,
·
20,
1
.)
",~
"
Numero di Po.llino. virtuo.le
I
Tabella
;.,~~ ~I,
3a _ _1 _ _::; 20} 12P
N\anero dJ pa.ina t\:llea eba osplta I.. tabella direlto~to
- .l
,.,,..~&b
~ '.1,
l':~~"'i_
,';';';;;I~
Sco.l.mflnlo del d ••crittore daU. pacme, !Isica
Tab.Ua delle p •• 1ne •
~.t:;·)~I] ('".'1;, . '~'" ,")~~.
::.I.·f.
j
~""'"
"':~X:"'I'",
NULnerO dl pallmo. nsica
.~..,.
.>.;:', "
,?r\~~;
20J •
. . Pa.iDa liSlCe,
\
I
o _
INDIRlZZO FISICO ~
t~
· ',I'];~1iL~ ", .. I,~, • ".1. J..
Scostanlenlo ne 11 .......gl'n.. delh. loce1llone "Iente
_
iJ
~ ,]l
,
. ,.',- .;;.i:1
· ';:',~:,l; .. ".:.r.: ';;':o,-~ I .. , ""~'~I
""lii'l
,'r,,',',. , , i. ". "','
''''''''I'' • . ,.,..,,
WEWOJUA. J"lSICA
\
<,
A.' ~!
Figura 8.38 Traduzione da indirizzo virtuale lineare a indirizzo fisico. Ovviamente 1 ,".-,:;:.,t;;" moltiplicazione per quattro corrisponde alio sp08tamento a sinistra di due posizioni. ,',' ,-,~,
'.,_J;;~~' ",,'S;
(
.;""~~, 'i;.,'
"•",'
I
! I,.
descrittore (P) indica se la pagina virtuale e 0 non e in memoria .jisica. n meccanismo '~~~L . del page fault e identico a queUo sopra descritto, compreso l'uso 'del registro CR2 per ',::.rJ~i' memorizzare l'indirizzo virtuale lineare che ha determinato il fault. " ';. \:'~":~~":¥b~, ~a pr?ce.dura di traduz~o.ne. da ind.iriz:z.o virtuale l~ear:e a indirizzo. fisico s~pra ~(1~ descntta nchiede due acCesSl m memOrIa e comporta qwndl un tempe dl traduzlOne.; ,t~:f:~ inaccettabilmente lunge. Per ovviare a questa inconveniente , e presente un TLB. n *;~~l. 486 ha un TLB di 32 posizioni;il Pentium ha un TLB separato per istruzioni e dati.~· d~It~t .
.. ~,~
.
'.
'.• ,~.('f!<.1\i
., ';~t!'~:
".j:lf~i
'. ""I;).'t.Jt.~
I •
\
I l
" :.,"""'''ir~ · ",.,' ,~j) ;~~i\
8.9.2 Descrittori di pagina
·
,',;(\,',
,,'
"N)" , " },.:" . " ' , ::~.~{,
n descrittore
".'-'!>~
,
'""e,.,,'
I
31
e 7 6 5 4 3 2 1 0 T. ;',.1'" • ·~i....~:tll IAVAlL~PCDlpWTlu/sIR/wl~
12 11
INDIRIZZO PAGINA
.-:':!:[~f , ,,~.y
Figura 8.39 Formato del descrittore di pagina.
9
",:10';1!~":"'1 '.' '?=1;,
. '" ..
·
"I ,.... ~ , ~,~i;
..
,,~
'/.,.,', '";\",,
,!)I
La memoria virtuale
391
P D - Se a 1 indica che almeno Wla delle 1024 pagine, associate alIa tabelle delle pagine individuata dal descrittore in oggetto, e stata modificata durante 1a sua permanenza in memoria fisica. A - Viene posta automaticamente a 1 ogni qualvolta viene utilizzata una delle 1024 pagine il cui d~scrittore si trova nella tabella delle 'pagine in oggetto.
P - Indica se
180
pagina
D - Indica se la pagina memoria fiska. A -
e0 e0
no presente in memoria fisica. no stata modificata durante la sua permanenza in '
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.
I bit PCD e PWT svolgono la loro funzione in riferimento alia cache. PCD - Page-level Cache Disabled. Quando e asserito rende non trasferibile nella cache interna il contenuto della paginaj solo se questo bit e disasserito il controllore della cache pub effettuare il trasferimento in cache della linea. indirizzata. Si noti the la possibilita di rendere 180 memoria non-cacheable e utile se per esempio sulla pagina e mappato parte dello spazio
-
• PWT - Page-level Write Through. Quando e asserito determina che per quella pagina deve essere seguita una politica di scrittura immediata in memoria per ogni scrittura della cache interna63 . 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.
,,
392
Ca.pitolo 8
8.10 ~sem~io 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 segmen~:~~~« ,
"
',"
tazione 64 . La memoria virtuale e gestita da una MMU integrata nel processore che :~:~~ opera secondo il modello (demand-pageci). . ,}}f~~l 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 momentaneo·::~,ij: indirizzo virtuale a 52-bit (all'interno della MMU) per poi essere ritrasformato in\;~ indirizzo fisico a 32-bit (si e usata la terminologia Motorola): Tutte Ie istruzioni sono :·,~,~i!. codificate su 32 bit (Ofr. 2.5.1). La divisione della lunghezza dei vari campi all'interno',':':;t, dei 32 bit non e rigida, rna dipende fortemente dal tipo di operazione che rappresenta~:~~I In Figura 8.40 viene mostrato il calcolo dell'indirizzo effettivo (EA) in riferimento a<~ri~ t' _.", un farmata mo Ito caroune d1"is'ruzlone. ~',:'::~8,~:; , , ., · ,
',.
"'~'.';
•
COOtrlCIl OCLL·tSTRUZtCHl:
• •
'""~.
.,
"" "
..
", ' ""' ' I;lr,ir
,.. 'D
· 'i\~ ~I """~'
•
~;'.:!";t]
I
~<~jllH;
.. ~II"" .N ~
'
,.
•
..-
(s'~!"I_
"
,.
, " ,'!
· ''''~'' ...~
" ':\1'"-
I, L':,;:1~~1 \'I:i/:'JIJ
•
cl
r,
'>';',i'C.\
,.r~c:
•
L
,~
"~1-i
,
,+
'I'.. (,'"
'''~J '"~ ,:.X::(l1't',
- .,,,~\\oti;, ;;i~lt "
.. . ';'l':' i:lI
"
•
,"~
,;;'~
'
"
Gf'lI
•
3t' , 1~~ID
,,.,,"~" !:'l'i
'::""'~'¢!' .;!' .'
,I ." ..
£rr.'tNa
~
PO-:~~; ,
Figura 8.40 Generazione del'EA per un'istruzione del tipo load/store nell'architettura werPC. Se rA e diverso da 0, il campo d deU'istruzione viene interpretato come scosta.m-ent9l~~ ~ispet'to al conten~to .d~l registro eli U50 generale rA, se rA e uguale a 0 it campo d vie~e,::'.~i. mterpretato come mdirlzzo assoluto. ' . \~1. :~~l
"~'I:Z'"
• ,:;'.cf'! .,.}~
,'. ~[g;f;"
.;'l,~~' ','
.'
'~":£
8.10.1 La 1PT del PowerPC: la HPT .
,
.
'SI', ,
··1;;~-
"'''' (
Lo schema generate della traduzione da indirizzo virtual~ a indirizzo fisko e m05trat~'~;:~ in Figura 8.41. Viene irnpiegata una tabella delle pagine nella versione di Figura8.13~ . ,I,:i La,tabella prende il nome di Ha,hed Page Table 0 H P T . : . -iJ
..· " .,~. .,,' .' .' "l, ·'F 1.. '" 640ltre a do iI PowerPC puo implemeotare ancbe altri tipi di indirizza~ento della memoria ovvero:. ,1~
,Wi,
la segmentazione pura, il meccanismo di traduzione a blocchi (BAT). E Inoltre possibile esclud~re la traduzione dell'indirizzo, in modo j\oalogo a quanto detto per iI 68030. ';',/il;i: ,,;'~,ill:
,..
\ .-
.
....
i:~"
'.'
N"
~all~l~r i:--
La memoria virtuale
:'
~ ~,~:<:, I, ;'Il""" "'1~'11~';i:::" .
'~'If'V,-,
1
".,~.
',j:'iJ.1•
)"
"".,
o
,
,
'"""1 ,';;.\'.Om" ...." ': . • ',' ' .~.".
,;>'i
~
,1 .
34
I,
Indlrl:u:o rnl'ttlvo \
"'I'.(1'''.:..:, ' "tll",'-t:
,
l~ ~~.~.(-,:"".
".,
20
31
I,
'
Orrnt
.~.;~ .. ~.f"~:': .. ,,'"., 'f:i. '~" ," '
...
"I''I'"
"'''"
:
Ilr~';'! """I:,~_,i', "-'f"" .,.-, .',.
,"
,I"""'" ,,1 I.! ~•• '
_
R.~tlit,.O
:f'._ :'. I;J~;\ :' . '1'.''''
."""
I:
~~
S.~r'lto
t",":
~'~-\i':
",.l~"" . , !!\ I'. :;I't.," ~.,~ .. ,frl:~
1'\'1
",
~. '.•" "~tj,~,,'·"
',;
I ,
,<' ,I ~ -
, .~~Ni"V' .~~
"
"I "W,.' 'I"""'" 'II" "", '<~ 1l~:JJir,. . ,',.. ~ ;.. -, .,''1\'" \l I;f'" $ \ , ,~
]
"
3' .0
",
'''~
'\liil'l!~,"; iW:.~·:"':", ..';1;, ,~"'.'.
~~
I
23 2•
orrnt
., . \ :'1'\""" "
.
t-
•
.
•
. ,'-
':J!lll"""'" ' ',"'"" ,,~", :iL~h:; ?'fI!] ".,~ ,"' .-,,, , '"
"
. II,'
,).~ ~.'i"
.
1 Hit ..
fLB
I-
~"'..,
;
"IJ!~!li'"'~' ""'-,,,;
"
"~
~!j
'l
1
'"'i''''' " , I~
HASH
• ,'1,,-.' l'" ·~i'·
~~~l',',,, ~~'>\:~.\ .. ~ "~~~'i~~;:;;::;:" .;' 'j' 1....;",.:" .•
...,
:'II ,'*>,
.
1
~(';", , , "'1'·',.
''''~'' '~ .. /J"'" r; , ,""
I
,,',• •~::I'e:;,,:-,~~, .. '.
,,~,,~~. ~"r;,
,~ ,,'A~~:J:~':' ,,-.
•..
',,' ~ ... ,','
• "',
"
" Off,..,t
'j !i'~.~ ..;.;~,-:,
rl~(;'i:'Figura 8.41 Schema della. tra.duzione dell'indirizzo nel PowerPC. L'EA (indirizzo effettivo
'
,.;Hjj~wp!iit
~~
.
. ~t~:della pagina vtene prima effettuata in TLB e, se questa fallisce, in HPT (la versione PowerPC ~ ~J\..del1a 1PT). In figura la scatola de rappresenta MMU racchiude anche HPTj ovviamente 'i/- ~,:questa tabella si trova in memoria principale. . 'lii" ,., 'i ~'M:<'.":'-
'~"''''
~."C\., .
ti,;:':,';'" Vale la pena di rit?rnare sulla questione della separazione degli spazi di indiriz-
"
'
£~.
',.,
-.,(
"
~i
i~ffi
J~
.~ ..
,j';" "
~~
I. I.
"
>-,,,.~,._,.,,.
l
:
I
,
.. «. d:~~\4Jk.; ' -, ,,. '
,
393
[.~]~~~t~~ento dei processi. E s~at~ ~etto .che it PowerPC .segue ~ metoda .del punt~ 2 di ",Jfll, ~%.,r pagma 341.· A tale scopo l'mdinzzo vlrtuale e'su 52 bit} cornspondentl a una dimen.
;: ~~~ ..~,;si~.p.e quasi inimmaginabile. 1 programmi generano indirizzi au 32 bit. Questi vengono ~~~~1-...~rasformati in indirizzi di 52 utilizzando il contenuto di un registro di se~ento. In ,~·:'~prat.ca un registro di segmento non fa altro .che rilocare un blocco di 2 8 indirizzi ~i\S~ uno spazio complessivo di 252 . Poicbe ci sono 16 registri di segmento il processo ;"u~r~:i'~uo indirizzare 16 spazi di 228 . n risultato e cbe se i registri di segmento contengono ,:XS;"v~ori adeguati, e possibile mappare gli indirizzi logici generati da ciascun processo ,.-N·(..gu.~9ttoinsiemidistinti e non sovrapposti di indirizzi virtu ali. Si Doti che COSI. f~endo i,~(;,tnon accade mai che venga generato il medesimo indirizzo vUtuale da parte di pili ~~rp~ocessil in quanta gli spazi virtuali dei singoli processi sano effettivamente distinti in
-
lI -
\•
I •
f
I
394
",~~t
Capitolo 8
IIi~cr
,fi
- \ -
:;t-!r
.1"'"r" '
't'l~
:,~
Ii!.
l
-
~~I
~~,.
I
-
~~~
TABELLA DELLE PAGINE (HPJ)
~~~
1li~
PTEO PTEGO I
t:l D
L
Ui'§
'l~~
\l!!l. -~ 'l:"ll
''-
,.,,,.:z
\
.!t!~'
I
",', ' 1\
I
- :~
64 By"tes
!.r ',,~;
I:!; , '"• \lI
i
,'
'~
,lr
\lo.lore
hQ
•
I
•
PTEG;,{j=t:±::±:::Jt:t~j
"':.-f!""
,;"~' .q:n"'" '/ 'I~
"
.. 'il;'.~l'
•
-o
,\ •
V
I.
2~
31
<20 BIt)
,,', '>',
,~
r' . ·j,l.l,,·\llll '''T'Y\~i
~. '; ,
:.",,,,,,
YPN
Nune.-o dl PQginQRl/Q(~
(
2S 26
, "',1 \:;';':~f"D!''
R C
pp
't,,-- ", , .'""),~ ,," 7. "
."
-,,'j, . .,,:' '. ':' n.. "\ :.j,
Figura 8.42 Orga.nizzazione della HPT nel PowerPC, Un PTE contiene anche il numero cli' ':'~'111~, pagina. fisica (campo RPN)'a cui si riferisce i1 VPN. Ogni riga costituisce una lista di PTE. ;-,t'~~'·. 1, La lunghezza di una. lista e dunque limitata a 8. All'interno del PTE si trovano ulteriari, ~~;;;~ .-
I
campi, dedicati alIa protezione (PP) e aHa Ustoria" (bit R,C), II campo V rappresenta la ·~:~;:tlt· v a l i d i t a . ' ' o"".~l, :l.'.':?J;I" ,
l
".;·;t''!!;~: ,,": .,.;,>\.
.
\
\
,I \
La tabella e organizzata in gruppi di 8 PTE [lBM94b] [IBM94a]; un PTE occupa 8 byte. La dimensione d.i HPT non e vincolata al numero di pagine fisiche; essa e un. multiplo eli 2, mentre Pindirizzo di partenza della tabella cleve essere multiple della sua dimensione. D numero dei gruppi in HPT e scelto con il solito compromesso tra quante pagine virtuali si vuele mappare contemporaneamente e, quanta memoria <'sprecarelJ per 1a HPT. la dimensione minima per la tabella e 64 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, 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,
:"i'J
"l:'.ll:" , .," "," ",11 -", ,<' ".,S';:
,il,"., .. ,
~~l ••
!,tlh';''. . t,~:
La memoria virtuaIe
395
r~'t,,;
, !rt',"Jr. ,". ",~ , .1',"'J ..•
ih,,:~':-
~(,·t;
.
~~~t: jl nurnero minima di gruppi di PTE
e pari a 2(26-12-1)
= 213 ovvero alIa meta. del
.~}~w: numero di pagine fisiche (2 14 ). Essendo ogni singolo PTE eli 8 byte, la tabella delle IJLf1_..-pagine. occupa 8*.8* (~13) = 524.288 byte oYVero circa 500 kbyte. Si confrontino questi
.:.(::.. numer! con quelh datI a suo tempo per la PMT.
~;1';"" .
La schema della traduzio~e dell'indirizzo e in Figura8.43. Si nati che un a.ccesso ~~~j~> pub portare all'esame di due liste (quando 1a prima non contiene l'elemento cercato). ~f.~~·"·' .
~r)l; ';",:
.
.o!'1f,ll,,_ ,': ~"~' {:ii='-" ",.
.. '.."." z.:.; ':' .. • '..r.~
J9 40
.•\: . ''''''h: !Jl(;<.... "
Of'",t
N""...o I'GO"'. Vl,.t ....l. (V'PNl
,,,,,.'. r~i',k}.
:)1
Indl,.lzzo VI.. tuGle
;i;;>i\it; ," ~if':"
,,~~~:l:" ..
,
I.'q~:~,:" ll1i<,.••, .'
.
'~~>"
~~~,(.-:'
r."~,
"
o0
,
(I' BIt)
0 0
• •
.,.
•
.'
.
"
run:ll...... t40.,h
.---"
HPT
." ,
B Jyt.
I'TEO Pl[(i(l
,
•" ,
,
•
.... ,
,
, ...
''''--_._-----
. 1I1S~
I
1'1[G 64
Kl.. I' I'ttG
2.25 U
"v
v'"
N.......o dl
•
Jyt~
P"~.Gle
(IlPN)
•
"
"
..
20 lIT "'-ro d
F>.gmR.o.t. Will
, .. .
C,TS(T
"
_.._-- ._- --
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
"
:
'~
' ""
39~
'
:
, "HPT
,
"
~
:.'~,:,.'
, 'PfEO •. . I '
,
..
.
'"... i: ,.
.,,",'"'"
_"71".--,:,:,. .- f("l
HCVf'NA)-30 '
.. '
,
•
H
..
,," < : ,. '-' .. ',
"
~
,
V
2~
,
',-
..
,
,
;"
:~
'
j"
., ' ': ,".; .~~
;;,
,,' :,!;
".
.
.j,
.... I';
,',.:l'l', '.'- -
'I"
•• '"
.~;,.
...... <'
\
"
I..
•• ,
'.:~, ';'..
"'f! ·i.~t~;;
'.
:.th~».~.
:; ""
.. '.
"ir:'::;1;1;~~ :'''~;,~
,
,
-
.,' ,... ~.-. ,..... -" ..... '.. ,- -',
I
.--
... . .. ·F1· ~.' ..... ~,.:. ~PN~'
,"" '. . , •
2~:'2'5l"6"
J ':.,'::' -
QPe
R?N .. 100. .............. ,
." '. .'
;
j,;r~~
V~"
,'. l' ~l~~ .
~T"
. R
,'::{~tt
3\ :..
":"-~.~;' ",
-
•
.n
"""'~:H:\,; .':'I':?,i\l;Il:T
o
"
26
.:.
.'
I i , ~" ','" ::!::::::t::t: 6~ Bytu 2:~
" '
'" .. ,"'.' .,
VPNA
RPN • 100
,. ,.
..
:t •
'-r'~~' ,.
:.: ", ·';.":;r::.
,
-
f;'Tf'. Ff?
':','" ,. .
'-
"
0 PP
)~:'~~\! ~u·;;c.'
. ~'J.~
:.. .
Figura 8.44 Esempiodicondivisionedeliastessa'paW~a"rysl~3:;-tIPfocessoAmdlI"lzza13.·;.~n~ pagina virtuale che genera Pindice. 30, mentre il processo B: genera I'indice ~.5, pu~tando a' ';~·~II
due gruppi distinti di PTE. I
8.11 . ESerCl~~' '.,.
•
~erenti
.....
\~...
"
c
PTE possono
puntare'.~lla~~~~,~ ..~agln~
:. .
".:_. ~.~ .. - , .
~!f:If~
Mica,
.:;~~~.~' ;-t~'~
: .. ~
:'~,~}~~
. ; . , , ; :. ... , . . . , . . . . ·,~';~~~i Si supporrga 'cbe lr: PM'r Sla a due hvelh. Sl_considen un SIstema con ':~;Ji'
Esercizio 8.1 due processi pI e p2~ sr~upiiong~.di parnre con memoria completamente sgombra e si ipotizzi che a11'a:\rvio di un processq ~l s,4!~eqJ.,a_operativo c.~richi Ie ~ri~e ~ pag~ne: ..~~"\r.~, Dopo che i due pr;oc~~,.s~no_~~~ti.~~~~ti.s~ha q~es.ta sequenza .del n~enr.ne~tl ~l !~~~j::; pagina (si riport~Q.§,qt9..r~ ?:~?~~e_ ~9P .~~dlTlzzat:. ~ pre~e?enza; 11 pedice mdlca d, .~~~~~r., processo che ha ongihata-ll nfentnent.b): 'i;lf
;-;lq
~ 21 22 5 ';::f.]i:·\, ' .... '..7.h81-.02'~1.~ 2, 2, 1 ,,·:;,~:~'~t· Ispirandosi alla-.~appre.set;\t~i9.n.e ..,~i _~i~i~~·5, si tr.acci uno s~e~a dell~ stato della.;~,:1: ~ memoria e si djsea-n;'la confi@razlOne ralT~unta dal due alben dl traduzlOne. 'I,?.ti: , '. • " .... ,l:>~, - ~",._~ ~,.,.- :,~, ..} . _... R . . . '.:1~~1 E'serciz.it?:8.2~~YD'-sis~eIl)-a: .9,J.P,~~J.i~ .~irt.uale presenta qu~t~ ca.r~tt~nstIc~e: (a).,.:~:t., iildirizzi.:Yu:tu31i ,s\L36_b\t;, (.b) pagin e di j6 kbyte; (. c) indinzZI fiSlCI dl 32 bit, Un F~;:' elemento della·tabella'delle: pagine deve contenere i seguenti campi riferiti alIa pagina: :li, ,'.- ...:....,
pr,esente~·.~~~7a~~i~feri~a".~~.b~;~~~e.~t.L-per:,.~;s.i~t,e~~·??~r~~~v~':.r:.~~~,~~~,~~~~,:0~~,(, legge1s~ttve·p;ar~l.e a:,wne::t~ a·'3,.2...b1~. '; ' ... ~:'j .
'. "',.~:: .':' ,,', ~ ,,;' .,;" '_.:.' . . ,;'~
i : .•
_,.'~ ,:.:,~f~
Si 'dis,egrind sCheilla-della ttilduzlOuedeg,li mdmzzl;' mdlcandp la'd1lnenslOne cii tuttI \_, i"'cahlt:5i", esi VaH.iH 'quliiitcf occtlp'i l~"·tlbell~~d'ep~~~p'*jiri,el"~f~~~cl;1ii'.p'r?~~~~!=f~·,,'~~~,'~;;~::,~"tlL.' , • • .~ '1" '.-; 1.-',"1.'" '.' ,." , '~ "f> ... , . :'. , " Eserclz10 .8:3 Splegare p~rche ( T~B ~anno .dunenSlOnl di PO~l .eleme,ntl (8, 16d."\~,,', 32..). Posslbtlmente se oe dia una splegazlOne dl carattere probabiltstlco. 81 assuman ,:V,'!..~·, pagine di 4 kbyte e parole di 4 byte. . <~~, 'J. C~ ';" : .. ';: .: ". ". :'.:- ., ,;'.. ;./~.:. .~~. :;,~;.~~ p ta n 'EserclZlo8.4 n~.lsteroa tit ,ro~roonavlrtuale:deltE~erclzlo ,8,2: res,ell ,u ,TLIl :1't -~ due· VIe, p~r ~n totp~e:·tii ..64 ;?oS~Z~OO1~'.. O~l" eleme~~ ,~el.=~1.B!;,.Q~~~ lal~~':~9-fY .0, t i·{:t.~l~:. ,ser~0noal:la.co.ny.erslone"~ell md1I1ZZQ,.. c~n~lene"un. bJt d~..yab.dlta, .~ill. ~l~n ~u~ bIt~ ">,t;,~, Si disegni 10 schema del TLB, comprenslVO della parte che 'rIconpsce:J .hlt,,:,md1C~an~O ,~~t
'+r$
.'... :).>:,',....' ,::.,
!':-:.-: ".. .
<, "'. Ii.:
"'e
",:,\\',
..
~","'
I, -
........ .1- '
"'" . r= fIi>-.' l~!,..c· "
_~[I::r\,
:--,'tl,Lll .:,
~~l'~f:"::
La memoria
'l~~~~:'o • ill~ .'~ ""~" "f!',' ,,1.
• q' ',. ,., ••. >
~ :4~rJ""
"~'Jt.~'.
'
viItu~e
3n
.
"
;?!~.:~~:\.."'~'l""
"Ja.. dimensione di tutti i campi: Si..detrmini' quanto:vale·il numerp "cgmplessivo, di,·bit ., ." . " , ' " "" ,.' 'ch' t' 1 aI' , d 1TLB ' " j~i~;:~,:I,'.:n_ teSi.pec,~Te·rzzazlOne·e'.';:"';".-',' "'_,.: :.",. "'::,; ~," ..
n.l·k: 1
I
E~'~rcizi~"8~5 ''A'valle dei TLl:;··d~il;Esercizi~··8.4.~i:.tI:O~~ '\ll:l~ c.a~he.:a,'~;~;:p·~~~~ d' 256kb I ' d ' 32 b
\-
~~f,. Si'~~seghr:.l~.s'ch~ma'~e~~a,cac~e-,'comprensiv~,d'ella pa~e'che'nc~n~sc~·.l~t~ in.~l~~d~
-
I ::
.1 "1r"'" '~...,l}h~:.
diretta
1
yte e
me~
1
.yte.
. .
..".
"
.;~+:,.. l~j(brriensll:me dl, tuttI 1 campi. ~uanta yale 11 'numero.complessl~a d~ bl~.tl~hJes.tl .. p~r ~~~~'~::" la reaUzzazione'della :parte TAG;della··ca:che, tenend();..anche. ~onto·'de} bIt;df"validlta? ,"~I;'
.r,,:
. ';,
T.:'! "':r .
. . ,
~~~~r
".
.
Eserciz"io.' ~;6' Un. 5is~erna.'.·a mem0ria:~irtuale.~~~'at:a! ~n~r~ ihm~~~E·~.~~. ·su' ~~ ;~~jt~r' bit:..,:L~· pagm'e' SOITo ~1' 8R. La tab~lla:~e~~e.pagm,~'e'~ ·211vellL ·Per.il. p~O'.li,~e~? SI: .!~;;trr:,,·,.1is'ano·i 12-bit pili significativi"dell'lDdmzz9. De~nlilb U forntat'o·del~geneI'lco elemento ~~~;',: della :~~bell~;~~lie-~a.~~}'si ris~o~nda'~lle ~guenti do~";an~e:' a:). ~~a:~~~ s,?azi~·~cu~3: ,~,;,.. " la:tabeUa dl 'hvello'supenore con 11 formato assunto-,? b) d.i quant1- blt:·e, fatt? il.-camp~, ~foW'~''i:~:j(' dell'indirizzo virtilale relativ0 ,alIa tabella di livello:'inferiore?" c) 'q'' uailt6 e':gr'ande: Hi ~~:' ~abella;. ~i li.~~l~~ ~~~ior~? d) .~h~ f~.mato avrebbe ~. gene~~ el~~e~to.d.i~,.e~,,~~~.~~ ~tlffi;,;;'~~~ ... TLB?" , ... ~.. " , ... , . . .' ." .. '._ . 1 . \ , __ '~ ~r:t:'"
:
I ~t:.
~~~'':-
'lij;~t', '~'~~:':
I;~~
:~~~r:,
~!:f.-':.
~'Ii:!~'"
~~~'!" ;.'M~i?:'
.~ l~iJ::~~,',
"
",',
...' ;. . ,. . : . .,.'
.'. "
,.. ,.' '. ...: '" ,
1.
'Il. '
~J~!j,.', Esercizi~
8.8 8i consid~ri una f?ac~hina con
'pos~ioni.,
ta~ella
b~s dati a 16 bit ~ b~s. in~.izzi a.24 bit.
.~~~ . " La macchma e dotata dt memOrIa virtuale paglOata e genera rndirizZl virtuah su 30 ~~~{. bit. Le ~agi~e (fisiche e logi~e) sono ~i 8 kb~e .. La tabella ~ell~ ~agine e organizzat~ :'I~~r,:,:: su due lIvelh. La tabella dt secondo hvello e dl 4 kbyte. L mdinzzo della tabella di
~tl'f~:;:'" primo Uvello e contenuto nel registro PTM. . ~ist:'. Si richiede: il formato dell'indirizzo virtuale, con 1a dimensiane dei differenti campi; il :i~"'lii:'i~t formato di un elemento della tabella di primo livello, can la dimensione e il significato ;'1. i~.:"", dei differenti campi' il formato di un e1emento della tabella di secondo livello can la
'r::ii<" di~ens~one e ~l sign'ificat~ d~i ~~renti ca.I?Pi; l.a dimensione in byte della tabella di ~. :;~;~, prnno livello , 11 numero dl bit mInImO per il reglstro PTM. 'El,!, f1;
';1:7,
;:2,';" Esercizio 8.9 Si consideri la memoria virtua1e segmentata della famiglia '86 (per
. ~~. \ti;,;:'." comodita 8i faccia riferimento al 386 .,.'1·;.t,:: Si richied~
0
at 486).
in riferimento .alIa sol~ segmentazione: la .schematizzazione dell'in~riz ,', ~.~.,; ,: zamentOj 11 meccanismo dt tradUZIone e 1e tabelle che mtervengono nella traduzlOne , .I.• , f~'," dell'indirizzo, ~i~' Supponendo che all'indirizzo CSO: IPO venga eseguita l'istruzione JMP extraseg, che \. tii1~r fa passare alIa poSizione extraseg, di un differente seg,mento (.CSx: lPx), illustrare: 10 1! ~~~.<~ stato dei registri di interesse prima e dopo .l'esecuzione dell'iBtrozione; quel che ac01~~\~:1'. carle in CPU per effetto delPesecuzione dell'lstruzione nel caso in cui il segmenta che " 'J:"
'. ' .It'~ .. ~"-"
(
1--
" '• .
Esercizio 8:"'7'· Un calc61~tore ~n' ~~s dati a 32: bit, (D31-DO)" 'ge~era gl1; iIidi'riz~i di parala (4, byte) sulle h~ee, di .IDdtrl~za A31-A2. 81 vuole costrwre ,una me~an~ virtuale pagmat3, con pagme fislche dt 1 kbyte e con tabella delle pagme a 3 lIvelli. La tabella di prim? Hvello (livello piu alto) contenere 128 la di livello intermedio deve contenere 256 POSIZlOnI. La tabella dl pnmo livello Vlene individuata attraverso il registro RP. Si disegni la struttura dell'indirizzo virtuale, il formato dei PTE contenuti nelle tabelle ai diversi livelli, il meccanismo eli traduzione degli indirizzi. Si supponga che Ie tabelle di primo e di secondo Hvello diventino di 512 posizioni. Come cambia la struttura dell'indirizzo.
.d~ve.
t
f
!I-
r}-
I-
f-
I-
-
398
l
-
-
.
.1,l;
~':;, ,:.,:.'J~
II" l ~. ,'
<~ ~',~~~:t, :~~ ~ill.:·
Capitola 8
;,,;"l'~;'
~~~
,-~~~
contiene extraseg e presente in memoria; quel che accade in CPU per effetto dell'ese.• cuzione dell'istruzione nel casa in cui il segmento che gmtiene extraseg non epresente ';_~II Wff in memoria. Per Quest'ultimo caso , indicare la modalita secondo cui la logica della :':~~ ~, CPU 8i a.ccorge del segment-fault. . :. '~~r~~ , ,. , , '
I
I'
- \
.
d~ .~~~·i' ~:l.~
-
Esercizio 8.10 In riferimento al rimpiazzamento delle pagine con tecnica LRU J 5i lin.ei .l'al?oritn:o de~ sistema oper~tivoch~ l~gge i bit di.pr.ese~za, aggiorna 1a statistica <-".:,~~. :~l~ del rifenmentl, decIde quale pagma sostitUlre, azzera I bIt dl presenza. . ,';;I~·;, i,~
I -,I
;,1~~~':~l
Esercizio 8.11 Si faccia riferimento aHa Figura8.9 e alla sequenza di riferimenti. ivL consldera~a. 81 supponga perc che 1 Dume:} dl pagma ~lrt~ale 6~ e 96 S1 mappmo :=~}~j1f ' '; ambedue In .5. V~care co~ accade. se l.a ~sta ~e terrruna 1.Il 5. vIe~e a:Ilungata: con, .;~~~~. J~N due elementl presl tra quelli ancora liben (11 6 e 11 7) per Ie due pagme ill questIOne,' ~;,;~\:J;: ~ ... (8i suggerisce di considerare il caso in cui la posizione 5 entri a far parte dell'altra '~.\~f: :' ' lista rispetto all'attuale e cbe non ci sia una lista che parte cia 5 stesso). . \~" ;:.~t
"
/(
"
"'1'
•
\
". .
.
,.'
I
Esercizio 8.12 In relazione all'Esercizio 8.11, supponendo di considerare il caso in i::~~~,~ ~ ~·~ c~ non si ha rimpiazzame~to~i pa~a, ovvero. che ci 5i~~ pagine. fisiche disponibili ~'~l~i ~I 51 metta a punto una tecmca eli gestlOne delle liste cbe eVIti mconsJstenze. '. "Ari'~, ~I~
\
';''!:~~ ~ilf .; '~'~ "i'i'
•
':~~~~' ' 'It±l!'
'"1 .','1 "\1.~'7 ,.v, .J
~,~.~}.~! ~~ "::-t'?~~ :~~i:
,>;~~~, :~?~
\
':':'::W"i", ~~I'
';,:-~~_i~" ~~ ,;:;!:~ "~~~;
,l
~'?~lit<~
~~: l~4-
<1~~f; ~I~
.;'d~1J,j; ~;ij .'f~·: '; '
/-
,l
"'."?!,~~,
:.,
;"':\~f~ .~~
':':';;'ii~ ,1'
.~;,;\; ~l
',~~~i:~ :;t
:,::~~~a, ; ~
',);;:l-~3 ~;'
':~~ ~~
I,
.;·J:~!t~~i ~~
..
\
...>~1l1 "Jl~ ',.;,.,W;., ~
.•" •. '
,-
"'~.
~' .I¥
'.,.
,
-
. , $"
'A~;\~~
. ,,~j.j~~ :~
,::i1\t1 ~, >{-
.' ,r}) ·,of.'· , '; ;\~ I,>~
:' IS'&{
\
~ ; "
'1:'''' ';1",
1\.l;:;:..
.
~~~:r ,I.'<''' .
l~1 ,'1';[";':'
9'
~:'_ •.
v. .'
•
f~r-:
',~,>"
.,.,
'~~1C~;' ..
~~·;:;t.'
La protezione
~":~~
~~~t>,
lli!;) ... '~(~':;':,:,,,,,,
NY'-,"
.c;g\~(,~.,:.:
'k,~t . . . ,
t~~!~~~;:;:
' ."
",
~f~t·. I~r
.
~:~~-:
f~d!L.•"
- "',
'~~,,';'i:;:;': ','; . "~.'"
,
i ~ .. ' 1"~'I'
.
.
.
e
.
.
.
.
.
~~;r: lJ;I u~ ~Istema a proces~l, concorrentI. neces~ano che ,gh .ac~ess1 SI~O contr~llatL .In ::0!.;·,:, t~rmmi molto schematlcl: de~ono esls~ere del rpeccamsUll ~ pr~tezlOne per .1llipedlre " ~~~~:'_::;', che un dato processo .acceda 10 m?do mcontrollat.o alio SpazlO d.i memon~ d.i un altro ';~~J.l' . processo. Per esemplo, non deve essere consent1to che un processo scnva nell' area ~t;f;: ~ dati di un secondo 0 peggio aucora the scriva in una zona di memoria in cui risiede il ;~'~.i;,'.; codice 'eseguito da un altro. Si puo immaginare che ogni processo operi in un proprio io virtuale degli ~n~zzi, is~lato e separato.da .queUo d~ ~tri processi. Can 1a ~~~~(:" -w~:'.r~_; gestlone della memona V-Irtuale 51 mappa 10 SpazlO vrrtuale dl Clascun processo neUo ~~f"::_, spazio fisico di memoria disponibile. j~i~;f"':: In generale la g:stione della ~rotezione :ientra tr~ i compiti ~el sis.t~maoperati~o. '~+~~'(. NelPespletamento d1 questa funZlOne esso 5J appoggla sulle funzlOnahta cbe 1a loglca ,g~i(:./,: di CPU rende di5ponibili. ~.t~:;::' .Nel caso dell'architet~ura x86 (a partire dal 28.6 in avanti) l~ logic~ di CPl! '~. ';:&:,:. formsce un efficace e sofistIcato supporto per 1a protezlOne e per gestlOne del process!. l~~~Y:_ Non si commette errore 5e si afferma che Ie soluzioni adottate in questa architettura t~,ik~~':" sono quanta di piu raffinato sia stato proposto a livello industriale. Per questa motivo, ~r:B'\;~,' l~ p~te che segue ~llustra la protezione e 1a .gestione ~el. multi~king c~n esp~i:it~ 'i
-
spaz.
,:'"
¥i!1C\.)•..
1!,~I"·' =~'i!.>'.~,-
.
"
dp~:,
$"""io" ..
~lt~ 9.1 La protezione nei sistemi Intel
~J~~:,-"
~,~~.'-
;,,~~/,. ,
"ti!'~ :._ 1Hl._,.
't
;$;',
.r"
9uando.la CPU ~avora in modo protetto i rneccanismi di protezione operano sia a hvello dJ segmentl che di pagine, n modo protetto corrisponde in buona sostanza a
400
Capitolo 9
iu~l1o che rende attuale 1a gestione della, memoria virt~~e.
p~rt,i
Come.detto in altre a:~l, libro, alPatto della messa sotto tenslOne 1a macchma esegue ill modo reale, elOe
come se fosse un 8086 (fatte sal~e le.ovvie differenze rela~ive aHe misure d:i registri. ecc.) e la gestione della memona vlrtuale e della protezlone a essa assoclata sono 4j!il~bihti;l-w~ )ljp~~'ggjo a1 modo protetto si ottiene semplicemente portando a 1 it
bit r~ .~e~,~e~~~r.c:> P~Q ~ ~9~. t;:~? v!~':.l~ .. ?b~it?-t~.A ~~~.c.~~~~~2.Ai P.Eq,~~;i?,J;l,~ d€j~ ';.;:~W\ segmentl. II meccamsmo di protezlOne di pagma vlene ablhtato solo se ablhtata la :~t paginazione e cio si ottiene portando a 1 il bit PG del medesimo registro OROI. ::'~;~-, Quando SODa attivi i meccanismi di protezione, ogni accesso alla memoria viene ',~'~'~ft controllato al fine di garantire che esso non viola Ie regole d~ protezione. I controlli ,,~,-;. vengono.eseguiti p~ima che inizi il ?iclo di memoria e,. in caso.di violaziqne.del.le )~" regole dl ~ccesso, SI genera ~n'ec.cezl~.ne.. contro~lo ~lene oVVlamente es~gUlt? In F:·q.;~ parallelo nspetto aUa traduzlone dellmdlrlZZO e qwndl non produce penahzzazlOne '}~~!i1 nelle prestazioni della CPU. .;'.:~~~ Prima di poter passare a descrivere i mec~anismi di protezio~e e necessario a~- .'l~i profondire il con~etto di d~scrittore~ ~e nel ca?ltolo pre~edente dedlcato alia me~ona',,:i,,'~:: virtuale era relatlvo solo al segment! dl meI11ona. L'archltettura Intel prevede un altra ':'~:'~ :." classe di descrittori, quelli relativi a Uoggetti" di sistema, la cui c?mprensione e ne.ces- _'?~t saria ai fini della comprensione dei meccanismi di protezione. E questa I 'occaslOne ,:~"f·~:::, per riesaminare il.meccanismo ~i rispos~a. alle eccezio~i e. al1.e interr~z~oni. ~fat- :J:;;}~', ti nel ~ap'itC?lo de:di~ato ,;U ~otto~j.S.t~p1? ..dl ?,~~~~~/'ts~l.~a,.,U ..~~~~~~a d,l Int.~~~~~IO:O,~ "~~@Jf d~Il'ari;hite~tu,r\\',x.~ji;e,;st:~t!!;,il!~>,tr~,t~ \" ~1f:e!J,Il'le~\~,aJ),808~;m, !l'!~,~.t~ ;\1'ac0'\ji~,Ia,~;W tap,ella del vettop dl .mt~r~lOn~ ~ ill, PO::i,~l(~rte {issa, a: RfU:tI.re ,<;lalla.ppSI2iI?,~e., .~~F(l. :/·i,{'. Q !'Ii memoria,' Nej, fu~zio~ainert(l,in:i:tlpi;loprotet£9 ,rd~p8?iiJ,pqi)1~,ta:bella: d~i',\\'!iii ~ettoii',~Jpterrji.i.orl:, .i)1.i9",~~~.re ·a.lh:~~.t~ o~q~e. ~,eUo, SP.~;lo'·Jdi)~~~r?~r.r~ (rs}~;~l-}::;~",.
..
.
e
!l
~eJ"sis~erp-a,,,u~ ~~e~?~~ M.g~~~~~ ~~ ?e~e ,~s~r~ ap~ro,~6n,~lt~.-pr.I~~:fh}offrp'~~~~,~:}{ I? p~orez~9n~,.~,qtl~I~9 ~~latrv:q alta; S~~~lpn~
:':>.: ;;".:,,'
. '.
:".
.
\~ I.: .. ,.
9.2 T descriUori e' la'lo;rofunzlOne ' ,'. " ,,_..
,,- .':
I',
,:l: I .. "",
_'!' .. : " . ,
:_"
.'
I)
.,
,
'\'.','
"
.1,:,:.
'." .,"'" ", ',',
.
, . . ,\1".
e, .com~ ~ali,~. ~~cn.~t~ ,at~r~V:~I;I}~,\l.q d~s~!~~?~ .. '. JnqltFe ,: ~e~'p,~~. c.Qqidy~ p~~r;~t9,r~ <,;, v~qgo~o, WQ.P/-!~U~~ l~. -,t}osld9-e~e ;Pt?rt.~, E}p..~!~a ,<;h!3.. eflj:.r~O! I~; glOCQ J?~I rnE}c
:"':,)'"
",.,'
:,1·...
,.":,
f",;"
·.··'~~L·
protezione o.onpossono ess,ere Ijisabilitati (nqn c'eimodo ~ riporta.re PG a 0, mentre PE pub:· e:ssere: a.zzer~t'o/rria cib' ha.; i'effeitd' iii =rjp0na.re· fa fnaechirtar in modo reale, facendola funzionare come un 8086. Si veda il capitolo dedicato a1l'architettura Intel). C'e ~0!'!1~qu~ ~odo ~ ~ficare 1<;1 p~o~~io~e p,i ~~gm~J!.~ (d~do a. t.u~t~ i. ,se~enti iI Hvel!o.~ privilegio Ore iIi patina: (portando'a: O:i1 oit WP di 'CRO'e ~ 1 i 'bit· 0/5 e RjyJ'nei'PTE d.ell~ tabilll~ dell'e .pagine ad' ambedue i' liv'eUj} (Figuta;8.39). , ':i '. :,,' .. ' .' ': .' -: . :.,:',: ,! i .1,; !:'.I\ ':; , <~ lUna volta abiLitati i meccanisnli
4~
!.,"
-
l m;~i. :-" , ....
.",.,~
. ~;ij~"'!~l ' . !l\;tX .;
~I~' ..."I;- .
-.~~:l ~ ~
-",
"
III,,:',,. ,W",
'~~"" .~".il''''''' ~~,
La pt:Qtezio;ne
401
.,
,..
r-
"I:"~' l, ...' ~'.',;
::~~'%f::\~':'_~
I descrittori oecup'Mo sempre 8 byte (nel 286 due bYte non sana usati). I for')~!>:';" ~ 'mati sono diversi a secoJ:!,da. deU'entita descrit~a, La :p.atura delPentita e, quindi , del
:~~.'~:C -descrittore ~~~SO, ~ 9~~nita..a~tra~er89).1 by1;e ~. A~ Capito!~ ~ ~ ;Jt~~';p~~ept~~ f~l;~l.·;--,'., it contenuto di ARB solo per quanto era rilevante ai fini della gestione della segrrien-
~fJIW%~:~'.'.' tazione della memoria virtuale. Lo studio dei meccaIDsmi di protezione richiede che
\' ~~~~;~:;:'~';":'
t ,'
si entri nel dettagli? dena struttura d.i A~. Cia sara fatto ,nella ~arte ~e segue. ~~8:'. La struttura di ARB alquanto mtncata , anche perche alcum campi non hanna d~$l~{& ...:·. significato univo~ e·la IOIio,ir),terpretazione dipende:da,altri c~i:;'Fdue;6eli Campi :'~"~~~i;\;!;;~"', che:h~-nd signif1caoo. univoco sono Lcampi.:ppL. e:.S. (Figura.9.1).. ·lh:ampo.P, (Bit) 'ha :%~~;;y.:.:""" significato(quasi'univoco.•.:' , " : : ;". ,::', '.".' .".:" ': 'j'.' _':.:
..
tW~
.~ " ;t~f~./;:"
~ .-',"I~r~;::~?:,:, 1J ,~·~'.~t\',.,'
e
',::,: .. :':', ;'/"
I.;""
"
J'!";.
. .. !~ .::."
.....
':'~""
:" ,:.:; ......
~
.
,I ;i~!~~~r': f' ~~~l":/. ' !)il'.;~(' ',!~,r:~,~'"
"1"('. .l ~ -';~h'
7
GDfL!
,,;,
",','
-',
.'
I
.'''' .':.
'.. ,. ...
n CatrtPO PE!e(Descrjp,tor 'pr:ivil~ge Level)
,y
•
.""
"
,"
• II c~mpo S (System) preclsamente:
, ~I~'~\>,
t-
-
II-
<'
,',,',',",'
• •, ' , ;
(bit 4), discrimina i descrittori in " : .
du~ grandi
. .. ':'.. '. .', ',. '.~
' . '..:.,
classij piu
"',; ;
,1
•
";,
,.
~,~:f,!:.., "'.:'.'...- ·s· = ':0: 'd ~s$=n .:,'Ott'>on'. ·d·· '.. '. t' d',- -~. ·t·· '1. --I ,' • . 't't-,'. '. "d;; rt"" '. " 1 segt:P;en I I SIS ema e.uescn on I po e. " \~';'; J4'~ ", ;';.'. '<: ;"., " : .'" :',.' ,.'.: :.',.," .• > ',': ,'. " ;, :.. '. :i. ' .. , .,'. ". ,( ~, :~ ~~~~y, n camp~ ~ (?it 7) ha ~ignificato quasi u~iv~co, n~l senso. che pe~·i'\de.4~~ttori eli " "~:'
.
'~W\<, _;"segm~~\
;:.: :"S~.9. <;i.~.d~~p~0n,,91 .s.~~~':~9.,ql.9pdIC~"O ~~tl, (S .1)., 1.';m~lc!1ZU?~,.y~do/n~n '~l:'~\;!:" ,.val\d,~:,equ'.Y;;l~alltnd\c\l,Z'Qne.idi~egIl1en~opresent~JI)onp'r~&e~t~ \J:'. memOrIa ~i~~4:~ '." ::: (P~l;i.P.~~~eR-~e!,r;'"'Q: Aqn,p:r~sen,t~l._ ,,', . ~:.I ~'~~;<
\fr".;;€ ~'}W~
-
(b1,t 5-6) ,PUo.""sllIDere qpattrovalori " . ,rhe rappfesentano i diritti. di accesso.~sQciati aWentita descriita . ,
,,f,.
, :", ~ t.)~.:·
,:~ @ 'l"~:'
I
4.
"':''''', .;1-: .,,"
•
,.:
0' .i~', ". '1/ ,.\',' " ,- ."':, s'~. . . ~, '~,,\r~.l~'l,.,.. . .~ .. '; .': i ' . ' ... ' ;r' < i~ ;~J:,~~1~' Fig~ra. 9.1 Fo~mato del byte ARB. I campi'DPL e.S hanno"si~~to·,uni:voco.,n ~po P ~' i: ·\f~~,;\,::.'" ha. .slgnlfi~at~ dl se~ento prcse.nt:/non pres~nte per S . ~, ovvero dl descrltt.or~ valid~/non "c ?,!Hf:::'.:':. ;'(~1.h1, p,er "S.,...O.. ,lr~.. bit ~rat,teggta.tl 'ye~g~I).~ l~~.~rp~~t~t1 lQ,.. ~.~e a~. .....,:' "-,," :-:,,~~{X. ;:', ;,_!. ~~:. .,' • •' ; ..' ;' -<" I,. ' . ,1:--, ". ., 'I' _. .. ' it:~~,,..,:! " ! . , ~',,; " .:. !'. ., " :,. '. ,
'
~-
','.,
"_.;;:"
I" ~
-
I I"
per le due classi di descrittori individuate da S.
,. _ _
_,
_
,
.
9.2.1 Desctittori di seg'ffiE!llti di codice e di datj.{S=l) r . I
. . . . .
l;~:".:.,., , .. ,: .'. ~-"'" ",
"",1
••: . "
'.
,.
"
•
'1':,
'C!
.": "';.,.:\'11 . . . "
" lrr6tina~o del 'byte ARB e riport'aloin Figura ~.2:·Del ¢~p6 Capitola sulla memoria virtuale.
,"
. . . .
. ... , .
"
. '.,
: . . r.. '~.:
.. "'"
A S!. e ,gjaparlat6 ill . ",
.
2Quando si parla di segmenti dati si intende ricomprendervi anche i segmenti d1 stack.
"
~ •
-
-,
I
402
IpjDfLI ~ I T;fF~E jAI
\
\
-
-
Figura 9.2 Formato del byte.ARB per i
-
di codice e di dati (e stack).
I n campo TYPE (3 bit)
identifica 1a natura del segmento e ie operazioni consen-
tite. Piil precisamente 1a natura del segmento· e determinata 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. ,
JI
• SEGMENT] Dl COD]CE
(E= 1)
Gli altri due bit vengono indicati come R e C. R -
1
Permesso eli lettura. Se questo bit e disasserito 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 segmento di codice detemUn3 l'eccezione 0.13 (eccezione di generica violazione di protezione) .
•
.
d.~crittori
I
•
-
Capitola 9
~
C -
[
Stabilisce se un segmento puo essere condiviso da programmi situati a livelli di privilegio diversi da DPL (si veda. piu avanti).
• SEGMENT] DATI
Bit eli autorizzazione alIa. scrittura. Se asserito indi~a ebe e consentito modificare il contenuto del segmentoj in casa contraria e consentita la sola Iettura. .
ED -
I ! I j
(E=O)
Gli altri due bit vengono indicati come WeED. W -
(
Bit di conformita.
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 e verso gli indirizzi 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.
IE = 11
c
IR I
!E=O!ED
Iw I
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.
,
,." La protezione
403
9.2.2 Descrittori di sistema (5=0) Nel caso dei descrittori di sistemail formate di ARB diventa queUo d.i Figura 9.4. Come si vede il campo TYPE eora di 4 bit. La Tabella9.! elenca i possibili descrittori. Quelli a 16 bit sono per compatibilitA col 2863 . 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 effettivo 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.
I IDfLI I P
0
~n':p~
I
Figura 9.4 Formato del byte ARB per.j descrittori eli sistema.
LJ~~ ~igniifcato o 1 2 3 4 5 6
7 8 9 10
11 12 13 14 15
usato Segmento di state di task (TSS) dispocibile (a 16 bit) Tavola (segmento) dei descrittori locale (LDT) . Segmento di ,tato di task (TSS) occupato (a 16 bit) Porta di chiamata (a 16 bit) Porta di proceaso Porta di interruzione (a 16 bit) Porta di trappola (a 16 bit) Riservato . Segmento di ,tato di task (TSS) di,pocibile (a 32 bit) Riservato Segmento di stato di task (TSS) occupato (a 32 bit) Porta di chiamata (a 32 bit) Riservato Porta di interruzione (a 32 bit) Porta di trappola (a 32 bit) NOD
Tabella 9.1 Codifica del campo TYPE del byte ARB per i descrittori di sistema.
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,
.:~'.:,
. ~i3 -:';!\ .,;,-
:·-..jtl
'-' •••. ~
Capitato 9
404
. ;:_:~.l
_:'0~
·",'i:
,,-,~~j
"">.:;11
Di LDT si e parlato al paragraio.sulla:lilemoria'virtuale:del·.286; di.'tSS..e··del relativ~ descrittore si parla al Paragrafo 9.4.1. Qui di seguito vengono presentati i formatl de¥e,porte. ! ;.
•.
: '
"
•
.
•• '
:
.
.' '.
••
:'
'I.~
'. ;
~'
..•• :
.
."
e
J
Le pqrt~.. son9, ,degli speclali.. desqlttOI:I dt. Sl~t~m.~ If. ~Ul scopo guello ~i: ~~ . trf1S.fe~ire: il ..contrq~~,i.n. m~do :l~c~mroll~to.". ~ss,e ~nt~9d~~ono un .~i:vel~o·;dl mdlrlzzamento mdlretto (tramIte il selettore cbe punta a. un descnttore nella .qo.vuta t~vola) t~,~.la sqrg~f.lte ~ .I~ d~~,ip~.io~e:.. Qu.~,~ liv~l~~ .d:~, ~.~~.iriz;z.~~:e~~o.~.~.~,rett6 s,erv~ ~l1a .erU p~r, effe~tu~e l,<;optrolh CiI p~QtezlOnEl, ~e reJ~tive::rn.99-aJlta verrannQ ~~m.i'~.~t.~ pili avanti, n.e~a s~ae' opp.ot'tuna.. ' ',. ' . ~. ' .' ~.'. " .. : ~":. ' :'. "'.;
Le po:rte
;:;~rl
'::~:\.r~,
~!~! ';·:.~-d~~
_.:
'{;:,'fJCrl; '. ,;~·:t~, : ".::;;r.
'-",,£~l~~1 . ',:,.:;~:,
"~'r~t
~oIi6 previst~ qu~s~i ~ti~t~ro '~!po;~~ .pott~:·. q)"?i ·~I.a#~t~; .. (~r~1'}.nt~rpl:~i9hA~ :,}jt· (3) dl trappola; (4) dl processo. IT formato delle porte enportatd lD Figura g:5·. 1. ':;!~I'
dLfferenZlaZlOne
.,_.
"--
311
., (:31:16)
3tl,
ARB
47
"
~
~ ,~R~
S.l"!.
.wa·: 3U
311I
G
(l ~:a)
Off.!ieC
.'
•
31
...
.,
'II
.
Porl~
dl ehlamala
. " ,...., , . ,'
•
,,<;,;I~
..... ,.' ',
~'\i~",
,
"Offset.
,'.,m.
..
.."
83
~
... .'
;,1.
Selett. Sej(m.
..
3' 311
.; t~
31
DWe
ARB
Offset (31:16)
"Otbet
.':; 'i.f/ · ',.Jr;-. .~jlf:':
e data attraverso il campo TYPE dl ARB, come da Tabella 9,1.
,
'.'
','.
".
,
,:,:.,',
'.,
,"
IT'
-:l~"
':;;~:{1~ ._ i;~l~
... '
~~.~~.~·\?s ~. i'p~';te dl··t;~CU.O
~{.i~~ '~
..
Figura 9.5 FOl'm'atQ' delle parle' {386' e:·.succesaivi).,· Ije, parti·j.tra.tteggiate varina ignorate. ,',
i .. ,::,j"
.';-'-
'.-:.' ',i'.; .. ' >~,l
!~
,.
:,,,:,.]',1'.
".
'.
~,'.
....
~~~~~':l{l
.,
~,
,~,~:
'::':-',~ii~11
Porte di trllppola
...., .;-.'..
.,~.
';"','
'·*H
Porta di interr-udone
(15:0)
.:"~.;~i,
,,':',~:,
,:'_~;;~t~l!~. :---:,~:(,
,'"
'. ''
Le porte di chiamata vengono usate per~:.passaUi,w· c:eintrollo effettuati tramite :t~f·. 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 ~:<;;, I~ della procedura chiamante alia stack chiamato5 . ,.:". ; '. :" : -. ";;:~"r _...."',' Le porte di·inte~'ruzioriee"di 'trapp61a·vengon6 usate'pef'll saito ai sottoprograrnmi ,·;,'':1:1.: ,":01i;1 di interruzione. 'J' ;.:';: .,' "';:::'t:1~' ,'·r, -:"J Le potte' di' proeessO' servono per'comniu.tazioJ.le:'d~i iprocessi. : La porta di ",,{~~ .,. processo, oItre ad ARB, contiene solo un'5elettor-e-,~il;seJett0te~deldescrittore del TSS -~'~~--I' .•",. ':; " del processo indirizzato, Un descrittore di TSS deVe"obbligatoriameilte risiedere in
;':/;:
la.
GDT.
..; '.... ',;:
,
'.,"
..... ,
"~'
".1·"",~
f·:·; ,:'; . ~ 1;
:!
.:::':;.~
...
,·~~7:
'.~jl
9.3 Trattamento dellei'nterruzioni'in modo prQ1Jett6::~;.
p~sare ~ar~~e
'~]~,
al~u~e parol~ s~1
Prima di a della protezione occo.rre spen.dere t.rattamento delle mterrUZlOlll ill modo protetto. Convlene anzltutto [lchiamare.•l slgmficato "
-;-:-.,--~-=,--~
' I . '.
",,' '
.' . ,'...
, ." . •. , ' " ,"
~"~;;~
.::~~
"
" ,. .. ,;'
. ' . '.
5Anche questo auto~~tismos~rve a.i fini dei;'~·~~:t~i~el . ~~:~i~n~O"·.d~jamatod~~~hi~~ie.·:·'
. ",
,:,:,:,; ". ,"~ "',"'
":.,..
.
.
•...
,,.if:..:.
f_.
,.jP':':'
,
~fi; , '
.~~> :. "
1'o,L',-,
La protezione
'"! ~q: r,
~t~:·.
llt,· ~NI'
405
.
':: -
~ I~?~'~:'~'"
1--
~"'~':::i:'
l~i::)' di a.lcunUermini. ~0~;~;~~;:.··
'..
. ....
Un:interruzio~e,
.....
nell'accezione pi~ generale del terminel'·~ 'Un Iquai~q~e even~ to ~e. lflt'errompe,.la .I;l.om.pale :eseCUZlOD,e. del. programma.. IIi: 'Sens,o pi,!:' l'1S.tretto, vento asin<:[On9,:~ttivato, tipic~nte da 1)..Q.,"~~?~~ith~~·~terno. tl_~'!nter;lJ.~io~e ~
'~l~k' . : ~~~~g':: ". 11~~,':i'~,;:
Uf!.r
. ,!
--
:.'..Un. ecceZlone
-
)--
e mvece ,1.!-:n evento 'smerona:, cornspondente·,aI verificarsl di 'certe
~~;ii~':"" conclizi?~i"duI\ante"~'esecuzione
.cli. "un'ist~zion~:" 'Un. ;.e8e~pio' .~~c~ione~,e·\9~e~a '·~K'~~·'''~'' deterrp.mata: da .un page-joult,.oidal tentatrvo dF :esegwre.come Dp-eraztone··un rodice
di:
1 !~t~j~'/: ,", non,corcispbn~e~te·.~,.una:.~s:r.u~ne:di".mat~hina
..
Q~este,~~ezioni .v.e~go~ r.u~vate
-
r..
~~~~'!f'.:,;.: dar processore, qualLrCOndiZ10D1: anomale -di ~unzlOnamento, : .n·loro. rtconos~nto Gk.f~'~~';,:;'· P.~t;nt.~tt~. Ol ~~.~Q4§XPJ;'o.gr;.~w.i. cli,sistema deputati al :~r~tt~eg.tQ .deU~.anomalie, '~~~~t:' lo,;~,··~~f.~in0Iogia..~ pact;e.la-sqs~a~4iale ~s~in.z.ione;£ra ~c~~oni.~:~terruziQnjjr.isiede
.
.
·
%.~.:.:.·nell1or~~e: l'ecce'''one .e,sell;lpte:npro~uelblleattra~ei;$o'I'l!1esecu':QD.,.delpl;ojJtarn, ·~~~~~i~i;."" rna che 'l~ha, caus,a~a'j, rlTIterr.u~ll:me pU0 'avere un~ .can:~plessa:'T~lazIOne::di .dipendeJ;l.~ ~WJ~~~-r~.; za temparale con 1 programrru. In questa senso Ie coslddette mterruzlOID software,
: corrisponden~i, a~~~eGuZion~. dell'is,tr~ipne :IijT,
:it ~t:~,\.'.::
~,.,
"'!.i'" .. ·... ,1'
.
:r~:". ,''Ii:Y,:':\'',''.
!I'~~~" I¥.'.' ,r/l~; ~.
":l~'"
programmat" e
.. " . . ' . ,,>' .. '.
"
•
.. , ' ......'.,
"
.vapno· rigu·~datEl:~Qllle. :~ec~ioni
, ..
.,,,.
'.,, ' ."
.
··R~"~··: 1"~"'~'
;,;~IfIii~W 9.3.1 La tabella dei descrittori di interruzione
H"··~il~:~,'
1 ~
l"
~f.:;.'.':,~
,'"
v:;"",'·,'' i"~"
,;,;;;.',.
'.~. :':"
,1..'
. ."
.
. . "··'i ':"., .. :,.,.,"
1-
..
, '" .,,'
-
~
...
.,
. . . \.'
.t~~.~'. n ri1ecc~s:m'o di interiuzj-ori~,·in 'modO' pr'otetto, e sbs~i~~nte ·s~faL. funziol
.1,
" '~!; ~r,(.'.'
modo reale [Int931. .'" ", ~. " '., .... '. ~r M~~f~~;['~,:' ~ie~e usat~ .una ta~ellal c~iamata IDT (In~,~fT"Up~. De~cri~~or Table), c?n~e~ 1~~ .l~;'" '." ~~nte.::~e po~t~· dl. mte:,FuzIone: (F~gUFa ~,.~), '0vve~o I .descntton ·cJ;te p~~ano/~~ rou~' ~ I. ;~?,: . ,~. tIDe. dr ,serVlZIO d-elle. mt'er~\fZlom-:: .ogtll-' mterrUZIone 'usata 'dal' sistema' . deve avere il ,~~ ~iI:~J"":;;:::'" ~ornspondente descnttore 10 IDT. . ""- ,:. . ,~~~i ~~~F:1 ~'~rc~tet:u:a x 86 prevede fino a ~ n:assim~ .di 256 i~te:ruzioni. I primi 32 ~e~ .gl·~~:;:." t?n. -dl:mte.rr\.l.zl~~e-no.n;p.ossono..essere_,us~tI:per,"l~ mte~l~m'este~e. In Tabella;9..2 '~1~1.i( . s~ nporta II slgnffi'Ga~o cdl: alcun~~delle· pnme ,3'2 ~te~ruzlOm. : Se Sl ~lude: l}jnterl'u~~ ~ 'W~~(~::' ZlOne NM! ~e res~antl. S?rtO classi.!ic~te come eccezlODl: P.er ,u~ ~l?nco c0l'?-ple~o e pe: ~: . :~~;j,,;:" una..9-esonzlOne det:t;agllata del.slgruficato'.delle ,ecce~orn sl:nnVl~' all~·pUbblicazl0~ ~.L' del'C0Struttore {lnt93t-: ~ .., j' . " '. " ,_ ,.~,'" :~ ' • ',4. . ' • namento
10
.'"
J, -
II
.
I
:1
1..
,;'•.'
~'t',~',;'-"'
*itl ~i\...:.'i:"·"
., t:" '.",'
',
:!,
,;.
... ,
....
,"
"
,;'••
'
/.. " ;: .. >f.,
.:
. •- '
' .....
".'
.,: '".,
,. , ' . . ., ... . . .. .' . J,' '1':""","" N V n' . ~ ;I&;'f!c": ,~,,' >,' .', ' .. ·,i·, .ettare ,,:,:-,e,'l.c~z~.ane.... . '" .... ""'. ;'. ',,- .... :. ... .,,,. 0 IT...· · · 0 .. ,', ~-::,: i'"' ., i·'. '. . , .. '1:-L>IYlSlone.p'er/ ,.. ' .': .'. i"/~~O;<· "". .• '. " . '.' b'" . '. " . ".' '.- ., ":t:~", '. . ..1 .. , De ugger.·, .' , . '..' ~ .i ',:, ~l~';,~:" ,..... 6' ' Codice 9.~ ·o.P~taii9~~·f.lo~ '~lido '1. . .... .,'. ,.' .,...- . '~~':'''!'i;i i '
i\
.,
,,' ._.': .,'
,:'
.""'"
"..
',.
, ..
,'. "
,,:',
J..
' ,~~·,i
l: '~'l~f!:~:
. '~~~iVl'"
, ' (~. ,k&\i' .~!:
,, . .
"~I!:~t", . ' " , ~. :.: Ig11L': ...,.'.,
",",~;_.I j; ."-1, .' .~~ ."
'
V",
;~~, fl~,!tl' J'!Ig,
~!i!\",~;'J . \ .,;. Il~.It.l'-,
.!'
'i
J!~'l-'''',
.
10 11 ),2 13
TSS non valido Segmento non preserI:~e Vio lazione lim,iti stack ,VlOlazlOne protezlone
." IJ~~ , ftt~::~:, da non usare) . ..... .' . .
ral;lelia 9:2' i.i-lcune etl~Ch~t'ettU"r
.,
.,
"
..
..
,
. ",
.
~
..
I '"
"
.
.
• ';
.,
-
II•
'.
..
\.
.
I ,.
-
-
.
406
I
Dovendo prevedere almena 32 descrittori (anche se alcuni non usabili), 1a minima dimensione
-
-
\
\
- II •
\ •
·
Ca.pitolo 9
,\
D coinvolgimento d.i IDT nella risposta alle interruzioni
1.
•
e il seguente.
n vettore eli interruzione viene usato come indice in IDT per individuare la porta a8$0ciata all'interruzione.
l
2.
1
n selettore
contenuto nella porla di. interruzione (0 di trappola8 ) viene usato per reperire in GDT 0 LDT il descrittore del segmento (di codice) contenente la procedura d.i 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.
\ Nel p~5are alia procedura d.i gestione dell'interruzione, la logica di CPU controlla che vengano rispettati i mecca.nismi di protezione (si veda piu avanti).
\
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 risposta 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.
,
l
liE comunque p088ibile (e necessario se si vogliono apportare modi6cbe) definire per tale tabella
\ I,
\
un segmento alias. 7S u 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.
La protezione
407
9.4 La gestione dei processi in modo protetto Nell'architettura x86 (in modo protetto) un processo corrisponde a una entita completamente 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 attraverso 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 e un 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 automaticamente da! processore. n campo 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 ese~ cuzione (processo u.scente) e attivare un nuovO processo sospeso (process a entrante). n processo 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 provocata 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. LO Per rendere attivo il primo processo occorre caricare in TR il selettore del suo TSS. A partire da questa situazione il contenuto di TR viene normal-mente rinnovato dal meccanismo di commutazione fra processi.
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 e di 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 e in memoria fisica viene generata l'eccezione n. 10.·
40S
Capitolo 9" '
" "C,WP i.,.,,....
LDTt?
.
111"-':'
•
..
.;."'"
"
. 0""":" . '"ii
, '
"
..
I"
"
.
"."
'"
,"03\
-
..
:'.. ·1'R \ '," ';l~' "
·1
.J.
t'
.'
'
,"
'
,,",
".]
••
_~ .,;~ ~,,',
" .. "
:.11
"0
.
'.
t'
,
"
I.""
"
T,···
"I
.,:! f':'.
h
0
",
"
I'
't
..... -,. . ' ..' :.;
",
' t . ...
.;"
,"':
!~~.
,
:
""
:":~:;':t
"
"
GDTR
l.
'_I
'
'
.. "
-. -----
..
""'," ".
Jt',
,
03\
: ,:,,1--, "" [ ,. , '
~
,
"
,
',"
..
,~
,
-.....
., '
1. '
,,.
", ..
,'-.
"
1"
, -" ., '.
,,
,..
' ••
!'
.
... '
l
'I' ,.'
' . •~.' ..... , .. ~?
TU
. '-.~, . .'._--' •
"'"
. ','" .'
' ' ' .,
' .2? ,J· , 1-."':"1' ,,,,,',:, ,,','''...,. ::,;:, ;",;~.
;-,~
;< • • : .
-,
"'\"~"! '"
\'.::
., ;:
,t··"
,
.: .. ". :'
,~,
\
.:.
'<.:'1'
:<' :~~;.
" i.
., , '.". ~
I' .
',il,:',:,,"
~":._.J,\o..
_.
.... , ' , '
"/ '.'
• ,
,.',
"".1.
';', , .,: ". -I' ' .. :",
"
" ~.
'J; ::. .
, .,.
-
'.'
"
r,
; 0
.. , • . . . • , , ' • • . • . . .'
'" , ' ." ., ..... :,-' . . . •
..
. ,.••••. rut
," .
.', ,:. " , • . .- ' ,
,'~
•
:~,
·"P.'C~U~'.::Ul1': '",
<:'
... ' , . . .
.
,
--""';""
,
"'\' . . ", ..,
,'.
•
lDTR ,.,~
.. .,.,"<'
...." , ' .
1""
I.'
'\ ."",;. ";
,."
..
,.. ,.
·' .... ,.1 ••.. :.1
,
,
,.:'
..
·1,..·.·.·,')··,,',·'·;,·.
" ',
r:
'
~.
.t':;'_
T~~,
••
~ ' " ~.i.
,,
,':
'
.'
,).
:
..
',:"
II ,','
" - , , '
.:
:
;""; i
',,"
Bu. 1;'S.!lI
,_,.
'! .
It
"0 '
~ ~,
I
",1.
• • • • • • • •
,;'
.r,_"
0'3'
"
,,_
l ,
ls.l.t~qr.e __ .U1s ~.. ,I.~t~ .. ,To's . .\. .1"" ..
,," -,.J.
•. "
-.
I I
..._
.• 0',
q
•
_,,"~I
"
'·',.'·f.' 'I' .""
1_'
,',.
LDT-'.,
•• '
I··.... "-'\1' .:
.
. ,.{SOl~l~~;:_:~ "';!~'':~~~k_i.-'h~~n»~ .. ,.;:,:." .,
..
:,Mern,or.i'a'., 'c ,
i'
~
.. , .... ~. . . . .
!
<••
'.
,...
",
., ,n!.'(·."~\~\'~ltt..
,/. "\"'"
."
'".'
". ,,', -"'. :·.~,}'\I' .
'..
..' .I.n-;r. '., ' .. !'...Yi.f·/ ',.'
'::::'~j"~
., ~.'
"",'
·.""·\',,'~~i)· " ...•) ,•..; ~ '-:"J!.:'1"~'
~.: '." .,' •. ,,'. : ~ ,.. . n ..- .. :': ~::c .;, '. ~ :.,: ;:.~ .. . .'! ~l;;.:r ":~j':il ., " . . ~""." '' .. ,. t·. ,", " ' " ", " " " .• ':~~; ,·,,·.,,·,,1 ,'., """'-'_,' _. ~ . . 'j ' . " .. ,,' .·"~h ~"l~
J:....
-"j' ""
'.'
".
\~
.""
,-
~
,.
,'._, ""J,~. ,
.'t.:;:~, :1.a fi~~ ~~~~~~ le, st'ru~t1l!"~ e}a~'E:l)~ .cli'. ?J-emorra. che" !ntefven~b~? ·n~.n~ ;g~~ "~\ : " , ' ..
'
..•
'"
'·'1
.',',,'
.
'.,
, ......
'1"
',',
I;
...
.. '
,'
'. . '
.,
"
••
,
."".'
"'"
,' •. '
' ' ' ' ...'
,',
t
,."._;" ...
':r<: I~ura 9.6 tlOne della. memof:la,vu'tliile'e della·pro!euone.. 1 regtS&fl' GDTR'ell)(f,Rtsano 'ael·ii'escnttort·; . ~::,tt. mentre TR e LDTR sano dei selettori. Per i descrittori sono riportati~sblod'campi:"Base :e: Limi~~; ?v.~~ame.~t~so.~Q pr~sen,ti ~~ gli ,,aJ~~~, ~p~~ ..;l des~ritpo~i eli, r$.~. e ~i ~,J?.~ 4,E7vODO , ',-.':i
:-t9i.
nec.e~arl.a.zp.~n.tli!trRvar,s~.w ~.l?~:.,. , . "'. ',,' , , "
.. ,
';.
l.
",'
•
'''''.,.
9 .4.1' -'II- 's'egni~nto eli
,
..
'.,.
't
\
.'.
'.',
"".:
,
,
,
••. ' , . .
' ..
"
'
'..
•
.
,
.,
. , "".t,
".
'",
"
,I •..
.~i,~; ",.. ,;:':'~'.:~~i ''''-'J1."--.,.,,.~:-<
..... ,. '~*~ ! , . . . ., ..'.,' ,-.:,' " ..i: ';','.-
'
..,
,.,,' 1 """"~""."',.:r.!?i~
).'
stato"ai'uil-'l~~~~'~~~?-' ,'~ ,'. :.' . ;~:.,. I:.~,:t, ':. ~::. :~~':~!.~:~~;j>·:Y~:
n formato del TSS e illustrato
" , f , ; 1ii
Flgura9.7. ,',,~.J ! .campi d~l l'SS P9~~nq esseJ;'e cl~~i~c~ti ~p. .due cat~ orie.;::1:ampLd.in~ici A: .. ' t t'" 1 ." ,." 'w' . ...' .). ,. .k ..,., . . . t" . "~:J" t't' , ..,,".:. 0._'[;1"' " " e. c.~P! ~ a l.~. . . C~PI"1l n~9 ~Y~~gonp, ~,.g&.o~na 1 a.~9g~1l ?-I~a ~v~lqqe··t.,p'1~l, .. ~~~'
comprendono .' . ".. ~ ,.. "
ill
. . ....." :. :'.. .:-,'
_.... . ~:,,-~;J liLr. :", ',',," .:.., ·'
.:." ;\. ~," .:··.i,. .. , , \
iH:
'., " .
~
. . i.
'~<:.~:"
,.. ,';~~i
~ . i~~~~=~~~z1~~~~p·· r~1~'pBt~~:~Op:- :;1f~t"~~~~r~~~~~;~~'~~ ~~~::~?p~M~~t$ '.:'~~~ .•
'-
_.
uscente)j
','
.
,,~
,'.
...,.'..
',' ;; .. ',
1
" , ,: .. ,
.'
. . . .,. -,
.. ," ,,~~"';~'"
. . ~.<:;"
'~11~'
, ,.
•'
,.',
·,ii J:
I
-La. proteziQne. n_
ttl.
•
:; 1_
0..
1,5
,31
Indirizzo
-lis ,'s§
-'. ,.
"
,- ,
,
CS' ,
5'.
'
48
«
2C
. ri· ":.d ... ,
.
.~
..,
-
I-
"",',t'iC",
,,,. ..,
, SS2
16 ...
.'! "
...,'"
;o.;:"~
.
t'" ""l'il"'" ...'". '._,J. ,'.
""". ",,-" • . ' . sso'"
-
.":'
i4 '
:.
"
-,
'
...] '28 ... ' 2.
. ,-' ~'
I I
20
.. .
-
40
,
:, '" -,
\
3C "13S",,'" .3 ........ L • ~:: 4.. ": '1 ;.~9,·: .; "
... 'J
,
4C
- ...
'"
ESP, , EBX" , EDX ",~
-
sa', ,
....
".,
~"
-,
58
. , ' ..
,
'ESP
....
"
5C
FS
,EDl, ESI ..
.~' iWlj,~W~:IJ;~r'J..
,
'60
LOT del GS
"
.. ..
1-
, 64,
i" ",' I
-
409·
, , " I
.
- , ',.'
.
. . ;. ~t~?;;h'Ft~Jra' '9."" S~kinenti~j t$S\li ~ri. phfcess9: ':L~ di~e·~~o~e·.c~iniri.~) ~ ;4i." 104 ~Ytli:'~·
-
~r ~~,~~~":ll.~'~;::critto Qve necessaria nel testo, traspare dallora Dome. Naturalmente, un sistema. operativo .:' >;,~~,fft~~;<-:-- pub usare un TSS pin. esteso, aggiungendo a suo piacimento ulteriore spazio di memoria,
..
·
'~\!xr.'j\:"1"
;
. ~,,~'titiPi(f";:
.I~}l;:rn'~·
-,
''4l':~\~"-i'';''
~~'I'~J~~~'·. ·,·
'.,,~-
"
j';.
.;
"
"~"'~"
':A,"
l"f\.>
.. ,"
.'~'
~
•
'"
;.J."
•
Ie 'limmagini" dei r~~tri di CPU .(locazioni d;illo scostamento 20h allo scosta". ::'-'.. .' . . "', .', " : ' , ' . -.' " ' ; •. , .. .... <'" ,,:';~' ... -, ,'. ;,.,J • ~ . . C.\~~{.~.." mento5Ch), . ""~~I':1 ':.-,',,,'; 1'l,~liit.;·"·".·,, ' . t '~l~¥:f"(':"""-"":'" ." , " ".,.. ' ". . . '" .~~~l"\"· ",'I.".'"',
,~~ ~1:,II:)'i~.;'!:L,:1'Cafu:Piista'ti"d.vengOnolettilm4.1;J:()nmOdifiCati}·da;I:.lalcigic,adi'CPU.·Essl·compren," . ~W~~'';:'(dono: I . ".; ri, :'.,;:~."" , " . : ',,; :, ,,' " " .: ,.' :~:, ..
.:
;;'
.~~~/
!
..
~1U:";~;\~~\-~j.'~.~'il"·Selettore Idella- LDT-:del pro'CeSSO"
;. ~'.' :'
','
',,'1 . . . '
:'
' . ' - •. " ',.
;.';~
i~~ :~'~f;}~:;'\:, '. , . i" "r,:]iil!";:!:\,:/ • IteR3) PDBR ;(E.age D~rec:tory. Bas.e. Reg1Ster.) del processo·{I'l1DIIlagme:.del:regIstro I 1i·'!-\;·"
<.~
" ~
:
I
, ','_.;';<. ",'... .' ,!'t, •.•~i!:~;::,
"
,
,~,.. , .." ...,;"~.,~.-,,..., '·"~-'~~'~··"L!'''''·'''.;:·i.''./,'':' .~.l~, ~nd~r~~zi ,IO~,c~ dello st~~. p'er i li~~lli d.i p~~~~~~' ~~ ~. e 2 .~~fr. . ~:~~.;, .:.; .
• II bit T cbe" cillando attivo, fa,51 che, II processc"e provoChi uria ecce~i9pe',(l~,Jeb~~,
;~Ji' 'J)'..!, quando aVVlene 1a commutazlOne dl proceSSOj r a4X,~' ': ,... . . . . _ . .' . ~., ... ,', ,1" . ;" , • L mdtnzzo di base per la del bIts autonzzazlOne di l/O!;l ...... .:".':.. ' ;,.t~~~~~(""'::~... ., . . -J .:.. Iii.'".··. ,r;~;.-', '" 1<,. ", '.' .,. ...."., . " . "." " .. ,1l11li.-,L"':":· , . . , .. . ., ' , . ..,. .,.' " .' ":. 1 ~i~~;':C;-il An&ldE{r)~~'ra~loni "~li" i~irei38o ?il$c\ta 6on:~' 8bggett~ 'a, dimtioitl ~ di i>rOt~:iid~~.' til parl1t'O'la.re, ,
'1
,
)
I-
)-
mappa
1
&
~'.' ~;~ ~ '~i~~~~~~~~~C:,~~~;e~~!:S~~;r~f~~~:~~, :rs~~~oC~~t;~I~t~=~~8~11;~:;;~Om:i ~:~:::i:'~:~jo~e I~PL~
".~~
1-
.I
'k' "i~.:t;i;i:'
i, ;i~~~\',"
•
-
ij,l .,~.;:Rlmandlamoalmanuahlntetperlarelatlva.'p'roblematl(:a.~
',. . ~(.:,':.'1,;':". .-
,.,,"" "
I,
'\ ~'.,
'","
".:"
.....
..
I..
-
Capitolo 9
410
f
,
'
1
\
•'", 1l~
Essendo i1 vettore eli stato un segmento, esso viene descrittore eli segmento il cui formato e in Figura9.8.
1
63
4-7
j BASE I
-
I
IlilTI
39
I
ARB
.•
~~"
'
o "
'
Ie.
B~SE
(23,0)
I
., .> ..,- ~. t~" :%~
0
LIMITE I(15-0)
I
'(~"
.;~
•,'' 1" '!w
(",
l-a 1~~
\ G
-
A
D IY
°
P
..
DPL ,
0
'I
I"""l
TYPE
.",' ",
i',\
11018, 1
,
,;;
'~" Figura ~.8 n descrittore di TSS. In questa figura i campi sona riportati neUe ~atte posizioni I' che essi hanna nella realta,. n byte piu significativo contiene gli otto bit piu significativi tt i\"~- 'I j'; deUa BASE. I quattro bit piu significativi di LIMITE sono presi da un byte usato anche per ,~ ','! ,I' , ~ 'I contenere G, D e AVL. Del bit B (Bu3Y) del campo TYPE si parla piu avanti. 'r· ..... ·. '
\
"
'¥
i"
-
, .~~;l.~ 'M ....."i;' '. 'i'$
'. .',,~;~ "
\
,~.".-
Quando un processo passa dallo stato eli sospeso a queUo di es€Cuzione, la logica della macchina esegue i necessari controlli di protezione di cui si parla in dettaglio piu ~~~i e, se l'~per~ione 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 ~be viene, ~osp~o (e cioe c.opia di tutti i registri di CPU piu l~ 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 v~o e proprio cambiamento di contesto eseguito esclusivamente pet via hardware al flne di rendere mjnimo il tempo di commutazione.
..
\ •
·I •
'1'.
',~{:t~, ~
,~,'!~ \~
",:,:ri~:~', ~ ;'>l~t" ~
:}1~~ L
,::f,~i£l,
~
'<~}.'ii"~':' :
....f·~~;t· ," ,
"C:~~~~11 ~ "~','1'III· ,.1;.1;,·'~oe' .
'
"
Jjl "':'1-~~ ~"~r.
~
"~,,i';
9.4.2 Commutazione fra processi
\
~;:;\
·I I
1
:~'<1';'WJi,.,'lti' .•
-.'~ ~ 7"1~ " ;.""~_
La commutazione fra processi si ha per uno dei seguenti motivi:
•
:
,'.~,
. ".",
..... ~~I";, .":'~
• it processo conente esegue un'istruzione di JMP 0 CALL12 a un indirizze che ha , •'-:1;{.~: ,.",~. • ""'.¢. , come componente selettore i1 selettore di un TSSj ;""-;; "¥.!". ~_" "
.. ,
''-'.,,1(,"
't ·"",.. X/"
•
.
• il processo conente esegue un'istruzione di JMP 0 CALL a una porta eli processo; . :,/f "":
'.,',.~.r ;
• viene servita un'interruzione the sfrutta . . una porta di processe in InTj • il proceaso conente esegue l'istruzione lRET quando il flag NT
e asserito.
Pi'll precisamente, Ie modalita in base alle quali si ba la commutazione fra processi sono Ie seguenti.
\ •
1. Esecuzione
\
deW~truzione 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
\
UOvviamente deve tratt.arsi di un salto 0 di una chiarpata far per a,vere una modifica del8elettore.
l'l
· '>''':''1"1 ' '
.: ';'t.\,".\. ,
1li.. ·..'.~~~~ " '~{,j,41t '.'i I
",>,!J.,9'1'~ , ..,.
, 1
'~';'
..>:,,' %1 ~.,~, ".";1. \f ·~ .-:~t',j r
:,.- ,~'·.tt
·:':i'.t":;'i
.-; {\~Ft
'~"")oI(\
"~\''''"
: -""I~'~
""""'>"1;
·u~·
,·";'.'....,"i1B{' .. I' . ,.~'i'.
.' ,S',
~~,ll.~ ,..,~
"",ll
"I~\i<
:':"."\?:
.
";~{;,.)J
:,~:?! ,.
·
\
'I'~
'
~l,
.
:~~;"
La protezlooe
r«li","7e: f1h"", '
,
, 'ij;l."'" ' ,Pll) ...
,~"I'"
.r'ifi." , 1\\1' . .. I"" 7' :',
,'~!~'" ~';,,'" "A
porta di processo, La commutazione consiste nel sospendere il processo attivo e nell'attivare il processo il cui TSS individuato 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.
•i:e .
'
"'_.
'!':~1)'~-'..'; """" ..'.'.", >:t1M ,,'
411
e
.
'-...
. ~,
"":'A';";
.,
~.:" ,;0;-,. '
~-'\"<.;
'''F''- ~: ,', "'-"'''''0'
w."'" .
,>li!... :~'
a9Wt;, '" ~1:~~:,' -
2. Esecuzione dell'istruzione CALL
IW'~l'"
l';• .j."';/,"·,, -,
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:
,"':.'!:".. '-'l.: _. .. \;:,,'i" ;;, .... "
,
,P,
,'.'
;U"".'l "
";;;;i~ ,,"
1l.(-""~".
'f.j.'·~~"
.
.
.
"
ir~"':'
' .,,,1,,;;t(.~I"" ~ ~"' I"J":Z~
•
....
""'"
'~;f:'
~"." l·. :.,! .._.,
. "", " ~lif/:i.,'· -
"
.,:,"',-"" ','"
~~~*'~f,"
~~~>~;:,:"
~~;{~~' ~~~~.~.
L~lJ:'~>_
~~ :~r.'~;\
:"r;~~~:::;.'
,,~?r~>.',,'
~l':;,~;.-
'~~'\" .' • . ,.,r..·,,'
'~~''''' d', ':' '1-:/." "I";,
~
~~I""~"""
:1-\.~. ~'o!',~, ,I~", :,~:;,' .. "'~
~ry~-::,,~\:,
'<.". :'~',~'" " •,"'J"~""" ','
"'. ',~;.~ ";':
!""",e· ",'" "",,,,,...""''''''
"~"., ~. "~'.\' (! ~l1,:I", rklo$<,,;>;"
':".l,l;"'~ i ' , " •Iti::'~,",""'-' 'J" "
'" ,i ''\'"'''' ", ,
'
.",t:!tf ...;"
:i~4:~~:,;'
;J~.,.;o'":",,,,!_
.. , ,''''''
l.. . ,". ,. .~,
: "'I :~.,~:' ,.' 't';i"!'" '~
.•";}7· , '
,+~
"~~~~"
~>1JE~?
~.'.l\\'..!t\?,h . •.,' . , , .;,,-:.
,l'lll",.. , 1r
In questa caso il processo uscente e it processo entrante sono anche detti, rispettivamente, processo chiamante e proce.sso chiamato. n processo chiamato tiene traccia del processo chiamante nel proprio segmento TSSj in tal modo il processo chiamante PUQ essere riattivato tramite una istruzione a zero operandi, quale l'istruzione lRET . .Una istruzione lRET provoca una commutazione fra processi se il bit NT del registro EFLAGS vale 1; in tale commutazione, il processo uscente e queUo attualmente attivo e il processo entrante e queUo il cui segmento TSS ha il selettore memorizzato nel segmento TSS del processo uscente (locazione di scostamento OOb). n bit 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,
~
r:ifv.s .'., fi~»~~~" ., . "J:~~!:' , "~'"
tn:p"·1Y;<:~'
ilt,.\~\;t,! ~' . tf~,'!-;
\'l'.~,,:r e~ ..
"
messa a 1 del bit NT (Nested Task) del registro EFLAGS del processo entrante.
3. Esecuzione della istruzione IRET I3
,;n'·.
'
salvataggio del selettore del segmento TSS del processo uscente nel segmento TSS del processo entrante: la locazione impieg~ta per il salvataggio e quella di scostarnento 00 (Figura 9.7);
'~",~.
~' -'
-
li'm','I' ,'-,
":.1/(."":<'
'·." ...., ',,,.,,,,. .
'~"I"(~"" ~._. 4""
I'''',,''.~
.
.it..(11"i·~f·':
~~,~:r;f;::~' ,ry "";'-',
. "'" t,ll"',, ",I<
-"
,'!I'"
• '~'f!: "
!;: ,.
' "
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 processo viene attivato, esso viene anche marcato come occupato (hit a 0). Nel momento in cui 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 e st.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.
un
'T'
,1
..
.
412
Capit'olo-9 .'.
....
I
"',,_
.
. ':\,''-
-.. :~'l
",,'«,\.,
e una'porta::di· processo~4. ·:La commutazione e effettuata-in~:accordo alIa st ~
'sequenza di azioni previste .per-l'ls·truzione .CALI:..
:'"
.,.
9 5'
·
t
, .:
~'.>...
. ·t·
',.
. :.... "'. ~f
".-',
•
•
;' :~
:.l
"
~",;;,~,"'>;(
.:~:".,
eSSa :'::4i.~·i,·
:L~l!~t
,,'
.
.
~);f..
1":'"' . ../i1', a pro eZlOne. err erl genera I ,":. ,::',:,::!~i '. - ':'.' . ·'t··;' . .
:)'t.~
'.
Obiettivo diehiarato dei progettisti ". stato quello d',permettere.l" costruzione di sis-?fM, t~~,.op.~f;a~lVl:mtJ}~1:~as~n~~~p~G~ .Q1. l1,i~lClf~. f p:r?t.~~er~, i p~O~~~\~H. ,~~ente tra- ~.~:~~., . ~l.lor?, .e .~~.~role$g~re j.l sls?,~T-a o~~~~~fY9 sje~~q ~~ }6~e$'st P.0D: ~~~ci:r;f~za4 .. ~iste- :\~~J.f ~.~ W9~ezlOI.l~ .~Q?~r~~a:.l U~? d~~~~),:~~rq~lqrJ I?~lVII~gi~te" .d~P.~ Jst!1JziQiii .di I/O, ,~~:&~, t.~~~75~, ~ .:s.~gtp~ntJ .e..aJ. d,~£!~~t?~~ ~~~t,., I 1.~~cMl~~i4Lgij~t:qteZ~p~,e .sono >':f.,~~ r~S9~~j.l.cWlll.aS9p'frpn.tl, tt a. ~ .lil;;~Ilt ,~h .~~~';'ll~g~~... ~~~~et~q.~,q~·¥,~iS~-r~r~· !a.';pro.t.~zione::·Dif~ cont~o. s.cntture. su segment! op,Pu:e contra l'esecuzlOne di codi~ .r;op. a.utqri~za.ti. I'::.j,~!~r, 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 .: ~;,t;.~-~ • ,. "'0' "'" . . ' "" peru sono,a ua 1 eoncorrentemente' aJ,~~~:6~~i~~'e ·~.~?~~i.~2;i';~9~·~i",P~ ~;E,~~~::p.~~a4#~f~~~ ~~n~"pfe;f~~ioni. "Ogni '.:~',~~i condiZlone ill anomalia rilevata genera: urt'eccezione' "'" ' ". '" ". , '" '. . _':'J'~_, ' " . ' ; . ~'. :'. "".-. '., -.~"." L a protezlOne Sl esphca attraverso 1 due' seguent'j"meccariisnu::' ,: ,'. '>,f~ ",,)• "ve'r'l'fie''ai' del' t'IpOUl'aCceB;;ovaJsmgol"segmentl' .' wt '., ~'.~., ..,:, '),0, .'.. ' ,. :t.. '. ;, " .'.·~~11~: ,".' :.."...:. ~:tr
n
4t.
41.
,>;
I
b), ~estion~ dei livelli di privilegio; e)"isolam,mto de'.
- ~;'.
~r~Cei1~i.f:
", '.,
- ~ J'.
, .'
., ,'1"
'~:'}Jl1
'.' .: . .', " .. ., '''''. . I
."" .."'. . .. '."
:;~~"
L~. ~~1;lli~~: ctei t.i~;~i. ·M~~~~~.,~· ~~~~~ti si b~~'~~hl~ ~~~~~iori~'~ ~~g~i seg~ 4;~~,,~
m~to. iii al!3~ a~trl~,~th...n,p);Qce~orej .pr:~a ill .acc;:eder.e ,~,l).D ..s~gp:lentQj.,v.~ritlca la '.'~f¥!
congruenza tra il tlPO dl accesso e gli attnbutl del segmento stesso·-e.genQr~ Il,eccezione >.dt-~ n.13incasodinonliceitadeIFaccesso. I· .H't.....,''''·~ifR~ I livelli di privilegio hanno 10 scopo di proteggere.PiI1,tegti-ti(dei segtiIenti'confe- '-:_~~%i' nent\ 'progralIllI\i e. d~ P~~.·?el p;~o.g~~All; lJte~~~. LA.,P~p~~Qt.le .cqI3.s~~te: n~! .~u4diyideJ:e .1arJn.efIloria ·-:'';t,~i . Y~,rtu~~ .ct-i. 9.gnr' PIlOC,e~p, iI!J~WUi ,d~ p;i~i)~g:iQ.,,~eU~~~,~~;~,~.c:i-i~~~~~ijzi~~t~;~~:i!vello .: .)))~:ii ~ ·~~~vAl.~~Q ~l. ~~,?c~~~'.~.ttn.,;.o. e .~el. p.!,)e~~~~ m_e.cc~~ff1:1. Wpt:-9t~ione. contJ;o un ..{.~' . h9~t.9 ~c~~o; ~ ~ell)"~n~i:mI19c.ati,.~,.unm~() livello.di. privlJegioqua,ido,U'iirqcesso,:\:, opera a un hvello dl. pnvllegt..o;. dl\~et;s,q~,: ;rnplt:~€il ~c2-l1~,.i~~r1;1z~oni1. ~tt~,p'.r;iv.il~giate) ,>:~::~t possono essere ese~te solo ~e 11. p.r?cesso opera. ~ un ~eguato l~vello di privilegio. ,:"\:."# ,. I due prec~dentl me.ccams~sllDtegtano·,e'sl~completano.-a.~Y1tenda:j,.p.e"rmet:tendo ';~' ~ l~ol.~.ent,9'ld,~~,p.rq~Sl,S~~~t.ID,~~~~ 9a ~pe~r.*::~ ~'~~l?,lqlPWf~.S,9~pi.aF~~dere :.;:i 1~~o,~tr911!=l:~jU1;l~n,t.e.~ ..q~ ~a;~!?g~,.P?r.r..~ . aJ :s~~e~l. 'J.;S.~'9~gIL~I,~rA.pro<;~ssi..,:J,.:( _ '~j~~
.
9.5,1 Veri.fka d~Uipod;.a.c.ce~sp,a.; segmElllti, , I,"~
':
,.;
,.".
'"
:1.,."
,.;.:'
t'e~plet3.JpEW.t9.'d~. qU~'~to .t.ipq· .di'. vetific~'I-la,':~onir~eiiz~
":' •. "
'" ~,'"
"
.
',;:l'l
."';':;:
,,',.' " l :
,J. .. ,__
."
I
, .. l,
.....
t!a1tqper.¥iorie eseg~it~:~'
1a natUl'a .dell~0ggetto' su cui'Yiene tentataj, port.a a.~ilevare.·una:8erie -dil,.g8neriche "~"., ·
'
.
' " , '' : . ' , ,i~ <
.... , ",."_ . .
....
"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.·
.~
,"-..,".: ., : .,. ," .. , '.'
'. "',/",
'..
"
~,.:
" ...,:>:.
':';~'~
:',
.::.:~
·~'~l "'
'
'jio ">.
,:", ,l:
,.'
'~{V? ",.
. ··~I' ". ~ ,',C'.
.;;',';., ,,r , .,.., Ii.".' .
.
,.. --' ' ~~ ...,1.;;,'.;', .'~.
h,"
.
•
La protezlOne
:;.,
~,
'..!~""" • "'1l.'-
.
..'
413
'
~;"~' .. ,,~":,
S,~~·?~
.. . ... !;p;~~/'" violaziom d~ protezwne.
. . . . . Tali vlOl~10Dl dete:mmano 1 ec~ezlO~e n.13.
__ " . m~:-s~arsl /~~~~l'~{di questa eccezione ha Petretto dl far deposltare un codlce ~ .errore \che IDdiVI~Ua .,~i:i\~I;:···:q'esa.tto tipo di violazione) suJ,lo stack del sottoprogtamma dl mterruzlOne assoclato (exception handler). In 'tat modo, I'eventuale sistema operativo; identificata']a'""usa, ;:!' prendere gli opportuni provvedijnenti. . '''. . ,';s~t-t::.':'.,. Per esemplificare·questo tlPO dl verifiche, COD'Vlene nfarSl a quanta detto III prece·J~~i~::: denza (Ofr. 9:2,1) circa U signifieato dei bit R' di ARB <;leisegmenti di codice e dei bit , ~'I'~r;~~,:. ED e .W per, I ~~gme~~~ .dat~ ~ e. st~ck). Se" per es~mP\Q~ V1e~e ten~ata. una. operazlOn~ f '1~'jX,?(,. di scnttura In un segme~to eli codlce'o ~ op~razJ,o.~e d~ scnttl,ll'a ~ un segmento datI , i~J.th;·~::;che non p.~m.e~~e.lAsfnt;t.~r~~~=o}, Sl genera 1 eccezlone 13.. !~~r;;t:.~~:.,. La pnma. venfica sulla h~lta ~ell'acc~o a:Ufl ~~ento. Vlene effettuata quando ~r' .~~~~;:'; 'i~ selettore del segmento ecancato in uno del r,:gIst~ ~~l~~tore del prOC€5sore. Valgono , :(t~~[;~.;/:'que~~e r~g
D
,:i:i\l,'!-'
,ik5puo
~~t:··~: ','~t;;i :.'
. ,"/"""
. ., . '.. ... . . . . .::i re·gt.stn:D8,:ES;-· FS.e· OS sono cancablli escluslvamente con seletton di segment!
mt·,",;,~:·,::,::.
,"t'.~,- ;;-;'~'-:'''. 'l':·'·',: 011",'~t:(,.:::..
.eX ..~;;.:''-
"ib~"i·~l!'·,r,.:, . Il"'~ '~I<,. i .
"
""j"""
.•
'bili' " 1 (b't R di ARB 1) dati e i se~e~tl.co ce accessl ill ettu.ra,. ,1 a . i. . r :U·- ..;..," .: 'O'S ~,., .t.;. b"U ,,' . "j;".: . 't: './' I. ,:1'1. )' tt' ~ . iii,·t :" ~ .:~'tICO· w"':'" ·1\.· .. : '1, regIstro ecanca e esc uSlvamen e con see on lsee.~eqlj.l,;.... cel, ,. .., ..•.• '. "'; .•. '" .... il registro LDTR e caricabile esclusi~ente con selettori di tabelle LDTj . d
•
.
di
l!'
..
. , bU'
1"
:,
.~
..
- ill .
"TSS" .
1 ~."~~ . :.~~~.~:.;~:'~~~~:.~~:~,~ ..~.~~IC~.~ .. e~ ~~~ ~Sl~.~~~~:.:~:~.·~~~?~·' ;:'~;~~~~:~"
:./;
~'.:. '. . ':
" ~,Iif:i.j.'. ",:•. ~:moltre ,pr~elu?ala,poss!bUlt!l- di ,=~~ ,U sele!tore ,di poJ:t" ),.Il,,\IDO qU'lo1S"'SI ~:, ~~$'; .;:'~J:~el ~~~~t,~~.. seJe~~or,~.~, 'T~., .!:. .':." ....':._" :.,. ;.. I: ..... ~: .l~,.' ',.':.',,: .': .":~.' ,." .',. ".
.
!f(~~L.':: :~/.:'Ylte~l.~:~ d~~t:ag~~te:.I~f~r~.~;I.~.~~~~lla 'Vi?l~l~~ ~~.~~2~ <¥.\P~.~~z~~e ~l~,,;,~~~
,~~f;-i.
,l.'~~~~i~:~
nel ~~.uah fntel.[Int9~J.
._"',:·:d.- ,',,' ..
~~;
-
.' ,
"""
.... " . .:"
,r.'~",·
..
••. , :
l:.
. " .
-;.
'.r, ':<~~~:,,;~;.' .~,~; . , '. :., '.' ':. '.',~J';~' ;\ 0":·";' ~,. '..":, . .~,.. ".:. ':' :". > 9.5.2 Livelli dl prlVlleglO '. .., ,'.: . ',:': '.
· ..
,
,
H ,( .11;,.,. "" .~.:..... ~'''.'', "::_" ..".:i(.•...
i
'II
Ul;l
;f'ifi: .
privilegiQ'" situato t'oggetto:stessQ.,J,a,ge,stione del li."ellj,~ntl'~~"'te~enti:~,pr~!,!,'W'm.' ,prl'
;gi
l£t
. . . ," "iii '.
o~: "~~'" -""~"" .H,!~r
.. ,,,\
..
.
.
.
..
.,
.
,~:~r~ :~~t/;, " , HP.~~191~q ~b.e t~,~JP~fic~.~ fC?nt~.4~_~.op.- P9c~~.cont~~I.q,I4 ~live!1Q Up.gt1H!ttco. ~~l se~l~Ot ne! :~i;ll';l '~,)j~:; conrrontare i tiveur di" privllegib; farenio "riJerimento'- -pe)'" quantei posSibiTe ..; al'nUmero' the 'cOdifica ?:f:~ :~~;~<':: iI' live~lo",~~ 'o.gnl caso~~~ Hvello ~i'di~e piu (~elio)' pri~leKiat'~ di uri a.t~to :8e' ~..a.w ~oorn9Ponde un i~~~··4~"'" numetopltL.plccolo'(plU.'grande):.:."'·; co' '. '" ...._.. . ."'."
'
.
;ii i,'~"•.",I,n,' "\' , '.~
rr -
I
r -
,-
II
1-
I-I
.
'lIlt. ':.'. :,.:',., ::, .'" . ~~1~IF. iI ~IW7~i:. ,:,' u; pr~~cipi(ll_ ..di. funzio~~~,nto .~he !feg~la· qqesto: ~cc~mQ,~ pr~tezione:pr~~PPotl~ . \' ~,~t;:~· @e; ·qas~lJ.J;l oggettg) m memQqa· p.Q~~l~da· ;d~.~rltt9re..che·mdica :a·,quale liyello di
,,1
r
I
r
-
1-
I r I
r ]-
414
-
Capitola 9
\
'"
~~1k
iJ'! ·• .!,~~! 's'"
"~"!i!
~
":"'~~' ).'
."
"-'SfI"
\
Chiamale al sistem
· '~,
1"/
.
""'.' "" 1 'i'.,~~
-\~ff1i,
:... "l
"'I,c ..,/[[.;a;:
..,.......eervizi di sistema
,.':,.~:
" , 1,:••,.
- \
. , ;.,.i''''~ l' •
....-~Eslensiani del S.O.
.:' 'i
·
3
\
-
~
.
W~,
.>~4
,,""~ .:~:?~ti •
a) ogni volta in cui viene indirizzato un dato in un segmento diverso da quelli correntemente individuati dai (selettori nei) registri di segmento. In alt~e parole quando il selettore di un descrittore vlene caricato in un registro di segmentoj
.
I
-
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.
\
•
9.5.3 Criteri general; per il controllo dei privilegi
•
\ •
•
"1~""~1;
_~~ *i~:
"...:~
assoluto, e (dovrebbe essere) assegnato ai segmenti di sistema contenenti i programmi ,~,:~~~~~f~ e i dati piu critici (doe il nucleo del sistema), mentre i livelli intermedi sono assegnati ... ;N~ ai segmenti contenenti i sottoprogrammj di servizio messi a disposizione dall'utente !?,4~ (tipicamente per effettuare Ie operazioni di 1/0) e Ie eventuali personalizzazioni dei';~fi;, progratpmj applicativi. E ovviamente possibile utilizzare due soli livelli di privilegio, :'}~f~ uno per i segmenti di sistema (livello 0) e l'altro per i segmenti di utente (livello. \~~"!t:r! . 3), come a.ccade in molti altri processod. Per quanta concerne it processo attivo , ;.~,:;~ e opportuno 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:
\
•
.
Interfacce software di sepa~aZlOne tra anelh
:;:;ol~'
',:.';' '":
•
-
7
~
"'::~~
.,
\
•
""1 .,.
o .:;.~
Figura 9.9 Anelli eli proteziooe. L'anello 0 e il piu privilegiato e quind;i piu protetto, Panella -.·~;1 3 il meno privilegiato. .; ~·,t,~.l ... ~ .: .;;."
I
-
,
I
I
\
•
·
..
:;-...-.
-
, "m' )'.-r.'
.:<-:~. :!Z
Programmi utenle
-\
'
'-:'\"'~
\
I
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.
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 e schematizzato in Figura9.10. Una procedura, ovvero 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 stab~lisce che un programma affidabile non pub eseguire una procedura meno affidabile. n criterio Be schematizzato in Figura9.11.
.,0
.~
.4
<'
b'
<
~o
i:-
.:/
Legendll:
- - Accesso autcrizze.to ~ Accesso proibito
o
Segrnento dati Segrnento dl oodice ~ eseiuibUe
1£1
La procedura E,
.9.5.4 I livelli controllati 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.
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 e data dai due bit meno significativi del registro CS~
416
Ca.pitolo ,9
..:.:'.1..'--,
l
..
,,,
I.
.". , ..
,,.. ,..
~:.,
.
.
i
....' .
!f, , :.
o
'
.,:
..
,"
,
.f:i
<' .~
,.
.. .' .
,;
"o
.,
:,
'
"
. IT,
,
.., '.
.
.' ,)
"
',.~"
,~,!.~,.,
..- ,,'·P.,~.
.,.,
"'tJ~
.
.,.'
¥
t" ,
.
:
', ' ."-• ,~\
,
r,' .,:.
"
.,
" '
,"
., .. ...
.. (
...
ft,.
....'
~
..j ,.
"'.'
.,. .
'" .•
, ,!
E
!.j.. , . ,:.~, ..:',.~,,:tJ .,~;r,~. ~
.
..
•
,~,~,,:~
....... :.; ,.
:':f~~k' .~c.
~g::e~"sl'iOaUlorl.'Z'Zalo ~
,
I
..... ",....
.
- -
; ,1,.
,,)~~, '~'
"
•
., 'i' l
.
,.
.; . ';
!"
'~)r~
!E1S@gm@nlodieodlee L::J eseguibil@ .
Acc@sso prolbito Accesso aulorlz:zalo a sermenl o . conlorrne
';~~~'~
~~;.~l1, "'::,!~If,
,
, . , :.., ',. ",. ., Fd,gl ura':'1111 tSCh~mt 'C",zLzLazlJoMPne deREIcrtl:erto B neldPassahig?10 dlItett~ (sel?,zallPo2rt'Ldl Chlamedata j >~~~I e con~lO 0 ranu e , e ,L a pFoce Uf.!!- c aman e t:: a lye 0 . a proc ura-~~ di livello 3 non pub essere chiamata eSsendo meno 'p:rivilegi'ata, Le procedure piu priv.ile::,~\, giate possono essere raggiunte diretta.mente sol9 se appartengono a un segmento di codice'!W ' confonne. II vincolo di codice 'conforme viene rimosso con·l'uso delle porte di chiamata..~._{'~:;-,.,
.
,'::~>~'
'.
.
'
'.: ...;:,:~'; DPL (Descriptor .fnviI~g~ LetieQ, Ogri.i: descrittore ha un "suo li~ell? di .pr~vilegio'r%~~· rappresentaw da!. campo DPL del byte ARB. Tale campo costltmsce 11 hvello d1"'~ .'
privilegio
deil'Q~etto (segmen:to 0
porta)
"',
in~iYiduato' da.,qliel ~~
,
,::j:t~'1:"
descrittore,
",;.~.
.'.
RPL (Reque3tor's Privilege LeveQ, Livello di priv'j(egiO' ael selettore impiegato pe(\:\r. .lTIdir'1zzare UD. d ato o. una' .' dest'~Q..~~o:n,e.:",~.s· . d' alto··. E sso e' speel.'fi cat 0 a ttraverso.1.1', .," campo RPL (I due bit meno slgrpficatIvl) del selettore 'che ·eompare nel campo~", dll"t ,. "RP'L··t'·, . -"d"'; '". ;"t" Itt . 1""~ . d" e lS rUZlOne. Lll.erylene quan 0 V·lene,caIlca o'un se . . . ' ...., • , ,. regIstro di segmentd: RP.L,~.,Ia corp.ponente selettore delFmdlrtzzo~
In IDZZO ,
',
, . ' '.
e
ore In
UIT /.;
<',. ~~\(.,: .. ' • 'I'
'Sl--d~~~. ,~~~eF pr.~~~.~~ ~~ ~~.:s?,~~tdi'\~~~.~~ac (~~:'L~nker ~:'ll ~P?aderJ','~cl.:;S17'i~.
••.
,
'.,
__ ~
.'
.,
"''''
,
,
.~
,iI,"'~'
..
.,."
I,
,.
. '; . , stemarn"programiIH m memo!!a: agglUstana sra'l DPL 'neld.,cnttlin; che' gh·RPL.·:,~·... nelle istruzioni. Se, per esempio J si ha a che fare can un programma utente, it sistema~-~., ~~ assegnera, di no:ma, ~al~re 3 ai DPL nei des~~ittori d,i segmento e agli,RPL. con~eIiut~:~~~~l ~el corp~ d~n~ Is~ruzlOm. C~me v~:mo pm avant! un p~ocess~ puo ,:,anare 11 SU?:":k~ hveUo di prtVllegIO_ E perCH) posslblle che un processo 51 POrtl dal hvello 3 a un,.'.' 16 livello piu privilegiato , n processo in questione cont!pua, per.o ",~ ~}~gui~~ ~f?tr)lZi~Af;~" che hanno RPL=3 nei selettori (che compaiono nel campo dell'indirizzo delle istru-S'l, zio~i st~e), .In alt~e parol~, ~L ti~ne tracc~a ~ell~~,e!lo di PFi~ile~o origin~~io.,. .p~{'/"
qti~'s:t.o.~ot~~~:.;~:~~~~~ ?i 'prbtezi~ii~ 'i,ll~~~:ra~}' '~'~l' ~,~~i~o}e~~~~~~_. co~:~.~~~~ '.11",
'~J~:~~~it?;,~?:'.i~~:~?~::~I1~·~}~~~.V~~,'E'~~~,:l~.
del hvello drpr1vrleglO espresso-da RPL: , , . 1\ C ' d J a" . , . , . d' '':''{' ( E.P~ EfJe~tlV~ ..P~tnlege ~etJ~.!,. , ?rn~~o.~, e ~~l. :l1e:t~v~ hve~o 4~ ~nV1 ~g~o L~,~}~tf,; ,I .. , ~,prue'esso,"'nel ',seaso 'cheA,'e· 11, :livello meno: pnvl1egt..a.to' tra. CPt e· RPL, "Ov-vet0~':;',\~1'1 ..' ... :..1.',:'. . . :;,I( ~ ,.,. ',:: ",:' :. ".~, .,_ '.,.: l,:, .. ". :" ... ! '. "",-J"~";:,.• ,;' . : .......,.. ::"il'} :,
,.
.~'
.,:,., ";,":1
:... ,
-:'
,.'f':,.:.' ,." . dl:-'
:,;.'.
.. :":., dlCPL
l6· '''h' ' II d" OVVlamente Clu a nscontro ne a lmmUZlone e VdJ.ore e
".,.,
.
.. :::.,~::.. 'd,', ,,-..
' ,,' .,,"
:.
.
•
.
~'
,1·'
I.
f':'~l~k : . ,....''",
. . .. , , . ~
.~..
.
'~':.l";'!
,:".i,.r-1i~,:
'.
-
l~S ;~~,/f" """r __ ,
La pr,ot~l.
'
...,*".,.,., ,.
.'
•
41.1
\.
~"'M _,"
,,"rr-: . '. i"
.'
ffi<". ··..,.1 ,{"e' •
anche se un processo 5i porta temporane~.e.Dte a un 'lLvello piu privilegiato, il suo effettivo privilegio corrisp'on'Qe a, quello 'irripostato originaria,mente. Vale
' ;:1." .,:_,.~ . ,. ,:t:;'~J
;!~;~-~:.
"o'll~~""': .,l,,l:{..;.r;.'"
',',;'0\:;,':' ' :fi~JiI'~'" 'y ,'.)~~I '~'I ".~,-
dvnqve la relazione EPL = max(RPL,CPL»)!7 .. ,
,
I.
. '.
-:' .
,.,;~r:',~ . ,, ,.,'~
,,:,;,.~~.'
;.,p•. ".....
!,,;~;,'.:. ".l,~, ,'1.,
.
•
."
9.6 Protezione negli acceSSl
.
:,l:j~-:':'
"";'F~"l':: ',-,
-
. '
!B;j~~\;,,::"Vengono ora esam.inat~· l~. tr~, s~tv?-z~qni )n cui si ha cantrolla ~el ~v~llo di privilegio:
1·
~.4~+
neWaccesso ai dati, nel passaggt dl cantralla e nelle commutazlom eli processo. '. ," . ,,,"~ti' I ' , ""l,,.,,r-.. , ' . , .'.' . "'.,' ~,.,~ "I'~,'il:~~" '. ., .. ";~ ,. ,.
,,-:-,tr ~ ':" "
.
·Wi~.J~-lo~:
\*~~~1(·,'·.9.6.1 Protezione nell'accesso ai dati ,ru.il"'>',·'
,,;~~ ••• _,
..
'fir.~{":,,:;~,);:,,:,,,:,:.,:,;,,~. ' r \ '
l'.".'
.,:~
;!:.
,~,'-',
',i'l,,";
';:';"I";'~"'"-:"':''''''.~,,:.:.;
•
1),:<
ii~1'~,~:,;':','t'indirizzamento di '$l,.dato ·iQ. memoria .Iich.-ied~£h~ iL.selettor-e·del· .segmentd. sia ' t di to (DS ES FS GS S5) All' tt d l ' t ~~F'::.f,~~cato,"9-}~~ ~~~~ ~9 ~,. s~~eo, ,; , ,), ""'.'" 1', 1!~,):,.,~.:~.;·a.. q::.~. ,~~en,o ;~1M:.':' 8~l,.~~I~ttol"~ ~!1J9g1.c;~i~~' ~;py .~ffe.tt:':l.a ll,;~p~~r,,?\l~ ~~l ..J?r:\~gJ"W a.c~qrd9, .~ .Q~~.~~.19
. ;iii,E.:p'h.·..
:." " . , .. ' :':: : , " " _ '. : .... .' ~~ ,_." , ;li,,~~~'~ir.·,::~':~: ;. '~'~'" 't '. t~' :C~; t6 d' ,j; "int~\i"ttQ s~ r~ ('Cfr" 9 ~. 4)' ~~~, 'h~+~' iJ..'~o~o~t6
~;""'l/,:· A",~:.'
;o/jtr-~%I;:;,~....:.",C:- ;A"t
~W.~l; ,~Jil:u,' \ n, '. \q!-J,...
""~'" _,.,~ .'.. ' ..,..,:,:: - ,~ .. ,' .. ·iT·
" . ' ~ ', .....-
j~, rt~{' q~ .9J~~:\~I} I?.r.~,> Hl;qu~.~o., l~ .. p:r;0'~~·i??~;~bl.>'f};~8~~';PC?~:;a.~ up. .. ¥.~U.~~p'l'4
'.~~~,"'11'~':; Rr}~q~~}~;t9.l', .,~ccQnf1 ,te.n:er~e} an9w:,~ol1t.o: 4~. ltP~t:.o'0"~r,o".4ftJ· Uvellt:p;.. di· pq!.il~gJ.Q, :~:l ~ ;~J\·~~'.ttqt~v~l1
\I*~;;:,-> }~.:", 9.6.2
[,1;\ :;.:': ...... ">'(''''.1
'0/.1$"
:;
~~~.<;..
•
,
•. . . '" ,' ProtezlOne ne! passagg! dl .. controllu· . . ' . . . .' _. ~ -" ....
" \ ·'.'·i:.. '~'Segmenti conformi' "n trite'rio B 'prevede che un processo di livello p' possa chiaJ.it~iW~t, mare una procedura ~?nteI!u~a in. segmento.. di liveno p < p'. Apparentemente, il I'(if?:".~ trasferimento del cOQtrQUo 'fa.. paS&are' U. processo chiamante da livello p' a Hvello p. :; :~~~;.::: I/in,nalzam~ntQ de] priv.,Ueuio. ~ pOS$ibile, cqI). l'istJ;uZjipne~ ,CA:LL , tp.a tic~d~;l'uso qi ~~,r~f<"~··"· .0· ' . . . . . " ,. ' ...., . , .. ,_.. :: ,"'.": ,.. ~.'.~.' :;'~'~:, ',!~1(;", .. ' . . . , .. . ,. . '~~iit;';.. ~~Si. ricordi che minore e ~l numero, ma~ore e il privilegio.
un
1. •
I I• •
I. •
I
I.
.. \.
•
..
.,
1.
,~~!>: It;:q.~~:~~,~;t:~:~~~:n~~r~\~~~~~~~:~~~::;~,e~~4~~~~~alp~,~;.:.r:;a~~ ~:J2~~~~:
•
;. ,1~.,(
Loader cbe ba carlca.to it programma in memoria. e ha assegnato al programma U prlvilegio cbe gli
•
,~".';.
potracheessereminoreougualediqualunqueRPLchecompaianelsuocorpo,
.".,,,.', " , '.. "
<"..:. .:, .
., l#.:' l.9n,gIp.&I.~ ~!vell:o dl prlVll~g:Jo d,e . task" . , . " . " , . ' , . '. ' " . '. " ~'. : \rB:'~.~'" ' .. ,~~,. r,~~t!!~~~reb~~~yerl~~ai6 '13. C??~i~(1~ .. ,R.l~"L':~ 1?'!>~, ~D.. q~~t~ :~:p'io~_o~~.oi(1?,o~r" '~~i ~'~~t. portare'II 'Proprio- GPL ad 'un valore 'Inferlote'8o queHo ~nlzia.Ie~< n 'V&lote 't.nlzlale"ll quello dato daJ.
~L',l.k' compete, mettendo aposto tutti gli RPL in tutti iselettori. Dunqueil CPLdi unprocesso non
'
.~
~~.":
>
.."'. '
~i!..."
,
•
I.
"
:
'
418
,u
fil
Capitola 9
,!~~
=1
DESCRITTORE DEL SEGMENTO
I
-
:ttl~ :.
._._DO
OPER.
,
~~~
c.
I
IDPLI
~~f 11~
\ REGISTRO
-
\
CORRENTE
CPL
I s
CS
~LETTORE
DEL SEGMENTO
<)~i;~ i·r
.,;:;-~~~. 1~
OPERANDO
::';~I' ~, .~~.J~I:' ~' ,,~,;:h'~
I RPL
I
,~~t'
CONTROLLO PRIVILEGIO
=\ ~
Figura 9.12 Verifica del privilegio per I'accesso ai segmenti dati.
I
-
-
\
. . '"~;{;~
·~,~~·~.h~, :fl
DESCR1TTORE DEL SEGMENTO
I
-
~,.;~}~~
CODleE DESTINA,7.IONE
I
I OFL I, 17I'):~., ,I
,~,
I
I
I
i~t~W.,
-I
. .",
' ICPL
,
I
\: .,,;t. ~~
",:~;'~~.
9 13 V ill del 'vi! . f" . . . . ,\:';"..', ' ,,~" a.l ~ • . er ca pn egto per tras enmentl contrallati senza porte. Sl nchlede che \':t"1,1 , v ga a relazlOne DPL < CPL. ·1:,1:1 \ "l-::'~ ji6
:;',:,(~. "~I :. l·'
.
- \
'::J~,~.~~
Figur
•
•
:.::;\--' 'd~'1!
CONTROLLO 01 PR!VILEGlO
-
~.'~~." .' :':r~~,L"1 i~',
,, REGJSTRO CS CORRENTE
-
Z;", :'
-"?C·
I
•
.. ....--r,
.~ ~
"'t~;'
L'uso di segmenti codi~e conf?rmi non consente tuttavia di mettere a diSPosiziorie:·~<~~:'lil sottoprogramnu c:h:e istruzioni in quanto queste lStruZlOfil possono essere esegwte solo se 11 CPL del processo e relativamente piccolo. II~rlj~
~ell'u~en~e
mcludo~o
privile~ate,
,~~::rI~ -. ,. [~,{~
" )!"L"
"
,"~,
::, .:W';.
"rz: ' • ",br
"
k
:,.:,,~Jj~,l~ ~~ una porta di chiamata (si ed ., f) ,. ,. , ' /;.-1,: '. @ .. v a. pm avan 1 e non 51 ?a ~naJzamento del pnvlleglO se .:~T~, ,: amata diretta ".-:;.. 1a chiIn ~a ttiaVVlene il till modo " d ' come assunto m Flgura911 . .. .' ':;,-:.t.r, ;' . eue ,8e raslenmento el controllo non e mediate da una porta di chia-' ~;,~l'. ~ mata, il salto alla procedura pili privilegiata e permesso solo se il segmento a"livena ':i~£»~ ' p e con/orm., ovvero se e 1 il bit C del campo ARB del rel-t' 0 descn'ttore (FO19U-,'c', ';It-' ')';\~",,·.; ... IV ra9.13 ) , In caso contrano si ha violazione della protezione. Un segmento canforme ;,~~ / ha .la pr.oprieU, di,eseguire in ~oda conforme alliveHo del chiamante. A tal fine, 1a J:UE~"~~ ~af9:~ d.i CPU, all a:to della .c~amata,. no? ~g~orna il CPL. con it DPL del segmento ,?~?(~i t ~diriz7.ato .. Come nsultato illivello di pnvlleglo corrente nsulta immutato, aoche se ,;§;,~ . 1 Vlene eaegwta una procedura pili privilegiata. . {ji~~i., . """~~
\
-
,- :r
. ;M~"'
DI
I
'.: ;;;:,' '''.,'i.,;f~
-.
"." ... "','......;,.:. ..-
:!..~ ~
",,,.,,-:.,. """"~" '_'w.,,, .., ,,~"'''.'i
,.
utt!£;f:· ,
9 l~\l{~·".. ..__--------------------------:L~a~p::r::ot:::e::z:::io:::n:::e:.--.:4c::lc:: ~~;~.~~'<'. ::.:
~\l~~.f.~;'f;'· :, . ;>~lIi"'j~":·::· ""',',,
' ' I ....'· ..·'"
~T;:::·"~- Le porte di chiamata Nella discussione precedeote si e supposto che i passaggi di f;{;:.·'. -cantrolla non fossero mediati dalle porte d.i chiamata. Una porta e un descrittore in
~:~>~~~1't,' uno dei formati illustrati in Figura 9.5.
r.ff~~·~:~'
l)na. porta cli. chi~ata specifica i~ punta di ing:esso Del ?rogramma chiamato e ~~~t--'!'iX serve a dlsaccopplare il programma chiamato dal chlamante, 10 'quanto, can la porta ,:~.{<. di chi~ata, l'indirizzo de~ 5~ttoprogramma e non ~ota all'utente e nan ealtera?ile cia ''4$~')'" quest1 2.O , Questa caratten5tlc~ puo. e~5ere vantagglOsa.:nente sfruttata da un SIstema ~:k~r;'~'~,»operatIv~1 c,he p~o ren~e~e dlspamblle all'utente un msieme ?i p.orte, ~e p~ntan~ r;~.,~~:,~, aUe funzlODl degh anelh mterw, Attraverso Ie porte, senza nschio dl mtrusiOoe, 1 ki~:;<:o,:oprogrammi di livello utente possono chiamare Ie funzioni messe a disposizione daJ \l~~~.':,;':51stema operativo 5tesso, ~(~.'~:\": La porta eli chiamata cleve essere sullo stesso a su un anella esterno rispetto a @~i~!,~{~' quella del programma chiamante e pWltare a un segmento di cadice in un anello non ::lm-r.5, .;; ',. mena protetto di queUo corrente. In altre parole in caso di chiamata (istruzione '~4'~~~):""',CALL), Ie regale dl. venfica . . ;~!w~t>;,~:;:·· della protezlOne sono: ' ~~Jf.~:(~',~'
'~1~Wt:~:', . ' '
. .
. .
..
;;~l'~"~:'"'" DPL della porta d. chi ch.amata ) deve pm 1, l'<"':"1·.. ' . ii' d I d. ch.amata chi > EP LL(la porta di . "essere non u /i~.~~'\\i:.;: '. pnv eglata e ?roce.s~o aman~e. a porta. amata e un ogget~o -un
·...
~i~;?~: . '
date- meS50 a dlSposlzlone del chlamante dalsistema);
liJ~~,">'
DP.L del se~~Dt~ ~est~a:z.lOne < CPL .(11 sottoprogramma chiamato cleve avere pan 0maggI0Il pnvilegl del processo chlamante).
t1';{~;/ l;~~')';,~~;' ~ • ~:(l'~1
. . ,
.
~J~;~:',:,' "
11 mecca-nismo di chiamata attraverso Ie porte viene schematizzato in Figura9.14, l',. ,~:~~(: mentre 1a Figura 9.15 mestra il dettaglio dell'indirizzamenta porta. {'~it;~t): ' 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 t~~~::;','. aHa Figura 9.14, la chiamata del cadice di livello 0 da parte di PI e P2 tramite CALL, -~"~{~l 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 , , In Figura 9.16 vengono .mo~trati ,tutti i livelli che veng~no verifi?ati nel passare il ~~ ":"".;'" '.. cantralla attraverso porte dl chlamata. La figura e stata nportata In quanto serve a ~~~;~tJ.'>- illustrare il significato dei vari livelli di privilegio (CPL, RPL e DPL) . ~ '~i!~f':';, Le porte di chiamata possono essere anche usate can l'istruziane JMP, rna in questa *1~~;~:,:' ,caso non si ha variazione del livello di privilegio. Pertaoto se it sottoprogramma e ~¥r(1~'i~' piu privilegiato, per essere raggiunto tramite JM-P, seppure can porta di chiamata, """'" ' che 1'I segment ~ ,~,~,{:- e necessano 0' Sia canf orme. Le rego Ie per 1'I J MP a tt raverso por t e d'1 I !\~f~~,;;,~:' chiamata a segmenti non conformi sana quindi queste: ~~.lf.k:;:.i: ~ .,' I~, .. t·' . I '~i\~:{'(""" • DPL della porta di chiamata > EPL (Ia porta di chiamata deve essere non pili 1 ,~,.;t.;... '. "<~':olI,~r privilegiata del processa chiamante); !'l1 ~~ "
\;,1;,::"
,
'.
:
l!~:~'~~::' ~~ ~rc ,
;~,~~~t~,·" :.:,
,;~,i'I'~J N/'" ~',,::,/'
• DPL del segmento destinazione = C P L (il sottoprogramma chiamato deve avere pari privilegi del processo chiamante),
.", ¥::!-<."
,
"'I(i;:'l';,l' ~~r; ;.:.,
'..11:''''
~j
..., ,.,
·v,~·
~i\ b\=.~·;· .. ~~
,
",
';;', ,
20Si ricordi che Ie porte risiedono in una tabella. dei descrittori e non in memoria
'.
420
Capitolo·9 ' ,
: ,'t ,,;.
f·
,
"
.,
."
" '., ,- ......' ,:,,¥;;,
. ,.
...
:,: :"
,
...
:"../" '"
"
.... ,
.,
t 'f'
: ....
.,
,
•:
.' '"
.
'.t
"
::
.
. '.:
"
'J,i '.'
.'
..,
,.
,-< "1" \
,
. '~l' .):-i'?~~ ~.. ';'.••;.; .;. ~, .:, '. ,'. 1: ~ \"t. ,,'f . ,,~.• ~;,~S~ '. ';" '.~ :.' '·".Y' (, " . :;'.; 1; ,~, .:~i ~:, .•,. '.,; .;' ;...·F~·/~f"' .
.
\'.... , .. , n
,~, ..
~'."
r.
....•-. ,.
~
.., •... :'
.. ."
'
Ii' .
,
' ...
'
.. ; ..
"
\:
'I, .,.'1
•
,
, :CODlCE:
. ., .,."
",1.\'
,
• 'f~~~~~N10
. " .'
,.,.
, ",
I'~""
..J:':::
;,'·,.'il
..., ',. " .':
.;,
r' \
!
....
.
,"
,', '... '; ':1 :/~
.",',;"
.('.I~
,
:~
"'/Il;
,: ..
"
;, ~
I"
V.n_,",,-
,i
.
.. .•\'.. '..:
'
'
,;
,j,
.., .. - .
,."..,
. "'.,'.,, '~'"
.' , .' . '. . l
,"
.'.
..
..
."!
..
.
. . '.":' ': ...• :.
.
.', i'·
..... :.
:'~ j,"l~.l . • ,,:: ,'" ,,: ••',." •• ; ; .:".l~~};"~;fi~: Figura 9 ..14 .Sc?e~a~~z~io.ned~lle chiamate (i~truzione CALL) attraverso Ie porte di chia- ,.~~*"~: ~~t~.,~:a ~~~~1,~.4.i p'~l,"~~~~.~lV~Sl, n ~~~.,~t~ 4i:.codiC~..~:~~~ft1o:P J?~q ~~r~ f.hi~~to da! :~:ia p~ogr~~ PO ~e ~3:!1 t~~; l~veno. ~ p,rogram:m1 'pI-, P2.possono chtamare sola utd.lztartdo,~ .un. porta' Anche'PO h"UO'usare- tale "ort 'n ;. . ;..... P3' :''''" .. <,.. -I,' . • ,.. , . • ~'.~ . p ..'.. '. ~, a.. prof>: llIa non PU~""Cn'lam'ar:e la' pqrta in '7~:t\.':1- ~ quanto!aportaeaunpIlv.tleglO'supcnore"al'8-uo: "... ,.:,;;,. :-;... ; ,'.:.,." ;.;.;.' ,,~;g,~~1. ~i·A t . , ,:' .. ., ~ I ". , .." 1{.. ':.'. ~ " :"'. ". ; .. ~'.' ;'::;;,f~t:!'" i '. ' ," .. ~ ~. ;':0:~~~' , 9.6.3 Protezione nellac6mmu'taziolle pr6~es~i"" '>J9 :. 01·
....
~:
".
+.
. <-jPI..' '..
-,--.:~
ri'
. "
".,
,
' . . . . . ,.-.'
"... .'
,::~::Ii!•. r
.."-;"1/·' :.:.;.;~ .. '(!' ...
. . '
',., ...•- " . " . . .
..,
','. • . • . ;
j',
-"
".;;j;.,.:,,<, . .
,.'
Le situazi~ni neUe quali si
I'
,';.. ,$j~)~' C9~~~;~.jW:le~~' ~r~\f~~~·~·.d~~ u~~:~~t~~~.u~~~~'.~, '~~'~~~:~.~~~O~~'!4~\~J/~~:'"
pp...n
.c
~ ,?:i..C\!:p., Y.Lqq)1p;r.~Bp~~C?t¥.. Q.p,L·~~l: pm~e~p': ~qq~r:~~~:~! pontr~r;i() .• "!1!})~·,~opt.:;·-~:~),
!TIut,~~1.0ne:~~ .pr.qq~~Bt.~. P~-9Y.~
.
.:
. , . , : ' . - . . ,;,
....
:.
".,.
d
• . " . . . . ,.;
,.'.
"."""" ,
•••.
•.... ,.
••...
,".,
. ," -'"
",
~':'1&" _.'.:,'" .. ~...
..•
.. ' :.' . .." ,.-", ;.-.-,1" , '.' - ,., . . .
~'
It,
• ".
.¥...
>. ,,,1',.'.\ " . . '-;'.;..l.:. <..I~".".:;~ '. 0':'1: l:",!,:,.:}·;~~~;: J • se e previsto 1'1iS0 di:.tlll:.a: 'porta: Qi' pJroaessoj' iL· ·CRL, del. p.roceaso: :us.Gente:.deve ·31~,~lt?: .. ~,le1.lS~re·I:\.umePc~ente m.in.ore.o ug}J,ale. al DPL.d, U t . . · . ~I " . ' . ~.5;t:~ '.::,.' ": .. ;.; iIi
_, •... ,:...
:' .....
.,...',.. .... .i
~l;'
':';'•.
; ."
.'.
.... :. ' ; •
...
e.
'(.
~;~~t . ~~.
. , ., - :".
II..
.
~
._
~B~
riS r
-'----~-~
"., ,~e~ q~s.,(;rit~qr~~4~.1,.s.e~~~te.,~~$.Jri{eritQ.
;..
;",1
.::.
_ _0 _ _' _
' ';';
"'., ... j ,
.,
.'"
".
-
,~,;:,:
-
-- -
• • ",0"1
' . :• • • • •
,!'
" ,
, .. ,' , ... !
..: . '·Si·.n0ti,.:Ghe.nesBun;o}.egame:,~~iB~ tra' il .cPL.deJ proc;.esso ;USteDte e: queUo
t".
.jt.f!t
"'::f~~
,,,,,J.t :.:i·. ,
.•
.del';;1~;.,· processo entrante.Di fatto i process; sono isolati.neL!oro,spazi,. Vitt~.ledegli;indirizzi :.;\1i e nelloro T~S. n co~tr.ollo.e ~ffe~t~at~ solo per l'acceaso al TSS e non e effettuato {i~l., ~er quante nguarda il livelli di pnvileglO dei task ~o~vol~~... !l... t~!c en~rant~ o.p'e~a_~~ .!~~. : ItvelIo RPL contenuto,ju,CS ,(caric~todlJ< TSS) ' . ' ,',r.- . . . ,.;-. "':
•
,
, ' ,
.•
••
".
L'
•
""'"
'.,
,J:
",.. ,."
,. . ,
." '.~itI
j"
.~.
"'.'
;;Ji,Id'
.
l
~,~;~';""
1-
,
9\1'· ·~~n~r ",~: :~I~i~~", .,'
,.'./. . I .
'~ij.:,IJ!:!\'"
, ,11;',"1.,.
'
',.1' '. :_":. .'l: ~"
,.jl:"
l!
o
_
La proteziQne-
'J~1b.'.:'
L ..
tndJ.rizzo destinazione
. !(.".' I" '. -.",. 't' . ," j .... '~"'~A"" , ;.hi~?}?"':' :~ ... '.' ;:.:': ... ,,<~'., /1.. 11~~l'irt,· , . ,~, -., i~5~::~:' "I':'-C~ll~: I ..... SE~' I. '~l ...1.' I~.lruzioDe,.. v~h!f':;:"
,·.. ~t:;. ..'.,:.. ·
~·'!'I~'v
""i'." ,,,. .,,;,.. \t,,-."
" " '~~'.~... , ~... ~:",...
,',,' ',-". ,
fi" '.; ,'. '"'I
II~' ,P',l: \".;;:J'
··"',··· ..
.
:'L'~'~I~'" i"
:."~i".-i.'-" L','f
-
•
~. " . • • . . '\
"' '".,
"'l,,",,.. ... ' . . '~\.•" ',-- ' :~,~r·~. ,; Figura 9.15
....
......
I
SEL
, ..' :.." ....·,v. . ,,,,,,.," --'" .. '.''.'. I···. ~l;"'~~',' (','. : 11.(~:~."· 'mil;,f."l,',: . ;,'1.:>" ': \.,:,.,; .~ ;'. .'"~.
.~~
. .' .
. -:
- ., .
' .1 -'
..
-.~~-
,.'
;:~:.
"
'
.
.•.•
"
','.
.;:
' " .. _~,;-",,,
~-
.\..... '," {. .;.' .• '~.
I
. .
.'- .
",.
'
,..
""8 ,as/!I:""
."."-"
..
.
." "i. .',' .i' " '., • a.I.~e.cm.oto ", . .. DeKrittore . ,', . ." , .' ~
. .
'. , • . ', , .. ,~.,
,
..
..~
.-",
/-
. , .. '.' .'
".
,-
.'1
'I
\
r
.
"'_'di':I, ',;.: .'.".;,' 'Ul rz;2;o'bStco ~'.',
. ,.
. . '
d""
-
' \.
,
.. ' :..,., ,::' , ..," ., .. - '
_&,.• ,. ,
Offset
..
,'·"r·· . ,. ,
,
'.
I
.. ..
.....
, i·' ~
"_~'
'.
"'.
·
,
•. • ." •• ~~'..~'-,~~._. .~,,~ ,".',:. \ " ..
,,","
~:_,
,"'"
'
, ' . , 7 •.
,
•
'0,
~"::":' •., . . . . .
-
421
"
..
~;
• .;
.
.;~
;
. ..
• . :,
'
,
..
.~;
.:>{5'~
'AI*"" ";;,~, '·r":"~· i
...
".-
I
1-\
Mecca.nismo eli chiamata attraverso una porta. L'istruzione e ovviamente indi. ~~)'::~>'" rizzata aitraverso CS:EIPj CS da. i1liv~Uo.di pr;ivj.leg}9 c;.9J;T!!n~e (CP~)" +l s«:le~,t9re c,onten~tQ .!l!*'t/, ." nell'istruzione da. RPL. Questo selettote indlrizz~ (wi aesttittOre una: poi1:a di Chianiata. in ;( ,~;\'. 'una tabella di descrittori (LDT 0 GOT). n selettore contenuto nella porta (il DPL in questa
llir
:~;~l!j':~ ~~le(tore,e qwnl;Udqu~llo ~ella...
seJezi~na.il des~it.~I~·!J.e~.s~e~~.di._d~t!n~'?n,e.:
nqp;a)
a ~'Br;~: . ~JmeJir~!o fWj!::~i?e,l!3:'p~~~i~p.~ "1~:'J-e .'?~';e~.uto s~~~~ .. ~~. ?~, Q~l..~~~e~~ 1~9~t l,i\""I~;(', C9n.te_n.~.t,o de.J;ltrQ.,ll ~cnttor~ t;li P0t;t~. 81 n!'-lt.l c.~e: l'e'lle~t~a.Je: o~~~ @.J?tenuto ~etl'lSt.~Qne ~~~ •• " .
~
..-:> • • • '
•• ,.J.....
'
..
....
'(il- .'.. non y!e.J?-~ .con.sl~~~tp·, . ,.,.
., .'.
!l~.\~rf.~.~· t&.;\~\~\'l:' ~t:' ;.:. '0<;
" i ••• ·
..~\~:;.~, :::tI:"~'.;:; ..
11
Lf \ ! ' ' ' ' ' '
'~I;i~~6';',"'~':I''''''
liil~::''<:-:''':'
';/;11 '1!~'.,
W..!'II' ~:!i'i::':r.-!'~
~1(!,',~...
,..
&
".,'"
~1· ""'~'l
!
•. ',
'
".
... ......
~; .~(~. . ~tl:!\~,.t'
".
'
'CA.L1.'GA"l'£:
D~;;:'
.. ::
. .. .l ,:,.
,
•
•
'
n, .. ·.,
I, .. __
C:'lI
'.'
.'. .. ,
':"
••
,:."
,·'1'
'. ':,'"
• . ';"'.
'!"! .
-
.:_-....,.;:,.t:
,ro'·.' .
. . ,.,~,', " . . .~: ... :;.. ,-".~.! .. ' I
, .
.
.,f.
j'
I-
....",'
".'
,
•....~ .•
.•
,::.",,,,' ., ..... ;
" L :._: , ." '.;" "'..
I r
CoRRJl;N"l'E
ICPL
.. . ,
S£l-ETTORE DEL c.-.u.' G.-.TE
.' RPL
.
, .
I~·."~
"
.'
.
"
.. ' .
.....
.
•
.
•
.
"
.
.
-
..
L I
.
CONTB,OLLd·,,,. D1 ,P~tY.,ILEC10
.. ' , . .'
..
-
1
~j 'h1f;i:I:;;,.: Flg~ra 9 •.16 Vermca del pn.vl~egto p~ il trasfer~~t'o ~ttr~v.~~~ porte ~ chiamata. L uso
~ ,~~~,: dell'lstruzlOoe
CALL
~
co~ente Jl1O;Dalza.mento del livello ~ prlvilegJ.(?:. del chiamante. •
'.
r;
n'li:' ". ~~: ". .'~£!{"
9.7 -'-- .-
.,
~.
. .,',
.-
~l\'~~l' ~,:\'I~..'....... ~;~','. ·.1.• ' . . ,.,. ,I, ~ .~ ... r .•. , .' ... ~'~';
t,.1iIA.t.::··
· a~~~;~" i~~m1~i? , ;1~~,:' :~ •.~':;~:'
~ r,1111I:~...J.,.. ,liI,."-'-"·"
' 'Ii~ • :,r:..
-
1-
. .' ...• "" ..
·t
1',:
..:",.... .,,,,, .. 1:
' •• J .
'.,~,';.'J';~:' ,~.:
. . . . ,; . . . . • ,
.,.
.'.'
. • ,.;
...
<"
I
.
..
':"::.,.
:: .. ,
."IDfL.I
rr.:'~' • .· •. l,l
: ll~f.il·'
... "
_'.1
,'.,
' . . • / . . ,'
,\ ~t.
J.·~.£tt~,~
'.
•••,
, .' '......
,. •'.
." .'t:
CO~ICE D~S1'IN'-'ZIoNE:
I:;;.
REGIS"l'RO
,t ~~" ,tJ j'\i~!:< ~ ".'ll'·'~ ,:~".::r '"
~
".
.
.T ••••
,'.
... "O!:SCl'!:I1-rORE'OE:L·'SEGM"Et'lT¢"·: ...
',; .. ;;, :~r:·:l:
~~·~V~~·'
,.'
, .•••
,,~\'• • • •, •• " . , "
: . . ,.1.". ......
,,"
"/
. , . . . . . " . ."
'.' , . '
1-
'.'. ~ ~~:..: :'.::;, "~"'f-<'~ '. . ,.·, •.. ·1,',.•.. ~., .. f. ,( ..• ,1 Siegi1i'd~tio'··elie'ttatriite'I·lsttlJ~iorieCALi.-:Un'ptacessi:fpilo 'Valia:r~'il'propH6''li\'eno d'i ptiVtlegio:: ..::" Ii " . . ~:~'.:' ., ' h .. ··'.' '",.. ,., ....~ :':1, ... 11 .;1 ~.;. .... ' •. ~~': '.' '-:··~.<:.l; '.:1 .~' n CPL inizi.le eHss~t6'\'~1 TSS' ecoil:i8d~ 'dB;; jl'Di>'L'd'I' s~g',fie~ikcd'dice 't11e Vlene m~sso.In e~cu~lOne p~r pnmoj a partlf~, da. tale C~L,.ll processo puo p0:-tarsl a CPL. VIa .Vla mm~n per ~Ol tornare a C:P.L ~a vI~.r;oa~?~,.~.p.Qn.e.COI)S.ent.~o ,al
.
processo dt portarS! a un livello meno pnvilegtato,'di quelIo.1DlZtale
"· i
.,
,' ..
-
I
r
-
I·.
1-
-
422
-I
~'innalzamento del privilegio si verifica quando una interruzione
-
Pesecuzione ,.' della istruzione ~ALL fanne pas~are il ccntrone, a ?-O sottoprf?gramma appartenente a . . ,};>'!~ un segmento codice con DPL mmore del CPL; il ntorno al CPL p~ecedente e automa~' ~;Jf ti;o con l'esecuzione d.el~a ~truzio~e IRET e RET a co~clusion~ d~ sottoprogramma. :~.>.~~I L mnalzamento del pnvileglO traallte CALL (e con Ie mterruzlOw) coinvolge sempre '/.')..'( ,:1~j;;r. lluso di una porta, Poiche i processi possono cambiare livello l e indispensabile che, per ognuno dei :.:~. ~ possibili CPL cui un processo puo portarsi 1 sia previsto un distinto segmento pila con., }'\[I\un ~PL pari .al.CP~. Per questo mo~iv?1 il TSS ~?nt~ene copia degli indirizzi (virtuali) ~'~~J:;.. 21 degli stack 31 livelli 0,1 e 2 . Per il livello 3 1 I mdirizzo dello stack viene salvato in ~,,;:,<,~ ESP: SS. '>i~ ,
\
-
\
-
I
9.7.2 L'attacco con il cavallo di Troia
'::~,\1~;"
I'
Consideriamo una procedura di sistema operativo nell'anello 1, che l per esempio, ,:"t~l scrive la data e Para correnti in una ~tringa~ alIa locazione specificata dall'unico'1q~ parametro della procedural che BUPPODl~O ~la un iI?-dirizz~1 virtuale (sele~tore pitI ':~~11 scostamento). L attacco ~ scbematlZzato lD F1gura9.17. Un programma dlSOnesto» :.,:~.f:. ~e~'~ello.3 potrebbe .chiamare questa procedural passandole come parametro un _,}~> ' mdinzzo virtuale la ew componente selettore ha RPL ;;;: 2. La procedura neU'anello'/~.\i 1 Bcriverebbe la da~a e l'ora nella posizione indicata, che pertanto si t~ova 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 i1~~!f:t!r"
\
•
I
parametra
e stata lasdata entrare nell'anella 1 dalla proeedura di data e ora,
,:':;;,,~," .' ", ~
:'~.~~~.~l _~\~~~~,
."'"
,0
•
I
. ./
,0
•
•
.. ~:"t'),'~t;.
.;-: "~:~i "
•
•
0
/~f ~, :~:~:~~'N."
\
•
Capitolo 9
b'
::t!: '.L
.'
"'}:'J:'t~~ .1 )'W: i
..:';:.~~~ _';"~~':
'~"':"·.i
(
-~'}'n~l
-',;1\\~~N
j-
;;)--c;:r;r=':-i..."
\
I
.\~~~~~ ,,:'~~~".'
. ':;'~i~~
-.il
Figura 9.17 Schematizzazione delFattacco con cavallo di Troia, Il processo di Hveno 3 ·':;.·,.~)ifl" (E3)1 chi~a ~ttraverso la po~ G .il,codice di livello.l (El) passandogli come par~et:~ un h . selet~ore il CUI e 2. n codice di ~vello 1 che usa il para;metro come (parte de~l)1Dd~lZZ~ .-:;;/: ~ CUI leggerejscI'lvere sarebbe autonzzat? ~ accedere ~ l~v~Uo 2, In tal modo il codlce, ~- '~,;V' hvello 3 avrebbe avuto accesso, seppure IDdiretto, a datI di hvella 1. ~~]
R!'L
"~" .:' tV
21 Loca.zioni
dall'offset 04h all'offset l8b.
01 ". ~~~?M~. .. ~.. J~~ : ; ~~'~
""i.'
I
,
.'·:il; ,
.
'r~1
,'..
........:
'"'".
~,';
, "
;' .;,: ' , ; iI:w"" j
,
\~~l;:.: '
.
La protezione
423
.fJ/ft.·., ~tf~::,
~,,,;: : ,'..... <1.".'
i~~~~~;;~: ..
Per evitare questa inconveniente l'architettura Intel prevede la speciale istruzione '.~r.mt~·(··: ARP~ (Adj~st RPL)1 avente l'effetto di abbassare il HveHo. di privilegio dell'operan~o '···~'f:=':\::...~destmatano a quello dell'operando sorgente22 . Se al suo mgresso la procedura chla~I{~~'::, ,~ata esegue Pistruzione ARPL. s~l s,elettore passato c?me parametro, it relativo'RPL '~b1~<\ v\ene portato al valore del pnvileglo del chiamante (10 questa caso 3). In tal modo, :.~~::£~>" l'attacco con cavallo eli '!roia non ha effetto.
.,
:?i\~~~j_:,':_
,i~\f;>~:.'"
. ~~y.~t.:
~Ir,~,"j.,,·:
9.7.3 Istruzioni privilegiate
,'$;'~W:·,;,:;,
,-,'~i~,~': In piu di una occasione e state detto che alcune istruzioni sono privilegiate. Ap::~,:;i~r,'::' part~n?ono a questa clas~el tr~ le altre l tutte Ie. i.stru~ioni, ehe agiseono sui registri
;' 'i}'1:',': speclah del processore, PlStruzlOne HLT , quelle d1 lnvalidazlOoe della cache (INVD) e
',~w?Jt:"':altre. Le istruzioni privilegiate possono essere eseguite solo 5e il CPL del processo
'
'
~1~~J:·::'''. attualmente attivo coincide con il livello di privilegio massimo (UveUo 0); in caso
~~W;;~':'t contrario e generata una eccezione interna di
tipo 13. )~;;~"," L'architettura prevede anche istrtizioni a esecuzione limitata. Esse si riferiscono ~s.~::~ alle operazioni di I/O (per esempio, Ie istruzioni ~N, OUT, STI e altre). Quest~ is,~~:\-\. truzioni possono essere eseguite solo se il CPL del proeesso attivo e minore 0 uguale ':II~:,:".,al·1ivello di privilegio codificato nel campo IOPL (Input/Output Privilege LeveQ del : -Ji..~,?,"" registro EFLAGS,
.:
",' :!
~i<;::,
~. ·:~)i;: .' I, ~ ,~9( ,"
' ... ,; ,~;- '9.8 La protezlone dl paglna ",.I.
..',.'
,,?C,;:
Qui di seguito si descrive 1a protezione.di pagina nell'architettura x86, Si noti che, .'w;"if~~:;.:;' sebbe~e questa ar~itettura si~ fondame~talmente segmentata, e ~emp~e ~ossib.ile L ~~ti~:,' costrUlre programffil strutturatl su un umeo segmento contenente lstruzlOill I datI e 1. ;'~1\';~>' stacie In tal caso 10 spazio virtuale risulta lineare l come accade nella rnaggior parte *~.~-: ,dei sistemi convenzionali, e il meccanismo di protezione sui segmenti non e di fatto ~, ~~~}:.':> utilizz~bile, mentre .ris1J.I~a es~emamente opportWlo disporre di un 'meceanismo di 'H.·.~~kf: protezlOne delle pagme vrrtuah. i~l~f;.:', 'Nell'architettura x86 il meccanismo di protezione delle pagine entra in azione se ~p;'~~f,: quello operante sui segmenti non ha rivelato alcun tipo di violazione. Vengono utiNJ ~~t;~; tizzati i bit U/S (User/Supervisor) e R/W (Read/Write), contenuti sia nei descri~tori ~ Bi%.l.. .di tabella di pagine sia nei deserittori di pagina. " if ,)i~t· 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 " )!i~~~:;,', ogn.i t~ntativo di acc~sso da parte del ~rocesso attiv? all~ rela:ive tabelle delle ?agin.~. ' ~~~~~~": T~1 bit ~~no pe~o. mflue~za s~lo se l~~on,gono vmco~ sull accesso ~la pagma plU ".r~~:i~· stnngentl dl quegh Impostl dagli omomml bIt Del descnttore della pagma stessa. "
,
,
.,
' . !I~J'~ !lW~;';'\. -;,,-:-::::;-;---;----"'7:"-::--,.--:-
'ji;i:{'
1.. \,~~~~~?:: ,;( ," ; .~l!f~~
:;7'/" ':';;
~.
~"'_ "
.' ,
2:2ARPL ha due operandi it primo
e una posizione di
memoria a 16 bit che contiene un selettore, il secondo e Ilormalmente un registro cbe contiene il CS del chiamante. Se RPL del selettore e Dumerica.mente inferiore a RPL del second~ operando, iI primo RPL viene fatto crescere al valore del secondo.
0apitolo· 9 .
424
.'" ",.' In 'riferimento·at ·,desaittori.di pagina,:bit: tJ IS eRjW S(lno eSaqlinati:dal- m'eccanismo.4 pLotezrq.ne (in;adaoI.do:a1la regolariportata: nella:Tab~na9.'3) ~.dgni tentative di.accesso,'aUa,pagina_, .'.::' ~.', " .' . "!" .. ~,': ' ..... , .. !;~" .~, .-:' .,:-i.. · <, .. , . . , . " ... ," '., ...., ," , "," .' '" ';:"-" ....., . ", ,~" I'
. '
,
~
~,.
".
I,·
,
';"~
,
~
I'CPL lU/S'1 R7w I1ii>6dracceiso P~im~ss9 I
:,:
.
,
<3 =3
..... >.... ~ :'.-
,i~.'.; ~t
,,"
.
1 1
0 1
:.:,. ,I:' .. ,!:"
".
".
,
"
~,.,:"
.!';':
.,";
/.
-
-_._.
Lettura e .scrittura Nessuno Solo" Lettura.... ", . , .. Lettufa 'e\scrittuta. ,::C",
· ·
,
.
"':~".' , '
.
.
,.\. ,.
,
",
,
•
'
,;~
i'
j
" • i'
"
:,'.',!:; ;,:·,';.' .. "."·;;,:\~·;:1~~
"".'
, ' . . . . . .. .
",
,
I
.
/#1
:.:i:,.. .
,
".
1~'• . • ;:'~ ."~".~ ,:.:.J' ';;'..,.'. . ;,' .: •~~~':'. . ~.,~. . .~, .~:. ':",~;, .~: ... ~','" ... ;"':.:'":'7!"";' :,, . , ." '-l"t ....~~ • .' • _. . '. • ~!)~ ":" . Qq~e appar~r:da).l~c~~i;l,ell~ 9·.3~· p~Z; .un. prQc;es.so.,.noD;.d.; .H~~llp.}3iIH Il?-ec.yp.nis~
.',';: '.' • .
':'
•
?1 protezl.one delle ?agme non e~et~t;~~cun. ~o.~ttOU9~fr~.r:t;laJ,;lgq~O:.9vyi¥TI~nt~..at~iy.j .,;{~
c.Qn~,?W; ~,!~t~~.~t~. ~~l. JP.~cc~+~;IDP::P}: ptot~19ne ~e~ ..{i~~~ntV. J?er.. un-: procease '{!,!;i cqn .,4y,el~ dl RQyil:'1gI6 .P8.!~ .al .li~e~l.o.;~l, p~ivilegt9;IP:i~~m.q, oV~~,ro :CP:.~ ;;;;;. ,~.) ~ c.91! ."~~~~
1,
(TJ.t~~~)~ ~,~.~cap I$m~. qll pr..ot~~l~~e ~eU.~ pagin,:. ~ffett.ua ,!p.y~e c9.n~r9Ui .~ ::~ yhe st:"so:~~ ,~:queJli~~ff~~tu.~tI ..dall mecc;ap:S:r:qOr ~~ pr:8t~:z~o..II:e 4,~~~egmenp .eig~~~~a: ':,;~li,
1J./q.. :1
una nchiesta cil mterruzlooe (dl tlPO 14) ~e nscontr3o delle vioIazioni·neW309eElSsQ.alle.. '\;~ ' .' . . "':' ': ,~~~!i'I, pagine.
'
!l:.,', .......... I . . . ,
"
'
. .. .,.
,.. . !.,
,
.,
'.. .' " ,
'.
"
.,
'"
'.'
."
. _ ._
..
,.
'. .., ,; ,.; ..
. ••.-
.. 1:.:",,,,.:-, ",
'"
''>
,,,
il.'·'-;.~.--:
,,
.. '• ·t· ,
.....
"
,:'~',' ':
'ii :;~d.
.'
,~i.,
,
,
"
.. i
.J'.
• '''<',.' ,• ••-
, :.
! :'
I.'
,.. ,•• ,"
~
:.,'
.. ,
,,'
.'
,~I "
.',
.. . ..:,.:, ".
,...
, ' . .-
.
/.
"
,
~
'I
~ . .;' :,_,~! ;1.
. . : ' . ,' ..;
'.
'~., ~.
:.1'
"
," ,
,"
, "I ,
" ,.>J',,~
,
' "
_'.'
u
..,
,l~Jr :,'j ;, . .
l,·,;·.. ·.:··ll_'.l
,.,~
!"'!;
,::
.~
,':"
',',
'
I
'
:1 .
..•.
..., .'..
;<11""\:'"
: ..\
<
1'.1"
,;.",,:: -:: . I, .," '.:,
il.;'.'::' ,'.
.:\.
"<',,:# '.
(j'
•. '.,
.:'
.,'
.': ",,,
.. ,
'.
:
"1:f
,
,. , '_.. ,.,., ",
.:'.. ,. , '.'
~'.: ~.'.\:,\
", ;1.
...,:
.';! . I. .-; "
,
k.
. '.: ;i:.
;.'.,j
~jJ .,;1i.>'~
,.;§;'::
! ":',.,
,
"
~,I"0I ,. . ~;:'~;\:",' ::·.!"~i
.
I"".';.': .::; .,
"'.
1 '1"' .
.,
;"' •• !, '
~:,:,':\";::':"-"~~;'" .,·-,:,~~b ·1}~
, . ' J" I ' ,. .. 1\ I ,",', ,-;:'" , ,,',,; ~ " 'I':.' ,,', r'"
,.,. ,: , ,. _:, ..
';,;":;~,,',
'.
.. :.r':'i"':;.\".f..
i, ~. , .. ,... ,'" ..-:"
,'>,
, •.' ',: .~..'- '".,..: . '. ' • ' .• ; ,'1 ' .. ':....
·;t· ,.' ',' ;.•. i, ...'~::;.jl,;, .'
'.
' :'.,'.' o!"
,;~_l' ,\~. .,~
•
, ...
:',:1 ::,..:'.';':,.' \l '~;,,:co;: ;.;'~.~,:; ,:,';~~t
~ ,
,,'
:""",:i;\~'
. " " , ' , i " " . ", . ",' '.;'"
',~il~~ '\'_
., ,~. :.. . /~~: ~·1i~ ':i ,';';,;'," ',::,: ·.•~~
'"
, ..t'
..,'
,'."
"
" :
"
",',
., i '" •
,
':
"":,;1
"'., > .,,' , .... ; h' '''-:'~''J: '. . , !; :'.,;; 'r, ".-'~,,; ·u·. )~;' r"";, :'i.-: .. ,'." ; ( :,,·,::-i.·;;(.,.·:.1,1.';!.'·,.,:.:~'H.:,IJ.:':::'· .
. ,
:
'n , '. ", '1'"
.\
., "
.,:'.'\".< •.
...
.
:f~,1"
"
. , ,', "
,.:.....~.~': , ,~,,: "".;:" ' . . "I:' . . .. .'.'.
'
.:
. . ( I, .. ,. "~'1'"
.'
_'" : ' "
'i~~··· ',! .
,
',. ! '
..
,
0' ~"'., , ' ' ' l ' ' ,,' '.'.,' ·
.',
.
'.-
'. '1'"'' ;.
,
'
"...
.....
, '"
"
;";:~~. \~ '~"'. \;>';',~, ... ',~,:,
..
.""'_
..::~}
:'h4:~
,,.,',:';'",' .-,',';';",; .i~ 3i 'I.,,'.,.; '.,,'1 •. '
'. , : ' , ) ; ' . "
..
'"""
,I','
, ',)..,
,,,,, .. ,',I,
'
,~i;;;,.·,
).
:"111<,\' . ,
"~'l"'" ::; ·;0",1'" , ,tt,;, ~
.,,~{.-
,"'1,,,.'
... , ,'.
',;~iJi':IFJ..: '. '
,~~"~Ij.l.
r '..
:\'-, "'," ;~W~i1':!~'·~: '" j~~'
-:;~li'!!l,.,i~ "1!::1 'Ii,'" ,,",'
~,',
\-
10
. .,.•
, """', I<'., ":J" • l:nli~'~ ~ •. ' ';r.:"",~ . ~.,
•
]tr::g;"!f...'.~ .,'
~ ...'l,;
. '·.r,l"'11I':1'.,,:~~ ~Hi1~~~:
"~':~':~;i"";' . ~ ;;I;}'I((j ~ ,;,'<: ~.-
~'"~"""'".
j'rf'-;'~!~':~'
J-
.
'-_-'
"
.. . '
'>',V
i- ..
"',' , . ,
'. .
. '. '<
"
-
_
,
,'
.~,. j:''!,':i '"< "~~
':.~'
"Esecuzione fuori ordine
....;....;
1~~'~'~t~;j,'. ~ 'fl;·jil.~
\
,"
~"~:1,il<'" ,';j' ,..•
"'2.i"';"~
r,~ ?:t~",
-
~,-: \.
I
1-
,
~t~1't)i[i.7'.:_ "
r··i.'t.:r·~: ' ,!j:.1j}b.;<;::',:,: '" ,., ,\,f.,I\t,.\r~~.",
,
'i"""~"lI-:"-'. "~l'.,:,.·, '-,' .. "
)-
'. ~.
."
......,
,;~,$.~.~. 1~:Ii"::i'\''''''
. .!l~<"/..
~
, i
,
.
.
!
.
.
-
~ _ 7~'~;>;' ~ino a or~ abbia.rD:0 ipoti~zato· ~i .l~vora.z:e ,c~q. pipeline lin~ari. In 'rea1ta, i proces.se:
),.
i~ . j~1tf;;~; a?0ttano ar~l~etture pill co~plesse~ ~on .p.l? umta funzlOnali, ~orm~ente .multl-
-
f>~'~~'!'Y'
. ~~l~~::.~\,
'j'
:'.;'
'
.:
.
.
.
. .n moderm, co.me il Pe~~1Um e 1 suc~e~SlVI,. :1". ~o:w~rPC, .1 ~ k6-3D e SUCCessIV~,
~~~ ;~~;f'.:,,,> cIdo! ?~er~tl In. parallelo. s~ pa~l,a.di ~~hi.~e~~ur.e superscalan, per eVldenzlare 1a . ,~~~~\.;. ·posslbilita. dl a:'V1are ed ese~re pm ~t~':l~l?~. ~ ~allelo. . . . , \~~~"~t:h,: n paraUehsmo tra Ie umta. ~~onali e ~l ..-fat~o che es~e siano m plpe~e au-
.:
'. ~~1#;-J.':'~:: mentane notevolmente 130 comple~l~a della ma:ec~3o, pensl3JIlo, per esemplo, alle , '1 t~41Rfl:<~;" ~;:":'~ipendenze tra istruzioni assegnate a. unita. differ.eq,ti, al completamento fuori ordine ~ j ~'m~~>·" al,Ia ~ecea5ita di. gar30ntire 130 co~re~a.~ello s~~fo' di macc~a iIi pr~DZa eli inter. .~~:i!!'~:" ruZIODl. Queste ddncolta" tutt30vla l non'1IDpedISCono all'architettura superscalare di ' }~~~ .1\1""1,, .o.;~' e~t .-re,maIT!ent.e e1evate. ~, perClu, " A' ..,.. , ( r3ogg1Unger.e,pres.~nl" \-41 essere mo1to diffu s(,\. tr=t i , ;':1'i~~' ,\~~., ". ':'OTSC""" ''''.'., ".' C>, •• ' ' . " . '~I ;,:7"'=".... , .'. .• , ,.,'i:'t;'~ 1' ~ ,~nl;J'~';' R>I;~es~or.L.~~ .~ ...?~o~et:~~ .....,; "; : F''::' : : :",.: ""'.:'. ' ....'..::.:., .. ~ I, 'f!.,';:....,~.:. ';'" ,. '~. '.; ... c' II 'I" ~'. ~~l"'i') , ' . ,) 'l, ,,' . "., l';',d ,"""l; .,'. .... ..',.' ·1'.. ·· '. , '~'!!i~.~:!"I: .. " ' L ' '" '~'.' ..... ~, .. "., •• '..... " ..,,, , . . , . ~ '1"0": l""1Jl ' :'. ":"';'1': ;"":'.""::-:.\ !/. ~'IJ"'~'t", ,. fi ':""'" (.:~ ",'; 'I:·; ~"." ~I"·~· I ~'l':""l::"" ! b. ::,: .:• • ;.',;;
e
>,..,
,,':-:
~r~J<
'
r
'
p
"'
( ..
•. , . .
Ipe me con um a unZlOna I mu tIC
al.~ PJ:::est-az19DJ.l.,~.ll.uapto ..il:p~n,Q9.91;di cl,<,>ck
flU' ;-r,{' :~~;~ 'd~v:re~bEf' esser;e sutfi..ci~p.t~men.t.eJu:n.g? d,: peIlJl1.et~~Ii.~)-'~j;l.c~io"p'-~, <;ii .oper~~~ ~om-:
..
,
.
';~ ...;;~.~., p~esse; ,€0me.le:opet:~to.I}L:3U :n~~rl m yrcgQla·m~,bUe ...Se SI ~Qle. p~ooe··.~.!Pe~q4p ~:ljWihi~.,~.dl,-ClOck~io-.ccorr.e.:i.,:,'~\,~ ...'il.'..... :I .. "i\::I·:,"\\;I;' ."~""I\"""I' ,:.,.,1 .".'.,.• >.~., '" .m:.q,1;l),"':~ 'r', . . . . •. , ., ". '''''''''. '•. ;., ".~~!:"":" <.. ' ,~~.",~: '·Ll'''' . .';. i, '.""C::'-'~ i. , -:~--~.. : .. !~ ;~.:" ; " . ' ',,':-~""'<; ~ .ii· ...•i d., ·.l:: j,;
.m,
~ ',~~~y,~.: :)t:"c;PIie\te.d.~~~ qbe·l~ differ~n.ti ;Qp.e~~iQ~i: riclPed~q .iD:~~~~ ~X" p~u un. 'p:e~odqAi :Io 1t.g·~I~~V~' I,':";' :·dOck,·b'yY,~ro ch~Ja·fase,.EX:.sla,a suaivQlti\o m·pl1?elin~., ·... ·j·l··)' " .' . ''1'' r.-, •.
ii-
,,'&,~t\,~
,.~'~'1~:ii£.::·
'-a4.ttar
.':: i~,.;"
'\td'
1-
-
1,.
L I
co . :"",
':1:11::;;, In precedenza ,i e ,~pposto che la rase di esecuzione durasse un cicIo di clock, Cia ~tf!.' .. ·~alsl'cqnclha.con,j.ilDtento:.di.ot:tenefe
\
'~afu: .~:,;;;.r!~,·~,.!fr~.. ,···i;·~i<~:~u;,t;:·~., . '·.:·;,;;.:~ . .:.;:,;',:"
,,);1 .. ".. ,t7;:P.t .:,.1. UI1~.YF ,,'~\,.' ~1OD:. " ~,.;)~~t .~.p ,¥.J:: E ~,. ;~ft:7P;e~~lOm, ~:4~.s~Slve nmangano bIocc3ote ne 130 pIpeline. \.. ,;, " ",',."*"'./ .' \ ···_.l .. ..; . .,r;.<., ,. , .. , '/' ~ ~
., l ; ~' .~,~.". t, . ~ tt. ,(.,' ~~~I~\ .>.:;:.: ,5i: ,0pt~ene ,in, :t~ .mQdp'~la;i ~tr:4tt¥1'~, Q.i:;f!gur~>10 ..;~;J( 9!~~ass~~I~~O ;~t;IIJ!:~. qfe}' ':1:1 ~~~: - ·nql"e~to'l?e~; -¥ :r~~o. 4et .capj~q,l,Q)~ ...Si ~~!. ~~ .e.j)G~mpa:r~ ,1Q ,s~ad,!~ .~~~,,~.e t:a ~'" i~~{' 1~ UnLt~ ~~lo!1.ah ne.l;9mpar€:J'tIJ~;gedlca:~~.~~;.qp~~~I~ao~,
1,.
)" ,.
1-
•
~~ 1~~r'. ~~~f!aoltr~ .ch~~~a_p~r li}"g:~)«l\e ,~~ll~, I!tr;m;'!Zlo,,~~ ~uel)~; p~:;)eHPet~I,,,onL
it I,"f I
~'_,!.":
cicli
e un""S
11,-
-
426
-
Ca.pitolo 10
\
"
- ,
-
\
-
-
\
-
~
Unit. in AI
l
-
"~"i'. f
"
::_~J:: Moltiplieatore in AI fl VM
I-
-
IF
1
... .: :';3~l'!i :,.;:·::;ii ~'~y.i-
f-
ID
.~::,:w.~,
f-
-
"':~<{I'~~'
f-<
I-
-
\
Sommatorfl In VM
Divisor.. in Al • VM
-
WB
,· ).~"... ,: ;" .." '; ; ' ~.
, ", -:1>t;,\>: ..'~'I' "
'. , · '~":~~~
"",,,,,,,, ,'" <~. , ,~~~., ,: .•;,,~l~~,,~t
Ge$tionfl Diramazioni
'~. ~l,p}",~
I-
·'''''':iI .:.,I.~.,{I,Jr,"1
· ~;J'1\..~ "'< .; ';:'ii4;<
......,- i,T;~,
·.. . "~~,. .•
, ;.
•
Oparuioni
I
•
•
•
:
,',;\:;lH:',
I
-
,;. '
EX
Load/Store
r--
~" ~:~~,. ~
'-~'" .~.. '.1. ,· .i.' J. I'
""jjI"fIj
,: ,
.,:~"'f;1
''"''''" "';".~~('ttiF.
· ,,~.• ':;>'.v.-,
Figura 10.1 Pipeline con unitS. funziona.li multiciclo. AI sta per Arit:p:1etica Intera, VM sta ',•• ,'1" " per Virgola Mobile. Le istruzioni sono inviate aJla corrispondente unita funziona.le da.ll'unita ~'~(."r.1ii1~ .:i:L '; ""; 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 •. ,t';:.. - .~'!!'~,. altre unita funzionali.
I
_
T~
....
.'~'_~4, - ':":.. ~\
'~~'. , '.'~;.i1i" ;·'.\:'-li.s .. , '-,,'!.;. '~'
stesse cache, col elivaricarsi della forbice tra ve10cita delle roemorie e velocita della · ":,--,;l¥~' ..~l.:i;: CPU facilmente risultano troppo Ie lente. L'eseeuzione in multiciclo delle operaziooi ' .:..':'L"'~I ~~ " ....jr,
',,,,,
•
(
I
';'"
":',iJ
\
• All'interno dello sta.dio ill e presente una Unita di Emissione (Issue Unit), nella .. l\ . ...• · "•", Quale sostano Ie istruzioni in attesa della risoluzione dei confiitti per poi essere · ..!r~ .'"} inviate all'opportuna unita funzionale. Nel seguito si paria anche eli registro di .", 'i emissione (issue register). n registro di emissione deve essere visto come una · .'.'..;0',, ,~: . '," ... ,' coda (0 buffer), nel quale sostano Ie istruzioni che devono momentanearnente , ' · ·"",t,; aspettare perche non possono essere inviate alIa re1ativa unita funzionale. :f"..
,', .,',.:->... ~
"\~
~ M.(
I
,,,"
-....'I
· "," . , '. ~
~';r.'
__ ";' -:~
\
t.1;~f,7
.
.~~
.
('j.~!;-.
~~4~\" ~k' . .,' w,;
~
Esecuzione NOTi ordine
~"'.; '} .'1,;-,," "I. h'"".": :;r.: .~--
I
.~l~~::;'·~'.'. '};$rJ~j_V"
~;[~~,:',. ll[j~~~~?,.;' "
f;.r.~t.~~·,
:~Il:c:,," .~~~,~~,;", -~l'~{;";;· ~~~~;;~:::~.
"" ,.:.
Classe di istruzioni add mul div
add! mulf m~lfd dl vf
di vfd
427
CPr]
omma e sottrazione in aritmetica intera Predotto in aritmetica intera Divisione a'n aritmetica intera Somma e ttrazione in virgola mobile
1 10 12 2 10 12
Divisione m vugola moblle, smgola preclSlOoe Divisione in virgola mobile, doppia precisione
15 30
P~odotto: ~gola mob~e, singo~a prec~~one P:O??tto l;Il v~[go.la mob~le. d?PPla p[eCl~l?ne
?~~~~h':; Tab~~a 10.1 Cicli nello stadio EX ~er ,is~ruzion~ per il processor~ ~on unita funzi~n~i ~~~::' ',,; multlclclo preso come modello. 1 valorI qUi nporta,t1 sono del tutto fittlZl e, seppur plauslblh,
' :~~l"
non hanno vaJidita generale, ma solo nell'ambito della nostra trattazione.
*"..
~:"
:,j~ ~'i';f.~ :.::
'-:M~d'-' ;:lI~.,;~11 ~
Nella parte che se~ue assumeremo che dall'unita eli emissione esea una istruzione ogni ciclo di clock
'.
"-""'''1-<-
'~.'4i.{-,."':
~l:",:.,!{,
'.
,•
I·I,.,'" '. ' . ';~l,f;I"':'
~ ~"."-::" "",:~!~., 11'~\\.).:.~
.
_.
:;,i:t;"."" ~:
• Lo stadio EX
e realizzato con Ie seguenti unita funzionali
(Figura 10.1):
.
a) unita logico aritmetica prineipale in aritmetica inter:aj
"",~t."··
"~·~)R:¥::
"i"~?A-;;:
. "~~';" ,1.~ ....,· '_·....
j
z'" ..
'
,~,~}lIAC:,'"
". :tf;;5:~ ,""'I·,,:'.
• ",,'Z> .
,
,!~'t."~~
"i'~"" ~ "JJ :i;:t;r, 1,,;','. .~r, m:..,1, ' •
"~,,
" JI \~ 't, "if":, ;'- ':.
-j,Y :{, '
'..-
, 14~~!.l' I ,.,.'j'''.
. ~:J..'J'. " -o;.!i¢t .
'
':'I'i-P.·,·j;: '
,,,',"'"
{~~~!A"
','
'~Jk;{ :'. :i,!',,,,wj .. ,_
,,,-,,,,'-
I'" '",:1''<.'0' "i~i!::>';. ~'u.f:'· . '
b) moltiplicatore in aritmetica intera e in virgola mobilej mobile; c) sommatore in virgola ,
,
d) divisore in aritrrletica intera e in virgola mobilej e) unita per la gestione delle diramazionij f) unita per la gestione delle operazioni eli Load/Store. • Presenza eli un unico bus (result bus) per i risultati di tutte Ie unita funzionali.
,'. Il numero di cieli in fase EX per istruzione richiesti da ogru operazione e riportato in Tabella 10,1
\:\'"'~"""'~~. ....,.. , .'.
~
'"~ I 1,' ,
:, ;~~t" 10.2 Esecuzione fuori ordine ..
5 , .•,~,i' ~;., .. ~ ".••. ,. ". ~,,,,~,;.,
'.'.'
I "'''''~'. ,I
?: r: :1,;,' _ ,;:-.<·,
,,'r""',',, "..,'" _,"",'"
,
~,.,
"t: " ~'ifo,_ ,',.,,,,. " "~"" .#" C~:;"i ...•.
~
.""l~·
__ ·
.~\ t:;",~;;-:;:'
.
Jr ,~~:t . ~ .::':;;~" .
\" .• ,", .. .•. ".-"'!. "'<,,,.
~
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.
,'" X J'f- ,
~' 'JI-i,':".' • ..·...... 1·
,(·t """.1' ,.,J". ' .
ir
,\1
:-;:\1',,~.;
.,,' :,..~i-'~ ",', \i, ,.,,,it.: ."
'".\ .. "'I:·I~·' '. ;'"; f~:',~~:i ..,'
" ':ro. " ,'.'.;' ~
.
.;1 ;.:,,'.," >1 , ~: '.'~'"
kt
:ij'~ ..
,,~\
•
I
'ii,
lE; Questa un'ipotesi semplificativa: nelle macchine superscalari, per aumeniare it paralleHsmo, vengono normahnente emesse piu istruzioni alIa volta., II Pentium Pro emette fiDO a 3 (microistruzioni.
~~l':;[~
428
·~~~~J
Capitola 10
~~.,.,.,. ,,~.lI ••,"
""":"'.I\~
'l-~'''''f'
Y'~~"
(100) (104) (108)
1 2 3 4
(112)
divt
ault addf add
f6,f2,f4 f12,!8,!10 f18,f14,fl6 r3,rl.r2
,
-~I\" ."
"(..~ /I
15 cieli 10 cieli
'<:':~l , '''1:·
2 cieli 1 cicIo
.,."
-·-':.~-~·1
.', ,"-'k,< <
I:~l,._
'- '>
'-,!: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 ::t4~~ siano avviate aile relative unite\. funzionali a. successivi impulsi di clock. A causa del diverso ;':/~:;it tempo di ~ermanenza nelle rispettive unita. fu~zionali, Ie istruzioni ~ e 4 ~ompletano 130 ~ase :'~~':tJ~ EX per pnme (contemporaneamente); 8uceesslvamente completa FistruzlOne 2; per ultlma ":i'~;~''' ?ompl~ta I.'istruzione 1. In ~efinitiva, l'or~ne di completamento delle istruzioni e del tutto ,..:t::;!~1: mvertlto nspetto a queUo di programma.. '.f...~,
..,.
,.CH~~,
".,~' ":~,,.,~ ~, .[.....~
"-,,
'~':::..
,-r
Le istruzioni dell'esempio di Figura 10.2 vengono emesae nell'ordine naturale dato ':""~[,T da! programma. L'esecuzione fuori ordine si riferisce in Questa caso, piu propriamente, :1~~,·.~ al completamento. In un sistema come quello di Figura 10.1 risulta conveniehte svin- · ·~vt' colarsi dall'emissione in ordine, quando accade che un'istruzione deve aspettare a ':>:~ ;".;~: .;;i'!l~i essere emessa perche, per esempio, i registri che essa legge vengono scritti da un'is- ~~~~~;h,: '"B truzione che la precede molto piu lenta. La situazione e esemplificata in Figura 10.3. · ~,~,-:~, ,....., ft;
,~;
'~'."':t ,,:;'!"
,".,',•
1 2 3
4 5 6 7
div mu1 add mu1
r6.r7,r8 r5,r6,r1 r4,r5,r6 r3,r7,r1
mulf
f12,f8,f10 f18,f14,t16
addf add
r20,r21.r22
12 10 1 10 10 2 1
cicli cicIl cicIo cicli cicli cicli cicIo
,·<~.~ ".,.:. <. "'~"
,,--,,~-,
.' ,,'-~. ;;::.I .',,\,,;,"'-W
'!' ..~""
,1;:'~~
",'!;,;i
"''1/11" ·-''', ,' ." ,,11 ''-
",' ~"1' .'::':'.,~
"",)::
,
...... ;t;,." I,:. '."j" :,,·,.,;
:'~eQi~
"';!.;"'J
'''''.:J:.
..
;":,:,~ ~.,
,..'·:jl,~
.~.~'c
Figura 10.3 La sequenza di istruzioni evidenziala necessita. dell'emissione fuori ordine. Dopa 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 eventuale 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 e in grada di leggere dati corretti. L'istruzione 2 verd. emessa quando 180 1 e completata e la 3 quando e complet8ota 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.
",;it't",.
"'~
':Y~·L \' .•.<. , ~" <:;"· ,:~,
..
~.;'; ..~ ,
';~;~ "~,r;
:'j,r"
... ~, ,,~
,...~;:
'.:!:'l,> .H,__
..
~~
.
':'i ,t. ":?
· ;."Iz ~:.i
;I ,~.
·,;"
·";;,, · '
.:/
".t.··
·
Un argomento analogo a quello esposto in Figura 10,3 vale in presenza di istruziooi 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
'(
":;:t ;;... t
.. "
~,~:
...,
:~,ft
· ;~. •,
,..
.'';;:" , '''·1-'
)-
~~-::
~~~.,;, ,.¥;;.~_.
;~ :~:.
.. JI.!~I·?·'
Esecw:ione fuori ordine
429
I "'_'",.'
",l •.-Irt:,.:
~~ t~""'.;.>,,
'~ .~ 'A~"'-.
" ·t·...~<.: t"<' " "' ~. ,.-.,,~"._"
I.,~,
" ..,-,'-:-.-
l: ;[[ts';' -'' ".", "
"1:; }:-- .'!.:...
<- '.""" _"
..: ".-:,'
l",'.' .", -~;!
: ::.:
{
:::""
'\;;',:,'
~:
~~ ~,;'y-: ~: :',:"\~:" ti ',:.~:~;\'\' ~tJj,,";:/> 'l~ :ti':~"J :,~;,::;,:,,,,~
,'f. .,~~
"" .
.'.... "
... "_'-'..,.
,;
. " •.•' ....
',~ ~~~ ~
,,~::.~,
,
..' ,'~. . ,';.'-',' 'i~"'-' '"',
"
r_~
Th' :,;{:
~' ~1t:~~,.~~;':·
''';'·
~~ ~:~:>~'-
:~ -::.';,~.:::'-:'
i! .-"; •..., . B!'''''''
:.; ~cy}S
;'-
'<"~''-''''-
,;,
;;'!';'.,",
;~ ·f!;~·~:·
t1. r.:~ ,-'...., '. ,.~" ..,.
• . ,. "r,',;:
~;Fc,·"".·, .~ ~,,!,.~}: . "'''. ,~ ....- '.
',' .
..
,,,> ~~" .', ~,':':+
Il;' .:,: •....,,"'C -W ",...., .. ~~
", ,'." "',"''''''' ~"" '.1'':''~'.:' ~ ..•:"'t.•. ,
i~;1
1'",'<' '"1.::,,,.. .. ".-.'." '~ " .':1" .. 1 ".,.",,_,'
'~'", ,,'tM-..-:, '--"','
:.
",:,,~:,~!,,"
"J, """;'--'~' ",", " '...."'" ;t~·r' . ",,:':;:: ,',
12
la prediziene risulta errata. Questa meccanismo viene detto esecuzione speculativa . 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. Schematicamente, 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'esecuzione delle istruzioni nel modeHo d.i Figura 10.1.
•n
Metodo del completamento in ordine delle istruzioni, nel quale si forzano Ie
.~''
,',,'
..
~~'t, <~: .. '~',' '-'~"
)1
1\
istruzioni a essere completate seguendo l'ordine architetturale.
•n
Metodo del Buffer del Riordinamento, nel Quale le istruzioni sona cOIPpletate 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 la struttura pipeline di Figura 10.1.
\
I
-
L
e necessaria esaminare can maggior attenzione
~~ ~,;S1~i:"(.\'
J-~ ',-'":";'ii'~' -
-1i -
10.2.1 Gestione delle prenotazioni del bus dei risultati
I
-
)-
~a} \,~,,;-:c:
cl~ "~-'<'",;:,". ,i"·-,'."" ;'
,.tr,
~' ,;\'~>",
L~. ;';~";~.(,," ", .. .' '~: ,,0',:,,:: ,,~ ; ..,:"':
.~~ "~"'~.,"': '
"
;~$ "X.':~~·, ',~.,
~.
~~ "'~~: <--
;~,~'" . ..:'
"i> ';0:.' ,;r . ",'
~i
:v;
_,>l' ..,c'_
"
"
.. ~ " ~,~,. ' . '.' ~
.ij; :.; ." ,. ', .. '
?i; ,.'
i~:
Iz,. .~.,
I~":"',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 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 e mostrata in Figura 10.5. AI momento dell'emissione dell'istruzione A che impiega j cicli di clock3 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
un
tt~:
t~1:
,
:"
',',
..':-::.:
"'\ ;:
-
))-
'
/~ :.',", t..·1·C·'· . " '
1-
,,'
,,l·· . :,":"" '- .' . '"
I
',' '.
..
.•,."t1,';....:;;':.-: ~.
.""f <:-":--W.. ,.:.
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
j)-
-
430
Capitola 10
I
-
B "s r
UFI
\
1 S
u
!
UF2
-
a
\
· · ·
I
I •
•
\
I
•
RF
clock successivo il bus dei risultati viene riservato ai risultati provenienti dall'unita funzionale nella Quale e appena terminata l'esecuzione dell'istruziooe che ha generato suddetta prenotazione. Usato il bus dei risultati per la scrittura dei risultati nel banco
I
-
1
Figura 10.4 Organizzazione di un processore con n unita. funzionali multicido. La struttura, prevede un solo bus dei risultati (per semplicita., in figura e stato 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..
- \
-
,
UFD
-
-
~
dei registri, la prenotazione lascia RSR. Se al momenta dell'emissione dell'istruzione A la posizione j-esima e stata occupata da un'altra prenotazione, l'istruzione A viene fatta attendere all'interno dell'IsSl,Je . Register per un cicio di clock, per poi riprovare a inoltrare la prenotazione della . .. pOSlZlOne ]-esuna. La prenotazione del'~us dei Tisultati si effettua scriveI:!.do Ie segl;lenti informazioni Dei campi
• n registro su •
\
cui dovra essere scritto il risultato dell'istruzione. Questo campo, insieme al precedente garantisce la giusta cODnessione tra la sorgente del risultato (l'unita funzionale che 10 ha generato), e la sua destinazione (il registro di destinazione). '
•
\
• Un bit·d.i validita. della prenotazione, impiegato per indicare se la posizione del registro RSR rappresenta a no una effettiva prenotazione.
I \
• 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.
" '.". ,
Esecuzione fuori ordine
~:.,<:'"
l{(f
Ul"
1 2 3 4 5
n
V
t'rogram vounter
.
· · ·
.
· · ·
431
Figura 10.5 Generica organizzazione in campi di RSR. n campo UF identifica I'unita funzionale impiegata dall'istruzione; Rd il registro di destinazionej Veil bit eli validita; il Program Counter e queUo dell'istruzione stessa. Come illustrato in seguito, questa registro entra in tutti i protocolli di gestione fuori ordine delle istruzioni anche se con formato diverso. Le posizioni del registro sana numerate da 1 a n, dove n e la lunghezza della piu lunga pipeline con cui sana realizzate Ie unita funzionali.
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 e quella
l' 2
10
n
nw
::!!:d
·
· ·
mulf
f12
·
·
·
· ·
V
Pr~am Counter
•
· ·
1
·
--riJg· ·
·
u
·
Figura 10.6 Contenuto di RSR dopo la prenotazione dell'operazione di prodotto: l'istruzione eli prodotto occupa Ia posizione 10 dovendo permanere nell'unita. funzionale di prodotto in virgola. mobile per 10 dcli di clock.
In Figura 10.7 e mostrata, 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.
, "
: ; .,('
'.'
.~ ,"" "!l1
:-;*~ ~'I'
432
': j~it,
' .,"!~:
Capitolo 10 .
~
','", I :.-~;~~;lL : 'li~;j , "'S
UF'
Ka
v
.'",~,,~
" ·.\~t~1
t'rogram vounter
1
2
,·... Ie
fl8
addf
1
,
,
,
,
.'
Ie
",."",®
,
. ':~:.;'!J; -&,j
,
\:;.~~~
u
f12
mulf
1
l1l4
,
,
,
,
,
,
10 , ,
n I
,
I"
I U 0 I
,':, >~t
. ;.' .~~!t;:
,
8 9
;:" ."""r';>"~M'
. ';':\l~~fl
'):)Jl!.\
}1:~~~
:..<-.:;!~J
I
'
••..'f', ,,;:,101l'
'/.~~ '.r>.it
. ", "',
Figura 10.7 Contenuto di RSR dopo la prenotazione deWoperazione di somma in virgola' mob~le, che va a occupare la posizione 2 in qt.tanto Ie ~ccorr?~o 2 cicli ~i p~rma.nenza nello stadlO EX per esse:e co~pletata. La prenotazlOne dell'lst~uzlone a?~f Vlene mtrodotta dopo che la precedente IStruzlOne e stata scalata verso J'alto dl una pOS\Zlone.
· , :~
,",,'i.. ,
:·:-;',~'~;i,
,
10.3 Completamento in ordine . n completamento. in
ir/~ ~ ,'~)~~it.I~ ',<-u~it '·~J!;I
........ ~:"',";, :
"~
c'<~f:
"~" " ,"''M\ ":.<: _.
.• ~<:~':! ,
ottien~
"';~i~
ordine si attraverso la prenotazio.ne di RSR in modo da forzare la concluslOne secondo l'ordine del programma. Ovvlamente anche 10 stato '-~_~'~l" di maechina ris~lta a~or:nato s~t1do. 10. stesso ordine. Si .distin~on? due casi: :':,
,
10,3.1 Completarnento in ordine rispetto ai registri
..
-
' '~'"':
"'.!.: ·f:· "
;:;)";"~
· .~ '~. ',.-"
...'. ~;:-" ;:'~:
",:;'::r( ,';·,:,,'
"'~'.,'''';{
,.
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 llvalidita , che, in questa caso vieI;l.e ad assumere un significato cii "posizione riservata , 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 casi4 .
<"~:t:
~",-..:
.~~
.I"J'i\
'i-~,;",':
,"''''''''~ ."",-i:
"" :>
'-'!-i
··'-·
~ '''''1
>:':V
'. "~
;':~:~
>j'~i
_;· ,.1>
.,:....1>
. ...... . "l'
' ~"
~.<,
·".,b .. '~
"'.,..
- '<-
.-,."
'
".~
- '~.I
, :(::
.;.d-
"':: '"
· .
-<:. ,-.:
,. ::
.
,
. .:
"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.
".
..... ,
.
'<''''
';"
)Esecuzione fuori' ordine
-
433
L I
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·
l
\ ,~t~~i~,
posi~ione
q~~to
1-
'
\ 1-
2. La i del RSR n?n e li?eraJo:vero.i < j -1); in ca.:0.Pistruzione B cleve attendere nel reglstro dl emlSSlone sme a che la pOSlZlOne 81 libera.
Riprendendo l'esempio qi Figura 10,2, l'istruzione mulf pub essere e,:,essa solo ~ ~a~!~t>:·! quando la precede;I1te lascia lib.era la posizio~e.10.in RSR. AI momento ~ell etnlSSlOne J.. :r,t~t;l-;l'~ .delPistruzione mulf vengono tlservate Ie pOSIZlom cbe precedono la declm3 se queste • • ~I'• '<",," ',. ) ~ ~'.'~l.' ~tF:\: non sana gIa. occupate (FIgural0.8 . . $1"1.; 1"'''' I .':f.l.ii I~"I' ' l j;~lr;>. l'Uf' V f rogram ~unter
~\· ',~W:f~rr~~" t:" f~~:~;~:.< IC~~~;;:::j.,.
1 2
~~! ~""~',:i"l "'i
9
;,t ,:); ,i"I?f ~. !
,i.' ;'t-~il,~:V' j . ,~ ... ' ';." .. , '
:"f
'~Jt'!f..!""-
\'". . "",,"',' "~t
,
10
.,
~~J,;t,~.
~ i{ ;~t1i~:.~ ."
;~aq <~L'J:'-.
.I,',,·
~,,(,
""'il-I',": " ~.~,~,,,,.,' '.
-,~""",,,,,
...
'ililii ,I., ~,~:t~ :"~M "~'r-~ '-.
-I' ..,J;j'.:"~: "~., "·~":'1;; .. :l il. ••; {' ,I, ,
~';' . "..;."j-.! "
.,
"
':'lir
t_("",,:, ~, :;m .~~I'>I""
:';lW ,,,~.~I.',
~~
-
I. -
1 1
,
,
)-
,
.,
1
mulf
f12
,
,
1
Ill4
1-
11
, t ~'t:f~~,~.
~il ~J~;~':'<'
nw -
n
-i
,
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).
\¥fl ,; ·'h.~,/ . :'lr~! ~:r.,i.'I., ~'J,~I ''',' It-.'. I",' :.f';:', 1',~ ,.'\',
>"'1:':'"
.., ,".
i.~g ,Y·.1::~",
·a
"".~.
>-
1 '," .;. V:'. ':"';.\~
. .. ':' ,. ~;ifi i"i,,,:"· .
~""
il:.i ,!",~, '.
>:;',"< '...'~" "'.'. >.':".=(, : ,~:.,.". ,-, '.~~ .. 1 .','
.
"....
,~/ I,,~!~'
bi,.., .....,') "
".i, ,"
~,il'.', . '.~.
!,'.. ,
""", ~"
".'
-::1"" •• '...
''',
I'\'!~'
~~'.i"
:'
:7.~\.-
'> ;',
..
-;;~ 'i-~l.l~', ' :"~~ " ~ ".'
AI cielo di clock successivo, potrebbe essere emessa l'istrozione add!, rna cio non avviene giacche la posizione 2 e gia. 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 molto semplice e richiede una Iogica aggiuntiva poco eomplicata. Thttavia si paga un prezZo per questa semplicita. realizzativa: non sfruttato appieno il parallelismo delle unita. funzionali in quante Ie iBtruzioni piu Iente bIoccano nel registro' di emissione quelle pill veIoci che Ie seguono.
e
e
:~:1i \,'J,
\-::',,:,
,1-,,, ".' '~. '" . :>:~~. ':~. :. .~r1·'
,_,' " '",
,. .' . <
......
.(.'.-'
,,~.;
;
.
.
, J-
-
1-
1J-
)-
-
1-
,
.' ,. "~'~' :"~!t_\ "
.~~)-
-
.',
,:.,'
.'.,
'''~' '~"" - " ".:?~' ::.-..:'
10.3.2 Completamento
n problema dell'ordine
• III
ordine rispetto alla memoria
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.
).
-
I
-
-
Ca.pitola 10
434
)~'r~
I
1
- I
-
-
-
-
~ -
n I
mulf
£12
I
add!
fiB
·
· · ·
, ./ ~tt ~: ~tb;,
r-fOgramrM-0unter
· I
.
'';~~ "" ','lji~"
1M-
.
i-
I U I
· · ·
i
,"
,
-
\
•
:~(~~.
'::1"'&1~) " I,;' ", ,. i,', " 01 _'
."'- ,'m
.
;.\~,
":):~2~r
': 0:;~i~ ,. .....,;',' I
".;~.-'
~.'·;'t,r;r
f.
.,..""'~I "t'.' "~:.ri,,r.,T,j'
. Figura 10..9 Contenuto di RSR dopa la. prenotazione del}loperazione eli somma che dev~ _'l~}~~~I·~ a~tendere che Ia. prenotazione d~~'istr:uzio~e.di prodotto. a.~bi.a liberato la posizione 2 prima, t~~t.~' di occuparla, attendendo nelrunlta di enusslone per 8 clcli di clock. "<'\i~,!J, -";/ ;;~ "'··~··l", ,,,'-';,,iI'-fl"'£;'
1.
I I
l I
'.';'i,',!$li:~
n processore non emette alcun comando di memorizzazione
(store) prima che Ie ':'1jXt.fj~:~~ .N"l!n "1 istruzioni precedentemente emesse (tra· cui eventuali istruzioni di diramazione) '~~~':r~",,~ siano state completate in modo corretto: cic viene ottenuto permettendo al re- '·':;'~.I~~t gistro di emissioDe di emettere istruzioni di memorizzazione solo quando RSR e ··'·i~{:
.
2. Si
I
.~,~
: ",'.';,JI!;.?~ , .~-.;;;;;}~.
coosidera la memoria come una particolare unita. funzionale5 . Analogamente ·'~::F;~ a ogni altra istruzio.ne~ }'istruzi.one di rn~m.orizza~ione occupa una posizione in ,~~;'5?;1 MR, nOD al fine di nservare il bus del nsultatl, rna per controllare la coda .. :'!~'1~11i<: dell:~nita .funzion~e della memoria. L'ist~uzione d~ memorizzazione oc~upa ~n~
..
. "I
.
'
_, .;-.~
t~·;..,·",
' , :.",.,;!.
Eritrambi i metodi proposti hanna 10 stesso effetto: impedire che istruzioni che .7;,,'.;''';''~ ~t11;f; precedono un'istruziane di memorizzazione vengano completate a memorizzazione ef- :, : ':·. :;·~~i -,."". fettuata. La differenza e che Be nel primo caso l'istruzione di memoriziazione attende ... ,-";·;; ..rti 1"·, nell'Issue Register, nel secondo caso viene inserita in RSR con 1a possibilita di avviare ,""'""''',,:1 ',. ';;ft.," '. r";;-<'C"j-. Ie istruzioni successive.
~
',,\~:~~ts~ c,:'"
\
-
\
.~~,
'. ::V.:. . '"
'.-.,:.;
.'
-
•
v
•
- 1
•
1ta
3
I I
-
nw
2
II
-
~.,.,.
""I,F -,.'::'rt,
.-
10.4 Metodo del buffer di riordinamento
"
'.
'~"
•• '
· -: :'i(-.~, ....:.. ~'.,.
· .""-";.:. ."."" · ". '::::"
.,' ,,',.:';
I
I
n metodo del
Reorder Buffer (ROB), utilizzato in nU)D.erosi processori moderni 1 permette alle istruzioni eli essere eseguite fuod ordine, consentendo l'esecuzione speculativa 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 vengODO riordinate in modo da mantenere la coerenza tra. state di macchina e modeno seq~enziale 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).
.' '::It
"i-"':
: ~'~ ., .
"';':; '. '\':i ,,' , ' .
,'- ,,'
j.
.,:' :.
'" '-:';',:,
"';<"
, .,' ":
.'.. ,,
at questa l'ipotesi fatta nel tracciare la Figura 10.1
:. ',
":-
~.>i:~'
•
\
. ";;.).. ':."":~''' \. :"1o:t
Esecuzione fuori ordine
435
~~, ·lI*\u"-,,,,,
.' """',-' ,)j"<:::<',::"
-;,'id",.
\-j;~~":;"':
• "''fO.
.~~~,,.
"r;~:·-
La presenza del ROB richiede anecra RSR, ma 1a sua struttura risulta leggermente modificata (veeli sotto).
",':r,.. :i;,. -'":J.r.;,'
B
. :;'j'-'
s
~~';
u
'~,~i;_••,..;
';';~j"
,.'~:;~h><., .:a: ' '~~~r'
UFl
;<:;.J/;', '~ll
.
""" ·:rt~.,·'"
~·~r.~" ~t5'"
.
,-
UF2
:~rl',:".
· · ·
..;'f:,"; ,.",
,....,"'~,\
'2tiI)-:.
!:~~~'::.~,: _;:>- • -~f,. {tJ;::~ '.~C; .. rr.,·;
•
ROB
RF
UFn
-"
:;l:'{;""
',.,"
'.'Irf'· :7'fil.:
!!!.r
~
':~gr:,',~ .~;t!t.:.
l ~+'" 4~.!", ;.i}f;~'
~::*~':,' ' ~;~':L
, ;ilK,
.. , • .
>'.
.~".'
"~'.
.
; ,~+~,:~
,
i. r~h·· i
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
ROB
e gestito 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 e cool strut~ turato:
1" ,';:j(. -;:.,'"
• campo contenente un identificatore del registro di destinazione del risultato dell'istruzione;
~ l~,~;
• risultato dell'istruzione;
~
',~:~:,
..••.
-. ':,r,~. '
,
'
.....
~~,~
. :',;(';'
;'
"'
,
.
.
'.' '-.' .''l!-
;".... '\; . \'/
-
;, -')~'
:
t :·t:::·',
:~'>.
~.
'.' .,
;1. ',~'' ..
'
• bit di completamento indicante se I'istruzione che ha prodotto I'entrata gia eseguita 0 meno;
e stata
• 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.
,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 (08sia il valore del corrispondente P, a! momento dell'entrata). Al completamento eli
"1
un'istruzione, il risultato viene scritto nel campo Risultato nella poslzione del ROB
-". • '"
.,
-'
:.
. ,:
r
';."
>
". :.
i.:.
,F:·, "('
'' ,'~'. ti . t-.;
corrispondente. Quando un elemento
e raggiunto da! puntatore di testa Ptl 1a logi-
ca di gestiooe del ROB attende che il corrispondente bit di completamento valga 1
.36
Capitolo 10
nw 1
v
pmmP, ->
2
,sultato
"
r rogram vaunter
~,s~~rl'
,__ .i".1 ,_~?i"
:-:"'~"-i, -..:.':"
4
4
P, ->
5 ·
· ·
•
.:;~.' ~
_. ;H~:,
5
· · ·
,,;_:~~:I
. m
'-.".
-" . ·,~;;,~I
", .'!i:,lj,
3
3
n
1 2
rna
. .
.
· ·
·
"1""i~, .",';J
..'-"iM!'l'•"'." .'.,. ".:\0;~.'
.":., '
...'",
-'"
','-: ""l:i
:'::':i~-!ii
_.': \.."i,,1
':;~~~*, •.$i> .'.!~,
. - .• 'I~I
Figura 10.11 Organizzazione del ROB e di RSR in sua presenza. ROB e gestito come una
(istruzione completata), A quel punta, il risultata viene scritto nel registro di destinazione. 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 e entrata I'i,truzione 3 (addt). Si sup pone 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 e marcata come completata. La prima istruzione a uscire da ROB saral'istruzione 1 quando verra. completata. A quel punta tutte Ie attre saranno gia. state rna-reate come completate e verranno estratte ai clock SUCCesSIVl.
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
,
)Esecuzione fuori ordine
v
1 2
p
1
5
~
3
J .
9
mul!
10 13
·
.
.
d1.vt
1
3
·
u
.
•
,
lIiSiiTtato
£6
-
1
U
,ddt
I1fcI Pt-t"
4 I---+(f+---i 4
2 3 4 5
P, ->
n
m
fl2
----u ----pr~am 0
t18
· · · ·
· · · •
·
· •
·
437
1-'
Counter
-
j--
' 1M
~ · ·
\
1-
• ,
\
~~ ~! ~I
1-
1
1-
1 2
3 4
adf
· ·
8
mulf
10 12
did
o
~
.
.
U
.
4
~
1P, ->
1\,
Po ->
-i
ml
n
I . II
.
I
Figura 10.13 Contenuto di RSR al clock successive a quello della precedente figura. L'istruzione 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.
1-· _.
l-
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 istruzione e istruzione (facendo 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 emissione, 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 e sostanzialmente terminologica, concettualmente basta estendere i confini del ROB in modo da comprendervi anche l'unita. di
cioe
)-
111-
I
-
- \
-
Capitola 10
438
v 1
2
I
7 10 11
I
-
-
•
•
•
-'-
~.
I I
·
1
4
·
.
·
n
I
I I
r
•
•
cline3-6
7
m
L;
-
£12
fTS !roSultato
1
r3
U
· · ·
~ 112 ,
·
· ·
.t"'Iogram L:ounter
.
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.
e
I
P, ->
h6
SUItato
Figura 10.14 Contenuto di RSR e ROB dopa the e stata emessa I'istruzione add che va a occupare la prima posizione di RSR e 5i mette in fondo a ROB. Vistruzione addf ha nel
emissione.
\
·
T •·
2 3 4 5 6
·
mulf divt
I
P, ->
3 4
-
add
I1Uf
n ROB del Pentium Pro e capace di cootenere fino -a 40 micro-operazioni.
Rispetto al Dostro modelia e'e un'altra differenza sostanziale: l'·unita emissione, in grade di emettere in parallelo fino a 3 micro-operazioni per periodo d.i clock.
10.4.1 Uso di ROB e di percorsi di bypass 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
•
\
'.
'-
-,
Esecuziane fuori arrline
439
B u s UF)
UF2 ,
. UFn
,
•
ROB Ill· .. I
RF
>--
I Rete di byp""'.
Figura 10.15 Percorsi eli by-pass e ROB. Questi percorsi, rendendo immedia.tamente disponibili i dati appena calcolati aile istruzioni in attesa di emissione, riducono al minimo il te.mpo di permanenza delle istruzion.i ~el registro di emissione.
10.5 Metodo dell'history buffer 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 Pes~cuzione di un programma, nasce dall'esigenza. di migliarare Ie prestazioni del ROB. Videa alIa base del metoda e queHa 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 organizzato 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 stata gia. eseguita oppure no;
• il valore del PC corrispondente all'istruzione.
e
440
Capitolo 10
UF1
[§]
.~.f"
UF2
;~~
· · ·
I"
,:,,,:~ .~.?i
RF
·':Jr
.:':~
UFn
';f~t,,
HB
"I''1 ...... "(' ..~ ' 19
., "lij' '~';"i\ Figura 10.16 Organizzazione della pipeline can un History Buffer. L'HB entra in gioeo in easo di necessital rimettendo i vecchi valori nei registri modificati speculativamente.
,
.• ;!'
"'.)/ '....
.. "t .~•••• '''''
. ·;.
•. ~
~.~
u.·
~
"lfd
1
vee 10 valore
v I rrogram vounter .
1
2
Pt --+
3 4 5
n
[""1fcf
i.~ .';!
.
.
.
.
· · ·
Pc
-t
'.:'
...,..... ,~
2
-.,,,·m ~:
3
,j!:
:.;/
4
.
',·
':: l 'r. .:.
:-.,... ; l§
5
.
.
. n
.
. .
.
,·;w · ',
>.t''''J
·\
,,~
_:
.'~
·'
'.
·,t
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.
"'
"..'
··~l·
,:
A ~
" ,<. ,
"~
•
';
"''
RSR e gestito 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 e stata 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 e stata eseguita) e non e sona nessuna necessita di ripristinare 10 stato coerente, il corrispondente elemento in HB non e pin necessario e viene eliminato (aggiornando il P,). Paiche Pardine di emissione garantisce la coerenza rispetto aUe dipendenze dei datil i rnativi per i quali si deve ripristinare 10 stato corrente 50no legati alle interruzioni e alle previsioni di saIto errate,
."
~
.'
., ·
·
"
.fl.";;
1-
'.:1'"-' "
';ll..•'. .
i;i.~ I,;, ·tl1 -:' '. . Ij;~ : :!,'i;,~it~~"',~, .
J;,.f,~ ...':",...
~I\;;liiii~· ''';r,'!~~.-,
....:E:s:e:c:uz=io=n=.:..:.fu=o=n=.~o=r~din=·=e __4~4.::1
-
.
~:1o.lI.'.; ••'\, " ,~.,,~~I','-:, ."}_,
"'''''''~-'''' "''')o~l "
.
~tl-1'}~'·
In presenza di interruzione, l'emissione di nuove istruzioni da parte dell'Issu.e ,:1f.~:'i{.:.> . Register viene immediata.rnente bloccata. Sulla base del criterio di. risoluzione delilin~~i:j~(? .'.. terruzione l viene identificatal'istruzione in pipeline che discrimina queUe che vengono ~~~:-:;.<., portate a completamento da queUe che vengono annulla~e (a questa proposito si ricordi :.,ti!1t" quanta detto al capitola dedicato alle pipeline parlando delle eccezioni e delle inter"r~ iEf~:-;,; .."ruzioni). Le istruzioni che devono completare scrivono su RF e vengono estratte da ~ ~ t!f~oi;;Y" HB. Per Ie istruzioni che seguon? l'~tima da ~ortare. a ter~~l che f?sser~ e~e~tual ~~, t;;,~:f;:t\.; . ,:,., :nente ~ompletate e avesser? scntto illo~o re~stro dl. dest~azlonel Vlene ~lpnstmato iJ~* :4f!£~.::: 11 vecchIO valore prendendolt da HB. Servlta PmterruzlQne l II programma nparte dalla ~d:~t:»:: prima istruzione che non e stata fatta procedere. ~~~. I (~f:~~;.' :-. La descrizione del ripristino dello stato coerente in riferimento aUe predizioni ,"~"(" :1G~~':.;:~'~;' .errate·e rimandata al Paragrafo 10.6.3.
Jr:!l
.'
j-
1-
)-
)-
,\_.. ",\<.~ ,r . '="".•• ' ..
1"
(';p-t" .....,
9:'l . '1:~t1~,' . ," 't.Y.('.'!... ~;!~·
\iJ
~~~\~.:;\,;.
~'i::}'
,>.I;.T'
.~KI:; ,~
,;::.:,;':,; I'I~."
'..
·10 6 Gestione dei conflitti di controllo
!'./.\' .~"',r:··.-' /'" l'-~'
•
troit: >0"·"'5 ,', '.J-y, ."""!.,,/',, \ ' ,',' " ',"·:,rt,'( " .'!'n"· ~' ,~~.~l.r,' ·,1 \ '.'I '! ,,<-,-,».. ~ ;:.~~"f·.",,·~ .ti....." .. ,,:,.",~ ....., ·ii " ·'· '''I:,:<'. .'.:'.• .~,'t.io ~I·'~~-· . ...~ ".;..0 lo
:l
,
:,<,.~~~.1~
m (jl\' ".",~" ,', .f{
/ll~I:~ ~';~\1;-.!.·'''·~' :i , J
::\"•.,(" •••
§."" ,t ,.p'."'!" 1::~jY•.:;·~·' -"!,'
w,;' ..ll: ,*,,';,r}i."
·'~'·<·;;f,l,'
tJi' il·m ,:f:,~,~,~~" J.~:'i; 'r, .")"".~,:
\.,".I( ',."'.•.
~;'i/'(,~' ,;-~~••.,...
_:n'~!.
.~
-,.: \..,-.
~~~i f; .'~~~~,':.":
'i~
.,'
'Vi~i'it';;
..
. ,: I ,..:,.~<.:;...
t,~.'j
".''-':''
''j/.,::j;i: ·'1·\""to','..--,,.. '·h·' , ,~~. !,e\i~'
·
" . ?'.'*.' .."
i1
.
"":~~;,.., A~ -~,.',;g:: ~'i;J11~ .."".
:I
.....
"'-1\.."" !",. .:.l·" ~r." t.y..• ":,," I , ''·It.·
~'."!)
.".t'i'
';,i~~'
:",,';;:' ..'~
J,
';il~'::I:'
'::'.t'; .:. ' -,' Ii. ,,\ ..;·.~I"'·' ",..... , ,',:",. " .~r;;..~ :';::,.:,," ,.
~~
~
y---,) ' ..
., 11' '/....\ ..
.'?t 1!.frJ
·'.i~~ '\',;,1!':,>
·~)'·3h.,,·\ y,,;~ ~"-
,"', .
"iiifl ':.;,--'." ~ ,.
,\ 'i!rI, ':',','.~/ ->. ,. ',. ~ ':, ..~. ., "'_
......:.
'l
."i':'\!.' <).'~lii
.~".
\),.:: :'.'
,··,i .. ~ .
"",,1' .~Pt ):.-. ': '-:. , \jl' '. ;0
';"J.:
•• ,'~._
. -,.,. '. " •""E· . ,•.'. '.1,", ,." ... , - . "...r .i".\It~j /(_' .. '(' :i·'-:~.· .,·'1'\. .".,.. - '.' ,I, .,.'
,,'It~
"
-
.••,. \" :l..
'.~1i ".~:<: ~.
pipeline
]-
-
con unita funzionali multiciclo
p ••
~"~_ , ,;i:J."\<"" ......,.,';.:.
•
III
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 istruzioni 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 modificato e non e pili 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 determinal in maniera iterativa l la radice quadrata di X. In questo CasOl poiche Ie condizioni di diramazione sonG piuttosto complesse l l'indirizzo predetto di destinazione della diramazione l tram1te llutilizzo del BTB I e nato molti cicli di clock prima che sia noto Peffettivo es;ito della dir~azione. In questo intervallo d..i tempo possono essere prelevate ed eseguite numerose istruzioni provenienti 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 diramazione 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,
e
\-
1-
-
1-
)-
-
1-
1)-
442
•
Capitolo 10
1
•
.. .
•
5X=X DX=O DO 100 I=l,N RAD=(5X+DX)'O.5 IF«RAD'*2-X)**2.LE.EP5)GOTO 200 IF(RAD**2.GT.X) THEN 5X=RAD
\
·
· I \ •
ELSE •
I
•
100 200
I I
•
•
•
·
DX=RAD ENDIF CONTINUE PRINT*.'La radice quadrata di 1 ,X,'e ' l ) ,RAD ...
•
\
•
1.
•
completare Pesecuzione e modificare 10 stato della macchina. ,
\
2. Le. istruzioni successive all'istruzione di dirarnazione (provenienti -dal percorso errata) devono essere eliminate e non devono aver modificato 10 stato della ma.cchina.
•
\ •
·
I \ \
I \
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 soddisf~imentodi queste condizioni rna anehe tutti gli eventi cbe impongono un "congelamenton 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'esecuzione speculativa delle istruzioni.
10.6.1 Stato coerente nel caso del completamento in ordine delle istruzioni Nel caso in cui Ie istruziooi sooo forzate a essere eseguite rispettando l'ordine eli programma) l'eseeuzione speculativa di fatto impedita 1per cui ,non vi neeessita, aleuna 9i modi1iche. Infatti, quando un1istruzione eli diramazione e presente in RSR tutte Ie istruzioni prelevate speculativamente possono occupare solo Ie posizioni inferiori per
e
e
Esecuzione fuori online
443
... i. fO+-sx, f2+-dx,
1
loop:
1. f4+-RAD, f6+-,-X 'l. 'l. Calcolo di RAD=(sx+dx)/2 addf f8, to, t2 multi
2
f4,f8,~0.5
'l. Cal colo di RAD 2 -X mulf £10,£4,£4 sub! f12,£10,f6
3
•
Y. 5e (RAD 2 _X)2
mulf' slt
5 6 7
i. 8 9
f14,f12,f12 £16,£14,£30 £16,exit
bnez 5e RAD 2
/. Pooi dx-RAD addU f2,f4,~0
10 11
j
endif
'I. PORi sx=RAD 12
sx:
,.
endif :
13
15
exit:
a.ddfi fO,f4,~O % Cbiusura dell loop Dubi rl,rl,~8 bnez r1.1oop
xu
...
llX::r::r::r::r
Figura 10.19 Codice Assembler per iJ calcolo della radice quadra.ta..
cui potranno modificare 10 stato solo dopo che la diramazione e stata risolta. Se quindi la predizione risulta errata si e certi ebe 10 stato e coerente 1 perci?> basta svuotare RSR e prelevare l'istruzione proveniente da! percor50 carretta.
Ripristino dello stato coerente in presenza di ROB Per ripristinare 10 stato coerente nel caso di predizione errata 5i introduce nel ROB un bit ebe indica se llistruzione e una diramazione che ha provocato un1errata. predizione (bit Epr in Figura 10.21). Quando un'istruzione viene completata, nel caso si tratti dj. una diramazione, ,~sieme ai risultati viene inserita nel ROB ancb~ 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
444
Capitola 10
I
5 .ulf· .f14.f12.t12
6 sIt 7 bnez
116,114,130 fl6,_zit
Spec
e .1t
118,f10,16
Spec
9 bnez
t18,az
~p.c
12 add11 10.f4,'0 Spec 13 .ubi rl,rl.18
Spec 14
b~.z
Spec SplC Spec SPIC SplC Spec
add!i 18,10,12
1 2 3 4 5 6 15
rl,loQp
~ulfi f4.f8.~O.5
mult sub! =u11 .It
110,14,14 112,110,1& 114,112,112 116,114,130
xrJ.
:u::z.xu:J:
TO
IIF
I
Tl
I
T'J
I
1)
!
1"4
I
~
I
'1"6
I
7"T
I
T8
I
Tg
I
rIO 'TJ.l 'T12 r13 'T'1.4 rl~ I , I I I I
ID EXjEXIEXIEXIEXIEXIEXIEXIEX EX IF St : St SI SI SI St :: St :: St ! St ID ................ " ............g ...... a" ....:"·.., 5t ; 5t : St , 9t IF St 51 St St 5t :: ............................ 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 . IF ID EX EX IF 5t : 5t IF St IF
ME WB EX ME WB ID EX ME WEI
WB ME WB S, ID EX SI SI ID S, St St ." "'''' IF 51 St IF S'
............
............
ME EX
ID ... ............ Sl
.
Sl
" "
IF I.~~.
Figura 10.20 Sequenza degli eventi al momento in cui si giunge al valore cercata. L'istruzione 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 memento 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.
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.
10.6.3 Ripristino della stato coerente con history buffer 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 stata eseguita), viene controllato il relativo bit d.i errata predizione. Se esso indica che l'i5truzione in questione non ba causato nessuna speculazione errata, il coITispo~denteelemento in HB non piu necessrrio e viene quindi elimin?to; se, invece, tale bit vale 1 (ovvero l'istruzione una diramazione e ha innescato un certo numero di esecuzioni speculative errate) 5i devono compiere, per ripristinare 10 stato coerente, i seguenti passi:
e
e
e
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.
I. Esecuzione fuari ardine
445
\I :R:d ltlSultato Tpr PI -+
C
Program Counter
1 2 3
I-
4
Pc -+-
5
. .
· · ·
.
n
· ·
•
·
·
Figura 10.21 Aggiunta del campo d.i errata pred.izione (Epr) a ROB per tener conto Nel caso in cui una diramazione viene predetta erroneamente,
1.
) ..
-
nell posizione di coda dell'istruzione di destinazione effettiva.
tI.G
vee
0
pr
C
Program Counter
1-
valore PI -+
1 2 3
\.
4 Pc -+,
5
. .
n
· · ·
· ·
· · ·
· · •
Figura 10.22 Organizzazione in campi di HB con il bit di errata·predizione. 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 prec~deva la. diramazione. ~ 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 percorso corretto.
n ripristino 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. . ..
\
I ) I-
1-
)-
l-
I) ..
•
I
•
~nl~"
-
':. (
~i-'l' ..,
\'~'~
-'~1~ -:
•
'.
"~ '~.~""~ ...... "
\
·
i~';:·~y~
· I
•
I l
•
I
•
•
~jf,
,
•
~
•
I
•
;w'lli;~·"
-;j.;'-j"
•
\ •
I
• •
•
I'
\
I
,
\
I j
..
,
" :' ("'"
,:... '.
~"'" :': ..'
11
'.
~,,
~::'
",~"
,
BUS di sistema
,'
Uno dei campi in cui di piu si efatta sentire l'influenza dell1evoluzione della tecDologia elettronica e quello dei bus di sistema. Negli anni settanta1 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 e ormai possibile alloggiare tutti i componenti sulla piastra madre. Con l'introduzione di piiI livelli di bus, e cambiata 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 inte~medio il bus suI quale si affacciano i periferici veloci; a Hveno piiI basso queUo che collega i periferici piiI leoti. classico bus PC ormai relegato a questa ruola. I produttori di microprocessod forniscona gil integrati di sup porto (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! dilagar~ 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.
n-
e
11.1 Un po' di storia In Figura 11.1 viene mostrata I'architettura prevalente fino agli anni sessanta in riferimento a un minicalcolatore [Hew73] e a un mainframe [IBM74], La pratica realizzativa corrispondente alia schema d.i Figura1!.l venne interretta dalla Digital 'Equipment Corporation (DEC) agli inizi degli anni settanta, con l'introduzione della famiglia PDPl1, progettata secondo una filosofia innovativa. 1'architettura PDPll [Dig78L schematizzata in Figura, 11.2, organizzava il sistema come un insieme di moduli, tutti quanti collegati a un coroune bus) chiamato UNIBUS .
448
Capitolo 11
MINI (HP2100)
MAINFRAME (IBM 370)
MEMORIA
MEMORIA
CPU
CPU
I/O bus modulo
vo
ml?~UJO
vo
cont~llore
canale
I/O bus
I
110~"
m9va~IO
Figura 11.1 Schema architetturale tipico degli anni '60. Oi norma i canali ell I/O consentivano solo n passaggio 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 macchine erano presenti i. cosiddetti controllori di canale, ovvero dei processori ell I/O responsabili dell'esecuzione dei progrommi di canale: per il trasferimento dei dati tra memoria e periferiche.
I I
I I
I I
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 e un 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 memoria2 . 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 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].
1. BUs di sistema
449
)
-
""""'"
""""",,"moo POP-l1
toIOOlAO 0l1olEl.l()4U" lETT1J~1U.
BACKPLANE
""""' " """"'" 'O'H,m",
..... _a=<
I
UNIBUS
'>
<
•
1 1oI00UL0 ItffERP",CCLA
""" """'" (CONSOlf l
IoIOOUJ IHTERFACCIA
~""""""
DISCtIl MAGNeTICI
IilOO' UlIHTEIIfAOClA ST~~Al)
-
ALT'" VEl.C)CfT...•
cotlVEATlTOl'lE AIll CONV'liA1'1'Tt'I'\£
]-
Of'"
INl!:AFACCIA PN\.t.U£1A INT£AfACClo\ SV\IAl.f INn~FACCLA OM'"
""''''''''
•
1I •
-
\
I. ,
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 calcolo 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
)>.
j-
).
-
1J-
)-
·
I I
•
•
Capitolo 11
450
:Ill5i,
"!ii''.,
r~ ',,'-
'I' "
i i!!l
,, . I·
~,{
5cheda madre
~~~ ~f: ,~~
CPU MEMORIA
~1~L
.
· ~ 1\
,,'I~
-;j' "~~''' ,(i!'
PC bus
I
,.
~
:!!~7E "~i;;;j
'"', .IIJ~~,:! ~ ' 'Y.:.
1f'~
·,I
,,\;'H
,
'I'~£
memoria
1~,·"
J,-
110
"
,'
Figura 11.3 Schema architetturale dei personal computer degli anni '80.
•
'>
~
,,"
;. ":
"~..... r"'
·1U1;~
I
· ". !lJl !'~
"
.gJ, ",.
,
-I'll
~~""
tii ;V;
\
·
"W· ·ll i'.
~
bus illduslriaJJ
.,;'\J~I t~t
Fulur,Du$
,:
MultlDus II
:~;H;~,;~
~ff;I]:' f~:~
VME
\
..1(~,
Multibua I
.. !;~~ I
.
•
73
80
l~
:r,;"
~
93
90
"I{'
8100
t'i
PC bus
,,!
PCISA
\
\"
"~~~J ~ til
u,....
(
1L';;; "~ ..
:~;
l~~
bus per PC
'-Bal ' ~~
, \
\ \
,
\
Fi~a 11.4 Evoluzione dei bus di sistema nell'arco di un v~ntennio a partire dai primi _,.'.i;n' r~
. ' .!~~. ~
a.n..m settanta.
"
mercato del. Personal Comp~ter, a partlre dagli ~~l ?ttanta ·.;~~t~ r~ svil~ppato.il ~ercato delle coslddette. w~rkstatlo~l per un n~ero pm nst,retto :.~;~I;1;:· di ute~tI, che nchiedevano ~levate prestazl~Ol (esemplo ~er CAD 0 CAE). In Fl~ra. ,,:.~'~m~·) 11.4 Vlene mostrata l'evoluzlOne fino alla pnma meta anm novanta. Nelle workstations ~.=t;~ ';J ~i possono trovare sia bus di .tipo industriale che ~ol~zioni tipo PC. In tal senso, -::~;~ (1;F tn~eressante osser-va:e come .SI ~ono evolute Ie stazlOlll pro.dotte dal ~~~r~ttor: Sun :}~'.; ~:
. SI.
e
P::u-allelam~te al
.
·.1~ij rt . '1"~~~"'
e
I,'.' 1
Microsystem, Le prune staxiow Sun erano basate su Mult.bus I (agli lWZl degli '80)
\
)
:I
livello di ma«bine da tavolojufficio l it bus ISA e praticamente I'unico sopravvissuto tra j bus di sistema introdotti negJi anni ottaDta. Ha cambiato il suo ruolo: da centro del sistema e diventato il bus di livello piu baaso, sui cui 8OnO collegati i perife.rid piu lenti. 3A
::~l:~
"'.il'.., ...
. ; '~l
".. ....
~ ,
,
~
,. ;p
.t,
,""
l\';!"
'..A
fl"
,
,
th' '<''-
.
.
··'fF..r~-
~;;:i,:-
,f.,'-::{,'
.
'= '-:':•. ':' " ,..,,".
Bus eli sistema.
451
'" .
li\';~~','.
-1:,-'," ',::0"';'; j!':\ .
{~'>;' e impiegavano come CPU il Motorola ?8000. Successivamente, la Sun ha imp~egato iJ ~K\' .. bus VME. Con Pintroduzione della sene SPARe, il VME venne inizialmente nservato :\~h'.}· 'ai soli server (Ie mac~~. di f~cia alta)l. mentre Ie, w~rkstations erano pr~dotte su 4
~~;\~' . singo1a scheda, con posslbihta eli espandersl solo tranute il bus SCSI . Successlvamente L11:~S. 1a Sun abbandono anche il bus VME a favore dei bus proprietari illu~trati in Figura
/'115
~1"" .. ,'.' ,I" .,_..
'f:lI'" '''':!i'''' '.:} .-:;',•.
E'''''''': j"l,...,
•
.
.
"
,:e;~i 1,'" "'." !\',;', .i :;OJ'-,. '
~ ...-J. rPU. ad\oo)
' Hr,:·· .
~$_:<.
£;j'~~
"
"tHc.i· !
.' ...." ..,.,
-_. ,--
_.....
-""',
........ FI'U.
MMU.FPVo_1
,
,
>C.• ";,,, '
~~"" ",,~,
,11"".". ''''',. """ .1&" l\j~~:;" ... , '".
MBus
,
,
_.
:\<:",,.",
,
:
,.",•....,,' ,.
,~.~.,:,
b,.'li~" ""'; "
i~;' """, ",- '"
--,
---
"'_.5_
'''''':;,':;,i . .;p.",
~,';'f'.!.-:'.,
---
-.J. I'I'IJ. e.:t"OO)
--~
SBus ,
,
,
,
-~
-~
-,~
•
"/;:' . .i;:~'~<) ~.,:, .,:",
~"""
_.~
t:;::;: :F.igura 11.5
ser~e
velocit~
Arch.itettura dei 'sistemi Sun 4. MBllS e Ull b.llS.locale ad alta tra i~~t'':' p~ocessore,. memon.a.e controllo~e ~Bus, ch~ lDvece e WI. bus eli ~lSt~ma. pe~ la conneSSlOne ~~~,:::.~ eli schede di espanslOne. Le verSIODl correnti delle macchlne Sun lIDplegano 11 bus PCI.
;;:~':'.{" . "' '.
.
"~:x""
lt~:·
e
Gia. a fine anni ottanta it bus !SA state considerate insufficiente rispetto aUa ~~K: capacita di trasferimento raggiunta claIle CPU. Si assistito a una lunga battaglia "~. ;;$'{:": : commerciale per imporre un nuovo standard. L'IBM proponeva MCA ( Microchan'~.;, n~l Archit~cture 0 pili brevemente Microcha.nnel), m:ntre un c~nsorzio di prod~t.t?r,i
e
'
iK,!.:'"haappogglato I'EISA (Extended [SA), un bus con il vantaggIo della compatlbilita ,~&.;(.. c:on .1'ISA. Nessun? del due ha. 3ovuto un ~ucces~o commerclale paragonabile a quell?
;.;:::
dell'ISA, che contmua a essere presente In ogm PC , anche perehe, nel frattempo, 11 ~A~~~\1:: bus ISA. veniva..cleclassato. a u~ ruolo se.con~ario, con l'introduzione dei bus locali 5 . ~L";;, L'evoluzlOne del bus del PC lllustrata III FIgura 11.6. ~~;/:. Nel 19~2 ~tel ~a introdotto it PCI (Person~l' c.0m?'Uter Interconnect), un bus ~1; .f...: .con p~e:t~lOm medlo-alte che consente una. effettlva lll.dlpenden~a dal processore. ~ t~~;~~"~;" PCI 81 e nvelato un grande SllCCesSO. Pratlcamente Vlene·ormat adottilto da tuttI. '1:"' Non solo nel campo dei PC , rna anche in fasee di prodotti pili elevate, Con Pavvento ~~, del PCI e con 130 produzi,one di integrati.per 130 sua gestione , l'evoluzione ha raggiunto ·,~(.\" un punta di stabilita.. E interessante notare che stato formato un consorzio che )iFi;::,:· ' . . J~~{:.; F~;,'·,.' 4n bus SCSI (Small Computer System Inter/ace) e un tipico bus di espaosione, cbe viene spesso :~:i'~;:. pon.ato all'esterno'attraverso un cavo piatto. Per questa viene utilizzato da molti costruttori per periferici senza doverli alloggiare nella scatola principale. Di esse si parla 301 ParagJ:afo ~~1:' aggiungere 11.6. Successivamente anche la Sun e passata a. impiegare una singola piastra, con due ,bus distinti fli' lil;>' sulla stessa scheda. madre, come in Figural1.5. Correntemente anche la Sun ha adottato il bus ",,1,,-., 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 p;;nci:"" , ,it,'" ' proposto dal cODsorzio VESA. Esse aveva come punta di rona l'economicita., per contro era. sta~o "j!!"l-' ">;;, " \oi.'.'. concepito p~r i soli processori Intel. AA......
e
."
11':L
_.'
'':I'''' , ',~.1·:";·. '\o~...
~F;,
",."
.
,
e
,o
452
W!~
'i
Capitolo 11
,
'i'il if' • (,
\,;::
[~];
promuove una versione industriale del bus PCI, appositamente studiata, quanto caratteristiche meccaniche ed elettriche, per gli ambienti industriali.
0"1 ',~~
. .t
~"
1lt'. 'rg;.
~
,.'~
li':c \{~:J
,.
~}~,~ 'ikj4j
_,:.-"00, I!,i ~,,, """.;1. '!\I\F
1"",",,1
'"o1',('~,
ISANLS
PC
Xl
EISM'CI
15( BIT
MCM'CI
POl
.
""
"" '96' ""
'990
,"
.... ..' ",':'9'~;, !'ri"~"
I!.', :'.:":'1",. !• _jl,.,
MCA
"" "" "
"'~.at
:;;".,I"?" : · I·'b,." ,,' ,""" " "'~ _, ,•.'~i:f'
MCA./VLB
,,,.
.' ,:.,"
....
EISA
1985
I'
".!.~I~., ''''I' . , :'~ li"~.i,
EISANLB
AT(ISA}
,_~t.';f,'
'
;0; ~ •
..
-.. ,J"iW.'i.; . ,{j!
;,.";,,,,~,
l ':~J
.-'!.~,
.
:P1~:j' • 1"
.,
· '::4.~~
HARDWARE NON COMPATIBILE
.~
:i'J:·
'" ,,1:~' l r.~''I ~i :il!.!!l!li. 'J..• ";ir
"" "" "" ""
""
•
_.
~
"
li.' "O
~:~
~!,
1.~ ,i~{· ".
"WI';t~ '"::'~
'. ' ~~ Figur~ 1.1.6 Evol~zione del bus PC ~ dei rel~tivi bus locali nel tempo" La s~hema~iz~azione ':.~W:i~, ~~ vuole wdlcare che II bus locale PCl Vlene abbmato a qualunque altro tlPO dl bus dl SIstema. .·.t?~' I~K . . ,'.;:.~i~~')~~ .:,~,~~ I.: :;;tiOO·" !I; :'t:~~,
HARDWARE COMPATl81LE
"i~lft'· '~~.
,'.y... • , ~,;
S.~i~~ ~ ;~~ ;'f~j~~
11.2 La standardizzazione
q
. Jir~:1'~].
Definire uno standard significa fomire specifiche precise, atte a fissare completamente '/;~l·~ lti Ie caratteristiche meccaniche, elettrichee logico/funzionali del bus [CKN92L [D,;x86j. 'i~~'''I.f~, Le carattenstlche loglCo/funzlOnahsono, oVVlamente,quelle dl maggIor mter- i.~~'1;'f' esse di questa libra e a esse e sostanzlalmente dedlcato II presente cap,tola. Le :~r,~if.. ;~ caratteristiche meccaniche ed elettriche son~ rapidamente trattate qui di seguitq. '. :":'~~I~'~: ~j
Yr
M:.1!f!t
.;:~~; iii: ~:
-, ',_
Caratt~risti.che
meccaniche De~ermin~o~a co~patibilitAmeccanica tr~ le scl:ed~ ?~~ ~ aderentl a un certo standard. Sono rilevantl il tlpo dl connettore usato e Ie dunenslOlll '~:,~\:fu: d delle schede. ."::'/f.}j ·' .Per quanto si riferisce al tipo di connettore, a parte il numero di piedini, pa- '·:Ig~.f ~ rametro legato alle caratteristiche logicojfunzionali, l'aspetto .pili importante dato ':!:':~~~ ~: dalla' modalita. di inserzione: diretta 0 indiretta. n connettore a inserzione diretta ,.~~~, ~ ~ p~li economico, rna ofIre ~ontatti m~Do sicuri. e m.e~o. stabili di quello a inserzione ~3:1 % mdiretta. Inoltre, quest'ultlmo confer:sce magglor n~ldlta alIa scheda. .~~~~: I La natura del connettore ha relatlvamente poca lmpoItanza quando 11 calcolatore .. ;'~~, i viene usato in arnbiente amichevole come in un ufficio, rna diventa determinante "i.~~ ~ 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 .'>~i ~ , prevedono quasi sempre connettori a inserzione indiretta. Un esempio di connettor~ a ":.~ i 1 inserzione diretta e queUo delle schede per PC IBM illustrato in Figura 11.7. Esempi ,X~, ~
e
.•
:
"f':·..
)
l~"',;
1;-"'. '
,;~~;i3' oJ" ,
~lf}:~' ,
" ," .. iI'~.-,
ll~l;' .~,;,.' ;I·.I~ ,'::I'-/<,. • ~, ',,'.
Bus di sistema
453
' _ _- - - - - - - - - - - - - - - - - - - - - - - - - - ' - - - - - - - - -
...
;~:.~':~~' di connettori a inse~zione indiretta sono quelli delle schede VME (Mot851 e Multibus
[I nt 831 . ,;,,'.-n t:": ""
1";.. ~~
!.
;~,
.1,t\, ". .:;;~ ,.
cl:'~'~'::> J:k.
j'~;_~ ,. iii',\r~.: ,,!, •.,,., Fl.r,.'. '~ ~'_'I: .' ,.iojj;,-';'" ,.'i~·".,
."". ...;;.,.
t
:d'1:~""
~"'~'" ,")-., ',""" i' .." -'."
I .
"
i~t{'i' .'.
~~j<~:~:..
1 1 1 1
scheda PC IBM
1 1 1 1
JI
r.lrctlrt:
J1l!'c~::."
L
1.
.J
I
"""~"'-' '':;'"1--'''''
'f.~l:~·: .:'. O::,\l!,: .
contenitore
~~
,
!',l';':;:'·
I
r-------------------------~-l
,;~'.,
~~~>': .'. ••IJ:'';;i;'''''' ll~r·;_
334
J .
1 1 1 1
1 1 1 1 1
1
I
1 1 1 1
1 1 1 1
115
]-
~~
•
~1_~_-_-_-_-_c_r_~_n-_e~~~~~~e-tt~- - - - - - ~~
1
..... ,,,N
,\
·t:?~;.:·':';"': .~. '"A
~~~;:~:''''' Figura 11.1 Esempio di scheda con connettore a inserzione diretta: la scheda del
~~;:.'"
PC.
~it?l: ~.
K!.t;:::? "
. '. '. La dimensione deUa scheda e Paltro asp~to mec~co rilevantej di norma .essa
~~ft:.~>,· rispecchia la tecn?logia in uso all'epoca ?ell'mtrorluzlOne del bus. Per esemplO Ie :~.:W:?<;:X schede per Multibus I [Int77] sono grandl 305 x 170 mm, m:ntre Ie sched~ Compqct
;,t;t:.>':
.'~7","'!
;;I(~""..-.
~;!'ij:>,/' ~":
q'+E·
. . ~:;':~ _ 1
i~~~\'.
,ii'::A'
'II,~?<
~iS'·:'.
j!~;J.:.
r~~~._.:.,
:\~~X:
,;,
n:m
PCI sono grandi 160x ~OO .(f~~a.to 3U E.ur?:M.d, v~di sott~). La FIgura 11.8 rnette in confronto Ie dimenslOlli di cmque tra 1 pm d.iffusl format!. . ' 6 I sistemi industriali fanno riferimento ~ sIstema Eurocard. In questo slStema il formato della scheda base detto 3D e pan a 160 x 100. ~ per un solo connettor:, rna possono arrivare fino a 500x400 mm nella configurazlone a quattro connetton. I connettori sono del tipo a inserzione indiretta. n VME come standard prevede il formato 6U (160x233 mm, doppio Eurocard), can due connettori indiretti a 96 piedini (3 file dl 32), rna sana anche dispomblli schede ill formato 3U. 10 standard Compact pC! [PCI] pub essere ill formato 3U (un connettore) a 6U (due connetton). n connettore qui·e a 220 piedini (5 file di 47, can alcune posiziom perse per Vla della chlave di msenmento)
~~~~~/:
d~.~~) Caratteristiche elettriche Rientrano nelle specifiche elettriche Ie relazioni tra '~~f:ir'_. " 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 :';}~fl~~!, state trattate in altra parte di questa libro. ~:W~;.~ 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 Ii\},: loro esame porterebbe a una discussione che esula dagli scopi di questa teste, anche perche negli anni recenti sono state sviluppate specifiche tecnologie per ~piego nei il:f'1',.· ~;':;:_'.:_ bus. Queste tecnologie, che hanna fatto della logica TTL un ricordo del pMsato,
~:~b':;:
,~'!:j. ,.:' 1;:~r.':r: ~~1?,'
:••
:.v~.
_
•
\
j -( )\
I
-
lJ-
I -
6Le caratteristiche del connettore delle schede Eurocard sono stabilite dalle severe norme germaniche DIN 41612.
J-
I
'\\1
'--~1~, -):::::i~
Capitola 11 -------:.:""=:....:c:...-----454
,~;;':
'':.-!'t' -, ;';'1
I
-.;nj ~:g,I
I
280
··".~I
. -"'~~; ,:11
1
M lsure espresse In mm '
'I
.,';,{.' .~ . ':-:;W~;:j'
FUTUREBUS NUBUS
-.;.':i:.: i
'·;i.i<.' . (,<.:,i,],
_:~5:~, · I
-;r., ;1
'\~~~~ i' :j;'\~:J -. <::I.'t\/' IIl.t - ... ~' 'I"~ --'-'''', ,;'," .., ".,"~ 11"tl
)
I
)
-".:~~,
. ·:r..
.. ,.~
_~'V
t.", 3"''' uv ,.'.....
rr,~ ~"~Ii. '-.-
~ l;:"'"'~s' ~--, t ! ·
220
I ~IBUSIl
M~
,:~;~~~~ ~il}
-
,
',tY
~:'~"~iii:~'"
,!\.'
,.~'·'tl' ;,~ 't!",.1
-.-:t~·?Jj ·it?,
",:". 'w. m~~ '.1/,.' -\' ,., .,,;#:>:: .~ot
I
•
•
\ •
\
", -~1~fi
MULTIBUS)
172
Tr 1 115
, ComPilet PCI
.1,:;':,~!~tj.i ,~j~~
233
•'33
SCHEDA PC
.~,.'·t\l~« ,.'I! .'
"'I·" "'1! .' '.<€i}' !'·' ,:j~
"{~J:t, ~ ~~' . \
EUrocard 3U
100
'J"~:, ~'4
:;~;;,~4t~ \', "
.:\~ii~~~;t*
,
"~'~.i 'i'
tI-"
r
L,
r
,,'."""':'1:~Tt.. Wi~ j'''ftlY' '~~j
_'i1~'" ~;~
-
.<~~J:.)~~
•
,(
I
I ,
,
I I I
1
'.0
'·,'f:;~1m .;;
I
334
:~t1"'~ :; ~>,,~;~. ,..:fj ~ti ,«~~~ ~ li~r
I
305
Figura 11.8 Confronto tra schede di diverso formato. dimensione lOOx160 mm..
perme~tono ri~otti cons~,
~f~
'!;';~~l;~~~;:f ,J(~, '!i'9J.
1
La scheda Eurocard
3U ha
':';'1
~:'
"'.:l""'"
i.~',
.",r.':
~ "lH ".~ 1 ~ W~ I
·.."M .: ,.1,',', nll'I " .
".'M~,
;J"
bassi livelli di tensione ~d el~~at~ ~elocita. ?i tras~ssione.'-~~~i~ NOD. di rado I costrutton producono un gruppo dt specificl mtegratl aventl la sola "-"'~ ~one eli elevare Ie pr~t~io~i di un bus preesistente. La stessa Intel nello sviluppare .:~{~'i!I, ~ :y, il suo bus ~ocale !,CI, on~anamente dato per una. capacita. di picco eli 264MByte/s, :~~~;:,,~: ha s~bor9in~to. il ?~sawo a una capacita. di oitre 400 MByte/s all'uscita di una ·<~~}~r?;,!t speci6ca famlglia di mtegrati dedicata a tale scopo. )t~'~;'i
iJ!
,,.~~t :i~
" ..~~;:!li"'"'...: I>~ q ' " '", 'c.:' ',J. I"
,'t,l:"-tl
\
~i'~ Caratteristiche logico/funzionali Le caratteristiche logieo/funzionali riguarda- ':,:{Hi,t ": ":""I.'1~' ~·f~, ,.~' ·',1<,.\1' 1' no: la dimensione del bus dati e bus indiriz.zi; il numero e il tipo eli linee di centrella; . .:.;!~,~. .""" \'tl "'''JH', ~. Ia modalita ($crona/asincrona) eli trasferimente dei dati; i meccanismi d.i alJocazione , '.;, *-r... ''t "F~rlj', ;' del bus per i bus multimasterj i meccanismi di gestione delle interruzioni e degli errori ','-:·.:I~mt J/. .. ;~"tl"'~~ ecc. " ':""'-l ",'I .:::'Ni :~I Vinsieme delle regole che sopr-assiedono allo scam~io delle informazioni tra i
,~
J
,
I
',.
'~'~l" 'I "..."'} .. ". ~:lA~~fi: :~! ... ::ill "I ,.."
-,·r..
I""
'1
Bus d.i sistema
[Nome
I
(IEEE)
!1'.CXT
~A
Multibus 1 796) VME (1014 MGA
J..5::;i;:';_:; ,.
t.I'""_ .'"
~'~""~" ~., .:.,'
l'~;.···
.B:'.'t~~:'·
Y,!M~','"
~;
I.',
(. )
,
V."'.'
}:~:::,
..~::, {," -1 '.',
'",,~\<,H,
1t~I":,'; ,"
,:iilt:.~,
~' II" " " ~.;::,:;.,
,(,.' ..
ot'~_ .. ";'
-"E!:;A Multibus II 11296 J EUturebus (896 Gompact P CI "f"1 :;!Jus (') !SC:;1
dim 334x115 334x115 305x170 233x160
1con I dat'l dir. dir. e1ir. indo
292x73
dir,
334x197 233x220
dir. indo indo air. dir. indo
280x366 100x160 147x170 n.a.
8 16 16 32 32 32 32 32
~ 8
ind 20 24 20 32 32 32 32 32 32 32 D.a.
I mux I trasf
I
NO NU NU N
sinc.(4,77) sinc.(8) Mmc.
N
Mmc, Sille. 8,33)
~81 81
St NO
asmc.
SillC.
101
Mmc. SIDC. 33 smc. 25 smc asmc
455
vel' 0,6 2
I
10 20 40 33 40 95 264 200 4{sinc)
~~BiX.':Significato delle coionne:
~r·I!(\)i:i ..: ", . ,
.
!,::'.~:,:. ,'; ,;,'
dim'. dirnensioni , in millimetri'I
,,:
!~,f'J""" ~,if~!(~ ",
dat: dimensione 'del bus datI; '~~)X~"". ind: dimensione del bus indirizzi', \\;._ w,· "~~IC.'J~) mux: bus multiplato 0 nOi *,~;,.,' trasf: tipo di trasferimento , sinerono/asineronoi per it caso sinerono, tra parentesi 'J~J¥!;~': I. frequenza ~"j't~-.., d'I co, 1 ck' j.,.l~.:1:.",~ ~:£n~t.',' vel: massirna velocita. eli trasferimento in MByte/s.
~~;}:~:' Tabella 11.1
;~~'?:'"
;~~'/." i~?'!"~'" t.~~,\~:",>,;
ff.i\,j<,:, .~r~.'-,:'·
't-~::':'
H,itr .. ,,-~}·,
tr~
Alcuni standard di larga diffusione. La parte bassa della tabella riporta bus concepiti co~~ ~us di .esp~sione ~er iI c~llegamento eli periferici. I numeri tra pare:ntesi nella colonna dl SWJ.stra Identificano il cornspondente standard IEEE. I bus marcatl coo asteri~co .(*) sono at~ualmente ?li standard di fa~to nel mo~do. dei .Personal ,C~m.put~r, Alcum ~el bus ,elencatl sono pratlcamente scompar.:sl e tro~o ~plego.lD ~ercatl dl, Dlcchla,l ? d~ve 1 vecchl st.and~d dev?no essere mantenut\. In ambito ~~ustnale il VME.e aneara Implegato, magarl su piastre lD formato Europa (la meta dell'ongmale). Ma anche In questa settore si va espandendo l'uso del compact PCl, riportato in tabella..
~,l'~'"
,,,~~',..,"i~;",
II;'~\~""
".;(O'~"" ",,"."',",.;.'
~W;//'
!t;-.;,
. .:
,~~~
::~S~~,t, t,~',:,"
i'~~>" ~'~""~" ..
l l :.",
~.,:' .';::
. ~;.:-
La Tabella 11,1 riporta i dati caratteristici dei bus per piccoli sistemi, workstations e PC di maggiore eliffusione nella seconda meta. degli anni novanta.
,
'.!, , ..... ",~,'\', '1"'''',,'.
lC;f-~':'" ~..
e
,
~~·;r,;~
,",.' ".' ~ ,..-
moduli collegati at bus rappresenta il protocollo (di scambio dati). La parte restante eli questa capitolo essenzialmente dedicata, attraverso la descrizione di esempi concreti, a:llo studio dei protocollL
"
.. 11.2.1
Operazioni
suI bus
t .','
'H~;.:
.. ij, ,~,
~~: ...
II:":
",'
Il\~'~"
.
I".", l"';'~ .
"
. '-'C
!Ii!'~!'~' ~I~'
.• 'N', ,
Viene ora data una sintetica illustraziene delle principali problematiche relative alle operazioni sui bus.
456
Capitolo 11
.
. ~~'.. :11: '."';
' 'I Mult'b I .. In F' . ,tc , . d"1 pro t OC.O I0Iasmc~on~: U. D .eSemI:'lO 1 ,I US 'lgura 11.9 Vlene sche- ',~';£'
mat12zato il protocollo di lettura del dati nel Multlbus 17 I tlP1CO protocollo asincrono. -.~~.t
.
.,."..
."'~'~':H/o
./ WiffiC
=
\ I"
DATA(n)
.
..
,,~
"
ADR(n)
XACK
.
\
',::~fj
"%4
!'.?'~ "'~
.. )ii!.';
'.\
.' ' ,,',~ .
:,..::,..
,,/""a~'i (?
'\
;~:~k
1/
FIgura 11.9 CicIo
. ..
\....r
'
·".~'.OO
n master, all'lnlzlo della transazione t pone
.~;'~i:
gli:.jr.k~
indirizzi suI bus e, dopo un tempo prestabilito (50 ns) per 180 stabilizzazione dei dati, asserisce ~*f" la linea MRDC 0 lalinea rORC, Questo segnale viene ricevuto da.llo slave che emette i dati suI bus e, tramite il segnale CCLK (Common Clock) disponibile suI bus, d~termina. it ritardo \;t~ ~ con cui asserire 1& linea XACK. n master, ricevuto il segna.le XACK dopo il tempo necessaria .:~,~, , ';, . per 1& lett~a. del dato, rim~ove il comando iO~C e ri¥ort~ alIo st~to f1.?ttante gli indirizzL :~'.Nff~ Lo slave, nconoscendo che il comando e stato disassetlto t rtmuove 1 dab dal bus e conclude. -,t.~ :·:"t-;'~~J la transazione disasserendo XACK. ~';~iik:~
:,1ii'
.
.
,
,~:':~~;~: master preveda un limite massimo di tempo per Ie risposte degli" >~1
Conviene che il ,,-,i sli:\ve , attr~verso un meccanismo di tim~ut, onde evita!e che la mancanza di risposta."~~r-;' "i (a causa di un guasto nel modulo selezlOnato) provochi uno stallo. "':;;1;.:;,~~'1;
.
':)~~~:J'; proto~o~o si,nc~ono: il ?u.s d,,:l ~C, Nei bus sineroni e ~re~ente ·~.~t~~· .
Un esempio di un clock che permette dt rlpartlre 11 tempo m pOrZlOnI dl durata fissa , dette etch bus:' .':;r,~ ,~~ Ogni cicIo bus si compone. di piu deli di clock. In alcuni tipi di bus viene richiesto ':;'I:''Il~
ehe i moduli rieseano • eseguire .1. singol. operazione in un solo dclo bu,. In
ogni:~::~.:
caso, tuttI 1 dlSP?SltlVI devono nspondere entro 1 preclSI mtervalh dl tempo dettab .:~_'. :, dalle specifiche, E pero prevista la possibilita di inserire dei deli di attesa, al fine di "~~~~~ prolungare la ~ur~ta del ciclo bus. , . :"~~~' '. ~ Un e~emplo ~ bus. can l?rotocallo smcra~o e.dato d~l bus del PC, In FlguralLIO .'~l~' :t 8. vengono nportatl un CIcIo di lettura e uno di scnttura In
1/0
.:}r,: ..,0..;.
• • ",, .,,:(. ~l!"'" ,
.r,.~; ~,
Interfacciamento Conviene schematizzare ciascun modulo collegato al bus come , '':j "~'1 :'< ~ composto di due parti, eli cui una con funxioni di logica di interfaccia con il bus e una .'\~I';' " <~r.;'. ",';fr. con Ie funzionalita proprie del modulo. ,',I' ~" ",~ ;
.-'.... 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 ..... .0
~
~
",
,'~"
semplicemente che i segnali della scheda vengano riportati ai livelli elettriei di quelli
',r.~. ,
"~~",. " .";'~i1!f'"
,. .'.If.'~'
.,,-
'••J1:\
Multibus I e praticamente sparito dal commercia. Facciamo riferimento a esso perche alcune delle soluzioni adottate sooo particolarmente chiare. 81 protocolli riportati in Figura~1.10 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. 7lJ
.~~
. ii<;.-'~
·,.•1.<1i ,,~ . ,J,i/t/
· t:'~"~~ ~.:t~ ',it"'}
,:..'11:41;,; · ,-,.,(; .I •
'j~'''I
,~'\r~, ",.....
, ";
,
.$1/,'·....
-
. ~~.;. ; " .
".",r.:.... ,
-I
1
~
f'"
) j~(:,:~:,.:
Bus eli sistema
457
;, ~:~.;.>.~,---------------------------_--=::==-===~""::'::":' :! ~,,~Pli;'}-.
.
1-
Ll"'I".:
,~i\:);",:, ffi!M!(}~':';:
.I~~~~~;' _:oJ.:_
'f-
.
C.C1t>~~1
I " I
'~'l~n,!",
ol~:~.!';" '.
~~".!1.:/
=
;'~l~!,;ti,::.t\.' }i~~t£~<· .,'
IllOIIIII1J
"l"~f": /,.".
',~.,
.~~} .~,;j;:, . . :"
10i. iOii
,f.":1"" '.' " I~~;~' "~:""it"·:'
.
?~~J.~;:";:,,,','
I/G ell
i':i~'i;{':.j,,·,:
'G~
~~",·;:",I_,
:t.~~i~> . hT~ ,~~~,~'~~~'"
(lEAD)
n
I
n
1'1'1"11
-i
Dl TlIASI'IIJ.. ......,
" I " I
T'o'j
n
I
n
I " I " I "
n n n n n n n n n! n n rL v-
=:x
I!
~
I' W~
"I
....
X
0IplBea.....
J
+ •
W
\
~.
I
pli'" olpIlIe.u..
:1',----- I ,
, i
i
:
i
i
-
WMW"~/7//XAII'cpu~A7/00VA: ~ Allo
i---..{
I-
l)I
.
.
~ili;~~,',-\'
':
; ;~t.~~1Z'i,:: del bus (nel caso fossero diversi). ,~~1tJ~:' pilot,aggio de~ c~mpone~ti. Da un
Inoltre devono essere rispettate Ie capacita di. punto di ~ista logicci occorre invece interfacciare ~2-';!1t~r:',,· funzlOnalmente 1 segnah del modulo con quelli del bus_ ~ ~~1r.\.::\. ,'. In FigUra 11.11 viene mostrato un dettaglia della parte di contralla della logica di
:'.'4~i!i>- interf.eei': di uno ,l.ve (per esemplo un. 'ched. di memori.), Poich~ gli integr.ti di
;~~~frt.~:,;;,.. memoria non prevedono La generazione di un segnaJe eli risposta, ecomplto della lOgIca ~ :i~~~~E;~r 'di interfaccia generare il segnale XACK, rispettando i tempi necessari alle memorie. ~ :~~r!~>, Se i ritar,di non sono Doti a priori, il segnale XACK deve essere generato direttamente t ~*~~i,t dalla lOglca delle slave.
: gj,~l~',::;,:
.
''l~~'" ." , ~'i.'~ 'ui;·" 1 t,:_ ·'it",,.·; i' Uso esclusivo In alcune errcostanze,' un master deve poter effettuare una serie di '~ itf!}'? ' accessi a un particolare slave, con la sicurezza che nessun altro master possa accedere
• '.<:' '.:YI .. ," ,'''. ",,,,.•
.
,v:"J.-N..-,
. ,A"ti.;...
alla stesso slave, fino ache la serie dei suoi accessi non sia stata completata. Tipico . "···"c --'i"" .... ..·--, e il caso dell'impiego di locazioni di memoria in area com,une, per la realizzazione di ... ',.~,,,, .. , semafari, 0 ,j 't"'l~ l(-' ,t:·'ir; ".' " "~~~,"; Nel case del bus VME , e previsto esplicitamente un cicIo read-modify-Ulf"ite per .. ""."' " .. " ('' ' ,., ;. leggere e acrivere in una locazione di memoria in modo indivisibile, 8enza interferenze -' t"'.1'."', ·!·
" :""JI~'I';' ; ,~:;~ .. I." :",
~
.,'
'
',:'"
",,·'-l-:;:,~ ,~.,,,.
:\ ;"';. ~l'
~
< .. ~
•
~ j.,!.. , t
.i\
,~: '.'...,
,~."
~.,
~ ;",,,). .
~
I-
II..-
.:t~¥;.;,•. ~. ~ tItl.O I\}3 ~ ClCllI DI Q ~~r:.r·~ Figura 11.10 Temporizzazione dei cicli di lettura e scrittura di I/0 sui bus del PC. Si noti .'~J;~:~j ~he ~el c~o ,del cicIo di ~erit:ura vi~ne disasserito I/O CH ~y e, di coo.seguenz~.la CPt! .~;~i7:~:'"" insensce 11 e~clo T... l agglUntlvo al CIcio T w comu~qu~V18tO. Nel caso de~a ~ttura, il f£~-:~:S~.'(:" master (la. plast!a m.adre conteo~e 180 CPU) ~er~ce ro\y, dopo aver posta 1 dati s~ bus, N~.~~::', segnalando che I dati sonG proo,tl. SuI froote di di.scesa di T'1 lo slave do:vreb~e camplooare 'fi~~~;,:::. i dati. Set a causa della ~ua le~tez.za, 10 slave non e in grad? di leggere 1 dat.1 su T2, allora :~~~'~';'" 'esso deve provvedere a ~lSasse~ll'e il segnale I/O CH ROY, eli .mod~ che,Ia IOglca .del m.aste~, :'~~1~:,';: .rile~an~o tale segnale, disassento su T'1 (a s~ un T"" SUC~ess.IVO), 1.1lS~a un cl~lo di W8.1~ 1it~~~~~t. ~untlVO (T""I) al cldo T", comunque prevtsto (come nfenmento Vlene usato it &onte di ~ ;~~~:r: dlscesa del clock). t]1.-~~';;:""'" .
.
<""
} .",:' "
,'; :;;.'/ ':, \'.~:. "
.Il. ;"""'" •.,' •\ •
I~ r~).I~.:
,~ ~1"~'" ., ,.1:,... ".,11'"_
-
write e 'imile • un cicio read ,eguito d. uno writs, senza perc fase di arbitraggio tra i due, Nel case dell. architettll" 80x86 l. CPU dispone di un. linea di u,cit. deno-
d. parte altri lIiaster.
n cicio read modify
la
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
1\
I-
-
l-
-
1)-
)\ 1-
I)-
",
,' ,."
,".
,
I
•
458
'u'...,
1
".
I
vII
~
DATA
Q.tl\ll
K
.
cue '1" - - ,
l I
•
•
~OOIC~
'-' '(
,~,
. ( . .'~11" .:84i .t~:. ,:. j)iW"Xn
~D
•
,
"
•
Cs
01 HIM
,
I •
~
1-1 cUe
,,:~-----'===~
, ,, ., ,. Figura ~1.11 ~gIca eli ~terfa.cCla di,u~o,sla.ve (M~tl~)uS 1).81 suppone che (0 sla.ve sia una scheda. eli mem~n~ e che Sla no~o a p~lon II te~po di nsposta. La lo~ca di interfa.ccia trasforma I co~andi di lettura e scnttura In memona MRDC e MWTC nel coma.ndi RD e WRT,
\ quando questa linea
\
•
·
\
(
•
1
e tornata disasserita
9
,
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 Hvello 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 u~a chiusura controllatao Nel Multibus I previsto allo scopo l'interruzione PFIN (power failure interrupt). Nel Multibus II vengono impiegati i segnali DCLOW e PROT per distinguere tra avviamento 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. recenti si cominciato 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 U trasferimento 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.
piu
•
1
•
:<:;~~~,~ ~:'
.',~i~tf~'I
'~~'~}.L~;~1
i~'~~~iffijj I;~'
,:~ii~~ ~~. ',:'
· ·,:,:-'t-~W ~"
e
•
:\,:;';y~ Ij,~
~::~.!;t~~~~ :,?)tti~" }':)r!l~~: il} . ~er ,lalogtca della slave..n segnale DEVICESELECT proviene dalla, ~ecodifica degli indi- 'D~1~~1:j~~ rIZZI. n segnale XACK Vlene generato attraverso un contatore che diVide opportunamente "::';~~~~: jll~ la frequenza del segnale CCLK (Common btu clock).
•
;.;>:,:,-,;~~:;mt ,~~~
'::~\j,~~t ~~. ,t:~~j1 '::f
Q~I!.1 ~'" l-l~\k
',,:_.\~f...}:~
SL,lVt
~,
.
~
I
<$'~~i~' !iii ~fz '.' ." . , "D~"" ";.:.j*'~J i~,~~
-.---
\
•
":-::~ ;~.i.
•
· I
'
,",." "1"!"k ,o".,.," ';.'~ - - - - ._lltVla; st~[CT
•
.Y.
,I" ~
." '."
Capitolo 11
e
~'~,:tl.~n :,1 Mti;" "r
~.,
.'"""'
~~I.r.J..'l; ~,,
'~~ ~'
...
,~".;i;.'t(~' l" · ';~~. ,<'
7;~~fr
'·i';;;I'. f:
;'::Jl ,1.;" '\,.;Jj .,
'''lji ,"
"."
I~
!'f:':~;:i~1 l.t
,"'~'.f I) 'M ,.~~ ),
.'. ' -;"10::'0' < ,' ·". ",:mll ',. ..... ,:'.' " /
,~\: ' IJ. \t
'..'>:
:1
" . , . ' .....
".>
•.,.:, t,·;
"."'" " ~:,:~u¥. :;
•·'l;lt ,,
,;:-: ... \lI'~~: : ,~:'\~f. ', '.,'..--,,,,,.. ,
,
"":¥'f, .:
.·..!~ " ,}'."'~ '
..
· -'/";1 1\, :" ,
~~;, "'
'. "r'1~ I'
·,;~~:~~ ~
....
•
'"j ..'" · .'~.".
\ • •
•
\
I I
:.,)1.~ ,
11.3 Allocazione del bus Un bus viene detto multima.ster quando consente Pimpiego di piu di un modulo (normahnente 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.-
·
':'~J,' '. ;' 'l'i,1 "
:c::;~\'".
::'~~f: "
:1i!A' : >'\"P;,; : , "',' ~: < "'j)., .r':i.·~ ",~'-h
t'l'·
")::"
'
,.~~ , ' .I·"~
..... ' ::". ....,
9L'lUIcita LOCK viene asserita da. una. qualunque istruzione the viene fatta. precedere dal p~fisso (un byt.) eli LOCK.
~
\~'<"'
'. '''''''.
... ",I'" .", <;,
:..:rl ,;::"lIi
····'1
''',.~ ,. ~';j. .
"'l;; ,'~r
~I"l' \..-,'-
.~,,~,
',
..
i';'. Y~ " ",'"
Bus di sistema
.
~\:i .;; ',"-
~~. ~,...;;'.
izl.::
459
'c.
~'I " "'"
~}·;~: . rantendo che non 5i verifichino situazioni di attesa indefinita (starvation) 0 di paralisi . (d ea,d~ IDC k) • .~~~,:., . de I sls:em~ . • .' •
.... ' . , Xn::'i::'.'
L,arbltragglO pub essere realizzato mediante un controllore centrahzzato, e 10 tal ~~ ~'. __ casO 81 parla eli ar~~tragg~o centrahz~atol oppure med.i:ante una mt~ra2j}one tra 1 van ~~\'.""" ~aster Ch~l co~umc.and? t~a l?ro, 81 a~cordano su chI de.v~ ~sare il bu~. In t~l ~as? .:::> 81 parla di arbttraggto dtstnbutto. OVVlamente sonG posslbih anche arbltraggl lIDstl, f,i~ii\,', in cui i master si accordano tra lora can una tecnica autose1ettiva, ma la gestione del ~f~~j., bus viene co~u~qu~ demandata a u~ controllore centraliz~atoi questa tecnica mista 't0/h;: '. El, per esempI,o, Im~le~a~a dal,b~s 1?crochanne.l dell,a IB~, , I',:,·/' Un1ultenore distmzlOne SI nfensce a1 caso m CUI Parbltraggto avvenga attraverso 1~~j;.::: .una d~~Y .ch~ opp,:re in paraUelo, Nella parte che segue vengono presentati 4 ',~~:,:::," modahta dl arbltragglO:
".,
~.~~~,>.· .,. .. "'~,~", a) clistnbulta con schema dalsy chamj
}j,f-?{';.,.
. ~i1~~~": .b) centrahzzata con schema parallelo;
~'~1;.'~~'
.
.:~l!{y~,: ',>.,\-;:' ''"~ /..,.. '
";' \(,-~.
1,:"~~··.i ~
,
r ""'" ,""l i:"~
..,
c) dlstnbmta con schema. paralleloi d) centralizzata con schema daisy chain. .
""'. ;.:.... '.-'. . , . . . .' i~;";" 11.3.1 ArbltragglO dlstnbmto con schema daISy cham
''' ';,
:
'
"l'.:~C:· r',
'\!~:--\' c'.
r~t/"per
:'i",,,.,.
"t':-.· , "."
"'f''.,,'I'.~
•.
~·
t,li,ji; .::
M Jt~·
::
questo caso faremo riferimento al Multibu, I [Int77],. e, pili specificatamente alla Figura 11.12. Prlorlla' minora
Prioril...· m...u1o re
,;'1>:1·\"'.'
" .('..tr:.r 0': '.~' •
/.:t~.~,
:.:,>: '.
t~t
1"",';-":'.'
".'" ,' .• .P,,',,,·,:
.\'. \ ':':'
,,.-\" ..
;i:(,I'·~
:~l,:\ ..,:-·
.
,t;,,!?:·;;' . '.~".i'· ..
,,'),rr."
.:,
.V',·
", '.- .. '-,,'
LOCICA DEL WASTER A
LOClCA DEl.
LOelCA DEl. IIJ,STI;R C
=~
""_I
=,
m
WASTER B
"" ii"Rtl
,,~
iiPiiO
1
u,
,
SPit" BPRO
SPRO
"",/~, .~
':~~,:
;,
I'"f'" ;.;.'
~~':'i~:t' ·'1'" .. '
lUST
<..'.
.;:.:.' -
, .....
OCU<
."',.. ':",
", . ;::. •
. ,:~\,'.,
"'-":',,: .:
:\~'::';'. ...-;.
Figura 11.12 Schema concettuale della daisy chain del Multibus 1. II modulo piu a sinistra (modulo A) e quello 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 e o.no in usO.
,O,~ ...
:,:,',{:-': ,; "
·':·. ,";".· "1', .:.
n protocoUo 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 ' ...,.. ",'. '~l:::';
';-'
.
'.\, \
'.r,~
'
.
.
' '. ' " ' \.,;. "", '
\' ,.:"
~ i:tV:<'"
..
;~""">" "~'., .. ~.".' ~!,~ii:~;.f
,....
lOL'Inte1 rendeva. disponibile il componente 8289 bus arbiter, per }'arbitraggio del Multibus I.
..;,,;r~x~ ,.1'1~' 460
~~~~
Capitolo 11
- -----'-'---'----------------------------------"", ,
. ".t~.§r , "li~ .~;.";l;~.
..
.
.
~n po~sess? del bus il master asserisc~ BUSY e la ma.nti~ne Mserita per tut~o il temp'o~i:#;~-
CUI ha 11 controlla del bus' l La lOgIca del master nchlede Paccesso a1 bus asserendo~:;t~~ il segnale !:'CRQ; la logi~ ~ ~terf~cci,,: ~sponde ~seren?o ~EN quando it bus e';~~~ state acq.u~slt~. AEN ~a il complto d~ ablht~e Ie Usclte ~el ~nver del master. Nello~.::~ty schema 51 IPOtIZZ3 che il master assensca 1a linea CMND m nsposta a AEN. .'(:'~~.i~~~ ~iagram~a t~mporale dei segn~ durante una rase di. scamb.io ~ d~ accesso al :~~.~.
In
?
Flgwa 11.13. SegUlamo la sequenza degli eventl dl Flgura11.13 ;~!~d.1 tenen~o ?r~sente che la logi~a di interfacc~a o~era in modo sincrono rispetto a BCLK·~·t1~ (frontl dI dJscesa), sebbene 11 protocoUo Sla asmcrono. .~i:'}:~f:,
bus e nportato
In
,.":.:WJ.~
e in possesso del bus; BOQO.t~~··
1. All'istante to il master C - guello a minor priorita assen't'1 BPRN C ,TXRQ e e BUSY .
.
,,,, , . 'i ;,;.:,.tJ~~. "-"-"'\~l'
' ' / :' ,\;r~~...
2. ~lPistante t1 la l~gica di. in.terfacc~a del master A queUo a piu alta priorita -:::(r~~; n.leva c~e e a..:'senta 1~ ncluesta ,dI accesso. al bus T~RQA' Co,nse~entem.en~,~ :4~' Vlene dlsassenta l'usclta BPROA. n camblamento dl state sulla daISY cham Sl::f,;:~' propaga a destra per tutta 1a catenall . '. ~':f;iff
'
diSass;~~;~?~
3. All'istante t 2 Ia logica di interfaccia del rna.ster C campiona BPRNc rito, rna ~oi~e la logica del ma.ster. C contiJ.1ua a mantener.e asserito, il segn.al~,,jf;~b~1· 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. ~ '~':'-';~; .
4. Ali'istante t4, avendo ora il master C rilasciato it bus
(CMNf5C di5asserito)l2/!:f~r
inizia Ia fa:se eli sea:mbio e la logica di inte~faccia.del master C. disasser.isce BUS~/~t~,,,, t n. pass~ggIO delia ~ea alio, 8t~to di~asS~~ltO .ha ,come neul.tato l~ p~sagg10'}.%i~ di AEN alIo stato disassento e qUllldl la disabihtazlone delle Usclte del drIver del..!'-y;...," bus. ./(~.-
atJ.SY
5, Su 15 U maSter A
Af~:\~·
'iiiJ
e nella condizione di appropriarsi del bus (BUSY = H,
BPRNA = L, BPROA = H, oltre che TXRQ assento). Conseguentemente, la:?{~r~ logica di interfaccia di A asserisce BUSY e di seguito AEN, Per Jlipotesi fatta, >:;:~ la logica del master A aaserisce CMND A e pilota il bus. r{~;
.,.
'.
.
..
. ,:X~(
.
ch~ 1a ~me~ BUSY e quelia che gar~tlsce la ~mcrOll1ZzazI?ne t:~ 1modu~l. '~.'~ ~ protocollo ,di ~cani~)lo e asmcro.no, anche se 81 appo~a su una 10gIca dl mterfaccIa i5.i~ slll~rona .. L uruc~ Vlncolo che 51 pone e quelio relatIvo ~ fatto. che la. durata del <:~~ penodo d1 clock Sla tale da garantrre la completa propagazlOne del segnah attraverso ';'i la catena, in modo che sul £ronte di discesa venga cam.pionata una situazione certa. ~51 81 notI
Se q':lesto vincolo e ~o?~~fa~to, poi~e. BPRN e campionato prima che BPR~ si~ a.sse~I:o, non c'~ ~ossIbilita ~1. operazlOw er:ate ~ul bus. In ~al modo vengon~ eVlta.tl tuttI 1 problenu dI metastabllita. e"come eVldenzlato dalla FIgura 11.13, l'arbltragglQ viene risoIto in un cicIo di BeLK. L'intera procedura di scambio richiede circa 4 deli. di BeLK. .
11 Rl~ult;ra.
.
.
.
ch~aro che per ~I corretto funZlOnamento
,. e neces"arl~ che II
.
penodo
. dl
'
clock sia tale
~:f:~ '..
",,; '~,,~
:.-f{
':',~
.
:·;~.~
da .
garantlre I effettlva propagaztone del segnale per tutta Ie. catena. 12Si Doti cbe C ha rila8Cia.to iI bus anc.he se TXRQc e ancora. asserita.. Questa indica che la ric,hi~ta ~i C no~ estate. completata e che vert-a. ripresa in seguito quando iI master di maggiore PrlOrlta nlascera. 11 bus.
,;#
. ;:' - :~
;:~;
,-;:',;,;
•~
. "'';'
',,'
ti,: ~.
\
.:~\~"-
~;~"''- -
'~"~1;~ H •. -,,~
~.:( 2:·· ','!ff' .
I
.
Bus di sistema
':jlf!V:f:
.
, ,\I",,,. .,. :~:\
'.
.~~4?ii·,L:.,'
.
'"
"
"
"
;--
o,"'-
,~~~~,<.-
.,.1'~$!;~~~,.
~~~~ J~~':"';:,
~ ~lk~","
BCLK
';
.
'x,"
;~'1' ~:F,:,;' :l'~' i(,~••
BPRN
~ ,~~f', . ~.1{
, ~r .~~(~\.,
~,
"'"" ,·.,M'" i ',~l!,~ :::
1",
';!~':;
ER'
~[iA~f~);~:';~~STER c ' 'i!'~:~~ f .~j~~t~:i'i"·
. :'
. ' · ;~~~~~(":"
~ ~Ii~;~~
-TXRO I
" 'lii~);': .", "i$U~~3~,; ~A.STER c
J
i\ ;.~~:~:
~
!nJ.f..~·rt:;~.
.
\..
\
.
I
I
'--
,
ADD:
,y I
:
\
:I I
~,1-". ?'1-.-trFigura 11.13
I-
""" \
,
I I
, ; I
SCAHBl[]
\
./ /
BUS AL MASTER A
Temporizzazione dei segnali del Multibus I nel caso di arbitraggio distribuito :~. !..~:'ln daisy chain. Inizialmente il bus e controllato dal modulo a piu bassa priorita. C (Ie linee ( ," ~~\~~;~~·.ADDR indic~o .convenzionalmen~e gli indiriz~. asseriti da1 master ~ si rif~cono). A \~~~~~.~seguito d~lla ~chlesta da parte del,modulo A, SI ~n~ ~a sequenza ~ ~blo ch~orta ~· :~~ti!~\'~.,~u:,C a rilasciare il bus e A a entrarne ~ cantrollo. 51 noti che il master C [:Ilascl~ 11 bus. (.CMND " ~~!~:t:" disasserito) can TXRQ a.nc.ora attIva. Conseguentemente, per ~ompletare il servmo della i~~ ;~~~!h;~ richiesta, it master C dovra riguadagnare il cantrollo del bus. 11 ~I~v<~' ~'. ~~~W., >: 'J1Z~~<' ;~Vf I~~}!:t:;: Ne1 protocolIo nportato , solo BPRN mdIca se un master (piU pnontano) nchlede ~$~~ i~~~);,j~~~' ~ bus" 0 no. Al fine di ~ermettere a un .eventu.a1e master a piu bas.sa p~?rita di prend?re {~<,\,J:5~t·;;,: 11 controllo del bus, Sl rende necessano che il master corrente rilasCl ~ bus ~ termm~ ~:~~1l ~~~:t;;~"'":::. 'di ogni transazion~. P~r tale m~tivo, anche nel c~o che non ci Slana nchieste ~ ~~.::I~ \)~~f.;.:·:. accesso da parte dl altn master, II bus master corrente dovd. comunque sottoporSl, ~"'~;)'~:':" tra una transazione e Paltra, alIa fase di bus exchange. Per evitare questa apreco si '~:~t# l:7.~.;·:, PUO utilizzare (opzionale ne1 Multibus I) una tecnica detta di bw parking che consiste ~~i~ ~M:~,:!;' II' U II d I b all' I " b t M ." .. edir" bb > ;;.f, ~;id"li~:,. ~e ascIare contro 0 e ':5. u ~lIDO us m~ e:. . a con c~u 51 ~p e e peru ;;,.: ! :£f\.'\~;$,'''.'' 1usa del bus a master con pnonta mInore, con nschio di attesa mdefimtamente lunga.
.
#1
~ "ul;'t;:;"
'~'
'
~~E~~.'i".
"' 1;''';':--';'<::
. .
1-
l-
'I :
Il-..AEN -------------i-----r, i i\• I
BUS AL MASTER C
1-
,
I
I
A
I-
-
f\.J! :..=!s
I
eM"
1
,
( I
Atl
\
I
1/
I-
I
I I
I
CMN'
,
, ,,
,1"',
,
r-
: ~ '0
I I
I
-
e.-
l
I
," "
" , ; t,i(~.:
·· Ir~.~{~:i;,,"
I
II
ADD
:~f\~~~~'" t, • ;.j,(~,; ',If~b~~~(~:',.
I
I
I
BUSY
':
I I
I
JL
BPRN
I I
)-
"
I
I
I
,,
BPRO
;~ 'i,~~,\:t;;:"
,
I
I
{ I
;
':®;~ASTER
'/
TXRQ
",.,j~'
'
I
-
I
I I I
BPRO
>,:., :_'.•
,,;.1ii~~j:.'
:
,I
MASTER A
e.-
~
I I
.
461
. .. . . .
)-
)
1-
111
c.~,. ).
"~\'A
] •
\
•
I
• I
\
. .::~~~~
.~~~~ ·:-f;~1
462 Ca.pitola 11 ·.::::..-_::::::c=:...:=-
-
<-~i i
e
:i;:~f~. . : -\Ft~ ~~
i~.. ,..:
11.3.2 Arbitraggio centralizzato con schema parallelo
-
•
·-, I •
\
..
- '>_, .(.~'"
.
.
"<-:''''~''
,
":'·~~{t~~&\~ ;
Ques~a tecmca.e ~olto.~sa. V1en~ u~at~ nel bus EISA, nel PC~ e e prev1sta nel.~~~!:, ; Multlbus 1. Q~ di s~~to. Sl fa propno riferunento ,al c~o del Mul:lbus I. . . ..\~~l ~
Tutte 13 Ie lin~e di nchi~ta veng?n? portate. all. arbltrol COt;ne ill~trato .In FlgU-_~;;K~~ ~ r~ 11.14 . L'arbI~ro decodifica la pnontA. delle n~este e. assense~ la.1inea dl :onces- i;if;~ .. sl~ne la scheda vm~ente., ovvero per qu~ll~ da eill prOVlene la nchl.esta a' pill. alta 'li~~ pnor~ta. ~a temponzzazlO~edello scambIO In ~orma ~arallela con ar~Itro centrahzza-·~~~OO:: t? e IdentI~ a quella r.elatlva al caso ~ella da.:>y cham! rna con la differet.J-za ~e or~ .~~:i\~~i,,·., SI deve co~sl~erare la linea: BREQ anzlche lla linea BPR? P~r l~ tempoQzzazlOne 81 .;J;'~;~l1 t pub fare riferunento alla Figura 11.13, con 1 accortezza dl sostItwre BRE a BPRO. -'S~'}~'~ J
. "~~4~:t .
•
\
(
IT
"'" JIlt:ll
, \
PIII~ITY
IF
STO! C
HASTER B
IT
,
''';r., L O ' J E S T ; ' -.\"<~
HIGHEST PRIORITY I1o'oSTER B
•
,..
:i
Nel caso del Multibus I prevista la linea CBRQ (Common Bus Request), con cUi!;;;r~~~ ~~ 8i informa il master corrente che vi $000 rich.ieste pendenti e che il bus cleve essere ~/~l ' rilasciato. . <~~1'l ~ Alia fine del capitole viene ripertate il progetto della logica eli arbitraggio distri":_ ~it~~,.:· ;~ buito in daisy chain. )t·. ;
)
•
•
,..;:;:,~ "-'''''''j "~(i!'r:
I •
lr'
"'"
"'"
IT
"'"
"'"
,~':~..i~
l'.ASTE!l: D
IT
'.,:,:;;,~~~ I
... ~< .. \
"'" "'"
·
:-:~11!l<.' ;
'",~ ~
' •• : .
,.
,Ai~
,';~'r.:'f~, ",""..-".~ :~b
:'~~Ir.~
>;~,$W
Jt
P
If,
..... ..;:;.,
.\
-:,;,;z", _ '., -~,
."-.:.:..\." .....
.'"';":r.-<>;
•
l
,
\
',',:'.. 'W1
,,, ,• 6 7
\
-' >-~;I;£ '-'"YI';' 1·~",/'i.;I'
,, I
.
<,:",-,~,~ -
--- :,~""-
f-"",ii .... .. .:",
-; ;
/-')<"
,•
., .' ,-.~~"':'~
,
:"'~~ri :~~r?~,
': }~~'."!It;
. :" •• )-~' iY
6 7
.
";'~~l.l'~
~_~~~~
,US ARBITER
-",;<.,.l:f" ":;~l!t( Figura 11.14 Schema delParbitraggio parallelo. ~ultibus 1. Anche in ~uesto cas<> so~o pre- ·_~~~t~; senti Ie linee BCLK, BUSY. Per semplicital tall linee non $ODO state n~rtate Del dlse~no. _... :~p~ Ogni modulo master ha una propria coppia eli linee eli richiesta (BREQ) e di concesslOne ..'-:'!.~~J (BPRN). :I;1fJ.
...... "" ,- '~~:f~
I I
~~i~'
;_ ..~;"~.j~;
•,~..;;:'1i.
-'~'7.'II".
UL'arbitro di Figura 11.14 si realizza facilmente attraverso due dispositivi conunerdali, il (prioritll encoder) e it 74138 (decoder), connessi in cascata..
'. ! ",1:1'" 74148~:,:,~
.
\;11{ -.;j;~ ,.;;<,"" _... _, <,.0;
~'~'
..~:,
, r.1'; t' .\ "' .
3t-,
r,t:,j.:P~' 'Ih~'
Bus eli sistema
463
,F.l;';\'
•
,.w..~.: .., ,.", '~." , il1:j~;;t~'~,.",
~?~~t",
Nel caso del Mu1tibus I Parbitraggio su base fissa. S?no possibili altre strategi~: '~~(: per es~mpio~ Ie specifiche del ?~S PCl l~cian? al pr?gettl~ta 130 .scel.ta .dell3: stra~egl~ ~t.:tv,,'.~.; di arbltragglo, rendenda posslbile la realizzazlOne dl tecmche dl pnonta dmarmca 0 ~!t~~;:i. '~. sChemi round· robin. . . . . , . d II' I ;~~t... La sche~~ parallelo ba 1l vantagglO della ma~ore veloc.Ita ~ l~ ~va!ltaggI.o e a:.ii~\,,· to numero dl lmee che devono essere portate at nsolutore eli pnonta centrahzzato.
e
.
~~':i::,'
:~q; , 11.3.3 Arbitraggio distribuito con schema parallelo ..:i ",,1;,._ I
\,
,)~~~.
;'~\¢,,-,'" '"
(Mu1~ibus
Questa modalita e adottata da diversi bus di usa industriale II, il NuB us, ;~t.:~. il Microchannel e Futurebus), poiche.consente ~ gr~ numero .dI master, s.enza l~ ~;~\.;' limitazioni di velocita della dais~ cham.. L~ tec~ca 51 basa .su eli un meccarusrno dl ~~\':'!/,j:: autoselezione codificatal seeon~o 11 q~ale ~ ~lll~ob ~a.st7r d~~ldono autonomamente, e . ---~r~ in base al1a relativa priorital CIrca 1'1dentIta dl chI ~bbla dintto ad ac~eder7 al .bu~., ~~~. .~..:-. A ogni potenziale bus master e assegnato llWvocamente un codIce di pnonta. ~~;.;.'. 11 bus prevede un certo numero di linee di arbitrnggio. Queste ~e~ d~veIl:0 ess~re ,'II~~*\<) .pilotate da dis positivi con uscita a collettore aperto. 9uan?~ UUZ13 ~ arbltragglO~ tiJ{[\' .. ogni eompetitore immette il suo codice attraverso la l~glC~ di .1llterfac~la suI ?US dl J~"';~". arbitraggio. La logica di ogni competitore "sente" i livelli wired-or nsultantl sulle .:~~:j~ linee del bus! e modifica il numero che sta immettendo secondo 1a seguente regola: ,,~:' ·~\iJlJ~'" .. di d· , ., d I duJ 1 . d t I' d' ;~h.~' ' Se per o~ bit del co ce I p~IO~I~a e ill? .?' a cornspo.n. ~ e .me~ I }::::;3·; arbitragglO mostra un valore di pm alta pnonta, allora tuttI I bit dl mmor I~{;:' , peso vengono ritirati dal bus.
. ,.
:~\.~lllt.,
" Ih·· .
P. l!.i' '"
.~
-j"
dopo un periodo di assestamento l i1 modulo con piu alta priorita trova che il suo coelice
•
'.~11'~'i?':'.risulta uguale alJa configurazione assunta da! bus, e dunque il modulo in questione ."~ ., v·;.· .
""'",
\%I'~(:l;
j
\:,': it vincitore della eontesa. •
1,lf .~-\ ''.,
,
.. .\\~(", .... , .
'~. :r ..\._ . ".'''''~ '.'.~ ~'
, , ' ,,~~
,
;"\:~~':- ·~~·I'KII:'·: ~ :l~,'.1:"'" ",~ , .. '~~·4·.-;.,
,
,1if';-I'"':J I ;'1J' .•".;
.
.!";~~;!-.,
.
".,*,. "l~"'"
:·;.\tl!{'.. ".,
"'11."" ,,',
";~'~{:.
. ':r.l'~;~:' --a;.,:,"";: ti
.',FfI:-m.l. ...:' ,..-
~~~l.i''',' ; ,2~~;,L
!it['~''. M! :.
a;>
r,~!, '~I,>
e
~'~ .. .~,
).-
' In Figura 11.15 viene dato un possibile schema della logica di arbitraggio presente su ciaseuna scheda14 . 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 fu~ionamento del bus. In particolare 1a linea e in 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 1010.
.
,,~~!,
,/"l
:
Il;y'
" ~'!>
~~
t
14Lo schema. di Figura. 11.15 e adotta.to dal Futurebus, dove pero Ie !inee di arbitraggio sono 8.
, "•
.::.:;
.
"-", .,/:-:" ,
,'~l,.'>
.,'
.
e
Capitola 11
464
REO
'us
~
'" rv
I
(Of>'~ C
1
(OpOI\ Coil.)
I
(Opon CglI.)
8
" ...,
"
;
"'OJ
c> J
~
"""
.
~
~
j-
...,
" It: "-t
e2
ARBI
\.
"
e,
I
ARBO (0,- ColI.)
~
A
Yeo
'-f
CRAW
Fi~ur~ 11.15 Logic~ di arbitra.g~o parallelo ~ ~tri?~to,
"J
ARS/CNT
" .r
~,~,..
•
Ogni m,aster vi~e dotato ~el1a. :t~~ 10g1Ca. m figura, 14 bIt A3-AO codificano 180 prlOrtta. d1 Cla.scun master. ~a hnea REQ Vlene ),~? asserita, dalJa logica del master quando intende richieder~ il bus, Le !inee ARB3-AREO '~~. costitu~scono it bus ?-i arbit.raggio. L~ lin~a AR:B/GNT vien~ pilotata da un controllore, :~'~"; . ' . centrallzzato. Essa differenzla 1a fase di arbitraggIO da quella eli usa. ":.&'~
,
::~::,:~'f..~
.. '; 'l~jr!
fj!
8i supponga ora che an0e il maste~ avente codice 1001. faccia la richiesta di' .... I accesso al bus. Uuscita. sulla lInea ARB3 nsulta 1 per_~bedue 1master, oltre che per ,,~t~.. tutti gil altri master che non fanno richiesta (di cui ci disinteresseremo)j ne cODsegue ~'!&ol.. che la linea ARB3 risu1ta a 1. Per ragioni analoghe la linea ARB2 risulta a O. Invece, X~;;, per quanto concerne la linea ARB1, il master 1010 tenderebbe a portarla a 1, mentre ;.i.~ il master 1001 la porta a O. Ne risulta che 1a linea ARB1 assume stato O. A questa 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. ':;.t~ 1 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, ;~lr p(l)) ,',." ,' ~I': e si osservi che X3 = 1 se A3 = 0, oppure se ARB3 = 1. :,y~;, La precedente relazione pub easere espressa formalmente in questo modo: ':£~
·T[f , -:,
.:t>
.
HIE
come se I'int-erfaccia si ritiro,ue dall'arbitraggio.
~
>, .t
'r~V ," t-l.::~:· ~I~"
1
:i:'~ :. . "':I·:"~ :, I}!.·,.,.'I
.
'~', '~"~' .';;:".'
,:t~r",ij[;,~:., . ~
,,,... ' ._ .
'-jij~':"l
~
,
Bus di sistema .
..
,"'~'I"" .
)
.
~ I,·~·l ';.!
. ~"'~"":' .,
~'j,U"i.;f"~
;l~~i2;. I-V"'"'~" "-1<1. t, ~.'
X3=p(A3)
> p(ARB3).
'.
81Hl'\!/Ovviamente C3=REQ· X3=REQ· (P(A3) '~~.; ~t;:',y-. Ragionando i.n modo analogo si ottiene
I"l';il,r,.~;·, ", ~"r't\\<+l'i' :~
""~"'~ -,
'''-: ' I ' " '''.,. ••':ro. ,. ~~_ ',1·. .,..\'·Hilr.~ I"
465
,,
C2 = REQ . (P(A3)
-
I
> p(ARB3)).
> p(ARB3)) . (P(A2) > p(ARB2)),
I
.'
~,{~~~ ':' '. Infine l si ha
...".,
~~
r;;~~'0A.'),
~!{tt;)'r';':
'!""1".:'~"·:' "'i~r,;t~,.,
CO=REQ· (P(A3)
.
> p(ARB3))· ... ,·(p(AO) > p(ARBO)),
tlr~}l:;:. ' In altri tern:~, quando finisce la·fase di a:bitraggio, la linea G~NT risulta asserita ilJ~wr ;.' solo se la pnonta espressa dalla configurazlOne A3, ...,AO e magglore 0 uguale alIa stato I~.*~i{r ", del bus di arbitraggio 16: dunque vince la contesa il master che ha' piu alta priorita.. I~~~t~;:,;· '91.1 t· ". .:l;jj,"·j,:~~·,:,·, "
'
'i1!~"t.! . "['ill'";" ,"
I ' ,
In Figura 11.16 viene schematizzata la rete che genera il comando eli arQitraggio.
,,~, ...... ;."' .. :'. ,fj'''' . ~I"'" ::1'<"-; ':;';~I''':, .\l;1,,:, "'lJ{,'" 'i1!'~- ,'iJ.- " ii· t ..'.. •". , 'I v' , , )J!" ~ .•. ,~"" "1)1'''''''' •l .. ~ ..,;\.
,I
~'l~I'j~o_"!. .. ,t.~"
,,,
,.
.. ,lo"'l,'''" ' j,.." "_,' f,' ,.it
Il:EOAS
,
~
,
,
, ,
•L
___ • _.
l
~:'i,:,\~~r
)
... _.:-. __ ..,
------r--AIl:81~
Il:I:Q ,•
•,
, ,
•
. - . __ . _ - j
CACP
""
•
ro.T
t?a\~".';"/ '. ~~}1:~;' '~I"~~~t,: Figw:a ~1.16 Sincroni~zazione de~a richiesta di us~ del bus risp~tto a ARB/GNT..REQ~S .:1. '1~~:'... e la. [Ichu~sta generata lD modo aswcrono dalla logtca del genenco master; essa Vlene SlD'I.'~ ~r~~.: cron~'tzata attrav~o it flip-flop O,.a c?mmutazione s~ fronte di 7alit~ La. ~inea REQ resta £; ~.':': stabile fino a.l pro8SlIDo £ronte e, qumdi, per tutta un'mtera fase di arbltraggtO e uso del bus.
l~'
I
~~,1y?'~"i'
~;~~1~t~ . ~~~' jf~~;,~;..
~~~\
,~.'.~~i~:'
1j i~';-;f~'r~·
~,~;,: )~~AT~)
'~'~f~:
",;~1:,~': ' ~~~/'~
.'; utJ:\f..;,. Ii
\t&~:.,;;",
,'b::h:" 'f,'''''; ,,::;~
."\:iJ'i{ . ,tl~'E:\ ;.;.'1'.'" ~ .,~. ~"1' .",... ., 'IS'f.., " ," ", .
,"""....,
",,,"!,., r", ''''IJl't(:; ' .. '11#i'~ ";' lJ~)"""
"
I. l \ •
'"
11..3..4
..
1.
ArbltragglO centrahzzato con schema daISY chaIn
Questa soluzione e adottata.nel VMEBus, dove e presente un controUore centralizzato al quale arrivano quattro linee
e
). 1'
I.
e
16Si noti che, essendo ARB3, ... ,ARBO a collettore aperto,la condizione di maggiore non e possibile.
J
l
466
CONTROLLORE
\
I
I
•
Capitolo 11
I
I
!
• •
ap noma o rou ld·robin
•
I
I
Catene ~DaiSYChain
Figura 11.17 Schema eli principio delParbitraggio VME. Sono previste 4 Iinee in daisy chain.
I (
•
:J
Ga ltione
CONTROllO
BUS
BGilN
BRI
,---,
,---,
,-
I l"'lQ.ster 1 I ITXRa GNTI
I
I
I I
I
IlGlIN BGIDUT
I, I
L_ c-- -..J
J"IQ.ster
ITxRa
I
SGlIN
I GNTI I
2
BGIOUT
I
L_ t----' -..J
I
I GNTI
l"'lQ.ster 3
ITXRa I
-,
BGiiN BGJDUT
L_ f..--
I I ..J
BBSY · I (
\
I l
Figura 11.18 Singola daisy chain VME. BRi e la richiesta di uso del bus della catena iMma, BOUN e 180 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.
riportata la temporizzazione relativa a delle operazioni di scambio sul bus. Nell'esempia il protocollo prevede che ognirrichiedente mantenga Is. linea di ricbiesta a.5serita finch. non gli arriva il grant.
11.4 Esempio di progetto della logica di arbitraggio distribuita in daisy chain
,
,
\
)
I
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. ,
Bus di sistema
ARIJlT.
I
MASTER A SUL BUS
... 8Rt"-
I: ,
i SUL
SUI. BUS'
BUS! ARaIT
1
1 \ 1'
" ' I '-I A
. .I
'
'
,,
'
' ! ) I : : ! 1 I ~ i !
PllotaU
'de.i
, . : "
richi ..d.ntl
. + +
BGIIN
{
.+ + .
A, Lf !
I I ,1 ....... ¥ :
:"
iii
, I "
BGilN
·f-·..
I
I
SGIOU1'
Pilot.. to d.Uo ..rbltro
AR8ITRAG.
', d :,
BBSY
WASTER A
l.USTER B
,
-
'.
i
467
\1
I \fr
.
. : , ' , 1 : I
~
I I
,i I
,l 1
:
I
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.
TXRQ --71,1 BPRN BUSYlN
.
--~ LACCt=~
AEN BPRD BUSYD
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.
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 uscita11 . In conclusione, si tratta di progettare la rete schernatizzata in Figura 11.20. Gli ingressi sono: 1. TXRQ: linea con cui la logica del master richiede Puso del bus. Una volta acquisito , it.bus resta in uso a1 master fino al moment.o in cui TXRQ non viene disasserito.
2. BPRN: linea di daisy chain·di abilitazione della logica di interfaccia del master.
3. BUSYIN: ingresso ehe riporta 10 stato della linea eli bus BUSY. Le uscite sono: 1. AEN: linea di abilitazione per la logica del master. 170vviamente ie due linee devono essere collegate tra lora in modo da formare un 'unica linea verso l'esterno.
468
Capitola 11
• A: stato di riposo; • B:
st~to
d.i attesa (di entrare in possesso del bus);
• C: non abilitato in presenza di richiesta; • D: non abilitato in assenza di richiesta; • E: stato di possesso del bus. 100,101
100,101
0lr,111
o-.lllG
A 1().,101
"01-,111
1'-,111
~ '';::'' """,,01',111
I
0
E
j-""- '-
~,'11
,~
tt-,1
11',11\
A-.
B:pronlo
...
c: non dbllo • bus r1c:hIeItD
,..
-'
l. ............
_
•••
~
..
&,111
w, e,1 \1
ow
,-
0"
C,lll
Con1
" ,
D,l11
0,111
[R]
-
-
-
-
C,111
A,101
....,01
0,'11
0,111
E,OIO
A,10t
....'01
0,111
0,111
E,010
C,lll
0.111
8,111
8,111
C,111
C,111
&,Ul
.
8,111
C,111
."
1.010
1I!,o10
B, 111
....'01
"'101
".
!
--
• • 00
,.,
469
-0
•,X c-
-
••>
'x
E
A
X X X X X
•
c
D
0-0
.-,
I
0-0
I •
1. •
.--- .. ~
..........
Al 6,111
00' B.111
'" '" ". A, 111
A10l
A,111
'" A, 101
'" '" A,111
A, 111 ~idrlei ..,"
B
I
B,111
E,010
"',111
A,I \ 1
E
I E,OtO
E,OtO
E,010
E,utO
A, 101
A, 101
A, 111
A.l11
•
SIan> fuIuro; "'EN. BPRO. eusyo
000,111
10-,10
-'·,11
00-,111
...1
A .In\-111
B
0-,010
J
E
I I. I-
A: Ilbero B: pronto E: possesso
I•
j
·10111·' ....
1. ·
). •
1-
IJ
-
I
•
470
Capitola 11
""""'".
-
lXIIQ,IlPI\lH,IUSYIN
_,-
1
•
""'"
OorV'
"''''
"'"
I
lUI
111,1
III
AIB.11tls.111 A,111 A,lll A,lOI A,lOllA.lll A,lll B B f 111 1=.111 A,111 A,lll
•
IU'"
e
Qui AEN sillCfOI con it clock
E E,OtO E,010 E,01O E,010
-
-
-
1ndlHerenza
-
~100 A,loo A,l ,0 A, H' \--- Qui AEN e aslnCfOflO.
Stalo futuro; AEN, BPRO, BUSYQ
Figura 11.25 Tabella modificata
•
1
•
•
I
I Stato I VI A'
(
l:l
"'
•
-
0 0 1
V, 0
-
1 1
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.
•
\
, "
1M N"8"
•
\
•
•
•
I
1
I
00
" 00,111
,"
10 01,111
"' 01,111
11 01,111
11,111 00,111 00,111
00,111
11 ",010 11,010 11,010 11,010
I
'0
-
-
-
-
"
-
lO 00,101
-
11
., 00,1 D1
..
"
00,111
00,111
-
-
-
11 00,100 00,100 00,110 00,110 10
-
-
""" .,
"""'. ,
-
,
y1' yZ. AEN BPRO BUSYO
\
Figura 11.26 Tabella delle transi.2ioni minima.
·'I BPflIN,BUSYIN
v, Y2\,.VVVI
\
I )
j
I
--
"""'""
,
8PRIN,BUSVlN
IV
0<0000 01 0 1 0 0 11 1 1 1 1 1f
I
11
V1
VVVIIIIV
0< 0 0 0 0 01 11 0 0 0 0 1C
-- - - --
Y1'
lXAQ-l
BPRIN,8USYIN
Yly}..00011110 o 1 1 0 0 011100 11 1 1 111 1 -lXAa-O
BPRIN,BUSVIN
Yl
,
VV V I
I
IV
0< 0 0 0 0 01 11 0 0 0 0 1C
-
--
-
- - - -
Y2'
TXRQ.l
Figura 11.27 Mappe di Karnaugh e sottocubi eli copertura degli stati futuri.
Dalle mappe si ricava: , • V, = TXRQ (V, + V, BPRN BUSYIN)
I
Bus di sistem.a
BPRIN,BUSYIN
Yl V:
IJVVI
II
IU
,BPRIN,BUSYIN YI Y: UUUI'IIV
J ,1 1 1 1 , )1 J 1 1' -" 11 0 0 0 0 1 -
,1
,
1~
--
AEN
(
TXRC.l
V, " )
Io.NVI'I'U
,1 1 1 1 , )1 ' 1 1 1 1 ' 11 0 0 0 0" - 1 )
-- -
TXRQ..O
-
-
V1
~VVIII'V
1,11ffl , '1 Ii 1 1 ,1 1, 1 1 1 ' 1 1' C _ _ I - -'
'-
TXRQ-o
BPRIN,BUSYIN
,
" 0<
VVVllllV
0 0
'f 1 -
-,-
01 11 0 o " 1 1 - -I!- -
BPRO
.
TXRC.\
BPRIN.8USYIN
BPR1N.BUSYIN
VI
- - -,
1 1 1 1 1
---
TXRQ-O
1 1 1,
BPRIN,BUSVIN
471
IJVV1111V'
11
1 1 1
)11---
-"
11 0 0 0 0 I
- - - -
BUSYO
TXRQ.l
Figura 11.28 Mappe eli Karnaugh e sottocubi di copertura. delle uscite.
• V; = TXRQ (VI + BPRN) • AEN = V, + TXRQ • BPRO = BPRN + "'TXRVDQ" , • BUSYO = VI
11.5 Organizzazione dei moderni calcolatori
a) un bus ad altissima velocita. per la comunicazione tra CPU e memorie, detto bus
host; b) un bus di prestazioni intermedie per i ., talvolta denominato bus locale; 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.
472
Capitola 11
TXRQ
r--I I I
--------------------)
,, ,,, ,, , I
'"
,,:~ BP RIM ~
:,
)-D r
'"
I -.J
)BPRO
I
I
,
L
,, ,, , ,
Y, Y,
UN
)~
ID
I o.c. Y2
I-i{
v"
I
1._---_.:._-----
-------------- ----BUSYIN
a,,'
________ .J
SUSYQ
BUS
Figura 11.29 Rete risultante.
c) bus per Ie periferiche piu lente, detto bus di espansione. . Al ruolo di bus eli espansione e stato relegato i1 bus di sistema precedentemente vista; in particolare nel mando dei Personal Computer I il bus di espansione e ormai 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 e stato aneora standardizzato, in quanta esso e forte'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 e evidente, 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). termine Chipset un marchio di fabbrica registrato dalla soeieta Chips e Technologies 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 assumevano i1 compito di collante tra la CPU e Ie principali parti componenti. Per motivi
n
e
1 Bus di sistema
473
1
I,la teleconferenza
r -
-
ISCHERMO VIDEO
08
08
IdoaJmento 0 ~lne
/
\
-
\
lNe colot (24 bit) 1024xl2SO 10 immls
640'''''''
~ 30 '""'"
...
\I
-
,.molo 2
-
..." 30 Immfe
.. ...
DEl
1-
"",
32011240
. 10 'rames
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 riparlita 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.
e
I
I
>
\-
La valutazione del carico imposto dalla teleconferenza (in tennini di byte trasferiti) puo essere effe~tuata valutando il tasso di trasferimento per il video19 e queUo per la trasmissione. Per il video si deve tener canto non solo della dimensione e del numero di c010ri dell'jmmagine, ma anche della frequenza di aggiornameIito. Si possono fare te seguenti considerazioni.
• Finestra documento. E 1a porzione maggiore dello schermo ed. e destinata a visualizzare it documento in discussiane. Questa puo essere eli pill pa.gi.ne e richiede di essere sfogUato.. Si suppone che l'immagine sia di 1024x 1280 pixel, can risaluzione 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.
\-
L !1-
•
I
, •
I
•
•
I
•
•
I I
•
: I ,
\
• ,
,
\
I
I
I
474
Capitolo 11
• 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. • 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. DATI SUL BUS flDestra documeoto finestra anteprima finestra collegamento remoto 1 finestra collegameoto remota 2 Busso compresso anteprima Busso compresso collegamento remoto 1 Russo compresso colle amento remote 2 tasso . tr~ erimento tot e ri . esto
TASSO Dr TRASFERIM. (MBytes/s) 39,2
2,3 9,2 9,2 0,2 0,2 0,2 60,5
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.
\
11.5.1 II chipset
I \
,I I )
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 costruttori.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,);
I'
Bus di sistema
Processore 1
..
475
, I
Processore 2 1__ ... ., _. Bus Host
t.
t Bus AGP
Memoria Princlpale
North Bridge
Q $Iot PCI
IDE
•
USB
South Bridge
$lot ISA
Bios
Bus ISA 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 H Southbridge 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).
d) la gestione del bus AGP; e) la modalita EIDE: Ultra DMA/33 e 66, corrispondenti rispettivamente alia velocita di trasferimento di 33 e 66 MByte/s. 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 La serie per 130 classe Pentium ha 1a sigla 430. n primo chipset della serie '~' il 430FX, denominato anebe Triton; l'ultimo il modeDo 430TX. Il 430TX stato 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
e
•
476
Capitolo 11
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 compone dei due integrati denominat; 82439TX (System Controller MTXC) e 82371AB (PC! ISA IDE Xcelerator PIIX4)_
I
. . I
1 t
M"
Bu. Ho.t (1IG-68 MI11;)
{~ • •
IDE Ull.. OMA.
__
~
."
eacn. ucol"do nveno
82348T
x
(MTXC)
••
M _• Prlnclpele (ORAM)
t ""
Bua pC! 13043 MI\2;)
.
I
Mo"
..
....
t EJ
-...
t -
t a
t t I I I AUOIO
STAMPANTE
~ I
Figura 11.32 Organizzazione di un sistema basato su 43OTX.
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_ 20 Secondo 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 e rivelato esser un viDCOlo solo teorico, poiche Delle applicaziODi pratiche queste frequenze eraDO utilizzabili.
Bus di sistema
477
11.5.3 Chipset per la classe Pentium III La serie piu evoluta della Intel (alia data di scrittura eli queste pagine) , nata per lavorare con i processori Pentium III, la 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 m~ello a modello.
e
I l
,
I l
I J •
I
PENTIUM III
.... "'"'
Metner'f COlima.
.tXAGP Corl~'" graftoo
MCH
~
Ii ,
-
~
t1lrnori1o
(Norl;hbridge)
.0<
'."'0 ..
~eric:t.
82801M
I/O Controller Hub
ICH (Souttlbridge)
.....
Ta5ll.1lI,
•
I.
I
-
I I
Bus PCI
'OE
2 portl USB
-
I
'-'"
(0pD0nllIe)
I
"'" ,....
Inl~ccia
I
j
)
Sllper I/O
FWH Figura 11.33 Organizzazione di un sistema con CPU Pentium In e chipset 820. Si noti che l'interfacciamento tra Northbridg~ 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 e stato trasferito in lOH, lasciando a MeR solo Ie connessioni ad alta velocita..
)
I J
I
•
478
Capitolo 11
,
MCH
•
840.
\
•
La. serie 800 si compone.di tre sottoserie di integrati, denominate 810, 820, Qui viene fatto un breve accenno alia sottoserie 820, quella di prestazioni
intermedie.
n dispositivo MCH 820
I
•
• •
)
•
· ' (
I
•
\ I
I \
I 1
I )
I
(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
ICH lOB e connesso 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 canali e capace di gestire fino a quattro unita secondo 10 standard Ultra DMA/66". Vengono 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 e scomparso il supporto per il bus !SA, ma e stato previsto un iDtegrato ausiliario collegato diretta.mente al bus PCl. Sono anche presenti i controllori di inter~. ruzione, eli gestione del risparmio energetico e dei canali DMA. Infine , ICH ecollegato il teno e ultilno componente del chipset, il Firmware Ht/.b. 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, Random Number Generator). Sfruttando il rumore termico prodotto da un transistori 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
e
: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. :I'~ Alla. data. di scrittura., 1a modalitA piil veloce disponibile per i dischi rigidi. ~3Con lao sene 430 questo integra.to era. interfa.ccia.to Bul bus ISA.
Bus di
sistema.
419
Hvello di sicurezza nelle applicazioni di crittografia, a vantaggio di tutti quei campi, come il commercia elettronico, che richiedono un alto livello di sicurezza.
11.6 II bus SCSI Il bus SCSI (Small Computer System Interface) e un 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.1
Principi di funzionamento
Lo standard SCSI [Gla90a], [Gla90b] permette il collegamento di periCerici eli differente natura, quail dischi, nastri magnetici, stampanti ecc., per i quali, ovviarnente, e richiesta un'interfaccia conforme. In un date istante Ia cemunicazione suI bus e consentita a due soli dispositivi
'Obiettivo: e il dispositivo che esegue l'operazione (il trasferimento dati) dopo essere entrato in cantrallo del bus. Solitamente un dispositivo SCSI funge da iniziatore a da obiettivo, rna esistono apparecchiature in grade di ricoprire ambedue i ruoli. Sui bus devono sempre essere 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 • ... n trasferimento 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. ~4Esso deriva dal bus' sviluppato dalla Shugart A.&sociat.ea -
it primo c08tnlttore di floppy di~k
denominato SASI (Shugart Auociate8 System Interface) e divenuto in breve tempo uno standard industriale de facto. Quando 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". ~"Nel caso di singolo host si a.rriva. a. un totaJe teorico di oitre 14.000 periferiche coUega.bili (7 x 8 x 256).
,I
480
Capitolo 11
~I
,'.,,,' .
HOST COfItmllore
adana!.
""' SCSI
•••••••
SCSI Dl~
rlgldo
0_",
(Ana a 2O'Ie portll,u1che per control lore)
(a) 5ingolo Iniziatore, 5ingolo Bersaglio
"-~)~ J ~;:::~~t~
.~ti~~i: ,:~::~~~ ,
,'::~4:,~~i
,:)!~;.s.t
,:;ni~'~
E] ' -
-,~;,.::.~.
"":~·/'l_
HOST
"''''',.'' bus SCSI
SCSI
!J-,
adattat. "
controllorll
SCSI
":tl~: :•.\:;"r;~:;:.
•••. L.J
.:t[~~
• •••
:-:>~;1J1
• ••••••
<:J~\i:
conlJoIlofe
(b) 5ingolo Iniziatore, Multipli bersagli
SCSI
• ••••••
.
/4i[#
,,~:~;~~;;; ~ ~~
:
.;:'~{: :3~
::.~~ ~
E]
•. ,,'~:.'" .--",,1.;'" ' '-'''", .". ,;::~
HOST adatIal.
.:::#\!~
b"
I
'h
controllo,e SCSI
i'! .•...•• ('1
conlrollore
HOST
SCSI
• ••••••
contro/Iole
adatlaL
SCSI
,
• ••••••
(cj Multipli Iniziatori, Multipli Bersagli
'.,:,:.;;.",
~it
'1
{~~J
":'!.jit "1:~..
/i!J.~
'~.::::S1
~:'~:7'
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. :·,'rw Ai massimo suI bus SCSI possono essere collegati fino a 8 dispositivi (controllori SCSI 0 "":"'1't ~' . :t!i~ adattatori SCSI). Ovviamente i periferici devono essere compatibili con i controllori SeSt
. ;':!~'
'~~~'i
:)'{it&
. ''-''t~{
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 ·"i si rjconnette all'bost per concludere la transazione. S:~·f 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 .:"~. ;"i segnate viene delerminato daUa lensione presenle su un singolo condullore riferita a <~~
/ ':;~;r ' ' '0
27 Nella terminologia SCSI, host
e chi comaoda I'esecuzione delle operazioni , generalmente la CPU.
.'1,'" '; .:("<
.::Jf;
".-.. ... ,::.""
.:'"
'. .
1-
!i;~\i~r'
", ..,.. \
I\~I~"
"!;i'"
I'
I'N·
.
Bus di sistema
•
,:,'<'
-:.J:' ,•. ~.l.,"j _.•
•
481
-
•
~;'i·'r.,(
,'$;:')5r:y.... "
J-
~~~f~'~-·,:'
massa; nel secondo caso per ogni segnale sono necessari due conduttori, e il Uvello logico viene delerminato dalla differenza di polenziale che esisle Ira questi. n bus in J·~S~ :"-:>" versione singola-terminazione non dovrebbe essere lungo pili di 6 metri, e dovrebbe
..:t.':';
M{:~.:,>; \', e~sere u~ato per conne~~ere 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, t.l,"1:.'~ . 'the permette ai dispositivi che ne 80no capaci di adattarsi all'una 0 all'altra confi~;i~.~ :~/,', '·gurazione. Ovviamente La versione differenziale ~ pili robusta e mene soggetta a ,:,.....~, . :.'.,. f . ~ir·":'·:' mter erenze_ :;~';.~~;'~'" n bus efisicamente un cavo piatto e1a causa delle frequenze in gioco1i conduttori .::,.,:;:,,~:, ," possono presentare cemportamenti irregolari, con fenomeni di riftessione del segna.le ~ 5~1,~::!,,: e di disomogeneita del carico elettrico. Per minimizzare l'effetto di tutto cib si usano 1~;\~Jf.1/':" du~ terminatori di linea a.i due e.stre~i ~el bus. Solitamente un terminatore 8i t~ova i:~i,\r~' all'~nte.rno della scatola che contlene il slsteto:al mentr~ l'altr.o va connesso all1ultuna # ~'''\'\ penfenca della catena. Nello standard e preVlsla una linea dl pOlenza (TERMPWR) ; ;:,:;~f];'>!~',. ' che fornis~e tensione aile reti resistive dei due terminatori. ~ !:;~~t:::i L'indirizzamento delle periferiche edi tipo logico anzi~e fiaico. Cib permette, per : esempio, a un conlrollor~ di un disco SCSI, di. mappare i sellori danneggiali a livello ~~'&~N~\>' hardw~re, fac:ndo apparlre aI SIstema osplte il disco come una sequenza contmua dl ~ d~~~:J:~'':;' blocchl "buom" . __." f .•
( ft4';:5.
-
I-
1-
-
1-
\ I-
\I -
~,!.;. I' L' .-':.,:, eI'~"'" ,~.~ •. '<'.
"_';:
~
..
,~" ..... 'f,A",(r..:.~,
•
. .,;\.,-.:
, ''1"',''.:''':"
1:; r.i:~;~;:':'
1-
11.6.2 I segnah SCSI ~
J~'J':' n bus SCSI ~ molto semplice rispetto ad
altri bus. Prevede infatti solamente 9 linee tr~~ZtV:'.:';. per i dati (8 bit dati, indicate come DB (0) - DB(7) e un bit di parita1 indicate come f!}:;:f' ,,: DB(P)) e 9 linee di controllo. Apparenterilente anche il prolocollo sul bus semplice. ~1 ~~:(;(;~:~, La sempl~cita deriva d.all'intelligenz~ri~es.t~ ai dispositivi SCSI, che ~~ fann~ carico 1~j:~~>.,;;,.:. della gestlOne del traffico sui bus, del perifencl e dell1accesso alia memona del sIStema. '1 ~t~<, I segnali di controllo sana i seguenti:
..
'
',~~~}~.,:--
w~ .t!~~t.
t
~,
e
~,e'·,l. ':.i'l;' ::'
i~~;~;~'~'"
.
(b~sy) A~serito ~a
d~
l~
pe~
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 pro d0tt'1 d at. d'tSpOSI'1"IVl.
SEL. (select) - Asserito nelle fasi di Arbitraggio, Selezione e Riselezione da parte di &: ;.;'.{+.;;,: .: un iniziatore 0 di un obiettivo. Anche questa segnale e wired-or.
{i ~
)I
-
I-
)-
,." .
!~m-!;;'.
~~ }:F;:~>':
i~g.
~!~ !'}:":.'" .
."
',*' ,... / ....
i'} ;;.'i: :~~
':;",.,.. ,
rli ~'~'!:"
01.; .;-
l
",.''' .', '. <>r ,.', ,
;'~,'"
;~' ,< '.• "
.\;1.(:,<", ", ',,
.-.~
,''>f,[' ,'- :t.
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
ft r;;:·h:?
.:.'
-
.
relativamente all'iniziatore: asserito alto indica ingresse per l'iniziatore, asserito basso indica uscita dall1iniziatore.
MSG (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.
1J-
-
I I I I
:
-
-
I \'
I !
\ -
• •
•
.
Capitola 11
'1
~r~
,~
'
,.
ATN. (a~ention) - Asserito ~all'iniziatore. per far pr~ndere a:tto a un controllore che \~ : il pnmo ha un messagglO a esso destInato. In nsposta 11 controllore puo aHora r·,"M, 'r richiedere il messaggio attraverso una fase di Message (Out). <;~~"" , ".11,_
I I I \
•
OQ'T'
(reset) - Segna.le wired·or. Puo essere pilotato qa qualunque dispositivQ. E \~! ; ~ato in genere all'avvio 0 da un iniziatore quando jl dispositivo selezionat9 no~ ::';-fl~~~t nsponde. ,.,,'0,\1 f ')%~i'~:~
<#,f{~ ,
~;~~~i:·
"!:'*~~ :
n bus ha 8 distinti stati detti
, ,,;(~1 ~
:;;:~; k
fasi operative,
1) Bus L 1'b ero', • -b-Itr:u:rVlO' . 2) ru: . -00" , 3 SelezlOne'
4~ R.iselezio~e'
;(:~~~ ;
r.,~ ~
,::":"
':-li'~ .(\ll"" rl.: , ,'. ~Il;
:
.~,'t' .',:,1
· ' 5) Coman d 0, 6) D atl. ', 7) Statoj 8) Messaggio.
.. l~~H i ",:,,'ilj: "r"'l!~ilt .,,.)~~ • ", "'.t"' "
·f ~
.",,~
,'~
~'Nk~* ~ ~",;7. i' )i
t
Ijf'~~'~ ,
i
;;fl ~
Le ultime, quattro BOno " Ie [asi b di trasferimento dell'informazione. n hus e Bempre , , '_1: ' . . ,.' '!Iii' w JD,JZJ~to alIo stat,o di BUB LI ,ero, e C,l ntorna dopo un ~es,et,. Nella fase .dl Bus ,dE.i~ LIbera il segnale BSY non e assento, n diagramma delle fasl di FIgura 11.35 illustra ,.~~~~. ,r ., d'1 f ase.· 1e POSSl'bili' t raIlSIZI0ne ' "cl· •~ ,.'~ Un s~ema puo ~ss.ere: .(a) se~za ~bi:ra~o; (b) con arbitrag~io, N~l primo :i~1:'~~.: caso non Cl sana Ie fasl di Arbltraggto e dl RiselezlOne. Normalmente SI prefensce non .+·J~)rr ,::.;'It':l.~_'!f avere arbitraggio nel case di un solo host e un solo controllore, in modo da velocizzare ':~~1f~' Ie operazioni. ' . . ":i~~tf~ Per spiegare il funzionamento del bus e in particolare Ie fasi di arbitraggio e '\~~~ selezione, oecorre precisare che ogni dispositivo suI bus SCSI ha un suo identificativo '.~;~{]~_ (ID), che entra in baUo durante queste fasi. Poiche i dispositivi possono essere a1 )'~:i~\ massimo 8, e stata fatta la scelta pin ovvia: l'identificatore e rapp~esentato da un bit, ,~:t;'~:l ed e trasmesso/ricevuto su uno degli 8 bit delle linee dati. I dispositivi hanno tutti :'X~,:: dif£erente prioritA: il piu prioritario e quello identificato da DB(7), il menD prioritario::~! ~ quello identifi""to da DB(O). Nelle [asi in cui dispositivo vuoleJarsi riconoscere deve assenre (portare basso) il cornspondente bit delle linee del datl'B, '('i;~I"~
"·;1
..~l'·~l~ ~ ,,'
I
;''1''j Fase di Arbitraggio Ba 10 scopo di assegnare a un dispositivo SCSI il controllo .".'.'M' .,,~,
del bus. D dispositivo che acquisisce il bus puo assumere il ruolo di iniziatore 0 di obiettivo.
,r:;::'>1"1
,-..... 1 ·""0' " ,'.f .
',:,<.7.
""~J
"', J' ,
28n bit di identificazione e anche detto indirizzo SCSI.
I
"
'~!i'.l'i:t ~,
I •
.~
ACK (acknowledgement) - Asserito dall1iniziatore per famito dati in risposta a un segnale REQ.
11.6.3 Fasi del bus
- ( -
482
:',i l~ · ""I~'I) ,.~"': ... ~ ·
'.
~"
"
·!fl' '; !'" ,~
..
-.--
~'~
t1,.
;~','1..
p,.f.i:~i:: ·rtJlj'~ ".,<.,
Bus di sistema
1I,Jt"!,::,, ",
r''''' '
.. '. ~ITf~'l:\
483
~
~~;}~~:'"
/WXensioIlOOre$8t
~~'{~i: .
I
.,t~'I:,:·
:~~;:,~/,:
r"~:<'.,:',,,
Acee,- -'
'iO
SELE2JONE
BUS LIBERa
I
I
lase di lra!ilerlmenlO intormaliolle: COMANOO, DATI. STATOo I.1ESSAGGIO
"r"",
,;i:'~:,;~;,
.
t~:':'~;~
".
aUSU8ERQ
°
SELEZ10NE RISELEZIONE
ARB1TRAGGIO
QYldslasl lase dl uMlerimell10 lr1fOl'maUlne:
aualsja~i
,L't':\'~\~
'esel
COMANOO, DATI, STATO 0 MESSAGGJO
;-:\!J~t:; - . (a) Fasl SCSI senza arbllraggio
(b) Fasl SCSI con aJbitraggio
f~\""i . . eli del b SCSI L [ eli b' ., . -, . . ,~?~},," ".Fig~ra 11.35 Il,~a,graroma stato, US , a ase ar ltr~ggIO, ~.opZl~n,~' teml con.un .5010 1,D1Zlatore poss?no eV1tar~a, rna. e comunque n~cessa.na nel ~lS~eID.l che usa.no
·::.~r~:>
,.130 fase ill Rise1ezlone. Sosta.nzla.lmente Cl sonG tre macrostatl: 10 stato dl Llbero, 10 stato :r;,?l~/,"-'-: Arbitra-ggiojSelezione e quello di trasferimento del1'iuformazione, Un iniziatore pub svolgere ~k,,~t: solo Ie funzioni ill arbitraggio del bus e eli selezione di un particolare obiettivo, mentre un k;::~'~< obiettivo p~o richiedere it t~as~erimento un c,omando, di u~ blo~co dati, ~el~o. stato 0 di ;ifi<~ un m~aggto: Pub anche rl~ledere l'a.rbl~ragglO del bus e nselezlOnare un IDlzlatore, allo ~~{,t;',,;: ..,:,. scopo di contmuare un'operazlone sospesa ill precedenza, :',j"..:j.:'>'I~ "• . .i:''"l;"~'';''
d:i
<::'
I~ ....,~ .. :to'!>.", 1;';" .......-'
~f!".r.f,
1. II ~ISPOSltl,VO~e lll~ende acqUlsrre il _bUS att~de che esso Sla libera (BSY dlSassento), qwndl assensce BSY e pone il propno ill Bul bUB.
~1~.~k:I~:·' "
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 .
~ I';,;' .
i
., , .
:~\,o:;: t\,t..",,; ,~,,,;. , ",<,,.,,,,,,,,, "")' "
,,'~1'"''''''',
.;~(,(~':';:"
.'
i~~':: "
3
w:IjJ;'''''''' ; . , ~~.-
..
.
.
.
.
n dis pOSl't'IVO Ch e vmce . 1a [ase d-1 ar b 't' . SEL . 1 raggIo assensce
r'i11:(:"
"...., , .. 4. Come corollario ai due precedenti punti, ogni dispositivo in arbitraggio si ritira immediatarnente (disasserisce BSY e ill) se riconosce che SEL e stato asserito
~;~~\,i,::\"::
'\~~~~i~:::.,. 'Ii'!gi~':-'-':'" I '''';''l'
(da un altro dispositivo, ovviamente).
•
';~~~~~:'~
~~::'::~ Fase di Selezione In questa fase un iniziatore seleziona un obiettivo allo scopo di f-:::i~r,." inizializzare una qualche funzione che il secondo dovra svolgere. _...:: In un sistema senza arbitraggio ·l'iniziatore seleziona l'obiettivo semplicemente \~~~~t asserendo il proprio ill e queUo dell'obiettivo che intende selezionare, e asserendo !.;ri:i~;' inoltre SEL. In un sistema con arbitraggio la fase di selezione inizia con BSY e SEL ~~:~~.<-;.-" asseriti dall'iniziato~e che ha vinto la contesa (vedi sopra). A quel p~to: ~~.,,~.~~, a) l'iniziatore asserisce il proprio ill e quello dell'obiettivo suI bus; disasserisce :;ri·:.> BSY e I/O (a indicare uscita dall'iniziatore) e si,pone in attesa della risposta. ~ ;;;~" dell'obiettivo; ~ ~..,.,..,.. ",
"
1
I
".,~
. -"
'j;."<' ~.' ,.".; I,· ' -:;1". .;••'1,.,',
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;
1:,' ~r':::
1
.,~-\'
l.,\"i." "I,·.
':'j!;\"~' " ""1",,..' ..,' ,
, "',
~ ~~;:' .' ~',::' ,
29Si Doti che, a. p;;u1:c i dettagli pratici, il meccanillffio e quello deU'arbitraggio distribuito parallelo ) :\:;~~. '-,""" ," ' ,:. (CIT. 11.3.3). ,-,,' " '. . 30L'obiettivo in condizione di determinare l'identita dell'iniziatore.
..
'
'; 1~ j:, .-
.,'l,,''';;'' ,.• , v,!_~_,~"
.;-,"
":';"b' ,I ,
,
. •. ~.t':"I: ,
e
484
Capitola 11
'...
,,~
,~'i ..",
.;:,t."
-~.,!\!
c) }'iniziatore che vede torn are BSY asserito, disasserisce SEL e i bit delle linee dati :·~t..t:; Alia fin . , .. . . >~~r~ 'j e cil ~~est.a ~ase, 1 oble.ttlYO ha il completo cantralla del bus ed e respon- '.\t"Jro: sab1 e delle translZlOru di fase per il resto della Iransaz' _ .:~~,(:,;~~ lone. " .~~~p;z~
..
Ri~ele~io~e La
fa.:e di Riselezione ha questa scopo: un ohiettivo av~e nec~slta di r~cox:nette~~l a ~ iniziatore ~l fine di continuare Pesecuzione di }~~.jfg un operazI~ne (che nchiede pill. p~l) che e Btata In precedenza sospesa dall'obiettivo. ':,;':;t~<,fy La sospenslOne b~ ~om~0:tato. il ~tor~~ ~e1 bus aile stato Bus Libero e in questa fase '.>;'~~~ potrebbe.ro esserBI lDBerltl altn disPOSltlVl. '. . :,~~?~~ . La nselezione e speculaxe rispetto alla selezione, 1a differenza sta nel fatto ehe essa ')a~ Vlene com~data da un obiettivo verso un iniziatore. Anzitutto l'obiettivo cleve vin~~,)~~~1,)~ cere un ~bltraggio, La fase .di ri5~lezi?ne ~izia e.on BSY e SEL asseriti dall'obiettivo':. \~~~ che ha vmto la contesa (veeli la rase eli arbltraggw). A questo punta: ,.z~:~1; '. ' . . . . . ,':":',.}~~~;! a l' i ' ettlvo.dlsassens~e BS~ mantle~e ~EL ~sento, asse:l~e~ l'ID dell'mlzlatore ;".~r0~~i (e iI propno) e assensce I/O alto (a melicare mgresso all,'miziatore); ~~::~~~!~~
Fase di
) O?
a)
P' ..
'.
":,,,,. ~·'13.1
InlZlatore nconosce di essere state riselezionato e risponde asserendo BSY' ' ::.::{~j~I"':~ . I . "·,:~;·.' ......,:;? " b' IIed d BSY . . . ',~.c~r..' l' a ) o.Ie IVO v en 0 assento 10 nassensce (mantenendolo tale fino a ehe non ':;'j%~{~~!:' declderZl.elirilasciareil bus), edisasseriBceSELj :.~'/~t
,. . .
.
"
.~1~~:1:
.
:.?:t-m: t.
a) I ln1Zlatore vedendo SEL dlsa.ssento rilascla BSY.
, ·,i:\~~t.';) I
'.:.. :;{o<'l~,~
. d' t ~. . )'.ii~""* aSl 1.,rasj~r~ento.del1'infor~azione. DopoIaselezione'orise1ezione,seguono3t1~: una o.pm f~l d~ ~ra8fer:mento dell mfor:naz1one:. Per non appeaantire 1a trattazione,"';~~~~ spendlamo 11 rrununo di parole necessane a eaplrne 10 svolgimento per grandi '!inee ~'~-.\;~J: -d t· ' ,., .~~ Semall , en rare ropP? n.el etta~ 1. . . .:,,;!;~~ ,D~~te Ie ,fas.1 d~ trasfe~lmento. dell'mformazlOne, BSY mantenuto asserito ,:,:"';"~~:~' dalI oblettlvo. L oblettlvo us~ I segnal~ ~SG, C~15 ~ !/.O. per definire la sp~cifiea faSe. :.,:~::~~~j Normalment~ un trasfenmento di mformazlom lD1Z1a con una fase di Comando, ,:~:;;;! .. " ~on la. quale 1'0~lettivo ott~ene un comando dall'iniziatore. Nelle fasi Dati31 si ha" :/,t~~~~ I effet~lv:, trasf~runento datI. Con la fase di Stato Pobiettivo invia all'iniziatore un '~'i~~!& byte mdlcante il successo 0 il fallimento del comando Infine eUe f . M . ' , ~~~: viene pass~to un messaggio tra i due dispositivi32. .. , n as1 easagglO >,~:~f: Una tlpica transazione SCSI consiste in una f e d d , . , . ·'-:;~~~.. ti' Dati seguitadaunafas eliSt'a.te d f M ase .om( an 0, a una sene .dl.~asl ,::,:.,dt..' . .', ' .e . e a una ase essaggIo durante la Quale l'obiettlvo ,,>".li.;:~~ I~vla 11 messag~o obbligatorlo Com~and Complete). L'iniziatore pub indurre l'obiet- ,';~~"~~' ~IVO a entrare In una fas~ ~~aggIo (Out) e ad aecettare un messaggio, asserendo . ''"~~~*~] 11 segnale ATN_, InRne, luwaalore puo anche comandare II Reset det bus tr.mite i1 • ?:i~ segnale dl RST. .'-:;,~-?;;1f.' . '';';''M F
e
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.
{i~~!5
'~)?:i-t
.':/:1l!l'i;;.:
'. """,. '::~
.'
J
: '!I'.;i1,.1 ':"':.....~ ·.1~,r.;:V
',,"'.'i:f;i1;.-
'_·;'~I~ ':,~l~ ~"."?j.
~~",
..
._~.~~;:?
1
,,~,~.;.J '
::1.lf.'~:V<, .
'~'/)lr'"
,
)~~~::'~:',:':". ,v.:",. ''i>W~':'' h~~ ,-:"
Bus di sistema
485
r.
',~'i\fl':'~'"'''' "I~"""
;~~~~):~::'
I byte costituenti i messaggi di comandi e 1 messaggi dati possono e5Sere trast>:<~:;,',' feriti si~ in m?do sincrono cbe ~incrono . .Nel trasferimento asincr?oo ~e~e usate il k~'~\" ;'~"" meccarusmo dt handshake traIDlte la coppla REQ/ACK. Quando 1 datl 51 muovono \"',~~V,," . ' . . i5~"" ~:;J dall'i?-izia~o~e. all'obiettiv?, quest'ultimo assensc~ REQ quando e pr~nt~ a n~evere ~';i\: ". i datIl e 1'1IDzlatore assenBce ACK quando qUestl sono suI bus. L'oblettlvo dlSasSe't:~.;~~':, risce REQ dopa .aver. ~emoriz~ate i d,ati. e ~. cons;~~nza eli cio. l'iniziat.~· l'oblettlvo ha poste I d~tl ~uI bus? ~ ~CK mdlca che l101Zla:tore, Ii b.a memonzzatl. ~tl~'\"" . Com~que, se l'oblettl:~ e l'~latore l~ concor?ano, SI puo eVlt~~ quest~ m~c .~~k ~ .camsmo di handshake suddlVldendo il trasfenmento lD finestre teII!-porali. L'oblettlvo 'l·~~;~5.,;' commuta REQ per ogni byte di dati e l'iniziatore deve commutare ACK 10 stesso ~~~{/,'~. Durnero di voIte, anche se nessUllO dei due e vincolato aile transizioni del segnale ~(i~.(.~ ;':' dell'altro ~he veng~n~ con~eggiate. n,conteggio alia fine cleve essere uguale. Si ha ci~ ; ~:;;>:,.'" un trasfe:unent,o di tl~O smerono 10gIco., . . .:i~·;i;\,'" In Fl~ra ~1.36 ~~~e mostr~ta una tranS3ZlOne c~mpleta sui bus SCSI, elOe una i-'~~>~.:. sequenz3 di fast che InlZ13 e terouna con la rase Bus Libero.
.
;:..
·,t~· :''''
·ir~\:<,.·,.
BS
.ijY,l;'(";·.
SEC
'''b.·.' ",h,,'.~
y
':!,~~;,::",:
_
I I
I
~
I I
I I
1
il~i;t;::;::j.::~"C/D:
(~'~~1r
I/o:
.'~f,f'li~I'll:'!'
I 'L;i1t{t:\.,',', '
~~\..;';::'" i~*i1...:;t· :~¥~t:..
: ."''(;;ia, "v,
~ LJr~~:\
MSG
REQ
\\tM'::}'}" '
.
,
'V:f4:f~/;(? ' ?~~~\:..'
..~'S:!( ...i
I I
I I
t
1/ 1 I
\
:
:: I I
I
I
1 ACK:
I :
I :
i m: RST
:
i
I
I I
I I
~
I
BUS
I
::'
I I
~ \
~l aERO
A
I
:
I
I,
t
/
I :
~
:
1
I I
I I
~
I
1
I I
I , I I
I I
\
::
r~j
I
\
I!
~
T
I I
I I
I
I I
CJ
r
,
(~::lI,J':O)
II
I
I I
!f-";IC--
I I
1
:
I
"
I
I
~ \J
COMANDC
I
I
: U MESSAGGtO
:-
5;:{'! " .. ,. ,
:i~ :,~~'~~r, ,:L.:", ' ,~,,,:!~,,,,, 1 ,J' 'I .;.1
J.
~ . :~'i;~:;.
V
'I .,..
-: ... ~1.:"""
~ ·:*;~k" iif&~'~
1. •
!-
IN
STATC
un host, La. transa.zIone presenta. una Case di Arbl,traggIO e una di SelezJone, CUI seguono Ie ~}Pt~':: .' ~ue ~asi di Comando e. D~ti (In), che potre1;'bero esse~e ripetute pi? v?lte. ~.a .t~ansazione ' ''';::':''~'''' 51 chmde con la trasmJSSlQne dello stato e il messaggIo finale che mdica all mmatore che ~}J£~";,',: l'obiettivo ha terminate, A questo punto H bus viene rilasciato e toma nelle state Libero ~ f:~:t,<' (BSY disasserito).
' 'ri:~ ~: " ").., ,.
-
:
: ':::,:,~~:.:'"
~~R)~~\'" ~~;~t~:, ~ ;_j",",.
II
M rt:"\-..J I ~' 1 1 , __ I . I ~r ~ f--ij--
I"
:
t
I I
~ j :
/
I.
:::
~I
I I
•
\
I
u:' t
:~
I
I
f.
•
I I
?
j
SEL.£ZIONE
ARBITRAGGIO
I I
\1
:
I
ATN
I I
~\~(;~\' '. . . (... lpe-tI,J"'O) . ., . & :~i]~';:: FIgura 11.36 Una .transazlone SCSI. Potre?be ~ere l~ lettura ~ dati ~u disco. da parte di
t
I
,.'
~1~w:,::-:.'
~
-
\
)•
) .
•
11.6.4 Un esempio di operazione suI bus SCSI
(
Per meglio chiarire il funziona.mento d~llo SCSI descriviamo schematicamente il complesso delle attivita. che si 8volgono nel sistema, prendendo per esempio un'operazione di lellur. da disco,
I
J-
'·~l~.ioil·
•
'''~
~if
~~,
-
I - , -
486
i@
~
Capitolo 11
;,~f.tl'
I .J;
IiA~;1.r
r·'~!
1. Inizializzazione dell'adattatore su host:
,yk~~·
__
·~~,t
-if:
~. ::'~
-
I -
! -' l
•
-
a) il programma. costruisce tre aree in memoria: (i) un blocco per i dati; nel :-·_~:r~· ,~:~t nostro c~o ~a zona vuota c.he sara. riemp~ta c~i dati let~i; (ii) un blocco :;';~~~~ :~:f~ per descrlvere il comando33 j Del nostlO caso il codlce operatIvQ del comando, -~q~, '~}: l'unita logica interessata(detta LUN), il numero di settori da trasferire e iI' ?t};"~~j:: settore cil partenza; (ill) il byte di statoj ';";;il~2J'
," '; 'I{' .t: ... ~
r ~"
"J
,,-,,'/
b) il programma scrive nei registri dell'adattatore gli indirizzi dei tre blocchi .•~-::,~~~ ~.t < ...., .. . .. ', ',c I sopra menzionati. ,.\_"., ..l.( ..,,;'~"'~l.·. .,;.~,'i:." '/!;, '~;I .~'<-~"': «,,~o
.~:.
... ,,~.~")
".;,
~;;~{A'1t:~
2. Inizio fase esecutiva:
_, _,,::!1!' ;t"
.:~~' 1t
a) il programma trasmette all'adattatore un byte con l'indirizzo SCSI del controllore segnando l'effettivo inizio dell'operazione SCSI, in quanto fa partire;:~f:~' ~;\ l'adattatore che tenta di entrare in possesso del bus; :.:\f~! m: .'-' /'" .'
•
r
•
- ~ • •
• •
•
• •
d!
,.
'
~"'.'"
,
""'
.Z' ":"'J. ~ IF :.,,?9}~ \' \+2 · """"'," . ...... "1' ...",. ..,'~'<':;;".'" ,-,,, .. ' .. Y,t-
:~.,;:.,.,.t
3. Arbitraggio del bus e sele2ione:
j
I
I I
·' l •
,
b) da questo punto i .programmi suI aiste~a host possono disinteressarsi di 1·:;t~'.( quanto accade sui sottosistema SCSI e dedicarsi ad aItre operazioni. L'adat- ..~~~: ~0' tatore assume it ruolo ini~atore e il cont~olloredel disco qu~llo di obiettivo: .::~'""~~~ ~-¥ La fine delle operaziow'sara segnalata al SIstema con 1a modifica del byte dI?71~~~1~ stato . "':~l\lJ'Y~ iOl .",' ,-" .• tt· . --/
I
•
.:1 'f.':J
I
",
~.
a) inizia la fase di arbitraggio del bus SCSI: se l'adattatore sull'host perde . , -, ' l'~bitraggio deve attendere fino a che il bus SCSI non' nnovamente libero; ,..:..:::;'.: '" ~" "4.
e
'
.~".,.~ ..,., .•~,
b) se l'adattatore vince, viene selezionato l'obiettivo prescelto. 4. Invio del comando: a) Pobiettivo appena selezionato riehiede un comando dall'iniziatore. L'iniziatore risponde trasmettendo una sequenza di byte contenente l'indirizzo del bloeco di comando3 4.; b) da questo punto l'attivita. di I/O e controllata 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.
'
, "'j,~,,'''~,
,j}-".'I;,;I 'ii ";;':"" < I:. ,'-
. ·"""1' . ..."..""., g .'..
,
#l:
·"lj,~.\\
:,·W. '. i',', ,', "-' ; '.. ..";:", ,~.'
·.','
<»."
.,. • -N
~~. . c ~ :,'.:1'-,. • l~ . ",.~\ ;>''''1'' ..:;" . I·. ".
:
--"" .", ;!" · '-' , .,~.~,
"-"~ ' ..
"~" ' '",~' , . -~..
I'
· --.;:'tyJ · ,..J", " ''';_~":;>;:'\ :. :.-,·!;:/l .~ ",,'::- ill,~ , I "i[i1.-
.,
.:,~~
.'.
'U
.. -'""'"~ '; ';;-~'::.r1: i .".;3. •, I :. ,
5. Decodifica del comando;
~ .'~
".,.,~,., "
.~:
" .•
.. ~
'
,'·;c~ ~"r ;
·",..:,!j" '~"t;, '::: ,i .
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.
..~;-.,'t~.'· ..:';:'t., .~ 't:~, ~
''!i. .,;,.;"
~,)l
',
;,
'~'. ~ , :
... ..
. ,~ "",~,."
',
':'-":I'"''''~ : '~"'~ ~ .• ';~ ......, tI .,".'
· ',<.. <;.,
~
!
.' ','U;. ' p.. "''t "'~''."
~;'' ,
f.'"
,lNI'"
@Z;: .... :"
Bus di sistema.
'r.I,:'f'(',' ' ...
'.{I'. ;
487
·ill :,'• • j-
. I'
!~'.l; ...
·,'" . ,.
"
tj···
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;
f: ..
t~',:.-'
" :li;" :,;.....
~"(~:
,".
rt~1
".~'. .••
J'~"
t";
.. ,.., (,• , "
,:\'"
'.'
I\l.."
,~~'r,
b) sebbene iniziatore e obiettivo siano disconnessi, essi sono ancora legati logicamente: 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. coUegamento logico non ira 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.
n
~(L.',
""'\\ '
t.'S.·,
e
\\7:~':'
'.
:~~"
1:"'-'" :JVi , ''
6. Esecuzione del comando:
("'~I~"'" 'i:::~: '.
¥.~f~.:;~ ,.,:/ '
l>il"'~,,;" t,,". ' I '
at
punto precedente c'era stata lila disconnessione, deve essere.-qstabilito it collegamento fisico tra host e controllore. A tale scopo it controll0redevevincere una fase di arbitraggio e passare per una fase di Riselezione; 5e
,
'
~.,,(
""',
;'c '~':r'.
~r3~··'·1
F.2:;,~,,~:",. . . ~,· .' ... '.",..,", .,',.." ,·~·W~"·' .. (}~~
a)
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;
'.'
.. '
..
""':ip> v
~.~ ~:"J".
.
',"",." I
,,II"J',
it!~::."", . '~I,." -'.",,!',',-,,'
gil,'.....,.--,.·. '
c) se si rivela necessario effettuare altri trasferimenti dati per completare l'esecuzione del comando , l'obiettivo ripete i messaggi save data pointer e disconnect. Si Doti ehe il puntatore salvato a questa punto dall'adattatore e aggiornato in base al Dumero dei byte ricevuti.
.
~
,,,~,,
:: ·h'.::,; :"t.,',
'~ ,' .. "tI'. ". ,
I""
.' :'·vi~,I, .," " .
7. Fine esecuzione cornando:
N::. J.t,: · I ., '
~:'/'
•
~~t': " , ",':1f.' . .:.\('!·r ·I~: ... ,'-''- Il
";' "., , !p, ';' "" , '
...~'''''''.'". ",~
'~
..
.~.". ~
,
.",
J!). ," .~ _ -'-'','1;~," ~l.l-i"'_ '" ~I."l .', -jit" ..
U",·'\·
',{l,C:,;
~" .~:
i~"'!....
:"','" ,,'.'
~I
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·, b) it controllore si discoDllette da! bus SCSI e considera definitivamente chiuso il collegamento logico COD l'iniziatorej
.,. •
~
;".~h ..,:
..
i~'(''IT:,' ._,(.,,''' ···~tJ',·,
....
~;:;.
,·'i.,.:; .. ~ '!l"~,
'j;;', ~ -
'~"'" ,;~M:~ ,
:"'~V ~';.A' tIo' ,W·,'\··l;i, '.
~ ~
.:;..
ii;.,.,
!11!~'
'~',., p. , •. , ,;0' ';0-' i\' : ,.
.....
c) l'adattatore chiude il collegamento DMA con la memoria dell'host; 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.
4BB
Capitola 11
11.6.5 Conclusioni
::')li';O IJ bus SCSI un bus molto semplice dal punta di vista coslru~livo (un cavo piatto con:;;!11 .. relatlYI connetton), rna estremamente efficace. La complesslta mterarnente nascosta ,,;~~~,. oei controllori che equipaggiano i dispositivi e negli eventuali adattatori al bus del·, ,<,~~:~ sistema. Lo SCSI e tuttora uno standard diffusissimo per 1a sua elevata praticita di "'.';.t\¥'. impiego: ricwede al x:nassi~o l'ins~allazione ~eg~i ~ppropria~i .termin~tori. . Pf~~:l!! . Col passare. degl~ anru ha subltO. notevoh rn..tglioramen~l, m par~lcolare la dimen~ '.}~'i'ffn sl.one del bus del datI po~a:ta a 3? bIt. n maggIor grade dl parallehsmo al bus SCSI ·<=;~r. '( cit mantenere salda la poslZlone dl mercato. ":(:~i;~. ,
e
e
,,~~l~~
·':j"l~
11.7 11 bus PCI
,
",,~.if:~11\ ·.'!'l~fii,
'~;gk.~, ',
,>t
e
IJ PCI (Peripheral Component Interconnect) un bus a 32/64 bit, clock a 33 0 66 Mhz, protoco~lo smcr?no. ... . . . f:;(~J'~~ . Nella sez~one ?edicata ail'orgamzzazlOne del modern! calcolaton personall (Crr. 11.5}~~1. e stato desentto il ruolo del bus. Nella parte che segue vengono illustrati a!cuni ,:t~!if.I' dettagh di funzlOnamento. ,);;:f1\r. :,:~ ~
'j~~!:,
11.7.1 Principi di funzionamento
.:.~~; ·'1;';~
e
Caratteristica fondarnentale il trasferimento In modalit. burst (in blocco) di pacchi ",~.J<, .~."'l..:, di dati di qualunque lunghezza} determinata dinamicamente in rase d.i trasferimento. :·.1Ji '. ',;;' IJ tasso di trasferimento raggiunge i 132 Mbyte/s con clock a 33 Mhz e dati a 32 bit. ...' ·','';'. •,,: .• "u ,. '. IJ PCI comunque In grado di trasferire un dato alla volta. .. Thtte le azioni del bus PCI sono sIDcronizzate per mezzo di un clock} di frequenza .''·""';'1 -P' ." . compresa tra 16 MHz e 33 MHz. Nella versione 2.0 il clock puo arrivare a 66 MHz. .·i~ ' ',' ,I ::;-i" IJ carnpionamento del segnali sul fronte di salita del clock (positive edge). ' ·,''':'[tr.. .
..,
\
e
,0",
e
','.. ' " ", , .",.
T:rasferimenti
'::~ :~:
Ogni trasferimento richiede:
'~,'~, :;' '.. '
.."
a) una rase di indirizzamento in cui vengono trasmessi gli indirizzi e trasrerimento; b) una 0 pill fasi di effetlivo trasferimento dati, con parallelismo a 32 versione 2.0).
n tipo
di
. . .·'W
~~'~'.~
:?~
·4~:"'·
p... .,~ .:'!'I;~)
64 bit (dalla , :'";!1" ','.'~"'. ,~ ·',":~! A~" 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 avern~ facolta; .' ,,""., 0
"·N.!¥ :', ~!
':::\~,~
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 ~CI, I'iniziatore e sempre il mcuter e I'obiettivo e sempre 10 slot'e. Viene usato anche iI termine "agente" per denotare il generico modulo, sia master che slave. che partecipa a. una. transazione.
""!' '. .~, ,"'~ ..
",.'
:;!~~ ,f"'-
'~, ',"
".').i/;; ..~;"l.
~l':: """ "
,
,."
.,
,, .-., :i.t:: ,
,
'
•. , ",
~"~'
\
,
,d;';~',
»" ~~'i"!'~?,:,' .II.", ~~l",,:},~.
"":1"1,··:". ,,<;e'
"'1~1)~;1~'!i '. 'itiA;':f' , ,
489
Bus eli sistema.
.,.",,'." ,,,
I-
'!;'\!!i -'.... , ,~~\;",p--' ,• ".
\iV"'s"~' ii~' "
~~~C:-'
inoltre il bus cleve essere a riposo. L'autorizzazione viene concessa da un arbitro
:~0{Kt:, centralizzatoj la ,verifica delle stato del bus e compito del dispositivo. Dell'arbitraggio %'i'f-,W" . si parla piu avanti (Cfr.1l.7.4), dopo avere esaminato pill afondo Ie caralterisliche
]-
. f.~~\~~::/. del bus. :)~~f>'" L'inizio della transazione marcato cia! segnale FRAME} asserito cia! master; il :t~~5.i~'~" segnale resta assento per tutta la transazione. n suo passaggio aila stato di inattivo ! 'l~\t;I~!( ne marca la fine.
e
... .
"~:;~~~df::,
.. ..
..
-
.
(l.;l~'f~~r.~r,:~ Fase dl mdlI'lZZamento La fase dl mdinzzamento. ha la durata di un penodo di ,1.'1i{:1[Pj~;' clock. L'iniziatore asserisce FRAME) identifica il dispositivo obiettivo tramite il , ~~~~}.;'" relativo indiriz.zo su AD[O ..31],e definisce il tipo ~ tr~azione~a esegu~e~r~m.ite ~;I;:l;'!f!. il bus comandi C/BE{3: OJ. E compito dell'oblettlvo memonzzare l'mdmzzo e 36 . \',~ ~,."{r~%;> , autoincrementarlo per i successivi trasferimenti dati i. ",j,~.I,:...,
',: ~~:~:f<:
Quando un dispositive PCl si riconosce ceme obiettivo} ~serisce il segnale DEVSEL. Se Piniziatore non vede asserito questo segnale entro un predeterminato penodo dl tempo, la transaz~one Vlene annullata.
I ~M;i~" ~, ~';:;~:~;i~'"
. i1~1::;:::.
.
.
.
.
_
.
.
.
'V; i;f;i~;::~;' Fase(l) datt A ogIll clock Ie .lin.. C/BE[3: OJ, pilotate dal master, hannofunzlOne di ., ¥tW~~:':': Byte ~nabl.e. Due segnali, ~I?Y e TRD~, mdicano se 1DlZl~tore e oblettl~o sono ~: i~~'{f:· p.rontl. Se ~ due sono pro~tl ~lene sc~blat? un date a ogm clock (trasfenmento ,iW~i}~~;5:~:: smcrono)} In caso contrano Sl ha un cIcIo eli attesa. .
:
~~'!> ~~Jjo~:~,~""
1- 't~~"''f,',:,. ,· . ,,
~~:J'l,\:.'~".
"C1~"~'" ,~,~.",,,,
...
.;. ,"" '.,,' ~":;';<:: ,,", •. r"""jIi" ," t " m" ::-,.." . -.. ~ i1
'! ~''''< '..!:"'.,
~', '"n,'r,:
"
1"·t .~.:,";;''.',l\~:. .. , m;,;,~-;:.~:~, \~'1;:"" ··l;;,;;","n~,~!..
.
l",j','t:'.!.,'"
~~.:\ ':. ' im:,r,·
'"'--""..n
. ,~~:~:tT .;,
h'i.~~~ ('i; i1:,:.;.,~';o' •
.:~' >,.~~
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' . ~ Ritorno alIo s~ato di riposo L'iniziatore indica che il trasferimento ~ alla fine disasserendo il segnale FRAME sul penultimo dato} quindi} dopa l'ultimo dato} disasserisce mDY. Quando FRAME e mDY sono ambedue disasseriti il bus in stato di riposo (idle) .
e
'~-',.",
.,
....... ,.
W;'ll' ;f':~"y(,:, ;'. f~;i/it: '. '", /u ... ·:" :112it-i ',~
I d' . n lrlZZamento
Per l'lndirizzarnento iI PCI dislingue Ira:
a) spazio degli indirizzi di memoriaj b) spazio degli lndirizzi di I/O; c) spazio degli lndirizzi di configurazione,
.•.-. .... "'1"' '(oJ.!;:!:',,:, ... n secondo e,,"cO'·.-';
.
',~il;:-'~'
e terzo si riferiscono comunque al sottosistema d.i ingresso/uscita. La modalita. del punto c) e caratteristica dei dispositivi PCI. La decodifica deg-li indirizzi· viene ratta dal singolo dispositivo. n PCI permette due tipi di decodifica:
~""'
!~",~f·~f: • t,"·i'. .." t >
"l ,~,,,. ,,.",
:.lI{~i":.-';~;::· ;rI~, ,~,~ "v" , ,~~. iti ;:.Y,b\_I'\;'"
' '
"l'. .."". ¥lif ~}M·;.i~:~! !'1 "":~.l;.' ~~t~, :itP~~,:.,
a) decodifica in positiyo; b) decodifica sottratliva.
' t .r":~,, ~,,-;..,. .... ,~,
'I "II,',.;.~'~., ,~:,>;,,,-:,,
~ -
, ",
II1I ,
I -
-
1-
\
\-
)-
,< '
~,,:;;,
)
-
::I'~""':
';,~¥'
,~ln~ _ ,.~·'
,"" ,,., .. .. "J" ";
; .' ,~"l.-[;.:.', .~ '';';',0,}:',.:.
::. ·.1!~~~1·:·
",,1 " '."'iI!'"" ' ".
.....
.~-,
'
,
36Si noti che se I'obiettivo questa. funzione.
e una memoria, questa. deve essere dota.ta. di un controllore che svolga.
\
•
j-
-
f-
j~
" ~~
•
-I
490
Capitolo 11
\
l
-
I
-
!
-.•..".,' " ·· ~~
l
-
... II 'f t-'i;' > L a decodifi ca III pOSItIVO e que a usuale: ogni dispositivo contralla se l'indirizzo carle :;·.~~t. ~ all'intern? del.c::mpo che g~ esta~o assegn.ato. La dec~clific~~ott.rattiva econsentita a <\~~Thr' ~ un solo dis~051~lVO ~ra tutti quelli. collegatl al bus. II dlSpOSltlVO lD questione risponde ~~~~*n: _ solo se tuttI gli altn nOn hanna rlSposto. :,,:~,~, . ,rj.,:;'I"~·' . .,.:-:' -; '" . · '.(jf~ :
·:'":t~- f ' \;~"'f~~~ -
11.7,2 I segnali del PCI bus
· ":;".,,'
""·'·:'X'~\'
,
\
SI:GNALI RICHll:STI lndirl:zzI
-¢:::ooi:-.
..
• dotl
,
'"•
cor.-trollo In'ltrf".. cclQ
" ...... o.rbl'tro.ggio (501.0 ..0.51:"r)
5151:",.,,,
I
T VSEU IDSEt
[ .• [ [
••SEGN"L1
TIS
US
"
us
us
us SITIS S/TIS SITIS SITIS S/T IS IN
SIllS
LOCK.
[N/OUT
SBQI SD N I
.'"
SITIS 0 SCRRI • 0'" REQI
G>no
"'-, RSTI
0'" 0," 0,"
OUT IN
IN
,." IN IN IN
IN IN
,'<~
··.......r,.'~"<
k:E-
US S/T/S SITIS
P,RRt
}:~*. , ". "i1'i';"l: · :'(", .Jl-:a - ?:·!Jr~l
~ PAR64 10:(064' ACK6"t
INICUT
'NT",I INT I lNT I
I I
I
categorie:
50DO
~:'~ii~~~i:. :~
-
•
.~,~\!
_,,'r,~ .. f ">'~<: ...:....;11
: "':':,!:-~., "",,;:,~;;~f'~ .... "'J:~""" ,,:·\~~,j(Wi
c ont,.oIlo irltltrf
0
]
]
luppor1o C(lCh.
.
~~:M:r:'
· '~IBJi: .':.\~~
·,·~<,f.l}:~i
,'~,.~;jj
T01 TOO
.<;~!
'~:;'1!:j~~
JTAG
TMS
· 6,~.;~H~
;~~~
Intltr,.u:t~
(lE(E
:;';:':h~j)~'
114')1)
TRT
Figura 11.31 Segnali previsti dallo standard PCL I segnali attivi bassi sono seguiti carattere "#"
I segnali
.. ;,,_.lk~. " ,., "&>t
ltst.,nslon.. 64 bit
COMPA TlBILE PCI
'I
.t,~... '.~~r,'" .
'.>,",~.'\:
CPZtCNALI
DISPOSITIVO
•
;~.~'..~~
In Figura 11.37 viene riportata la specifica dei segnali
•
•
',
-",
F"RAHEI TRDVI
-
•
, '" ~":l-:"~ ,: ~~~l~
..,"J-n
"'';'[:-1.:"
":>1~raf da! . ':';(~,~~:'
';~~
,,',;.~~~~-;,~ ::.:>~t+l
elettricamente definiti come appartenenti a una delle s eguent"I <:~i~~ "~ · '/<:0.c."{'
',;:;~)m:l
r:.f4tp
• IN : segnale di solo ingresso;
"<';I!"':,,~'
, ' ~.-~''''\'-''' -'. '-.
·,.-,,.,,,,,1-,,.
• 0l.!T: .segnale di sola uscitaj c.
r' • "'~1:l'~~ --'. c"·' 'I', .~L.
· '-;'!";if;,tt
· ~(._'i:,';' ,- ',';;!h, '·'iF-_,~g..
• T/S: seguale tristate bidirezionale di ingresso/uscita;
;·.. ~Il.j
'''·'~"l'';.'' •~.. "C"l'-,
• SIT/So seguale tristate pUotato da un solo agente per volta, Un agente che asserisce bassa una linea SIT IS deve anche asserirla alta per almeno un cicio di clock prima di lasciarla in terzo stato;
".,-".?£'d:
"""~''':: •, -.~ ..v;'
;
·
)
•
,
j
• OlD: segnale a collettore aperto (Open Drain), Come si osserva ~alla Figura 11.37 vi sono 2 classi di segnali: richiesti e opzionali. I segnali richiesti sono quelli indispensabili per realizzare una interfaccia
~:.~~
-'~,'$f:'''-~'+',
'., ;:.~~~1~~i' .. ,
•
1
· .... ' ""!¥.i '_~~f,"" .;
· , :.-
~' (
-
"
""~!i~: !
-
-
•
·
-
•
~ t:
i-
~,,?:!
...
.,,~z-:.~:
..
--\.,'~';~:;:"
, ,. "' " · ~~,~ili .......;.;f; · •. ,!-~{;':.,'''''!
• -. ,;"O,.;:fe"
':'.i~''. ":':!= t :'<. ~-( ,~~.
' •. ' •"5ti · ',":,."
,'.l~'" ' :f*1"
~
1.·~·
"~;'~~ .~I~".,
~ir""'" -~.';::' :"!(..
•
Bus di sistema
.... •\'-. c••• 1~'·:'~"',\ -',''''',:'''' ' ." .. .... ;~:,,:~~ , ·-.,,;.'t -. ,"'; ' ,.;;::"
".-
491
"
.,'.
>¥A ,:
" PCI.
~·:$~:i.'
In questa clMse compalono Ie linee indirizzi e dati :AD[31:0]37, Ie linee CIBE, il ~;r~;.:tl, 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 .;1~1,::t~",!" dell'interfaccia sono riportati in Figura 11.38.
_'.
.~~f:U',"'"
.,r...
,. f;-,1·~, ' 'q,."!" :~;~·
:"'.''i''.''
Segno.\e
'l:,"
-;·t;,:r:·;,~
Mo.ster To.rget
Noto.
,;,.,:, )".'<,
!J~,,,':~
;'>;i;'" '
:~~ :v"-ci"'" .:~;;, I""
,
,0h;\.r.:,,:·~·.I"<',r, .,
.. ,.
..,•.:.~
a-'~ ;'"}t';·".: "-'
t,., ".. :iti? >': ,,!., ,
<,'·~'f··· N·." ".
out
in
TROY
In
out
IRDY
out
,n
STOP
In
out
STOP o.Llo. tro.nSQzlone
DEVSEL
In
out
Device select
LOCK
In/out
in
IDSEL
In
in
blocco ell uno. risor"'o. Initlo.lIzatlon device select
~""":"'"
..
• .. ~'"
:" .;r~.
't;,·,'~.
J' ;'.'r\'~' . "'" ,.,'..'. ,;.'
~,'\',;
':~r.::,,~:,;.
,
FRAME
G
cIcio di FRAME Target reo.dy
,
I
Initio.tor rl?o.dy
-- ~ . ' Figura 11,38 Segnali usati per controllare i trasferimenti. I segnali FRAME, IRDY, TRDY
' ~\/:',
;'-;:~ ',\.
5t~,:1.'"
!Yt/:
;:;\~:,;l:i~
j~~~Y;:. ~:
:~;)':~',:,;,
*.
:~rt~"~, ;" ... j',./:;,::, '.,.-':''''',' 'u;';',f:(: '
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 (pilotato dal target) permettono di inserire dei deli di attesa, STOP e usato dallo slave per richiedere a1 master l'interruzione del trasferimento. DEVSEL'~ asserito dall'obiettivo che ha dec?dificato il propr~o indirizzo.per indicare di essere stato se~ezionato. LOCK serve a gar:autue accesso esclUSlvO a una. nsorsa. (~orm~~~nte la memona). IDSEL e usato come ch1-p-enable durante 130 configurazlOne del disPOSltlVl.
·-.,'Jo'~.1,,·. -'~i'
'."c
f :~z;tt·..
Nella classe dei segnali opzionali cornpaiono tutti quei segnali che non sana' neces;~\:j;~,;: sari, rna che devono essere impiegati se si desidera ottenere Ie funzionalita aggiWltive ~ ?~~ft.·-:' .rispetto alle standard. Preme osservare come in tale categoria siano riportati anche i ~ ·:~ti~: segnali'di richiesta di interruzione. Le fWlzionalita in questione sono: il cantrolla di l.j:~~:~".' parita sulle inforrnazioni l 1a segnalazione di avvenuto errore da parte di un dispositivo \\;~'.t . PCl, segnali di supporto della cache l Ie estensioni a 64 bit, il blocco delle r~sorse e .~' L, . I"unp IernentazlOne . d eI gruppo eli segnali (JT:AG) per 1'I tes t d el. eliSPOSltlVl . , 'PCI , 0 Itre ' :;'~:il'~;:'·;,:'."r aUe gia citate richieste eli interruzione. In Figura 11.39 sono riportati i comandi che p' j~~':" possono essere dati a un dispositivo PCI. '.'tj~.;' , ' .. ,',. ,/", ....... , '\:."< '.' .
....
~'\," ,',N__ '\" . ' .. " :,~, t ~:•.~.•"
'
'
.~
.i
.,. .. "; .
, ..... '\
j ,•. ~. " ', )':\""" ". '
11.7,3 Transazioni di trasferimento dati
.
:~ ,''':'''.' ':
:' •... <','
,:" .
,
~~,
.... ..
~ ,~.,
.......( ,
' ,.i~:~~, ~.~:-.
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
......\., .
\
: '~".-<<;;.
,~
__ . ,"
"..
"',
'"
i; ~\<":. ",'" ,. !- '.,,~.: ,•
-
t
\x... :) ,. .• ..r...... ~.~.
'"'~.,.~'!'
-
~"<;. J' ~ '!:f,\~~1'-
l..ljJ~~) ;, ,
'r./;;)/r' ," .
37 1 campi di bit sooo designati come [X:Yj: X
e iI bit significativo eYe il menD significativo.
segnali cbe in Figura 11,37 80no riportati bidirezionali, SODa in realta. unidirezionali, e cbe l'incertezza e legata. alia posizione assunta dal modulo (master 0 target), come riportato in Figura 11.38. 38B da notare che certi
m~
'
•
0
492
~'
Capitolo 11
(itl
',I ,", "
'1i!~~ .. ,',',. . .:,1 ,'rt :(,ft.11 ~'nll.;; "~':I il11"" :""':"" ·~ ,
;':']
,,"" 0 0 0 0 0 0 0 0 I I I
, ,, , I
"m 0 0 0 0 I I
,
I 0 0 0 0 I
,,
",n
"m
0 0 I
0 I 0 I 0 I 0 I 0 I 0 I
,
0 0 I
, ,,
0 0
0
0 0
,
Tlpo c:l1 co.....nc:lo Inttrrupt o.ckno"ltc:lgr SptCiOl cyclr 1/0 r,o.<;I [/0 ~ ..,tt r'5 .. r" .. <;1 rts,.." .. c:I 1'I.. ",or)' rto.d l'Ie,",ory "rltt r., .. r"ec:l res,rv,c:I conflg...... o.t:on rto.c:I confIgura. tlOn ... 11; .. _,",ory rt'o.d ....... t101 .. c:lun!-o.c:I<;Ir.. s-s eye! .. "'..""'.. n ... lint lin.. I'Itl'\Or)'" ..... rto.d ""'l'Iory "",1." nnc:l 1,,,,o.Uc:lo.tlP
--,,~
~! -.
•. ··';.lI'~
,:-:·"t4 ~
M
",,:t:tm ,),.:" .
f
~
-, ;,{~, 1
,
.,:~,~~\Kf. " ~.;. .~~. ~ .. .,.,,~ -~
.-\<·,t·g~, 'i . ~
;',',' .,',
",,'~ .. '(¥!J ~
."'1
,..' \,,'.,"""...'cr' ~ 1.. "::, .. ~,~l ' ':
.~"
~,,~
'
',:.~i;~l?1:,',. :: .: ::':~~a! .
'. .
:";i1:q~ l' "
"'~I' -, , " I I I ~ .".,', ""'1;\1 i' m ' ,f.,~1. ~t t,, · 11. 39 Comandi PCI . I comandi sono co diD cat'1 suIIe \.mee C/BEI3 : OJ durante 1a ··,--.c'l!!il, ·':·:(:i~ ~ , F 19ura fase .di in~izzamento, successivameIl;te , du:ante it tr~ferimento, l~ quattro Iinee hanno la,"1'~~ " l
I
,n 0
I
...~~,.~ll'lt ....,,'
'. t"I~
,.,,""-' .~--"
funZlOne di Byte Enable e vengono (rt}88Sertte per ogm da.to trasfertto.~!~, ~
.
.,.,.,.~ ·j'i '::.,\ 1{1" ' "r ... . . . .:~~t& r i
..
r1.1ascla 11 se~ale che fino a quel momenta aveva pllotato per permettere a un altr~ .;:~~~ ~ eli entrarne In contrello.· ":~:ti~', Le transazio~ PCI, sia di lettura che di scrittura, parteno sempre con l'~serzione J~ffiI~j'; del segnale FRAME da parte del master39 . n segnale FRAME resta assento fino ali!.;\' ' termi~e della. transazione (pili precisamente , viene disasserito sull'ultimo delo di cloc~ ~*~~. della transazlOne). ...)'~$1' . Sui primo cicIo di clock l'iniziatore specifica il tipo di transazione voluta sUlle·.:,~:'~J~~~ linee C/ BE. Al clock successivo puo cominciare la fase di trasferimento dati. La :i~:".· '~ sorg~nte ~ei dati (master in caso di scrittura, slave in caso di lettura) dev~ att~vare ~ ,~fu:~41(' , cornspettlvo segnale xRDY (x sta per loT a seconda della sorgente del datl) ogm (~'~:'''' ' qual, volta i d~~i sono ~di. I dati vengono trasf~~i su tutti ~ fronti. del .clock ~ui,'~~M'! , Cl:ua~ entrambl 1 segnali. di 1R?Y.e TRDY sono attlVl. Se uno dl questl e dlsassento ;~.L 81 Vlene a generare un ClelO di Walt . ;:'I::~:!T.!. .·,is". ,. 1~ .-=:;,r:jlf;,
'.:
<
.
La lettura In Figural1.40
...' "'. ,'" .
e mostrata la
,
. ~
temporizzazione di una transazione di)!k.. lettura. La transazione si svolge nel modo seguente: ' ~':;t . ~ ,";r::;,~.
1. Clock 1. La transazione ha inizio quando it master attiva il segnale di FRAME"·:;;~\m.!>~ avendo posta sulle linee AD[O:31]I'indirizzo e sulle linee C/BEIO : 3J il comando dl lettura. .. ';"1\!ll ;-!I'
::'j';l!il :n~
__ .. _
'.-":'.,' ~
'. ~';'-'F
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' linee AD (che cambiano proprietario, dall'iniziatore all'obiettivo). ~X:~~·' 'm " 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' ,.,~
:'j]i,,, ' ""'.' . '. ':.~ .
39 11 master deve essere in controllo del bus, questa richiede la fase di axbitraggio di cui si parla piu ':~1:~fl,~ . {'"'" I avantl.• ,...... $. -~);' , '"
.'.--
. '"I,'~
:,/,.
..;\.t~ .. ",?!J", • ;. "I" ~!-j'!
1.
'\1i:"'.:~" i•
0);,1&';
'1!r"
l<·r~'"
'.
Bus di 'sistema
Ilf,.\\. . ","'''.
.
493
...·\
,'". ili::"'~"'"..,:.' ","i-'·.
<"~ ~\1t,
!I'r~,.' .<:,~."
tt:r.:t.·'·',
;il!;~~:~':
-=-,-_.
""'''l: ,"
~"\~.d:.,,;
Adol
~:r··::·
Ph,.
1*,1;,.-:"
11,
fi!l,r;.~:".,
,"',w'
.•
CLK
~A·."
""''''r-\ '.
.
:;r. ... ,.
,
:~~~~" ~l,Ih,
IS
Ie
I
I I
I I
, I
I •
I I
I /'
•
I
1,1 Dt",o.2
I !I
I
I
1
~
I
a.......01
I
,
~
I
D:",,,, l hI
~-+""~ ~ ",.
:...--A ~
noll:>llIP
, ..........
1 ' 1
I I
"'i""
~ I
,
'/T'
l...l/
DEVSEL •
I
,
\ !I I I
, I
,
'.
!"' ' ' X+
"'t' En.o!t>1
I
~\:
•
I
(
I I I I I
!
I
19
I
: LJ ...+-~
1-.v
l
3
!
ott' EnG"'t
•
::
•
I
I
I
~
>-----V,A
I
I _ -.v
I '
/:: •
l
/
I I. I I • I I . I I
I
I
D",'l:o
T,.o.ns-f"co,.s
: I I
•
I
I
""o.lt: $'I:,."'cos
I
Figur~
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.
;·~.:>.·'
'~1;;,. ~i~l:~,~"
~';~¥'~'¥'i~
,flj~fil~S·.
'I~tj! ,~~~t;~··,··
<;."~f;': ,~,r.".,
'1'.\" ,
.
~~
"
..
.- ", ,;;: .'~ri:::~ ,.' ~.ii;'
~~i~::·
Jii~l'
..
#in.,"
-;
'.'r' '~
.
\'
'~,' . ,~,,~;> '" ~~\' i\~,~\ v,-l, :1°, .' .. I
~~I.~;;':'~
.' i~I' "'::.": •i&~T;;,." e"
,'J; ~' ;
\1'"
'j
.,¢.~ ~,.
~i r~~!?{"," )'i'
~
.
~~',.
f "~
'r':, . ~ . :' . ."V,,\
I
I . •
. 4. Clock 4. Essendo IRDY e TRDY asseriti, viene trasferito il primo dato.
~~1';':';':
:I' I" .; '.;<:
•
1.
~-tt;,."-
.;
I. I. l. •
I
,
•
\.
'!f\
I F'RAME I '
~",'" ,:~}Jj':'... "fit~~>
, ,~W:.;,
16
I
. I fRDYl ,
~e~l2,:::'·.
14
I
TROY 1
i.'i;1 ,'., . ' f'll.'!j('l;f, • .,"" ,', i~~~j::"
Ph<>.sco
I
,~"
~J~;;;,,~
..,-=-,....
I
-,
,~,s.t."'" ~.:,."" "":,,,-
13
•
•
I
C/BE
"'1"'" >i'" ,
Ph,." ..
Do~",
Vo.l"t
S"'o.~t
I
AD
";;1F?:.< .. ',~"., ',:l~·.'" fi"
12
.
Do,,,,
..
..
Volt
S~o~~
:f\ :f\ !f\ :f\ !f\ ' 1 U L ..J Ll LJ 'L ' 1
," .~".. ,-"\o., 1.( 1:" .',• ...'." r,"
-
S~o~E'
MI I:'"
"i.~? ~..),.+... 1"~"r;"
Bus T"'onso.c"'lon
Vo..'"
I.
.
e
5. Clock 5. La slave ha disasserito TRDY (perch~ evidentemente non in grado di produrre il secondo data) causando un cicIo d.i attesaj Del frattempo 10 slave mantiene sulle linee AD il dato precedente.
\.
6. Clock 6. La slave ha posto il secondo data sul bus e ha asserito TRDY. L'iniziatore, 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. 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.
, Fine trasferimento La fine
•
-
l. -
). •
~. •
1.
~; ffi
,
I
-
494
".Ir
Phase
I
-
-\ i
Do:t.. Pha.se
-
\ I
I
I l I •
\
12
1/\ ff\
!n
!n !n
t\:
l
L~
LJ
FRARE:
I I
AD
DE:VSEL
I
\/
I
'",
ITro.sferlnentl I
I 1
t
:/\
~
I
\/
I
\1
, '1'
'.\'. .. ,.-
'::'
I
,":/
\.J
· I'.!:""
I
!
:J i
I I
I I
I I
I Do 1:", I
1
1
Byte Enub\"s
,,
,, ,,
,, ,, ,,
,I
,, ,
,,
,, ,
,,
\
\lolt 51:0:t. In:nrlto do "tQr"e-t eo InIzlo:tore
}---1:.,.
I
,I
,,, :,
J..--
1
I
~
\
;-~-
I
: I
I:,
,, ,
,,
: , I ,:
I T..
: I ,,
Uttl"o.
'flU
dCltl1
~~~j;; -yn :m ,-,-t
, ··l;{ ';i' "1~ ::r,: ,.~f,!i" .~\. ',i~.:JI':~, ':~'
,-~-~( !~" \\l!I.>:i •..
..
.'j'
I
, ,,, ,, ,,,
.<...
,::,.~,
·.:\~~~i 1~:
I
,,
,v·
~ ~-r;
,. '"i*11 ~".
111),-..1
\
'
,
19
Xl::
Bvlte F;no.l:les
•__> ~B
17
!
,, A ,, A ,, A ,, ,H ,, ,, ,, ,, A ,,, I ,,, \ ,, y\ ,,, , , ,,, + -.v ,, , , , , ,I "':, 1:/: ,, ,, :,, I
,
':,;". d;:
16
I
4
I
"n.i.: .. "~(':'
,
I·...~
1-: \
Da to
H : 't. : X BuslCl'ld
'Stote ,
,t'
' I Add!eoss D91;4
1
""'"
LJ L
I
I
C/'"
15
1
1
t
L~
,
Da'ta
14
I I
S'to.t~
1fr.
t.·.~.
I
1.1.. 11:' Walt
Pho.se
13
~
ClK
,..",
•
Oo.t.. Phose
Addr .. ss:
-. I
•
'JCllt
Sto.-teo I
II
;"~
Bus: Tro.nsac"tlOf\
•
I
-
._, ,~t' ,;.,
,./•
)
•
!i~
Capitolo 11
'Jolt Sto:tvs lnse.-lti <.Ia\ 1;<>...-"e1;
0·'
,·'s ....· ~·.~P
~~
• ••"'!",.... , """ ~~ 1"' · 0',,'·\~i"."W ."'
' ,,;,,,~.,~ ""t ",' .,."",-",IJ.. ",1 ~",,~,'.
i·f
·-,,1· ··;1·:~ ,-.'W.
;~t
,.
,.-",~,
~<
-,~
T
.:', J1~·~·r~( %¢
·· .....
,'~,.': .••.•
_ ;1
,..;;,..ti~ '~,
I
O's: .......... flnto
·"i~'! ~ :':".,;,:" ,.< ;:.~ 1,···",,--,h It " . ~ ·"".'.1 ·tffi :::'/ .i t • .li~ .. ~'
I
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, l'~iatore 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 e di 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 disattivato 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.
r -~.... ~ .,i .' ~~~~ T"T ~";l--.rJ~ O ·,:·~~~fl ,. '~..•?,' :n:'-' , '" ..,•.',
·'.\';.\,r
~:"."..,-,...
'
<' ."' .-:;<.<., '.
,'"'~''' .,.\:.,.") .. ~ " ..' • ';i"
','~;iiI!·~!$t ;~i .,..;<'f ~
l-
I •. ,":,~.<
";.
,. .q,1~.";'
:
\t
,'l".><.}"'" .
·":....!Il' .,\,', '.." ,.l
'''.-~.
"~
·;"'4'. \':1" /1;1- .';' ,. .,:;:'fu.l;, . 1.
';~ .., ~;'.. .", /~
·,F· .
;'.''i!~ t' ;~ , ~~i-;(,~ ,: i~
,''':*''f;' ,\
.: ".V' ,'-. ;.
't~.~*,i ~\ ~- <~ ....
· ~~)-!T"::"" {~ ""~'#ff.. I'
,"ii:}ir~ ?~ :,.~"\l
'.i"i~ ~' ',".,'
'-
Fine trasferimento comandata daJ. master Le cause che portano il master a ter- ,;;.;;~~ , ';',A:j!l%lJ: , . '" ,,,,, ., minare un trasferimento sono tre: ·"·"'~rr :-
'0,"1"•. 1
.~'1JJ j'
1) completamentoj 2) timeout; 3) conclusione anticipata (master abort).
··,''.:::l:ffi .i w"'-
':"~'-',~"I (o
",I.' ,I;... ·' ,:· ·~·t~";'',.-0"."",. 1
':f1f:-~ '
=8! •• 'r.. ,_ .~
.
n primo caso e ovvio e corrisponde agli esempi visti. Nel secondo caso si ha ..:;V"'ii.:?t: 0' ''.(:'! " sospensione dello scambio perche e terminato il tempo a disposizione del master ,:/[.'1-: e il segnale GNT e stato disattivato dalia logica di arbitraggio. n terzo caso si ,-!
~;v'--"~
.
<
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:
\ ..
.. ,' '.>:;...... " ~
"
:
,:~~~, ~
. "'o1jf· o
';:"'li~l~> ~;rr~t; :
. .'tI::';':;:: , · .:;:-.
~ .fi:~,: }
f
.-tl " ,:' f,k' '·.v~·
1
,
; ''':~'I'' ".t"-~' _' ,",,\.'. 0
I I
•~
. . * :, : "".%j'
',) ~"
,.~
.
'f
.~
;!3~\ iij};.·' ~
',I
i~':: .~
,p~., '~:.i,:·
Bus di sistema.
495
----------------------------_...:::.::::..:::..::.::==---
,~~·.,i
••\·".'.0
r.~;:I'·
~~~;'-
.ll'..·· .",;:fi ' -
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.
::';··':: ,
,~.'_.'
''',;, '
.,,1-.,' :'~ ::..,
~: ••-,
>-i'
.'!1;".". -,.."-,,
'''?;.', I:, /."" "of,
.,
·~·",..
;;i,,:...
.;
Se nessun dispositiva a decodifica positiva risponde entro i primi 3 clock daWattivazione del segnale FRAME, aliora a1 quarto clock puo rispondere il dispo~ sitivo can decodifica sottrattiva. Nel caso che non vi sia nessuna. risposta, il trasferimento si conclude senza che venga eseguita nessuna transazione.
,
n--f '. " t,:::;;.:
~"1"
.:~.
:;:,;"'.
'l:';"\~',
:~;;>,
".:,~>~
La terminazione da parte del master richiede che FRAME e IRDY siano disasseriti e che anche TRDY passi in questa stato.
~::i;'f"(,
.;
~~!~'.I:,\I· i'\"':'
~, ' .. '
'/1'1.'.::
'1::.:L,
'1.,;' ;-:-... .
~",
FiDe trasferimeDto comandata dallo slave L'obiettivo usa il segnale STOP per chiedere al master la conclusione del trasferimento. n trasferimento continua. fino a quando il segnale di FRAME non viene disattivato.
"",,~' .. '''1''.\.:'''' '.:;t :,~
t.~~J.:"'"
1"".,1'1, <;; ..,•. '
f."·}'''.··;·.
t:!'~::;.i.
~'.~"p'~
Esistono tre modalita:
¢~. :'\):11 , 11• •,.'1"\
,F ,':)it
r-r.~'\-"."
~":'t.-
T···~"'-··c·
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 nemmeno in un secondo momento.
O::"\ii1h:,
:;"!r';,~;':,' "~"r,.'
'! •• - -'.'
..
',.~,,,,,~.~
<.. j'• .~hl"·
'"
",., '"'_.~ ~;.17i:\.'
iJt,~';j.;' .,' ."'~); r...... · :~•. ,0;;". _
-~r.",~;.""
Tralasciamo di
t. 1f.";.-"
......,:..... lfiI.!,,,,,.l-
~
•. !,~.,-
.:"\!o",~""
,,)l!'" ,.
.;;"'1:',""'"
riporta~e
i relativi diagrammi temporali.
'
~~;;-/" ~.U":~~
~~'t".W'.'
~;.':IlWL ~i'- .....,.,
\
.";'(',l'~':'
\~i£ii\:~1';, ~ III "'. .
~f.';";.' J,
'~~~W,":·,·
~"'~~Z?;" ,: ' •. ;., ,-
11.7.4 Arbitraggio Lo schema e queUo centralizzato paralielo visto nel Paragrafo 11.3.2, riportato per comodita in Figura 11.42. Da notare che l'arbitraggio e nascosto, doe avviene durante il trasfeiirnento precedente, in modo che nessun cielo ill bus venga penalizzata.
'Ji:.:'~t...,
-'of. ~.~.
,Z'~;f.j': , ,;E~.~",. ' , '. i',.. ·• , -.' , ,"' " ~.: 1 .,..,1>"~.'
REa cjlsposl"t.
'CI
GNT
' ' ' :'i',
'CI
'-·~".-""o.. ':
•~l:"'i~'_: .•• •. f
:.i\,,;" .
'" ,. ;'.,:i~;?,r-
,-,~.
I
dlli"posl"t.
GNT
'CI
•
REa
Arblt.
GNT
I
dlsposlt.
1'".H.i.',!~.'
I 'CI
'l" ".,.
il~(;.'"·· .. , . o;(' '~ .. 'r·''"~!....
REa
I
REa dlsposi"t.
GNT
PCI
Figura 11.42 Schema. di arbitra.ggio PCl. Uarbitro, centra.lizza.to e paraUelo l viene detto PCI central resource.
_.':1';;""" ".,j ':" ..'.
0il,·".1; ':'N..~:_;: • . l1'''::t , ".......,".
<~~i.:
..
'~::~'1,:
, ,'. ".",'-"·r'·'
:'#.T.... ;,
~,.;;,... ".:
oYUJ·.-;,
:'.'"A.~'~. ",:"
}.i~'.'!.::.
,;t.~\:.,. •.., "
f~~,'
.~~-.-,~."
•
"p",.N:'-:. fHI'-I.?'-": "' ~"..;;,~W .._ .. _,..,,~_.
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.
496
!fi:
Capitolo 11
,~,
1,
~'~'l
'rJL'rLrJL'nJ\J1
11
1,. •:
p'~'
.
12
13
14
15
16
I
I
eLK I
I
I
I
J
I
t
I
I
I
I
I
I
I
I
1 I
1 I
I I
I t
,.~;m ; ,',•. ~ • "f\.~J' :','j•.:"f';.' . ,i1'!.jj
I I
I I
1 I
I I
·.:,Tj;;1!;;
';.Cf1~"
REQ A I
I
1
I
I
:"';!'~' '\ .. t:,~~~,.'~;t.;'; . _.',:,." "l. "i' ~ '"
I
REO
~
I
t
I
I
I
I I B I I I I I I I. , ,
I
,
.,
,
I I
I
I
B I I
1 I
i\
GNT A I
,
== I FRAME I I
I 1
I
I
,
!.. , .. '
rI
:I :I
T"'R;;;D"'Y I
I
Y'\
1
' 1
I
1:, I
\
I
.I I
\
,
I I I
I
I .1 lDo.1:0 dl A
l :1
"I"R"D"Y I
I
I
"
I I I.
I
~-.....!.. .,. -
I I
I t
I Address
I
/
I 1
I
1 I
I':I ' '1:LlJ:./ r:I I j
C
/
I
I
:
r
Y'\! Y-J I
•
1:......
l ,.,0 .. Inl%lo \0. suo 1:ronsozione
I I !
I i ) I : I 1 I 1°0.1:0 dl B ~
I l ' '1'
I
1
I O!1:o.
I
I l'
It Mo.s1:e-r A Inl%.lo.
\0. souo. 1:.... o.nso.zlon. I .
1
X
"'»
":..: '~;'
;or
·J\.
<:~r.. '. ,I~~ - ")?~" ,~, :): ..~:~ :l.. .. . ,-\"" ./ "i<'~.~ "~" ,,,,~,\",,... I ' .:-.<:~~, /I ;~;
.
.i
I I
f !I
I
I
I I
1 I I
I
/
I 1
I I I
I
,
• ,I -.....I t i l I I I Adcres5 DCl1:o. 1
I I
1 I I
I
,
j
I I
I I I
I
I
I
I I I
,
1 I 1 \
"....
I
tU ~.,~
I /~~~ _~ l;Ji;~f~:' !5\ I f,l' ,~J ': .:-',".!\~i,' ~ ':~
I
i
I t I
,---r--, iX' )- -r--, I
AD
I
1
I I I I 1 \ ' 1 ,
,I
'
I
GNT
j
'- .. ;1'
::,~" t~t~.: 1:~I'
._:~~'r.,,: w.\.i(I'. ~" ";','!Ir;"h~ 'l
.('.;.,.~:.,;~~'lil :, '~:";-!Jt' ;"c ..... :.-1';"""" .,' '..
}~~t\%
:f
-;\~~~ ~
I
Bleil
us
e
I
t"",·.-il'~~ ~""
;<;~~~'~ :t ,o ,"':" ,.~.~~ :,~~tt .,7
~:;g~(it~ - ·V~Pi" :;
..ri..... n1:o I "';'::;;'I.:~:ti :' :I '1 1:ro.sf . clo.1:1 '.\.\1:~'t~ ': I )J J '"?~(~ .~ 1 -!-/ ':'::!~\~~~~ ~
. .::',.;ii~'!' ~~ ~ig~ra 11.43 Temporiz~azione dur.ante i~ p'ass~ggio del controllo a un di~positivo piu prio- ;~;'~j~ : ntano (bus exchange). Sl e fatta l'lpotesl we 11 master B debba trasfenre un solo dato e ::')f;~! ' ;~ rilasci i~m.edia.tc:mente la. sua. rich~esta.. Al contrario il m~ter A d~ve effettuare iI trasfer~. ~~}~~,~ ~ menta di pru datI. Per questa motlvo, dopa che ha ceduto II bus (d1sasserendo FRAME), Il·::'.~ !. t master A non disasserisce la ~ea REQ, in qua?to _intend~,pro.se~ir~ con il tra.sferimento,.'_:<~~~",~ ~ ~ che avverra dal clock 8 se non mtervengono attn master pIll pnontan. '.•\l;, , : . ~ '~~.~.~',; ,
'6
,·'-:_~~¥.J"i
1.
n master A aveva inoltrato la richiesta antecedentemente al primo cicio di clock ">'~1~~";i" ~ . 1'· ·1 b A (GNT . ) . fr .. d . ' ;-i'!i'~ . ~ per cm arbltro assegna 1 us a assento suI onte dI salIta el prtmo ,... I'l . . I d· I c k ' .:~_~'"i. i> " CICO ,CO . ._.,l~."
):gt~l,,§ :
. . .:'1r·. 2.~
2. SuI fronte ill salita del secondo ciclo di clock il master A campiona GNT asseritoj J.::>~.' I' i segnali FRAME e IRDY d.isasseriti indicano che it bus e nello state idle. A ::~:;S"~~lf~'!i questa pu?-to A d.a iniz~o la: transazione, asserendo FRAME e pilotando indirizzi>~~~'t e comandl Bulle nspettIve linee. ::,~A~~t1' /;m~ " , . . . • . :-::"~;~MJ:.:\! 3. L arbItro del.bus ~CI camplOna REQ del mast~r ~, as~etlte ~u1 fronte dl ~ahta .~\~f.' './ ?el sec~ndo cIcio di clOC~1 dando corso al.process~ dl arbltr~~l0 per determmare ,·:.~~i,wEr: Il prOSSlffiO bus master (m parallelo con It trasfenmento dati 1n corso). .~~'~{~f:" :;.;~~'~ 4. SuI fronte di salita del terzo ciclo di clock, l'arbitro sposta it grant dal master . ;;:;};\';:
..
n
A al master B. master B non pub comunque usare it bus, ,finche ~esto non tomato ailo stato di riposo. Intanto it master A disasserisce FRAME.
e ..;,;;~(~1.? ·:1f..
" ;".Ioi'i \.l\l"~ .,'
J':'l~'"
.'..
i;~ ,,~
~\!,,";-'
bt~·.·
..
,-
~~t;f;',!' ,~. ~'*~ :Y.~ff,<:.~ .- , ,,\l{il;l' '
B=.:us::...::di::...::'IS::t.:.:e::m::a=----=4.:.:9.:.:7
,iilll:1v
~'l:,;:1~5~· lim;::\'• ,""-f"
';;~':jF:'
(
J\
S. SuI fronte di salita del quarto ciclo di clock c'e il trasferimento di che e anche l'ultimo inn que~ta fase. n master. A ha dis~serito anche IRDY per indicare a110 . slave la fine del trasferimento, riportando il bus aUo stato di riposo.
Uili:':;!:', .•. ~..s:~.:
»';'!"
:~\l~~;,,:,,,
''''~Y:';~''''
r1·li~,.;:
.I,k~'·,!·,_,'
~~I!f~i.;'
\;·;~.~t:/'" :;"_:j~,;:''''J~r'~:"
\0}"
;:.:,< ..
t,
. .lo!."·~'·' 'l\--''''",
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.
~l~~~<,,'
:d.... :~, •. , ..r~r'w· /.~:V..'"
"".~·I;':·. '''~': ;1T:t~.!,.,·
'~!!r,~;· ~ :1 .. 1'.~,.,
"~~.J,
l~":'f"'"
II.
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 sta per fare l'ultimo
,
,d\ii{~<. c'l:~a"1 (,-
trasferimento dati.
':7,l"f'··~"
fj1kr:;::;.'
~"i~:,~~,
""i":,! ..'i:",,"
t:b~t"'.'
o;:""j"'\' ,7~:,;!;./~.
.
~ffiY ;:~J!!i;:?
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. n master A riconoscera it bus libero suU'ottavo fronte di salita del clock e riprendera it controllo del bus.
'~i";tfi:!' . .• b k :!.k~}:4:;T;-~: ' Trans~zlOm back~to- ac
li· _e 1. ~aster ~antt.en~ as~ento e se g ,;ene ~an: ~~rt.~~.:.;. tenuto ~l ~NT per ~ancanza di nchies.te pl.U pn~n~~e, puo effettu~e una sene eli ~~(\. ~t. tran.s~lo~I consecutlv~, dando ~uog? aI coslddettl clcli back-to-back, unpegnando al ~'1if.i~k:,:, masSlmo 11 bus, come Illustrato In FIgura 11.44. :¥:~:1g:9~~.
~;r.~~!,,:'.
~~~t-('
t.~b.·;:~;,~
~~~;,:r:\:;'
S ·1
.
.
REQ
. . 11.7.5 Prestazlonl
~¥';'~:;'"{o.~, .
~"'!t\,'..
~-11..,." "f.fjw.~.
",,,,.
:~~l,t':~:: .'"
.~~t:,;~, ~~Jci'-!;::
i'!.;!~:~,,·
t~'l~,,;~', ;~"7f{~·..
"~~> ·i:;~.. ~r; '..
/~~J~~~~:;'
::'i!.'-~:~:,:
:tj~~:~~~I~
~ '~1f«' :~!i~~~.~: ~~F:f\l\' :~.j~,:;'::
,;f,~~. -'
,
I'
l -
-
\
•
I I-
.
•
un. solo dato, :enu.to canto che tra o~ni tr~azion~.oc~o~e inse~re ~ clclo dl pasSagglO. (30 ns), 51 ottlene un valore masSlIDO di 8,33 miliom di 66.64 Mbytes/. e 132 Mbytes/s rispettivamente. Come gia. citato altre volte, anche nel PCI bus U tempo di Iatenza dell'arbitraggio puo risultare eccessivo. lnIatti U ~od~~ che ha vinto l'ar~itraggio deve comunque attendere che l'attuale bus master rilasCl U bus. Se quest'ultlmo modulo deve effett~are un ~levato ~umero di tra8f~rimentiini~terrOt;IE~ililpub 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).
..
I.
I
,~~,;r:~i~;-:'" In lettura occonono almeno 3 cIcll di clock per leggere un dato. Can un clock di i~~;'i:,i' ,33MHz, si avrebbe un trasferimento in 9005. Nel caso peggiore, doe con transazioni
~~~X::,'~ c?e le~gono
\
\-
l~ )~
~~ •
J
'~*;f:~.,',
,.;_";1;,,, ,
•
\I -
i I
-
498
Capitola 11
_
cc. ,, 1m!
,,, , .,,, ,, --..,,, ,, ,,
,t
, 0
0
I
'~
\
\
~
I
•
lROV
\
I,
:,
'
!
0
!,
0
Iii I
I
I i
I
I
1
,
1
' .
I I
I 1
I I
I
I
1
I
I
I
I
:,
I
I
I
I
!\
:/
:\
:/
I
I
,
AddrnS
I
I
t
I
Dl1:0
J
( l ) i,
I
I !
,
~-~'~'
!\
f--+-!.... , , o
<00
0<:::C."50
I I I
t
Hl~l~J)
,'...1'\'''''0
:: I I
D11 0 Add]I',"S
..,
.. 1......0" ..
I
l I t I I I t I I
I
nrnv
0
\
I
-
,,
o~
I I
I I 1
I
,'3 , ,
READ
1 ' 1 I I I
'CRT'
FRARE
.' ''. '. , ~ ,
• •
,~
AD
-
.
'WRITE
/ l\ / l I /!, / ' -,~! I
I
0
0
1-0 .1:. . . . 0
1:0. ...
,,"'1:
plloto
T'IrnV
Figura 11.44 Transuioni back to-back. Si fa I'ipotesi che Ie due transazioni debbano trasferire un solo dato. U master non disasserisce 13 richiesta di usa del bus e continua. a. impiegarlo. 4
- ) -
l
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 e eli scrittura. e i1 bus dati e sempre 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 trans~ioDe. , ~
.
-
I
I
"Qs'tl'r rlehi.. o. Il bvs
It "QS'tltr rte.I'..... it gro.l'\t
R"ra
I
~
jjFl" .r
IQt.nl:Q per
..
o.rbltrQQQlo
I
~
to.rg.t rlspend.
..oster r;chlrc:lr I.m Sll'r"';liQ c:lQ ",n target .rcsliOiOIl' ......_
llltf'nl:ll prr QC:C/<.'IS;l~r
..
1
... ~ .
·1
IQtrtll(l Q
tQrgrt
elfl bIJ5
Figura 11.45 Composi2ione del tempo di latenza. /
11.7.6 Blocco delle risorse
\ •
l I I
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 utilizzati40 . 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 e bloccato: se un master intende bloccare uno :slave, oltre ad avere 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.
Bus di sistema
499
1a disponibilita del bus, deve sincerarsi che la linea wCI< non sia gia in uso. Se la linea e asserita, deve attendere che la fase di blocco in corso abbia termine, osservando la linea LOCK aisasserita. Accesso esclusivo a un obiettivo sono illustrati in Figura 11.46.
L'acquisizione del bus e il blocco di uno slave
CL~~v-L~i , , I I 1
I => I'"
13
l"'l
,
.
LOCK , , '-V ,, ,,, , , LOCK LOC~ : -.....l-"'\ .....+,, -, Aplc!"" I " , ~ "-'. , ( ,1 ....>-~-< > : ,, , ~ , , : i \: :I : ~=~ : ...f-, ~ , : 1 :.: I : , , ,, ""'== I /l' I I DEVSE:L I -.J...-" , ~
.<",...... :
\
I ,
I
I
I
:
/:
:
I
:
:
.....,...
I
I I
I I
\
I
... 1... 0. ..... 0..:1..... 11:0 o. Fl...... C> .. llo. 1: ... 0. .... "'0."'10 .......
c>opo
i
i
AD:
. .==1
IRDY:
TRDY i
I
o
I
..........
I
I
:
I
1
.............
i
I I
I I
p.r
1:"'0.""':50. zlo,...,1
0 0
I
o.ssC' ... I'to ......ce .. " . I " .
I
I :
o o
I
\
h:
I I
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 e adesso 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.
Tentativo di accesso a un obiettivo bloccato da parte di un master diverso 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 e chi 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).
500
Ca.pitola 11
Un
QI~ 't .. n"'tCl
c ,.,a.~;;.....
1:r--LTL':r-L'n.rL':r-L t\1 I!""-;II
a
12
13
14
Cl..K 1
I
I
I
__ I
I
I
I
1;.-o.n50. 2;10 ....
co.,
l'ot;>I .. 1::-i:lvo
"'~ ., oeco. ~O
I
I
F"RAME:,.
..
I
n""'
I
iLOCK II 1''I!'x
'o ..... -,..,o""'t......
:~::~ ..I~~~... 1::"'tl"O
k
AD
1 I
,
'TOO ' I '
I I
I
i
I
I
I
I
1
I
I
II
I,
I,
I,
I
I
I
I
I Co.'to,
I
I
f
f
~
I
1
I
'"\ .............
I I
I
I
1
I
I I!
I!
,
1
I
I
\: /
I
.
~
,
I, j ,
--+-
I t
l
-
I
I
\' /
-~ ,-
STOP I
,, ,, ,,, ,, ,,, ,, ,, ,
,
1
I
-..j./-
>-1:.f-I ,'
I"""""
n£vstL:I
I
I
/T""" .............
, " , " ''"' ' ' I!
r
I
'.
"
I
/
!)(
.",en" ' [RD'r' I
IE,
I.
AdcO··....
(
_
1':5
'I
I
' I ' I
I
. ! .
I
I
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 e il 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.
S.eondO ",ee • • so ...1 "to.rg.'!;
11
Cl.K
II
,.,o.,,-t .....
. . . . l."'~ Il
dlsos
t\
____
I
'/'
I I
I I j
~
.. l.OCK
I
,
",I"RAMlt,
-
13
I
I
I
\
I... n: I X rn~:;;;;;--;;;:-;::;;;-;::-l-:,:c=o:c~":tW~=J;;;'~~. Addol-' ....
tl ,...,,,,:s't:. . . . . . . . .1.."'. 1\ o.LOCK
14
1
v--v--LV'L:r--LJ I ' ...-r--_,
~I
I
12
I
rr:=t '
I I '/
I.L I 'i~
T\ \
1 I I.-T"-
a.DEVSEL I
T
I
I I
r
I I
I
! I
,
\ 1
a
')1"\'
1\
,.,. . . ~ . . .
.. ll .... c:lo It '!;o .. g,"t eon'!;I ............. \:>lol;eo.,..\o
C<:> ..... 't:I.j.I ......
: I
I I
:
!
,I
I I
I I
I
/
'
,
.
I 1
1 1
I
AU ..
o
Rllo.clo
/:
/ '"I
!
I
I
I I
'-+ , -----, , _....,
",TRDY,
-.v-
:; -) ::
Dd't:9,
A....----..-!:
.. IRDY :
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.
Bus di sistema
501
11.8 II bus USB L'USB (Universal Serial Bus) e nato nel 1995 dalla collaborazione di quattro multinazionali dell'industria elettronica e informatica: Compaq, Intel, Microsoft e NEC [Com98], Nel giro di pochi anni diventato 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 e la possibilita di connessione/discannessione a caldo dei periferici. Elemento fondamentale di USB e la 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 protocollo TCP lIP, per quanta si riferisce alla piu generica connettivitA. in rete. Non e immaginabile eli gestire dirett~ente un periferico USB: sarebbe come pensare di collegarsi a Internet senza il supporto TCP lIT'. 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 vol~e 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.
e
11.8,1 Caratteristiche generali VUSB e un 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 e una rete ad albero con la r~ice n~lla porta dell'host. Lo standard definisce it formato dei eonnettori e la natura del cavo di interconnessione (Cfr.1LB.B). II protocollo in 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 e pari, a seconda che la periferica sia ad alta 0 bassa velocita, a
e
I I
•
•
•
-
\. --
.1 . •
\ .
-
'I . I. I. I. -
).
-
} .
-
IJ-
J. •
-
1
1
-,I \ - I, I
\ If
,
,
! - I
-
I
! , J ,
•
-
I
- 1\
502
Capitola 11
12Mb/s 0 a 1,5Mb/5 41 . Occorre perc tener presente ehe la banda disponibile e sempre suddivisa fra Ie periferiche connesse42 . Altro aspetto rilevante ahe la priorita. dipende dalla posizione (illivello nella catena) del dispositivo. n bus USB e in grade di alimentare Ie periferiche attraverso 10 stesso cavo utilizzato per 10 scambio dati, famendo potenza in quantita esigue, rna pur sempre sufficiente 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 tensione differenziale fra due dei quattro cavetti costituenti i1 cave USB. L'osservazione delle variazioni della. tensione differenziale consente di riconoscere la connessionejdisconnessione degli apparati. Uhost e anche in grade di riconoscere se la periferica e ad alta 0 bassa velocita.. E solo attraverso i servizi lorniti dar software USB (che nel seguito indichererna 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, sebbene 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 microcontrollore43 che si fa carico di gestire 10 scambio dati secondo il modelio a strati.
e
11.8.2 Struttura fisica Un sistema USB si costruisce a partire da questi elementi: a) l'hast, un PC equipaggiato con U controliore e il software U~B; b) i dispositivi USB compatibili, separabili in due classi: periferiche e hu.b;
c) i cavi di interconnessione. 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).
Bus di sistema.
B
503
PC L:JL:J
I funzione USB/hub
hub
monitor
;:r ;:r
.,J
UI
-, stampante
telefono
funzlone USB
funzlone USB
l
r •
telecamera
scanner
casso
funzlone USB
funzione USB
funzione USB
hub
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
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" una periferka che svolge anche 1a funzione di hub. La radice dell'albero della rete (0 catena) USB risiede concettualmente sui controllore 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, indipendente~ mente cia! Uvello fisica in cui si trova e indipendentemente da! fatto che sia connessa direttamente all'hub radice 0 ad attIO hub.
e
11.8.3 Organizzazione a livelli La struttura a livelli del protocollo seguenti.
e schematizzata in
Figura 11.50. I livelli sono
I
• 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.
504
Capitolo 11
• Livello di periferica logica (LPL). SulPhost e costituito da SWU, mentre suna periferica e costituito dalla logica per trattare i fiussi di cantralla.
• Liveno funzionale (LF). Cootituito dal software utilizzatore sull'host e dana funzione 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 computer44 .
Periferica
Host
Appllcazlone <
L.
_
~
1-'''' ..
t>
UyenO
Funzlone
funzione
PIPES
...
........ ·······-f······················
T
.•........... _...•... ........................ ._... " ............... . ..
V
V
- I>
Software USB<
dl sistema
...
(IF)
-'-
I-'
. . .__.. +._ . ._..
Uveno
periferica
Periterica logica USB
Iogica
OffAULT
(lPl) A ......_........._.. _. .•..•. ............- ....••.........._....... ,. ...•. .•...•-...._- •...•....
V Control1ore USB
PIPE
Cava 1/ USB,
J
-< ;:::::> < >
,
~
'~I
V InterfaccJa at BUS USB
~
~
..
Livello interfaceia albus (UB)
Flusso logico Flusso fisico
Figura 11.50 Organizzazione a livelli dei ftussi dati dello standard USB. I11ivello di interfaccia. 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 conn esse.
Esaminiamo ora piiI in dettaglio la pila eli Figura 11.50.
440i norma. i1 Uvello funzionale suI lata bast sara. a sua volta composlo da piu strati software. In particoiare, 10 strato piu. basso sar~ costituito dai driver specifiai delle periferiche e su di esso si appoggera.nno Ie eventuali applicazioni.
) Bus eli sistema
505
1
•
11.8.4 Host 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 e parte dell'hub integrato A Hvello intermedio si trova SWU, il software USB di sistema. Esso e responsabile 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 disconnessione ecc. SWU e costituito 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 p e r i f e r i c a . · La comunicazione Ira ilsoftware utilizzatore e USBD (CIr. Figura 11.51), amene attraverso pacchetti46 che il software utilizzatore invia 0 riceve da USBD.
\
1
•
\
•
,
1. \
•
11.8.5 Periferiche 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 presentare 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 sono 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 periferica da parte di SWU. Questo canale si situa logicamente a livello LPL. Attraverso il terminatore 0 (e il firmware del microcontrollore) SWU e in grade d.i configurare la periferica. A livello di funzione la periferica viene vista ancora come un insieme di terminatori, corrispondenti aUe funzionalita. espletate dalla periferica. I terminatori sono connessi attraverso eanali instaurati da SWU in fase di riconoscimento e configurazione. <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 realt~, 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.
\
I
I
•
I. J.
) J
- ]
506
Capitola 11
,------------------I I
I
---.., I I
I
'IPE
I
SOFTWARE
I I I
l1T1UZZATORE
=it
-
::#:
~i~
confiQura
'"
Controllo
USB Driv~
-
(USBD)
\
-
Driver del controller host
<:
I I I I I I I P!Pf I I
i> I
I I
SWu
\
dlPtnden
.,,~
......n
~
I
._~
controller sull'host
I
:
I
deflnito dill COfltroller SIE
INTERFACCIA
ALBUS USB
I
co.v
'5.
I I I I I I I
I
I
I
>
I
HOST 1
~-----------------------~
.-
(
I -
l ]
-, j, -
I
- j
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.6 Hub 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 e di 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).
11.8.7 Madella dei Hussi informativi Tenninatori e canali. • ·Un termi,natore (end-point) e definito come una porzione unica, identificabi1e di una periferica costituente 1a terminazione di un flusso di comunicazione tra host
Bus eli sistema
r------
- ------
I
I
<1
PI"
I I I I I I I :
<::
~
I I Terminatorl PERIFERlCA I I I I I I formllto non USB I d--.omt.. da~a I ",.lIuo_ lIord.."o I FUNZIONE DO
> ~
DEFAULT P
507
:=>
peRIFERICA
Terminatore
, ,
LOGICA
0 I I I I
D~t!
per I te
pltdlettl daU use
v
<:
CAVO
v INTERFACCTA "L BUS UBS
us I stEI
I
I
I I IL
I I I I I I I I I I
_ PERI FER
I ~
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 1~ 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.
e periferica. In pratica si pub trattare di un registro controllore, che l'host e in grado di indirizzare:
0
di un'area di memoria del
e un terminatore sulla periferica.
gli a) .
e stato 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 HstrutturaUSB" 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.
508
Capitola 11
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; da:~ che viaggiano lunge un c.anale sequen~ia1e vadari? a int~ragi:e con un SingOlo"c.~;fJ~·. u.tll~Zia.tore: ~WU ?on. ~ar mente per asslcur~e l~ SlOC~QmZZa~lO~e fra possibili nchlest~ mUlt1pl~ ~ utllizzo del can~e .pr~vementI. cia dl'fferentl utilizzatori. . ri~i~·tt ~ canalt ,sequenzlali prevedon~ tre tIPI dt trasfenmento: bulk1 isocrono e per ,.,:,!:'~~" mterruz10ne. '
":tlt,
'·/1
• A messaggi (Message): i dati che si muovono sul canale hanno Ustruttura- "":"~~~ USB"e vengono scambiati secondo un meccanismo richiesta/dati/stato. Inizial-, ,j,:~~ mente viene ~nviata dall.'host, una richiest~ all~ perif~rica, tale ricbiesta e seguita ' '~' ~~~~;t cia un trasfenmento datI nell opportuna dlIezlOne e, In un secondo tempo, da un ' ,/fit.. , d'1 s t ato. . '·.. ·,m"··I' messagglO ',.:,fi:(\i1~
I
per:~;fl~
Lo standard prevede che una periferica sia in grado di gestire una sola richiesta ~ . . .. ... :;, ':~l\Q' v~~ta. .c,. SWU. ad ~Icurare ch~ non ~lan.o .ur:late nehlest~,m~ltl'ple eoncorrenti. ;:~~ CIO non Impedisce at programIDl apphcativi dl effettuare pll.~ nehleste, rna queste '::·"'~ .•.:·;h~' vengono gestite in modo da rispettare 1a 10gica FIFO.
;;-1-1f
'i.lt
",:~~J
11.8,8 II cava·
-:::',1~~ ','"'. .4 11 ~' .,~6 ·;"z~
n caVD
e
!J
USB costituito da quattro fili, due dei quali, D+ e D-, sono adibiti al 'r~::~i trasferimento d~i dati e due" V.ss e VB~S, ~l trasporto di una piccola quantita di ":~I potenza. La seZlOne del cavo e nportata In Figura 11.53. <,',\~1 La linea D+ e tenuta dall'host (0 dall'hub a cui il eavo e connesso) a una tensione ~~~, P?sitiv~, Ia linea D- et.enuto a m.assa. La trasmL:sione ~ati avviene .per variazioni '<~i:~~~ dl tenslOne ~V. = (~+) - (D-). Dlvers~ente dagh USUall standard dl trasmissione, ',.~' dove l~ t~n.sIolli. :a?an~ s?lo tr~ 2 va.lon· S: 10 standar~ USB preve.de pili livelli del , . ::;~ .6V , rifentl a pm livelli dl D, aJ. quail cornspondono dlfferentl stab del bus, ovvero .;{' '. ,;'{~ differenti interpretazioni delle informazioni seambiate49 . Le due linee di alirnentazione, oltre a fornire una piccola quantita di potenzaSO , -<~~ utilizzabile per alime~ta:e.disposi~ivi a basso a.ssorbi~ento, .hanno u~ ruolo. fo.nda-\~~~HJ ~~n~ale duran~e Ie fasl di n~onosclIDento d~ll.a co~e:~fn~nej~sconnesslOne ~el dlSPO: '~',f: SltlVl. Come 51 vede dalla Flgura.ll.54, Ie hnee dl ahmentazlOne hanna reslst~nze di .,:"",~, pull-up sulle porte upstream e di pull-down sulle porte downstream. Le reslStenze ·'rt.. in questione fanno da partitori r~sistivi e consentono di riconoseere sia l'avvenuta f($~{ connessionejdisconnessione che il tipo di periferica (.veloeejlenta).~~ri: 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
".'.iZfr. · ~~ ,.~
·j~ ;"n
'Y"
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 del~V).
50Circa O.5W a periferico.
'
·,.;, •' ••', :
· ·,I~ ,;"
. ''\
,:;; ::;
.:"
. '~' · ir:
A[
, ,.f< .'~
<
~W'
~\~J'.', '
i~:
ifl~.l;~~'
f:!{t.i. {~iW:" :~~W(~'
,
'.
~
"",', ,. ,W,I ~
, Bus di sistema 509 __=c:::__=:.::===___==
l.!,r;' "
,
Doppino non intrecciato d'alimentazione Rlvestimento estemo in PVC
,~~~li;". , :j~l".,
t. ~"iDr~.'
Schermatura estema a treccia dll'3me
:~~~~:,' ~lliC:
:
~ ji~~w~?f":'
Vausl
Vss
Schermatura intema in
pollestere e allumlnlo
~, ~t!~~;.
t-~~~~,~:,..
.,
~
~*,:~J~ ..>,
• '\'liI~'.' "I i'
'w':'
~'~£I::I'}::" ,:",
'1-.J:I.t!~
'\ Dapplna ' inlreCCIata , dedlcata aIsegnafe dati' . . . .
.
~~~T1.,
~l' Il;~~~, Figura 11.53 Sezlone del cavo USB. I da.tl vengono trasmessl a.ttraversa un doppmo lOtrec-
I\ -
\-
:i
~': f1~'~l()i:.l' ciato (linee D+ e 0-) su cui ~u~i ~anifest~o Ie va.ri~ioni ~e.ll.a t~nsione diffe~enziale f:rl\ ,~W?:"ff,".' .1V = (D+) - (D-). Le tenslOnl di ahmentazlone sono dispowbih sm due cavettl VBUS t~$ ~.~~~t{:;;': e Vss ~quest:ultima tenuta. p.reva1entem~nte a GND). ~ tutto e schennato ~on un rivestiJt·~~~. li~',::· mento 10 poliestere e allumlnlO, avvolto m una treccla. di rame, a sua volta. ncoperta da un ~~·~~f,£~:,1t!:' . rivestimento in PVC. '""'. ,.)~, • '\Jl~'.' ,=", ,.~,-,.
",' ' I..··'
i'~'~,~il'\>' ... . . . I" ~1t-~~J,::" condlzloID, a. causa delle refllstenze Rpd eli pull-down, SIS, D+ che D- sono a Vss, e 11, ~~~:{.- dunque a. massa.. , i ~:i~:~i~" Non appena il cavo USB viene coUeg~to alla porta upstream del dispositivo che ~1£.~c' ."ILr" si ~ta conn~ttendo, la tens~one di al~entazio~e trasp,0r:a.ta dal cavo si applica .alla '~~ '.. ; ~:',:'~' reslstenza.di ~ull-u:p. Rpu. SLforma COSI un partltor.e resl5tlv~ fra VBUS e Vss ~ulla ~ea. ~~~~~~t:: ~' D (D+ se 11 dlS'pO~ltlVO lento, D- se veloce). CIC deter~a una ~aduta di ~enslOne '~~ ~~t.-:.: del 10% su D lfi lOgresSO aHa porta upstream, caduta sufficiente a mnalzare il valore ~i~~~lh\, della tensione del cavo stesso a una tensione superiore alia soglia Vrn (~igura 11.55). ~~. ~~~(~: Questa condizione, se pennane per un periodo di tempo superiore 0 uguale ai 2,5 J'S, J\~F.J;r· viene i~ter~~et~ta ~~'?Ub come avven~~a connessione di.un ~.P~5~ti~os~a porta. :§fJ.ir1;:tY> POlche 1 dlSPOSltlVl US~ sono pasSlVl e non prendono mat l'lDlZlatlva di tras~et ,:~}ri(~;,~,~t " ~ere auton.omamente, perche succeda qualcosa suI b.us o.ccorre att~ndere la p~osslma .{J?-~t.fX:·'. IOterrogazlOne dell'hub da parte dell'host. Alla pr05suna mterrogazione l'hub nsponde {J~ :T~C~!L.," rendendo nota che e'e stata una nuova connessione. A questo punto il software di si:~::~, sterna abilita la p~rt~ dell'hu~ su cui si e verifi~t~ il n~~vo collegamen.to51 e passa a .'".,~~ ~!r~:f\" configurare la penfenca. OVVlamente qualora il diSPOSltIvo connesso Sla un. hub alle ~~i ~~1~.,', cui porte siano conDessi diversi dispositivi, la procedura viene ripetuta per ciascuno ~~ :~ff~1:;"~ dei dispositivi. ~~t ~~r, Una volta riconosciuta la connessione della periferica tutti i successivi ftussi con~~ :~~~'::~: ~unicati.vi fra host e dispositivo avvengono elettricamente attraverso variazioni del ","!, :*!,.: dlfferenzlale (D+) - (D-) ,?,~~ ,·.'i:'.I",;" . :(¥;l'!', ,)'fl i""....
.
.
e
e
.
~,,-$' ",""": ,-'~"'\"".""
\'i(:'" , -.:'
",:
;.:~f:1 ..Jff~ ;:ii~' '!'H"
"'E':.
I
'
:1~:J!; :Ii'i\~~~";'
A[i;;d :';,: <; ,"., :'1t '. 'f '-, .' U&::.• J
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.$ . 51
.~ ,"~:"I'.
';~~~-:~
~.
II I.
-
I1-
1-
_.
I11-
I-
'·'1!..."".. ~ ,
~
t'I
I
510
Capitolo 11
", .1'
!~pr~i. ,l\;''''' .;~,
i>""'~'
;'i;r:;
,~~"",:
.
,· ...l!
11" .'~'
,:;.
.'
)
Periferica y"lace
VeU3
l
.<-
I
u-
R Vss
cava USB
I
II II
-
<. ,Ii:
I -~
"t"j!!1~'
\
0,
Vss
Vss VBUS
VBUS
..
\
R4
I
Periferica lenta
'
.~,.
:,'.~,
..~,i;'*~~!':
';;'i~'~
·':l'~ ":~il~ 'i~'';'
,~ ;~l';' (.·'·~
., ''''I':~I\i''~ :"')'", ,!'I~'I·YI' '.' -"".;;' '.~ II ""' ::"....12:, . .. ~,~~1i!l>"':*.~,!l~ 'i
't
.,:'...•<1';1,.,.
:;
", :'i'l'iF"i~~1
'.:.'lt
...
.. , '.........
R..
-
'~'...,' '.'" .,$) '",,-., , .,- .•'<,' ';••" ,;.-.....,.",t.,. "",";Ii' ,.".-. ,','-' .' "1':'" 'l"-:
" . "l:j(~.t:-.! ,:'1(' ..., ,~t;,~'~', "\~I' ;.-' ~\(' .. ,~~~ .' ;('•. "}i'l,
"j,,,",
," ".'."""",; "!;V~,!:i' ~'·
Veus
Vss
..
'~',{'" ~ ~ •.".f@. :.", , .
, ."f..(~~81)l.i~ 1i;~~
D·
u-
'. '~:!!f'.'" ,J::' ~~;:w:wt "l.J},~ .' ";;l;_l\l.,,!;;ii~ :"I·l~t
, ";~I;;'~i't~'·'j ' .'" ''·)i;';.~!".r.!'!'I~ - ,", ~h ., >«' ~I:':.
R", cava USB
= 5V
'~lr . .:':.,i.~~·'· -.,-' . ,,"'.;
,'. ','llljlii",l 'I'
0+
~~
= OV
Zo= 900 ± 15% Rpd= 15 Kn ± 5% Rp\>'" 1.5 Kn ± 5%
Porta upstream
0+
-~'i-
",''''·i
. j~4#.~" ~~~ if....'! "."W'" '...1' 11/ ";::.-,, -'!'j ', l;;!' "". r '.J. :j&~,~!' ;\
-
Porta downstream
.t'-::7.."
'-,,:. ".~ :Ii~"
1
•
.,"
'
.' '-'.F;
R.. 0+
0+
R",
.",'. '-': t-... '"
r - Veus
,
""''' f"'i
·"'W~-,L
.'~;;t-"
I ~_=- Vss
"? :';:~!~
;)\
,'. h~,~ .;11
.;~,~l'i~'~"~~W'U .' ,.' - 'iN . ;-~..... ~' ','i!
,~~
I I
•
•
•
Figura 11.54 Struttura delle porte upstream e dOWDstream e differenziazione della perife· . :f~~fJl:~tii ri~ veloce 0 l~ta attraverso la resiste~a di pull·up della porta upstream. La resistenza ~~.J$~ di pull-up e pan a Rpu=1.5kO; quella di pull-down a Rpd=15KkO, Per Ie porte upstream -~k' ""'ij; non c'e differenza ira dispositivi veloci e lenti: la resisteoza eli pull·down, e coUegata sia a ,~f,..~ ':; ~~ D+ the a D-. ,Per le porte downstream, invece, bisogna distinguere tra perifericbe lente e, "-s,j{t~H.{, veloci. Per Ie prime la resistenza di pull-up e collegata a D-. per Ie seconde a D+. Zo e :J.~~~''.. ,tJ;"
.n:\
,
I'impedenza del cavo_
•
I
I
•
•
-
I
..i ",~"l't!!
-
.~. ',,;':!y,Wr:'"
· . di n lsconneSSlOne
',~"~~~''''! I'}
'~l"~'-jll ·t(f
N f' . e lunZlOnamento a'reglme, una dtt e e ,.I;J~;.(if'~~P !,~~0-.JtW. ,:~ due linee D e sempre a una tensione superiore a tma tensione eli soglia (indicata <'W\$~ I come VIHZ(min) in Figura 11.56), mentre l'altra e prossima aHa tensione di riferimento ,'.; .,.:Sf;~~ ;~ VSSS2 _ Nel momenta in c~ il elisposit~vo peri~erico viene disconnesso l 1a resistenza di . ~81\rlt; .~ pull-down abbassa la tenslOne sulla linea a UveUo alto, fino a portarla a Vss. Se la "';::':~\~~ ':1 tensione scende satta la soglia VIL e vi permane per un periodo superiore a 2_5~s, . ;f~A~ ~i la logica dell'hub assume una eliscoWlessione. L'host disabilita la porta e provvede ~ '::':':"~~~ ~~ rendere nuov~en~dis~onibili t~ttt: Ie ri~~rse che il disp?sitivo av~va in co~cessi?~e. ':?~~~~j}!f. Se, per esemplO, Vlene nmosso un disPOSltIVO non autoalimento, Sl rende dispomblle '.. ;:~~~ '! Ia quantita. di potenza elettrica che esso assorbiva dal bus, "'~:f~i& ~<
Nel
·r· USB una penJ.enca
.
":"_" ~'94i' ,g .ii')?~!"t!. ':. ~ ,.., \. ,"'_ • ,•... caso particola.re in cui a essere rimosso sia un bub, tutti i dispositivi a esso }l"..:.i!,'';:. -""~~l1.,,, J:~' "' .,"I '1 .•
" ·1~..'I:¥it}, connessi, di qualsiasi tipo essi siano, vengono considerati disconnessi e Ie risorse da '-!:. .,;,"i8.':'~~ .~ '. ,\li"~I'~"1 i· "'. ".. questi in precedenza utilizzate ritornano a essere disponibili. ". ,:;."1: O ;)',>;_1' 't1i::!',1::'~~~~ ~ . , .,1' •. \ ,.. :,.." ',<
.
~,
'f~ '<.
,~,'\l:o;'.l
~ :,\~,'Wl;': l~
'.'.' ~'~'!V:;.i~i J)
·;';":'~1~~.~i!1"; :? ,.",l, il~-J". :,', 52Come abbiamo visto D+
I
.-
'. ·"\·!Ii!\a~,·1\'i
,.,~~,
I
--. I:! "
I
',''':1 t.t>;o-n~ 1;
,
•
"'j'~';~
. ;':'''JW'. Y,,"tJ'i,
>::; VlH e D- ::; VSS
'''';. (. >l:<'. "'1, .' ,,::oIl,;\'l\l\(: 'n
per Ie periferiche veloci, al contrario per 1e lente, <.l{,~~I\; "~(: !i~ ".,.~,
.. ' , ' \':i'~i;-;. •
,,-...,·.t;\
.';0,\,""/0
III ,,;........
,
>l ~ _
j,o"
,1,1
".
~.-
,,' , ';. ,
B-us di sistema
if· ..- ...
511
'''''.
:;-
;~r"
:, ~
..
!ht· . " ..
v
_ '". " 7i>:;-
",.. : '._
"0+ ~, p-,ll.,lch. vekx:1 D· JMf p«tl.oc:IM '-nt.
i:;.~
"';-'"
~~< !" .".'.' ,. \~~ ..,-.
, ,".'
-
r~~: ;,....
--_.
VIH--------
'.l'~~-"
I
~t·~:
"'",' ).\'.... ,.-. .":"",. ::.
..,.',
,-,:,
"'"
,
~'f_'·. ;.,
':~:':''
~~Y':
Vss
,;" , 2",:,°' ,,:;' "'.'' i::",· '-
t'"'' ;d'~"
'1"'.,',', " .> ... ·, .
,
~'f:':":
..: :. .
, .'J"
I
D- p.r perllerlch. v.locl Do- per ptrllerleht lent: !
•
~2.5f1S
• Connessione 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
'(,-:'-':"
'
~.,
~
I
Periferica connessa
j;'~·'·
tj!~;~.,'
-1'
-----------------
.
·nr:'
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 e D-, e conoessa una \t* periferica lenta_ U/ti-;/: ~.!" .'. p~riferica
''''''' ",~ ..'
!,!(. ~:.
il~::f,
11.8.9 Riconoscirnento e configurazione delle periferiche
~?<>
;:,:::
~t..: ,!K'1, "'.;.:~';
.
-
!,'.~'".':':" -<~.
'~',.:,: ..
iE~>.. :,
.
!ii'-"
,;I.,
f,'~l· P.~t, ~{.~t<·
I~r
~~~. . ~
~t.,;,
1\r:·t';·
.
i'i. ~.~;_.
.~::~".
!W~:',:
g%~"
:.f.~~
'""\
_..,,'.
ILl'~;,. "..
.} .,. ~<;, .' ',
.
..
·,:,,'
:.,
O::"'i
~:::L .l,~--_
.
~.::~
,
""t,;... ,' '. .
).~~::-;
?i:l' );''-' -,:J!'< .,'11"<,' n'A:; ~rc::::., ';;~,..
_ ~i:,"'~'
,!f!>
""",-.-..,
..
~;:J' t •
.
Vediamo ora con maggior dettaglio come, a partire dalla connessione di UDa nuova periferica, questa viene riconosciuta e configurata. A tale scopo e necessario richiamare quanta detto in precedenza, e cioe cb,e il bus e in 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 e riconosciuto 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 e connessa 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 e abilitata e Ia periferica a essa connessa si trova in uno stato di riferimento (default). In questa statc in grade di dialogare suI canale di base attraverso iI terminatore 0;
e
questo punta la periferiea non pub aneora. eomunica.re in quanta la porta a cui disabilitata. 53 A
e eonnessa e
·tt~j:: C"'~~
.
512
'->~f'"
CapItola 11
·~,'h...
:-"~
//~~ii, ~ :';t.';'
; '::1~1~ · "·".'.'IW", · /"~U -~',.' "
v'
.....
Vou.·~-·'·-'
--_
_
---
-.-
-
.,. ,;T~~, 'tl' . _
., _'
.,.,.••'"~I," ,_ , "~~!"
.
0+ per IMril.rk;/I. veloci
o· JM' pemerich,le"tt
-~',l',.';:':
-,
•
.~.;;:l!;J\
'-';"\I'~.rSil.,f
.-:_" " 6.; ' . .' ... 'Hl,!l~J.,
-.;0;1'('"
,. .' ~.,,~~.,l "'.~,",
."."
,~t'<""
......................
' .. ~l,.
,·.."...':.:.:-jl: ".;......<.,~, · .-'''~·.l''l{ ; ~, .. :~~i't·
'., ""-2 :,
,.:~.,lo,!j",,
". S:..", f,:
v..
10-~_ _ ::: 2.5p.S Periferica dlsconne-ssa
"~' '~~':'i~~it
,
J
:'''~\1~~
· :~·~jtlii; 'i~:'~*:~~:
. ,;1<.:]"~J.1iT
1
';;~Mi
Olsconnesslone avvertlta
""~{.'rf.m
'~·C~1::'t
"'-(>~'~;>::~i
F.igura 11:56. Andamento delle tensioni ~el meccanismo ~i rile,,:azione della disconnessione ·':'iL7~~·. dt una penfenca. dalla catena USB. La discesa della tenslODe dt D+ 0 D- (a seconda del'~;:~~~~~~ tipo di periferica) sotto 1a soglia VIL viene interpretata come disconnessione. ." ,.~@~~~~ .' ",:·-1·~~f4
'..
~-~r,, , .." ;~:;,}i~'
-', 't'-"~'
d) I'~os~ a8~~gna un indirizzo u~co alIa p~riferica, por~andola. nello stato di· ~eri!e-:~~~t~~)'~; "ea md1nzzat~. Attra:verso il c~ale dl b~e legge 11 .descnt~ore d~lla. pen~enca ·.~;,fr:~~ stessa, de,term.m~do. I paramet!l n.ecessan alIa gestto~e d~I, f1.USSt dl datto In. ~;!~'~ base alle mformazlOID di configurazlone ottenute dal dlSPOSltivo e tenuta conto "~~m' di queUe indicate dai programmi utilizzatori, SWU determina la fraz;one di ri- :;~i~W sorse .da alIo.car~ alIa periferica. Conclusa la p:~parazione dei terminatori e dei tltiff.J canalt la penfenca e configurata e pronta all'utlhzZQ.· :·-....ii~~l
"'k~'j ':~~r;:::
Come appena accennato, nel processo di configurazione il softwar:e uti1izzatore ~omunic~ a .SWU Ie mo~ali.ta, ~ra quelle previste dallo stand~rd USB, sec~ndo ~ui .. ~l~~~4: mtende Implegare la perifenca, mfluenzando 1a sua configurazlOoe. .In considerazlO- :']i"'~: . ne del fatto che potrebb~ro esserci funzio~~ita della. periferica non r.egol~ent~t~::;2 ~,~ dallo standard, e consentlto al software utiltzzatore dl configurare tall funzlOnaltta <'~fI;~. , attraverso i canali di Uvello LF. .\ .~,.~~~~
.
. \
:'.Yf~~"~
',' .
11. 8.10 Trasfenmento dl dati
-
··1j~S. ,~::t'~1~:
;{i!r
H!}1'r
Lo standard USB prevede trasferimenti appartenenti a. una delle seguenti quattro ·~~.t classi. \ :'~Kf{\\
, ',,,~li
I
L
I I I I
I I
I I
Trasferi~e~to di c~nt"rollo E un flusso di dati bidirezionale.
-, ~i:'l.l-1(
I dati di control~ ".;~~ 10 vengono usati da1l'~ost per co~~r~e il. ~~positivo appena vi~ne avvertito ~ ':·~~;t suo coll~gamen:o al S18tema. TuttI I diSPOSltlvl devono ?o~er g~strre un .tra:sfe~l~ ':(:~~fi;~ mento dl. tale tlPO; a tale scopo, l'host p~esuppone.che SI~O mformazloUl utIh (~:£l:f~ nel terrnmatore 0, normalmen,te un regIstro specIale sui ffilcroeontrollore della "-:;t:'2 ,~,p,~ Periferica avente indirizzo 0000. ').'~'jt I;,..:f.::,. .
v:
~, ,:~~
\ '.~~'r.~.
Bus di sistema
513
..(Il';,!
,,%"!t.~.
~0~:(" .J!'I!~.' ...
\
;rtl'~~:-
•
. ,.\.• !' .. "c-,',';'i"~
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.
.",~~i;:",',
~"'-i':' .,,"_,.1
'''''-'' ••. ,
~:'1!,._
. :',' ',"-
":"()j, .•
eli,..-'.
•
".",,.,.,.
f ~ hl.'~"~. '."~ 1;'. , ""I',i_ ';", :!.. ',
•
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 e la 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.
,11:'~;':~'" ~"j.::.:.". ';'~~.'r: " " .. , ',,~ ... ,~. .. ;;.~."-~
,
.
:":";1;.":, .• ,"~
{ q
.•;•.
....,'
t·'.lf!·;"·
,
C' .'" , ,! ,\,~~
... ,.
:)"t;,.- .\,
t1'i;~$.""
~W . ;A,~'
'
·,.~,'>,(i','"
:; \:~~\;>.
T1 .,~,~., ... ' i f'FB't-',
m! :.'~:~:"':" t.
•
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 disponibile. La differenza tra. questa tipo di trasferimento e il precedente sta nel fatto che questo non ha di norma nessun vicolo precise sul1a latenza n~ sulla temporizzazione. L'unico vincolo e posta dal generico requisito eli cercare la minimizzazione dei tempi minimi s4 ,
i" :":<';'i\"'."
.:ff;~~;~:·
~' ,':i1:~~,t '"
..
~ 'a:=~{~ 4' :~~; ,...
,; ;'>r,ti]· .
'li !';J~;:,'. ' il"~~;;JI "
;~~}~1:i· ~ f ~ d.;'ri~ . . . ' ~)J!~~;; ' ~*" $,;;, '. 11.8.11 .II protacolla eil formata dei pacchetti W' .~ '~&~ J~~~~~?··; , . .
·
I ,
\
•
I •
\
I
,
1
.. .
I
E interessante spendere qualche parola sul formato del messaggJ. (0 pacchettl) prevlstl j'.'i~'~:· dal protocollo. :'~.'~~~~'" Un pacchetto e una sequenza di bit. n pacchetto e cliviso in campi. Normalmente :~ ~g? i campi sono di 8 bit (0 multipli di 8)! m.a ci ~ono anche ~pi. di .dive~sa misura. I .;~ ~J~r bit vengono inviati sui bus dal meno slgruficatlvo (LSb) al PlU SlgnificatlvO (MSb).
\
l' r~",
~I':_f':,
,~,~I'ft;,
~
.
,
...
;~'A~','~. Struttura del pacchettl
., . .
..
I.
:
.
Tutti 1 pacchettl IDlZlano con un campo di smcronl~za~!I, ~f~ ':. zione (SYNC), costituito da una sequenza codificata in grade di generate 1a massima .' 3tt
.
\
,
I-
i\ ,:;~,~r '.
(; j~ bt~%.'
~~~ t~~~
t~~~, :r'4I!~
~t~ili )%lt1~:~"
~~·:~· :.\~f:'.,
.
2;:~~,.1" i'~,;
~~. :~;
" t~~
.;,
. .':~ ~~. 'l/..~
(fj' .~,.,
.. :iii.....
~41n
[Mic98]si troYa una descri70ione eu come costruire un driver per questa tipo di trasferimento. ~&In 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 e comunque data. solo dalla codifica del campo Pro (non c'e un campo per il nome).
\
•
I
514
Capitola 11
Tipo
~
Nome
bit [3,01 di PID
l
Token
I
OUT
OOOlB
lndirizzo e num~ro 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
Data
\1
HandJhili
-
,
Descrizione
II
--t
funzione per il SETUP di un control pipe
DATAO
00118
Pacchetto Data PIO pari
DATAl
1011B
Pacchetto Data PID dis pari
ACK NAK
00108
II ricevente hI. accettato i pacchetti data. sentoa. errorl II ricevente non accetta i pacchett! dati
1010B
oppure Ill. trasmittente non puo inviarne STALL
L'endpoint
11108
e bloccato 0
non & esaudibile una.
richiesta di control pipe
I
Speciale
PRE
Preambolo della .assione host.
nOOB
Abilita il traffico sui bus in uscita verso periferiche lente
I tipi di pacchetto previsti dal protocollo USB.
8 bit
-
I
I I
PIO
I ,
7 bit
4 bit
AOOR
I
+
5 bit
ENOP
/
I
CRC5
I·
I
Figura 11.57 Formato dei pacchetti di tipo token. 11 campo PID specifica tipo e sottotipo (Cfr. Tabell~ 11.8.11); il campo ADDR contiene l'indirizzo assegnato alia periferica.; il campo END P identifica il terminatore sulla. periferica indirizzata; eRe e il (Cyclic Regundancy Check) eli 5 bit. .
I
I
-
J
\
-
I
- 1I
Pacchetti di dati Un pacchetto dati ha il formato di Figura 11.58. 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. 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
Bus di sistema.
8 bit
I
PIO
max 1024 byte
1 ,
16 bit
I
DATA v
515
CRC16
I
/
Figura 11.58 Forma.to dei pacchetti da.ti. II campo dati contiene al massimo 1024 byte. II CRC e di 16 bit.
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 stabilire se it trasferimento e stato portato a tennine senza errore.
e
""'.
'. ,1: ,.'1'"
, :'t'
-'~" ", ,~"
;.' ;
'.r% t·
):,~!
".0"
",
- •. 'I.
'("
~,
~" 'J.
.' '1
.'• ,,
<;"
'"'" T:, .'· 'I" .,!
·,::
o
.•', .. ,· \".
C· ",
'.... ,
· ,~
\ '.;~
• ",
..
" '_ "
.- '.". ';''f
·:.,,
, ., . ," ''
,·r ;,
,:·~
\' '."
""
,
;;.';~
· ·
.
-','
· .' ..,..,,--
.'• ,
"' ""'~ ".j
,.-,: ,. !
, ''
.,' :
'::,."
..•'·
,
'
'"
""i,
',' · •.,'
...
·.",,".-"
.'. :
", .' ,.
.' e
·iI'
·,': ~." :' ~
·
.. ;..
'~.
,~
· "',.,' ,'W'
,.''' "'.~ '.',,
h
~'
,. ·!
,.)7 1,
'
·.
,.1 ·[ '.
'"
'!'
,. -..· ·
"
""'7
"
•'
~
, ',
l.
.~
, "'
4
"
'•.
""" :-·
;
"
,
, r. ,"
or: .
'I"
'-~\.";Z'i'" ,,;'
'OO~ ... \1,":'... • :1,"".'
1
",'~~"!'i:" l!.::l 1""". .~ _: ,: .tfl"
I
,~
"'~
"~~"
"J~ ,;,f~~~~,:. '""ol,' ,tJ!.:, ,
"•.
~,"> •.~.:.
'c,,",
,~.,;.i! !",~,',,:.',
%t~~'· f"~t ·,.....]',,', .r,", !l!!l:~ t':~~;:'.'·
..,..
A
0.....,· ", ",,,' .., • ,.,' ,~,
I. ll'".·.[ i'~'f\ "', ~:' ~ ,' ' •• "i-l.' " , •• ;< .
.'~
iiii' ",.,
.,.1.71- .
1"1~l'j,.. ~i·~,I~"
,''''''''' ~ l'Il"' I" ,',..,'
",'t.·. cI • ...,
"~l})." :r..w~",.· "•. f. ;l" .. ~
,,,I'...
"I~"!'" r .. ·~",
,
I
!,.I1'L;~: :0.1" .. ,
Sistemi Digitali
:t1j[,):: ;:,:;;g;c ..\11,'.':, ':""IAI.•• ""', )","":; ,. .' .." ........ ,.,',... n,.','· ", < ..
,"',.
...>;:..,:, ;;',,'/.,.. ",':,,;'
~,"!i:i\.'
~,~".
,.';Jo'" •
~,::;~i<;'-, ';,~:d :~.,
,'"l~~''-
..
I
•
",r;, ~"
"'1"'.."
:;,,,.~~,,,, ""'l'!'!
~.
f':"',,,, ',.,,.ol;~ "..';I"~"'3' .~.
,-'::lj'l'! .~~
,::1-
~,~~.o:~.
r'r
"d'
'';i;~,,\1 " ~J'
,~,}~,: ~;"l.i:
".
\
~·~~~ft8~»;J·k·.
"'i '''.'' "'@\'
,
. 'ffi,">,; "~ .'"'. "":<;!,,,. '•. ~'~:' ,~,..." 11."( .
~:t,~~~ ~:,'.T.''''-. I'; )' .':' ,
.... -.••. .. ...,"-- ='1. ,".""-
',." ~"".;,
·0\" .. ··, ~1-'~" ,w """'"
."""'.1:' .:"~'_.~ ...
Per sistema digitale ai intende una macchina che effettua processi di elaborazione ,"~:, "f)t . -'>;;."ll .. .. , su segnali digitali, oyvero su segnali che possono solo assumere valori da un insieme , .··"~i' ."pw"·'·.",~\, ,''''. '01:'"";" i',",,j,!·j.' finito. I sistemi digitali di nostro interesse sana queUi in cui l'insieme di definizione e ~j!i;' ·~o." '~~."1; ". j! ')."," I,,';A,:·. ,;". ,..:.,.. limitato a due soli valeri) ovvero a quei sistemi digitali in cui i segnali (e Ie variabili che ! ',""',., ''''''''-'' '~'~"': :~,~~i)'.,:i ?){-!. i .. Ii rappresentano) Msumano valori su di un insieme binario. Le reti corrispondenti sona :'~F~~:t- "':"~~'~;: descritte attraverso un 'algebra, detta algebra delle reti 0 algebra booleana, in ragione ."",1,,,_ (;',1-;:.'" ,,~. h"~'" ',;' "', ..,". del fatto che essa deriva dalla logica del calcolo delle proposizioni, introdotta nel secolo ·h -.~ ;;,,':'.!",' ".......,.,.< ....J", .i"Ir'-:""' '"/t., '. ,,:','::f':":' ~i~tt~/, scorso dal matematico e filosofo inglese George Boole. Proprio in virtu dell'origine di algebra, le reti in questione vengono usualmente dette reti logiche. '1-!,€,,"" ~..,~-l( 1;~m";~' ~ ".. ~ ',. ..' questa Le operazioni dell'algebra delle reti sono state gia introdotte al Capitola 1, M".~\tTt;·;:~I' '.-, . .(1,_'.".),"" ,,·1' :'~'';:;~ '1>:(, ," ,po if,'",'__:. sierne alle porte logiche fondamentali a esse corrispondenti. Nella stessa sede sono ..... """ r . 'J',,o. ' '"il'.It,. ;,-j~"! . . , ,- stati anche introdotti i concetti di rete combinatoria e sequenziale.
'~:;!:'_\'t.
~ ~,,.'"
\
·'~~I .,~,
~"',"
~~.
'~,-"'.
.,'-
I'" "",'
1;" • ~:\'~'
:i5;":~:',""
" .;;;»I!h ,1>: ,1'."1'< '
~l\i,~" IT;:",J •
. _~","t',
.t¥1!W "'+'J'iIt~~', ~
:$1"( " '~~ .. I"~\'. "'!'''' '~'fJ\
.'
'~;'i@~""'-~ W,' " tf1~
h-U",''''
, ••
';rf"";0' ~~\.,,<.r,
!"\X!:i;,j:;'l:~:~~'~.'1;·:, 7';"4'-1':0 :. ' '. .", ,"·~·;..,1·~~,
... . ".;.;,,:,~: :!:'fS' ,1-,
'q~"''';'
.'<"._....'\~""'" 1;i;~,\~~:{ iW,.~~i [.r::-~,;";,t:,, ~;.,.:, ..,.,. ',;
':."2i~"q,
A.I Proprieta dell'algebra delle reti \
':,-~.~'', :'fl:"'~'". ,".,
~~-' "<'. " . '
Vengono ora date alcune importanti proprieta deU'algebral
x+x=x x· x = x
7-;"'~;;' 'I;~
r." .,..
v".'.. ..,
.'\l"1!i.'
,'.'!:(;:!"'.-'!;
'~,~;;.
I • • ~, P
,r,'~""I" '~-\'~'!'\'<:
,<'
., ,.1+':11 ,;\'. ;/. : """""< '"" , ,' ,'~, I" ):C' ·-',f~~'£<~', l't*,.;~: ~.~". ~ ,. ~!' .
....
""\' ~l!):r,r ""~(lt,""
"
;J'~rr:'}~i. "....fiir,,~:\ -I_T'·.
!:,:,._~\
" ~ •.
,,_. .-.t ...
"«,!,' ,,, ,'''l,(,'',
~ .. Jr.;;i~_ ~~ "'~;~'"
;>;-.• fL • Ii. '"iI "." I :l:fu,,':;' l:l;,li.\~:
-'C'!i"';' "..
1+1=1
0+0=0
1·1 = 1
0-0 = 0
2. Proprieta distributiva:
~
'·.I~''''',''' '\I!\~'"
,~<>..
Prova (per induzione perfetta):
.\.
. , . .' ,... !.\.-~; • • ..' \,ff.", '. ~.'..," 4' ._.... ",",",t, ~.,'; ~, " .'
"';~ ."
\ -
;'~~:~"\'
.',~}~~} :.1,~1' ' ~"< ,?,,, ,4; .. ...,..-:,., (0 'f ,
..
I
-
I
I
....."."
•
.
1. Proprieta. eli idempotenza:
··f"""..,'.' .""",.,'
",""'''C'
"i"J:t'..,;
\
~-:,'.,
~~;~,~~ :,~:,~,;,
~ .,(;;..,~
I
'
.'~.';
e'
I
lQuando e possibile, il modo sicuro per provare Ie proprieta. dell'eJgebra coosL,te nel ricorrere at metodo delPi71duzion~ perfetto) ovvero nell'effettuare tutte Ie pOl33ibili sostituziooi di 0 e 1 per Ie variabili che compa.iono nelle espressioni.
I'
I •
518
I
Appendice A
"':. _(', · .. ',a;i " ". :
__. 'l;,t·~:. :
,.,.-\
,.:,:.!.~
, ,., ,;-,,:5"1 .~ . ., _,".;,. _' I
-
.~",
',; ••,'. I; '., ' ",, ',"i'';~' ~." , "' ..,l,ll .
x· (y + z) = (x . y) + (x· z) x + (y. z) = (x + y) . (x + z)
~
..
" ~, ~ '~"'h'l
·
" :j'1\ .
....
~
'. . " .,-,'.11., ::.. '; ~,,: .,. ".
Questa proprieta afferma che non solo i1 prodotto e distributivo' rispetto alIa somma, rna che anche 1a somma e distributiva rispetto a1 prodotta. Assieme alla precedente 1 questa proprieta. marca una netta differenziazione rispetto all' aritmetica.
\
....,~,rll· "~'. '.J.... q'r~'ll " ,
.,..
· " ... ""'11 '.i',,;' J ,l,i
"
· ·1' -,
.< •• , ' ''',' , .I')'" •
.:.;" ;~:JS 'r;":-,.
.. '''''~'~ ,,:.0:.... " .,....,
3. Proprieta associativa:
.' . ,r ,.
, :.-' l,'!
1
: .'·~!i·t. ~'i,:' · ,.. .".
x+(y+z) = (x+y)+z x·(y·z) = (x·y)·z
-
,
• ~ 'I
,', " ,
';·;..M/;I; ".': ... ...,." ." .... ,>.,. .;::"}~J..
;' " """,,~
.~:t,l", .• ,':~ . .,~\ .. ,.j¥
4. Proprieta cornmutativa:
., ".'j;'" ,>".
::};::\~~ ~:~,~,
x+y=y+x 'x,y=y''X
";".\'''~:I ":: "",. , ", '':' "'.r" .~{:~..i; {~/
· ::.,~s--vc·,rr ';'; ~,s~·;",
.:r.:,.~: "t(!\"""11 ..""
5. Proprieta d.i assorbimento:
.' • "1
~"i
· .'
.~j'.
~
·'·'i.. \:·:'i;i , ,.•, "., ,
,,;
,.\"'I
.
~!"
"
'
',' ;~.':',,~;.. ,:,;OJ
-
X+X'y:::;:x
(x+y)·x=x
.~'
· :.:,)'-fi
.
., .".~. 't·
-
Prova:
I -
"/. . :.·t~:", ""~' "'\""'1, ,• · ','",,/:",.<.;1, .~.: ..... ·.··,;:;u ·iI·· ""-..,,''.t'. :r..
I
6. Se x
x + x . Y = x . 1 + x . Y = x . (J + y) = x . 1 = x
e una variabile booleana sana valide: O+x=x 1· x = x
">'. ~i ..,:, :if~
?"/f,i~~; -f;~ . H"k," ""i~
.<- ·.,';;;'-'"1If ."', ':;'j • J';... ' ·.·: t>t;;.· ~~:l. -";W., .. ,.... ...~,~ "''''-1' ;:;o! c!!,
·
~."..
'·or
';~'''; ,~,
·,.,lVif: ;")' · ";:~i'" , ",,,,. ;. .. ,.; " • ',.. j " T < iN'to..," .:....... ~~. ":= :,~
7. Valgono Ie seguenti relazioni:
,I;: '.-<
,':l~':';
.. .
"''"''."'1' ........ ':r.~". "'~.'" ~J , •.,, •, t.i:."
xx = 0 x+x=l
j
l,..
'.rl." lr4!1' '" ,4 .' ~~
~
,~
,'\'", ',""
· '1.101' .' , ":'~' ,"! .-
,; ..:";'11' ';:
":~'l::' 'l;'
...•.."' ., ,,". .-,· '$' ...• .. ',":
~. \~~~
""~~"',
8. Doppia negazione:
'
,;..
'
·
~,
:' "<'''':' ,~i
.1. ' .... '~'
'
x=x
"
\~
"~
'.',", .1\ ~,...." i~q
"". ,r,\.~,; ''''
-:"""'; .,f.
I,,........
,." "'t,~, '4:
9. Elementi forzanti delle due operazioni AND e OR:
x+l=l x· 0 = 0
II
... .
','
~; ~; ,. ''''' , "::'~;' •.',l.';'"
..
.
."~'.'" "
".<)" ..:
,.. ~ ,,~l:. (~' ,j,~': . '.'
." ':'
~
:''.
... , •., " " ,. . 1..
~' ,'~".'
... . . ,
"'. . . ,". ;.'):. ', x '-.'.,- ':J · ,"'0:, ~t., '.,,
10. Teorema di De Morgan:
....
,,:.:,,1' " '.'!l ,.,:,:,,(,
\
x+Y=X"y
x·y=x+y
-
j
"'.
'"
'.
" ',' " '., ::~, ::. ;i ,j" ','.•.•, ,; q, .' ""
.,.""'~ .. l :'\~~;:~r: "'!t-,,1 "" .;
. ,.•
·I
~''I,~ ~ ~~ ,.C".:,' ".~~ " ," :,,,-..," · ,'"' ,'" '~
.•.
Sistemi digita,1i
,
519
n teorema di
De Morgan per due variabili si dimostra per induzione perfetta e vale a,nche nel caso generale di n variabili. 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 r~gola 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 •
-
,
,....
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 e banale: 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 schematico come in FiguraA.l. Altrettanto ovvio risu1ta il passaggio dalla rappresentazione schematica a queUa algebrica.
',' .
;~' . .
... ¥ .
., .,'"
:
.!
''
"
/\
r. :1
.
'
~=0--01 ~=C0-0~-
,.
;: ..
I~'
..
'~'
J;:,;'
')"
•. :.._
··.:..
.'
·... "-·
~ ;,'
~;'i' ' ~~,"
<->
r
01---
<->
~
D>---
Figura A.I Rappresentazione schematica della proprieta. associativa.
.
j :~: ';,'
..:i:'
".: r.... ',' ',""."
~.\~.
!l•. , ~ <"."
..:It'··
" )., . T t
A.2 Forme canoniche
=:,;", ~~", .',
'
,,,,, .
-.. ··
4f-r
~,".
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.
"1'"
!(",' -. \.
:'\:
'~)~:'
.'
".... -;,. ..
,:"
"
i'." .",.,...\ '
~i"
,
:'r '. •
q'~'
f.·,.
'':;'
. '''.. .
A.2.1 Prima forma canonica
. '"
:r'-
't,· .
.,,~
,
:'~~,:
':.. .
.:''.:.
.,
"i'"
1'"
,""< .'
,'., J••.•
,,~. .
li'J'~' '.j
,
.
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 e costituito 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.
"i~oJ.
;~. I,' \ ".. •
~.~>" . ~,J.' ;,,~. _,
Ii"o.,.
~.' ~.'"
" '~" '......
~.
2Si noti che 1a. proprieta 8 e autoduale.
"
"'" .. {{fli'li
'
520
Appendice A
'~
., · "~ ',i'!"', ; -,"'Ic;i:!\ : ,..•.f::' . "/1'1,'( \ 'Jl'~
""~
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: .
+ Xl' X2' X3 + Xl' X2'
/(X1,X2,X3):::: Xl' X2' X3
Sinteticamente si puo scrivere: y =
X3
... ':J,,~, ·
:, ~+~~;\ ,> 'of,{
~'\}( . '. ,':~1:':~ ".•"'1"'; ..
,:l;'Jf-" "
+ Xl' X2' X3
·~::,:~';~:t '
/:1_"'" :
;'::~:;f; ~
E 3 (2,3,6 7).
.,',''~" ""',
l
,.
··
0 0 0 0 1 I
1 1
X, 0 0 1 I 0 0 I 1
"
'.I..:~,'5
"':~~':'l '-~'~ .
•<
X,
"
':'.~'~~;~
..,
·'ii,;:,~.;t
X3 I Y 0 1 0 0 1 I I 0 0 I 0 0 1 I 1
~
-'..;.,," ",":.-. • ." <-
,'
~,:;.
'.
"'~ '
',;?!r
;;:t(~i'.
'..'L_ . ...,it .~1' ,t.,~·
'~"'. ,: ' •.,<,.'i"
,·;'J';'f;
:.:;;~ , .J,:' X'I"
",' v'~ ,"
"';'..:';;'~ .,.,,~!
·.
~'
'. 'l'~~" ,'" :, ... , '"",,~
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 23 - 1 = 7.
\.:!i' :";:(;{: r
,·:r'~~f.
'."""'~'
• • '10,"", """. .'...;,;(I :.: "J~l. ",.j "
.
"",.,.: · .• ";,1;\:<'' ~, .... :~,Ji,
""", '1:.. ~~ •
.' ·....':£!"'" ' '
. '.
'.'~
'. ·:1...- ."
.... ,\(,':0
:.' ,r....f:"~,.
·:.:' ,'"F",:;:. , ' .... ,-
..... " ..,
". .-u,~ ..
..... '.."!~,
·, ;~~'':I~~ .~I..
A.2.2 Seconda forma canonica
· • ,If,;
.':"'"
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 e costituito 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.
·-.:\.;;,:,I~, ," :,,,,-,,,,<;,
., ' .... .'..• ~" ,'1. ... '
.1:"'<'1
, "~J0,:9~ <' ·'·Y!j!!!<' • '. '''''''
"1?1:' ,',"
"1','
'.
·?!.~'ij
":::;;"'-';.',
,:.,,,\>,'~:). ~1l-
= (x, + x, + X3) . (Xl + X, + X3)
. (X,
+ X, + X3)
. (Xl
+ X, + X3) = n3(O,1,4,5)
.if
'. ""1"· '\'~",:,
La funzione logica rappresentata in Tabella A.l ha dunque questa forma canonica: y
.
....
"",'.il)" ':.;.....
",-'i
J'~., ,,.-....... , <,,:y.
.. ." ".>;.,',1
":'1''
;,~~.";
'~: -7
Le forme canoniche danno luogo a reti a due livelli. Per la Somma di Prodotti (SP) il livello di uscita e una porta OR, illivello di ingresso e costituito di sole porte AND i cui ingressi possono ancbe essere in forma complementata. Per il Prodotto di Somme (PS) iI Uvello di uscita e una porta AND, il Hvello di ingresso e di sole porte
.":. "~
'~.,\:":.
"\"';' '--,. 'ii
'~'''':''
'.'.' ,.~ ",.\;;.
;:,... ,--:" "-" .• '...
'.)~"\
.
OR'.
,. :,\"!
'.": '." v~·
.. •'.... ~
'~' \,l;\\~
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.
·.''''~. "'':'' , ·,"'-' "..,. ,:;l,•.:
.~", .
;~,l';:
,.,~l·
,,~.1f'
,. :', ""1: I , ,.• f,j} ~ •
1
";'~
',~;.,l.:...
...
~
, ,!I~. ".'.', , ';~.i',;:.,;
1
...~-t;~~,~ •...
Sistemi digitali
,::; . " ;~. ',,\;.,1 :,,,;;/
521
.~N;i .
\
\;';',;1,' ""
"
~¥~g~'<
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).
·1·' ,
>,:..:::' "',..
..~': .. i
.,..." \' , .!,;2,:1.·'
I·
";'"...;.
'~~;<. :,
•
:", ':';
,. , ..• ,." ,;:',',; ',., ...., .
A.3 Minimizzazione
..•.-'.'1 .... ,
Nel seguito si fad riferimento solo aIle espressioni in forma SP4. Si supponga di avere l'espressione: Aa+Aa
~~?
""",
\.
"
',~'f.,."
,".!:;....,.'~:;:', .
,..,~,.,
-'l •• ,~.· .• .. ' . ".
'~":'~.l' ':~
.. ,,
'."~"
'1;~~;~: ':
dove A e un qualsiasi prodotto di termini e a raccogliere A a fattor coroune, ottenendo:
i;::';:~ ..;
-e ~., I,~
...'"
~n
e una
(A. I)
variabile booteanaj si puo
";'~""""I'
,-":,,,,,,,1.: ' 'n"'.... '"."..:.r..'.~:'.
Aa + Aa = A(a + a) = A-I = A
'·o?;',.:.t--;;l·
",.l.\, i,').',o',,·,
:(~'§jt/;: .,or,"' ••.•,
",1,'..=~.•. ~ ,•..'.•.-,
"""~I"
""',t
'1);.::,',:,,,!.;~.,
..
:~,"'tf,:'
~1,l.,...""
(\
:
-.' :.. ",.~:,f, "~;;;i:\i.,·.{,
..x.",'~,." ,'",. '
' -<'-','51'1'"
''-':~''-', ••:..., ,'" .':'.,~
.
t'.l'\'I\."I ....,,:.r.I •. " ~\" ;;..;;.<":,1.. 0 ",~:I' .... ,
'.~
.
. ".,,~~'"
.
,
~'lt,J,:.I,. ~-l/" ,,'
. ·"'O;r . .•. ' ,-,,, ...... ·''"''r..,:,:'·
-
,
~ '.tf)~-*; .. #.)1%,.
;
.l~<.'
, .'~i,(t;~ , F'~;· ~'
"
., -""i''''' 1 ,.)'<"'....... : .:' "W"'~' ">,N'"
• una funzione booleana di n variabili mappa di Karnaugh di ordine n;
/(X1,X2, ...
,x n ) viene rappresentata su una
• una mappa di ordine n contiene 2 celle; ,
~;.a:.::"":1 <'. 'Z~~ '' '.....':\o.J
' .."':!j "' '.'~". ,
• Ie coordinate delle 2n celie corrispondono alle 2" possibili configurazioni delle n variabilij
",.",
j ~~Ij;.:::: "
',; 'J)~~"'"
.~ .J:~~\
• sulla mappa (di ordine n) I.e celIe sono disposte in modo tale per cui ogni cella adiaeente a n eeIlej
.. .. ,....... ".' ". ".;"~;J',." "~f.\I'.,
i, .,~~..... ,' '~""·Zi. ........, ;.", '
,-. ;,
"\ "'j ... ' " 1,,":' :•.'}. '' :Q''''''~
;. ~~,i:lr.·.
7:{",:::,~' "~ 'I~"
~
...! . '~ -""l'<\, , ..,...""
..,.;
',:
A',','t",
~,. .:~" ,~: .: ;.;"'':i
.;; :;';;t" .... ·"",11.:., "··i
",
\'
I I
-
I.
e
f! ~-·s.;.l!
"·, ,if;....,.,. .. ~~~;.1:,
•
I.
n
"';.:~.,
.'"
Si dice che 1e espressioni Aa e Aa sono adiacenti, perche Ie con£gurazioni 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 ~ell'ap 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:
I. I.
• su una mappa di ordine n si definisce sottoc'Ubo (0 sottomappa) di ordine m, con m < n l un insieme di 2m celie tale per cui ciascuna casella del sottocubo e adiacente a m easelle del sottocubo stesso; • se su tutte le celle di un sottocubo di ordine m 1a funzione vale 1, il contributo complessivo delle 2m celie e date 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.
II. I J
r
[ ..
',:•.,:1.'
.' "'c.r"i·'-'...
!..' .. ,,~,:;. "'''-', ·" ~;"' ...~ .
~,
~; :~~'" ~;;':
.. ,.' ·,·f' ', ". --, ""
'~' '<,~
.' ,~... .'~' "fi' .", '..... , ., .. \ f' :,.... "!'~' "
:{~
o,.::.-c:'
·x"..· .1"~r~l .,~"
I;,~!.~,:. ),.'1' 'S
~""."'ll-
~'~ ""~'
.,.
'-'flIk.
. 4Fino a questo punto nella scrivere Ie espreSllioni logiche :!,Ii e sempre usato it i5imbolo "." p~r indicare il prodotto logico. Da questa momenta, a meno di non generare arnbiguiU., il segno di prodotto vena omesso.
.
,11
1 """
..', '. ffiij .'.'"
I
522
''''~ '1' '•
Appendice A
<:~X("",::~;.
'. ' '{-/"i" ~ ·i~f1 :, .:.,ii;:':""".liD :~;t
..
: ~~ :.:.......
\
-
--
'" a
I
I
I
I
I
-
--
lie I
'."'i~,~
-
.
x
I 1
-,,::J
~'\'j{if.1 ,·:., ", "''',,, . ""'~ ",' c.:
a
I
1
1
I
1
I
"'".'. ,.~;', · \",:':' ", t,-,'I;!. ...
I
,.a.;_.l.'.':!.
/iA!:·. -"'~ i<~;::'~i :.;; ,-'- .. ". ,-.,,,
· " ... ~~: .'l"" "
a) l(x,y,z)= yi+yz+iy
-
, 'h~':''i -'~I''
b) l(x,y,z)= x+y
'. " '. ::b;.~~ i,~ ~'<'.
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.
-
. ..
"'.-,,' "J' ,".,:.;;.~
..
<~
".,.
.. :;2;1~l~f ';; ,I.",?
It,
• ~--,..,.. "'I; f",.;.,~, • • C·'
·
Si definisce copertura della funzione un insieme di sottocubi tale da coprire tutti
..
-
-
I I I
I I
-
gli 1 della funzione stessa. La rninimizzazione cansiste dunque nel trovare una coperlura 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.
.,
I
.:\~!l~;~'j~
·r~".~..- '.''
-.>.l~;.{I ~. , c_ '~'-...."" .. j ':"~,)i(' .,}. ,,," '.. " "
..
··" ,.....:.;;.. '"\",,,..-.. :" ·t·
.. ;,:';":;'i'", ~
';~.- ~~~r.., "w ~i~O:--~- ,-,, ••.••.•. ,. '~. .".r.<' • ,1
;: ~·':;.~t,~}'~~
';;:;2~ 3 .:« ~T • i
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 , prendendole in forma complementata se appaiono come 1 nel raggruppamento.
~ "~;i
· ;';"~;:, ·1~
"
i ~'."'" .;; ~.~. ..."
\.,... '> .'
· '. ;"'•• <,!'~ .
i:
•~.: .'(j'?-.p, ,~
~' ~:' !::-.' .i;,.{
"'>,r·~·,
.;,;: {~fi'~~:. '~
,:'':;.',';~f{
~"" "" -'''''.• .:-.~ ;.;:o;:.y ~: '" :,''' . •e';';'_ ,. ,, ""oj,..:;";, '". ,,"',"-' b;.~·:
,,:,·~t'"~·~ :~,
A.4 Altri operatori e altri tipi di porta
'~";~.l~ ,.'~':- "l J' . <•• • ., • • > -
}:,
<,. ..
e
Mediante il teorema di De Morgan 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: .
~.
.........,,"" '' ,'!:.'r,,;~ ~ ".' "'~';'<'. ,~
·' 'I '."'''1''':.'-, d. ~':1'.'': I' ',~-;w,
::~i.'~ :~~: 1
,:<~~~ ' ''', ., ,1'.,
o
:'", .';', ';: '
x+y=x+y=x'y x'y=x'y=x+y In cendusionc, mediante Ie sale due operazioni di prodotto e complementazione) op-
e
pure tramite Ie sole due operazioni di somma e complementazione, si in grade di realizzare qualsiasi espressione. Formalmente, i precedenti concetti si esprimono nel modo seguente: • l'insieme degli operatori algebrici
•
"
• l'insieme
{+~}
{+, ',-}
e funzionalmente ridondantej
e l'insieme {. )-} sono funzionalmente completi.
:..",,'."":'l: ''v
,."-,,',,,,',.) i, '.'.-1\\:,:.;,>: ~f"
..; • .,',. :' .'-',.-; .. , "
.1' .:... ,.;_ . \
~~·~~'\\;t '
:
:;\'.\';~:; " "" ..-...., ' ··~;:.,.H·.c· "
·
'i._,_~;,:~ ·
,"" ' ,.'"'i~--'~'
.,,',.1'," ,.,>,'.":' :' \.-=:.;, ;
'~'
/;~~-~. ~
., ..:!..".
"
"':~',-.' ' . {", ,
.-.':-::;;
.'i'::'.~:~ ;
.". ;.-:-;", .:..-';~-
I
~': :'~:;:: :
,.-"':" ,
AA.l NAND e NOR
•
,'
.-:'. ;:~!,
;~~t;
'./'. :i;'..
'''~'>': ~ ...:,-;;
Introduciamo ora due ulteriori operatori funzionalmente completi: l'operatore NAND e I'operatore NOR.
".:.;.~~ .:..;.;~c
..:;(~~;
"'." i:f'
I
·-1 $.:~,,-,::;,, , ""~ .: 'i'~~,:'"
,)
'..~~ !t'.c".,:!\ '"",,~, '"
,
,
1'".,'"'. . "j
." 1' • ~
";. ~''. '••
Sistemi digitali
.ti;. :.
523
1';.;'.'
t;~ .' .. ;:, J').,
,:r"
L)operatore NAND consiste nella complementazione del prodotto e si indica con una harra verticale tra gli operandi (Xl I X2), 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 .
'", :""
,' .~•..
;,'"
.. r.
~i I·...
"'" '
;".!.;i!,
,
'':'~; ",. ~':
. ~.. "
,..t
.~
;;]~' , .ro)·
;. ""', . ..
~":,,,
XI X2
'''"''
.~'1/ ",-, ' • }.'\:'i.'),.' " ,-, "
D X, x, I
"rV~. "n ·~,· "
w.t;,!
,> •.,.
.l
1.0: ."
~r~ry·'
3lt1
T; . ~.,~,7:,
XI
D X, x, I
y
0
1
1
0
y 1 1 1
I
1
0
y
X2
0
1
1 1
0 1
y
0 0 0
;i!i.'-
"hr""
Figura A.3 Simboli delle porte NAND e del NOR e relative tabelle di verita..
",,::_:,.
'(;- i:lii,lit '.-,.
~,.'"II
;;i~'(-t'" {;!Iii.
~~~i(~:,
{~i''{·
""".11 :.l'~·1
Le porte NAND e NOR permettono di realizzare qualunque funzione logica utilizzando 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:
;:""i';,
~.."
.,'
:~t.i!·":·'
, ~,1:.
:v,,:;,r,.
.,...l!; • '.
Complementazione
,~~:
x=xx=x!x
.;'<"~
'.\(0';' '. ~'<:t·:, , ~tt..~,":;"
'''~it' :;'I'
,'
lo;i , 1~~,.'
,
'~ii~ '.
x=x+x=x.!.x Somma
Xl + X2 = Xl +-x-i =
o.<;/CoO;'
'~'''~'
v,.,.. ,,',; •
,·'"!'..:i:;" ..
J_.,. l!-r
-,·.v .
Xl
';~i~<:
Prodotto
"'0' \:~:;' •
:"rF: hi"!' ,
"'''F' ·:.,'ill~"·
'i" '~, ','J'~
'''<','1' '
:.,~,
;'.l,.~.",
~j:~:':~ .'
"~;r:
'~'l' ,,~,,:'
",,',
;1}~",:. ;.,~:.
+;;
:':'j~lt,;
,::11'-'} 'b '
,ti!:~
:'~~;;"~'
+ X,
=, X,
+ X,
= (Xl. 'x,) = (Xl .
XlX2
= (Xli xz)
t ",) + (Xl. X,)
= (Xl. X,) • (Xl. X,)
---_.
X, X, = XIX' = (Xl I X2) = (XI I X,)(X, I X,) = (Xl I X2) I (Xl I X2) 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. a5sociativa5 . 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.
,?:'!if,\w. i~,~" ,.•~t:.,. ' <~'I\ ~.' ·~ti
.
'~i1!l. "~',
""' ," ,':' '';1 " " ", ,·l,Jl;·,' i.'~t;"
,~,
5Per esempio per il NAND:
albic = abc = ii+ Ii +c # (alb)
Ie = (ab)e= ab + c
'. "
.....
Appendice A
524
x
cD
x
x
i
cD
(
x
-
xl
xl+x2
)
xl+x2
x2
•
.,
xl
xlx2
x2
:', )
xlx2
Gj;: . !;l;~t
Figura A.4 Costruzione delle operazioni di NOT, OR e AND dalle porte NAND e NOR.
AA.2 Reti con sole porte NAND
0
~J!YL:' ,
;.::H~'~:,;
sole porte NOR
-.j";iff!tiY" :
"\'i;j",~,, ·
. _,
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.
'-"-'"'~"
:.~-::~~_J:~1~ i -':~~~;r5~: .i
= ab + cd = ab + cd = (ab) (cd) = (alb)l(c!d).:::,:,,;. ' -;,,'gi'~0:;,-""::'-"(':'" z = (a + b)(c + d) = (a + b)(c + d) = (a +b) + (c + d) = (a P) .j. (d d) ":X:},. , z
Si Dati che per la forma SP tutto 51 riduce a sostituire gli operatori AND e OR con NAND. Per la forma PS 1 medesimi operatori vengono sostituiti con NOR. Si . Ia F'19ura A .5. veda, per esemplO A B
A
L/ (a,l Rete di partenza
z
JL
c
'-/i:i~{M' : ,>;iAlf4f:
_/~:~i~;~<,:: ".. ":'.' "\'V''''';:;; ,."-, ';-',. '.~ -::i?jM{;~ttf
"-
:d;t,;ff@~¥;
"
'"
,
, ,:·i'~,r":i.':':
. ,-/'~" .... '" "'"
-".~,.,.,-
;:r
': ;)":K~ifW .
,:~:i:;.~;@~Jt ' ",- ~::~1f~1:: ~
":::~~t~'r A
(b) Rete equivalente
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.
"~'d"N;:', '
.h'-~1;\);';, ; ~,. '."
':-;_:iJ[&~i- ~
,; ~~,~":,,,"', '
, -~""":"l;:' "",-",,;,?,"' '.;I.:.{,\,,:, ••,'
.. i':"''''.tP;
;
",~::I",,;,
AA.3 Una tecnica grafica per la trasformazione Un modo per passare da reti AND lOR 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 e in due passi:
..-c;""c"",':
r
""d\"
'"
-. ',.,,,!. ,.' "<
_ ,~.h(
."""",
,
,:f{J'~'" l
': ,::\;~~,~~ J
) Sistemi digitali
i'~:;;;~,-"V.·". J
t=[)-c
::'~::~:
- .-'.",'-
)i~:-
.j;:,:: ...."" ' -'-, 'e·::';,'
A B
..
• ;,_"
j,
.
(;H~:!';
,-
525
0."
~
NAND
D>-c
[)-c
~
NOR
,
I.
L)-c-c
Figura A.6 Simboli equivalenti per Ie porte NAND e NOR
".'"
)'~:fl;:
.::{J!~~
).
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.
~'~;:"
,./{:.c::.
•
b) si sostituisce il simbolo della porta di uscita can queUo usuale del NAND ottenendo la rete di FiguraA.7c.
;t{;~lL
:~!i§~~:~~,
·'.1,,_.""~.,,· -,
""".,'
,
il;\tr::·
,•
ijB'::';:'
i, =a---Jf
'.";C.;.
-';
,'~: .. -"~'",
,• , •,
,
•, ,
,
•
,~
,
,---'
.. ,-
:'fj\:';[
:)!Jif;,"
:;~i:,';-"
b) lnseritnento negatori
a) Rete di partenza
, , ,
J
h
]. ).
c) Rete di NAND equivalente
Figura, A.7 Passaggio da rete SP a rete di NAND.
L
~~!~;~::,:
'''''"'J'~'--'.-'.,', ,. :. "
I
,; ,i2:~::t:' "
:'¥)'1'J"
--i""".,-, . -,,-:;.. .-
.';~;;Fi;<"
'~~f~~\:'i:
~,:~:,;:~~, _
A~~~G.-,·
'-~i:~~',;' ~
;:!,,-I;!:,: "e,., -
~~~~:;.-
I.
AAA XOR e NXOR 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 e vero se e solo Be Xl i- .1:2· In termini algebrici esso viene cosl definito:
'O,\:fi;:;-~,':'j
,:"j,i,' ;::''k. .'
y
=::: .1:1 X 2
+ X1X2 =
Xl
E9
X2
..
)
~\;'';':' ,,,.:,,,
-..~..,~,,,
,_~_.!'.' .
'
<',.--
"'_'li" :"
,."l;_
l':~t'-~-
Jl~~~~'
~~ )~ X,
X,
0 1 1
1 0
1
Iy
1 1 0
~~
)[>-r-
x, 0 1
I y 1 1 0 0 0
1
1
).
x2
1
Figura A.8 Simboli delle porte XOR e NXOR e relative tabelle.di verita.
j).
,; :ql:
"
{,~:
,J,;"';,,,' :;:~ :::~i" :
.
,o"~.
• .,'""..<
I I
-
'~~i;o~' n~~
Appendice A
526
. "• • "'-'::lll','-'
-~
•
"
',. .~)"
"
'~~";""-
:,01';.·
~,,:.+tJ
Fr.:':
'I" .'1',
..,.
., \£~;.; ';:~'/ 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.
":~";'~""
•
\
-
: '·r,'},:, i:':'~;
'.
",/:r,;'\~i ;.:-~.:
b
~:;~;~.:. ;i'~J "-., :':,:7, ';-':" . !"".' " ,.
, b
'-
-
-
-
,-.
\':' 'ii--'- :.• ;, '-
',. ··...,ii:.'4.! ,,,:-'
Figura A.9 Realizzazione,di XOR come rete SP e corrispondente rete di soli NAND.
""'~'-' ·.... ":
:. ;~',~i~i\' .,,~;
, ..;.' ~., ~r;;;<.i'1:i. >'~" .~'. , '~".,.. ", ,.,l,." ",1' \."", '~.,.,
>;~~:~::;t
-
-
",.",,-,L_
·,(. '~:1.·i; '~{, .,::'~~~- <~:: ,." "'" ,': ),r:,~i '~}" ,'-'\',.. ,.,
./
-
'~.
- ':'1"="" . ',,=
,
.
,q",-.
~~,.
:".')Jg ~~f:
•
,
:,;;
"
-"",..'ii"" ":~.
......
-
e··" Co
.,.
':;".;::,~. (,~:,
.. )
·'. ·~bl··" -~" • '. "ii';I£'~ <"'~' · "~:n,"'~~' :,~' '.' ..,"'~\" ,.,10
'~']Ill~~C :'i:.'
In FiguraA.lO viene riportata la realizzazione ottima in termini di soli NAND,
I I I I
I
.., ;,,_,'.4,'<,:" ,'1,'. ~., ,~, I"""1 ,y..,. ."'.' ""'l"""" I
::;~;!;~~1~~~t
•
....-.(~~I. 1;••.' • ',_ , ..".c . ..
I
r.c
',,;·"~1b·! <~x.
"...
•
.
... "",'" ~,," ., ""'~' ., ..... " , .. , ..~ .!,...
••.• '-
",· ',";,,;r,," "'''; --~(""""~~
-'.'. >'........- .
.1.;..""",;-;, , , , "-:;: "'
,
'•• -" '. ,,I;"c' ;'C"1
: •. '-
,.,'.:~"..,'(,<" ,.·,l - ,>"".:~,.}, ..' ,J ',': ":~t)-~,,, - ,'".
Figura A.IO Realizzazione ottima di XOR come rete di soli NAND.
,~
.~.-,".,.~,
•• ",.-,", •• ~
.;.
,~",.,;.;<1~'
..-. ..'!..(.~.".... 'i"' .' ""-.,n:··' c·." .;: r..."c-I':,·. s.~" '-~::'£.,"
-,
L'operatore NXOR - identita - da. risultato vera se e solo se algebrici esso viene cosl definito:
Xl
=
X2.
In termini
'·_,·:t~·"'i "'
;.'~::~tg ~~, ""'>"'1:"
,. "'J;'"'" .~:~. "'~'. ,.l. ',~
'..
~ .,~",,-.,
'., '1.~',,"·"'--< "", '~~' r:"I " '0""" ....~"··~·-··,· ~~ ,
" ' , ..-0'
'"
y=
Xl X2
+ XIX2
=
Xl _ X2
;,r ,.-" _.''
""1'!~i:~; ~.~ . . ._",
'~I:...;.. ~: ", ,'r"'''''' :''
~"~""l~ ",! .:':,;ji.,:~\'.li i".: • ..." --:. 0
: :"j
~ ~l:i!:JU.; "it ';:~'·~~:t :~
"i ",<;;~~ }i
, l~,,-~ ..
A.5 Esempi di reti combinatorie
",j~i~r~; :~ ....,.'" ,. ·,:, .,..-, ~
~,~
"" ,.,{~,~ """, '
,.•·'It.Y'£'' 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.
".
..
-~
~~~}jJr~i
.~:l}~l~}~~t
,,', ,.~~.,.,."."" ,,..,,. ,j
~·rl!'.t<';.i'~ '.
'''~",:'.~j'1o:"., "'
.};:.o,:-;:~>
r._
ii
:,:.j:j~'.:!.~:"1f <, <
•
\
A.5.l II controllo di paritil
:.s,,:~:r,, ~i
.. \t;-.:~ _ • A '-,<"- '
· .;",:J]"~,~ "'~~""';'"'I
,:
",':;';':"! <
I
)
l
Nella trasmissione e memorizzazione dell'informazione, una delle tecniche piu comunemente 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 e pari 0 dispari in numero di bit a 1 nella parola stessa.
•.i,.~.'~" . . !- . , ....... ' .' "-''''.,''-
."".
.' "' ' - ' .." -"',..,,,!.,;, ""'.-",,, .-,"', "-'
"
,,,,(._,:,,,,,,
'h" ...,. '\::, _
, ' :'~/~~" ~~
· . .,. " .....1."
" li..t,,~·"Z ';, ""~~~" '~''''F- ~ :''i'ii~>r~~:'
" ';~~~1i:1··
"
:
• '
~.
Sistemi digitali
527
__
,!"
·
/' :: '.
I
Una porta XOR a due ingressi e sufficiente 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 ingressi6 . La rete di FiguraA.lla, che calcola la parita su una parol a di quattro bit e [ABCD], e fatta esclusivamente di porte a due ingressi. Se il numero di bit a 1 in [ABCD] e dispari, allora Z = 1.
;.:
;,·
.
.
:; ,\
:,
J>:' ""j
='
,
.
~~:
: .~, "'"_,
,~,
!,'
-':',' .
~~JJ---J
:l·.
;::.:'
"',
......
., ,
~~
I~
)." .;:.-'.' "·"c'.. '
'
~
1.
';;~'..
'.,;..
'i~
:
I"
:'
0; ',: "'" 1,...,.-',
a) ealeolo su 4 bit
t:;"
~~ "
D'1D-
b) Scelta parila' pari
0'
p
dispari
Figura A.l1 Cootrollo della parita. di una parola. di quattro bit tramite porte XOR a due soli ingressi.
'.',_....
.c:;·
.':'~
.. ,,,
',','
. ~ ••;
0;- •.'
;i' '~'
,
~"'.' ..,'
:'~:;
(~."
-
-!;."~'
l:,~!: J"""
.--
.
'!!. ":,.
~:)o..~
.;::,.
.-,. "', c"
'~'~
,
""'f-·
'~{
,
,~;i\~.
.,~, l....'t.".,.' ~~'
r"",, ".!".; ,' '-",'>'~' 0
~!l.·
''''C ." ··~< ~ ... " 0
;
,~~.
''''~-'' !,/,,: ." :'~",'.'. ."
tir.,;,· ~~.:,:
il-" }i.[£
~'"",~ ,.,. r- .
.;..'
...it;· -..
~£..
"
~~t~;
tt::::'
-~;M j •. ,
,~" '!I\';:'"
Per chia~ire come viene effettuato il contrallo di parita. si cansideri-ora il caso della trasmissione (parallela) di parole di 4 bit. II criterio eil seguente. n trasIflittente forma una parola di 5 bit: [ABCDPJ, dove il Quinto bit, detto bit di paritd P, e calcolato 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 parit~ wottata (pari a dispari). Per quanto riguarda i1 trasmittente, la rete di FiguraA.llb, con il semplice arti6cio 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 Figur~A.l1b, ancbe per iI ricevente, secondo 10 schema di FiguraA.12. 8ul ricevitore l'uscita e stata indicata can Pro In ca.so di errore si ha: '. • con parita dispari: Pr = OJ
."
iigt '.
fili."'" . '
<",.
• con parita pari: Pr = 1.
iIl- ;'"
_,.t~
.
•• ". ,••
::1l1 "J:;"
<~::\:. -'"I,;-"
'-' '~~ -, ".~. ... /.....
' ... ~ "~', _'. ,I"'.
Vale solo la pena di osservare che il controllo di parita. non riconoscere l'inversione di un numero pari di bit.
e si
in grado di
,~,,,,
~4..:!' .'.}t,.,
~'
·~i.
I
,': , ~
,r:
· ~~(
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.
•
.-'11
.
.,
"'!'..
'f';!.
'i'~~ '.' ,~ ;~
" r' ..1
"~'!::'!I";l. ;
528
,.~;'~i1~. ( ·.:7;e:..,
Appendice A
'."'~"'I' .,-~.
- .. -", " "",•.it'I!-'," -"1'~''';' ". , -~, '.' " " ,I'"~ ,
I
....
".,·r:,.. "\.,.. "
'......,'''''. ,·';~1 ,',.' , "
I
1-'". • .'.", '"
'.:, ~{5ir~
,
': "~')i:",
I
..~~ " , j
I
;~";f1::': '1''''''" ""', ~,~,,,
TRASMETTl TORE
.
· :"~'·l"
'':.:;.~~'':~ "),;.8;;".;;
RICEVITORE
''!''.7i-:~;,; ·.,/f,......
. J .. ~!,
· :"~'("", ,i I"H;·.' ~i~ ":)'
'~'tl'.~
A
-
~
p,
Pt
B
C
C
D
D
p,
p,
-_.. __
:;"'"
A
'- B
L..
.', ' .~ "';,!.
---" --_. ---
._-~-
OJ PARIU'
:'!. ',.{;:i
·;~~~1~~·":' · "",,~,
' '~!lf.:~"; •;" (l:f~'.~~.
..j>.~"" ", :'"",,,..... ' ~"" ,:~.
,\<~·~·t,
·~~.',..,.l
'.'"",;t],. " ,. ,,'"
Dl PARITA'
Figura A.12 ControUo della. parita di una parola di quattro bit a mezzo di porte XOR a due soli ingressi.
Nell'esempio illustrato si e fatta l'lpotesi di trasmettere in parallelo i bit della parola. Di normal specialmente quando gli apparati sono distanti, la trasmissione avviene 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.
: J,:,!.,jj.,'.; .~.
....., :.: ,-.,.,'-'\,.",
rr},., .~. . '"
."
.
""""".'.;
"~ r,.~.,,,,,
· {-:~.'fjj
" /~i';;':: '••7'·"'f"·'·'" , .. <, .. -i-,l,:'
'i~··'.:~"~ ".~ "".~",
·r;,'"".--:"
. ,~.. <"'e
i.;l·~~i;'
>.
,,)::~;:>:: ..\..,l';~\:~i _..," '.~~,.,1;.."
"~'''~':';'I ••
'
y ....
,
i""(~;,'"'~ii " J<~,
,;·,r.-..:"" "~~I;r,:'<" .~ ·'.P
• ,. ~".,
. ..
_~ ;:':''l ' •• I'
··}·l'.'-i'i l t
:;".,<.,
':"".' ~ '. '''~~ "\'..
' f
··.t·:i,':'k.'l
A.5.2 Comparatore digitale.
;~
'~'~"":~ '''1' .. , _l> ,1'
La rete di FiguraA.13, effettua il confronto di due bit. Le u5cite vengono denotate rispettivamente con Gi , E i eLi, E facile convincersi che per una data coppia di ingressi Ai,Bi una sola delle tre uscite e vera. Infatti: • 5e
i due ingressi sono uguali solo Puscita E i
..
''"''',+, ' "' ,; \i";~'..
""t.,,~ .
.,....... "..... '.
,. '.j<;.... ~,,.-
· I":··:·~."
': '/~~';j1;i·
-:" .~;.;:
e vera;.
e vera; aHara solo Puscita G i e vera.
"""."
"':":,~:i,::
'-.·l"'~':t.:;',' "'... ~.:, ' i o--·>;t\ ' i..","•. ~
• se Ai < B i (cioe Ai = 0 e Bi = 1), aHara solo Puscita L i
'
• se Ai >. B i (doe Ai = 1 e B i = 0) l
"'"; ~!~f~f:,! I.,;,.~,
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
ovvero, indicando can E s ,E2 ,E1 ,Eo Ie tre condizioni precedenti, si ha A = B 5e e vera
Ja condizione E = E,E,E,Eo La disuguagp,anza A verificata:
>B
"""'("
~ .'" '.,'' .'".;t".. ,~ , -'''''''''''1
'''l," .:\.':)'¥: fi;:'~~~::' · , ''',, .' ~f'::ti
· ""'.:" ",':';';'.";'" 11:," 1,1., '. ".
.
,.
~,\.-::
'.
:;: ,~"~"
'~':I\':l~
··"t,;,,
' .>/-..., '
"'''"..~.. ,,'...... ·
richiede che una delle seguenti quattro condizioni sia
.' :rit....: ,
": ;, '/,.;
"'~-t'.
..~1Yi·
~;~"'~
'. ",·.\11.... ~\~"''''~,
" .', \:i~i;
'
..
.j;:"
,'1'.'.
"l~'!I'" • r!r '".., r~'" 1. ',:,
(;,'d:." '<;"J:;
Sistemi digitali
';, ..1,1, ..., {".It" ..•, "';1\., "',:''''. .",,-:~_. ~''''~.' ,,1;'.~,l, ,',
529
..
"'"IT'" ,,."','.',' .
Li
'."'. '
,;:i:,~
.
Ai
, ,,;,~,> '-~'-
: i}~.
Bi
.-,'~' -':' ,..."
\. "J.
-t
'/..... .,",..'./ ~~~.'"
'.;:1~',. ""., '·i'.',,,,
(Ai < Bi)
,v
'I;';'~, .',. ,.
""',.' ""'\,'
\-
,
I'.
,,~,
1-
""
-
Ei
(Ai -
Ci
(Ai)o Bi)
I.
Bi)
\.
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.
,: ?".:,
'~"'1r,. '-'",1,
;:O ""1."
•
. :'."h,t
.. !~ '~';f,:: ~'l~' '.1" . '~'" ,.~
A,>B,
'l' /";','." . ~""".,". .. ~ ,Ii.,..
l., "~.,
A,=~,A,>~ A,=~,A,=~,A,>B,
; ~~J.I(~~ .. ; ~["
;..... '~, .. ,., ","~""" , ",~:"
A3=B3,A2=B21Al=Bl,Ao>Bo
; ' ";".'
-7~,,'.:
:.0~:· ... - ';;1,~1:O:I" . .c,,;']...
"'-1.'. :';;.,., ~ " ::-:;\!/.(} , .-t",,;,,~.
,
" -Jij" ...'..../,..
,. _''' :, '.ih.
: '2n:·:: i <,,,~~ ;.~ ...... " ~','t"'.'l ,."""'" .•
I: "::;',"'i.
,
i~, ~"I!"i1".! -'!l ....
",,··,;A~,l', . . ;><'1" ',' ". ""'·~lW;"\,. , -.:1 .
. . ,e':~!,",. ",'
l. "'~1if.
l •.•
'"I ,. ' "'¥iii' '{'''''<.','' ,,-,\,.
' .... .; l. ~ ":', .' .
,
',
'~','h. ",':,0,. ,
~, '!'~., " , . .,. 01.
, '......,';, • ".'. .; ;""-"" .,.
...
H'~.~,
".
-Ii,;.;'
_
• ;,i..'~ ...",.". "'"., ,'. -.. :~;'l,.;.J
·f ';;~~(:,.
:~ :::L>r:(' :: >.iiici '.
'. ".~"j:t'. ,. ··3>1~··' I \·, ;ji;"~1,': ' ~~ ',' "1,':' ' .•
"
""1
~l. ,.", ..... -.,~ 1. 1..,i~I'i' !, .;;'~h',}~-: ,,;~..;~, .... ,
,
"' ~ ·r"; . ::. il:r;j' . ', ;~~Yl-' -''i; ',"", ~'~'.'~;'
""'; 8'\,l ".;; ''''r''~~ •. ". (,, "'!.'...,~,
""'.,.., "'> 'l'}~~':;' ~,\ : .h>·,
.•..
\ •
Le quattro condizioni si traducono nella seguente funzione booleana: G = A,B3 + E,A,B, + E,E,A,B , + E,E,E,AoBo
(A 2)
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, AoBo
I
(A.3)
\.
La relazione A.3 da L = 1 se e solo se A < B 8 • Ragionando corne sopra e possibile 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 per cui, nella pratica, si preferisce seguire la strada della modularizzazione, ovvero, si preferisce costruire componenti can un numero definito di ingressi, impiegabili in cascata can altri identici componenti, a.l fine di confrontare parole d.i dimensione qualunque. Per esempio, i1 dispositivo SN7485 e un 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 G mentre non viene riportata la parte relativa a L. Si osservi che i termini Eo . .. E3 vengono calcolati
:.:. ",;~.,.
;"" ~'~".'"
.,.' ,.,,\o~
··, ';'o!l~~
~~'l'~j", .
,~f ._.. '''",,'~~ll'' , ..
;~~;, _ ...
\ J
I I\_.
I
..
t~ ·)7J.'~; ,
-
1
,; <~J'fl:
'.~ ." I, '., ' .. '.;, , -" ""'~""
•
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.
I·· I
, f'.!i;;;, ;t"",M-• If
530
.. "" r,l v:'~ ''':,.,'' \.It''~ ·'··.."~'~'" ····f~,,·~,·
Appendice A
.. '" '¥I"
'
~"7?1
~~,:.{ • r: ~
.•'l.
.>-;' ';':1:';p, .i¢.~ .'.' '"...., • ~'" ,'jt;;"" '.. "."';.1'.11.' •. ~'
YVee
'.
I
-:- TTl Ad! 0-1\
-
I.
".
l.
.,
I.
u
I.
h
,.' '''':11,' ,,~' ,I ·':<,·...d·." ')l,;"~:. j '1\ 'Jf ,'"",
",.,.'"j t'h' .":;'i~; ',,1'1. '-'1"
IIIIII[
· "'''I\'.~! '.. '...J
"'~'",.j
.,lIi
7485
Ad I
.-8 I
· "~Ib\,
'.
.":,"~~I"~ ~.~ 'I
I,
8.
0-
"
.....
1)8 I
"i'l:,'·
." \i~,\""" '~-I'~
I.
~" "~;:
-".
.I. ,"" ~,J~ W.-r. .;:,~! .~ "
(i\>1i' '. ··~0~ l_ . . ~. j ,*'''
·,.; "",
.. <',"'1'-1 '~"'I' l',., .' ~"!J';' ~'>";
..L
•
,- "..
'.', ',',>j,
_I ::'-.;r
.:' :;~t:~ (~l,~;
AI
j,
AI
AI
8.
L
· ,'!-Ct" '",,0;:.. ., :t,rr1-,) '1"," ~~<" '}!" ".·l'·..... ,;·,,',", 't','/",
0-
0-
'..
,
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 decodificare un indirizzQ. L'impiego di ponticelli consente la massima Bessibilita. nelPimpostazione dell'indirizzo eli confranta.
-
I
....
""'j;:'S, ..,.~i , ......, , \.<''1: : ''-''',LI _''I: ".Ilc~'?l';" ~",
· ;~~"'H' .'~":
,. ,~. 'c::{ >~,. "'" '/·d·;"ti '~~' ,~t:EIil,~ ~'''' ·"',,';:r:1 ~""!li".;l ··' •• u ';';,. .~.
... ;J..~!* ~lt"
'.~'.~..".'
),-.. ~ :,Il'fff,: '*,:
,!,J.~,~! ,~' I · ,1'~·.~_1 ·tt-
,. ''''~!I'''!' ~ I"~"='" ,,~ " , , •
,"',,i1::~:i~0'.1~t; '.... ~l,l., "I,.,.
Vengono ora approfonditi alcuni aspetti sulle unita. aritmetiche non trattati nell'Introduzione.
.'
".
'''1''
~j,.
";."",,,-::, 1'\' ',r'" '0"
\'~''i:ii'( ",~~
. ·I':~
, ,~·t"'i'~.",,, • .: """", \1''." ~'."li."" '" ;,'. , ." .... ,,~, .;;.o!~
'.. . .""I1l. ,. ;..~
.
"]J'Il:'~' ',,,. ,,".,
~.
~"'" ',';<;fIi\~~~' g "' I
I'
":r."~ ~ "'~ ,.'
t,
<
.,;,
• ,
!'·;~!l"j'l I'
"ill))\)l ::1',"1 ,"& ,.~·.r~. .,, '.fi I~II~ 1'1 ~ ·
'~"Il,',WJI ,.~
". VJi,." ,oJ I. ' f " "
·:';~'j;J;'~~ ~\'ir;U"- '~(_ ~. j' , •.... •.,'':fiti" 't", - ''~' 01:' "Jot·'""_ .... ~",.,."
'j'''.,:"",'i! · '(,,)I")' "
'~"':.ir, ..""'
J
t.I·,'\,;,."'t
r
A.6 Unita aritmetiche
-
C
, ';;~""" ""~J
giocato da Gin e Bin nella schema di Figura A.15.
••
"
,
'
con altrettante porte NXOR. L'uguaglianza richiede l'AND tra la condizione di uguaglianza 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 p~sa essere la condizione A > B sugli eventuali bit meno significativi. 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
,
,'.~i;~;· ~,
I)'
C
• I'
" ··1 >~.\i- ",. "
I,
.~I
,_'".,
• , ,/'1- ,'10,: I
" .'. 1 ••~..-,
74858'
10 I.
UI
I
:'~:i ,.".~ ..•i,: :'~J'
,,~~
I -
, ., ::i.~i
.>',.-. Ii "~h/.''''', .
'r.."'~
. - if ..t~~ :;'\ "''1','1;:' {,.. "~$f~'i;lii, 'i.
Y'VF::<~ ~:
,,·,·,·,yjV~ ,: ,"rt.~h~'( 1; •r,.1••• ,"1>
· ',,"~", h)~'
"""'l' t, ,,: . 8'-~,
A.6.1 Somma con calcolo anticipato del riporto
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; = AiBi + (Ai Ell Bi)R;-l = 9i + PiRi _ 1
" f·",.~h~' 'ii' I ".'• ':"""1'1..,' ~~ '-.".~ '" ~ .'.
. . ,,*'),\~, '1. .. II .,
, ·'1••
(~""J I
1
'~,);~ '; ''1.~.,": .. :,f · · <;~1:·" ,~ ,.,~.,~ 1
...... .... ~
·,.'!~·~i . t..~, ·~t
.. ~-"'}:! '~ ',~'.~~' '\1 ',,,, ':J,'.;, !., , .... ,".;~ )
• ."".' ...
t ',,-.1-1':ir
~·,.;:q!lr , ". ~
,
• ., ',. ".:1,",1,'1' ,t~ri. '•"I'
'···'·'I"I''I! " ~!., '1:-\: ,', ;.~ , ,"1,.,
",·)Z-ri:.r '.'
"'., Il!'" "".
' •.' ""
•
J
(
:·;~~;tll
,
•.•
~
~:i
".
Sistemi digitali
,·
{ •.
531
~
..·.
.'" " ~
I"
.'.' ",'
so
;l'" ':, " ·.
"0
" ~,.'
Bl
AO
10
"A2
A1
B3
A'
.,
:
I'
"!',
"
~·
"" r-"
'ii, ;'
rf',' :
i,· ':""
,
of
~
./
.
',1,:.
Y
'
.' '
"" ' "r': ,;,.' :'
III
""
,~.
"
i", '
I:' "
,~, I
T
:!"'.
" .
"t.
E: (A-B)
';i·
''j'.
l.~""" ...
.". o','
JJ.
:\y~. ~
:J.',
, ,'.
"•• ,
t'."
.
;/Y:'.
,..i'" ,
'"'.-:,'
':"".~,
"
~'"
~"';r,', ';:'.... ', ,:>:,.,
~
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 e il 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 e it 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.
i'.-'
D
Ri-l
"".'.
.~"it. ~'
g~l~. '~''.'.' ,".t" .
'~r" ~ Ii.; "
Ai
"
1 ,~ ... ~"'i'l'
~:,\:,:" oJ,,,,, '.'.,
'~'1~ ' '" •.
..
" "_ ,·r'
,
pi
y""
gt
RI
-
Bi
-:.·,b{:'.
.t."."
SI
Figura A.16 ~nzione generata (9i) e funzione propagata (Pi) per iJ so~matore completo.
"
'l'~-:. i"t"',,' ,"
\1':<'. .r,.. h~
.'<~kt;,···
:~+.'.
:~.-t, ;0\"• >'....
' '"t,;
,'" , '~.t"
'''"' ••',
~.;flL .. , "'.'
I;'.';"
Dunque:
,.'
Ro = go + vaR_ 1 R , = g, + P1Ro = 91 R, g, + p,R , 9' R, = 9' + 1'3R, = g,
=
=
+ PlgO + PIPoR_ 1 + P'9' + P2P190 + p,P1PoR- 1 + 1'39' + P'P291 + P,P2P190 + p,p,PIPoR- 1
11M"
;Ai,~:, ,fl..•:
.....
~jI!i~:,
1';"""
·~m·· t;~J;
~\(t". 1:'.'" ,:iH. )O~"'"
..'
rf'~'l . ij',':;:, ,"-
. 'i'"' 't'~·:;i.,-, . '~'. , 'ji, ~,"rr;~
'I"
, (",.
' ';'1t
~',:t" ~,'. "..' .
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 d~i riporti viene detta Look~Ahead 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 .R3 e posta: G \
:=
93
+ P392 + P3P291,
.+ P3P2P190
e
.~.~
··i~:i. ,
,.,
532
,
Appendice A
.'!'" ,.. :~.V~(. ", · .. .. "1"',..-" ": '" ,\'!',\ -
, . "~I ,.
~,I,
),." '"
~ "~.,,;;,:,
""~'J'~"
,' ,~ '-J'.I:...
A3 83
R2
A2 B2 Rl
I I ;=I~
I I F-
PA
,~
c~
"
I I
PA
CI
R2
"
I I
pI
"
~
r-
,~
" .1
I' ,2
"
,-,
1.0 80
RO
)'A
~.
"
.,
AI BI
·~:,·.:..b •'•• ',t'·,~,.(
. "'.,,::-, '-/;,,.,-
<'I-:r;i;t~ }.iP' , :.:',I ;:'.,..!7l
PA
p~
,.'~·.~("l; ,,,,:~,
~~"·l~ h"f:"",
:
"
" " LOOK-AHEAD CARRY GENERATOR p'
··I.~
· 'j."~,l{{~
....,-,
· . \':~i;~:S
.... ,~-l;tr<
..........."'-
, " ':r,.,:'r .l ' .,..,
:••''''~~;: ~ ..,~. ,~,,<.:, ",".(".1" .. ".;,•
f-
I I
, .'1:;:.rj\'l;'!1
·";'.'~<1'·<'1;' ...,-. 'J ".''0\' .\1' ",,;. :: ,\. ' ".'" ,.,,",',
G P Figura A.17 Somma di parole di 4 bit con calcolo anticipato del riporto.
"'.
•.
· ·;·;.l'i:
'"a;
-""'~'" I ,~ /oj.;• ~':t. ',M' · ~~.. .." .
'J.':' " : ~ 'l'~" J""""~~' ," ~.~. ",
p ;:: P3P2P1PO, R 3 si riscrive come:
.~~ ,,'. " ' ...'\ ':".",":~,'~'< rl r ";;U ,",
',.-'\'I..~:;.',
R 3 =G+PR_ 1
''''l',i)~~'Iw.l1 , ' '. <11:.~
"l<'''' ·.: ·.?t,;f!.i~!
~,\"':Hf';,
quindi possibile impiegare in modo iterativo it calcolo anticipato del riporto , .~~~ c~struendo reti a piu livelli, Per ese~p~o, s~ supponga di volere somm~e par~le di 1~ :'9i~ bIt. n s~nu:uatore pub essere cost~Ulto unplegando quattro Sommaton da 4 ?lt l ?ome :',~[.:,~~~;~~ft~ queUo di FIgura A,17, e un ultenore Look Ahead Carry Generator, come In Flgura,i>r.;ffl[~1') A.18. . , ~~~~!g';fJr '>
E
Alll-12
AI I-a
YI-er--
ar,-'2 RU GJ
PA
1'3
02
,3
p3
"
R2
12
r-
R7
FA
1'.
GI
p.
1.3-0
l"
y-o
4
'3
FA Pl
~
S7-4
,,;.
',,;:,: ..'41.
,-,
':,!~1 iil~.~;
"': \!)~l'~(
'Jp1~~"m!~~'1 .l!", ,,:,~
..
"',i("
,
"
"•• J;~.:!\'iJ,,' '.c","·
FA
,'. :~'1-M' ·~~,~~jlV , 'l~"" ~"'i;-
'~~'" *"',t. . I""
R>
" "
,.)"'~~:I~";' ~"1't,,,~,~,
33-0 RO
LOOK-AHEAD CARRY GENERATOR
CO
,,'. ,':;{!r.jJi't
pO
,-,
, 1:,'.1;h,.i,
":,l,"~''''r~I,,~, ,
'i ,J;(.;'t;:((
,I." . "·'i.'i~~;.
',··.·~lti··ln.;!· ."h i.
I I
·r.
G P Figura A.18 Somma di parole di 16 bit.
". •.
'\ "
.. '~tll
su-a
SllI-l
'"
1.7-4
..;,dM.ll '~'-',.' ' ~:>;.II·" .;
~
,010<
ft~ .~,
,.".-
• .. ,~ . ....:- '
: '~,,';,''':lI.t ,
i'tl'>"!i<"":
n sommatore e castruito utilizzando 4 sommatori
. "~.'
-"r!I ' ,t: ' di 4 bit can calcolo anticipato del riparto. Ciascuno dei sommatori di 4 bit impiega al suo ".'·:' .'r"'!~"'r: .'';"" ~" ,';>~t.~,i,f : interno esattamente la stessa rete per il calcolo anticipato del riporto. ,,' ", ',I"'. • ",rJ1"i(j).·. I !' .,.;.~ ·-:tl:t·~
,..~,,~ll.,. ~ :_,'~ ....;>;,.
· .. .'.,... ''''5''''' " ....'-'"r.a' 'J • ,;,.•" " "'>1' 0;: ,,:t; . .t:,,,,'!'p'
A.6.2 Ancora suI sommatore completo
,.~:.,
,rj , '~."," '('''-''' ,. .'
: ..'iJW~I;!;
~ 'J"[ " · • ,':i.-t .. ~.
.-.,:,.~.
· ._""'.{._ 'I;'~-'~ "1
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:
'.'J.~';';;:1;' ·
'''.'. ~ ·::'1'!;..'1,,'
' ..•>..~ .'· _"\.;•.
.
" .., ... ' ., ~
, ,. 1\":
'
: ,.
-,.,;1";, ,"""',
1
'"i'"~,
''''\1'''''' I'-'~':-~
Sistemi digit.li
_';r,:t'{'
.
-' ,f" .
,,
533
",,,",,.,
""-~"""
. 'j ';c:,.,
).
•• 'U" ~ .~t-~;. ~
it<"r~'
b '~:
.'' .,
,-
.,.
(: .• .-" -..:
, ""I~/ ,~
S, = A, B,R;_I + A;B,R;_, + A,B, R;-I R; = A,R;_l + A,B, + B,R;_l
~ ',f;:l!:',': 'ilI ,n, ':;~.~,::.: ,,-,
; }:".:,,~
,
",.",{;
~
,
',".
<
,""",'_
+ A,B,R;_l
I
", ' .
S ;:;,~,;,;
-! .,.,- • ,
A 0 0 0 0
r,'~-:;'i' ,- ..•.
.~
: ~t~\~::! ":;','\1,
, :~1~". '.-
, ,-~ '".:,.-',." •. .. ~,
1 ,.,Aii',Y" ' .... - . 'J."""~'".':;", _.C
..
.
"-'<..., , ~~' '. F""' . ...:'to
1 1 1 1
I ~t< ..." •.
t<';-;. '•. :,1".1':'. .., ..,.,,\"'!".,, ::)j~,,~j.;.
; ;!,
~ •.
'¥ti-rf, ...
,5~M,., ' ,'It" .•.,•..
";:';";"'";".
r .~",.;l·,·· , ,""·'11,· "
,
<, .• ~.~
B
R_ ,
0
1 0 1 0 1 0 1
1 1 0 0 1 1
Tabella A.2 Le funzioni booleane per la
"".1;1"::'." ~ ,~,';
S 0
R 0 0 0
I.
1 1 0 1 1 0 0 1 0 1 1 1 S~mma e il Riporta.
I.
",,' ,.l-li1;~;~ 'i~~
-.
~ ~~:';::
~~7/'
I
~ :,~~1;~'""
)iThr~A~: r1;f,):.~~. ,;,}')(r.:~'., 'lIiliF..-. "~{,'{~ ;/~" ~~.,
81 Ri-l > 00 ~
II
I
10
I
.•BiRI-i } 00
•
01
II
)
I
"lM~}',
k6&p'\
;'~Ji[l/:, ";w....
Ii"d::k·; '~·~-"i·' ;
1
,
1
•
S, Figura A.19 Mappe Karnaugh di S; e Ro.
10
)
1
.
'10Jfi')~"
"", .'!~~ i' ~-!.'t --~ If"'
01
1
1
I
)
R,
I
...'~.,'Ph· r'.'
~"jJ;.1;· '"tl;~.
t'k:~·4.?,::
':i1!,;~,.,'
,'1' 5':,':.:1l" ff.k" j.~ f:'. ,U,."-;,,
""!c;;O,' , ,,0::;, >'1''t.; .
:..
.I./j~ •.
'~<:'r".,:~-I,\i' .. ,.;;,'l'''';
'd. '~Yf'" ';t,:":'.!:
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.
I . • ,','
::a;J.' :':: ,u'·"<.
S, = A,R,
!iH:~·_' '~_n ..
!;>..::;i,'.' , ~~',,:? ..."t>f,'"f:,->..•..
Si noti che
R; e I'uscita di
+ B,R, + R;R;-I + A,B,R;_I
una rete a 2 livelli, mentre per Si la rete
(A.4)
e a 4 livelli.
/
I I. )
"J,;:".;: ..,." • O'i ...,.
.If:·, •
:"~""~" 1~'.~f' ..
.
'...,., '.'
',"",", ...."., ~6,~'j-:-:'
A.7 Unita aritmetiche e logiche
".I""h ~:tl!;;"" . ~.1,.~.
"'1..l 1·1.?
·:tl~~.; "..-' ~'.:" .•,
...~,.o.'.
".
'!!ll~~I~
....,
0,;."
Nell'introduzione (Ofr. 1.7.1) e stata costruita una semplice unita aritmetica e logica che eseguiva la sola operazione logica di complementazione. Si ponga ora il problema
I j
'l' '.
~(;!/t '1iI';'I
534
•
,.
Ii ',!
Appendice A
"'-'''''v. f ''··· >:,,~.~. • ''i'~. ,,:,.r~~,
'.,r
":.'i
';,....·h
-
·.•""tl'. .•.u.
"c,,'l
''''. '.::'' ,'.
.:':,;"~ ",'
I - I I
10
,
l
l
B; RI-
Bi R·
,
00
l
,
,
I
,.';--;--;; ·it
01
"
I
1
'If;
00
01
11
1
,
I'
00
•
I
I
1
.
01
11
I
1
1
W
-
~
,.
'11,
.'.,',. ':-"'".£ .." ·.:r.;!,!f_ ,2L'
': '.:;"'i;, iJi'. ',-,I:!:~r;;, ~I~~
1
Figura A.20 Metoda pratico per pervenire a una espressione di Si in funzione eli Ai, B" Ri e Ri-l.
..
d'"~.:, ,','P..
.'
":'''-''.,''~ ",-,.
· ."1,'
10
.,·.l'l:lI'l
Yo
'."'~,,'j,,
'I·,~
,. , .' ""1')1. 'c" i: ;~' ",J,• ",v'~""'" · "."-',,' .'~"
.. ,~," . "" '·"l""I'!.· ~,I.
ifl (A-it Bit RH) + "18IRl.! .j
'R", {"It Bl+ Rl.Jl
~
i
B,R
,4:~~'
'::,f·~.~~e ~il'
.~
"",,',," ;'l
A-;.:"~, ~¢'.' J:-:'7
,I'l
"\''..0,1'
.. ' :'c'~L ""Ji
:' \~'/r\~. r:i;
.
".,.,' ....,-
.:Ll
,,·~,\.j!/'Il,.I'·'l
,
..,"\"",' ,'.,.
.'':;~ ,~;~\R~: t!!\
Ai
Bi
Ri-l
-
.:'
' ·:ri::Il"":' ',
',: '-'. ":l;I,ili l~,; """I"f: ,.~ ", '('1'" ~ ~:'; {.~ "" i'~ '-::
,~: ,':,,t··H~,~ .'~tt,.,·· i,Y ...if'. . 1"
I
j
t
)
',"~.
':'~~~ ... ~.,... " ~-
'. t)···:"~~'l;}: ~;;.' •••• :.....
.•__ ~\:'1iw~e
Hi
I !
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.
I
\
,:! ,
• 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" e identica alla Tabella 1.8. • Se Cs = I, allora ~ = 0 ~r 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 e irrilevante. '
-
,:~
·~··lr·/i}'t<~~ b
';·.;X;j"I~!§'·';: . 1 ~ ~ ~""
":':'J~~~ -) ;h~ ~ ",.".. ~"l''''-:,,~<' ~iJ"." """" ~"';'~" '!i{~ ';,",\elC.,o}I:li' ,",,''' ' '"!!l''..' "~' , .. '''..,.pi" .. :'/;~t;i7,lj( :; ,
.I.~,
.,.,
",,,,,,,;~,,.,j;j "~
'::'::""~;\f~~ir(:~:I , 'I· ," ".", .~
"i'~'';:'.\t;~'ii< " K, ..';tIl' 7i '"
";,'l~'li'.\l~"\: ,'.
J"j;:;~ ." '' '1~~"<' ""'~' ',"1
",~'
"" :!! • " ':;',\J;li: " ~"<).,,,!<'
..' <, .' '
"
· . ,r.'l"t" " .," .,~I","~: ,~ .-.j \''i!'I'~
,t
" . ':;;") , "~
·'·;'·~",;?;.':'·l 'I
','~. ·1 ,''.,; ::~:r;,~, : , "' ... .
, ""
~, ~
.'
I, \.,~;t', '
,., ";'$:;"
·;.:-t~:~5~,~ .'~;'''-' " -.,' ;'<, ;c... ;;~' l ,
',"
"" "'~''-;G: ·il.'
.
"
"'
k'
"""~'" ,
"~~"j~ !, ...'''';'~'',' ".' . ; 'Y;'-"
. '..:1;-;1',_,< •
("";~"<; '
,:'-"":':\. ·
.,d!f';:{ "' • "~,, \
",,'-'t;. ~ ~""- "."'''''';
,.':::::~~~,':~ , ,.tr:""Vr , .
,"",
J:i:fI~~:,1I :":::'':)':I'i:
,.. "'~'Ji<~:R ,
,I'I) '1 \'!",;~.;r.,~, ,:i'''''''!~''':;~ l' '"" I':1 ,.' ':,,'1" ,~fl~\ .
,r"" .
J
.
"'. ".
... ~'~ ·,;,;\:·r ,-
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.
I
.. _~~;".
•... -.,.J,l;"f,\' ::~ ~!~
Si
-
.,... :r;.
~: .,'''~ ~·., ... !"~ll
·",,1:;"'1':' ;··ct;'!> ~;; {, "··'iJ,.:!W ,:; , l-,~,~ ,~, ~. .." ~'",~ ·.:.;. ,c .•
y c-
I
-
\'l..\j;;<~' .,"" ;,\,~, ..',', ",~l ."f",~:'i' "'''' ',"1.., ",,~, . • "'
,
,::,r,~';\,~!i; ~::i
I -
'I"!
'i·.-l;ii,~'i .::,:, '--~',' i J7. r-;, '~',1
'....
.';.•,
t" I$,:.
Sistemi digitali
!,\
·,''-'. .;;,
535
r~,
i~·
.'';'
'''~-
.,'-' ' ..
c;'J
.:::, ..
.'~:.
.,. "
,~ ....
"'!:!.• ,.
1=
I
Ri-l
Bi
Ai
-'~
~rl.~,
o;;! ,'"
•.;:.
" ":.,
~·..
,'l
·
.•. ",
'\;,
l,,;
I
7!-' ,.-,
l;e'
i':'~.
i;j' .-
11
\..,."1
Y
l,~.",
l:~:;'
\.. c-
~
....
e
\~~"
"!'1:1I','" ) , .•1
l',
''Il..'" 'w,:"
v
''
i¥;' ..
I
,f;v '
;,',~>,'
•.-, ..
\.
1-
Rl
~, ;,""'... :~~j_~,
Si
: ';', Y..-: '
"","•. ,~ l·'.,.. ~
..
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
;;'".' ,,,"."'.
;tot".;.'
,;..~,~ ",.. .
~/"" __ '.• , .
~:t"
' .,':' ...
• 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 ·
~
~;{:.
~" - "....
: j,t'"!
I,. :1-,,,,, ,'"
~~j. •. :
t ~~"_
itl~;, "M"
~tf,0,~
~ " .... .1::. '• •''''.
.... ':~";il
'' ;~~4:1·'
'"''''''. ,,','. ....
Iii1~,i::'
i~i~,r, " ... ,;,
"
,
~,k "\~ r, "'.,
~".:......
A
8
,
.l\il1:>
'"~",:" ".""
"1'".~ 1' ',~
:i~"l, ,".' '•.." .. ,
";~~\''''' ~."" '.: ~'i' ,
t
~~.i' ",
IWJ):.;
1'.:l·r~
:S~~.:~ ........ .
RS
" Co
ALU I
c,
C, C,
"
T
S Figura A.23 Schematizzazione deU'ALU risultante.
'~;:r-}.
"6.!J'"
~iJ~ l:c'
"'," "~"'';'>
"'~"','
k~~":: '~~'
. !~.!-'~' ,~.,..., .... '1".'-,'
,,~
• '!F'.'l'
" ':~'::,
·t~A·
'?1<"'t...:
\: ':j'
~"~',".
-""",~
;,.:;'
~I~r.(" 1;;1'" '~T"
IJ~:'-
'~:" •."
,!R~\'-,
'''~t.''. 1; ~;;,~. ~l .'>;'
1 '~,. '''';,
.
... '~'
10 schema della nueva ALU e ripertato 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 control10 sana tutte separate. Alternativamente si puo adottare la convenzione di presentare alla ALU un comando in forma codificata e inc1udere nella ALU il necessaria decodificatore.
,
0> ' "'"'~I ~.~
'1::"
536
',';~~~~','~
,.,.
Appendice A
'
..", >"
".
,'.
· ..!p;' . ......" '. 'I"" l ~, .. '''''~ -,·ilb
C3
C,
C1
C(j
R- 1
0
1 1 1 1
0 0 0
0 0 1 1
0 1
0 0 0 0 0
0 1
1 1
0
-
0 1 1 1 1
0 1 0 0
Risultata ;0+
S;0+B+1;B+1 S;O+B;B S ;0+1I+1;-B S;A+B S;A+B+1;A-B
0 1 0
1 0
;A R
-
S;AANDB
Carrunenta elezione di B Incremento Complementazione Cambio segno Somma Difl'erenza omma logica Pradotta logico
"~""
""iff!:'!! '··~!~'U! ·'·Jo\:"'I · '!.l\,~."
,.r..-:,'t
, ~t ~'3
· :~f:··t :~";"~'i· "-:... '. ." ."!"',!," , '··'r"
.- '1 ~~ ,' "'-~'"" · ,~,.t"t' " '.' )'> '/" ' ',(\",'i " ...."~~"'-:;
'''''~'.'
""., . [~~~"'. · """'~ ,
.. !.;' ....
' ,~, ~'~l'..'"'['!f"'. ''-Oi.''. .. ,.'.""'-.(\~
·~,\i,h',.-
, ,:.;').:"':;
.~. "r~': ~~.1. -"<;;
Tabella A.3 Principali operazioni effettuate dalla ALl!
.•1., "''",', ~ "':.~\i
.. '.
'
.,'
:--'l'~li:!.·· "', rl\,'
· ":''';'JiI'~!I
'I"~.~,' "'q,,_.
'·~'''' t~~~:; ")~,'I·:"
A.S Reti sequenziali
,.." ..
, l~· ..'1
\~...,,·& ~
:~-
:'.'H~·I
•
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.
, """/..:, 'C! ''...
l':t,.'~'·0 "f" "
I:'~• •~
.•.~!I'~>~',
,--
" L\' ",,_
., ·.::~1/~{~ . :~"
'.
,
"'~"-" '" ' ',I,. ,',,',
'J::.;,.;;.
·'.·~J'?W
s
."~'~').'i t.;? ;.
A
'i'~''
) 10 i: ".L.\;,.,
L
r R
", ,·r :
' 'T·'';'
'(>;::~~"
..... /"
)·i~iu.,::"
:'1>f!1..i.I''' .' .,:,. ::~t
z
Figura A.24 II Latch eli NOR. n termine anglosassooe Latch significa luccbetto, chiavistello ed esprime, in modo figurato, il comportamento della rete.
",;·,,'-'. "~',j., :i:! .. X1" "~' ".t r,:~.
•
'. fl";;' :1
''''\'\:~~
· ·rt:fi,r ".Iiii;.?: "., "." ''''."\., ';'",''' .,..... '~ "'(",."fi.-
"":l'h !J'f:'
:',~/~;t
',' '.:JI,,;.!
A.8.l Madella generale
'
,".C;,,' ,. ,..:~,
""',
,
'I'I"J,' '.
"J;., ",.< ·1
In FiguraA.25 viene riportato il modello del tutto generale di una.rete sequenzial.e. Si definisce: -
i1 it il i1
vettore vettore vettore vettore
delle delle delle delle
variabili variabili variabili variabili
~ ~gresso:
d.i uscita: di state presente: di stato futuro:
~ = (XIJ'X2, ..
,x n )
Z :::: (Zl,Z2, ... ,Zm) Y ; (Y1,Y',"'Y') Y ; (Yj,Y" .. v,)
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 semplicemente, un ingresso. l' insieme delle N :;;;; 2n configurazioni d'ingresso c05tituisce l'alfabeto d'ingresso I = {h J2 ,.. IN}; ogni configurazione h costituisce un simbolo dell'alfabeta.
.>. ",'i
!·;f,l.r
.
" >··c ·"l'";f., "'·~F:' .,j. ',.-.,
','{}: ',""""';. '"
"
> l..
,,~
~.'.\ "~,:~ , ".
.' . F
"~If.~~ ."',
:.",""
->., ':
'~Ii-""'-".
·;·:~r~
...
"~ ";
]
~'I
J' ...... ,." .. , "',
... ~"
Sistemi digitali
.,
.~., " '!" l!" I
.. '"
).
.,,;~, b~" "'1'•• " '" '. ". , I'" " '
.,
"f'
h
t'~"",
zl
x 1
0,
3, "-. t;:"l.'
.
->:::: ,'. .' ",'"" "-' •• , "f;:.,',
· ···
ReI
xn
'{.... :--: . . "'l ~"-,, "", '.". >"'~', ". ;j"""'" ":~"
'
537
•
z=
)-
,'"
,. ': ,,' .~
~I' , . . '--'" ',.
yl
-;'f-f~" ';'
-:"f";~ . "".'/
~'
:""'"",
.,j., ;'l;7"~ .•"
-;...
:1
:
'
;.-~'~_':.,' ..',.
y1
Yl
1-
Tl
·· ·
Yl
Tl
\
.! ;", '..\' "'~,'
·;I' ,,~ I.' ~ '· ., ".',,,,
I'['.,,"-, ,
'.. ,"""c '~'.•'.
''·f'·· ; ". ,:;.".
"~1
..
1
IFigura. A.25 Modella generale di rete sequenziale.
,
,."
&·I'~ '..
,', I· ".:;
-~,,,
00I. < • ..,. .... ,''t~'''" ,.,: :,1,; "
'
""","' •
~;t,:·::,:, "
','
.
": ,' i.-.,- ".. '!", --
1-
Analogamente si den.niscono gli alfabeti di uscita e di stato :
!' , '..;." :,.....!' ""'" •
'
.:;J. '.;.' .7
°S ; {Sl,S',"
;{O"O" .. ,OM}
,Sd
can caD
M;2 m
\
I-
L; 2'
?W\\'~:i.;~
..i 'j"/,:r . •
''t ;,,~
:~;l.;,:,:,. ,I ".'\'1:'."" , ...,.... , .•
:',
''·-t·_.. ·
":. .\;;~'r::," "l,:..,'?:~ . '~' .'~."':> ';
t.'t:i~:E\·
!.',1.:.,....;;:, :t.~ ,,~i;\I'
"j"""" ""'''',' ." ,. ",,!,l:<
'J..
,,~':,'f~ ,'. ~'c _'" .. 1
1'
rt~'f,1~. : 'il":'-:~"""~" .. '".<0:::,••
". "''''''.
''',' ~'.. ' .~,.,.
~., - ...
'.""""
h>"",..". '·'M.,..!
t:, :'2;":\' .
!". :;.;;"';'..
,:,':.,' ;';:~'~'L , ". I~"""
' .
1:',."''','',,' '1" _ ~", \: ....'"
i.' "::::~ ...
r: 'I"'f~r;':' c;' r''.. , ",~ 1"' '' "1"",~:"""'I .
.
O'
'" '~.
:
'jS~ '-
", 1 '." ~
..
'
.,;
'I""
__ ','
';'" ';" \;'I~;: ..
~,
"
···>;·:, , ,
J 1
,;'
'. I .' '.
F". ,\:~;
~·"J,:·:\::·, ' ... . ."
" .''.1'- ',,'. .;: ,,"
:' ~':: i",::'.', •
-;;-..t ..•,.,.. ""'1"'::;' .,
,
~\~· ~;~;~:;~
.",, ...~..,;,
dove it simbolo Oi rappresenta un 'uscita del sistema e il simbolo Si rappresenta uno statO. Si definisce Macchina Sequenziale la quintupla:
M ; (J,O,S,j,9) dove I, 0 e S sooo rispettivamente gli alfabeti d'iogresso, d.i uscita e di stato e sono Ie due funzioni: foSxI-+O 9,SxI-+S
-
1-
(A.S)
f e9
I-
(A.5) (A.7)
1
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. n modello 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 e l'interpretazione di una rete compo5ta da porte (racchiusa 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 e in 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)
1-
-
I I-
-
1-
I I-
;
I'lli~:1 ,li"... , ',. 1/0'.•
...~ ','
.-
,
"'I~'"
,'.'.:r"i' +\!1,,: "~iI"""f .•'in,j' '~'i~;'," ~:JI. 7J. . ~ . I.l'><;" •~ '"r ~"""i .~~.", · '~" · ,," :;i~'j~"' '-.\'~.' .. l'I:!l'~~
.~-
538
I
Appendice A
. .,
in ingresso a
raggiunto uno stato stabile. E possibile cbe il raggiungimento dello stato stabile ricbieda 11 passaggio attraverso 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
\
- I I
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.
I \
\
-
ReI. Se , per effetto di questa vettore d'ingresso Y non varia, la rete ha
\
\
• •
\
•
•
e
"' . 't.,,""".....-
J :,~i;~
-il'-!-.,
~,,~'.'
·,f
' ...··... ·l,~ ...l'
;'.: ;'.1 '·~..;"l\1;.
" ""-
'. ~1Jl!1S!T';' ,j• :::;j~~;j~'
.':-'1.'",~l:'·l·· -
. ': ..",:K".~'''''''''''''' '~" , ".'...''',.....1, "'":-fi''~''' ., ·.~Jd1i!··~~ \.'. ~of!l'_.... · r .,t.•·•~·01<' ~i;' .' "~~>' A -"""''!\~. '~"""r..a ..... '1<:"'~t:'" ~ . •
"
,'.- 1.- ".:. ,.,
~ .'}:f'!·.ii';ii;i
~. "l~'§~l ~'i~~'
• •:<-.•~ -·~"H · ~""""II: . ~
,',"1""\1;" ...--,'c', .• j";", no, . ',-,, ",.~'
-,'.<;-;" '.l. '.{: ,! :-t'.... >'1,1'" I""~~ ;)1 •.. '1
"
.' .
':'I·I.'~· ',)J .~... ."'!j .,.., l' "'~
rc',I~~I:i ..'..,'." ,' . '' "'1'"'\f!;~"~' t'l .'
. ~'~"" ··:,:]",...\(,,!1~"..."~"f..'i'fl' ..., .;,-."
.• .,.
.." l ',,.--.:' '~',
"
~
, ·'~'~~·"'''·~··
,,''''~i!' . ;,.....\(»~ ::.i .~
..."prf'lfi%~';I\'~' ~:.no~·!"'~. ~t ·~t~"·~i'<;:~~::>;'l'
(A.B) (A.9)
dove la prima indica che il simbolo di uscita e determinato 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 e un grafo orientato in cui i nodi rappresentano gli stati della rete, mentre gli archi rappresentano Ie transizioni. Un framrnento di diagramma di stato e riportato 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 = 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 stati·offre una rappresentazione molto intuitiva, rna it suo contenuto non e formalmente elaborabile. Per questa motivo si ricorre aile tabelle di Bussa I 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 e stato riportato nella corrispondente tabella di f1usso
e
·1 ..
'1 "~r;;,,' -., ... ,.:?~~'i",;\,\ ..
• ,L',',l,
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:
0= f(I,Sp) Sf = g(1,Sp)
..\"
.. "..' ""~ "1·Y"S~rid:1·1: . '.. '·@·''nI·,·,,-' \,l;_{'l, .'!.;iii .'., -.i!.'
A.8.2 Rappresentazione delle funzioni di stato e uscita
I
" ,':·'~"fftli,;r.l~; ' '.• ~i').~'''''1;l;'',
,."r! 1:;"'~=",;f,, .," ).. ,''''~h,'',"' -",~,.(IW'''''' .... ",':'" .'--'l"*J:",..-r.r >~Ii!,{:i,i".'/,
-I.l;,~., ,~.:,-""".",,,.
.:r;~
,,,...,.
• t •.,.~. 'l:
~
"'."'1' .;i:<- fll1'':~~'' .. l
",. :.'":"1' ;"'" .-mt ',/'· '~"~j' ",.'
~~ I-
"'.~."'''', '
'~L";~"A"t:.t'l~~II ~ ...,,.,,1.·
· ,'.
• .. h
····"'~
•• ,,,,,, ,
:~ldf.lt,tWi,lf~mro
,~"".,.
'1 ,;' :"'" i=. •~,.t ~"'"'~ ,l1" :'~' .. •.. ~1'··.· . ,."
'Off">'"
." ',,". ,J .....,,,O,I. I1 • ",\.-w.".' ~'
.:j:·l~~ ·;('N.~
· ~~J\~r''''~I
"0~1':"~f."~
~"~ ""~.
... :"l{'!i'~.'1.;,u'"., ·....{r::...~ ,, ·""'C',.;.-·1';,. ' .•' -.,
'.,.. '''.-,~ · "",~I< -,'. '~"'<'J. ..-."
·.'·,••.;:~I~;Y~~t1~1 ~"",,,. ~·I·· '"t,-,'J:'·.", ':: .'~~i'~" i~ · -. I·,~ "{~'
',n :';;~"" )~.
··~"f·"1''''· ...., •. ". "'-,.j.
,'. ~ ,~:,\ '.o:·1",.'U;j1l
'/' ,~r,,7,~ ;"'-r. ,~.~>--,,<:
,"t;;i~{,",'
,.> ,~ •.!J''!-;~'¥j~' ,.",'''' "..,;.~.", '~"'I" .. ·~Q~r,.tir ~ ":,~:fi:0,i';;
,",':"I\~r·,yU ~,J.;._,~..~
',,' .. -'. --, ...... , ~.".,
,iH1t~ ."'· ~. ; ·;,;.t':::~';
":::"""~
,~:.:~-,. ""~
'·'J-ft;.'·~. u; ,d~,~;-0'~
·
:.,,-,,!,'";,i{;i"~; '('i'''\\
" ,•.,.-S.,.
, • '< .•• ,.~.
";'\':~'.i!
'..',.~'.-:~}t"
,• >(::,·,~~·!
-'-,.-:'>".
· , ·-~··~~~· :;;.,..
.. ''''',,1!;.J}''1
:;<
.. . ' .".... ,~
~
..>1"._.... . ....
. '1'" ~
•
1
· "~·I)r;, · .'.' ....."~.'1,. "'-- , :";'.'!'f
.
;
.., •.
,
' :r:
Sistemi digitali
-
."
539
i,...
,
~·._"
" ...
·• •
'," ,:; ,·,
-."
IV I
..
"."
,;"
"
...
.",.-'
",
.
-''_/
"
Ix
Iy
"
• ••.•
'I
",;)
> ,,' t ~:'
"
"
-"
'.
';;,
-''",.. ".'
'"
"
" "
'1,
-
......
I.
"..
"
I,
~
I.
-"'
"J
Sl
Sl.
.,'
i~i:
tal
' ..
H·'
...·to·
(b)
Figura A.26 Diagrammi di stato e tabelle di Russo: a) esempio di (parte di) diagramma di stato; b) tabella di Busso corrispondente.
,',',-" .' c'·
!ol .
1.",
.,. .' .'
..
~
i'I~ "
''.l'i1I''"..
" ..... '-
l';;
··'I
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 e quella di FiguraA.27.
"
~ :·I.
:r:::'·
i')""-.'
'''1:"
i-.."
'"'' tr""u._
-I [,
'··' •.-',
,~:4'
.
",'. ','" .
~
.,',,"
,~f/·L.
Iz.Ojz
~''' '~P'.
SI
.', '
Sl
Sj
I
I
Si, Ojz
'(il~ .,I'i':
I'-
•
'j,
-'~,"f'..
Figura A.27 Rappresentazioae delle uscite col modello di Mealy.
·I~",.•.'"...,
~1' ..
.
o,J;~.;'
.".
.Ir>; "l" ,
. ll,..
.~c "
( 1, 'lI'1 .'
~....,,;
If:I' "~
~I·i~' ,
..
.
>("
" . . ~;. ~''-;1' .,(" .
~
1'",~·
·'I" '. J.;, ~~li;l'
L'interpretazione e che la rete in presenza della state Sj e dell'ingresso I~ si porta nella state S~ e genera l'uscita OJ:. Vale 13 pena di.rimarcare che OJ: e l'uscita che si ha neUo stato Sj e can ingresso I:. mentre Si e 10 stato in cui si trovera a transizione effettuata a partire da Sj can Pingresso I~.
.
'~J"
~ ..'1<,\ ,~,.
lJ./!;~t"
J" L
"~":
"','
>:0'.
'.l!tl'. '
,,<:.,'
.
""' ~1i!-'<
;~I~;'
SI,Oi}'
UIlo.'
~.,
..
~.
, " .:J: .":'c," • ;'iV;" ..
~~i',)"
~
:.
"
{Sj,Oj
'---'
~8
8
Figura A.28 Rappresentazione delle uscite col modello di Moore.
~~-::.
~~'~t'
\~'~,
. ."",.' ,Jlil''j"7"
!.~~;!T:.
: 1
!tr.
''-'
.Ii"~
·:~W\· <:~".,,(
~,
1~' I
,
,
.
.
...
~,
'
'I .' .
n case di madella di Moore eschematizzato in Figura A.28 .. n simbola 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.
. ' ,j:;'~"~
r-
- ·,.:,'i
I' - "'~'l<.~~., .. ~, ., ,oII'~:;" " '. \'1-~"p
Appendice A
540
~",,,~"
- "fIIl· ~
-1'1·'...~., .'1.: , .....,'\l'''iJ!i~';~,,' ,
.
'.'
,
'.~':~I~;'::(t\!
, ~1~J'lr
,'.j~J,~:~~f:i
A.9 Sincronizzazione
'.. ~.'~i'f};
· .... '''~
";t
Si consideri la rete di FiguraA.29) nella quale al latch di NOR sono state aggiunte due porte AND e un ulteriore ingresso.
''''~
'.~,.,:,.,;,";\~~: ;,s.:~,
.~~. ~"3'
:-;"X'\.'I·
: .'!t.'(~~I
-~·~···'···I'.'!
_: ,''';''1<':' .. "~'" ,;.,i::;",,,II '
•
•
,
L
"
••
•
r
, .J>-l I,.. ,-
, s
:.'.: ';!o''' ::.:~.: /' J ,"
,---
r-J
Cll
I
!VI
R
n
· ....
1
rL-IlL. L
1
I
n
,,,
• -.,.,' ......:
n
_
..<.::~"." ....,.•\;~,\
""";' :;i~,\;1' , />, · r"~',J", ",,, .
_ ".':1 .~,":
n,-_
""'M,lt
..··.~~·}:;l
'.", .,~,;..::;.
I.)
· ::,.'~,j..: """"'~J'''I',
(b)
Figura A.29 Trasforma.zione del latch di NOR in flip-flop sincrono: a) schematizzazione; b) possibili andamenti temporali dei segnali.
""
.. ...... >,;.. ~ ~ "' . --; "{l' t "r,.
";",,,,),,~.',, ,
_,-"".:>0" •• " ". ....-"',, "~-'i:' ,..., '"li,
,·,N,·;
.,.,,~~~:,,
;,
~:/·,:il("l."
,
.
. . .
.
. ':-',~~~} .
,!~,,~:,,:;
E faCIle convmcerSI che quando 11 segnale Ck vale zero, 51 ha che SI :;::; 0 e R == 0, ~. ~J;f:'~ indipendentemente dal valore di S e di R. In altri termini it latch non cambia stato <,:~.(~ se ~k = O. Q~ando invece Ck = 1 l~ po:te AND sono trasp~renti ri8pett~ a S e :"'~~~1; R, 11 l~tc~ ha l~ ~~mportame~to de5cnt~0 m pre~ed~nza. In F)gur~A:29~ 51 ha,un ·,:~,~j,~~ ~semp1o di POSS1blli andamentl temporah. P~r ~aglOm che saranno chlant~ m segUlto) T.1.:~i~:~ il segnale eke oormalmente un segnale penodlco. Anche se non e essenzlale che C k _ ~~~t~ sia periodico, questa assunzione 5emplifica l'esposizione dei concetti che seguono. Per -:·;;~(;'t'l tale motivo esso viene denominato clock) a indicate che il successive passaggio a 1 del ':":'::~':i segnal.e .Ck, co.rrispond~ a1Jla:anzar~ del tempo. .. - ::_;;~1f Sl mdlchl con T il penodo dl Ck, con ..::1 1 la frazlOne pI T durante la Quale -::.'~q/}' Ck == 1 e con .6. 2 la £razion~ di T d~rante la quaIe qk == O. Si fac~ia inolt:e Pipotesi -.fti~'f che durante l'mtervallo .6. 1 I, ~egnah. S e R non vanno e che ..::1 1 Sla .suffklente a far - .t:_~$ completare I'e:,en.tuale translZIOne dt state del l~tc? se quest~ e prevIsta. ';,:-;~i,(,J La rete dl FlguraA.29a ba questa carattenshca: eaaa al accorge della presenza .>!;~)j.\ di un ingresso di Set 0 d.i Res~t solo in corrispondenza degli inteT~lli d.i tempo in cui ~~[;m,:; Ck = 1. In altre parole) l'agglUDta delle due porte AND e del segnale Ck ha permesso' : ,,:,:';J.~ di sincronizzare Pattivita. del latch rispetto a1 segnale Ok. ,::',h#; . a fl''Lp-fl op. . "':.:.~~~.'.: ",','! · ConVlene soffermarsl. sugIi eIement'1 di memOrIa 1
"'j ..
I
-":'-'~{i'
11 flip-flop SR La rete di FiguraA.29 costituisce, seppure in forma rudimentale (si veda pili avanti), un flip-flop SR sincrono. n FFSR sincrono viene schematizzato come in FiguraA.30 9 . Ovviamente la funzione di transizione dello stato di FFSR sincrono resta quella di FFSR asincrono. Tuttavia e necessario mettere in evidenza iI fatto che l'attivita del flip-flop siD~rono procede per eventi discreti. A tal fine si USa indicare con y 1a variabile di stato e si scrive: y(n+l) = S + Ry(n) (A.tO)
::nt~N::
,r",S.,'",v".". .",.'"
-"''''~' :.l~f;,r ",
.... ·!,..,-n'
r~·,~~... ~
. '".,,:,..,
~i:~_U
""~""' .' ,i';II ",,:"J,.. , ",.,1 .....
'" ,.::t,
, .t· ~l: , ).":.1;1 ;;.:
-,;':,NM
".'f":R"~,1
.".' ':e",\~" ,.:
"~'~"'
, ,,(.,'>,1,
,.'.....
,··t; ~ ",.•'" .. ,~._;.~~ 90'ora in avanti, a menD di indicazione contraria esplicita, quando si parlera dei Rip-flop si intendera parla.re di Rip-flop sincroni.
, . · ".:"\':,'
,~,",,"~ ...
,:.,,1;
"~"
• ~:"~J -. ;!r . .•
.' ',;0"'
.......~
",," '~'I.
,
J~!": .'\$\t.: ,.,"' .... ,.•.,.,~ :,' J;.,':' ,~" "I'~;~'"' p, ,'~ .... ,. ~"". '.
~
1. Sistemi digitali
,
,,1'''' ~"... , . ~.;;. , 1, ~~.
. .~;-;: ', .....
rr,.,~
,..I
I
~:tt;, ,
.
;~'t(,·:·
s
~'.",
~l'~~~'''' IT':'~";;' .f:,'.,':' '
,
~
y
.-JI
Ck
:,,',., , I···".i-",'
R
':
I
~D+l) ,
C",k n+ I
!I,!I'J~" ~ ,'~.,: . ,"" ;:",,' '
I
1.
IL
)
y(n+2~ _ _
I I II
f'r't-
I·.;~::~
' '""ll t:~' ;'.:.\
CI"ok n
541
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.
].
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 , .. ~1:., , /iP~:" impulso. '<,~t~J: . ..OloJ "_ '.~" ",/. "'., ,.'."II concetto e sottile emerita di essere ulteriormente discusso. A tal fine si faccia ~ ,.,~ ~l', ,,,'flj-'" ;.~,.·" riferimento alIa FiguraA,30b. Vimpulso n_ mo inizia all'istante t n ; a tale istante ,~,11'-:'~\"; " ,~,: } r,l~':·.,:· _ 10 stato del flip-flop (conseguente alIa storia passata) e y(n). Durante Ll 1 a causa ;;:,·.,,·S:~ dell'ingresso (S,R), che per ipotesi non varia entro .:11, il flip-flop cambia stato e si ~ :.).~f;;:'.,.· ~~1~~!~\, 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 ;:·'It~1' ~1~~~~:' dallo stato in cui si trovava sullo n_ ma e dal conseguente ingresso. Frequentemente al posta dellaA.lO si usa 1a notazione semplificata: ~;;~,;~~~<.
).
'.,
,
,W " - '
1¥.",~
\ \(~j1
' ~'r,'!,,',','
, '>1', ::: '.
,i':·, ....rJ;~;~' , , , ~!1 :::. " ;•. ..• :,~,V:',:.',.,,'
:
t
.
,
':~'
,
"""'"
1\
I.
~ -~~~~,,;~
lf!r~lV;~,
y' = S + Ry
i~~)~~Wak, f~;~~.;'
dove y' e 10 stato in cui trovava in y.
'hH!:~11h::
f~~tii:·
$:!~~~f:. .
: n' flip-flop
5i
(A.l1)
trava il flip-flop, sull'ir:;npulso successivo a queUo
cui si
).
e il
at flip-flop Set-Reset (FFSR)
;; ~c~~;: ~t~ I,i~:~,;~:
Ilip-flop JK (FFJK) schematizzato in FiguraA.31a. n comportamento e identico 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:
!.:- !to", :;:!l~.:,:::
y' = yJ +yK
J:;; l~*t\:,
\'~ ;I~>,
;
#;-'nfflrt.'
JK Malta simile
Stl
', ~:~~"'.,
(A.12)
:: ~~:f~\~~f:," .,
~,:, ".... "., ;'r 0.'..• ',.,. ,ti\-- t.~.... ,~! ,."' ,'r ,',
\
). )
,u·,·
~,1' ~~{I"" . rl\~I"'''' U",~ I, ' '" 'I I,I~' 'I'
,..'
(!i.t
')fi" .',:' ' ,-., J ..,;r..
.. .....
~
---l> ok
:,-, :Li~••I', ~~F '
f 1 ~ •. ~::,~.
M' :1':;-,. . ~:"
K
...
1" ..[.~..-,'-': '"-'~'~' '"~1,;_. .,."
,,·,:, :J.Q....; .
~;\,
. \:\,~thi"i", \:~:\"
,
" ,_ '; Jl.. , ~.~;. 'rq"f!W.:
,....'..,.: '.!t.,it, ""
~
I .Y -,-,
;", "';_" , ' I" j'l;i~" ' ."• .. ,;l.
J.'. ,.;:m,'.1 • '"'' 1f.:I-·"•
~~
,
K
y'
a a y a L a L I
I
Y
0
I
JK .
.
- -
--
..
I
a
0
1
1
I
L
0
0
L
.,
'id '.\.,'.. : '
.. \
,
J
J
';i~.i
(oj
(b)
(e)
1.
J
Figura A.31 n flip-flop JK: a) simbolo schematicoj b) tabella della stata futuro b); c) mappa dello stato futuro.
1
•.• '"O!~
'."1.::'' ' ·.I"""l
-
I
""";''''~
·.:'.~tf. .I-'"...
,., ""
Appendice A
•. 110('"
:;. ~~;; ,:If:·
.,'d'
., :'~~!J:~
II flip-flop D n flip-flop D (da Delay) realizza un blocco dl ritardo pari al periodo del clock T. L'ingresso a FFD la materializzazione del suo state futuro. L'equazioDe di transizione della stato e banalmente y' = D (A.13)
-
-
542
e
II
: :~'~l.11: 'r. .Ih
r,:\:;~~~~I\l ~~
.~J~)J~~~:f ·.'I;~~"~* ~ .>§:~~;t~iJ
Vale la pena
e
·
,~vJ:~ll'. .,"',)".,"" ~,r-I~" . "._ '''f.,F " ' .~" ... ··~'i,.r.i
,
D
--IfCk
,
T
,_I
----1I>Ck
a) FFD
,
,~ •.. , ~)r'i;'J~W' '~"IlII' .-.
. ':
:·.i'·.:..l~.,·" ~
""'I'~'\:li.1 ",.; .p..,,;!Hii!~"l . , , '.~ '1, I" , ,""~." ••.•q, ".,." ".' !~,' .:'11. ,
· cO'".'''''' ~.(!~,.• ''':~''''~' ~ ....... ,>, ••~ ,. ,
.:\:
.~::Yi;,~~J.~ : ~ ....t\
b) FFT
Figura A.32 &hemi convenzionali di FFD e di FFT
!
.·:'::~~I ~
n simbolo del flip-flop ein Figura A.32a.
I -
,
j,..~
I~~"'" l;
.. .....
.... ' ;,£itl
r
,'s ":~lt"" , , :' "
""1<"',\:",
_" .• .,;"~'If,.~"
I' .• , ...•' .
'~''''''l''''·,,'. "'''.'' · ';;~'1 i~i,'·' 'i "·'·I"~.\~
n
t:,.~~,,?_· ': ,i" ·u;:·f " '-\.\"': ~ , ,.'~ }!"7(,~1~.~:·
e
II flip-flop T flip-flop T (da Trigger) schematizzato in Figurak32b. FFT cambia .,. II ".").,'1>. .,f Jltato quando l'ingresso T vale 1 e testa nella stesso stato se l'ingresso e O. Cia' ,i;;~'.!,ll,'~i! IM""\' ." 'l,:"l·,'.I~'·~ ' comporta questa equazione eli transizione di stato: ... ~,,~;,~" ' , ' , \~ " ."1·'''.Jh.,·' \""';, ",' 1~ ". • y' = Ty (A.14) · :,I"I'I"!"'f\' ·",;.'0\:1";',., ;·::;~~~~:'..Ilii ~ ·
• '/·l:'; '~", ..... ,,~II.'
..
-
I
{l;~'~
,""1 1)" ~ l '~'f'··:t"l~'!'' ~,.~1,4;.~t.t · I, ,\'"4:,iC! ,
A.I0 Reti sequenziali sincrone Nel madelia d.i FiguraA.25 gil elementi Ti introducono ritardi potenzialmente differeoti, 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.
I I
•
I
· ··
···
RC
·
· ;-
·· -'
o
,~ .i~
..•.
.,,~;'~,.,
,1
.~.,,~
: , I..)'" .;0 • ~
I
r
"'\1
.' ,'.";"·,i. ~" .
'.:.1:--l\~~, P
.,.... %~:(
~ ._";;\~.,
~""'J~:>i!;
",:',~,I,;.
,., 1~::';~
~
§
4
'''';''''/'''ifl' "',:,' :"':~~i~i ~ "",,"': ~,,:, , "1""
.'t:·,.,·'"
.,',.!~ ••.!\\I, """ ""',:",'!{
,.
· ,.,,,.; !';
"•.. ~'
,'1
QD
·
.:' . , " ;'".., :~-,
'~
.~
,;. ".:t,..,,<:
~ ""~'-'"
.,'~ I ~.....-.;
. yn
.
.':~~y.;.,
·:'.. ,":"' :J~;"i
y'n
,(:-
...
~",
~: ·i¥:.P
,,;~./)~
' .. >,.. ~.
"'e~'
Clock
,:::·'.~~:,~;
Figura A.33 Modello di rete sequenziale smerona.
,''1'' •,.',.:,"
· ~ .(I'J,;
,,,.,, ..
•
,
, :.'." '~' ~ ...Jh "fo'.',:),.:.';I( · { 'h: :t!i:i
".
I
I
~
•
Q.D •
,-J~"I~' ' ",', ~'~,~! ; ~ ,,; · ..' . .. ,
l.·
- I J
· '';' 1' 'tlp,.t ~ .. ~:. lit;i?:r( f
.., ,;:I·J,~. '~"'~"" -,
.....:'
,~,
·..".- h 'i\c.,..,'. .....l..
~.
'0;\1'" ~I"i' .
.':l;'~~
.,'......... ~
Sistemi digitali ,i~·.'
~~~~
543
L~ r.ete. di Fi~~ra A.33. cambia st~to sol? in. co.rrispondenza degli impulsi di clock.
hW;'·.
Non SI nchlede pm che 1a rete combmatona Sla Ideale: come vedrema al paragrafo
~il.':'.:
seguente, basta solo che i tempi di commutaziane di RC e 1a frequenza del.clock stiano f.;;'':. nella giusta relazi~ne. Ovviame:nte facile generalizzare 10 schema di FiguraA.~3, ~~ ~* q~anto lo .stato (ClOe la .mem?n~ della ~et~) p~o eB:ser.e O~t:Duto attrav.er~ vanablh .~.~·.· dl stato dl qualunque tlPO dl fl.lp-ftO~. Sl o~tlen~ q~ndi ~l model1? dl ·PlguraA.34 '~::~;I composto da: (a) una rete co.m~maton.a1~ CUI usclta e ~lOne dell'lllgreSS? I e della F\~E:: stato presente; e (b) da un IllSleme dl flip-flop deputatl alla rappresentazlone dello h .•. "., , stato ....
.
e
.
~~., ."" .... '. "1""\"
.
.
';:O~JlI!.o.,<'" "'" "','.<
\
~\ ,~;"'~'.: -.. ".'!_~'
\
~"t\!),("
,"-". ", ,., ~:,:;."
,
','t.)
,~.
•• I""
o
I
.'",,: ..~;~' ~,~~.' ..
RC
·.,·;r· ,~":",, . .
Element! di
l~'·
~
,,".'
memOrIa
r-
;j.• ";;,
:~",~
Clock
r.,~,
..
,"......
'l<~y
,I
•
yn
I
~_."
" .~X·,,· .
h
.:t.;~. '~·"r"·'
'
i\1'_l',>i~" ;'-~~"
\~l
"~'i'" ' ~, ,,".
Figura A.34 Evidenziazione degli elementi di memoria in una rete smerona..
. !:;:,-
fl."", , (~J~i Jl..,...,.
,
'~~'f";'" ,'. "
".',: "~."
iii"
1~"'," .... ',11 '~." .•
~'~ . :'1' "',,1.
,
'
Prima di esaminare nel dettaglio i1 comportamento delle reti sincrone occorre, tuttavia, spendere ancora alcune parole sui flip-flop. •
~~
'Z
.~,
~;~<
~"
1h" . ''''''';i· t ~\1:.: ,~~~r,
A.IO.I Flip-flop Master-Slave
f'~~.
Si faccia riferimento aHa rete di FiguraA.35, nena quale e rnessa in evidenza la presenza di un FFSR. Vogliamo mostrare che un flip-flop, realizzato come queUo in FiguraA.29, introduce un serio inconveniente.
~!~l.;r,\·
'~"i.;r' ;:'lfi'\, ,.~ .. :", ,~
"..
.
~ \ ".;, ''''~l' . ".,
i,~ .-C
rr.-\lii·t.,:·
1~:1"
.:'t.i'''~
I
Pt~: ~,'i::\{
RC
>f:'il,r
§, '
4'01:;.-'"
~~'i";
~
.;~ 'J'
~
.'1:':
,';' "1"",'" ," :'.1'"....
,~"' ...
'
..
!l"~,,:'"
~"~' •.
{·t'.',,'
'
~':'
"~'"
"~~
s R
SFF
Clock
y
_I ,J,'''W ot 'I
I,
.t,r-
Figura A.35 Rete sequenziale smerana. L'uscita del flip-flop viene riportata in ingresso alIa paxte combinatoria
,'!1u..,"
'i'w, , ,.~.,
o
'
. ,,
~i. ¢';l:~
.;.;~
.. ...
,;
U~<:.
fiit
.:
•• '
'1.~),.,
;:~')t·· ' '''i%:'~'' ", il.,' "'~'
~I~.r,~"
;,
".
''';'" . ..
~",.,
·;L'
...i',
.. '_ "
Si indichi con L1p p 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
544
·r.I~M
, _'.~'h
Appendice A
':'-~):'
,.'.;-."'-'
" ';~:It;;;it~,~ ·:·,,·'t";Itt::: '
"'1
",.~."-,,...
",. ~JII ~~!
I non modificato, il nuovo y determini in uscita cia RC - dopa iI tempo Llc - una /t~'*""~ coppia (SIR) diversa dalla precedente, la quale, in linea di principia, pub comportare . <'!:~;~.~;~ un nuovo y: Se c~o .si ,ve;-ifica, FFSR di Fi~aA.~5 cqmmuta ~lteriormente. . . . :t~~~i ~ altn ter,?1D1 s~ Vlene a generare UD:3 sltu3ZlOne malta dlver~a da quella lPOtIz..- ::,',:·::~1·:~ zata ~n A.9, e CIO(t l'mgresso (S}R) non nmane costante d,urante il.<1 1 del,clock. " . . :;.;:i~4~¥1. E facile convincersi che se la rete fosse pili complicata, can pili livelli combinatori .' >~~~q,t~ e pili livelli di memoria, si potrebbe.anche generare una situazione per cui durante.::1} --~~~'~:~1 un FF. cambi~ pi~ volte stato, co~ la conse?Ue"nz~c~e 10 stato ~nale dipenderebbe in .;:~Wf~:f~A modo lI~predIclblle della. dur~ta dl il.1 e dat. te.mpl dl commutazlOne e pot:ebbe anche ,:_,;:t~~'~B.~~ essere diverso da quelJo lffiplicato daJ valorI dl S e R all'atto de1l?assagglo a uno del ,,~,'~~#~~t clock. "~·'":$.la QueUo che si vuole da una rete sincrona e che 10 state futuro sia esatta.mente ' ,t~~.,.~, d~terminate dalla configurazi~ned'in~esso e ~al1o ~t~to. della rete all'atto dell'impulso ')J~Jt\' ~ dl clock. A tal fine, occorre nvedere 11 modo III CUI It flIp-flop comrnutano. Restando ."
, ; :'"'~~'t~
':"<~(1~~~~~
..¥," .",'~,,"I , "",<,~
s
-'"
I
/'
l R
[~
l [
-y
~ .~.;:~
'.'"11""'''''
y
~... ",:J:tl~~
':,',' ;'i:~\11',::-' , . .,.I~I~",,!,~!,'.
",.. ',,~ , "",,1, 'I' . ,\.~!/Io'f·\'''t''' -:\..",:v~.,
""~i!,t' ,,~•.\l;" . ,
'''-~''m"., "",~"'\
. -, ,.;"";~,:~~~,,
'''~:J~::\~'':~''~
Clock
","~;1.;;;" ',~'1 ""'jf.~~7.':
"
Figura A.36 ConJigurazione Master·Slave,
.,'
~,,'
:';~t;;.f,
"oW
1;z
'-'~>
-, ,,_,~"r." . . '_."",'~J;:\:-,
~
.~.
-",,,."', ,~' ',l,.~,I~,'j
,..,,,,,',,..,.,
.. ~'~~~.. ::'.
:;~~l
In ossa sana presenti due latch in cascata, quello a sinistra viene detto Master', ' quello a ~estra ~lave. Quan~o iI. clock e nello st~to 1 il Master pub ~ambiare stato, 10 .t;:::~¥t~~~~rfl
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 Fi~~A.36b, deve essere Ll l maggiore ~ uguale.al tem?o dl commutazlOne del master pm lento nella rete} affinche quest'ultlmo abbia l'Usclta stabile do~o 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 rappresenta una generica·rete. 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 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 e schematizzato con
.f,.pt?f~ :!f~\~~r. . -~·''I.'':'~'I'
1\'::,':~:,t~T
""~1_~: ..: <1'm:~ ',: ,"",'w~:,"~ ",,,.',,. ':, ~~~Y:~~:,; \~}:'h:;i ·~:,t:':':, ,'.',. " '"·-'",1" ',":.;'~'I~,: ,
,;.,',·~;,;;r ,
'"
,((./<
<"J~~.:~
,::i\,,/}~'~:i Durante .6 2 i FF preSentano Ie uscite y; e quindi possibile che 5i modificbino gli. ':::::'::' ingressi di RC. Di conseguenza nella rete si instaura un transitorio che termina quando .' :':~;~;:.
la linea continua in FiguraA.37b,
. ""l'"(;Q,il' l"m "1,
'~'.
. .", I ...,,,
-£t,:,
1-
I'· '.
i" .
,tlJ~
'~i.:~e'· 1'1:1~'; ):N'J\ ;,~i,l:.:
Sistemi digitali
,ill~:'~'liS'
545
'''ri '
.-. 1'" ~ ~t~· . '~'"
!ili{;'
~ :~~1~1::
~'.EJ~~;:.
~l;~:-:-
.,j:~t:
~lr::",",
1t.:~\:"
1' 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 Ll 2 , in modo che a1 successivo passagio a 1 del clock, gli elementi di memoria campionino ingressi ben definiti.
)I.~;~~ ~~~~'t~~,:. t ~~;;'
,
a.iji~'
o ,/
RC~
1 ,
r-
,
rr
, :~i~5'
~:~j~;;~ , ~*-:';.
,/~~,:~
.,
r '1',1i'h~:.'~
~ 't~I"',
~ ;;~j,~~.;;".
'
" il,\>. .•',
,,-
Figura A.3T
" Generica rete sequenziale sincrona e cambiamenti dei segnali.
~ ;~\\::,--'." ~,
' ~·I' . ;"t~!,;·,;,· ' .l,IIi'lf ','
. '::W;~';I~',
, • ~ , . ,- '" ': '~"'~~" "', ..
,... ,.
,t·
:<~"
,J'''i':' l,;;:-. , i, ..r::,,;;-
\
~ ':'~/:4',"
1, I>' 't'::,: : ,~"._ ~j"
W
z.'. ',._';. ~ ,.'t' '. .' ~ ','~;(!" j.. ,I,, """'/
.' , " 1"
:':
.~ G:,:}f':
l
Ii
'~i'., ,~t:'
T1&,~,',~~·;.
:"~~:~ ~ ~~;~:
~, '}r',;~., "'''' ; ;,~>
.
i ,~~,~ ,;: ,,~,..-. ,-". "'~"" ,,', :', !\,:.'~,
r". '(~-l~
..
,
~
,
< ~'~}"
~" ,~7;':;'...
i:" :'~~,~,:,; ' "r;..
.~ '~i,
m", "'ii"'" ,',-
" '~f~' '11',...
,rl;
.
). I
,
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;
I 1' •
• il z viene sce~to 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 sicuramen~e accade se I e pure sincronizzato can i1 clock, ovvero se lei' uscita di FF Master-Slave pilotati da!. medesimo clock.
l' {\~}{t
~ I~": .~ it~:...
I
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 preferibile~ alla commutazione sui livelli. Infatti, per il loro corretto funzionamento e sufficiente 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 diviso 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
).
I' )
,
,
1. J
)
;:"t,'
-
546
I I
-
· '7'j'l ;l!... ~ /·~·~l\. ,,,;;,;·'lll '?~;:' 11 ij, '--,';'~'!l '!".;-:' '" ~ ';O",J .....,.o'
.•. ,-- ..
...... .,..
Appendice A
'J-'' 3\-, • "'''',.' ,"',,1 .. ... ";'l\.'"'c.-.
, :""''''\)I!i ,', {.: .•. ·"~"l:::! ... '"Ill"" ,::1' lL",;\ 1.~
•
D
_~X
II
L
f
W
Set-up tim..
•••
X~_
I
'.':i'r;V,'r -:;'"'. ):,,~!:?,~ 1.:,';:
' ..
-.L "
•
NV
.VJ:<
'.~
~
:
.~
.-'.",,''1',.'' ., ',I-. .1,1,'; I.',.
,,),;,~: ·,\~·t~
.~, ,'.';l!i: ·, .' ,r"
,
..,"r:.,.' -"fl;
..
..:>
"~\'.'
'.... ," ""~' ":"'~' · ,. "-':~'''. I,,~:. .. "1"
I~
I
"'~' ',?,,:< "~
·
I--
"0"
..- ...'.' ,
'
..
,
· ····!,·\c,, :' '::-8~: ':.~/t '.' ~.,-, '.'.'.
Hold tim_
.
.." ..... ,\1' '~'.
~
· "', ,./,. "iI-
a) Vincolo per l'ingresso a1 Flip-Flop
-
-
-
•
-
-' ::;' ~\(,.~:i\~i
b) Reset all'alirnentazione
,'-r~;'-':; ''ij~,) . ,.... ,',.1'.1
I I
Figura A.S8 a) Schematizzazione dei tempi di Hold e Set.up per un flip~flop 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. _
I
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 e bene 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.
·.
·.....:."' . :):1Jk ~;j~::: >;;:,,; ·'l-0
- '-.... ':-.'l:..•.':to~. .... 'i;';
· ,'::.../; ',i.l: "<:,,;:·~::~t ·~'{t """"', ..~" , ....... ~ ",~ ",~.
", """1 ';'-1;'.' t~., '~ ,.~.",.j, ~ '
I I I
I
,
I
~"
/:-;:<~.,'. if. d~! ,
...... -'~' .•.. """:' · "',~"'."".~.. ~ '.
., ....,..
f',
:.
"
::!TJ"I- .,. ~
.... d <.
;~'l-:~~ 'r!"i ......... " .. "" . 'ml
· ,..,~. '1if);" "", ,. ~-l"~~ "'. •
" '" .~,! ,
r·ffi !~'
'.' <~~fil{ '
'., ''''i!:'\l .' ""'--'>-""~ 'I.'~' ,,;jl~~ '!~i
····.·fj\~I ""~.I1i""" ~'fi ";I: . ,,
. . ." ";;:1
.-,:~ ~
·t •
• I
~'m':
.' :~~.':~,',{.",Jo :' ....",. ,.,r. ,~
,,;","<,. ~~ '+'>('B~ l1:l J
'W
':: ;'....~Nji '
~
"'. """""'1 ···....--~a~:
,-
I'.
~"',~~ · ;',..i/" ,".\"
Q
•
'.·'··"··,·,~.I,.'
,..• '''''''l'''\r'' '.''''Id('
CLOCK
,
OK
,
"
:.~ "1~1ll "'
Z l
........''''l'''''~ .., ",, ..
z
·~>r·'t~", flr. ...' ... . 'Iro ~
I
I
---.n
I
I
[
1,-_
CLOCK
,~;{~r."'jl~· ,:; '.', " ....,\'.. ~'. '" ,. "'M_i/'(, ""
'--:"'4,;'~""'_ "
\@
"'.-'(~""'.:lI,\:' .' ~":'.'11':.·' ;
/:;'\;/t~. :
;- > ''''''''>4 . ,
..'. >~,\: "',"/;-" ...~.
· .~..r~)'.,'~
-. "''','''',.:1,. ,
...... , ""
· .•·"l~l1tl:e':
~
''':~~';'';~!l: 1
·'I
·.' ';'""~l~~'; "', '...... ,~.l ·',.A ~,. '.
I
a) Schema della.,>ele c
b} Andamenlo lemporale dei segnali
Figura A.3D Esempio di rete con uscita: asincrona.
,"., -'<.;'., .• ' ~. --"'''.l'''~~J, ~~ ..-' C,",·'f(.'<'··l(. ..,':
,""'''''l ,.,:>. .~,l''; I', :-" _.::i;."~
,.,,-j
.~~~.c~:{l." ..i"'~~"·1, ~,~ <," ..... ~). ''!
•
.~ . '\.
\
';~"'" ~
'1" ~ "j~'l, ~
)
A.I0.3 Modelio di Mealy e modelio di Moore
~
I I
i
~"
;."': il1.~ \!
Vale 1a pena spendere alcune parole per illustrare la differenza tra i due modelli eli rete sequenziale e Ie implicazioni che ques.te differenze hanno sui eomportamento della rete.
.: .;;,\~~. i~ "I"",
'
· .-~:~ •• :11',
, :.!"""". .,"J,'" ,~~.... .,:''!..,.•!. '/Y ,'-~,'." ," ...... :':':',!;'1'.1 ~; "'~'\"
"
.... ...,
"~·I .. ,;.~,~_
!iI'"\·1.'jt. "A',';'''' I
,,;· ..... ~Ir, ,.'".~''',.",'\r ',! i-:.~r~t
:,.. .. . . _'" ::~~t!I',' """~
" : .,',:'.t:'~!~' , .
~'.
'
',
.:
,
547
Sistemi digitali
J'"
. ,.' .
\. .',,,
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'ingresso e alto, 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.
::"
,,. ..
;"
.I
~,:",
~:<,
' \.'
;..•. ' .~,. ":' ,· t.,...
'. 1'. -'.
i'.
):;;.,
1 •..
:~,' ,.
0t'. ~
;"~ ..
:.-~;",
t~~: . ".;.. ,~'".. .
~"
'
,": .",.'. .
!i'
"....
', '" . '';'" .' ~i-"...
,
CLOCK
Z
iS-~'
,I
,'" ..,.
l~ \ ... ' .'
K i "
'.":
z
CLOCK
~""
I ..
I"
Figura A.40 Specifiea ill una rete sequenziale con uscita sincrona: schema di progetto e
ii:~i·f. ,~ 'l~'.. ':, ':;"'.
:...,
relazioni temporali specificate.
~"'" !:".«,..
.
li',E,,' ,., . fi~
Wi"'"
t·-·; 1'"
.... ,."
'.,
• ',_.. :
.!I;.,:·; ox:'"
;m;1i: or.",;:;,'
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.
'~.
"~":",,,;
@""" ;"··i'·.'
:~k;:',' , l.--. " \:'-'"
..0.''
1.0
¥:'
:""~ ;
.J
•
?-.:,.
~ ..
I'1Mf.'/\- .
0
-.0
•
•• 0
"• ... ,.•
I
... .-
• .- .-
•
SF,Z
M
I
0.'
y',Z
I'..
j"'~'
a.l Oil&ramma di slalo
.If:> ,.' ~:..,. ~:: • ,y
I'", 'l\::.-
•
~;r-j"
,~l.',·· ;!.j('
I
c) !.tappa. di y' e Z
b) Tabelll di !luno
I • •
">Ii".'
!i~.·
a
~~~: .
~~••.
l
,q
Clo>
~~",>~. !011'.
, il"o.~'
,
~.
"/!'\, ",c-~,
..
,. C~
.~,
YJ
.' ;J:r.,,,-"
d) Realiullzione con f'FD
"I' .
"
.
; ~.1'<'
Figura
'"/;"'"
l~::,.; ~~" '~"
!
.
..
A,4~
e) Realiullzione con FFiK
Sintesi della rete R secondo il modello ill Moore.
1
F~i
.f,i!
548
·'ila· :.l:t,.
Appenelice A
.\i~
..-dft<
-' ... '\
,,;-.
.,~~
;;~.,.
~'.. ~ ~
-
':".(:'
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 che Z stato 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.
e
.
'.0 (
0.
(»
-,0
'-',: ,:~:
,
• ."
"
• "
···'·{I'~ .....,.•. '~ · '<.~,:
twX .....•,.
...;'r.;l! j
... c.-'4·~
t'('}
'::;'i'f
):c
">'"
;·~\ ),~ttt(
•0 ,
~~\\
0,0
"
•• •••
0,0
sr,z
\ ~ -~
>~>~
e
0
..
-
-,:<:" .: ';!~"~'
:'-;' ,M:i:i
1'.1.
·'~~~I;'i
-':'; i'}jI~ .
It) Diltgnmm. di stalo
•
b) Tabell. ell tlueo
-'-''''.~I:
-·';;1~¥.
c) tlappa eli l' e Z
5::~~
-, ",'" ;-, -.-\ ;. .:"'" ':"''
.- -.'-:/~'~~
......
l.r>1
-"~.'l "'~:";
."r.;.
• •
•
dl ReaJiuuione
.-
I
·
'
,-
-,
I
."i;--;
---r----
'.::,:3.7
_>.oM
----~:J'J
I
-. ;:"it.:'
C"_''''~>'''
· . ,~'"'t','1
· (',')';;f
· 00[1
~;.,.:"":_
.'" .~r.';;~ .- ,~~r~l
FFD
~,:~i~~~,:
.) Rulluuione con FTJK
Figura A.42 Sintesi della. rete R secondo il modello d.i Mealy.
..,/., .';/"
..,.. I.,.,f -, ""'~,."; -'
<-;,"
.' J;~"';'-
'--'~-"i''''''
, ,::,',"':;";tjl';;t
·".;'·'N'C ~ , ,(ifi.'iT.
.- ·~,:;W:;
,'. "~!'~~; A conclusione di .questa parte conviene rilevare che, se a una rete si richiedond .';;!~!Ii uscite sincronizzat~, ~ueste si possono com~nque .otte.nere con l'inte~p~sizione di un ..::-;~t~
numero adeguato di flip-flop, come schematIzzato III FlguraA.43. Tall fhp-f1.op posse- ·<.1,~gt no essere riguardati come un llregistro" di transito. Si noti che la ret'e sequenziale che><~~ precede if re~istro ~uo essere anche asincrona. C?vviamente l'interpo~izione del regi- -'i~r stro rallenta II funzlOnamento della rete. In partlco!are, se la rete e smcrona (ovvero _:·;;ryW' e pilotatadal medesimo clock), Ie uscite Z, sono disponibili con un ritardo pari a un <'-i~ penodo d.i clock. "..:~"1< ,.
ZI 72 Rele sequenzia1e
•
•• • Zn
01
Zsl
02
Zs2
• • •
,.,
~.:r "';:':'~!.'.
.i~;S~i .~ !!'-.;(,<
"<~.','/f'..
.. J>.¥,!
'.: ',-"w~,; "-<,("
•
On
.
-.-'~;~<"~:; ,~:.-r~~
~.,
,.",
'>:~:.~;
Zsn
· :~:':!·~';
:, ·,q'!~I
:'.' ~",'~l
, :.-::! 0')1'
Clock Figura A.43 Sincronizzazione delle uscite tramite interposizione eli un registro di transito
. "'-"':\;;'-. ·;.:':;,ih ').',j -"_r:"
':'iXi~
• ·;,!i~§:;:'
".'.
'.: "~'!~f
..-:;~ili\l-,
.
\;t~
.F",'
j~l~"_i -
;~;!K:· .
1-
" ..~._
!,
· 'f~;; . J"-~:'.-:; ~" "F"');-
.-' -
\"
.>'~
-~'
.-'
-
,"--',;,-"."
Sistemi digitali
~
"."';',"
~ :':;";';.';'.~"""
'~* !:~_::_:
::;~ -~;~:.-".,
~~"",
-
..
. A,ll Esempi di analisi e progetto di reti sequenziali
"J' c'..'" ".:'.'1".:'.
:.r ,.~'--
, -,
Vengono ora considerati due casi di studio relativi a problematiche discusse nel seguito,
Xi f;,~'''-, .ij
jo::.'
l".• -". __
.:. ""
~,~
~"," '/:~
}~!
f'~:
AlII •• Esempio di progetto: generazione di un segnale di WAIT
"(1';.-._ ,
\.d ,~,}:; (i:
;.);':. ,
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 "ff.,· '.<,;"':.' " oJ; ••..'., _ :i;;; ":'Y;f·:" ' memoria, nel senso che i tempi di esecuzione dei cicli d.i lettura 0 scrittura da parte il:· '(i~'~~'- ' della CPU sono piu bassi di quelli richiesti daIJa memoria per effettuare tali operazioni. ~~~ ::i{!l:<:~ ._- ..... ".• _ .• Di solito tutte Ie CPU, e in particolare queUe disponibili in forma integrata come .1~ Ht.Z:,' ,~t~ ~~¥y{,-,~.- microprocessori, dispongono 'di una linea di ingresso, detta WAIT chef se asserita r' "'.',·tf. ---" ".; .... ••. :_., durante l'esecuzione di un cicIo di lettura 0 scrittura, fa allungare la durata del cicio '-:!;lH,~<:, : -'".,.""t-. -c' ..... -. - in questione per tutto il tempo in cui la linea viene mantenuta asserita. l!. '-:if,>--,'_ ;i' I",t;:s.~_.'_ .t.' :; !j.§!"_ In FiguraA,44 viene dato 10 schema di principio. ;;~ J"To<" .-.
\,~'["
'r:'.
:.;>,
~;I
~
7~" "'~~:h:
:':.:~-;2
,-
,
J4- c
1JJ;
. ~,.,,-.
_<'.
i'~,_~,""
GX
f,i. ~.;..•~:>-
~;t{".;;r.\,. .
l:
t,,!<'1r·-,'·· .
"i
',-"
GENW
WA(T
'", , .. '
WAlT
;,,, '11~'>.'li," -'J"I ~~('n\'...)
)
)
,
I' I
)-
"~':.
f.~ "!5~;.,,'; ,
X
CPU
:'- f~~\k~{-
"
)-
.':-
'.'7',';' ~ ;'
c.';;,',
Mt¥
1-
.. --.-
~~ ·,_~·_v
~t·~ ~.... ';:
549
' .- .~':iF'i~f:."'·:' ;tu;, ;;$~,:-;':-
~r!. k"':;>'-'>" .~"" ''-:.It.. ·<,.. ~
;;~ 1j.,'i;~f::
Clock
;;':;~Jf?ri}-
.....
ij~" ~~l<-.- Figura A.44 Schema eli principio per 1a generazione eli un segnale di WAlT. ~tH~t~;:,~' t;1;~~.,ft';
~; !:a\fL~
La rete GENW genera un segnale di WAIT, della durata di uno 0 piu periodi r~ t~Ytt di clock, quando viene asserito l'ingresso X. La linea X passa alIo stato di asserito a 'J.~ ~t;i~~' seguito per esempio, della generazione da parte della CPU di un indirizzo relativo a i~~~~I un blocco di memoria per cui OCCorre generare il segnale di WAIT. Si deve progettare
~t:
;tt
,~
I)'",tb'" !~~ ,_. .-,
r~ '-;f< ' .iif'[{,~, ~:-;'" i; ii' .f.~~; <.'" <.J~1","
.-1i .. (j.~-.. !<'l' :"~;r.! ~
;.
-"?-&i;:c'-
"", ,'-"":'.... '.. ,,* ,"';~ •...
;: ,.,~:!;.,,-
;·ri \,N~::~.. ~
I,¥ :'jf.t>::~,: l!, :." .iI'~I"
.
'.;.... '.',','1<';" _ -.". ~,\"",'>"ih1~i :~'.::r;;" ".I.' ,,:~F"'-
~0: \;W{l~:;-,
';[. ,~.",;;;"
ft ,(~~{ -"': ;'l;'hffi~,-.~,
'''~
~.f i-,i.~.
L se X
)
] )
,
e alto WAIT e basso;
2. quando X viene earnpionato basso l'uscita WAIT passa ailo stato alto con un ritardo di un ;periodo di clock; 3• per generare WAIT non e necessario che X venga eampionato basso anche sui secondo clock, basta che sia tale una sola vol,ta; 4. WAIT resta a 1 esattamente per un periodo di clock; 5 . dopa che WAIT e tomato 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.
}
-
j J
"'...
~'.'
""<1,;
-
I I
..{~.-. ,:.}
-
j
'", ,
,-,i"l
:>::-
.m ."..,.. , '.'' ...,.
,.,:.", A
A
A
•
A
CLOCK
WAIT
c
o
o
D
o
o
A
A
•
h.-
c
1
I
•
","
,\.
'\,;
, ,~. " I;'·.... "",<' . r;
..,," ,-' '.. '..-,'1'11,1, ,:n' ,', '''~''l ',;~"f
I~ "9i~ >~ .~,1'
I
, ,
~
,,,,,~,
~'-
,', '",
":'.",:':':'''''.' .; -!iO;C:' f,.." ,,,. ... ", ~,.,i:(,t'\1' ...,I!
';'·:"'1.' 'I"~
1_ _
" '-"'V', •· ,""',,o\..,:;,,~ .. 3t" ,~"
'j
''',.:.'.~'.~~
_ _ _ _ _1 I l L
~;.lIi· ,....; ,', i(~ ~,{,
;~' ·· ~'".~.K" '.~;' .",,; ." .", I
".'.'
"
,
),.
:,"
· •
Figura A.45 Diagramma temporale per i1 WAIT.
...
...
.~, ,...... ~ ....:, ..
• ;!"I~
x
- I I
t '.'
·",".....'~.' .,,,,,,l!'i ,.·c,
·
Appendice A
550
.• ,;~/
';~.,
I"'
(;',,i} '~J' ,1>,:t ·"",-"t"".,: "., .ct". ",., '. "';'
n,.,.r:'I) ,,"j'
cio ·'.:k)::\.: ,:.,} I:J'";,:.,. ,, ."." "";'t1
.. '.-,~:::,,,( ~")"" La specifica-impone che l'uscita WAIT duri esattamente un periodo d.i" clock: r ;.~,\"':,'i. viene garantito rendenda l'uscita sincrana rispetto at clock, oVYere rendendo 1'uscita .. , .•..., •...,' .1." ""• "'!"'#~ ... ,,,,' '~ ..... funzione del solo stato della rete. Occarre quj,ndi riferirsi al madelia d.i Moore. ·:,'j.~n~ ~l~In FiguraA.46 estato disegnato il diagramma di stato deducibile dalle specifiche.· ·"~rqr· , .'
I -
-
.......
,~,
_n
~,
'J
.',
. :. ~\:': ,.< .".'_'i" ". ,\:<.j' 'Pi:.
x·,
I
I
I A.O
I I
'/""I~I~ql''" ''''~'
x. ,
x--
x-o •• 0 ~
c.' .. _. -
x-,
x
0
•
J
D.O
'--< -'.
.:, 1":~~~~ ;:,l .~. " '.. /"" 19 ~JI,' ~ ,!.'.:ll!:i,r~ "~i: .' '.",(•. " , ..,,~~,\~~.;~ ·_"tl'''·J'ti4"
" .........,. '.'\'f.1ii-. ,~~" ..tl~ .• ~
\
~ 1
>l~
.~~,'~
::",::~~~~!. .
x..o
.~.,
- '''\:;:0''''
· A .46 D'lagramroa degIstatl i ' deUa macchma .
'.,\,:,:Xj":" • ,~_
:
",-,'lJ,
:-i
Jffi f',' .r,! J., "~I .'"
; 8i noti che l'uscita WAIT = 1 dura il 5010 tempo di permanenza nello stato C, ,\~V~\';1: :~ ,. ,~<" 1~'t:((~ '~ ovvera un periodo di clock. Se si codificano gli stati nel seguente modo: A = 00, ,;., """,.'ii~~ . . ,, " ,,, ,,'-'" B = 01, C = 11, D :;:: 10, 5i ottiene: ... "'(::.::"\l'v ',. .- ~', JL ..
-
-, >~.""
' .. ,,~ ... !'.~ ';A
I
y~ = y1X
+ YIY2;
Y; = Y'YI
+ y,X;
.,r,~ ".?I . "-.:.... '-'
WAIT = Y1Y'
~~'S'J.\~: '. ,U·F;i·
:~!_''''H''' • r.. ~;~~!~ ',~
'. , ..."< I
,-j;'i'..:,!;: '& da cui 8i deduce immediatamenLe la topologia della rete nel caso di realizzazione con '.'.~~*!'. ~1 tI,~I:~.\7~ ~ FFD (basta porre Y; = D, e Y; = D,). . ·,;'\\-~!y;:;. ~ .", Se si usano flip-flop JK si ottiene: "" "'.,' '1." • ..........'.\\1.'
-~~,.,
j
..
\
I
I
J1 = Y2;
K 1 = X;
J, = y,X;
" .. ..~ , i.'. ." '.· .. :';:'~.!Wi" , -,' -
':1 ".;: )!o~'\111 -"."',;" "
K, = Yl
. ,',,;.:·::n~~r, i' ,' ..),,':-~~ ,
,'., '.:;::,~~~ \
La rete risultante e disegnata in Figura A.4 7. Vale la pena eli osservare che se si fosse voluto avere WAfT = .1 per ~ perio~ di clock, sarebbe bastato sostituir~ 10 s~at,o C c~n una S~llenza obbligat;a di k stat! (C1,CZ,' .,C k). In ~uesto caso ogDl,va:rlazlone di X nell'mtervallo dallo stato B alio stato Gk compresl sarebbe stato lrnlevante. E anche facile ottenere WAfT = 1 dopo m impulsi di clock anziche dopo 1; basta' · . 1a state B can 1a sequenza (B 1, B2,·· B) sost Iturre m'
:~~'Jl'i~~ : ~,:'.'f~~;{ fl~:.{:? '
';-~~t\ \
..... If,·, ::'>~l~~i! ?
, ','
.~'t,~~.';I~, t
La.rete di Figura A..47 e stat~ otten~ta adottand? un metodo .forma.l~ per la sua sin~ :' .t-}~~t~~ I tesl. Molto spesso il progettlsta IOglco usa tecruche e trucchi <;he gli consentono dl,:.',!~~~!~~~
· ':I'~'.,. ,,,,, ...., "v' ,
~.
.;
~"
.. .... ;..<
',
.~.-
,.
};
_ •
i;',
,
,.
Sistemi
...
di~itali
551
,'~-
,".
.
-:~.
.~-
,...··.,.
".·''', .. . '·f.'.:\.'. '".,, \.
-'.
He.. ClQ~k
.'"..". I
x
!'~"',
~::
j
,
L"
:.
~:,:
"
, ,"
. ;.. ~
,
~
J
,
;~. . ,. "
",
,
,"
,
Ll<2
/
.
~'i
~
"
"
."
,
,
'''''
Figura A.47 Genera-tore eli WAlT attraverso una rete swtetizzata col metoda formale.
~";'
t'",,~
'!.:
,..,.
ft'.. '.l","
,', '
"':
arrivare a una soluzione senza passare attraverso tutti i 'passi del procedime'lto rigoroso. Si consideri per esempio 1a rete di FiguraA,48, dove si fa uso anche dell'ingresso asincrono di CL.
"
},.,
." ,,'
.,, ",'
.~
~I~-'
-i:':';:
,
,
"''(~' •
" ~• •
••
, "-
""}:: :.";. .'.J.'
l:r~~:,
(
/"'" ", ~~~
"
:l~;I' e'·
",.. 4ff>"
"
,
,
"
Q
Q
, "
Q
WAlT
,
Clock
l~',~: ~ ....
1,-
~
,
Figura A.48 Generazione del WAIT can una rete castruita can metoda intuitivo.
.
«
~~
~
,.',
\ "'" .~;~
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 perch~ 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.
·:;l:';-.
f~~' ~i!"-"
r.i"~\" il:.~" !!," "..
r "...
,'II;i
~~!'!(~"" I
~>~'1;;::.',., "'H, "
L... ,,"~': t,,·
'
A':.,"~'"
., .~'.' .I-"""
:;,'
~.~'
1'/" .•,. &"V'
~
1'l1.
~;.,
":RII.~'··
..
,~n,~_ ,U'.r " '"
. ,,, . ·,".i', -~
A.II.2 Esempio di progetto, rete per I'adattamento della temporizzazione dei segnali
~,"
'_ii"" ~;"
' S::: 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. {<,~tr·· II protocollo di interazione tra controllore e unita. centrale eUn normale protocollo
,~.,:'j,."
'il:"· \'iW' l".
?W~,'
t~~'i<'
Ij~~~
~6)!,l-':'
;,
"
.
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 stato rilasciato e che questa puo passare sotto iI controUo
e
lOSi assume che in caso di contlitto l'ingresso asincrono (CL) prevalga su queUo sincrono (clock).
-:4~':;
""'",.:'<; ....,..,".. •
.
'.~&.ci.
,,'"
,.'Ql·· '__ ",V1"~'
Appendice A
552
~
:"!~'
, ·';.>.'''':It!-' ,;.i'-i!' .' -~. ..\;t~' ~ · ,·;_.t~ .. ~;' ",.. .... :
-
"",~,,,,,",-
''-';.~~.'-
",~;'.';.;;; ~;'
del DMAC. 'futtavia, il microprocessore 8086, quando funziona in modo massimo,
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;§,~
._.~>I~~
;'-;'-i''.'iJ-
2. La CPU risponde generando UD impulso aulla stessa linea. Si Dati che tale impulso' ~·_-~'\t~iJ;.. pUO manllestarsi suI clock successive a queUo su cui 5i e presentato l'impulso di : '~~j1:i~ richiesta. L'impulso generato dalla CPU ha funzione di Grant. Sul Grant iI . "/4~t1~; dispositivo entra in controllo del bus. .~. f;r,.~b~ ·,I·;,,;_,:!t
il
3, II rilaseio del bus da parte del dispooitivo viene notifieato alia CPU attraverso Xi;~~l un terZQ Impulso avente sIgmficato dl release. ,"\X0~~!,
Ovviamente, siccome DMAC genera illivello HLDR e si aspetta la risposta come ':~~~'ff; Hvello (alto) di HLDA, l'impiego con 8086 in modo ma.ssimo richiede una rete di ":::"0;;~t~. trasformazione .de~ livelli in impulsi e viceversa. n ru~lo del~a rete e schematizzat~ ',~.{;~~: dallo schema di FtguraA.49a. Nella parte che segue Cl apphcheremo a1 progetto dl. "":';~81{~ questa rete. ~, l.'t~lli~; _.~
t"
.' . ,,~.'r,; "'
'i'-'1oi.i.~,
, ""~'"il''. ,.'/f-'~'}:$'(~ ""01-'" 'L,:
H
RIG
CPU
A
"·-·,,"'~·i
,,
'"."",.
• ;,(1'%1(,'l;ll~;
III Schema dl parlenza
,~,- •.,:l.'
,
,.:,.•,::.·.'' j' Il!'
DMAC
, \'..,' :d . .'
v
~' ~ -'f,.,-~ :,.-.~",':l:'
--.-":~..... : •.\.,:;;;,1;
;
·;:~:·:\i~~:d
,: .. ..I,."'~ ..*~
-:.~~,:....;)
" 1':;;"" . :,;,,/v,~~ :''';ii~.~~,',, •:.-.. ;J, ~:"'>'t:;.~ ....... ~
.
H
I '0)
I
:.•• f'>I", ""~':::::l --.,;? • ,,,'1
I
j . ,...
o Rio ~ '''''I'~' .. I I . I' .:.:: :-:':':'::..:...
R
'"
':>
,,/ H
o
) I.. m _;. _:, . :.. .:.:.:j. ..
>
A
)1'.. " ','1
)
R
-'..;!~' $"> ",:"'1~""~~ ., '~'oi'...,r.>
.'.'Ol!,.. ~ '" '''~ · ·.,';<;.;~ .;..;~,"
,
.. , ~'~".';;"
,,""-.:,.., ''''>'::J);~'
•",:r~,.ih; ,. ~<- " "
\".'"'''''-:''.~;. 'I:-.~,(ff
4?0-
~·"''''''· , "",:",;~~l~
·
c) Senemll dl proS.Uo
'::~.\:':.W:;~: ,...-;t~~' .,:/,
--,' ;(
.. ~ ..r,-""
';~j.I;r,,'l,
•:;,..-,;;.",."".,
"
..'.'?:'p.&I,
,'.\_",,~'
b) Sep-.rlltione oil R da G
.
(H) e HLDA (A) negli impulsi RQ/GT ( R I G ) . ' , .
In Figura A.50 viene data
l~ temporizzazione dei segnali
.'
;::·:ttf;t
·;!dj[
"~,
'\<"'.J.
ll
.
Si noti che quando
::'~:~I~j
"';~'''''~; ~,..
-
""~"'~""
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.
·':::~·~~ji: ..:~~~1
., ·"'-*'~,"",
.".~,
"~' ::,: .... 1
1.,
.
'L
Sistemi digitali
I~'
. ',,' i :',,.. "',.. .h:>: - •
- ~WI;,.,:
..... ·.I~ , ':.~~;',.
~:;."
1-
'
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 e quella di Figura A,49c. n significato di ReG e ovvio, come pure la lore temporizzazione.
,.:~';'i:':"
~ ,:}'}, :~;\:~\.
'"'' '.
_<, '-,'
: .~~~(::" •..., ...
- :,iL.-,::
- :il';L';.
. ~'it"t'~
~ ~i~'iS'
; ~~r\\,'
~ .~~y
l' .,,~,tr.t:~.
l
553
if
, :1~~r::
GLI(
L-
~
1/
; '~~/:
: ll~1'
RQ/GT
;& ~Jt~I!,;~' 1'lo'V; ,
HOLDA
~t ~~::.
"
'": • 'l,~., '~\ Ip.
.... , ' '',~, .", ' i !li"' " t ~\. ,:.. ~. ~'lS.:1 '..
GT
"
".1
-
V
"-
"
REL
-
.
1-
I·
Figura A.50 Temporizz3zione di una richiesta di bus tramite i segnali RQ/GT.
., -1"-
\.
;': ~~ , (,:;.
'1 ~e"~lt 'I
-
1-
HOLDR
. !~~,~.?
1-
$f,"
In Figura A.51 e viene dato il diagramrna di stato, tracciato sulla fa1sariga dei
r..... ' .''" "-"'), tI1 '\."
'.
,;; J :lii\'," . ":!'~ ,'1.'-
',.1'.' '".' •,,,;,.
>!\' Jl'~>I~' "
~', ,".o,j(j"','
>,
J'
"OJ! "
~'.. /'-!;" ",.~!j.
,,"~",. -,,,~~~,' ':
"l~· " .- J , '',,;~! ],!-'/i
;,; " ' . .,~~,., • -,
.:~-A:..~ ,,' ';, . ,_' ·l': ~~; "" .:;..,
\r!&"'I,r"
:'., 'i'~; ~-" '~: r liJ~,\ (,-., ,. "'.,
"'" ,~11
.....' ' ,,.1,,2,,,,. .,,",..... , ,:t',,:,
': 'j':, , I'-'~' , ,l \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
[9.:;~t
• 8 5 : 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) ;f,: "'. ~. ' '-. ",~ ~ ;"" di Figura A.53 per Ie uscite ReA e di F,'iguraA.54 per Ie variabili di stato futuro y~, :~i~, '~1". -Y21 y~, . Si ottengono infine queste relazioni:
J,~ .I/j~~,
.:>'
'\;~;.
j0:~ ~~:.t·..
1~·1
,.!!M
"
."
II
I"
• 8 4 : in questa state la rete mantiene a.sserita I'uscita A. Lo stato viene abbandonato solo quando il DMAC disasserisee H;
'
;t* '~, \)'"
1-
1. ,
)
.
1
I
664
Appendice A .
I
S5,00
/ (
•
l-~
Sl,lO
S2,00
-
H G ••
I
S, , S3 , S. , S. , S,
\
-
••
..
••
S, S3 S3 S3 S,
S, S3 S, S. S,
S, S3 S. S. S,
0
S3,lO
•
I I
-
" 0S4,1l
R A S,
S, S,
S. S3,
, , , , , , , ,
•
S, S, S.
, ,
!!j.:.X:+-_
x...
I y,
-
-
I I
I
, • ,, w
0'
u
,w
y,
'0
• • • , , • ", • • • • , • , • •
~
.
. u
y, -0
0'
u
'"
• • • • · - - · · · · · · · y!
R
-1
y,
, "' •• • w
u
• ", • • • •, •, •, • Y3""0
'0
•• • - . - ", - . · ·
•
0
,
• ,
0
A
0
· . · y~
-1
Figura A.53 Mappe delle uscite.
-
-
\
,
Yl, Y, -
I
Ys
=
A
~
R
y, + HYI YIY' + Gy, HYIY2 Yl + Y,Y, Y1Y'
+ HYI Y,
l I
Se si usano flip-flop D si ottiene 1a rete d.i FiguraA.55 (dove vengono usati i noUli effettivi de; segnali).
I •
J
Sistemi digitali
y,
, .. ., , " , , , , " , , , , , , , • " w
U
0
H
.. .. •• , , • • ". - - - -
Yo
••
0
-
u
"
"-
,
Y3 =0
-
- - - ·
y, ~
.., ..,
u
,
'",
• , , , , u , , , •
.,
• • • Y3=0
Y3=1
Yl y,
,
00
. . u
y,
" • • • • " •• •• ,• • " , , • • "
.. .. ..
.. • • .
,
y,-O
w
o.
u
••
" , , ,
00
0
- - - . " - - - - u
. ,
Y3 =1
Yz
••
• •
- - - · · - - - - - ·
u
0
y,
555
Y3=1
Y3 Figura A.54 Ma.ppe delle variabili di stato.
A.12 Esercizi 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. Esercizio A.3 8i impieghi il teorema di De Morgan per passare daUa prima aHa seccnda 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 si dica quanta vale l'uscita per tali ingress'i, per esempio 1101. Sl progetti la rete che segnala gli ingressi non BCD. j
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....
-"..,
'''j;; ,:;:~
"C
>;--!"·k
556
p
'1~~~,~~j .;., , ',.,~c!.'It\, .• ~. " ··'.'.....'·',. . ·'·D'!l -':!-•. ,., "' · ''''~f:ii' . .,.,.,;,
Appendice' A
,.,.:,c.,I'f : ':,';!'j0,t :
,
"} ctACK
":";'~',rn", ,.• c.,>".
',".,cJ".,." "'''''-,.'
." .';'"
-.
.
Dt
RESET
,
-,:,-?,.\?,~ - . "..ll~
Ql
"cUt y
"(l
• .... >. ......... :A
,'-',,:,,·,t: ; :-..,.! ....,'
I-
'., :: ";.:;'
"~l.'! -..... "..
• '-'.,-;;:.1
-' ••... ,.,:;1:.
. >;.:~.f.~
, -":/i\;:;f" , ,".' ;'.,vi;;
'.' ~,~ ....~ -'.;.:.r:-;
~,' ,'~:
HU"
"
..I-
'::J'>--
f-+-j,,,,
~""~"-Hy::J"':
D
'.' ".~ ".' i.i,"
.', . ,·<;....'~l' · '-."""'~"~'.; · .Ii.' :'~"1,,:
.
·:; .".';i'~:11,r ~':;';',":,.'
...·••_,."ti,l.
..
"''-';;~'''[-
·
"i'rJ!<';: ...... " '''<':~'~'Rl
" .•u .•. "io."
.... ",;, IV':'" · ••••,:t(ll, " .-.~'-.Jt·;r: __ .~,'.,t..,., · r"-AJII;""
.... - ...,..., '.,'",.,y,~", "."'I:'~>':i(
I )
"
'-H>"
"
""" T
..."'~~.~" '."....~"
,
':':'j;i.'it~~,' ,..' ~'J .";~,,,. ., .,,~--,t.·l"'.
I-
...:. ·,);c-rlif , "' 'r,':i~~"l,'l!,1\:'"
""""1' ."i'"I"~' L ,., ~:";,,~.'~;,", ',' ·';i'-i.~>':,
Figura A.55 Schema del con"ertil
,~._~~
RQ/GT.
.,.,
...;>':>.t'(. .';..
""\
, ··;r:';'ft;;.tJt
:."·;~I
Esercizio A.8 Le reti SP (PS) si trasformano direttamente in reti di NAND (NOR}, sec~ndo' Ia tecni.ca ill?strata af paragrafo. A A:2.. Si verifichi. .che ag~~ngend?' in ~1:;'·~;r.;?*j1~: USClta una. ultenol'e h:vel~o ANI? (O~)'. dI em SI devona preosare gh mgressI" Ja, ~'~;:{~.e tr""formazlOne naturale dlventa In retl di NOR (NAND), ,.:~i0W~
,:::~~~~j, AJ paragrafo A,5.~ la parita..e stata cal-colat~ tramite una f'et~ c~m.: ·";:..~~1\~
Esercizio A.9 Si dimostri
~serci~io A..l0
bJn:aton~1 sulla p~o!a tr~n:essa 0 neevuta (~lgura A.I2}, Net caso del!a trasm~ss~one' , .,.Y);:if1 senale dI caratten dl n blt, IT calcoIo della panta puo essere effettuato 7 m trasmlssloue '.e>~~*W e in Ficezione, da una rete seqnenziafe che cal-coli it bit cii parita s-ulla stringa di bi~ . .:.-:,~~~.;w-J via trasmessi (ricevuH). 31 progetti: una ,simile' rete per n =' 4 (in trasmissione H bit,; ',' ·:',::}F:;;J~J~ di parita calcolato deve essere trasmesso corne quinto bit). . . ~".":::~:;i;;1&
a
,;,-·;··1:",~m
Esercizlo A.·Il Si: faccia riferlrnento ana ceHa del Bommatore compIeto costruita .~:?)~~; p~rtire' cia dU~ semis.ornmatorL S~ m.adifi.chi la:. rete per farle eseguire Ie operazioni' ";'~k: dl A.~D e ~R. Quah al-t~e ope;azlOm IOglche 51 possona ottenere a basso costo con ,~:.:~~?f, J'agglUnta dl opportune hnee' dt controllo. :"7!;;~.~ ,
:r~~~:'
Eser.dzio ~r12 Si consideri I~ ~LU di Figura 1.13 e si consi~eri l'ingr~sso di contral-' ':/j~f~~ 10 C3C2CtcoR_f = 1 - -011. Sl mea quanto vale 5, <;:>vvera che operaZlone effettua In : .:ri~~.!~
"LV .'
rl.'
':,. ";';;!-I~'" """>:!~
,',,,
.' ":~ 1.'I,i}
'::',"-:i:":!-t"
Esercizio A.13 Si esamini it componente (ALU) 748181 e se ne discutano Ie funzfonalita, 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. .
·,..,:-~~
· '''"•.';;~, . '" :,<'. ..".',\1 1'[
~" ,:;::0-} ,·I,..()r.: c,'
-"'!'~"' •
.),;"'...~
'::., ",!~,~ . I"~" .. ·.~·
',' ~ 1/ ,·C'".,"" "~"i'"
· -.' "··.-.io
-"l'
,
) .
;(;,~.
)-
.:/"'
f~t ...,.'
p'.;t~" l-¥' ...
"ill":~
'!"~(\.;". ",,;'",-,
,
Sistemi digitali
557
..... '1;"1. ~1.::"
]-
:t"'''!;-•.
:~~'i'..
·('~;'I "'"
,,'"'' ".·.·" ',:.>" ",." I·· ,-
Eserd~io A.I5 Si progetti 1a rete che costruisce un FFSR cia un FFT.
~:--'. .
_,,1... "
;,"',l':"" ';""-" i ,~,'i '.
' ,"",,""
,,,,,.I. .• ' ~.,
:r.:1:i'- .
.#;.: " ,i;:1';~ .,~:',
."I:~
.•
,
.
~.<.':'lc ." '
..:. 'rl:.-~, .,,, '!J.~,
...
_.
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 e oaservato 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.
)- .
I'~~t-;~"
.'.11 ",," .. 'l.ilifi.l~~. :i·' ,:~'" ~., .. ~.~.
. 'r,"
'<5:1".,:, , '. ".,.
""., ~~!, ...
r,.. . , ,l'~":!'~.-,
I..
:· ,,111 ·/~;-'..
,.~.,;."""
,~
".;... ~~.::. '•• ,',
j
,."", "" ..
',!\,\ ~~-" ." .' """ .. ..•.,.
1...
J"
, . ......"::"," :i\l,,1 I, ~\ "
"." L.".I,iII'~;jl' ,J
- ',,~,: 'J~
. ,'"~ r~;.:.'., . • .'1' ,
~
,....,'.
t ~tr~I'
I~~. J~:'I':'
e1/7{.:'
i-:r;:
,~i<, ~ ~ ;ri~~:
1, ~i
,~,~,;:-:
J~,
i;,:--
-
1-·
I'. I.
.\"
)..
~ I: ~~::' & 11~:
-
; ::. n;,1.
1..·
W,
m /'; 4.'~
:t ~:~!-~.
,: ~,'
~" i~t,'~
'
'M,-;':'"
~ 1~~,;
1-·
~; ~itl~,
~' ,~r;'i~' " " , . .' }!.l"
t·w·· ~r~ i&':'.: ... " '-i>;-,
" ;;;'j"
)
,
'.' I '.,' , ' [0., . ;..... ,
}~' ..~,:,:': :;: ' .~ ..,"
'w:. 't'
•. ,
~~
~~
•
}
!f"
"""" ·.·J·~ ,l~
. "'/'''' " '~"'I"';
of".'
,,~
I
)-
W
_. I _. I
~1fi
...
.. ''
••
,
.~._
' ..,'
I'
:;:.:·~1" '~l'
"'!"!!f
""'",LI .. "\1 •. <.. ll~''~"l ";;'. ,1\
.-,.,.~'.,'l
,. .J'-1
',,",".'f; t,; · ,,'.i>.y,i~! '~'
•'~"';ll.~' ;., ''''\li(, ,.
. -,.~)t,~'" : ,
~
, "'I "
' .. n~~i :: I"~ .. "",~ ". ,";;"",' ~" .. ",,'-""'\0.: ,'.:~:
""":Iii'
_. I
'''''>1~,'
I
--
._,.~
'.
.',
;,
;'
_.",.~,;
'. . ~~j):f :': • _.(
'1~
.'i
,"
·b'··~·
.,', .... :.~,;,: 'r
; "'~~J~',j'i' .~ ·':;.: ';Jit!' .. .F!JIlI~: .~~ .:';~1,~1't~ "i.~ -"J::, :, 'Ii ;,, ;,..... P,l,! ".
_. )
· t .•
_.
'>"')4'~Y~ ,!
"I!'~jr.~. i "~.~I~:· 'iii -"~
-. I
"\""""'~{~~"I{~" · ", , .... '70 " ,' .'~'H~ ,:.. '~
••
··"i:',,'" nr, "~l 'iI"
_.
., ••. V',,i'r<
'.'iF.~··i·.; 1 ' : ;,..,;'
•'f. · .:' .•". ,1;1 -'1:
~
.~ ~..,
.',,' 'N'!..,J,i\': . ,~,
,'"
'.~ " . , , ',~ '
i ,:'.' ,~,l' :J ,\.':JI"""'~:'-.
·',:\'' '_,a, "5 .. ,~,.\1'-'
'.' ),'....' ,}.;'; \;
""1> .•,.~~,;. 'l."
} I, N.l'! .,1
-.I
.·".l~l·i",· '' . •..• ,'-'~. "'
,.,.."'''''", ..
'\~~~ : ·.~~~~~:l 'If .. "ol," "
,', ~/.'M:>: '::
--
::' ·t,ld~'
-_. _..
{1
· :", '., ViS ( "".~\ i'J' '\. .- "\1 <,'l: ,'" '"
", ",.t \,
I
--
}.,:: '
":!':~:;:'l:"; '~ "., .•,!,r/! ,~
-
-
"
":"',;\'i:. 'f "~'''''~:';~, r
-. I
_.
'~' ....
I.""" · ,,,• .,.,.~
.,{~;~.(.,!~ i~
-
-
"
" ,·,',.j1t{.I!
"'...",:th·A~,,1 •~ 'i '. ,<:•. ,,/0' '. :·.::r>t.·r~~I, '1 , , :"~ 'it ~
•
·
I
:rV~,':.b " '>\'.•.1;. ,•
..•;.;"'".,. 'a
.'
-.
"
, "'<"'w" ., .. ,
~.
'~'!,.
-'
'" "to""
~
.:~~:~1'1;l\ ~
.,~:.".';J;"'~~! ". .• : ".', l'" "•• '::'~ .'.,'" , ,':1:. ' '.,
.'
.,'
,
. ~"''',;:, ',
I
,.iiE,;<" :
\);v.~~;.~ : , ,~·t~·
· '''',,~., "
:
.;:.::~.\I;,'J,~~· :
....,.
.'. .'• .',," ,~•..,." .... ,,'.:~;~
"
, "
"',>;",~, ,
l
··::"".,:
~~~.,:' ~ "'''~' ~". "J"
'
• '.' •
t··~·,1;~ ; , 'l~:'"
'';:' '.'-" >
',} i'i,J.)
''", ';>-1 .. , "~:"':~';;': t ,,",:: ~Vjl ~ ' •• ,\ 'I'
1
- )
..-"', " '" ,," ','."
;"'1)"0"'1 i
' ..d!, ,"
,.,r;?~;:-: .',. ,'
'<,'......',),'
·""~'" '
"'....= ,";:;.'..'i ",.
'::\:"~i1J]i~ ~, ,jl',J: t,'!U ,.'
"':f'
.,......1 ~~
WI'
i"'1;.
.'
''''AI ~-,
,.-
_.:.,
';·
'.!~"
.. ,~ 1;,' - •.. ,
.''!, 1"'"
;j"'; 'Zr,,·
B
, 'J' •• ",' ,
,(J" -\"
i,'
.
'
". ";l..;,,"_ '.' ...:;I.~... ri'
..
L'architettura 8086
'\:".".'
;
:'",.,.
it.,.,
·~,
rd:.
~~l· A
..'''~.:
~~.,:
•.,,..'t:.,,, ,
~<;','
.~~".
!~W\ i-i'."" ','.,
~'"
"".""
"1" ",:. •
'~
~f1~~,.
',\1l.
~~:~ ..
",bIi.'''.,
.;'::
"If'-.- .,
'f,f...
II' ,
,~::., : .. '
rJ>.;,,·;·
~S}'~'
~ ,i ..",
".' ,,'. " . :;, i:'~'''' J....,.. '
~",,:<',
,,, 5li"
:!". ;.~~l~:
"" l.ib'"'
,1".:,=.
''',:~.j''' '!Il" ,,;
....
::·~V~·,
:-::1''-'
'!!f .
f.li'll'
"I!" .. 1 :1·\~J"
"
(1·1'1':·--· \1i"~'.' "", " ~A'·"
!\j".... ,,'.'
'..' ~~ ~,."
'.'~!'/""
'11:l.~~,,:., ~!j, ~"
"'~l:':> ••,,~.,
'aI" . ~.,. ,,<;. . ~.:
~
..
~t~,
.•;:'",i ."" ,~,-.:" '''1-:,-,-:
:"'~'.,
... :,llit· .
,;;\~,
,WJ"
:\1~/;. 'i't,'):'
:~,ri ,,'
:~~,~;":"
.
,. J , "~l"J.,
'Ii]"'. '
' ~'I\i''''~'': '~ ,-","
,.... ~.".
....._-
',,,",,,-, .. , ....' .•
• 'i'!-I'-','
;.-l.V'j}1
" \~.-
'.
>Jt':'). ."".... -
,1,Ji!~'
tit,;,!):;··
~.;,.". ,., .~ " ''<: i, '~"~
,
"~
,\! \,;,,, ,',
,,''!",:.l~. ' ..~
'I" '
, ~ ,;l~: 'i" '
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 della CPU 8086. Nel testa si usane in modo equivalente i termini llarchitettura iAPX86" , C'famiglia iAPX86 11 , "famiglia x 86" I U arc hitettura80 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 (parvenza di compatibilita. con 1'8085, integrato a 40 piedini), hanna avuto una notevole influenza nel determinarne l'architettura e nel renderla non poco comphcata. Nonostante questa, l'Intel stata capace di introdurre, negli anni successivi, tutta una serie di CPU che, seppur basate sulla medesima architettuia, oe hanna esteso Ie prestazioni 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. n capitola e organizzato nel modo seguente. Viene prima esaminato in un certo dettagho il microprecessere 8086, al nne di mettere in evidenza gli aspetti deter~ minanti dell'architettura. Degli altri membri della famiglia vengono forniti dati di confronto e trattati quegli aspett.i ritenuti importanti che non trovano altra colloeazione nel testo. Tenuto canto che sui. microprocessor; Intel esiste una vasta documentazione, si evita di scendere eccessivamente nei dettagli tecnici, rimandando agli appropriati manuaJi. Per quanto si riferisce a questi ultimi, in bibliografia vengano 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.
e
.,: 560
-~~
Appendice B
",~'"
'i:::; ~'r
"'i,I •
,..'
Prestazioni in MIPS delle CPU Intel dall'8086 al Pentium
('979)
8086 SMf-Iz
,
;"'
· "" · : ;.'
"'"'-I
0,33
••
(1982)
0,66
8086 10MHz.
0,75
8OB8 5MHz
0,33
wee BMHz
11,75,
2868 MHz 28612MHz
(1985)
. .-, ·:
BOB68MHz
3860X l6MHz
,
· ·
-. '". ,. · "-''\
. ,w "'
1,2
,/, ',,',." ';
2,66
,; ·····' · "~
3,6
".;"
· ''
'::,~
386DX 25MHt 3860X 33MHz
." ""~~
.
· :" ,'. 'J:.
11,.
386SX 2QMHz.
2,5
386SX 25MHz
2,7
38SSX 33MHz
2,9
386Sl20MHz
4,21
386Sl 25 MHz
5.3
'.
(1989}
",". ..
·"
,...
'. 'l
""
"",',' ':.....
,'.', ;O
'..' ","" ;, ,
"',", ·'· ~
4860X 25MHZ
':'-'
.'.'" ,
4860X33MHz 486DX SOI.4Hz
:C?r · """ .'
"r
"
486SX 20MHz 486SX 25MHz·
",''.:
"
,.· · '
', "·": ,"
'"
486SX33MHz
;'~ "
.'"".
41
4860X2 50MHz 4fl60X2 66MH:t
'.;'
"
~'.
54
48SSL 20MHz
,\
""
15,4
486SL 25MHz
"
·'
,:.
" 25
486Sl33MHz
··
~
'
486DX475MHz
"
486DX4 l00MHz . (1993) PENTIUM 60MHz
:~,
'
,
70,7
"
100
,
",
':'
126,5
PENTIUM 75MHz PENTIUM 100MHz
,
166,3
P£NTIUM 120MHz
,
PENTIUM 133MHz
218,9
o
so
'00
1S0
200
2SO
Figura B.l Incremento delle prestazioni dei microprocessori della famiglia 8086, Le presta~ zioni sono MIPS. n Pentium e stato I'ultimo modello di CPU Intel per il quale Ie prestazioni . sono state date in MIPS.
·..
f
. ~:t.~~
)-
_i~:':
:::~
~rj~~·
~-~
.' lPiJ,e'
L'architettura 8086
t-;ro\A'!l! tj~!)',.'::'1"\,'''' '-', ' ,
561
, ~l".'(:' i;',1" :.... ' <~lIi:" .• .. ".l1",'
" J'.
;-,,' ,~'I,~, r~;-:':J- '.:-:'1V-
1--
I'ii~i':m.." ....,;;.'. ~35:,t>·
,~.!:-,
..... /r.:.. '~., 1'"
,
.~..t.tl~J"~
__"'. _ .«:\,,,,.,,
Prestazioni delle CPU Intel apartire dal Pentium
""'~'" ".,t!". ",.~~~,;;; ::!;.'•.
[:1' ".~ . :j.j; ~! t~:,
:I;~
)-
-Ir:~it\'~~' ~jlt\l,.,'," :11.', "J'
,,,' ....
~
• ~, ,N:, ,".1:'1,
..
.":s:1'...... " "".' 'm" . -,.,.' "". '-:I~""3" '-:.1f.'" ' ."
'",< '<"..,,'
,.'
·!... ~.;>"c.
"'...;.._
:f1
PENTIUM )SMHz
.,' iliY;;;, ;~~\ ..Mw.\ \ "I!;' ""l~ ,~"" \: .. ., -~\'i!' '!lJ'~., O' ''''~'. ~ •• 1,\" ~"
.".,.",\.>" .~.~, ".. w_,.,') •. "':;-;;.t!/..I!I ·:i·
, '~"'I,~i oj' Jl2..'. ' .'·,·"t,,"" ",''''',
;:1; 1,*'). ~~"'); ''":I~· ....- ,:r-,~,:;, ~:~ ~~x '~" "C·j.,
~~t.14
PENTIUM 120MHz
.l-------Jl,J
"~i,". "1 ~l\l:,'f::\~ '''~1,"',' ,;" '.
";\lf~;~ .. l~' )i:~ ..... :j?~JI;i"'" ,.. ~;, i~,~,' ..
PENTIUM IS0MH!
¥,13
PENTIUM 166MHz
.. ~."" ~"., '~' . :~' ,~, Jit." 'y " .,.~ . •'
".:' .. :'""...:
'"",.'~:
J"~
,~.~~~.: ..
"'fllll'"'' :>it;'"... " ... -'hI, ,0; I '.I'e
' "~: --"I,' ..:<-.~Il'r.l~, 1~4·:):.
O-..•..J~t;.+,~,'
...~,.l;;:f,~; 1'::lf,", .
·r',,+Y' .~{,:;t",,~ iFl" '-" i:).;!rmrt1:"' /. (;.. '~'~;I~~iI'. X·~· -",... ,. 'l';j';''''''''o, ..,' , . . .'. '..,., ~
,;
• .
5,6
1-·
I ",(I,
,".,
PENTIUM MMX 200MHz
'"..'.
{Of \"':':
,~"
PENTIUM MMX I66MH!
PENTIUM PRO 150MHz, 2561< 12
-,.".....,. t
' 'W>'"If, ::,:w,~~'.: rj~k ....... :-::~~';.'Pri;'. I*, jt"",:>;"
L '~a1
• SpecFP95
7,12
,
.'.
"f'li!1
.~ ,17
PENTIUM MMX 233MHz
ril".' ~,,?:If. ;"\~'" ,,~:J! "'A""",,', '"~!" .. ~,'j.,,,,, ""'-'.l."
r·1·~.
':-'lr.~:fi' .'". t."I'~\1·,,,,-; .~. ".; ..''''?,I':':,',..
J
I~08
}
5::\,11 • j),28
PENTIUM PRO 180MHz, 258K 12
~'"
.," -v. -,".:' '" ',~.. . ""'~'''H~'' '.\l' ,;r;f,!!} ,~l
PENTIUM PRO 200MH!, 512K 12
.' l'
.-.;,;~r,...t;':;;! '01, 1't1~
\,,'~''', ~I·'i·· j;\f': '\~i~':'~· . t
";'';1:
:',t',ii. il'J!k;".. .,,~j*',,!:.J" ~ .'~-;.;. .....
·,.n',~
~-"''''''';''
'~t~t:,~
:.,!, ,(",
PENTIUM II 266MHz
"'. 'I' '~,"',.'1i!,. . "':l:~",?,', ' r't';j:;'
PENTIUM 11300MHz
,\.~~~ .•), 'f':~~,:., ''',:".' ~>, . 'I' .. , ,t:,'1"'.~,': ~Q "l):
PENTIUM II 333MHz
'r,~"'-a;~ ,.1~.... : '" t, ""_ '!" '~:l''',1'~" ,," , ,..!.~:.,
~,
..';-;"1.1 ,
;, _J ".""
o
·",'/,t1'.'\, ~;j?~.' ·...,., '.'.!' "~,''i'; .,~ .• :>,~,- ""'.j:'!-" '~';I '
1i'' ' '.
", "!f:i:i;t ,~,~ ... ¥:.:~'~'ii;;' ... ~" ~·L-f,""" ,
"." ,,:.:.-
""IP'" ~"",,"'"
''" .K·~\1 W:.~ , I~"'.of.-I: 'I'~~'I •
H
",-. 'j1!il ",' \r.:,,~
,'"i~l~li! ~i--.:l.•''''.
"""\',-< :,~"" ''i'' ,f,~ .~. v' ;~' •.\,:!N.,,< l~,""
',./.t"j';;'-i
,~..
'''''''', ,'"""I' """" "'iI.~'"
'1Il""~',~
'." ...:q, ';10' ..' · '.j,ii-
~,~,
11,)
l.
2
,
,
,
,
, 12, ,
,
4
6
8
10
12
14
~.
Figura B.2 Andamento delle prestazioni della famiglia 8086, misurate secondo 10 standard
,'.' ?
':;··:d'-,; :e:\.:,
,"1~' ,-,1',,,
r' 10)
'11::1" " •
~eKi{.~' ~'.,"
)
9,47
· .....,fO.,:;'l; ""~,,1'·
' :.. 1""~
~. I1--
8,66
PENTIUM II 233MHz
":::iJMJj..::. '-;/
-
8,2
PENTIUM PRO 200MH!, 1MB 12
'." • '('-,' ~,';" ,~,
DSpeclNT9S
PENTIUM PRO 166MHz. SI2K 12
'"..
"..~,,:r·"'i: i'.'.·l"••
"j/, .\'~.<".
LI
PENTIUM 200MHz
.·~f,~,l"'" ,
~~.,).,,<. "~'.k -'',:,,0 '' . _Li't...""",' '.
-
19~58
J
r)l~\"',
lv,::",+"""
--
',I,01
"".
~":!Jil!~~: ~~'"ifJ~'.~,
-
PENTIUM 133MHz
"l.l" .,'~ " ..• ,.... '.' ,,"
''''It'i.'!l}'" "'~l.i
1--
PENTIUM I00MHz
'
Spec95 per virgola mobile e per interi, a partire daJ Pentium. Da un cetto punto la pubblicistica 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 e stato superato dal nuovo standard Spec2000 (Spec e una organizzazione internazionale ehe ha definito un certo numero 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.)
I,
I-
or.
- f· :..
I
,~
562
Appendice B
',' 80S11 anno
' " rO
U.
t.<:,,01081• (dim....len.) nO t ........i.tor
-. l
bus
80286
80386
80486
Pentium
HMOS (oS "Ill)
2g.000
'I', •• ,."
d&tn~i~~ bit
indirini
,.1.,,: 4' ," .
HMOS
(~ I'm) 134.000
..•
8/12
"
CMOS (l,~ .. m)
:ns.ooo 50/26
"'" ""
CMOS (1 "m) 1.200.000 66/33
...""
Bi-CMOS (0,8 "m) 3.100.000 200/66 60
""
"
I
-
.',...•·1'\'J"'\7· ... "'.
.,..~;.::,,(: .'\:.
'I' ,\~, .... ~
. ·,·",r," '~
PeMium t..,nolog'. (dim....ion.) tr.. ~i.tor r...q. int/... t n0
lTeq. IntrodusiOD" .. ~ Pi..dri: bus dati bit:~ il1diris.i bit
P,.
Pentium
C~OS
C1M~S
,..".
(0,36 JIom) 5.500.000
."
1 •
,&1
Pentium II
MMX
CIM'f>S
(0,35 ~u,,) 7.500.000
23 %66 1
333/66
..
Pentium III
Xeo"
(O,311 JoIm) 4.600.000
, "
Pentium II
'" '" "
32
cfi:;>I(;s (0,25 I'm)
CV:l6S (0,18 I'm)
1.600.000 460/100
28.100.000 800'133
400 32.
"
32
."
• 0
'"
Figura B.4 Caratteristiche dei microprocessori Intel da.l Pentium Pro in avantL Nel~ la terminologia del costruttore si parla di famiglia/architettura P-6 per denotare queste macchine.
-
! I
-.
-
\
/~:{.~~! it
.;.' r.i·I',~;· .~: :
'.~~~.;' '~ ~·~t't"·!;l '\9
·5}~;kr;. :~
'.i'i'~TIt"~~ .! "'. ~r:::';'~' ''', ,.-Il,':t:...~~ ',I '."'l','•. ,:r, ,,~ .; ~;;~. ( , ~
..
,~' ,J:l~i'" 1
""","~;kr":))" :; ..
'..~," ,",~,"" j" " .', ,""""i'l't.,,, ..,1"('" . · '110"/"" """ .,,', , " • , "~, •. ,'-' ,, 1
" ...""'.,' ,
,
-,,,,,,";(1::,. '
, ." ',. i"'~~:"" 'Ii. .'" .,v
..}.-,...• "..•. ",
.
\.... ~ "':,1"1" _~
.... ,.,., '.. ~l;-:t ;.r .. .'}'} " .,." >,"'-. ~ .','-' .,tr. ,,
":"';,~:' '
~":'~J,> ..• "
,.;
.·.:',.;....."01' . , ;'I:~;" , ..",."'- , •'. :...,•.• ,~.~ ',
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 compatibilita1 . 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 programmazione 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]
'1~.~~t.l1':' .. '.~ ..;. ;~" ' :~' ~'-'I' i." "r' "" ";· "":"l' • "','\0 ... ·1
.'."'>': ,','1 ',;,
·...',It ..',. ~ :,'J...:.~.r:"l-"~'+ ( , '"l3~~!-,' ~
•.,.r...··' ~";'., \A'.~'" I
......",:V ,l·l"~;.~ •..,,"" .' ... '
·",'t'f(' .:.... :~i~;;:: :
-~·.i~;;~·!{" . ":.~,'.;I~·" ,ti:.,·'·, ~
_., f •
:X:{J~1}~ . ..,..... :.~ ·
j, ••' , "
-,
:\:;i~'';~.'.:i ; "',.~t
", ,~
".",'
",\./;1,.
· ....\,Sl',l"",~ ..' " .,.1 . , "",::;l:';'T~;:: i
.-!~i~~r~ : .;".1" .•, "
.-',; .... _~ ·,.~.,," .......; )",.
-,... ~.."...,~.'.~,. ..•• ~( "" ":(jo,',,,..' i,·;.... ~:~ I
';:"1;< ,. _.~/..
_. i,~·:,·;:o.1
~'/I ..!J'....:
:'"L::~;:;..;i:
-.
-
\." :.;f
."
•.., •.'.l''''..' -~.,-,:>- ''.
-
_. I
',',,
.,.."1,''',,,,'
-.,I
_.
",,~," .''"'1\'" ._·T ~'~",l :'1"
_.;
:""'.'~..·r.• I,;
&.no_:'.'_!~trOQU.lon.
.. I
-
...
".,.''''I. h ,'I" I, '.';' ,,' .;1
-
_.
, ~i' ~,,:;~~I '?~! • ", ~I,~ ." .,',"'ll.·" ..." 'l,.:~!,,~t ",_ ,."..:'t' .....'(:.;.:, ~.;.
".'~' r '.-.. "rf;'" ,.'. . ~,J · _~" , l~;' _-; ;. ' r!~ ." .•'IJ:: .W " ,"~ '...",;;"; '
273
Figura B.3 Caratteristiche dei microprocessori Intel della. famiglia iAPX86.
_. I _.!
.\"-
'.v,,~·
, "'1" .' ..,,-
-
-
",
. '~l;i}'6it I;\;" ,.?;"'i."f? ~~:r. ·.,,1" :""1;;'.i/.~' '
on.
(req. int/est ir"q_ int.-oduaion.. nO piedin;
-
)
""
;'
-' I ..
,
i/'l~'fl.. , .. ,. 'N"~ ~:_.:,~ l"-" !~~. :' -1·.\,:;" " ".....~-'". (,~'~"'\'" ~"\
J
)
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.
· ",;::.~:' 'h,··I,·, ".';';",\" ',"', -,",',I'
·......'.. "r.\"'i'" .,,,,"'>1
· ,;~(.I:'j,,<.j' •.'
,.' •.,.Il,I!'. ",~.,'i ·,'•, r~~ lfr
;.'~' .'",," ,;.."n. ·.lla
.,l
,..
.j:'
".
'
L'architettura 8086
"..•
"
563
...
\" -'''' "~:';
.
.
;~\ . .•••,
..,'"
!:;·i, "i
-.'
"~"
't..".: .:.;'
T'
.
"" -' . J/' ;'.' ~'
W
;... :.-,i .-
'
.'. :
~O·'
~:.; ;. ;"~
".'
1'"
,'" ,\
','
",,,'f"
" .....
it':
::ii-f
~f~~
9";"
~~t-:· !f:.":-'.
,'.)lwi Il'"" ~'-i"" ~".,
1:"\' ;~~;' " .•.. .... , .1,"
.. " ,\··'" ""·' ,",," ,' . 1'/:··..
,"'::;•' .. .
,/,. ,; , v....··
,,~ ...:;
......".--".,.;-,
~,'fi<"i
'".:~.
.,.-.,
,(1,.....,'
'" I .. '.....:. " ,;,):~ : ..
.-"~~r
• r""
,l-~''''
:H~'''' '''''l''_
":.f. ...t.'. ' ,:'.;[,1'1
,',r, ,:
~.,~"
(,:lo'
del' 1979 dedicava un numero non trascurabile di pagine alllimpiego del PL/M-86 , . cosa insolita per l'epoca2 . 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 1 Mbyte di memorial rna il bus dati esterno e di 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 ~el tipo 8085 0 Z80. Queste macchine impiegavano normalmente il sistema operativo CP 1M, 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 secondo colosso informatica, preceduta soia dalPIBM come fatturato, intendeva mantenere una totale compatibilita. con il mondo CP 1M a 8 bit e} al tempo stesso, percorrere la strada dei 16 bit e dello spazio di memoria superiore ai 64 kbyte 3 . Seppure tecnicamente 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 fars~ 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 rappreseptavano in modo quasi esclusivo it mercato dei calcolatori, la sigla uIBM" e la parola "calcolatori" erano praticamente sinonimi4 . Quando PIBM introdusse il PC,
~'i,%\'~'
I;'.•," ',',.,:':,
."" ';P;~':" J
".
':f.1,;: -
.......~. ~. ~~.~.
.Jf:;: ljI: .., .. ".,
;r:'~
.
~\."",., ,,1:"':
," .
.'~I"""
~~.,
i:\I~"~
:1!t.·' 1.,,,.1~ii.·
"
.. ;( ." .,,,",'.
<.;"\Ii, .
~
~ltii .:'1':-.'
"" .• il"; ~
T
"~W', '-~':
". (,11"" ll,~'J
.. ~, "It;:, ;.'J'i"'~ ~ ...."
i~''''• ri··
,,0/<. .
lil,J"·'
.
,
#' ..
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.
~;m
,.I,n::r. .'., .~:I 0',.
,~
• "(.
564
, ;... · ;l .' ,I"
Appendice B
j ~
,,~ •
.,.;.
• " ··· ,,,;
~.,: ..... '''''1
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 tradizionalmente 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.
'-~" ,", "
·'I,..~l" ·
"~',
-:~;
",· .,
'<'., i" " " "
...;"•~'
'. ,"
~
,;;
·\'" "'I
"" _.
'., ,,''-:" ,":,
, ',. " • ,.'.'' ',"?-'
.'::"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 .''1:>;l.' ·:·I·i· ". ,~ aveva i principali centri di progettazione e produzione. n PC IBM presentava solo due , :.:t:-" ....c • .. ~, '; unita a disco flessibile. n disco rigido comparve qualche tempo dopo sulla versione · \.'ll; ~Ii:" ",. " PCjXT. Retaggio del precedente mondo dei personal computer a basso casto, suI ,:,),~r ,,. 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. .F' ", ~ ": ..,.... , microcalcolatori. i:' ..·1~
"~i!i',
.
.
'...
Ci sarebbe da fare anche un po' di storia suI DOS. L'IBM voleva una versione ,.i propria del CP 1M, con caratteristiche che la distinguessero rispetto a1 resto dei pro.: ' :;: dut~~ri. Se~bra che ~ produttore del CP /~ (la So~. Digit~l ~search), 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 c~losso !nformatico a rivolger~i a. una pic~ola ditta, la Micro~oft, ·?:~k nota allora per un diffuso mterprete BASIC per 1 tnlcro a 8 bIt dell'epoca. La Micro- .L.:. soft accetto di buon grade di lavor~re per it gigante dell:info~matica. Iniziava tosl i1 :".·f percorso che avr~bbe po~ato la MIcrosoft a cont.~ndere 11 pnmat~ all~ stessa IBM ~ :·,~. ;,i fare del ~uo. presld~n~e B,tll Gates, aHora poco pill che un ragazzmo, 11 Paperon del !'ri.'~ Paperom del nostn glorm. ;.::, AlIa pagina http://vvv.intel.com/pressroom/kits/processon/quickre! .htm if' ',~~? le~tore inte~essato t~overa Ia lista ~~ t~~ti i m,-icro~rocessori Intel prodo~ti, a partire. dal~~,;;<}~ mIcro a 4 bIt 4040 (rntrodotto agli lIUZI degll anm settanta) fino aU'ultlmo annunclato .:~~ in ordin;e' di tempo. Di ~iascuno di essi vengono ~ate Ie caratteri~tiche essenzi~il come o>,:~~ queUe np?rt~~e nelle FlgureB:3 e B.4. P~r Ie prIme CPy ~ella hsta v~ngono r~portate ':~: Ie prestazlOOl In MIPSj a partire dal Pentmm Ie prestazloOi vengono nportate m Spec; ".~ ~~ Pentiu~ Pro Ie prestazioni. non. vengono pili :ip~rtate. ~ttavia, na~igando ne~ .,""\ 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. . "'!'
•, ,
,~,
, '.
,.'"
'. .'
B,2 Architettura di base: il
•
mICrO
8086
"
,"
"
',
e
L'8086 stato introdotto nel Giugno 1978. Si trattava di un processore a 16 bit, realizzato con una tecnologia HMOS da 3
,"
m
,.
• ..,.
~
.i
)-
,'ki"
I.,.
!it'?,!:Y' , '
.~
1 ~',., •
~~~i"
..
lt~,)· ij\~:,;~, "",,,,, .L~b!,·.,
~~~"?~
)"",
1 '
L'architettura 8086
~,;ur, ~~I.to'_.' .. ,..':i' " ," .> ·.'·.,"·'of,,··
";\'f' , ;~ !"~V. -'1,- ~:" f'·':;j"-' . .1:~~-.~~n'".::,.' '. "'i~''''' ."........, ,.¢i;-"" , '. "." .:'.....'~'"6':<. lA'i"~
565
,.~
"j~.:'"''
.• ,.Jl· .
;«;T::r,
1;.1.1-"
",!'r'~"';'
"'Jt;;..
'!F-),',;;
•',. ~ .. '
,:;r,~;;l! ~l. ;.,'t ' i
,"''''_." ""'$:: ,~,," ....
..
"""$ "l~;· . '--
~,
,1
",1>". (
....,....
,·~l';:'.·
"
~"i·~<'P ~,,\,
;~":A1, ~\"~'~'~':'.
". '~,j!
Ill'" . ",,:" . •,of"""
"I~i';~: c~ ". "
'
'
''';-.
"-""''<''1 ,&;';",\,j:::' ,'\'~, :',:,,~ .. .'
"~b
. "
GND
''''~.~. <',t:, . , . ';.iM"I.,
', nr',", , ,').::$ .Jtl' ~:.-t.!~,
...'l~.i",~ ::'. ;r.:·..::·~ •.X1" '-I>~...~"!iZ /,,/;10',:,
i· "~'" '1,,'1""'~,$1 ':,~ ,;~\:\:." ", '.......r""'· c ,:.<0;'- ,,' '-~I'
;""':1il!",jo"
~,11', .', ~" I ,•.....:; ~:b,', ;", ,:. I.:, ~l\1i"':~ "'~ rli: ;,~,.",!"~,,
",•.. ." "'''.
,
''I'~;''"' ", ~"~!'!" :,f':;,..-. ,.'.1 .1..,;,'
• ,.\'
"l'i}.·..., . "
,
~
40
A01 ... A013 ADI::: ADll AD10
"
"-' _.~,.::t., ;~,,~tfi,•. :, :,~ftt:··
,
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.
,
'~"".:ff:.. ~l'i'-~-";'" :/'il~r~A :-Hl'(,'"
, ....".,1" • "'S': , • ~~~.• ,·~: ;i'!f'oi: ·t'·, ,
ox '~""'.'. i~~~~ ~~"~:.~'
.. !~,
::1f;»i;ir~~~:<
~~;?, ~~.;:'
:t~~$Mtfs~:·, ~J-\~K; 0'r~,\'
k*~J~ %1~~":
MN/ti:X
""
8086
.AD2
AD. ADO NUl eLK GND
RQ/O'fO RQ/CTl
(HOLD) (HOLDA)
LOCK 52 51 SO
(M/IQ) (DT/R) (DEN)
.s,
(ALE::) (INTA)
TES7
READY 20
2'
RESET
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.
.t·it~ ·;~'~t.
f~~~J:~ ~I'~;:g
:;::'~~~J~~~'
Per 1'8086, il numero medio di deli di clock per istruzione CPI puo essere valutato 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 e stato introdotto poco dopo 1'8086 e differisce da quest'ultimo essenzialmente per il bus dati esterno a 8 bit, anzich~ a 16. Per quanto 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 indi~ato il contrario, intenderemo riferirci indistintamente all'uno 0 all'altro, anche se useremo riormalmente 1a sigla 8086.
\t1!~~: ,;},Yli-} .,'::~~t; :~'"
B.2.l II modello di programmazione
iJ:,7:~:~~",~
~'~jft1:~.
'1l;
,~:t~~. ~i'" ?'~~~~1t~ i1\{::.
~1~~~;: I~:',:
~:;$.~:-1W":~ ~C'~~t:.~ f.~t:.
~,~~A1;-:f~~{:'
";~,~{¢lf ;~4':' ' !;;?ii~'''''t: '-'('.,'-;::;. '.'/i· .•
,,·""'~I''-'<·,-; 'i-~.~ I . '':l~'~ ;d" ,,;,~,~ i:~!'
".'
:
. ,-;.'r; ~,,; ''(''4 '; "!'!;!-.'I, ,:,...~.
"",",;/"",,; "1'.'1':'
. ",?I::"'-<:',",''~' .,.' ,',r;,~. ",'
',",\,: :"". If",!
' .. ·.;d~,.' if:":'
""'i :,,;':"'.:0:, ,,'. ;'; '" ';w.• "',. "'1 ", ,','" . '- '';' ..' . . '.,\" ,,'\~r-;:";'-' 04.1:.\ ":' 01";&" .,~. ...,-.,;;' '. ~ :', 'Jl~:' "'f~ , .:3~:i':' ,W~~' "
;"'."
.~,..,'"
..N f· '.-, iy!'J.··.
. ""~."~)
:U~
,,",
'i;::gt~ Jll~··:· . "~''-'(!
'~"'l'
I. -
(WRL
.SO
INTR
-
1-
Vee AIHO A16/53 A17/5'" A16/55 A1Q/S6 mn:/57
AD9 ADO AD7 ADO ADO AD4 AD,
]-
n modello di programmazione dell'8086 si com pone dei registri riportati in Figura 8.6. I registri possono essere cosl raggruppati:
1-
1-
-
l1
1-
11-
l-
• 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.
,
"',:b,·.,
" •. ,,~(lt
j:~r
"
.,,.".',:;\'1-; '<~~!
..
-" ..: ~,'~:', ':s :~, ,.;·:-'i ,., [Jtl.: I~..
,
I
-
566
Appendice. B
• '_.~. r,'~, ""'''' )r. . ~ lW, \{
:... , );JX'~~..[. ·~,d~ .,,:;1' ,./q.,
-.
c'..:, ;,.... -
I
·
..· ':'D~?: iii, '. ,,;<,; ....
• un registro eli stato, che nntel chiama registro dei Flag.
•,:..' i·'-·"· ~I .- .'~':;~:-t,j" \ . '-,"" .,I'
,..' '...•r.: ";
';'-";~:-'-'~: -'.'-; ."
.,
_.
)
,...,OI"TRI ~,
-.
I
I
I
_.
BP
CH
cL
S'
DH
DL
D'
..
..;
_,,':::?,;' :{i ,./.:::~ i .'
·,:'d/~X .;··
RECI$'l"tu
.;~;:v,j 'C
D'
"CO"""::NTO
I
'"
I
(
.;..,:" ~::¥t ~ .",.•
I ....
0"
(paw)
I
jl __. .-:,,'d~ .;:.".'" \ ,T ' · ,~;,.'1,;:'Iq, ..,,".'.' ~_
,:,c :<;1:i'i~ ,:L ~. ~~h,tP,
'7';:-'" "~ .,:y.;:} I:) :.;.;;-~ ,. ,:
Figura B.6 Modello di programmazione 8086/88.
,.:,;".:':.;_:.>: ~
;'.,.-::__ c-'''s''-'. ,,'4':· ': { ,..,.,.;'"},~.
;
,~:t(.:::·l:: ;;
.. , ,if:>" ~
i _,.,.",' "'~ '1.,.".,./< ;w
..
''-'~''~'
"
,'._ •. ,..;, . I registri Dati Come indicata in Figura B.6, i registri dati passono essere impiegati I'., ;,,~.c;~. ' ,;:.'~ [,;$:;;:4 ~ sia. come registri cia 16 bit, che come pure da 8. . , .-'.".'~""~' :,F · ."'~ '... ·'1'.. iJ Come registri a. 16 bit, vengono individuati con i termini AX, BX, ex, DX ·;',~:i;};,'tf!l :~.~ ••.,v.' ~ mentre con Ie denominazloni AH, BH, CH, DH e AL, BL, eLl DL 5i identificano , ,"'~~.f;;r.; .". ...,,,,;.. rispettivamente i byte piil emenD significativi dei registri a 16 bit, che passano essere '."/';";:":+; ~ ;,,;,.}'l \ usati individualmente come registri a 8 bit 6 • Nella maggior parte dei casi, questi ..'..< ."J '" .., ,~':,.' '~\l ~ registri possono essere impiegati senza alcuna distinzione in operazioni aritmetiche e c'o..,-,_,~'r:(! .. "' ".,. · }t~··};:( ~ 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.
,,'.·.;:'~'.\.,'~ ,-".,,'.' j
"
~1;''-;'~:.
,·f:{t ','.1:-..'~.~"~
:"l. .
'. l' ,.
\
-.
- 1 ! j
. '> ' '-_,-"" ,.>f:,;, "
• 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.
"....
..7, ;[,." .. ".'0
_·:·s,
·:;:.'x\r ~
,:.•.;;,-, .f ,:<;::,:" , . ,."
'.,:.., ".' .. '11_'·
i:''';·:
-.; ..1.:).' '
":.. ~ . . ':' ,.-.~
.
<::;i ;;.~: "'~", .. ';
'..;;." ·...>."",,' .. ' .. i' -. .'.' ',':'~'"
1
••
· ;"".,.-:'1 .'. ~.,,_ ~W .'.', :"",'.: ~\ ! ".';.',''::' ,~ ,.,\.....\-.:i
.,'.' "'''" .,.(...• ,<~•. ,
DS ES
~"~
~7,'!;~"":;J
I -
-
.,1 '.' '. ;'r. ~~:i~ .J
....,i,'"
..' ,_',101 .; .
SS
-'-, ! .. .
BL
CS
-'-, I
_. I
SP
., :,.,', ,,,.
...
-
.L
;:. ':,r. ~. ".,( .: .'. ;1., :., . ,.",., \' ..
· . ''..io'/'·
_.' 1
_.
· .:(:~;: .--, ..",;~Y." ?'
"UNT••,:rO~1
OAT.
OH
-'
~ .... ';," :~·i .-(
• un registro (IP) usato come puntatore di istruzione in congiunzione con CSj
~~.,;~{}.
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).
·:,.t· ... '
_·'--.'-ili." ;-.,,~.
· .'.t,., ".:..
· . ;;:;'!';.It ..,.' "
'''':..'P,{.~ .'. ~~:'"J,~; ,,,.-,,~,:,,.,
'.,
,'......;"~' •. ".,.,.",,, ....... ,,'
.~'~.
r:·
", .
!'"
,' ~
si'2: .,i
L'arcbitettura 8086
,: ..
567
.' .. . {"
~·:':·~
1'." ., . ..
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 .
\~" (.,.
,)·!
...
,f
; i,"
If \':\'. 'i" J ,.' ' ,:,:' ...
• SP (Stack Pointer): ell puntatore alia cima dello stacie
,~\'::
'.'.'
• ::f'" .~. ~,
.,
• BP (Base Pointer): viene .principalmente usato corne puntatore entro 10 stack, rna puo anche essere irnpiegato come generico registro indice.
.. " ••
....
1"". ." .
J}...c" '
it::!·"
':~;.
;~{, .
·r~>'"
~,,,,;
Ci{}~
10,••• ; W'.' \.'.."., ~y" :i~'}"
"..,:.~;,
• '~I .... l}"'.~. ,~"" . '''".
• 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 • 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.
,T' '. _.<:',"
I
L'1.. 'I<' ,,'..,
~",'1 ) ,';~'
.
:
~~f'
:~""
".,,;....
{'I\;'.
,
;vr~,;:.;
~~I~'.
i.··1
w,t>,....
","".-,;. .:J.)..~"
'·~~il
~ ,t.1,:."
F I'P:: J '\1;"
l
I registri di segmento L'aspetto pili caratteristico della CPU 8086 e la segmentazione 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 corrent~mente in uso. identifica il segmento di coL'irnpiego usuale dei quattro registri e questa: 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.
es
'\~.
~·l· , : ; ,;.
.
~
,;t;J, !;":.
\, " "'.',
~i!f;\ ..~. 'I" ,.. . r;'"
~,i~ft!:,· ~\,..
II registro IP I codici di istruzione vengono sempre prelevati da! segmento di codice. A questa proposito e necessaria 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),
lr.i.i.'~: ..
j!"~;"'. ",."
"\
. ~li'
t~L: . ~)',.
. ~'i~,.' ",,:t-; ,
,1.'>.' ' ''ii, ..
"::t;;,~:.
w.·
.-'·' '.",'
• '-
~~:~ . ...o1l f,,1'·' ,~r~1'
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.
..
·7
0' D' .T
TF SF ZT
D
AT
p,
OT
t,!",....
~'''','
~~: . \'
eoeo
','. . "
S\•. ..... '
.~
,*~r/ 'd,l), :r,.'.'.': ,. ,.~" 1iJ.... \~~~
'Vlf'
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).
,10:-"
"~' \ .,' .,,~,. ..-;
J, .; "'"1:"
~. "'." ,!!, 1i~;" ~...:;J
. ,... .. ;.'
U"S'"
I flag di state sonG i seguenti.
~
·
. ":~:J I
, ~
., .,w,.!,.. );!·;" ,) · ,
.,' ... .'., ,'lli" •.' ""; ,f'
,.I " ·:,'·1'" ,~.', ..1.
"",' "'''''"r
56'8
Appendice B
• ...' •.
;..0'-·1'
.~J·'lJ~ ~
·'·"";~~ff · .·l·~:-,·;A-i i
,'ii ""I't .. ' 'i.' ",'
'!~':"'.'
"".,.." :\'
• CF (Carry Flag), indica se un'istruzione ha generato un riporto da! bit pili significativo. .' AF (Auxiliary Flag): indica se c'e un riporto dal1bit 3 durante un1addizione • prestito dal bit 3 durante una sottrazione. E lisate in aritrnetica in BCD.
0
",
,.· "t' '"',. "-, " I• •
.
,
· ..·'1 ·';';:;:h"" ~
': :;:",": r
un
, ., ".
' ... : " "
.. ."f .,,:." '
'
.',\". f'
.. '
" '.'~. j'
• OF (Overflow Flag): indica se un'istruzione ha generato'un trabocco.
,
..
,J .~. . l
.... " )
,:-
'j ", ..,.:.,'j1
• SF (Sign Flag): indica se un'operazione .ha generate un risultato negativo.
," ,.:'; ,'(" ;
',.,' ,.d "~' •• ::.
...
• ZF (Zero Flag): indica se un'istruzione ha generato zero come risultato.
'v ,.".•. , .. .~' •• .I,. :"'.'."~' -."."
'.' '"".-
,.:jj~:$;: ,~'·.···I,:I .... ,o";
• PF (Parity Flag): indica 5e uri'istruzione ha generato un risuLtato con un numero pari di bit unitari.
, " .'. ""."
':.., 1,.1,',·',....." ',. ""'I"I,/,~ "'N~'·
" r:':~~~'.;
I flag di controllo sono i seguenti.
:.. ..k::"·1
• DF (Direction Flag): serve a controllare la direzione di manipolazione delle stringh~ 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.
• IF (Interrupt Flag): abilita
0
)' ,. It.~~}.·: l 'f
fondamentale per il debugging7 ,
l.il~':"':~'
'.'· ,'"I,· 'r. ' .
\\,'0j"1~'
f
,.:r.C 1.\'"1,' •• ' .• · ,';;';.11
• .•""., JlII:.~.,
' ...'f"'·
'<'311 .. ····I',i,
"."
· .l'::"~;:"'.
disabilita Ie interruzioni esterne.
• TF (Trap Flag): permette l'esecuzione di un'istruzione per volta (single step)j
t'"
, 0:·. ,
',\. ,y,t
'(i.~'tl:t\',
", "':"i'''''',,:. ,...,..
..
e
"!:'o':'1' ., ·•.. 'l').\·~·
~.", :lh ; .';.;I"!
,
B.2.2 Organizzazione della memoria
:.~: ..\'f' 'iJ.,~, ·~}.,:;,i,1' " .,.
.I·.-·!·
>I}..,~,
'.. .:.. ',.. ···c';'·~·l:
~ ..\..... ~,;II:
L'organizzazione della memoria e il tratto piu evidente del micro 8086, La CPU 8086 pub indirizzare fino a un massimo di 1 Mbyte di memoria. Questo spazio elogicamente suddiviso in segrnenti. La segmentazione Un segmento e un'unita. logica di memoria ebe puo avere una. estensione massima eli 216 :::: 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 divisibile 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 limitazioni. I segmenti possono essere adiacenti, disgiunti l parzialmente 0 totalmente sovrapposti. Conseguentemente, una locazione di memoria fisica puo interessare uno o pili segmenti.
,·;,t~/,.::
';~~t~~~{r~; .' ":"(1" 'i
.': ~~I:';iti·· ",,':'., ,' .",,'i','.." · ." ~~'. ' .. :;;'i,,(;,.~· .'1\;:....... '\ ~,*t"",~ '~'?,.Il . ",
.•.. ,." .. ">~""
,·\":.~,v,~ , ~'. '" ' '
",
",,-.':,,,,,,,,,'1 ,;~"l\~l\t;' • .''''~", '. ,.oj ,~~ I 'X , '"h{.' , ..
'
..•...• .)......).':. to-·fl' ".,~.,. · \'.''''.'J: -, . '.1.' .• ~'
:;I"~A,,(
," '",-·f:·
> ,;"j."\
",.1,'~'f,;:" "."".1
" ..
" . .'~ ' "'-.:»:.~....
':>;':"'.;
J'l,."-':f' ,",.
.,"':> (':":":"1.".
~.,-
,.. ",.,
":?~':;:$~~:' '," .. 1""
•
.. j.-,I~;' '.
"'~ .',",",'
711 termine si riferisce figuratamente atl'eliminazione dai programmi di errori di basso Uvello, bugJ o bachi in gergo informatico. .
"'~.';'
·t·'/'
~'.
·l·~~-:: ~.
."~"'\~' 'Il\':.'
,,,,,.J~;. ·,1 ,',
... jJ..
~.,.
'',~ ..
c' ,
j'(-"
~)'.1!··
j"
,)190.'". ", ' .. '.' ' '.l ',,,,. ' ~
"";1'.' 1·.'
L'ar.chitettura 8086
. 'c'
' .'
569
~~::
f·t'~·.
i~h"
'" "
i,.,. . ' i" .!,.-
Al Paragra£o B,2.), si e visto 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-
.,.. '" ":l ., •
": "~~, .. t,
r·
l'
""
,
f",:."',.,",'n-..<.
';\,'·
'.,..,'.. '':;'
l~
~.'., >.'
;
j'~' 1. ';':, .
;(';>.; •. , ~.
-.if"
,.
"~
,.' •
r'
,
". '. . '\'il "'!o~..
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 associabiii '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 dagli indir'izzi logici. CODvenzionalmente, un indirizzo logico si scrive come SR.:OFFSET I dove SR ,f uno dei registri
l1r,;;,.. '" ;;J" ':.•• '
"
'I.(!!:' ;
ill:;",' '.
,.'" 1-11."\... ',. '.'
0000
" ", " .~~~' '..;
. .:
~\" '
"
1 ": .i':..
lf~,
))]-
1j-
0 scosnlllENTO' (orFSET)
0 REGISTRO DI SEGYENiO I 0000
.:t. :,,. . ,~".
':;.1,
.,il, :."
~ .• ··,~II'.:
. 'l./.' "" . .If".,." ,,~"'.f
o
\9
,. f~J.'·'-"'' ;,:;.~,
~:r,:lii.:: ,l:'''''::' """;'
. r. .:,...~ '!~k
'.'';f~.'" < ,i ._'.
V1.·~··r ')i!.v.'-
;\«'1'',1::. .
·~Sr"·
·1t.\:,/ '1&"'..;: :
:'.~ ,'!'
;i¥~:::...
':~~~~, j':t!ll;',( .:~'!~',;' ",'S,:.'..." . ;~.~.;,
:ih. '''.
.'~r 7 ,.~ If' •
1-
SO),(MATORE
,
,~
INDIRIZZO FISICO
or
20 BIT
Fj.gura B.,8Ca1colo dell'indirizzo 6sico dall'indirizzo IOglco, I registri eli segmento contengono 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 bi~ anziche 20, Solo l'uscita del sorn.mato.r.e" appog,glat'a .suI registroche Interfa.ccia il bus elegli indirizzi, di 20 bit. All ~epoca 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.
.e
In Figur.a B,9 viene data una rappresentazione di una. possibile allocazione dei segmenti,
1-
1-
-
]-
~;;,"
. "i,lfi(",:.\11" .',
"I·li'·
..
"",','"
Vso del r.egis.tri di segmento I registri di. segmento banno una funzione predefinita, rna c'e 1a l'oBsibi1i.ta dl akltlli impiegh.i altemativi, come illustrato in Tabella
":'I~-f'
;: ""~" ,"1, ''''''l:. 7....~ .
.-"" ~
B.!.
..:.:,
'.......;.:.
"
...,,:~~,
'~~ ... '
.'.
~<:
"i-': ',.,
i;':;" ~ .,
'y'I'"
~,
-,Tjt., ",'.', . '...,. '.
;!":I:.:,. '...., .. ~. .',<
>:'" '!'I":,;.' ..'
La cGlonna ''Registro N.ormalen indica i1 registr.o di segmento ehe viene normalmente .codificato nell'istruzione come base del s.egmento. Per esempio, l'istruziolle in lingua'ggio ,assembler:
MOV U,VAR
; AX +- M(DS,Offset(VAR)]
- .-li~"
' '~, \:. • • , ,.' . 'Yi~ , .
.
' ,,,•.,t" ~ ':
.
.,,~.'
,
.'ikt.
-' ·lli ",.
';>',"",:'
.'~',i,.,
. ~
\
)-
"',', .~.
811 quar.to 8~gmento 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.
)i-
-
)-
................
I
"
_.
I
-'
I
-' '
"\
-. '.
~
Figura B.9 Esempio di sis~mazione 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.
..
STACK "'.... r
(
I \
.. \ 'I .,
I I
dove VAR e il nome a.ssegnato a. una variabile 0 CQstante definita nel segmento dei dati, genera un codice che ha Peffetta di c~icare in AX il contenuto della locazione di memoria scostata di Offset(var) dal1a base del segmento individuato da OS. Per impiegare un r~gistro alternativo in luogo di DS, il programmatore deve esplicitamente indicarlo. Per esempio, volendo usare ES, si dovra scrivere:
HOY AX,ES:ALT
;ES in luogo di OS; AX +- AX+H[ES:ALT)
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
L'architettura 8086
egistro Normale CS SS DS DS ES SS
Tipo di riferimento
Fetch .Operazioni di Stack Variabili (eccetto quanto segue) Stringhe sorgenti Stringhe destinazione BP (~sato come base)
Registro Alternativo
-
CS, ES, SS CS, ES, SS
-
571
costamento
IF SP EA SI Dr
CS,DS,ES
EA
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.
1°0,1",01 "°1 '\ .
Codifica del reglstro
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. dl
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 parametri e consente di evitare lunghe sequenze di POP per ristabilire la posizione originaria della testa della stack al momento dell'uscita dal so~toprograrnma.
B.2.3 Accesso aHa memoria L'organizzazione della memoria delr8086
e del tipo
Little Endian.
572
Appendice B
,.
o byt._
11
by...
0
byt...
:
I..,. DlllD
S1~cr
I
(U"'lle
~ ~
I
'0' (Tap 01 0\.01<)
pv._,".j
55:S?
TE~TA
ALTftI
DJt..Tl
Primo
p .... :n
55
~ .. p •• lo. . )
I·····"· SP
1<>.1,"'_1.
(Um't. l.. '~tio. .l
Figura B.Il Lo stack.
La CPU pub le;ggere/scriv~e 8 0 16 bit. Nel .caso .eli let.turalserittura a 16 ':bit, non si richiede che Ie parole siano _allin.eat~: se.la parolae a indirizzo paTi l'accesso richiede un solo cicIo ill 'bus ('8i veda piu avanti) , se 130 parola e a indirizzo dispar'i Paccesso richiede d.ue deli. In Figura B.12 vi-ene HIustrata 130 modalita di selezione..: Nel ,caso dell'8088, le case ·sono ulteriormente semplificate, in quanta l"accesso e sempre 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.
B.2A Osservazioni sull'organizzazione di memoria dell':8086 In generale la segrnentazione ha Ie seguen.ti caratteri-stiche. • Facilita l'uso di ,aree separate per il cadice, i dati e 10 stack; in tal modo 11 0r_" g'anizzazione del programma in memoria riflette la struttura logica del progr.amma ,8tesso. Per contro, questa suddhrisione tende a.d oscurare la leggibilita del programma rispetto a uno spazio di indirizzi piatto, • Permette una facile rilocazione dei programmi in meI1')oriaj io£att1, 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 easo specifieo dell'8086, la segmentazione ha permesso ai progettisti cli arrivare ,3 uno spazio di indirizzi ampio 1 Mbyte? .anche Be i registri ed i percorsi interni
,
1. L'architettura 8086
573
-
1. •
0
.,
-
•• 0
I·
. . .IE
-oEL , •• • 0'
o
'0
-
• 7
00
0'
-
00
-" L , •• • 0'
-
J..
00
" .........
.. a . . .bu.
,. .......
, b
"' .....
(DH)
", .. U
(DL)
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 e selezionato 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.
della macchina sonl? a 16 bit9 . Naturalmente, data la dimensione dei registri, i segmenti 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 segmentazione nei modelli successivi, anche quando, can 13 CPU 80386, i registri sono passati a 32 bit,
B.2.5 Struttura interna del microprocessore 8086 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 p~alle10 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 prevista una coda di prefetch (delle istruzion·i), 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 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.
I. -
1-
I·
1-
1-
1J\
1-
I 1-
,
;"~'~r'
.
I
574
't~t.~ J
\;~
:),~~
Appendice B
','~t_.
- .,." .... :j\
"
· ", '''y\' ) " i.\"'~~'!),~~~ ':
",.",-, :';"'~1"1f i iI
•.•• j!;1.-, .~-t:~
•..
I
-,
-. -.
""OUIIT"'1 O"N-="""-LI
~
'"''''
:,.,"",. ',(, Ii"¥;~';,"t",,"
""'<:-lSTRI
..
n,
,
SIIl<:-MJI'NTO
I I
0.0
......... h .
om
1
•
'.0
0.'
---
~
'''li~,,
Tt'DT",ZZ,
.,
, ," " "'""~'iii" · ~11'A:~ ,
,
",: ': ...~t .i + .•. "'!.oiI-' -, . "-"'i:-'~ "":<';r,'" :i'" ,'I\ ',:';"."l';; ' ',"'1 ;""!I'' " l" '.', ' . '·"(i',',.;.r.:
.,
i,'' ', '
.,,', . M,"""~':~
., ..
,', ,,~ ...~·jr...I ., j ' "I .. '"
• • ""~~' ,\ f.j't .~,t'; .f~,> i ,
.. I
,., .
p ......" .. .,. .
I
-
· 1l1' -,'';'''' . " ~ ~!,•. ,~~i,~ . ,'.,. "." -",>.,
~
l<-
T.T"u',,"Ot'T
EU
",.~~\)i:.)1 '.. 1:
BIU
Figura B.I3 5chematizzazione della struttura interna. del microprocessore , . 8086. 51 notl che nel caso del microprocessore 8088, la coda di prefetch e di soli 4 byte,
•. ~;"".l.~
··f
~)
'; ~
'.' A,;fj:t~t l ,,~~-."'!,.. :
'
':. '\;" '~ll ~
''{e:~'ji(t~.: : '.' ~:~l:::t·,;" l
-.-
!
' .."l.'·~ :
<:0", ...
~D'
"
~I ~
; .. ,\-, '.~~'. ! ~·'J'r"
"""T... '
O ..T .. o .......
I
t',
.... '.1· ''''r
~
ALU,
,\-
, \""'~ 'h>...·· .''-,~"~""'" , ,,;l.·.~,\Il ,'t
't'D""'2.ZI
",,",O'.T'.. .. ,
.... "."i.:. ,
'_e\,' ·'t&I:rI~.
C .....-.:""--"'O.....
T~.O""""
"
'-'
cO .......01.LO
I
"
",-",l-.<";Il,, ','. ~J\\_~'I' .."",,.
"i :";~~f"tr '
,•., ,'-',., ', , ,.'J......
""',,,,,,,, ,
"",li~A~'i '
I .I
locazione destinazione del salta. Tenuta conto che, se 1a parola letta e a un indirizzo ' ,i ",)" "i~""i";~ II, , 1 pari, 1'8086 e in grade di leggere 16 bit alIa volta, nel case in cui il salto porti a un · ·:,:;;,',~;~\~ '" r...",.... ,-.. " indirizzo disparl, la BIU legge un Bolo byte, in modo da riportarsi in una condiziene ,,, 'tl,·,,~· : ',! ':.t,ilt.~"\~ ~ per cui i successivi fetch leggano sempre 16 bit alla volta. Per 10 stesso motivo, se ..... "~ ·..... "--',"".,~ .,:'[1 ,,. - <¥l.•- " un'istnizione lunga pili di du~ byte e nella coda sana disponibili tre posizioni, la BIU .. , ......,,\ ' "''''':i~' _:"~,, l esegue il (pre)fetch dei primi sedici bit e attende che si Ii berino almeno due posizioni · •-.t.t:rtll.-: , l;oj'" ! ' > prima di effettuare il fetch dei successivi 16 bit. Questo fatto e sche1l'!-atizzato in ,• •.. ",~J'il!'r~·j: ,.fl<,' """ Figura B..14, ""''I'<' .,'~ . ,I J' ,,~'«"".\ \'.,
e
•.
':';';N'W'!\'~ ·",,·,'''li ", \ ":/:' '.,. - '
...
;,j
-. r
-.
-
I.
,
IV " " " " . , ,-,;r,\, (,', "f';,.•
~1tTeM
n,,_ '....
,.nett
(
...eo.. o.
WftIU~KlH"
u~'o
.-~'~\~,i~; ..... .",
.. *
"
'
... .,.' ....., .... ,,:J\
"~.,,
un:H
UeOHl>O
, '.J~:"~"~' C':'<"~" , ",'., :"'M' ·JI ,
"_0
UCO.u,. ' .... U~IO""
rrt"..
,
,,,,.;,-:,j-}~ , ')I~''9';i
""1""'-./';'
';:£;:',1",.
,
.-
"~
1'"
I"n'CH
......... '....."2'0"..
.. ..
,~ (1.:1r
' - _ ....... U~O.. E '-EO
,......0
...".~
,.,.".~,
'·',.le,'I:',,,:,,,, '
"""'&0 """"" ueo.._
,',,,,.>,;,,, "
.,"..,'".w,,'"'! """l,~
'.\ .- "" I j·',~A,."",
.. )
I,
j -.
st. ... t.o
lnlzi .. l ..
b)
s
t.<>
"h.p<>
1l
p".u"'''o ct..u·
Figura B.14 La coda di prefetch del microprocessore 8086. La prima istruzione esattamente 1 byte, 1a seconda 2, la terza 3.
,."'.
e lunga
"i' (:I' ";
...... ",'·11 ','".\ "I" ':':.. )},l','~"' I
" ".j :
'.
.,..!;,';<.:',,,\
" ".,~'.~ j":~"
,';~I~ •.t'i:r;'
:
...
'.'-;"~~r,·.
,,;·~..i:t:, ,
,~
':;.1(...
.", ;n~.'
" ";:"'.-:.', ,-.
Poiche Ie CPU 8086 e 8088 possono lavorare accoppiate a coprocessori, 10 stato della coda reso disponibile verso I'esterno attraverso la coppia di segnali Q50 ,Q51 . In Tabella B.2 viene riportato it significato delle quattIO possibili configurazioni.
e
"".;1.,.'I
• ,. j -
J ....
r·
C ,:' :',;,:,.:' • ",-. ~. '1,~~'~
'>"'.,,,.,",,',,~.;;
"
~; I,~ '"
,,,,~;~,,,
',' :\!t:'i:', ":':,,';', . 1',1
\ ., '"." •• '¥"":::, ", ." ')'" 'l',:", > ";·'\'.~V:i'
,
.'"
...,,,,, '.~; ,,~ ..,,,
--
.~j.
~ '....-~
;.: ;; '/
I
~y):
,'. \fi.!ii.\"
I.~I'
~
ti~'.
»'\;~
;'1, , ~"R'
L'architettura 8086
":"'"
)' r'
51.5
:'If.~~ i~') ~ ._~; . .'
"
"" '.I', " ,,),
I QS, I QS, I Stato Clel1a coda
""i
':~'~"
t",., ,_ ,1'"-"
"'~
~,1~"
r.!'",'.',
.1
,
No operation. Durante l'ultimo cielo di clock
0
0
U
1
1
0
1
1
nessun byte e stato estratto dalla coda. f'irst oyte. byte estIatto d a coda era iI primo dell listruzione Queue empty. La coda e stata reinizialiZzata in seguito all'esecuzione di un'istruzione di saIto :iuosequent byte. 11 byte estIatto a COd. era successivo il primo byte delllistruzione
.',".
,'t'it..' .......
!~: .
~
~r··""
,,~,
-.,
"t- o ,
0-' ....
+;<,~.~'~
.""';.•. '"
'i?'1: "" ,.'
llt'.;~; , """ ...... 'r
I
!~~~ ,',
'.. :,
:~, •
.I.... \1'.l'"', c; "
Tabella B.2 Decodifica dei bit di stato della coda.
t;:'''4'.~.
.'
i
"
1::','1
.
r:t=i'
,
,'''.
.l<. 1£" :1&'' .':'
l~'" : :m~;:;.. ~l:,,<_. ~~~ .. t
'r,I1'''''
:l:lit·· .'
ll',~.,'..
'j:"
'r' ,,~
~.
,;~l
4'
'.~:~.\"
~:".);"", ,. "", 1; ',~~j"... .. ",J.!' "'1,1'",. . ,
~l~r;·;. 1... ..'.
- -"
~.,
!;?,
.
.
l.~·,
!. i'J::.:,. ,~!,'
B.2.6 Cicli di bus 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 e basso 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 e uno 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.
":'·l-"· ,','
>' ""'"
'.! ':~:
I
\~ ;>'.. "'" r'l!";"
T>
L.~:I'" • .r.'
"./"'''_A1
r.'!' j -~}
8HE,
,
'"'!:i,'
.,...
,~", "., .
'~
AD ...
."
'
.....J
"'
;,' .... '.' .'" ';"~"",~ •..
~
~"'!<.' I .'
'., >
_0_
_._-- _. --f-J c-f T2
.t'o,,,,z:r.,
T
T ~
•
I
I
,,,"'T,,,II
oon
I
,.
-
1Ul,',.
.,~
" .....0_
"'." I\i!;f"
;~Ii"" 1 'I", .',",' I1'>.;,,:;, ' "'i~""
0./
~'~. ' ,
iiiN
;. ~'" Pop" , iff?""
"......,
....D<>UZZ.
',
,
T
•
I-'
.TATO
I DA'"
I 0 ••
, ...l,.TO_
••
lY-J,>."
';4;:0'
v.
T
I-'
...",....z"",
.T... .,O
1'-"',.... ~. w.":1o~,.
'llil/~'
.....J
/
m
.
0-' ---
T'
. ..... "''''T''
"
~
J
-~I"~
~~.... .a,.';
.... )
".,,"" ". ~,~
30"'"
'""""
;'O',--,
;H;r.'lJ4~"
}(!~t' .
l.fi~tt
,~!f~"
.1;"·, , "'''', ,.'"m ' ""
'I~' ~, ""F ,4 d: ,: -~. ~)-
_ ;~;"
.
L .. t,t~&
b)
Scrlt,t,u.r&
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 e disponibile, 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.
.
,
.,'"\k.'
<~~.
576
Appendice B
~l;
.';fl.'1;:- I,. Io · ••,.•:!..... :,~ ',:~.:,~~'l~+;e : ,(l ·... i r, · ,,~,.,M, ~ '~" ·.""1.
.... """k "
· .,::' '~;~fj~l : '(. ':';~:;,r<;m: ~
>i:;~;~ti:.:, *J
.. { .. ~~.;r,j' ~:, .,. "t.:~k, !> - ..,~." ... , 1-
Su T 1 viene presentato Pindirizzo e viene asserita la linea ALE (Address Latch .-'-'·,\rr~~t ~~ Enable) I utilizza.ta per memorizzare su un latch esterno 10 stato delle linee condivise ".:;:,!t.'/:~,', !.: ADo - AD 15 10, Su TZI a seconda ·..i.~t:;;~·!;_'. . che __si tratti di un ciclo di lettura 0 di scrittura ,,......·..'.'r, ' vengono asseriti.i rispettivi comandi (Rn 0 WR). Sernpre su T2 viene asserita 1a linea '.-.:~~9tii ,t
DEN (Data Enable) che abilita l'eventuale bus transceiver inserito tra microprocessore ~ >i£f,~' (: e sistema di bus esterni. Invece la linea DT/R, usata per selezionare la direzione .:.. >~t~i~';:' ~
>.
di trasferimento al transceiver sul bus dati, e permanentemente asserita per tutto ;~~111: / il cicIo, in b~e al tipo di cicio stesso.· La linea MilO stabilisce se si tratti di un ' ;'.i~W.r.k ~ cicIo di lettura/scrittura in memoria 0 in ingresso/uscita. Si Doti infine che Ie linee .. )~~~,~.~ ; ~D16 - AD 19 . fornisco~o ~formazioni di sta.t? (83 - 87 ) du~ante la seconda fase del ;);~t~~~~ clclo. Queste mformazlom possono essere utlhzzate dalla lOgJ.ca esterna. ,,';"~'l~(~'}\~'
·- , :...:,,". "}"'\'.,rJ t'. '::.~
· ..
'-.~,.,!
'\" ...-)j'~" .. "
'~.,'.' l';~,"
B.2.7 Modalita di funzionamento
~
.~ .I!~~~. {
·,,;~"ff"··.f
·:"'\.A~'!-f,r,~" : · ,..;,~J!r: i'" J .~. "~~• • - : ' . : .
0"" r.. . "";,...• ',:', ,~. ,:ifJ""I' ~,.;;~.~~' ..~.1-, '
,
""'", ' II micro 8086 ha due modalita. di funzionamento: modo minima e modo massimo. : ,;,,r "'''~\''';' '~_";:')jl"'~' La selezione del modo di funzionamento si ottiene attraverso i1 piedino 33 de1l1inte~ · ,-''''<'.:F!I,,~I:',., "'~If< 1 ,:' :,~., :'\o1i:.p grato (FiguraB.5)1 che viene permanentemente coUegato all'alimentaziqne 0 a massa. ::,:.}~'«~~;~ .f-'~; Come si puo osservare in FiguraB.5, alcuni piedini dell'integrato assumono differente · ',;';" ",' , v'"," ".~" significato a seconda del modo. Per esempio, in modo massimo, i piedini 30 e 31 sono ",' ~!i.,~.\" · -: ..,":... 'cO'.. dedicati ai segnali Request/Grant, utilizzati per la gestione del coprocessore e/o del· ;,,:.; .• ~'_,,"'I~' 'r.:.;·· _' "', ',. proc'essore di ingresso/uscita, mentre in modo minimo servono per il collegamento :,;:~~;¥,;·:.f~~ diretto di un controllore DMA. .".,.".~""" ·.':'t,,,,.!.\.,,< -"";;;~..,'j; , , , .. ," Nel modo minima eesclusa ~a possibilita. di usare it coprocessore matE!matico 8087 ',,--.,',.,,'-j" :'1.W~'.lr,~,.;, (Cfr.B.6) 0 il processore di ingresso/uscita 8089. Questa modalita di funzionamento ·"'''''''~~''''ir' ~ :;>,~ ~ ':i • '.'1':." · .;:.-,. f.l'iI'h.~, \1.1 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, · '.., '·iNK·' i:" ,~, :ii; • '),"1, ".~',~... ,.,,~" Utilizzando le linee RP, WR e MilO e possibile costruire i segnali di Iettura di <~0}~~ft:. memoria, lettura di I/O, scrittura di memoria e scrittura di I/O. iI.ltl.l.~ •. , v': .. 1>, :,.";, :>"3'1l In modo massimo Don tutti i segnali di cantrallo sono direttamente disponibili. '".0 P~'i"'~ D costruttore ha pre·visto uno specifieo componente di appoggio, il controllore .di bus :0••<*;~4~f~ "1; :':t.;;... 8288, il quale genera i segnali di comando sul.la base dello stato della CPU (comunicato ,:~~,:~t ,-",0/.'.,-. attraverso le tre linee SO, 81 e 82). In FiguraB.16 viene presentato un esempio di . ,· ','M'f.'!?.' ---r'-., ,1, .'''t·" ,'., -_:.t:' ~'J;"" configurazione in modo massimo. '5'~*;;A';,~~; ..
. i.·\'"'
• ' ..J"
, .•' ':
M'~""'
,~
I I
...
'
I
I
't" ..,
,.,.~
,'.~"
, _,' ,til~;' '. ... ~',l"" ~I-ooo
...,y.,.....
.~.;c\~.'r~·:3
B. 2.8 La rase di partenza
·.'·m"
'L,~:j"",\,.'7~
, . , "".. ,. :--1'"
'I' ·,-', , ~', ::.:j".~"
,"-'~,l,,,,,
•
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 e quella alIa lacazione FFFFO. Essendoci pochissime posizioni tra questa posizione e il confine estremo della memoria l l e necessario che essa contenga
I' ,,,,~.j.\ ' - ; . ,••
":'~,l~"/~)
"~i~«~~'i
·· '--""'10 'll¥ ' ,·. ~.~·(il\,:;:\;: ,,'
' -,"
· ::;'1 ·.,I.:T
,..
"""~' l'
;,,~:J!,
.',:
·<~;,;:!;~':. .., '.
'1, "
.- """J~~" ,'.,,,-
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.
~lf!"'''
: ... ,.-.;~
· "i"iNo"'"
· "..__ ,\i,"'.':" ,'l- '. .... ',",,"' , .
· "--).:,:,;(p' 1'''-0.,' ' -"l
·,,~.~"., ;,.' ",'i' , •"j,;:,~~,t!
1..
;.~--
o'f""" .•!
l;~':",
L'architettura 8086
,.~~
"\1'
.
577
"..;'.,' .
)-
.~: ,. ':,
J:~" ,)'I'
>l." --' ,
~~i:.;,
:~'!;
'"
,
.'.':t" '.0'
J.>TCR
""
.
t:}:
,J0~
i
:,:F: :, ~n:,·
BUS nrolRnZl
M: TIWfCElVER
""'" 828'"
T
8088/808e
i>T/ll
.,..
BUS OA.n
\
I,.
/t:::
~{;f.
;r( ~~~,
'l"?~'"
.'>\i;"":';
{'!.""'~
'"'"
:;t:\: J":;....'• ...
ADO-.UllS .\18-.09
\;~
I,
,":>,.-.
"'''(' "
.'.
~~I'
"
<'";""' ...
,,,,,-"
C'
," "!'" " 'lit,:; ",,~ ~,' "",,...,, :!,'l...,"
...
""/'"
,.. '" "" C
-
..., ""'" "'"
'" ''"" ,os ""
-
,•
•
-• 0
~
I.'
0
0
1llR
8288
I.
].
-b -
,:~,"'l,
1'.';>,.•
'b"'" :"'J:
'"
',",.e
""~o;;~
8z:.U
... <~,.•
1'
J'1",'·'" ,..",(.
,':~'" ,t -.' ,,;~~,. '1;,,:<,-"
,.,,;:':; C:~';;"
ki/ . 'I'· ':l ',;~,' :<:·....
"",'"" . T·'
~.",.",
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.
, ~ ..'.~ ." , < ~." i.I ,,%~', ~ :i,",,"~~::
,"'';:-Il ,.
~~'.•
'.",. ~'~/i,J,:· . ,· XJ~<~-'"
.
~,.
.~~!t' . $£',-" ··~,;~·l
l~",~',
~
.','i!',:,.'
~.. ~~.~" ··tt"r~·
t~r~£v . "'fl.' .'.-." , '.."". ",~ .. ,.'""'"
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).
l.. _. L 1'
.
J;:;>".'
; ~/' .
B,3 11 repertorio delle istruzioni
"..'f-,-, ,
).
o. 'i!~" .~~,
3 ,t.';;:'
,,...
C;i:;j!'
'''':i, .,.. 'n ' .""
": ::'d';~'
,,
\
-
):
;:
'(;'.'-;" ~ ..
.-Q,.
':j,,,,"
~';' ",'>'.". >1:,1.
j.ft , ",>', ,.
T
'.:ji~.
', ,,'.>:
: 'r':,:,
."
"j;";.' •
•__
,..,.~"" "'-~
•.
'' .~ ~
~ .~.i.
"
',~.-r,~.
"~' __ .,:~
'.,~_
.•.:{:o.:"
l'-' ,,\:,,,,, '!'~".
,. ..' !;~ )tt,,~.··
, ~..~.' . ,'-' '1
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 assembler 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 registri 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 strut~· 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.
].. _.
I· /.
r, :.".::lt .' ;~.
;.:1"
'1':
/ ti~l;,\;, :J:~
,.".,'~-
..
518
\
I
.-
.-, I -
':',:~O~ll !If,' , '0:
... .. ..... ,.. >"":d~:';i . 'C ~~"..,
,
~
_
~"\,,
"
:,·i'i.j;~ :~;
"
..'-'
"
'~·'f:'l "t"" ·" ..~ ".r,~,'J -', ,',"
,r1~;~ :'~!~
"IN ,"'. ~".' ,'1; .' :':';.'~ t·
, ,,".:n·:
.''' ,.' ......,,'~.~, ~'.", ~J.I ~,'~ .. " ' " < t.,. ':t! ... ~.'~'}l". 'J:~":'"
,; .-,.',"
"'.
f1' ,...... .",' "t" .. ''''~''
· ... ~~i'~ ",~~
,
.. I
i,'
' ' ,. \", .. 'l'
"':'
BA Modalita di indirizzarnento
I
-
Ii''
.":~',~'''' :;:;" _.""...r-r-~ .;.,." ., ,. " ..•.'\f," ~ :,,' . " .lCl~j ~.,{, .....,."' ~I , ~" -.1< -'1; .,"
Appendice B
Per 8086/8088 e stata 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 e stato lisata. fino al 386. A partire dalla CPU ·80486, I'unita per Ie operazioni in virgola mobile e stata 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), e comparso tutto un nuovo insieme di istruzioni.
.- 1
~.
,'~'
"' .•.. ;..: "~. ,!;~" . '.l ," ,1\:~~} "d
.,:."('f} ~! ;.1"."1,:·\ ;,: !
,,;:'"1 ~'''': .''
_. \
A costo di annoiare illettore, invitato comunque a consultare i manuali e la vasta let~ teratura Intel nella quale trovera. tutti i minimi dettagli rel~tivi 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 ~suale alia progettazione era la microprogrammazione.
.- I ..
",:,',,:~:l;~\l', ~ 1 .~. ,.. ij '<1:::~~'
.,d
,.~
' ',~:~~~~ '.~ ",. ,,' ,,-, "'~"'~ :'
:" '~"/" il
'1," .,',. 'l
,.
.."\,'.- 'j.:,' ,:'... !i.,..~.,;,.,
.,.,..,}'
",,,:,,.' _
"-:"",."', ,·.:t; :, ,;0 :....,.';" ':
" ,',:1",' ',"~ '.•. r '.,
,. "\ :.;-.\" "'I .... "",;;,. ' .
;".~ ,
_.
--.
-. ..
--
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.
I (
. ~ .... .,:':. ,,'.l;'" i
- ;.. ;{;,, .. ~
.~",'..:,;; ,~•. <,;
' ,
,~.
• "! ':'-"''':1 .,"""'\
•• ·i."·"
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. Esempio:
HOV AH,BL
;AH
f-
Bt.
· >,," ".''''' .., ".'
., ......".".'., ,
"
.. ".';t., .
·:'""c'\·~·'" ;;"',""'" ',.'...\~,"i'-' ',.;.;,;; ........ ;. \ I'" · :.~PV .,'.-;':: , .' '., .' ,':"~~~~~' "",.',.,.,. • ,J/'('"
~,
,
•"
1"
~ . .'. ',-
(
I \
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 e presente in CPU per efIetto del fetch dell'istruziane 12 . Esempie:
HOV AX,2475
; AX t- 2475,
;l.~:"i. .. ;..",•.
.'; .•.
'""10:,,
':}, '>~
"'i,:;'j · ,;', ,>. ,,'. ".,~-.. '. , ,,\,e
"... -
",:;.';>
...,',c": ·;·,:
· ._..'
Indirizzamento in memoria Esiste una varieta. mol to ampia di modi di indirizzament9' In Figura B.17 viene data una schematizzazione che Li riassume tutti. •
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
.. :
."
/"., ,
,~
"",(.~,~
:;,~ :?:-
.,; '~.:.'.'
· ,.,_i:"
\~
'':
",:.:;"
'.' ;'::", . .' " .:,..;.."''''''' .,,' . \ · ~,..
'."
-,
• .( •••
:-'"'. .:.''.
;.,
.
" "..,'i':/ " '''.'
UOvviamente un ope.rando immediat.o pub esscre solo di lettura.
".::r..........
.. .,,-'''''',,0 · .>' ,.tri"... : ··':~;~.';. , "'-;..l;';'-; " .. ~;~ ,
I
"
• ,""', .. ,
'J
"
_.
.,, .'~"",. .... ~ " , ,",' '~,.-" "
'\'"!.';i;n ~
..
-.
,
'J."'!"
" ., 'I':'>!~ "
B.4.1 Indirizzamento degli operandi
\
...
, '
.~\~
.
:;,
L'architettura 8086
""''.'.
579
.,'
,;
"I,
':
OOPPIO tNDICE
SINGOLO lNDICE
";,,
C,'' '
;~:
ex
",' ""~
ex
s,
ep
0'
",
~~I,:..
. '. ;-) .
COOlf'ICATO NELI-o\ ISTRUZIONE
, '':'
I< ~
<.' ", .
.
,
ep
I
S,
I lEU
T
." ""',
'< ", "<' ..,,',,
Ef'I"ECTIVE ADDRESS
0'
,
'
'~;' "'!'' " .".:.
d
lI.'
ESPUCITO t-IELLA. ISTRUZIONl';
dl"-
!~~"
:I,; ,.
'f,';''";'
[
~; jl{
.~)',.
/- .. ~~l,", ~
'ii' ':.'
Sl::CMENTO
l'r'·'
l~'
:'
,..~ _.it.,.'
. ;'/0"0'
'~'
01' ;:,'
:
NORMAl,.Ml!:l'ITE
ASSUNTO OPPURZ SlI:OMI!:NTO
=-
""
rl
cs
1=1-
H
ss
I-I-
H
os
IB~U
I-I-
/l.-LTERN/l.-TIVO
""~ \.i~1 ..~J....
£s
,,,,, .. ,~, .. ,
".'~""" ."
",'~'
"'1"
~:'i1:V'
~~~ ,..},
''''''O
i~~f.-
.e..;r-
'j;' ,
• ., <
'l~i". \}
.~,.:" ,,,' ,'"",
..
1 ',",;
.
~.I i¥'Sf." ,i '••'
",'".' 'm:' \i~~<'" ~
"_leo
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) e quello 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.
"
.,~k'·
;
1\"
'" ....,. \
,<'
1,",$;
. ~-tJ:,' . '9!'" ,~ •.
~ iii..:
j ~~I"
t·,\r,.',
.'.. ' . r ." .1' -"
:~r, ' 1,
'
'"
-
~~ ,.,'.
."" ~ Iii.. . . ·
, '>I,{"
-"
~~::,
'> .-).•. ,
" l.:i!l' "; .\;:"- ,. .' "/':.-'" "
,. -,' l,ti·o\ .. ,'". ...... ~.
-
"
•,'
.:<,""
.: ~Il: .,o, ,ij{J . /; .•x.:, ' ," ij'tf, ~.,
... : 0\' .. · .;;II· ;!; ~;,
esso destinato (EA = Offset(VAR)) . Esempioo HOV AX. VAR
.; AX t- H[Offset(VAR)]j,.
Indirizzamento con l'impiego di registri La Figura B.17 mostra. che un'istruzione pub codificare uno 0 due registri, oltre che 10 scostamento, In 5intesi, 5i hanno queste' pos5ibilita. • Indirizzamento indiretto attraverso un registro: quando l'istruzione non presenta il campo dello scostamento e viene specificate uno dei quattro registri di sinistra di Figura B .17. EA it contenuto del registro specificate.
e
Esempio:
HOV [aX], AL
; H[BX] t- AL .
131n realta. Quello che viene caricato in AX e il 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 e trascurato iI registro di segmento implicato. La composizione degli indirizzi logici e stata illustrata in TabellaB.I.
,J
'~" '~j
","
,"
~}:.
.."'·i1?o ''f''
':'~"-
580
14.. ,,;..,
'\ ..?,
·'.'"!St'''',<-,'~ •~;J"'I'i( \\il.i: J .
'/~;~t "., .:/: ..,.. :
Appendice B
~
'"l,t',·"", ·,i-·~J;.O AI
}'}.~ti!. .". "
• lndirizzamento relativo a un registro: EA e la somma dello scostamento codificato nell'istruzione e del contenuto del registro specificato. Esempio:
; AX <-- M[Off set (VAR) +51].
MDV AX. VAR [51]
,~~,'t'i"~, ,:'/,' ·"~.l-";l<.' "'\-;""",., ','
"""'.,.., , ,:. ~>;;:
j{;:}~:
.. ,.,.. """"'<'" ,. J., _. \1'
-...
Esempio:
MOV [BX] [Dl] • AX
; M[BX+Dl] <-- AX.
';i 'j
,
."l!J.r.;.-~ • -,.'
"A
':"";:~~i-:; .~,)
","J. . .-
, ::'-"~:' •...".<"
e
• Indirizzamento inmretto attraverso un registro (di base) e indiciato: EA 1a somma di un registro di baseH e di un registro indice (SI 0 01). E il caso del percorso di destra di Figura B.l7.
.
-,,\." ..'-,' . ,'
,
;' . ; " ; . , ,
~ .~.
j
,,'
-
~:~:t:; ~,~
-<' .)
,:""\~,,,~,~:: .", ,.. , :j~-,rf: ~
·
,~
'. -
.::~t;~.!! !.::'y;' <:--.
• Indirizzamento relativo a ,un registro di (base) e ind~ciato: cor~ispon?e a1 <:;i';:~Wt!1i;!:1,: caso precedente, con I'agglUnta dello scostamento codIficato. nell 'lstruzlone. ·;~Sr.!,~~; "; Esempio:
Indirizz~e~t~
MOV
ex. VAR [BX][51]
'.;'1"".0. ,,,
• j,
; ex <-- M[Offset (VAR) +Bx~sIj;qi:,
\,:,:.~~~~~ ·~
~i
rifer~ce ali'indiriz~~ment~ p~evisto dalle· ·;,:~i~?i il
. sulle porte I/O Ci 8i due operaZlOm di Ingresso/Uscita (IN emIT) prevlste nel set d.i IstruzlOm l5 . Ci sono due modalita..
.':"~'.~";~;'; ::: , .. ''''-:.-.'' ., . ,~·1':~.j.:;I: ;jj · " .,'.. ,,,
.....
~."
m
• L'indirizzo assegnato alia porta codificato nell'istruzione. A tale scopo viene ':1~~~ impiegato un campo di 8 bit. Ne consegue la possibilitA di indirizzare 256 porte :·;>1j,~t.;~ :' di ingresso e 256 porte di uscita. _.. ::~~~~~ ~~
e
· o';";'FF'"
Esempio:
IN AL.PORTA
; AL
f-
PORTA di Ingresso.
'il
~.:~~~ ~~ ..
.,'ii:~~~j'r. M l'~'~
~to
._~'''''''''~~,j '~~';' ••
':)
"'\,,~f,',·)1,
• L'indirizzo della porta e contenuto nel registro DX. In questo caso 10 spazio di I/O indirizzabile si estende fino a raggiungere 64 kbyte di ingresso e 64 kbyte di ··;7-,fI,~r,l.?·I;~~~ -: · ,~ to- . uscita. ·'J"I!' ,., \.I~\lt'·:·';t J EsempI0: . OUT [D X] , AH ,,""', 1 ; Porta [DX] f- AH. "' ........ '~,~,.t:.<:{
·• .
.. ",,,· 4Ir·,',
. ,:". z.,',;. "
i:'~~it·~t
B.4.2 Indirizzamento Dei salti
·"":i'e' ' :;.~~J~ ~
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 .,; ~~~r;:.Wft '; , ', ~.. . I.E';·:o" .r,.•. ; ".; POSSI'bili'ta . """,\~''''''.Si: . j ...
o
"
, ~,r""".;
'0
• Intrasegmento diretto: EA del salta la·somma della scostamento e del cantenuto··:" (;~:~f~;~tfr c?rrente di IF. Lo s.cost~er:to.puo occup~~ 16 0 8 bit.. Nel secondo casa, si p~1~;~~m~1; : dl salto carta. Le IstruzlODi dl saIto condizlOnato codIficano solo scostamentl dl ,:rr~"y~'/: ;
e
· 1',.>-,- .
8 b'lt .
.".'-'1'''' '··;"I1'),<"~ , ,r '.: ,,~,::;.'
,
,.;
-
• Intrasegmento indiretto: EA del salta e il contenuto di un registro 0 di una parola .', .'.:~~~.li ~ di memoria a cui si acced~ usando uno qualunque dei modi di indirizzamento visti ·'·?}~l?A> ~ per gli operandi, ad eccezione del modo immediato. ,'''·f.~..~[t ) °
I~";.h':~·'~i ·Yi~~" ,
·...~..-. '
'i'i::'-d~;;f) "c,·
'"
14. Nella terminoiogia Intel vengono
COS!
chiamati i registri
ax 0
'.."".,.,.,. ~.JM"'.':"~ ' . ."'... :·.·l.1!'",,~'
BP quando ci ~i riferisce a questo
-~
impiego per I'indirizzamento. l~ Ovvia.mente,
se ie porte.di I/O sono mappate in memoria, valgono tutte Ie modalita previste per I'indirizzamento in memoria.
,~ ~,
''''~ "-'1.' I ,,~,.~-,~,
·
".~,~,
·.'M~ • ,~..,"" : ,'1,toJi~~"':" '~J;;v,o,;;ji
••
,~',<
'.f·"
• >.';\,~.:i:.~
Jr.,.
..
)-
",'.'
.
.,,.;
?,::~,
.
::
.
L'architettura 8086
581
,
I, "
".'
',"'. I
i
,
• 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 di provvedere al salto da un segmento all'altTO.
..
, "
e
A.
•.
..
),\
.'-'
',
0'
as
• Intersegmento indiretto: sostituisce it contenuto di IF e di 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.
.
~;:
'.,.
~.:
:~: r
:~:/.
_.
I]-
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 ~N'.· di macchina elSC (Complex Instruction Set Computer), concepita in un'epoca in cui si faceva grande conto sulle possibilita offerle dalla microprogrammazione. n fatto che i formati non siano semplici complica la fase di decodifica deUe istru:~';',<:' ,t., zioni. Se questo non rappresentava un. problema quando venne introdotto 1'8086, in j!tq ,.,,', quanto·n microprocessore aveva prestazioni eccellenti per quel tempo, ha invece costituito uno dei problemi piu spinosi per l'evoluzione della famiglia, per quanto riguarda ';W~k. , 1a realizzazione delle pipeline, presenti in forme sempre piu sofisticate a partire cia! ~~::', 486 (Cfr. B.9). llI;"-t'. In Figura. B.18 viene dato il quadro complessivo dei formati previsti. Si noti che .~..~~:( il byte del codice di operazione e il primo (indirizzo piu basso) tra quelli che formano ml. :l'.l" M: . l'istruzione. Oltre al byte contenente i1 codice di operazione si puo avere: :Jfj~~~~ ....:,1, 1. nessun byte aggiuntivo; '~~ J~', 1'{,~;""•.;. 2. due byte di EA (solo per Findirizzamento diretto);
,•..
l~J<
\!_. _.
".:
m::
~,.~.
),;:e"". t ....'/· !' r.1-
"\"
3. uno
0
due byte per 10 scostamento;
':lH
4. uno
0
due byte per l'operando immediatoj
t.;'.
~~1?l.,
1-_. \
l-
11
1-
5. uno
0
due byte per 10 scostamento e un operando immediato di 1
0
2 byte;
;f!i%£
"".~. ;...!;.~t.,.
6. due byte per 10 scostamento e due byte per l'indirizzo (base) del segmento_
...~ .. ,
0,._""
r~~1~·
:,~jt~,.
;~~~" .,',... - .
,k'''''.~.' ~'~'
. ~t)~~'
~~~.:
)~~.
,j~ll'!h\ '.... '1;
'I!t,•• ~
'I'"
11-
-'l,~ •.•
-/.,=,.
)l;,.
e
La decodifica delle istruzioni ba.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.
.
1-
..
I • ....
,
,.~
~~r'
,:.,' '.
'1"
~A~'"
••
. f,'~;'" . I'. •I
1-
'$'. '111
.,.).'
-,
I
-
, ":'f!..
582
';'
·· .. ';"." ..I;..
Appendice B
: -,";jI
.:'~"f:',~' .~ . ,c . ,
~
t:'/§.il;
!:~.;
,~.,-,,~,;~,
.'k
"""";r.l'[
", ",>,:;;",' ~ \l.V '.• ,~ ""I" """'"\'3" 1 .'~ •.;:"-~;';' \~t '. ,"'-''!'': 'il
.- 1 , ,,
._:
-,.::-/\~" .~
....:;«~" .. , ... !.;:, , .', ".<.~,~: I·r
,". :~,~,~:,:: i'~~ ," ;:;1-.i'~i ,(~ ;:"'~.'-"-'
-
r
.,
I I I
-, .,
-
Trasferimento dati HOV PUSH OUT LEA POPF Istruzioni aritmetiche AOO CHP AAS IHUL
......
· .. ,' .,..".'..
'~~".,';:'
un byte 0 una parOJa Impila una parola sullo stack Trasferisce un byte 0 una parola in uscita
· "., ";';"~", ,, '. ).~: .•.{~.;:: i!
""~'J'I ', !i:"P"I' .
_"'.,';·:tq·t~ ', ,t1:a ,':
Load Effective Address
,'. I -. -'
,
.,
\
(
I
•.. ".~~.lC!·
,-'-- ",,
~,,"" .~/" I" ~"~"'. ;
· ,',
'
·.,·~,." •.
'::-'"~':~"* ' · ,;'.-:f':'<'", I
~omma
byte 0 parole Compara byte 0 parole Aggiusta ASCII per somma Moltiplica (interi) byte 0 parole
.;:,~:~~~;~:, .- ... ·,-,·W;·· ~~"
~··'~.i·_.,
....
~ncronizzazione con l; esterno HLT WAIT 1struzione di non operazione NOP
._
·':'.'f.:l~, .,,,~,
< ,::~,~"'l;>f:~
· _·.'~~l· '
.,' 'I".'·-c--," '
;-\~<""l; ,
.>, :;:.~~~~~ ~ ····..<./~:t ~~.:'-;--';"~'::\i
';',;"·~'-'·J';,Ji :
-:S"":"'i!', . "C' ...
:
•• -.'.)''0'''!~~; ;
"~~;~'.~~! .. :"c"",!jn
,~, .. ,"i~:~~~.;,
."\".~"""" .,.,,"'.'
una stringa di byte Confronta stringhe
dena VJ5U
\'
lsarto incondizionato Chiamata di sottoprogramma Salta se uguale Salta se non maggiore 0 uguale Interruzione (software) Ritorno da (routine) interruzione
.' ,:;,:~-':;'-;;;!~:B:
''''''-''''~~' .- .•.•• ..-.,~"' '0.
,;:t.:'!-§~/'i _'J"r,~., .. '(.>1. >'·"i~~:;:'::\9. ,;.,;',..::.", ':,'i'::!,":~,:~,
'''it''", .' :':i..ii",l.:! .,.,.~~.)
,,, ""..".,.
· ;. -'l. ','.....
.",'~"~~"
~'~;';;.;o,o;\ ~~"
-.',"'_L'\ '«: • '., ,-",""0 ;:'"
~.:"::.'::'}~::;~: J,,"'~t:~lij;1
..;;:t'Vfir:,~
,:' ,,~,~I'1-.'
.
"orta a 1 il bit oi riporto Disabilita it sistema di interruzione Stabilisce la direzione di scansione stringhe Passa alJo stato di halt Passa aila state di wait
'';!i
'~, . A.~:m
. '_' ;::~'''''''"f" ,~~.;,-"f,.
';Y~'~"~i.-,
·r;·,· ":I.'>'" '.. ~71. '1" · ,,:j'~!~ ..~"ll'~
·... '"'",.~.., ..• I i·'",-,·.,,:..··'·''-; ......,,,.,",;.:' ",\.;1.~;"",,;,
.
.: " .-.'.'~""":'I!
·~';;"-~;:t·{-1i .'.' .~f." -'~~.,~. ".~.
>':::~ntli,:;.
.'" f"'.~C'I' ~. "","1'0(,;
· ,•.':;':J5'i;>i'. ,:'~ I '.:-' .--- .........-'.'.~ ' ' ' ' 1 ' ,~, ;l '. '.. :"~''''r''''~
,,. ..
,.' ;"1 Non 130 niente
... ',:.\;I,'':,,!-'(;
.. ';';~';;:;i\',1:J1. .'. ~~~:t·:~" ",~,";;""::~
--.
-
JHP CALL JE JNGE INT lRET Contrallo STC eLI STD
,
,."',';"/"!': I"
~posta
~S Ii
..
-.': · .. '~"f'1' '.-',4.. '''"
Estrae la parola di state dollo stack
segue I'AND tra due byte 0 due parole Scorrimento a sinistra Ruota a destra attraverso il riporto
HOVSB
~~
"
Manipolazio7}e dei bit
AND SHL RCR
~"t.~
t!:~tr.: '~':
~posta
Manipolazione stringhe
.
<>
......
;~>:'?c' ~.- .. ~~
Tabella B.3 Alcune istruzioni del repertorio divise per c1asse.
\
.. :""'-< ..-:::-;.-'"), .,., ' -" ... ~;i.';;:-~'l.'.•,,1
.. , .J;\;--: ."',' ,
';~.\~f:\'~ <\;;,1:0 •.
.--"~f::/~j ."?t'"""
j
"_'4~' ".-'::-h_ "1 . ..,,~,., . ' 'C"';,
_,,,s
»,0'," ".' '<.J,"< ~ ,,'h:
,.
)
-"
'. .. ·Jf'' '" ~_
.~l
,J~'<;~:
"'f..,."' ..•.,,~ •. ,.'1
' ..
.'
]
<
:.f
'0 ''''},'.'l\l; ~
~:~:"1i:~ ...~~ji·'" '~;' "".;r,~" '"~.'-I~~'''
.
.'. 1.,
',. "
!.~. I
'.:
L'architettura 8086
.;', ; ~..'.
583
,
;'. .: ..
k,.· ,. V, .'
1;' I,
t~'
LeQe ...... olo.
l ~
:: '.
,:,
r:,.
REG
R"l;Il."''-o
...,'.. ,-
MOD
Moclo
::;:.. ,','"
R/M
RQgl,.,.",.-c
,.dO.',
DISP
~':-'
~""
>,,/.
.
,'
~,.
!:,,:}'~
,::::; ..
''i-.:., , "'~, :' "~'!, ,~ ,'.' ','
.L
..,
M ..... c,.-Io.
S CO$"t Q.l'"'len-to
DATA
,~.,
0
Da."to ,H
c: Dis plQ. c:e r1en -t >
I ......... edla.-to
I"",cllc:;g."",o
.... ;:s;;:p"''''l::--t:h... g., ........
":' ;"
;~' ,I . ~I\
po. .... -te
lo.
......, I'f.: "
"~'£~::'< "... _.."t '':it .),1;
loo.!iiSO
ft
''-t..,
In
po. .... t e
o.l"tn
,
'"-... :.
!SVUZt)nt
,';;-~,
,
~~?,:
I
,l',:,I; '~':;" :.~:',
I
DF CDDE:
.'tl:'".· ,,'.
:f·\l,. ;l'~
.•,.
lstruzlon.- dl un byte
.".',', "',i,
l
,
,II'
I'~::;
".C',.;' ':'> '. '
..'t-;: .•.: ~
~.t:" .~~I <:'~, " "
;,
.•
" l':~"I'~'.
:.' ,'" " t.i~,;,
j~(\ ',',
)~~ ;..'
.~~....
m _, t'\~•..•.~ I,
, .•
.,~,
'.•
I
""c:lGU-",,' r- ..gis-"r-I
I I ReG
li:.g;rlr-o;o - R"gictr-D
".!ii'..,':
!;
cp eDOC
~
I
'· a
I
B' CO"
IGJ EJ KG
R"glsotr-o a/do Hfl'lorlo nnz~ Scostal'lento
I
OPCOOC
18 B 'EG
.,\
i
,...., ..... ". . :;;:;1..
'
RfQIsko ",/do. Hel'loricl
t,l..... .:<:,~ ',' '~.~:
.
1
OP CODe
con
Scost
IG~l
ReG
B
'' :'i" It, ,10;
Se ~ne Us
I 1'~'of I
,
.¥\--
; • '.,:; I
•
CODE
~ l;;\",~ .~l-
..tit
"" .~....,f.·.
sc:ost~rrto dl L6 btl:
[p
lGJ'QP-'-DD'EB
D/ll/l.L.
1
"s..' ',,,.. ...
.J ~
~""
I'
", '..'~"
:n
1;', ,
i!.i
~~
'"! ~I.
..
1
D/lTA.H
s. vl.ne us..to Un ""-to c:ll
ep.....ndo
I
llY>ll'di.. t .... lW.. o..l", co;, kQ~t.....rnto Ii 16 bit.
DP caDE
tEl" caDEB
'I",'
I
l'
01""
1
l
!
bl\
'.t.
:- 'l-\t . ,i\O';
j\
\ .
.~.,
1 , '~I . I
1...... d1o. tc> .. JiI"g1~tr-o
un;!
DISP~
::,"
.. " ., '~.~. ,. .. • w·
,
ap....o.ndo
I
.....
• ',r .~,. . ~,"
.
DrsPL
,.'
.~"
"., .,.,
I
DATAL
I
,.rAJ;
s" vie.... UlO.. to ..... dQ1:o dl 16 bit.
Figura B,18 Possil;>ili formati delle istruzioni 8086.
I
.
;1.·1
;"
",
. ~~i~' : w""" '" ~
I.~
584
,
.11...-,'/,' ':,'
",,~~.
, '\
"'''~'''':il
Appendice B
'~\~'r.f::-
--.... ~:"i . ., .. ,lfit~ .
~t~tij ,,
..
·(1~ :.
B.6 11 coprocessore 8087
'.Y.i~1~ . )
~ ,... .....\'., ".. . : ~::.:ij.i~f
,,, ,
. ~~',I.>''::..
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 dispositivQ separato dalla CPU J rna capace estenderne Ie capacita in maniera trasparente) in modo tale ehe per i1 programmatore l'accoppiata CPU-coprocessore apparisse
~,:'bi~i}:· , ?~fW~
::·:::,tTip; :
"
::.t~~1t, .,.".
"
,
.~ ~;~~;i;:: '
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 '.:':r~~~~1a , disponibile come singolo integrato: in passato, special mente per Ie macchine di una :~'..t~,. , certa potenza, era-prevista un'opzione (una 0 pili piastre elettroniche), che estendeva ;'~(~!.lr1~~ : il repertorio di istruzioni e il tipo eli dati trattati da parte della CPU. c\~~~( Con il copro~essore 8087, indica~o anche genericament~ co~e NPX (Nume:ical ·-;.::·1;W~: ; Processor eXtens10n) 0 NDP (Numencal Data Processor), 51 agglUngono al1'arch1tet- <':~i;;.~~~ tura della CPU 8 registri in virgola mobile, 5 tipi di dati addizionali e piu di 70 "~;~'~'1t~:' istruzieni, tutte progettate per trattare numeri in virgola mobile. n coprocessorepuo .~,~J)~~~. essere impiegato direttamente sia con 8086 che con 8088 f come pure con 80186 e 80188. -;,~!~~tW«, Nel seguito l'ln~el ha sviluppato i coprocessori 80287 e 80387, in riferimento aile CPU >:~l~~~ 80286 e 80386. Di questi coprocessori non si parla in questa testo , anche perche, a '';':};;i~V2 parte Ie inevitabili differenze dovute soprattutto ai differenti bus, dal punta di vista :t~t?~~: concettuale nOD c'e molto da aggiungere. A partire dal 486 l'unita in virgola mobile e ,-~.~:\[l!;,fr integrata su t.utt~ Ie .CPU Inte~ ~ quin?i i ~oprocessori hanno perso rile~nza pr~tica, ':~
e
·l:.7t",,">,!t,r·
..
"0~~
'l~ "~"~< ~'r ,,~, " " , "
B.6.1 Modello di programmazione esteso
:'I~I\Y1;t.,,$J
. ,r.,f.~mi' ;_".~;~~ .'i.:..!.~-;O, .."t"
~~)~~;r;'!,-}!
"~'>'~'¥~': ,.~.,p......-
Can il coprocessore il modello di programmazione della CPU diventa quello di Figura .".
. ;-"~"'!i'C:-;' ,., r~""'" fl.• ~ ~,
B.19. Tutto avviene come se 1a CPU disponesse1 oUre ai propri registri, di ,altri 8 Jf&::&~');~: '-: ~..'" ~:'"it-l registri numerici di 80 bit e un certo numero di registri di appoggio. n puntatore alle "''"~''''' ,-:,/;~';'(i.' istruzioni (ISP) e il puntatore ai dati (DP) non fanno a rigore parte del modello di, ~,t"".f'':f' ".,cf"=:"~;;::·~';';.< ., 1: .(-' programmazione. n loro contenuto puo pero essere esaminato quando 5i verifica una. -:"'~:i;,)i.Ycondizione anomala di funzionamento, .'};')Y"~~/;~~ ~;~~~;:_.. Gli 8 registri numerici del coprocessore memorizzano il date esclusivamente in •..•.."J-" ··.~'(I-,~~·1 ",,~, ;I'.'JK forma reale, nel formato illustrato. Essi possono essere indirizzati in modo implicito "5'~~1:\;,': '·.:,~y:;;:., '-7~~,~t;2 " '"",~ ... ~,
. .~ '" b",,".'
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).
....,., ,..,~,-'
~.~·'.h·I· .. ',.1,,'., ,~. ~-,.. ..-,',.. -:('i" ".,., .. ,,....c.• ,•••
'.·r i 'lo.:l.,ft:' ",.~;"
. ~".,;i..":;
~~~. ~,: "':"-,-,;1;
.>c,.
~~ ::;1"""" ", "",2..·\""
"""""'e:F
',~.;;'~.",ii..., (
" ~'l~lUo>P'
, '~""~~.L.
.'
1d ,1.,_
",
",..!.,.
\-
•
:;;.:":' ",.,
,,:"'~' . ,.j' '\ .
. "'1
L'architettura 8086
,•
585
II-
,'j:;::. :
.~:,'-'
),': '." ,
··OperazlOoe Addizione' con segno Sottrazione con segno Moltiplicazione (precisione semplice) Molti]:>licazione (precisione doppia) Divisione (precisione doppia) Confronto Caricamento (precisione doppia) Memorizzazione (precisione doppia) Radice quadrata Tangente Elevaz.ione a potenza
.,' -
'," .
,~)
:~>.
::':'~i:.'
_~~-
,I,.
'''~:::'
":\"
,,~r
,,;;;-:,<.'
:--;T~'~
Jt/
;~~~~{;:. ;,ir\' ,:~~'~t:·
{ %~~.~. , ;~1'~
, }~K,.' :~,
· .:{\.... ,: '
~ ~,7l""', ..
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, s~Ua: superficie dello stack. La maggior parte delle istruzioni opera implicitamente sul registro in superficie alIo stack\ doe suI registro puntato da ST. Tuttavia possibile 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 sommare it contenuto del registro 6 con queUo del registro
e
e
J j:t~('"
..
' "~'N";'
, :I,,~r " ,,-
! :\, ~'\'
-: ) ,.; '~~., 0(·, _. J11t" .•. : '
~ ·.W~,
'"
.. ..• u
"
... .... .... • .." ...••
•
U.OM... I'l
a
: \;,~-t ':~(~
, ',;
'''I' '~,. '.'.
,
"~
<· .~ n," , '. -~' ';r,,('
"", •
" ~'~t:'""
2~ ~!j!.;,:r
,' '·, ',> ·_
,
". '0'"
".1'" . ~:'i •• ' '!~,.. ,~
..
'1"\'1.,..
.. '-\J""
•" ,•• '·~ '~' J\,. ,.11<..
r...;~ ... :;,.'\l~' . , ;·,
_.
•
...::1
.. .•
I
" I--'~I
t·o.,.
.. ' •. '4' _~lll'\:' .', ..Qofl". '
F,~, (t,
\-
l-
1-
I-
I.
;..,. . . . . ftJ.I'>
. . . . . . . _ . . b ......
1'
""'""'•• 0""""""
;
. '," ~. '" "" '.. ,.
1-
j. •
·lf~r.'
:- 'c.'ll~ir·. ,' '·iG~:':·'
_.
"
~r ;~~"~"' :_.. thw.;' ,.,,.. .
1
\-
program-mi di emutazione.
::,~t~i' ::{f>' rl~~~I." ~ :.t~t: i:f..~~',:,: ( ~[it !I,;l~"
'~'"
1-
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 effe~tua.te attraverso
:~:'Q~-_', ::~f;'~:' :~i"'::::
l.,.
8087 141'5 18 1'5 19 1'5 271'5 391'5 9 /,S 101'5 21 /" 361'5 90 /,S 100 1'5
80g6 1,6 msec 1f6 msec 1,6 msec 2) msec 3,2 mSe<: 1,3 msec 1,7 msec 1,2 msec 19.6 msec 13,0 msec 17,1 msec
-
Figura B.19 Madella di programmazione in presenza del coprocessore numerico.
I..
-_.
I
> ,;"~-,"'i:1' "!;,,'l "1 '.."-,-,_., :.:",,". 'i ,.......~,:,.!.~ " ,···..'·····1
586
Appendice B
V:);:r:~ : · -' _ ~' .'·.;~S~;;,-l: ,. >,
.. '"
".' ';':;:!i.~' ... /; ,::;.,~!".., . ':':I,G~:;' :, ··.·~·iii~!' -:
..' __< ... ~,,~ · ,-'. ",,"" "
-' _.
-.
--..
·- ,-'- ,:.':" 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 - e implicito. . ':;::gt; : n madelia di programmazione prevede una parola di stato e una parola di control- '/'/ :;';.:::C' 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 ';: :.•, .,:iT~; ":-' i: ." . ,';;,"~;: : cia generare un'interruzione in caso di anomalie di funzionamento. ~. r' ':'}';' n puntatore alle istruzioni (ISP) e il puntatore agli operandi (OP) svolgono un ::..' 'r':~:::;~l' ;.,;. ".'-."l:.J, ;'~' -,':~~:': ' Tuolo fondamentale nel funzionamenta del dispositivQ e vengono discussi pili avanti. -'~
\
~ ·';;~.~l'
,.~~'."
I I
,'~::'~i:,j}iJ~;
•. ""<.-:::';';(
B.6.2 Tipi di dati
•
-...
I
...
I .. -- I ---
-
\
I
_.
B.6.3 Collegamento con la CPU 8086/8088
·,~._ ~>~~~~}.t ."1.....,. "",0.:'. · .:,,'':;"",' i"~'",
~,-,-;_.
c .. ,,'• .•", ',.,,'.:"
I
I
.. ,·i···'.. .... ,. ~
· ,.~:ic:""
.' ";:f:(-.
.,, ,.,,,,,.<~:: ... ,,; ', ...
".- ..•.,..•.,_. :);,~.;
·',···<*··"c
·..·$··";-:t~(-: '
..
':~~';'
..
"~"':,"":;l:;i:
.- .',' '.
,:>,.-?
•'."'."' ' _.• .... \.
'>"
\
_. I
-.
""':-:-:;r>
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 e a 16 a a 8 bit. lnfatti la prima istruzione che Ie due CPU eseguono all'atto del
-.
-
A titolo di informazione si illustrano i formati dei dati trattati da.l coprocessore '~/ . ~"~~',~;, .-'."'" matematico. . ., ·~}',I All'i~terno dell'808! i dati so~o sempre rappresentati i~ vir.gola mobile su 80 ~it, <':.::'~;~~:~.~; can 64 bIt per la mantIssa, 15 blt per l'esponente e un' bit dl segna. Questa tlpa ":,.~'?;Y~ d~' data (chiamata t~mparanea re~le o. a doppia precisione estesa) puo rappresentare . "(:':',i~~;i',~~ dlrettamente numen ap~ar:tenentl all'l.lltervall? 1,36 * 1~-493~ + 1,19 * 10 4932 (1,65 ,'!'f;&:~jr * 10 4951 --;.. 1,19 * 1049 2 ~cludendo 1 numen denormahzzatl). n formato perrne~te )i.:f.i,}:;: una precisione ill circa 19 posti decimali. La rappresentazione interna e al di sopra ,/'::;:~. X~f~j~: dello standard IEEE (64 bit); a ogni modo il dispositivo e compatibile con 10 questa . . "'.";~f;.i:,;.', standard l8 . ... " ....-..!,. La FiguraB.20 mostra i sette tipi di dati trattati dall'8087 nel loro formato ,·,:.'-~:,;l5~f~: esterno. Poiche internamente 1'8087 mantiene tutti i numeri nel formata temporaneo '7:';~;;~~~,:~t a virgola mobile a 32 a 64 bit, i numeri a 18 cifre BCD in formato temporaneo reale "':~~;:l~~i!,~:'~ e viceversa. U8087 ha anche la capacita. di controllare in ogni ca.lcolo gli errori di . :~:¥~~~~: arrotondamento , eli underflow e di overflow. : ' ',,/,:~~;~~ '. ,.'· .";'!;":'-" "',.: ",
'
...
_.
.":<~:~':f.f~:~ '::~}~§>f> "'."--j"';,,
\
_.
-
18 11 formato IEEE a precisione singola fornisee una precisione di circa 6..;-.7 posti decimali e pub ra~resentare mimeri appanenenti all'intervallo 1,17 .. 10- 38 --;-- 1,40 .. 1038 (1,40 .. 10- 45 +- 1,40 ~
.'\,i. .... ;':',';;,;,:'::.
:;, ".;'" '.
. ,,; .' .•. ;..:-....;~
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 .. 10308 ).
·
; .:.
'.,'
""p '. "';i;~
"'~~
,:.,"(~~~i ,
, • '~.';[':;•• • "'1 >. ., ;,~".
..
"'-
>ii' ·'" 1 ..\
n·
i"~f:'.
"',.!". . 1 ..,'
':l:,:. ":1,"::' ""
L'architettura 8086
587
-,
W'l'~
.!:II',..,
,;':!Nl
::t;~ ' ·,:lol·;
,..,.. .,.. I
-'~O:~'
~,.l:;;'
·"t·, ,
t. r...
':;?,,~.;,
~ '
:;,r,~:-::
rORlUTO
"n
""'~
lHTnlO rj,lI.Ol.l.
;~K',.;,"
"
.• .
':;;i'~'
~ilJ:~"
"~~i'
D;tuO
cono
.~';,j':
:. M) '.. 'fil")+
'~{
...., """"
''i!i. •..-
'~\r
~~'~": ':~o:""
~:~:~>"
:1!lj!:,f.:. '.' "'~
"
."
""'" "" SlNGO'" PRBClflIOH!
~tf".
J!C. ~:'~~I; ~: ~~:::.
olou (bit)
"
"
"
•
"
x ....
"
X
"
&4 {$OJ
. ,I
Dllr:
COWPU3l&lfTO .. Dill:
toNl'L.EMDlTO
j,
DUE
017 - 00
""""" •
~
"
,
j,
•
24 (32)
{~)
COlll'U:llP;H'Tl:l
•
Ie O\Ql
../--,,3&
PRlClSIOIiI IlSTIIU
•
" ,
~
~/--
ODPf'1.I. PJU!ClSlOHI
, • , • , • , • , • , • , • , • , • , •
"
./- n
"".;
;:~'~~'
•
l>lmq,-
'"
>W!=
•
~
....
"
"
"""""
•
r\ ~~~',:' Figura B.20 Formato esterno dei tipi di dati tratta.ti dal coprocessore numerico 8087.
:~" ~/'
1~~'r£
> '~~'.
reset e alnndirizzo FFFFO. Essendo l'istruzione a indirizzo pari, 1'8086 legge 16 bit,. . "I" asserendo BHE, mentre per 1'8088, che legge sempre 8 bit, il bit BHE/S7 non ha :;:j, ,'~.:< significato e il corrispondente piedino (S80) e sempre alto. In base aUa condizione :~!; IF· rilevata al reset, la logica del coprocessore si autoconfigura, in modo da pater lavorare t ~F:; su un bus a 16 a a 8 bitj inoltre essa si costruisce la.coda interna in modo da replicare t .i~~~:.,; . quella della corrispondente CPU (6 byte nel caso di 8086, 4 byte nel caso di 8088).
, "'d:~"
~ 'r~L.;'
; .i,\·,
:~ ;~:: ~ ':
,""i
'm-~~
"'" ' Ki'f?!.~;': t j~.
B.6.4 Coordinamento con la CPU: aspetti generali
. ,•• !!J.'l'.,
.
<
'\-
, ~, ,~"'" , ,~:J;"
Prima di addentrarci nel funzionamento del coprocessore 8087, callviene fare qualche I'· .....~'\(.,", considerazione di carattere generale sui caprocessori. Per definizione) un coprocessore e un dispositivo che non preleva Ie istruzioni dalla memoria, rna che osserva il fiusso "";J..'" -. ,)-o.:~ . delle istruzioni prelevate dalla CPU e interviene quando l'istruzione appartiene al : ,im,,'..!.lij"" , . proprio repertorio. Si faccia riferimento alia schema di FjguraB.23 e si facciano .~' l ~i ~ . I'" ' . c '''~' queste ipotesi semplificative: : :;;;~*f . . . . ..'\"::'
" '·l'l'i .,. "
,'..
)
:
..
',,
'i/;"~". ~ "I
~I·,
't"·~·
.' "If.""
:ii*"
.. ~:!1i'i' . .'; :'IJh;..
.! ;,
b) il repertorio di istruzioni di NPX
"".'
c) tutte le istruzioni sana della stessa misura (per esempio una parola) e richiedano 10 stesso tempo di esecuzione;
.' • I'" ~, i ..::
~'
~,
i. f ~/,,'
•,1 ••
,,~ -"'
e disgiunto da quello di CPU;
.1\,-:
..~,; "iif'" , ~~ .'
'a) solo 1a CPU preleva istruzioni: dalle informazioni di stata disponibili suI bus il coprocessore riconosce i cieli fetch ed e in grado di catturare all'occarrenza i codici di istruzione quando questi sono presenti sul bus dati;
!
.' ::~1l
;.;.!~:;.
"':'~'''§r"
,'\~k(~r !1 """;::;'i'f,
588
--
"'rll'<'~"')
- ,'.~;:;...;~;t
.
Appendice B
,~
.. ,
~D:t~~,: -';,:
----"-'--'-'----'-'------------------------------- ': . . \)t1_~, J~! .<"~·~!~W~; :ig , ". ""'::\::~"'~if :', '" , ~" C...H.) lDl4
(.113) ••Dla (J.l2) ADl2
(All) Allll (J.lO) All\O (.19) (.. ~)
.109 AO~ ~,
~. ~,
~.
'" '" '" ." "'
.'
,~ ,~
."
, ,• ,,
,• " ""
"" "
" "
""
"
..
"
AI6
" "
AI7 I
34
J.l~
I 35 J.l9 / 36
"" " 8087
I sa
SHf I~ ~ I erc
"al = RQ I
"" ""
1:10-
... '., ," .'/\.j. ~'t ::\2:~{ :'{, -
"' "."'-
" " "" '" '" "" ,=. '"" "
..
,'_
_i.~{j? :~
: :':' ,.:>,~-~ "
,.
:.>'~ ';~;\". ",-",
"; ;,'\~j ,.,. ';;
R~srr
_:,.:. ';I:/.,'; V
, '_,; ""J'."" ,.-, "-.•., ••.•. ! ,- ..'
Figura B.2! L'integrato 8087. I piedini relativ~ a indirizzi/dati, stata, reset, ready, clock, ',"jA0~;ii;, i~
m~ e alimentazione hanna 1a stessa disposizione di quella dell'8086/8088. I piedini BUSY <';~;~s1:~ :~ e RQ/GT intervengono nel coordinamento con la CPU. II piedino INT e la richiesta di :'\"i'1:\'~. ::i interruzione :VY\'~"ir'' • ," '''. 'C, •.
.,,
• • • C',
d) la CPU, diversamente dal caso 8086/8088, non ha at suo interne alcuna coda .:,:y~~,.@,;;;: i:i istruzioni. Cia equivaie a dire che se e in corso una fase di fetch, l'istruzione '::,;,,;;\1:~ d precedente e stata completamente eseguita; _-:'::CiS,,"::' "j e) NPX non acquisisce mai controllo del buS
19
," :;,'::8!~,:::J:,~ " ::';~B:t;j:;- :,:
.
Can Ie precedenti assunzioni il sistema di FiguraB.23 ha un funzionamento molto -:,:':;.~~,:t?:ill::i:. .; semplice: la CPU comanda il bus, effettua i1 fetch ed esegue norrnalrnente Ie istruzioni, ·,'!;,:~l:j\;),~' :,; rna quando viene prelevata un'istruzione del repertorio NPX, Ia logica di CPU las<;ia Xj~~:i-~l:,:'-ift1 a N,PX il ~ompito di eseguirla. Tra CPU e coprocessore non c'e alcun parallelis~o,::};~_~;;1if ,:nell esecuzlOne. . _. ---"j~,~',7;;' '~! Nella pratica Ie cose sono pili complicate, per motivi di earattere generale e per -:/'??1ht?~~} motivi contingenti legati alIa particolare arehitettura 8 0 8 6 : , : : . ;;~1::{0~i~: f! "~"-"
".
I
' . " '... .' -- "'.
C
b') non tutti i codici di operazione di NPX sono distinti da quelli di CPU. Cia imporie./"'::0_~;~iji! uno specifieo codice che inmvidui quello che segue eome eodice di NPX 20 . n eodice ' 2;,~:;~~" :~ in questione ha mnemonico ESC. Pili in generale, ESC serve a indicare che quel .,<:;\,}i-','.~; "i ,.,' .'.•.. ', che segue non deve essere trattato dalla CPU, consentendo Feventuale impiego :::Ki;:,/::: '; di un coprocessore diverso da 8087; ;"~~:ll;;;;Y )g~ /,f\:,i?f;:",: ;.M c') Ie istruzioni hanno diversa durata, dunque oecorre un meeeanismo di sincrD-' :>:"~~~Nt':!\ nizzazione tra CPU e NPX. Essenzialmente il meccanismo consiste nell'impiego' .: (;b;'.~:! ~~ ...
-
,'.
~-..
," ~.',',,,'" .', "1
: :'\::';';~':*
, '.,!,,;,~,:~,,-
r;~
~'; '.':.\;< . j. (~.:''':,:-~:-: ',
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 '"j';c!';.' ;". .j"-'" .: i risultati in memoria, NPX deve entrare in controllo del bus. In ogni caso, ai fini del nostro r.agio,'.,,;/;.~,;\, : '. :" ". 'f; 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 aritmetico era decodificato a parte rispetto al codice di istruzione e solo quando quest'ultimo inclicava :,,.,!J,> I la presenza di un'istruzione aritmetica. Nel caso dell'architettura Intel la faccenda e complicata,dai -:;,~.ff,0;;'l moltepJici formati delle istruzioni e si richiede un campo di 6 bit per il codice di escape. .:,,~,;;~g:§2.: ;;
:}~\~l'N :~ '.
d · .. •
':;,~~'~:~~' ... ,-,~"":"'. ": ,,'~~i"i;:;;"
''-
J£
',l"'f
-\ -
1!.i~">',.-
~,-_.,:
,~..;"
..
:~i~;"··
;1~"
!;::.":.
L'architettura 8086
g;,.,;:"
-'\f~\;':
1·
rur-
=
'"'"
"'/" ~
~.
"tNrMTOll
'o-~
~=
~.
,~i1
eTa
=
~t~
,
A1~-'l9
-llQ I
,,=
j-
.&llO-.w15
~
t:~'
-
I ~oae ~"
!10M
~~~~~
".'
589
..
~
r-
,~
-'"
,
,
01 COlOI. .U-
~
01 lalott • In.ue.t.....
4el b ...
,~
01 Iota. <101 ."" <11 ..........
,.,'
;...~'-
ll~~n
Vi,;' ,.1-" ~;{i":-~~\',
'"
'."' ' .-
>on
"
-RQ I OT-
ifj~,~.::,
,~
'''''
,, ,"
:'
•
j~~~{;
~ki~;,;:
:~:!,:~:
;1t!~::... ;t~'i;'"
1''::'
-!f~):i':
!'L':;:}~,,:
-
.~
~O!7
=
"~
).
,
"'"
,,~~
~
'O-.lJQ
-
-. -m
CPU
~~.:',:
;~!\,
,'f'
g~i;:::'
Figura B.23 Madella semplificato per 10 studio del funzionamento eli un coprocessore. CPU e coprocessore Sono sullo stesso bus. La prima e responsabile del flusso di informazioni suI bus; il secondo e in grado di prelevare Ie informazioni di suo interesse che passano.
\f~{: ~~2~:"
dell'istruzione WAIT, che determina uno stato di attesa della CPU in funzione delle stato della linea TEST collegata al piedino BUSY del coproeessore;
"1'.,,.
~~-;,
."
:,
f;i, ..
~r~!r Ii,';,'
\
},
-
).
1-
M:'i';·
;u!:!'" .!j ,~
I·
NPX
I~·'''i'
C':".'-
)-
~-~
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 e I'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.
!.ij~?:
~~7"::. iE;~;;
l-
~.
iffi}.::
df;tT
(lSO---{lSI
( -
/
d ) la CPU ha una coda, e dunque 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
I.
-
).
J.
essere a carica della CPU, per cui NPX deve entrare in cantralla del bus, Cia
--''
ll~::;:
;!iV'
£i\',,::
f~-"" l,a,;".
riehiede un meceanismo di arbitraggio. Nel easo specifieo tramite il protocollo
RQ/GT,
I·
I
, _Il';' J' ~! .~.~.:gi,~ '. - ,.~\I~ -
~ _.. ",~~~.".. ,.-;::,~,"'l' . " . ,II, • ",...ail[' 1 ,,". ,...... .•;
Appendice B
590
:
,:!.:\,;~'"
. ~,:,1
~
}~,.~:: ",',' ~ .. ~"
~
;
'I, ..lI't.[· "
,
\
11 codice ESC Uistruzione ESC e codificata sui pnml 5 bit dell'istruzione come :"":~'~-:'.';~iC)' . '::!;~":'~.\~ \ "11011" (FiguraB.24). " '11-\, V '
',:, ':-,)d;~
"
:... '" iK~' " , ... ,t _',
-
I I \
...
• •
"
I I I
.,
.. \
.. ..
I
·.
..
..
0'..',_;::: r '-.-,J1"..~ r...,.l, ~
10,_R/" I I
oc..n ...... nl.<>
(ll
I>i~)
.'
I
;.
1
1
0
1
1
_
I
00/10
_
RIM
I I
.go.U.... nto (LSB)
I
'.
"
.~,.
'
'" ',J.-;!':;:
-:' ,::OJ\'''- " ". . . '"
I
.....
.;) ~
I
l~o.t&Ui.rM
I
(WS8)
Figur~ B.~4
',A.
,<·,i'r.:~:l k
..'i,' ,,':'":",.,., ):;·;·~~t~ .o .>
, .••• ,~
Formato ~elle is~ru.z.ioni che iniziano can !l co~ce di ESCAPE. .I1 campo ,·,,':)t;,~;;~~~ ' R:/M ldentifica uno d~gli 8. rcgtStrt del coprocessore. L'lS.truza~ne. puo essere ~l 3~ a 24 .:;:;:,~X~~ j bit, a. secanda. della dimenslone della scostamento, per Ie IstruzlOm de fanno rtfenmento,..':t?/;j~d ' alla memori~; op~ure ~6. bit ~er queUe. de oper~o sol~ sui registri del coprocessore. Per .,:",~~i~~~{ tao CPU, se il codice di lStrUZlone contlene ESC, I'lstruzlOne non ha effetto - e come se si .'~:I-,"';~)~r;;: trattasse dell'istruzione di NOP - salvo iJ fatto che, per le istruzioni che fanno riferimento --.\~~;',~,~. ~Ia ~e~oria, la .CPU effe~ua. una lettura aJl'~dirizzo sp~cificato nell'istruzione stessa. per:~~J};{fj 1 mottvl illustratl nel segwto , questa lettura Vlene denommata dummy read. '. .",.,r.",'~~:f' :.::,;",;.):q.• .' ;.ii::
.' ::~::~'~1:!).~~l;
"~',. ,,1·.,+;,.11(.
In FiguraB.25 vieno. mostrato ilprincipio generalesu cui si
~asa l'interaziOl!~'";!,~~i:i£J: ""':;;"-:~~i"i
(alcum llllportantl aspettl delJ!mterazlOoe vengono descnttl poco plU avantl).
"C3lW'
• Se la ~PU riconosce .il. c?dice ESC. non esegue. l'istru~one ed entra. in .fuDzion~-;'~%:~i~ ~~Xj il coprocessore lIllZla I'esecuzlOoe e ~sensce la linea BUSY, a mdlcare ch~;;:~~,*~. e Impegnato. :,!)t;~'~41 ,
.:
.
'~.,I='I"~~tJ.'T.-!'; '''\, 'i'}}jlG:'l,h.
• !V1ent~e ~X sta ~seguendo l'istruzione , CPU puo procedere nell'esec~z.io~edelle,:if{:~;/~J;;\:#, lStr:wOru. ~uccesslve, purche queste non ap~artengano al repertorlo dl NPX,,'\f~f.~~~H altnmentl il coprocessore avrebbe un malfunzlonamento. , ,.. ,,.:~}~~t·:Y~:~l~ ,
',', '1:;f~ii:~'Jt.
• Prima di effettuare un'altra operazione in virgola mobile, la CPU deve sincerars·i:;,qi;~·i'~ we N~X si~ libero. A tal fine, nel repertorio 8086 e sta~a predis~osta ~'~str~zi~ne:{~;it.~!' WAIT, il cw effetto e far attendere la CPU per tutto il t~mpo in CUI 11 pledmo~t·d.~~if TEST e disasserito (cioe alto). Quando, a operazione conclusa, la logica di NPx~.;r~1.4f;'~~~ disass~isce ~USY, TEST passa allo stato basso e la CPU puo prelevare un~""iP~1~~~~ ;~f;!:;1~~~~{ nuova lStruzlone NPX.
.. I,~•. l~
E facile convincersi che 10 schema precedente e alquanto inefficiente. Nella prati~, ',;"'('j~~~~#" ca conviene che l'istruzione WAIT preced~ sempre Pistruzione per il coprocessore. In tal ':·<;lJ.}~X
I
..
-
"0" _
,
·. ..
1,,0"_ \,,_R/"I 1
_
. ',: 'I'; .' . '. \.,1. . 'i .~,.!';}
MOO
1
modo ~ escl~a o~ possibili~a. di .e:rore, .inoltre e possibile,stabilire una con.venzione .(;~~:~~~ per CUI ogru codice mnemoruco di lstruzlOne per NPX puo essere automatlcamente : '~E'~:;'l tradotto dall'assemblatore dal compilatore nell'istruzione WAIT e nell'effettiva istru- '>:l~t,t~; zione per il coprocessore. Per esempio l'istruziooe FADD vieoe traclotta nella sequenza: ..i~;"t~'·~J, WAIT i (ESC, FADD) j dove con (ESC, FADD) si intende l'effettiva istruzione comprensi-'.I.;~~~:i ~ dell'ESCAPE. Nella pratica, dunque, la sincronizzazione avviene secondo 10 schema ,'~~~~~~i' di FiguraB.26. . '·'I':',;},~~#i . ""W-,,;,,'" Se dovesse accadere alia CPU di eseguire il fetch di un'istruzione di NPX mentre'."",J::i:~·~:;·~:
0
questa
I
e impegnato,
si avrebbe un malfunzionamento. Esso viene segnalato nella:. ii'I~C,\iQ~
".~,.;i~:~~:~
.'~:";r.l'i:;{ •.
..~:
'l"~ ··e~"i't.
~1
!': 'J'
-'fr':
~~'
L'architettura 8086
.~:,.
• :L
", 11'·-;:ro-'·
591
...;:- ,.
~,
~~;
ii:'.;"
"',,:.'
'tl~'~
\:'t
' ,I'
NPX
CPU
>.
"Wake up ---_. __. f-
.'
"]j';,':'
,," ..... _.,,'"
ESC
. ':':l' , ,
"r,' 'Y' r..-' .
cI Monitorag. eu, ~ESC
~" ,._._._
....",
Altre eventulI.li Istru%lonl
,;,
.~·i'·
',,~ ...
BUSY: .. l; Esecuzione istruzione
"1'"
'
k'~'::
.
,""
.'::.f; o"'=.,
WAIT
'fJ::";';' j)~~;:
.;~~".
-
BUSY: "'0
....I TEST
.
'~l:"':"
·Wake up'
....
Figura 8.25 Modello preliminare di interazloue fra CPU e 8087.
,.Q,'~~'
·1~:.
:~;;":.
~~
~~: .•
parola di state e pub essere posta all'attenzione della CPU attraverso la richiesta di interruzione. .
A~./"
'(~;L"
::;~\
.""
::i~~."" .
,~,
I~:"
.~~:: 1 ~~l.,
,",
1101115
'~"".
,.,
C., n l.:r" ll., bu.
ausY,- 0 NO BUSY:_
S>
;}Il~,,:
:I~~"
,~) JO(-
H~~:' ~~;<
,jill/!:•.
~I~
.
Esecuu.,ne ist
•
'"c Istrud"n. Sue"•••lv.
,
I
BUSY:_
o
.1
;~f
~t~. :~~~:. ~~: . { !~t~\'
Figura 8.26 Effettiva tecnica di interazione fra CPU e 8087.
~,~~
1~.
At
X ~ it~;.
l :v'~:'
; Jlf:~'.
, >'f'~'\
i~~~~
' W;1
i J'JNJ' ,~Jr:.i:'" :;~t
~ ~":;;,:
~ . .;~..'
{ '.
1
.;'
',/
,.: j
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. • 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
,
·.'"
"I
'. '. ,':t.
~","~ ."..
.;
h-
.:,Wir:.rr,.;,.;;,l
':
.~,! :'<'It:' ., !(lo:"~"lii :
'~l; '-
.':.
592
."
,·jl~~'
;,'.,~I" ~"l>t!~i .
Appendice B
.. ,"'l'!.;;":· :: '\,.,_·.... v
· ";':f.'~,"):' ',
"r·..~~·
''':~i~~;l;. ..• ;;."..~
-;i-
,;..1,",
",.,.,."''" ' .• ,..("," _ i"'l"'" :.: J,~,:: \ ,"~"r+_ " -.. , .
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.
,,~;<.,.,
......
. ' • .r. -
_.' ,~.,",'.
• Istruzioni NPX che caricano un data dalla memoria.
·,
'. " \:1'.1. , .~.!;. -1"
> ,):i:;f~·l " ,",:,c::,;::'
Un esempio di istruzione di qMesto genere e FADD Numero, dove NUJIlero e il nome di una variabile. n suo effetto consiste nel sommare all'elemento di testa dello stack il valore della variabile, depositando il risultatojsullo stack. n formato puo· essere su 3 0 4 byte (FiguraB.24). Si ha questa sequenza:
..
-'~. :.•..'t-[~.:I·1i ;~.";;, c~
, ,.. ,>, _'1i~:t '., ,» f/. ... Yo , . i,.:"fr'.!f; J
"1 .. ~'\ " . ., '-"'llo;ii' ';";~"i'''''ii . .t'li¥:'f};
.\1. . ..· ' .•; :\\ ,"'Cll~ ,~, ~
1. La CPU esegue il fetch dell'istruzione; NPX preleva il codice dal bus dati".
.i1:~~f.i.
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. • 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:
_".,~~,~_'f"!;1 :~:;.t~;t;·~·\~·
.•.',! ·t'~·~
-""""~" ".,. ,~U, ,
:i ':·I.!tl,~!.; ,.1.~!~'lfLIJ~· . ,' ~""J" , ,. ,....·rf"··<:' "'S".',"!". -..' .. , ,~.". ...... ..': .:..";'f.i"
· .. ':'.,.. ~',' • '"
'".., ,,> .i'.' ',:"I,. \."
.><
:~.·,~t
, •.)~',('Il ~.,
,
:~':J'~~'~{ ,~,~..
f
~..",.
".~,9tl~"Y; ',':,f"Y ,," .... ;JC' ~,' ...,.....~-,,'.."~',,
·
.,', , ,
f;
....
':':t~'
:'t~~~; .t.I,.J.;,'l,
·,; :."\.~", ,.~
, ,,," '.' ~ , 'I" ".W '~.'f ;,,y;;.i~'••.• ... 4'.'<." . "(1." '!",. ~
.•.~, I;J:~~ ,"',; .._, ~",', -i"'""~\'~"1~" ••.. '. ,,>. ·
","
,
.. ' ')~' ,.\Y~r11i~ :"(~.'~~~"">o)
" .•". ~~'),1" ,.
".", .•'
~ ::!,i.'"{,"',J;. ~;. ._~~lll·"I· ", """'~rf,', ,;.
"i.'~';1;"';; ~"'IY.,,%~,
..
..:
1. come al punto 1 precedentej
'j'
.--"" ""',<<'" ~~ .. 2. come al punta 2 precedente, rna questa volta il coprocessore acquisisce solo -"'''' ',::::~I/fr.~.~ ,."h~1!~, ": l'indirizzo del dato, non la parte di dato suI bus che e irrilevante22 ; ",-,!.~,J\!~1J.,~ ..'
3. NPX scrive il datq in memoria, guadagnando l'accesso necessario, tramite il protocollo RQ/GT.
at bus quante volte e
Il protocollo Request/Grant n protocollo Request/Grant impiega una sola linea sia per la richiesta che per la r~osta. n protocollo su una linea RQ/GT e il 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).
!<,[.~""1;l"'
.::~';lJ.l.1i$'
., <-TJE~~ i~')il '.l,'t!~
'.~:':" kP;
;. ._" .'.
':
· ~01~" r" 'r
'''''·:,I,''"'''[llil, •' ",-.' 'fit ,•.,:-:.,..,'!t'; <
./J.~ ".
A·~j(~'1 ""'i'· "'~'
.. "
:' ,~~'",'f{,~
{'." if".\I:o'
, .."f',~."It',!,"
....
".'I'.'~"~fS;'V' , -",'
•
f';
"·.:It'~" ;~ ,.,., ... ,,, rJ;
~. .'I-,,"~.'l.·;t; .~'iIl1;~ " f·r.l,i .
."'t,-'l'i:' ...,,'
, __ ,.",,,,
"~e~'~~. ,
.
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.
~···i·~!i:t
, \)~~. ,' ,:,",,' .;~~
",.~,.,;." .l"-,,
....',f",,,,. '..,.!.I. .1,% II! , -: 1.;,"
'!
,
• "~ ••.
•,,1,"1"" c-~' "" • ,.
.:?\~,,~ ~~'
- Jjj.!'
•
)
I". :- '
-~··!
;0.' .'
,,,..~: :"i ..
:".:~;.:l
-;.~.;i'
"'-
.;)..
L'architettura 8086
"l·
::,'.:
593
,:-{ .'-,~'.~
1
;;>f> -'"' .~
":.'.
'j',
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 disponibile. Col consenso deUa CPU il coprocessore entra in controllo del bus.
_'I..•".
\ /. . ."
_;<' :., ..
','
I"·' '
...
e
.,.:;
>,
";'.... ' '-r .' •
"
~~~'.'--;; c"" .', •.
~ . • . ;,
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.
''1'' .
Le temporizzazioni sono quelle di figura B.27. Nell'Appendice A viene presentato uu progetto eli rete riguardante il protocollo RQ/GT.
» :::' ,.,,(.,-
J:-~.~~'
.,' .",.-'!'
..
,'", ' ."-' -_;;.~:o..:' ~}J;; ,
:p;;/,.
I])-
._j~;'"
-:' <,'~ ..
... . 'i:f~ 1~>;~(I; ,'"!.,,. . ~i'01"·· ~>i:S
I-
"....,.,.""",
"'" f)~.'~': , ., , "'-#,Ii" i7."y...
,
RQ/GT
.•;.:Ar.:.\" ";.~.,',,
:'~~',)j"'" '\!;: ,Ir
NPX richiede
; ,','1*.,,', : ".. ,.
II bus
'" ",<"~' ".".
Le. CPU acconsente
NPX rilascia it bus
I ..
Figura 8.27 U protocoUo Request/Grant.
,,,,,.' ~.,.•.. ':'l.l"""
..
\-
; :,~q~i' k "','
. ~I .
,"'1:" .'. '.~' /}' .•• : . ~" ". " . Co.~
;I,.......t'i
~
,.""" .. :1'%1[i·' ' ~"'\'
'I;"""'"
'
~' "~'~~ I\> ,~.,'
);;
"
'I"
'I
•
. ',~. "" ·. ,,",;,>"" ,,~.:~" ;',,.:;'fWl""~' >.,.
,';' ~,\ ~;~~"...
.,' .• ... ,'"
-, ~.t:"
}. .,... t,:i ~.'·1 ' ..
'~:.
,':'
' 0;'· ~>.
"'(
~~i ~'~ ;~,,1 •...
">:~~~Ii' ' •
",.'II1:i:";'' -~,..,I
r"'··
.~t,;- ".~,~'~''''' '~" •.', '·1:'
18' ~, '" ". , .
"1' " !'.,)':"
~ ,~, :'y 'l' tl !, "' - ,~.,." ",-', ;. ~l., ~.;'" 'iii!i'~"'H~' ' ,
;· I'!l··~··" ~J ~~:-:' .\. , ,.,,,
'~ ,.~~~, .'. . .
,_
J"•
.:t· i.:," ,1K;:' .'
,'t ~~
B.6.6 Emulazione del coprocessore 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 m~morizzar~ al coprocessore la sua parola di stato in CW e la. esamina, in modo da decidere se il coprocessore e 0 no presente.
. ~
,.'..... ... .
ESC
28,8X
"lifl'"
XOR
AX, AX
jequivale a FNINlt (inizializzazione se 1'8087 ;mentre NFl 9i inizializza
< .... ' ", ~ ,
MOV ESC
ell ,AX
jviene azzerata 1a variabile cv.
is,ell
iFNSTCW (memorizzaz. parela di state) se 1'8087
",~
!!o'
I""'
-,
~ . '.">'" ',
..
!, ~ ..• ,:It .,~ ..
~~;'!f
•
&';;
.,'.'
oi. i).
-
e presente). e
presente.
11[ ,-
I-
[ -
!-
· """j' ."; ....,.J. 1"'1 1":.1' , 'if
•
I
594
Appendice B
'~;~~:~1 ~.~ .. " ,' ;
.~-
I
-"'l"
''';4./
"-
•
:r~:~l!' ~. :~:Q~ ~j ); .~. ~':tj, '." ",~
,."
"'~
•
•
OR AJ.. cw JZ no 8087
·.
• •
...
-
"
..
I I
I I
Purtroppo la configurazione dei prograrnmi e cosa 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 e in grade d.i catturare il cantralla nel! casa in cui venga tentata l'esecuzione eli una istruzione per NPX se questa e as~ente. n meccanismo 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 e presente il pacchetto di emulazione, 180 presenzajassenza del coprocessore non camporta alcuna differenza a livello di programma applicativo. Un compilatore puo infatti generare sempre 10 stesso codice: se il coprocessore e presente Ie istruzioni Dl:1meriche vengono eseguite; se non e presente , a ogni istruzione di NPX si genera un'interruzione che chia.ma in causa il pacchetto di emulazione.
I
..
.. \ .. -.
.. \
I
"
"I,l~,!, ~. t.:.:- " . ~
.
,",'
."~"
,. ~"'~:'l '~ "",1•••••' .
·.',"./'\.. "· ., '(~ " ....;":1';, . 'l'l' ',. \ "~'''';
,
',i.;;1~. ,'·,l.,'~
, '. ~ ., .. ,.'to!•.•
"f
\.;".: ;7'"
'f
"""j"
,".' "1,· '.1. .,,.
" ::"~'"i'
",:,:~Z~\:~ :' • ': .~J,." i '",;tV,,): . ''', . '.....j,. ..' '....'~!\: .. ·'·'~AA.
'. '.1":;'. , ~'~;;-i~ ~ ";''F:lf,~ I .... ~.\.:t.\
.
..• ,"~,> .';!'''I (', . '. . '~, , "·',,',;11, ~., ~ .·'1J.11'
.. ' ,\,~f;, ..; ~ "~:""-'" ,1 ".',',.;,,,.
'."':'J~"". :
" ~"·'·,'1 /.· ",'~ . ;~,. '' ',.
· "1"" \':}", i
.,.,.,~
:'-""'.::. \ h "",.i ".",,\ ...~.":,,,.. ' , • \' ·t" "~
',",
'; ",-.'.\ (
~,<:~.~, ~
;;~ '
' .l;..... " '''''', .
·"I..,\~'~I .
.-l,,:,,~l'
~ ·":'<: ~,';,·I. , ; "
~,
'::v.]'~:;'1
, 'I:~j :.,
:'1-"'1,'~' ,.",
..
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. n 286 e stato realizzato, in tecnologia HMOS da 2 micron, su ~n singolo chip da 68 piedini DIP, integrante circa 13.4000 transistori. .. n Dumero medio di cicli clock per istruzione CP 1 pub essere valutato pari a 6,7 [Hal93]. A 8 MHz il t~po 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 progr~i e dei dati cia parte dei processi stessi. n 286 puo operare in due modi: a) in modo reate;
'.'L,,,,,.,.,p. .:.1lI't"1] ..'~i
..",~ ••,..""j'
..'.... ,~'" ;, ";i~~.I, .. ! ,"" ,\.,'!
J. ,\bXl~):,:r: ,.... ,r "". p,'"
,.'
,":":Yr:~'
"'~" .l-".' r·;·: · -,·r·.
'·,c ..,,"".,;'
~"
'," ." "',.
..
" .• ,~,.'"
, '.'•';: ,....
,·~r,·'ii ",.. . ( ,'" <~ .
·, .:" ''',.', ..'.
., . .
'~"'
",
"
" I
~,
~·;:-"_1~'
'" ....'''''''
,":~ t',..·..'': " ., ·-- .."',,',,""''-'' '" ,I. -,,'.'k:'..,.: ";>';1Ip "" .., '.-"" , .' '.' • • "','"
.
·.....
• 'I- " --...
.""," , ',' ' •. '-"" •• .,~~; .:
.."\ ,-: .. :' ,'::: .~,
;""-i'" "-", • • ~"
,
b) in modo virtual. protetto.
I
'.."
'.' .".,~
(
":'" """~
~
"
..
.... ":
"~,,,';'
,~
B.7 II microprocessore 80286 (286)
\
-.
"',~,;,~tl
'._ ,.~,~'ft . ,:
".'" " :, ...~ /." ":~:;~" :'1
.'
-
'e'\:/ ,.. 'I:
.,' "
I -
~'
·\··:T'·".·,.·, .
,',
...
...
jew contiene 03FFH S8 1'8087.8 presente. ;salta se 1'8087 non Q presente.
:'
,.~... ,,?
,:,~~'1,;':
.' Jj;"'"l'-' .';. ,.elf
'll', •.!.
· :.,
"',
• '., /O
l]
. . ','2,"J ,."'t~:~,
;..' 1,
f
~:.'.,
Ua.rchitettura. 8086
l"
595
-,'"
.'
r.' ".,:' ,
! •., ,
'"
,'" '
:'~ . . ~, ..'
:.;,.,
:,"'.
"",,,.
1',.,': ,
.J'" '
.. ' '. ",". ..,." ..
~,~'\.'
(exception)" .
.... :.. ~ ,.·n· , "':.. ...., ..
,,' ,
\(,,'.
~1-.;" l..
:.: ..
•."
f'; "' ",
f""~<
'.~":
All'atto del reset la CPU e messa in modo reale. In questa modalita il 286 si comporta come un 8086: 180 memoria e arnpia 1 Mbyte ed e segmentata in segrnenti di 64kbyte. Gli indirizzi vengono generati secondo 10 schema di Figura B.8. Se l'indirizzamento esce in modo incontrollat,o da un segmento (wrap·arotind) , a differenza dell'8086 che non forruva alcuna indicazione, 180 logica del 286 genera un'eccezione
:(
i':.;....
.'f~ ','
.~ . ..r J, ..'
,...:.... IJt' ....
~~('.
In modo protetto24 180 CPU gestisce uno spazio di indirizzi virtuali ampio 1 Gbyte, mappabile in 16 Mbyte di memoria £isica. La memoria virtuale si basa sulla segmentazione. 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 e dedicata 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 e stato usato essenzialmente solo come un 8086 piu potente.
.~~. >~
.,••.•.
,
I'
~!...
1>1-'
B.7.l Modello di programmazione
~:.".,;'
"') ,1'-.'.
:'("~;'::,' 1, 'I', J•• : ,~.\l "
'", ' it:"," '" \'J}~'. I", ..
~}
,~,
~':'" (10'1\
~;.:,
''',''~''''
II modella di programmazione e quello 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.
.... ,>~
.•"~:.", <:.0-', '.,<-".,1':" ,ii ..•. .
~~'" t....·1 :Pm"
,....~.... . -",,"
~'
,¥-k..
,Ii";'
'j'-"
,:~:.,;.
)'11';\'.'
i~~{'
...'./\1" , ' \.
;~'r;~' , If.'"
'!.::. .,\::-
~, ,
..
.'@' . __:1'"'-
,"
PE Quando
e asserito , abilita il fUDzionamento in modo protetto.
MP In mancanza del coprocessore esterno, questo bit (se asserito) determina reccezione numero 7 (processor extension not present) sull'esecuzione di un'istruzione di WAIT, evitando che 180 CPU resti in attesa per un tempo indefinito. 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 coprocessore25 .
':::.
". -;[.1,--.. ..., . ~~ . • ~,. ..' .",~ ""
"" ... -., ;,'l>."... :l~"
.'
-'l'~" .....".:
:'~'l:""" ·'''.'''~'I· f,r......;:
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 e 0 nOll e queUo del task in esecuzione 26 .
' .""", "lr1t
'~.~;'.•:",
.
p·
"."
".,;' '1ll: ••:'ik_. "~'''''''' -
'i:·.'· .,;1' :~.. •
'K;: , ~. ."',.\l'~, ~'i,i:,~"
•
'~\il'\
'~(';' .~.,
: .1, ,'. I>·..
"
I
'
-., f' ,
.
]
,
J,
,.",. "~.
~f>
:': ~ .u, ,1".' • ••
•
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.
·",",,;. "'~(P, . ~t~~~
;_"".'" .• r':"'i~·"i.'; :\"
596
.. ""'~' ":>.. -;.> "
Appendice B
· ..::' 'I;!
ji. }~:l!
·'.-r, ~~f';} , ';"',:i~,Q: J.
B.7.2 La struttura interna
~.;-'bl,
"'~~~f,F ... ., '
'{::-lJ.~; ,I' "'1'.
..
;~.---,,_ ~' u.
·..~'.;:".\. ;,-
"
· ·'Jot ,,',
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
e articolata nelle 4 unita funzionali
"".~
":"~\'
· '",1"
I'·.;?·f~: >'!~"
..'.. ,,' •
~.,
"',:~,~.~
schematizzate in Figura B.28:
BU (Bus Unit), IU (Instruction Unit), AU (Address Unit) e EU (Execution Unit).
",• '.
"""
'."
""1
,'-;,,:.;1
.~ '.' , "~:""<, ~'y.,: '
..
""
"',.
AU
':";"" ·,IC'·•• '., ,1\."
BU
I
" , .•. "
·l:::;·i:.:~~
'.'" .:?,:z.~~,~ ...
RtGISTRl 01
BUS
.u.u
(16 BIT)
~,.
SEG~ltro
L..,
.... ::\ ,.;"
,.,1"... , ,,' ., .. .,r.
GENE!l.AZlOliE
.;' ,.:r~-,f;';;-:,
lNDlR1'ZZI
'" I
wmou.o
BUS ImllRI-' B (2~
BIT)
"
; l' .-1; '.':.::" ",,1- ... "1
"""~':;;':O".:: ~t~·,j.~
..,. ",' • "".'~'~" ''''''~' ,
"',~-:"-,;,,,",
" . ,.~l',;t':
CODA 01
"-;:f:~~f~\;, •'.',1'.':,!.'i-~>..'1' "~',:r.", ·,.-'1 :"~ t.,:' !!: ": ,.-. ~ri,""·
PfttrtTCH
"""' ISTR\nIONI
:., '."(',~".
REGISTRl
R,€OISTRI
DECODII"ICA
ttWI"oJWn'J:
G'''''''''
"""'
. ~ J;
.~,'~
,u~ ..,\, " , ',..,.,,~;. "cr', '';''.:~:~~ ," ""/.;:'<';
. ,,"", , ,•
".~~":
CODA Of ISTRUZlONI
I
·:'t', ~;'~.
",~.;;~~~~
. .'.. '.
"'~ t! ,' :,":::''''~. '·',~:~i·'," ,:,
UNtU'
f-
ED
....' ' . ·-..·· ~\,',~:,;,.. ...-
ISTRU'ZIONI
ALU
nAGS
,::~.j:I~~~~ ..:,:~l'..;'l<~ 'j
1-
' ...", - .:•.
DI
CONTROLLO
"';"'~."\'. '''\'':' •
.
lU
Figura B.28 La struttura funzionale del 286.
'. ':'. '., ;·l;""':·'o
.. ","~"
...
·3'::~1 '..'\1\". ,l; ",.....••,
",'..'--,"'1:)',
I >.. ;f:·..::t, ::'1" ","" ".,~'" ...... ,.,. ".",J,.
... ..." , .
"""'( ,,,' ,~. " ''-';~,,'I:
,
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 e presente 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.
~;·'·~:~t·
·Y,'''.'·:
_J~.•::<
, • , '.
; ".-" >,~ '.~'.':!: ; ..... ' .
.••.-:
., . ....
,;~:
'"
',.' '. ""'.'~"; :>"..,~'/; ·
'. ~
,.
.~
., ~"'' ':.,.
1 "w '.1....
"··l;
- ,:;:,<
~"')'
,.
. ;
,' ~ \:~.,,;' {""'
"I,:.
:,;,,01 ",
\
:?; ~.~
'. ~.••
:~1~<: "'1",:' ...1 , .. ~~:t··:,
L'architettura 8086
~:;'.,
:,,~~~~
597
1
;.n;;o
•. ~::','
,&..~ ..
,.:~~~::: ~~~f "..". __ .
B.7.3 Modo protetto
',;':'"'., .r "'4
;':,., ;..'
",., ;:.1'
i?y:,: "., '" I
, --,,;,
.
" ..
.',
.'q •••
,
',(,', , .~: I~'~' " • '0"
",.
"'"
" ...... \'1'
A1'
~
~ "{.'if: . ~;
"..."1,, .'.1' . _.~_
, l·r~1
": "~'f: 1' ,':;j:,.
: '",~, ~ "",',.,:
"I:<'~"" ,,, '''i-~.
,',. ,.:' -;1,,' -'~i;~. ''',.,
,' :fr.~~', ':~,::.,'I!i~> ".,' :.'·'; '''' ,~.' '~U'"''''
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. di tre ulteriori interruzioni, indicate come eccezioni, che serv()no a segnalare anomalie di funzionamento. Una di queste anomalie e 10 sforamento della dimensione massirna di un segrTIen~o. Per il 286 e dunque possibile, anche in modo reale, riconoscere e quindi gestire possibili cause di malfunzionamento. . Il passaggio al modo (virtuale) protetto si ottiene semplicemente asserendo il bit PE di MSW. A tale scopo, e stata prevista l'istruzione LHSW (Load Machine Status Word). Prima di passare ailo state protetto, e tuttavia n~essario 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 protetto27 . In modo virtuale protetto, la CPU e in grado di rilevare ulteriori anomalie di funzionamento, cui corrisponde la generazione di eccezioni. In particolare, e prevista 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.
~" ~iT.,;i
,
~t;~.,
.'::
'''lr',
'·';~~i
--'" 1,:Ji. ,.~ ';"~" "'~',",
,·'
•., "I"·
:.. ~'"
..'- i~~'
~~ ·t~··
.' ."j;J
!{ (,' .,., :,:. ill" '
.~\.. " if,..
: " ••\ "
(J: • <.
.... ~ I:'","::'
o.:
.';,,;-.' ,'k; .~~~. , ' :/;,A
,"" }W:.
,~7 '~'j~'
",.
...
,.~;.
.•" '''.''j.' (~t:>" ,., ' .. ~.f"' . ..... "1,1"
( ....., "": '~Ill~ . :.: .. '.~ ~'. ~
.;'.
:i~"~l '".
·,:"..
:,;, .' ;;,.
<, '.W,c ,.: .,< "~'
~,
:
J, ,'"
'J'i~,,:, :,.~; .. ,
"'~" '-:'"
~"" .\: ..~,;,
~,'
.'" .~", ,.".\. ;' "~,'" " ·Jk 'Jil-Y". ;.;., .,. ~"... '' .. ".';' w' ..., .., .
. <;:;,: ; J"-
B.8 II microprocessore 80386 (386) L'80386 e stato 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 16 MHz. n 386 e stato realizz-ato in tecnologia CHMOSrll (una variante Intel qella tecnologia 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· 116 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 8MHz 28. 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.
-
'"
.;:." . .~ ... " ''-' '. . .. '.'" ':\Ii' ';'" 'i'''~'' 1,'••' ".,l""
,
,'.
•.
.Y'"
~f,
I
I\
-
\
I
;~:::A·,
;" .'.
-
-
,,~;;;
~. '1frj. ;'-", ';':.'
1-
I
.~ )"!f;}M
'.
-
,
". ~;,:
:
\
27La tavola contiene Ie cosiddette porte di intern.u:iont e pu~ 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%.
I
-
1-
)-
-
1-_. )-
j-
-
'j\
"-
I -.~
-- I
-..
~I ~(
-- I ~
I
~-
--
-- I
698
,- ;)Sll.tl 1 '·"'.'~~ill'.i,I, .iil . ',"""," i') ""~...J ; ',:'l~~
Appendice B
•.
,,,.~r" .AI " ~
, '..'.1.1" :.o;."'i'"~
-
Con l'aggiunta della. paginazione, il 386 migliora 10 schema di gestione della memori~ virtua1~ 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 e passato senza mod~che ~ successi,vi proces~ori (486,. Pentium, Penti~m ~ro). Tale modella viene ana.l.izzato m dettagli~ ~el capltol~ dedicate alia ~emona 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 interna, anche s~ tra gli integrati eli corredo era previsto un dispositivo per la gestione di una memona cache esterna. D passaggio a un'architettura a 32 bit e 13 paginazione rappresentano Ie innovazioni piu significative del 386. L'architettura del 386 prevede, inoltre, alcuni accorgiment.i per in~remen~e Ie 'prestazio~. In p~icolare, la s~r~ttw:a funzionale del .38~ artlcolata ill 6 Unlta logtche orgamzzate In una sorta dl plpehne. Alcune funzlOlll vengono s~olte in logica c~bl~t~ de~icata (m.oltiplicazione!divisione; un barrel shi(ter a 64 bIt per Ie operazlow eli shift, 13 lOglca del TLB ill appogglO alia memona virtuale) , In pr:~~ical l'ottenimen~ eli pili alte presta.zi~ni ha imposto il parziale abb.andono .delia IOlcroprogrammaz~one a f~vore del~a.loglca cablata. Questa tendenza SI e 'Ultenormente rafforzata con 1modelli succeSSlVI. . D modelio eli p~ogrammazione del ,386 e riportato in Figura B.29. A p.arte alc~ne differ~ze ,secondane, questa modelia e .c~mu.ne a tutte Ie CPU, dal 38.6 10 avanti, e pub qwneli essere preso come modello di rifenmento della corrente architettura Intel.
e
·:~i·l ; ~
~,,~,~,.
" :;....
r-
":"~: J
':~~X;t'i ~
_,::"";,;,f~~,:~ ~ ·;.:~'(~)\';t.~
_}1;~i~1: ~ "-,'~;6};i ~
''''':''~'::~:i!.~ ' ;:~,J~:il} '
.-::}!~::'~t
,:';':~i;~~ f , . ",;.i(-::~!\; :"!;::~i.~J ...~~?;1~1~ '. ~\{;~~~
,:,./,~~.~~
",ri~~~::~;;/· ,:'::-)t;<
_ ···,';.:i~:~~~: ....,~\!;.:.~:%~
::',l'~~~~< -~>./;~i\i~
- "-:o'~f~i,~t
:<-1t',~:~.i
"'.
., "
,
, ,(:':;~'f"\:
-- I ..
-
.-",,- "",:
''''''~' "" " "'1,:;' (I", .. ',::.~,~}.;,:: . , ':';:'~
B.8.l Emulazione 8086
:
n 386, come tutti i modelli eli CPU che seguiranno, h~;. due modi distinti per permettere
.-
--
1'esecuzione di programmi compilati per 8086:
,
\
.. \
..
I
" , "_ ,fo/'~
....';':;.:r,"!,'. "~" .',
..
.'"
'~,l~.,'~'
.' r
• _ .'., .0;' ,', \'1..
.-'.' '"'.-, "'., ' .'" (~ ,,>,,',!<'
a) il modo reale 8086;
.
,
.
..
..~" •• ;, ...,1' -". 'II.,;,""
.. ...', -,. \' I ."
\
-
-
'
~~,r!:gl , ,",
..
.,
'-~'W~
. ~'::"I"'i"1 ',.",,,,,,
;·
,..,\:1'1, ..• '.,-:("";"
b) il modo virtuale 8086,
·','1 ....~ ••
'. j.', ,.,.
".~".I'" , ,. I'" ',
.
""...... ",~ ,0(:; ,
In modo reale 8086 il processore si comporta, a parte alcune estensioni29 , come un 8086 ed e percib in gracio eli eseguire praticamente tutti i programmi scritti per quest'ultimo. In modo virtu ale 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.
·· :;,.:!l!!~~~' . - \'"'... ,::~.~,
,: ,':,7'::'; '. ,".','
'.::;i,?~ -:
,..",'.....,
',tr',i,-P·",,: '.:"~ "..h.
:.::,,.:' J
""'.~''', ,:' \:>'~ \:" """"'1 ,.,,'. t . ;.:l; :
-~",;~,,
, -·~o.·, ,.... "i.,~ l
','1.,,',,"
"·'i;."," • ;,. \·.,,-f
, .--" ·tL:i .':",
....
-.~. ''t ~l::
"
, , , ',.,-.•.
-'
'-
•,.-,," . ...,•.:~,"
.' ..,
_
;"
. ,!.t.',
~QQueste estensioni
riguardano la. possibilita. di usa.re i registri a 32 bit a. partire dal Pentium Pro.
,.,.
0
alcune istruzioni a.ggiunte
.' • '"
" . """",~ .,."
'
. "-'("00:' ';,~'~,i':! (. ,
' '¥' ...;;·d.j,:~ >!<.,
'!ll:~
j\j""!," .. 11 ~','" ~"".; • . '," J.~..~'_'", ~' ,.'
L'architettura 8086
599
. '\.," ~:'.,
~.~,"
:R.EGISTRI
J~'"
~-nl:"<:'
DI
23
~t··>
usc
..
~jt"
~~~.;
~1t:.~..:.
GENERALE le-BIT
:32-81'1'
AM
AL
AX
EAX
DH
DL
OX
I!;OX
CM
CL
EC::<
aH
aL
ex ax
'i~~',-. '·,!t~'.
t.~,~.
fl;f,_,
EBX
ap
ESP
S,
ES1
Dl
ED.
SP
ESP
~l:,;:"
;'~::, :lr('~
REG1S'1'RI
'~~t:>
DI
CS
fltf.l.'.
55
·,im\i~{
DS
~t""
FS
ES
it},!':"
~~r.
as
~t:' :i~~:':'
REC-IS'1'RI
~f:
~l
~.'.
[
J .,.'."
: ,./ ~i(' : 1,"-\.'· J..,' , ':I,-j, :, < II ~~.
", .
~",
".,'
.f~··
"".,
"
~'.
.
<',
'1.
'." ~ '-""',' '
"
' Y.1r~\.;
1.. .i.t'li!:." _,:.1_,
~
, 1
SEC-MENTO
DI
STATO
£:
EF~pGS
DJ
CONTROLLO
J 0
Figura B.29 II modeno di programmazione del 386. I registri hanno la stessa denominazione 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 .
'II!':""'
.'
'","
~~'" !ll:~
L '~". 'w
• "
'~., 'r.':~
•. ""
.,
'I;:.~:·
,'"-'iI. Ii'" .•
~
~~" _,1.'
', ~.'~."
.. . ~
;' "!i :m;.·
.
~lf"
:., ~,/
,. "ffi'
:, !\ ~, ., \ 01:' t
J,:
:,:W,
II passaggio al modo virtuale 8086 e possibile 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,
",
, ~
" ... l'J,'
" -,~ .. .. ~
;t i.!Ti,'. ,, ,1;.1',
'il':" '''',' "\' " "". • ':. '.' i:, ,,~'~0 ~!1, .
l'
"
"jit~j,"'"
..
::" ~~"'J"... ,> ,'",,1 .,' ..
"
..'11:'',.'
,' "
_.,
'
.
', .~ I .'
,,'
"
(J,' '''1, ' •f .
, ·1" ~!'" 11' , ,~,
',~.
,
"I'
t '"
~. ~ ~~~.
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 virtu ale 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 e pure possibile a- chiusura di un'interruzione. Si rima.nda. aI ma.nuale del costruttore.
.
r,"~\'
- ,",,:
•""7.li<
:',h':il' >;~1.~· '.'.':;iI'j~' .
600
.:\.\.'iljicllO'
'·01~."",,.'i1' , . ,~;::.;...~~'l
, ,.<..
t ,.,,<~.""~~
Appendice B
.," "! ....yl~g J · ,'~, ,:." ",;, '"'(;''''10''' ;
''''''':,!.;,.""" .->t-
". ~,I-~.
,.
"~'-'"
,'.J:'~~"~:~",
• B.9 II mlCrOprOcessore 80486 (486)
V80486
e stato introdotto nell Agosto 1989, ancora una volta a poco meno di quattro l
·,:', ~:~t.;~:!j ""'H' __~";"I-;_'
:: ·',"
· "':"", ,::~~\.,
" ;:~:,~i.H ··..::,..
',c:U
anni dall'introduzione del precedente membro della famigli. iAPX86 (il 386). n 486 e un processore a 32 bit. A parita di frequenza , Ie prestazioni del 486 .,<::~i~.~i_; sana superiori ~i 2 0 3 volte (a seconda del tipo di elabor~i~ne) aIle prest~zioni de~ '~::Fi:V" 386. Nella vemone DX2 a 66MHz (Cfr. B.9.2) Ie prestazlOllI del 486 ragglUngono I ,~.)'t,;; 54 MIPS. Nella versione di introduzione, la massima frequenza di clock era 25 MHz. ..<;,;t,] ',' ' , _ • • II 486 e stato realizzato in tecnologia CMOS da 1 micron. n chip integra circa ',;~,~d>d 1,2 milioni di transistori ed e sistemato in un PGA (Pin Grid Array) da 168 piedini. .",·:'t/~/~ , , . ,.... n significativo incremento del numero di transistori ha costituito il punto di ..J~~~f,t!. partenza pe: i1 raggiungi~ento di prestazioni el~vate: ~l ,486 e .il primo ~ispo,sitivo ",:::'L::~i:?: della famlgba 80x86 che mtegra sullo stesso ChIp l'uruta per 11 ca1colo In vlrgola ".'.:.(t: mobile (FPU) e una memoria cache (detta on·chip cache) di 8 kbyte. , Al fine di portare il microprocessore a eseguire un'istruzione in un solo cido di .:' :;'t.'j:t.!': clock [SW89], [CragO], e stata poi introdotta un'efIettiva pipeline articolata in cinque,Y·';;tf.-~:~: stadi, Prefetch (PF), DecodiJica (Dl), Generazione dell'indirizzo (D2), Esecuzione . ·,;j;,~ti:;, (EX) e Write Back (WB). La realizzazione della pipeline ha richiesto il superamento :~Yff( di non pochi probleM; infatti, l'esecuzione in pipeline richiederebbe un set di istru· "~~i(NJ~ zioni semplice, I'esatto contrario di quanto offerto dall'architettura 8086, concepita ··..:~~~f!~:~ nell 'epoca in cui i progettisti lacevano ampio ricorso alIa microprogrammazione.. La /
,,(i01J;
386.
-~\ "i<'; · -'., .. La gestione della memoria, identica a quella del 386, viene illustrata nel capitolo',::2'''~{W.:~'''
dedicato alIa memoria virtuale. La gestione della cache viene illustrata nel capitolo de· ~:'L~)~;~~~ dicato all.a meI:?0ria cache, rnentre qui di seguito vengono svolte alcune considerazioni " ',;:iE{;i,':' suJ suo dimenslonamento. ' {\':-';'X"
·".,., ,'.,
,:".>..,;;".:
, ":"'~;,;.;' ..
,.I.'~':,:,i·,,
" .~~ -.:
B. 9.1 La cache interna
,
'~'
""-.1/:: ~'·je2
".'~·::,Y!;.~t
. , '-.1':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 e associativa a quattro vie e viene gestita tramite un a1goritmo (pseudo) LRU. La dimensione della linea, ottimizzata mediante la simulazione [Cra90], e fissata 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),
. ...:".,
': ,,,"r' ;/::" · ." •",' __ . -," ...
",":"!.!-;'-
.., -·'-··~·i :~, •." >......
;,-
, "
.
.',:,I'~I:''5 ".,"~ '
- ',:':"~.:t,;;
,
'
"}''',
." '. '"i,";< ~•.. -
• .' ,,''':,',<.'>->
", '.".-."
·
· <~';,t '" ..
~
>,-~;;..
, "::':~~,:~ ,:;(•..';': . ' . . l'~.',.
• ,..j!-I:; ••
~.
·"'.;t-=~;::;::l ;;i,.,"
".',",~.,"
)--
\ \. · "',::' . ")j;<'" ,
'!' ,,, .~ ,i-
.
'~'
L'architettura 8086
t. ,,~. ~t,,·
601
J!.;;~.
~,.
;~ "
,"-~ .-:'<'<.,
:.!Ih
"'''''',:'
I~f"';'
quest'ultima e resa trasparente al software, ossia coerente con la RAM, attraverso la tecnica di snooping32 combinata colla scrittura immediata (write-trough). La snooping e un meccanismo di monitoraggio del bus indirizzi durante la scrittura 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 e un protocollo di scrittura in memoria, cbe potenzialmente costituisce 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 ~ffettuare 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).
("
t.,,: _.
~i . :~'~f;
.. ;:t
,~., \:,
UJ':. f~
.
.;~~
iti.
!~Y' •', 01"
:\:;' ~~l~," .',. J
. :~:;'. : :~;t'/ ~~i",
; V7;"
: .if~'~
¥~t,
,)1l\l·' ( ~:r:_ ~1~.:, ~ ~$tl ~~,
T ::~:'! ~f;'
i{ 'Ii :~'r\"
'
1'·\'1'
::
I::',
i~:' '!j~'
t !~~~:~."
"\ ;', j~~:
t: :I;~~!::::
;".1'\" 1-.'
'~ t
t:::.
~; ~;{,~.
':~ r~:
,. '1'
" $';. :" ~~. .., ~ l'i" ,· :., ~-. '. ! ~, ..
:2 ~I"{ ~ ~(:
t!' '", ,};,'.
.. l
\ .
,",.: .~. "" .. ,.
~,:." ,j ..
.. ,
,;i;--
-'; ·
"
,.'
.. ~
;'f~I"" ....
-~!
.. ;g." , .
5~~',.,'\li!~"~'" ,
;;,
,''
1-. -
l~
1-· --
)-.
_.
1-
-
B.9.2 L'evoluzione verso frequenze piu elevate L'aumento della frequenza di un microprocessore ne incrementa Ie prestazioni, rna comporta seri problemi realizzativi, legati principalmente alia generazione di armoniche 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, denominata 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 est~rno 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 e diventata 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.
-
1-_. 11-· I1-'
1-·
L. I
.
<~' ..~.,.,'~ II' -,' ,. :t' "
>-: ,: ,.~',i
", ,,'<.'v·'
t' '::'4):~
~. -:i~'
.
:,;:t,\
~~: !~.;i':f"" :',. il~":\ . .;" I,'
.d!1. ,'",
",.,
( ""lt.! ,i" Ifl,
32Si Caccia riferimento a Quanta detto al Capitolo 7. 33Si noti che Questa tecnica non e una esclusiva origina.le Intel rna, all'epoca, si novita per il settore dei Personal Computer.
e trattato di una
1-
,
•
.. I
....,,"~ ·-'l*~1
.
602
-
Appendice B
'~
'/:'~~.j ~ .... ''', .," "Ur:
-.111,
.,~.(i.IJ~I;-" i
";_~';"!'ilfl: ~ ,,,~,~
.-;","
'
"
.\;,),:r!~~~r. " ","{j:" ~lIi' t
-.
"
1 ;'. :::,~~~!r. \ ,; ~.t;:;.·~~I; .":!;"('i'l;~, "..~'rf,i~lil '<'." 'ii' 'iii , \'\~;~~\ . "~,,,
...' I
B.lO 11 Pentium
-
Introdotto nel.Mar~o del 1993 e stato il primo microprocessore della famiglia 8086 a varcare la so?ha del ~OO "MIPS. " _~~~~~~. Nella pnma verslOne, la massuna frequenza dl clock era 60MHz, , ,j(,i!! . n Pen~i?m.e ~tato r~aliz~ato in tecnologi~ Bi:Cmos da .0,.8 micron: n chi~ integra '.;:J~,\,~:~~, ~rrca 3,1 milio~ eli tr~slston, su una su~e~c~e ~ 2,16 pOlliCI quadr~tl ed e ~lsteInat~ ':"',r;,\;iJi~W ill un PGA (Pm Gnd Array) da 273 pledill\. II consumo energ~tlco ragglUngeva I ,',~}H1'
.. I
-
I
.-
\
-
_. I ~-
-I ••
,
I
0"
·
' d II'
d
""
/f.f~fiJ
t' '1 P·ent'lUIn , ::
~on 1 rna e 1 prece en I, ~
prevede alcune lStruzlOfil suppIementan, tra CUl queUe che cansentono aI program-,";'~·i.Ji;&~ mato~i di sistema di mettere in atto i~ proto~ollo MES~ (Modified, E:z;cl~5ive, Sha.red , ,~<~Jri-~f:. Inv~hd). per la c~renza della cache m amblente multlprocessorc, per tl Quale vlene,. :,;~. ',;~ forrnto il necessana supporto hardware. " . ':':',1J'~: n Pe~tium int:oduce poi aJcune 8ignificati~e inno~azioni, co~e i~ bus dati ~ste.r- ''-(;;1fi'~~~f no a 64 blt , l'architettura superscalare, un'uruta. per il calcolo In vlrgola mobIle In '.' :,~.~A':':y1 pipeline, Ia cache interna separata per istruzioni e dati ed un'unita. per la predizione ,~-~.'.~~~~! dei salti condizionati. . >\~:"M\:.N Un ultimo dato da sottolineare e la rapida evoIuzione del Pentium versa frequenze :::~::/;4t~T~;, piu ~ev.ate: subito d~po la.prima versione a 60MHz , che in quel ~eriodo (1993) er~ l~ ,>~~·;r~~fir masslma frequenza di fuoZlOnamento della CPU 80486, vennero mtrodotte Ie verslOUl '.~,\J~}Y< a 66 MHz e a 90 MHz e , tra il 1995 ed il 1996, Ia frequenza di clock del Pentium e ',,;,.~~~;,¥~t salita fino alIa sog~a dei 200 MHz3~. problem~ del1~ dissipazione termica stato :',:::~~~~~{~ afft~nta.to.da. ~a p~e con.Ia riduzlO~e.~ella te~slOne dI lavaro (~,3. V), daIl'~ltra co~ ':',::':;iJ~~.~ tecruche.di dissIpazlone att~va sempre plU sofistlcate. Le carattenstlche archItetturah ':"::,~;J~~;~~ del Pentium sono raccolte In TabellaB.5. ":;~41Wt La TabellaB.6 riporta dati relativi all'evoluzione di questo modeUo di CPU. _~:.':~~£~}~~
e
" .. ":(;,, ';1'i;'",t,J,'
~
B.IO.I La struttura interna
': , ',':.,,'''''', 'v:ii::!"l' to' "
."',..
'. "'i'I:/r-\.\lt
" : .. , .:.:....~.:. , . ,i,"_•• I. ' .. '\"~t
.
..
"'.'
~
"".. ~{:.;'.l'
,
\
• •
•..
·
13 Wp' ur mant e~end o. Ia .compatl'b'lit' ft 1 a s.o ware
n
-,
, ',: '.
,
....." ~:h~" ,~:,,,.,, C,' ."'~'Ic,"~'
.
La Figura B.30 evidenzia J'architettura superscalare del Pentium. Essa consente Pese~ , cuzione in parallelo di due istruzioni sugH interi: l'unita. di elaberazione degli interi, in pratica l'unita di controllo, costituita da due pipeline (U-pipe e V-pipe) operanti in parallelo.
..... , l
'/'''II''('-l?'tt " ~,,,., ".. , ""'~'>,." : ',' ",;~,~ , .'j'!,',. , '~'d'; \ ,',
e
o'_~. ,.-.,',
'o""
I cinque stadi delle pipeline [BM95], mostrati in Figura B.31, sono:
.
~~(t?~.\
'. ,{.,.~.\<'::
":;~'l~'"
•.
.".',.' ".~! ,.;\.:'.,1""
"', .. , .',
.' ~"
~"l·"'" . "I~,'.:.,~ ..:,':i
• Prefetch dell'istruzione (PF): la l0f,ca di CPU preleva Ie istruzioni dalla cache istruzioni verso il buffer di pre/etch 5. '
"II.:":~.'.":f
, •·"·J>i':':ll:f.. "
.
.';':'-'(I'~ '"
,,,-
. . :"!"t':;ij"; :v·.. :
\ •• ".
!
.
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.). A fine 1999 erano correntemente in vendita calcolatori personali basati su CPU Intel operanti a frequenze in zona 500 MHz, meD~re era gia stata a.nnuncia~a 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 ~roppo l'originale anglosassone, anziche tradurre con un improbabile "memoria tampone di pre-prelievo".
':~';;I""-""
',,',;~':ti.~' I.," '.,... :;~··:: '. I'~~: ',-' :;,~j;:.
,. '~;"£.~Iy.
'''':I,i:,
:o:-N:~
. ,-,~",; ..,; ,0,,"
1
">I
."'~I~l' ,".'i11 '
~."
,h."-' . '." f... \~ 1o··':V~,~ ... "/,,,.,:
..
:.,,~..
.).,.. "j , , ',~ • '," Ii" m , "",oe .. ··,·"wt, !tl!
.. ~"
~i'
,"
i!~1
L'architettura 8086
~'il ,
603
,','
:
"::,,'.
. : 1.'" \A~" ;!iV .
l"
',~"i
Ftequenza della CPU
. ~;::.
Frequenza dei Bus Bus Dati Bus Indirizzi Cache L1 integrata Pipeline Superscalare Branch Prediction
f ,)",
l~':
l",
,:~'~:"
itb: i'I.:
J:fi' i~~
Madella di Esecuziane Esecuzione Speculativa
~t-1~;\.
J< :~,~.
.
,:er~;
f ;1;"':
1!!~~1:i
! ~~ .. ;>;';:::
,It:~:t.'
. ~;. ., \;:.
~ ~i ~(',
~t'~ ,;:;,,'
2-vie '
BTE. 4-vie 256-entrate 2-bit storici In ardine Solo per Ie diramazioni
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. Data 1993 1994 1995 1996
r;i{!~{,
da 60 a 200 MHz 60 MHz 64-bit 32·bit 8 kbyte dati, 8 kbyte istruzioni 5 stadi
Nome P5 P54 P54 P54
Transistori 3.100.000 3.200.000 3.300.000 3,300,000
Tecnologia 0,80 micron 0,50 micron 0,35 micron 0,35 micron
Frequenza 60/66 MHz 75/90/100/120 MHz 120/133 MHz 150/166/200 MHz
~ !~3:',' $" T.
Tabella B.O Caratteristiche dei microprocessori Pentium, dall'anno dellancio aU'introduzione del Pentium MMX.
, ",., 't', t.,.~~
• DecodiJica dell'istruzione (D1): nel buffer di prefetch, la logica di CPU decodifica
~ ;1jJJ!I~;~: ,§"~,,
l'
. ., '.
'. ';",
t ~" ~.',
. ~
,
d:Y'.
.. ~ •• \1
t
.
....
~":
" ~·.\-:
~
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.
i l l ' ...
t "'" -lh" ",~.
l """,", '''''~'
~
, f~" >;'
. ;
,'.
\
• Generazione degli indirizzi (D2): nel buffer di prefetch, 1a logica di CPU cal cola gli indirizzi di accesso alIa memoria.
~1.
:
iI/'<
" '"I,
.. .
!!i' ", i',<,;",."
"
~''''''.''''.
i," ..~"". ' f ',.,o t,f,: -,. ' ,. ;": . ;..... ,
~[
.',,I,.' .
:.
,~",
~ .. li'&" ','
", '"'l,".\):'
"i .~
'l'
:~:l~'.
:~~'
.{.(.l~'~~:
• Esecuzione (EX): vengono eseguite·sia 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.
e
Le due pipeline non sono ideDtiche. La V-pipe provvista deUa logica per effettuare manipolazioni a livello di bit36 l in modo da poter eseguire tutte le istruzioni,
.; 'fh .~ . ' ,,': , I':
~d ~ ,~~"
• '
: '< ,'
"" !Ij..
",'
36Di solito questa parte viene indica~a come Barrel Shifter.
,,.... '.~"'., '., .....• .:1
604
,
q:~l::"'"
•• I,
',',':k.li.f·· q
....,:.i''''';W, '
Appendice B
'-'~'-";;"'j? ct ',·.;, ••,.1 !i
'. ····'''·'1 \'1 ?
.; ,;... J_:;~';' "'···~·';4~
.; .~~::'t~:;.: "· , ~""'''''r r
.. ,. "~i~i~ bit
Prec1i;ione del s"lli
Cache del eodlee
".~.,.~?;l): .. ' . ' ........, '
,. : ~~."Ii' :;
'-'--''' ...,. . : .,>~-'.... •••, ~
•.'
,: '.,:, .. ';~;,:i'\0 ..... ':,.;
I
2M bit
Unite' to.
.
bus ddt
;';j,,~!,: '•. ," .. )',<,,--<., .. """ ...... ,...- ••
vl.rsclll mobile
.',1.'-0>,.'::' ,,.'.'.. . . ,:,
6<1. bit
Intutaeclll III b\ll det daU
-
ALV
"".n
lntllrl
"
::,,(~ ~1 !
'. ";.'.'''', ; · ::t~\,".', .,;p.,,~....;
~
'
.,' :;;','j.'>, '.,.< .... ~. , . ' ,<;-:., .1'., ; ""," "'"'~-'........ ,,'"0' "
·
'~''4~
l
'.'"
It~,;f.r~J~ ~
ReJi.:llrL
,·:·'f;·;;i/;,
irltm
:;!t;....~·:J..
,
;
;J; i,!~~2
44 bit
n:lolllpl1cl;ton:
::iii:
J
-'-~';~;~ ~
"bn
bit
.
.::;,,~.,,~, ,
V pipe
ALU
.. ,
"""~""''': ~ ~:'''~!J!. '
(P"PU) U pip.
'I
':','",1·,,",,"'
l··i,'('(~r-i
Bu.t1er di pre:fetcb
'~
'J
":';f.1~,;·:t!
"'._.'.
-~
.ommlltorc
· <;?,"~'}:
".'"", ' ,,~'." . >:'.~,:;,'
','.,'-"';.;;.,'-.~ .,:/".. . . . .:•
,.'.
Cacha daU
divlsore
bit
Figura B.30 Struttura intern a del Pentium. La figura e presa da [AA93J. Sono presenti tre unit a fUDzionali, 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 dell~ diramazionl, contiene un BTB (Branch Target Buffer) a quattro vie e per un totale di 256 elementi.
;,~;:J:.'!.;;::. ~~·-';l··' ~\~:};::,
• '· " ' -I" ,''-' .,.'•,.<, ..' ' .''.. ,", ~~.
.;;~{ttt:
"""'1-'\'" ':",;: ;.;-.-~~)? , ",.<
'''''::'''- '.,
.",-".:;,;:,;(:,~ '-.(--,,:}J}':,'"
-"""""'. :,·5::,~.:,~.
',c' ', ... -;-': ,.'"", '.' ,.,."' ....;
".'..
,','
., ,c.• ..... -;" "
·"'''''i.',:;:
':"'~-::;"~'-:::',
:.~~::~;:·::·t:F · ..,,:'iJ:', .', ':',.~<
,
intere 0 in virgo1a mobile, della famiglia 8086. E nella U-pipe che prende avvio l'esecu~ione 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 e stata 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 e eseguibile dalla V-pipe e se 180 sua esecuzione non e condizionata dal risultato della prima, Ie due istruzioni vengono assegnate sirnultanearnente alle due pipeline (instruction 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
.:'
:--70,,-': '.
" ',.'c'" '"'. "".,
'.,.."':;;,,~, ,.--~".
· ''-';-'-'".
· ...::. '~;,''''
.•.. ;~~~;~:;
"'-':'~;:;",,:( ',"".;,.'""",:. '-".
'-'~,'r .-~.
'0·'.". •
':
,"<~.~ " ';"\,." ""',';-1:',';.'
, :,"'\',('}.-, '~"'.:'.,.. "".-., .~..
.
.(:':'
;.~.'.l:: "'.' "~<.':'.' ,
';.
r','
,~¥
:""i~~·... , • .,,--!... ,., •
1 "'.'.~.:>,
'~;:l~':::
'~~'.,,'. "'.'""
·'::'/·7t:::
;;~{~i·
.,.-~;.~,~.~.,
" ""\,.. .•':->',':'''' •. ".
,: ~~.;}~\~ 37 Si ricordi che micro programmata.
l'architettura
x86
e stata concepita come
una. tipica
architettura
'>,K" ,-::'..::l";~"l '; ' ..'.,..', .....
.' ··,,:a, .,:\',r:•.
-"..
I
•
,~.,,,"::
,,-$.:.1
,l-:1.~~:;
;;: > !I',
)---
,. . ::.~
" 'Ir," 11""1 '.
, >•
q~;. ',~
L'architettura 8086
ct;,>~~
i'I-';,
605
1' ?1,'<".:'~
1--
;.t!.i ·I.~ : r \'
.Ilk
I~ -
.Instruction prefetch (PF)
'I
;(;t:~.
:j".. ••. ,"
~
~I:.:-:,·
Jf!;'\
I"'"
,' ..J.
~'w
Instruction decode (Dl)
'!l!-',
.i·I'·;;·
""'~'".
',
'1: h
1 .f.~:
.
J.~;~'"
,~,¢"
~'ii', ~
!·.l.~)Y'"
Address Generation (D2)
;tp"", $,:r:·.
Address Generation (D2)
~~ ...,'
'J1"'"
"'.,' ;.",. ..,., "'P."·': \j~ ,'.
Execute (EX)
lr,f\'~ ,
~.t~~.
Execute (Bx)
..
l~it~ '.
....". ""'j..,
,~r!V;··.:
'p: , I~' '; j
V',,,
"S ".
1M'.." 1.-- ",
Write Back (WB)
Write Bad< (WB)
U pipe
V pipe
i;jj::, ~
',:,{I'
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. .
f,' .
•
:\i,\!Il(.,.,
•. '.".'.
./\./ .,I::, 1'..11'1, ':"'1'("
~",.,
""'~' .' .. .'. ~, ,~>( ","
i~:.,. ~ .. .,., 'il ", ,,,<"
"11
1.
~" Poil.
t.·,
;Ir,'~'
i~Ui,\,': ," .., .111" (. :. ,. ",
;~;,;
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 simultanea38 , Punita di cantrollo del microprocessore invia la·prima 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 e soddisfatta, viene'ancoraeseguita solo un'istruzione nella V-pipe.
~r4;
'JlI.:~,"
,.... '
,~~
;:ii/'
..~" c' , (. ~"
.1. . "~".,
~ '~i\)''-. ,'~
••"
'~r
. ~:;
.~."~. '. t'>
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) e una cache associativa a quattro vie the tiene traccia delle uitime 256 istruzioni di saIto. Ciascuno dei 64 elementi (per ogni via) del buffer contione:
· ·itl'': c·"
a) come TAG, i bit 6-31 delFindirizzo delle istruzioni di diramazione. Per indirizzare 1a posizione vengono usati i bit 0-5j
' r .~...,
b) come dati:
,
~ .. J
,~t¥
,.i"..
"l
..
•.
I
.
."c: 'l~(.. '.
: ~n~
. 'I. ,T••
!r~,
1-
1-
11-, -
l-·
RIO,2 L'unita per la predizione dei salti condizionati
'~'t·
~t,.T,
1--
;'lb,:':,'~
''IJ1'."",.',. '. ;:~.> ",\;','
f-
;-:;;-:-':
.'~
-
3Sp&"
un esame dettagliato di questi aspetti si rimanda ai manuali del c09truttore.
l--
1-
1-
J•
... .\ · .;;.\t' ",';'
'./
·.
_.
I
606
-
"I ~r;:~~-?, ~
"~~.;.t.
r,,~~
,'.'".,.~~ ~... ,
u PF
V
~
D.
I
,-.'.," •.!
Appendice B
·.' I ·.
u
V
13 I. Il 12
D2
u
V
II
-. • •
13 I'
,.
-
15
13 I.
IS
u
V
V
u V
u
V
,',.'
,;, : ;;~
Il'
, ·""'" ., .'j c·, ' ,.. "
17 18 15 16
.'..':dt;.~ .. .. " ;
19 Il< 17 I.
,
'''.~Ji;l·
·"':':·Jt";~··"
' ~." , ,.',OJ ....•• ~:"~ .. e
IS 110
1" .d. -•• .l,
11 12
lfB Cicio 2
Cicio 3
Cicio 4
13 I.
15 16
17 18
IS 110
,;
.'
II 12
13 I.
15 16
17 18
CleoiD
~
Cicio II
Cicio 7
Figura B.32 Esecuzione parallela delle istruzioni quando illara Russo alimentate entrambe Ie. pipeline deU'u.nita. di elaborazione degli interi.
Cicio 8
',:' .,_. . -_t' ~.1; \:
.. '·~/;;.~· ':';'~.~J::.,:~'
~
,; .",'
•
-. ••
-.
I (
I
·
"~. . :'.:./:' '
""",·,t. , ".".,",'" I'
': ,. t",
':'."'\lj;i",':
Cl .. lo"
"
" "I-~"'I",
e tale da. mantenere
·-;t"··\'V·,1 ~.,,~, ,.. "~~,1:: ., ··'''''''·''i ......~...... .,
.;-••::
..
~.,.,.,
· ...'.. . .... ~ ....., .; '> . C'_:'..\,·.... · ..,'. , i) gli indirizzi delle destinazioni associate (vengono memorizzati solo gli indiriz- , · ~:~.""' ' .•;.-. .•dh,. \ .... zi d.i diramazione effettivaj in caso di fallimento viene prelevata l'istruzione
,~
..
~..
,
. ".. .
.~·:~,.\c:· .',,~.I~,,: .. (
in sequenza);
'.
• ';; "J',
La predizione dell'esito della diramazione
:
'
.. "" .':"
, - . ; . '.•
',"
",. ','"
.,' i'.,"
e
'.
,., .. , , I',·, .,,
"..,,. . :~ ',-'i .,,, """'1'
....
:'0. • • • ,' ",
,-'
!
__
:';~;;"::""':"
ricavata grazie a semplici predittori a 2-bit.
·.
,
i'-':'..,.;
ii) Ie statistiche di predizione.
_.
,
· ,:. ,.'- L;~t
,\"
I
~
'..""'l'f~ ..... ,..,." ... ,'1':,'.,
u V
I-~ ...
-.
(
'1.(,,.1:-..c1' ' ;..t.,:!il: ;,\ 'i
u
V
17 18
11 12
Cicio 1
I
u
15 I.
EX
·.
,
;·'}:l.. ;',r;.
;~~:oil_~··· '.
A un data momento, quello dei due buffer di prefetch che e in funzione carica sequenzialmente Ie istruzioni dalla cache istruzioni. Se entra un'istruzione di salto condizionato, 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).
~' .. :/:
·t'~",~,
.._.,:;. .~. {
. . t.· _"" ~"·I·, .. ~~·,,: \I. ..'•.'<' ...., ;',c.' ';'~::'
':,,'~'J. 't'!,w,j"; '."
!.."fi';,'
· "."""'1)"
• Se l'istruzione e presente in BTB, i bit eli predizione forniscono l'indicazione per . prevedere l'effetto dell'i~truzione. Se la predizione e di 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 e gia 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 e in V, 4 se l'istruzione e in V (vedi pill avanti).
. ",;.;'\"." , ~. "~
.. ," ", .'/".""
,··:,'-1t:.'i.'
"',::>;:~j;-.~;:':
,
'~""~""
,, :,,:~.{I).(~ " ...._... <"
',!. .... ,::i'J.~ ,.... ,,
~l. ...'~..,' -'.' · ~",•,..... .,'.
',';;,.,. .;,~.:"",:.
.:..,.,;.:{,,.;
,
"•
,
· ?'.~~:'~'<
,.. . ···I~,. ,,,;.
'.I·.·.~,·.': ".~'
· :'r.'·:·· .',
• Se il BTB non dispone delle informazioni relative all'istruzione di salto corrente, ,. it'-), "til !~'.~ ··"l"l.<, predice che il salto non si verifichera e continua a caricare sequenzialmente. Anche ...., ,.,.,)~\" .,".. <~. in questa caso, se la previsione e errata, si ha un ritardo di almena- tre deli di . ··~A',~·:,' clock: il Pentium archivia Del 8TB la nuova istruzione di salta, corredata di ···".,.~;:,\,., , '~).,'{,.. tutte Ie informazioni necessarie (compresi i due bit di predizione), sostituendola '. ~:J".".,!.~,. •• '~. ,;:'. a un'altra gia presente (nel caso in cui il buffer fosse pieno), dopodiche azzera la , ~ ."t"., • pipeline e carica l'istruzione all'indirizzo dovuto. ·Ii::·': ••t. .....
"
,
·.
l
'
:'.' ,.");',
-.
_. I
-.
..
I
e
La sostituzione degli elementi del BTB regolata 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 e ottenuto attraverso un
':J""~. , " ".:,-., "
,."
-.
t·:::,;,~·~,. ,. ..- , . ,
- ••':':;:i;:'.': ., :.,,'~}"', ',,;~-.'"
..I'...·· "'+"1",'. " , .'. .<.... ,
• ',.
.,'...I•.,., .': i~,~".-"Y .,""....... '.' ....
~'t
.,.
\,.
,it·
"I; ~ ..
L'architettu
•... '. ( 'i?l·
607
(
~,
.. '
..•....
,.'
,:r.:',
:-\t:..
I
, ",.'.'
I I
__,'1:;,
;;:;,1 ...•
I
t' .\. ,'••
00001
e:,.J
.
;... •.
00010
e. .:~,.,
,.
..
(, .
.
.
,~.
.~t:
.
·1 '.:C·'.
'i""
:~,'c',
'j""".
"J'.' " ..: ,~,
};i/., ;
1_
·f·~,
. i'···'·
,
.~
~f
~,
.
~
.,,-
4'",;. >.••
". .~ .. ' .,:'. J)•• \¥: '0"
'l:..
,,,' _..
.
":., ·,b,' ,
1;~
,.,
:;r'?
'Ii-;
%'-::.
J"'~ •
IDdirizsi di
Bit di
Destin...,loDt
Predi~ione
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" e codificata 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 e a 4 vie, il ETE non pub contenere piu di quattro diramazioni in posizioni aventi inwrizzo con i bit 0-5 uguali.
.'.'"
~'1.
I~'." .':r '" -" '~ ; ,;
..
" .", ~},: ,~:,.,
(~i:"
,f~ .;, ,,!~
. ~•..... "'jI1.'
: i-:-
. j.
".f!,.>.
< ~, ..
1..;. ...'~::,. 1\(,
,
TAO (bit 6·31)
''''''. !il"'.
~"a:~~ ,'r.:-,
"
bit 0·5
"f .
",., ',
.
"'I.:' i~U,
,.~,
11(,.
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 v~ngono 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 e una pipeline principale e una secondaria), il meccanismo di predizione considera Ie istruzioni a coppie, piuttosto che corne singole istruzioni, e fa sempre riferimento all'indirizzo dell'istruzione 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 Vpipe con cui accedere al BTB. Inoltre l'indirizzo di~accesso al BT.B non e queUo 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;
,<,"
i~'::-' ,~~ ,
1';: . ,'.' . *.-: .~~
."",,'...:
1 2 3
SHR MOV eM?
EAX,l EBX, [ESI] EAX •EBX
1.
4
JB
L
\<•••
•.
~
.
~.
't.oo '
">\
. !J-: . ". : 'i,~i ), .. ":1'
.
llll
M.
;...:~.:
.
.
11110
/,.'
~•
.'.
.,. '" ~t"· .
.,
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.
, .. ,
..~~~.
'"
"',~~ ','·\>I"'·i· ".~. '. .\. 'p~'l~" .'1
".;.,":":"'~\'
608
.>.,:~!-g
Appendice B "
'~;'~:;'~'
.,. i:"" ••~ _~.'~':' ~1
• "'.
':,,,:; ;.~ ~.:'
I~
'.' , . ~ ;;,.,.., c" (").~;.
... ,.!. (,
'::';~'; '~
CI
.~
(11
/
.
,. :.':~ ,~ "\,,:' " . •,j ~', 'L "';
-------
,
10
··,
"
,"'''' ~.
.~
""" .. '.
'\'
.
CI'- 00
/'
.i .
.
'.
..
,
,
... ' ~"" .. '"
.' . '-'
SuccPiso
"-
.
,
·
Fallim~nto
'. ~/:\ 'I..: _.
·", \ . . .
/
f .'
•
· ." '.,
• ,....,
01
i·
.," "r,
i,
.
''
.":;":
,,'"
.'
'-
•
,1
. •
,
'':',.,.. 1.
.-:~,;:,,:. "~, " ., ~,:,,,
\
...• ,." .•
':
.:,..,.;~\, .
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
"' , _ ,/.: :
.~~.;'. ~
".~
.' :.' .;.1. i · . '; ..t" ....
h
"
...,.,..'.", ..' ,
,-;::,
'.'
e 11.
..
'
~.'..
_.~_{;,';?" '
• ."..\ ..
- ,. . :"",." ,.,..>,"Y ,,'," ,.".\ " ·'
.' , '., .. ,' ....., ", • > Un effetto malta particolare di questa gestione delle diramazioni e Quello di per. ,,~.:..... t ..... mettere a tali istruzioni di occupare piu di una entrata del BTB. Consideriamo infatti" .' ,. ~,. ,. ;,~, I • " , .• , F ' iJ seguente frammento di programma: ';;':~/' ';'; ~ ~'-' ~~,,,.
,:.:<'-;' ,'" ,
-:,; .':;,.r:'/' '
",?:\,:;/', ~, ".J,.,;"
".",'
1
JZ
2
MOV HOV HOV JC
3 4 5
L2,
" ~~~J4::' :" '.. ''.' P', . ," •.. . :.~< ' /.;''.,. '
Ll EAX,l
.1· ..
~
""
· ." . · :,. ~j;'~:'!-\ ~ ' .... ;1'.:,:, '
EBX,2
".
ECX,3 L2
.;
.7/:':";'; , .... ~ . ,
· ~. ,!;;.'
..;'.,.""
,
;.. . :,
:..,,'' -. '. 7 .•.. ,-. ',."'..
,
'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 legata 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. ,~:, ~.';". '.~'~ .,~~ ·'!::~li;.\ ~ " .' Questa effetto ha tuttavia un vantaggio in quanta viene sfruttata la' correlazione tra ,,::-2' ~ ." .. Ie istruzioni 1 e 5, e si ottengono predizioni differenti a seconda della particolare ".~ .. ,, evoluzione del programma. .,-; ..',
e
.. '
".
'.~
,
'
j'
'
~.
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 di 3 cieli, in quanta l'esito della diramazione si conosce allo stadio EX, Nella Vpipe, il ritardo invece di 4 deli in quanta, visto che la diramazione eseguita in parallelo a un'altra istruzione , che potrebbe modificare i flag condizionali , l'esito della diramazione diviene noto solo nello stadio WB.
e
e
e
.
," ~.,.~,
...
"
:;;;:;{.j
.. .' ·
'
•.., " 1
"
.., .,~,~ . · ,. ,. . .' ... '.' "
.... ,· ,". ',. • .
t.'\
« ,..',"',
'"",',
· .,,' it·,
",·.~'·'1""
. :'i'':.''::;'\'' • _. ':1'<. ,,'
"
1L'architettura. 8086
:'
609
~
t-
1.
~\~:.'
- ' !;ol ... ~; .. '
'
.. :
~ j', .',
B,lO,3 L'unitil per il calcolo in virgola mobile
;.
'.
~"
.. \. ' " \.
,'
"~
' oj'
.
,.;'
'J" .. ,
,'"
:;;" .1
..l-"
' ..•
•,r ,
,11' . ·~,
..
,'" ,.0.
''''', ' '
,~"
"~:: ,., .'
•
\.{,.
I./"
,\~
.~",
~~t'
:f.'
i'i
...,
h.~.'/
,"':'.,' ,
",:1'
.. '
',~'
'
ct·
':;1:::,
",.roo . ~l-J ';",' ·'rr., i';·
>:oJ",
.:1\~, I'~"" ,~I,
'\,(+' ~,.(.: ' ,;~;""
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 clo~ e un'istruzione FMUL puo richiederne da 12 a 15. La FPU del Pentium e in 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.
'IL'"
::,:~.!: .
RIOA Le due cache interne
'h·<·, J~"
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 oper~ 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.
"i'" . .", ~.'\',
.~
~~;,'
'1/('
,i:f ~
io"" ..e' 'iii'
.,~~""
7'1', ,"
,~s'...' '
,\ 1
~tl"
..
''',,' ".' '11":-
":{'.
"~,,.ti.'
' V .; ~
)0:'
'.,,"'.
;l! .
'to ",,' :-"'1·
. ",,', '
..
~W"
1.\' ,. ,~j \ '. ."'t"-' '~' t' '
,..
.j ....
f.,' .-
'.r:'\;,. . ;p',
. ."
r.:.ljp~ li~,·,
r-
I-
l' -
I"
-
'i~:ti
~;" ,,,,.:1
I'
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 V·pipe 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.
I-
l:
r [
I:
r ,
-,'hPf..~):: r., "".':,;, '. _~"';~'" ,I
610
,-Jtm: "",.,,'
.
r; '~'~'
.;".,~" (; ;.,'
,:
'~",
:",,;' ,
tl.. :-;',
. '_" ," .~~:<\l
;
,.,~",., ,-
,
.,~.
'-,';
,
ix.. ,A': -;;;,'t',\'; ~.: ':, - .'0.",,'.' ,!':, -'., -,,,:
..:"'~':~:
~·::,:·U:>
,I
;;'~'
. ,;·;',".l •.
,.<;:-:f;;~ ~.<.-
~.~~"
<,--.,:1.,'
:;- "'-"~".
-~c;; .
intro?otto ne~ ~~aio del 1??74~. .Si trat.ta d~ una macchiD:a nella linea. :~' ',:::>~1'..~' ~;~-
PentlU~n, che. mtegra. pe~o ClI'ca ~.5 IDlhom dl tra.nsl~to~l :on tecnol:>gm C~os da, <':1::':£: \t~.~ 0,35 ~cron, m ~ ch~p Sistemato III un PGA da 296 pledlDL Nella pnma verslone, la "';:,:<:~<~> if, masslma frequenza dt clock era 166 MHz. -:::·::,:· :~; all'mtroduzione del Pentium II. ·'~:('·'i:;·: ~~ : ..
e
,
t •. ~'
~
o.~·"
~,>:
":~",;':.
Data
1997 1998
Nome P55 P55
Transistor 4,500,000 4,500,000
Tecnologia 0,28 micron 0,25 micron
,-:.:, v',,'
I.';"
.-":,'.:;:
\~,,
" '" " ."
1_
'" ..-"":.,' ,:'.; ;'-','.;':;~,l
;~::,
.;:<;:,,' :.~ 'c'; j ".:! .pi
~":"',J,\"": ;0
';"-'~::-;;
.-
....:.;
~l"
,'ru
'!".~';',
, :" ;:c;i/\:t
)
:,~'
:~.-r'~·~.~,: '~
F\-equenza 166/200/233 MHz 266 MHz
Tabella B.7 Caratteristiche dei microprocessori Pentium con tecnologia MMX.
)
,;,
. J~.'.'\ ~~' ,
I
~',~'.:,. :',
":~ .. ,.\.!. :',.:~.'
B.ll Xl Pentium con tecnologia MMX
'I
'.f.",'.'
','(~":\ ,;~:,
"
E .s~ato
",
~
'"',:.,..
"',
j
...
~...."'!.,,
"""" ,,', ,~"., : ..•.••J '"' • • '",_ ..... ,-,,-. ; , . :".1: - ......:.'......- "j' . .. - .
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 ALU41 . La cache dei dati non e a doppia porta, rna e suddivisa in 8 moduli intedacciati 42 .
\
.
J\"~" ;; <'·.i~ ~..,~
Appendice B
• ';,,", ," "oiI ·:;·';!~i;l~
,
~
l
.··, ;;"
"",,-;:<-.. ,f','..'<,'-:.. :, :*
. ,-::: ,.,. '::!"~'''''~ '~ , -..:'>';;:,' -T
,,-.>:.'.'".~~ -
\
B.Il.I L'estensione MMX
,. - 0, •
"
'-'-. ..'..
~
c. (",c' ,. '.'1 ,- ,'I, ,'' .,,' .~ .. , ,;t,
'-";"-"~'!';;'
·
La Multi-Media Extension mette a disposizione 8 nuovi registri di uso generale (de· nominati MMO,.. "MM7) e 57 istruzioni supplementari SIMD (Single InstructionMultiple 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).
\
.'
".'
'
' ',
., . ..:- :::. 'f ",: , ".~', . it " 't ':,~i.:'; >~ ,-"
•,
'"
'j
'
,>
-.'"., ·'l
~
' .'
",
"
..
." ~",
.'~~" r
","I
\
IJ
~1 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.
...
. ' .I~ "
:
~
,:
..
) "
'/
.J
.. '
'
--.,', ' ". " : ' . ' ...,{ '''',', ; ','l, '. I, " : I,
, .. ',. f::! (
.~.,
:
'
"
'. '10','_ , " ": ,
':, .....
-
'
'
,
(..•.•'r:~~·~i i ." ,~1'" : .... .. ' -~ ,~,,/,\,,;
\
'\".,'
.
:.,./']1'\'\-' , .
L'arcbitettura. 8086
611
.
,
..
-
n software compilativo
per la tecnologia MMX e il piu efficiente meccanismo di predizione dei salti condizionati incrementano del 60% -rispetto at Pentium Ie prestazioni multimediali.
_,
;
..
.'-'
'.
: ,...
,
'
'
' .
Packed Byte: 8 byte impa.cchettati 63 32 31
-
16 15
8 7
0
I I I I I I I II
",
..
-.,
.
~ ,':
Packed Word: 4,parole impaccbettate 63 32 31
~~;
I
{t;" :':
'··
!
I
16 15
I
0
I
'~"
:'··
Packed Double-Word: 2 doppie parole impaccbettate 63 32 31
~'
;t·
~~" .
:"
""
';~'
~~
,,.;
I
I
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,
_:
;!"
,',,:
~.
[
0
>
pi:."
0;,,' "_ ~
u'··:
"\".'
f-f', *'~
. :~:' ~'.'. Ti.
B.IL2 La struttura interna
",
1... ' ''1 .
,.,
',-
~.
': ,
,,'
'
f.')-
,:t,'
'
j"
t·, ~;,.
>, '
l:'
~.~
'(' .'/,..
"
','
"
r~
","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 pipeline 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 e presente una FIFO I 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),
~h
....:r;',,',---' '"",
)~
/l';
'I":
'r.~'
:~J:
,-. ,,,
;tJ
,ji".'.
B,12 Il Pentium Pro
",1,
E stato introdotto nel Novembre del 1995.
'Lo}··
di clock era pari a 150 MHz,
:~,.,
'.'
'~,
,~.'
iiV;'~\"; .,. ,
.,~";. .,.
~:'
Nella prima versione, la massima frequenza
· ,
..·..-,'~
,,,.~,,,
-, :"jt'l~~, ',~_~,~j~41
,' ..3:,~I;r ~." ,
612
,
Appendice B
'.'-"." " ... ·.,x~.
-';'''''""
~
-
· ;.•'j.<,;. .. , "~'" :,;'f.~;"';~.
',;,' ........ 01'
MR/W
I "" I "
I
n,
I
~ d~lIa f'ipelin~ MMX
StacH
lIItegra.ti nella. plpelin~ inhra
D'
I
e
Wmul
-
iE:t:E~
t::::::::==:::::.. .
Stadi deUa pipeUne MMX dis&Ccoppiati
1"";Vii""
..............................
-:... ~:~~.:.~~. ·;·,~-;;t'·!.,,;;,:;
· "... ,U'},:
",' "
...
',
_,_(COo, ",,,
'<-~.'.~;-,' .
-..".,
·.:'" ;f::~: , ",
, "~~:i' ,.;;.. -.',"'
· '", i:.; -:;
Solo
'.>
:. ·.~i_i~,':·~:
pipeline
,
<~',
<
·>:.:\,~
int~rI.
•. ',.' "!;' . ',' -.'." .:,.. ::,.;,. J;.. " ..
,
E1 , e:~ i E3 : •.•.•••.•••... , .•..•.••.••... :. _. _ ••...••• i
" '<'~-"~
.:' '~.:>"';'. ;~·:,~;";j7~ ··.',~·~r~ ..--
Figura B.36 Struttura. della pipeline MMX. Rispetto alIa pipeline del Pentium compare '~X:{i;r.
stadia: 10 stadia F responsabile della decodifica dei preAssi. Gli stadi PF,F, Dl. D2 ed "<~l1~~j E sooo iotegrati nella pipeline intera. Gli stadi MR/W, Mex, Wm/M2 M3 e Wmul sono r1'~;;':'~)invece disaccoppiati. Gli stadi MMX svolgono Ie seguenti funzioni. MR/W: lettura in '::;':;;:Jt>r memor~a per .Ie ~strU2ioni MMX.; M.ex: ~secuziooe delle i~tr~ziani ~~X 0 p~imo :iclo per .•;, :~.t$'~<';' Ie molttphcazlOD.lj Wm/M2: memonzzazlOoe delle operazlOOl esegutte In un ctcio dt ciock 0 ,<,~~l:;~t:~~: secondo cicIo per Ie moltiplicazioni; M3: Terzo cicio di clock per Ie moltiplicazioni; Wmul: ~".:;!::~~J memorizzazione dei risultati delle moltiplicazioni.:);j:i,.?~ :: \0
,..~.,;:;,.)t'"
',:;;i-;'-":--:f "."' •...
·
: ",""~";;':" . ' ':
n Pentium 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 ,::;'~9:'0$~>~ da 387 pledllli. ·' ....,.,. ::,:
"
\: ,. .....G;,'.', __.".
,~..
Pur mantenendo la. compatibilita software con i modelli precedenti 1 il Pentiuni;'.':{*t~.~;, Pro introduce alcune significative innovazioni, corne l'architettura superpipelined, una' ::;~~1lt::: cache di secondo livello e, soprattutto, il meccanismo di esecuzione dinamica (detta. /,i4?~~B: anche esecuzione speculativaL che comp'prta una revisione della stessa struttura in<:~l(~;~::' terna del microprocessore rispetto a quella del Pentium. Per rimarcare questa fatto,:";!;~~@~7; si parla di arehitettura P6, a denotare l'architettura del Pentium Pro e dei succes- :~:~:i~~:::' sivi. saIto generazionale del Pentium Pro rispetto al Pentium un avanzamen~9 :c,~,i~:: architetturale piuttosto che tecnologico. :,:.~'.!~@:~~~ modello di programmazione ancora queUci di FiguraB.39 1 tuttavia il Pentium :::;;~;:f Pro al suo interno dispone di 40 registri di uso generale , non visibili al programmatore,' ':7:':7,'¥]{ su cui avven~ono Ie effettive elabo~azioni e manipol~zio.ni. ~ re?i~tri d~l modelIo di. ..;:·1.:t:!;"P prograrnmazlOne vengono automatlcamente mappatJ SUI regtstn mterm secondo un ',. :;.;0~~ tecnica )not~ come register renaming. L'incremento del numero di registri aumenta ,~i . ,}~,::~Z?: molto I effielenza della CPU, '. ' ""'"" . n Pen.tium Pro presenta un'archit~ttur~superscalare. con la pi?eline ~rticol~ta ,~/~~1~;;', m 12 stadt. L'aumento del numero dJ stadJ) consente dt norma dt semphficare le'::J';I'4;;.~·, operazioni di cia:scu~o stadio, pe~~ettendo con cio di aumentare la ~requenz~. L'Intel.'::<~~'ft~i" 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. :'" ?~;t%:;/Oltre aIle due cache di primo Iivell0 gia presenti nel Pentium, il Pentium Pro '.~">.:.;~~: 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. . :~.·, ..f{:;;
n
n
e
e
44 ,
:y. '~':
'" i .,.1:.. '_''
,:q.""
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 e organizzata su 4 vie.
.. <.:-;:i;
"'.: ': .-,:'.;
..
:~ ~/;.,
,.·,,·.i~
,1: "'1 ~"i,:
.......:,;;~.'
I
r",~,
' '",
.:.,' , '~i"
1
:'~'.-, ," r',.
h ,-
L'architettura 8086
.",
613
.-.
,.
,,,,.,
d,",: ".'. ~!':"
,;~
:.:.::.
,
Le earatteristiehe salienti della CPU sono riportate in Tabella B,8,
~._
.
I
.• "\., .'
,';~:
.
. "
",'
,
.;.
<
\:,',
"
"\,
"j
.
.
,
," -
,:t .,
'";,:;., "~,. V.,
. ',!~\:,
'T,,/
- l,~~,":.
r't;i""
'
',:'.:.;
'J;1~.~I' l<:
:
:: ';;;:'-,:,:',
" g~. :f ~'fu:;
,~
.. , f,
: . ,! ".'
,, ~;; .. ~; ',j't' . . .:~" .. ;··. ~~'"..', ,\:;~IV'
:; ;(I':~ :'~~),:
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 Modello di Esecuziane Esecuzione Speculativa
da 150 a 200 MHz 60 MHz 64-bit 36-bit 8 kbyte dati, 8 kbyte istruzioni
1
r
12 stadi 3-vie
5 BTB 4-vie 512-entrate 4-bit di storia, predittore a 2-livelli Fuod ordine Si
I
Tabella B.a Caratteristiche principaU del Pentium Pro.
\ 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.
\
'i ~l"i
;;!
f(i
'~ ':I~?
:fg ;i~'.i:'
~;; ~~I""
ft ~,t',:
B.12.1 La pipeline e l'esecuzione dinamica
e
La pipeline del Pentium Pro illustrata in Figura B.38. Essa puo essere riguardata come suddivisa in 3 parti [Intb], [Inte] , corrispondenti aile tre seguenti unita. funzionali.
{? lfti:'·:· Corrisponde ai primi stadi della pipeline fino allo stadio RAT incluso, P:', ~:~;\ ' Fetch/Decode e costituisce il front-end di emissione in ordine. ~~ '1r::'-
:~ .~::;. , ~
,~ ~j;';\:
,::" .~~,
":~ ,~'~,
:., ~il:
-', :~~f
:~y ttl
;/ :~, \ '~. . '
;~:, l~i,.
:,r '!¥.~~
..' -:1':;
' ' , ,,,{,.
":,,
.... ;':; ',.:};.,
:".
,
,
'''1;,' 'I'{'
;~~:
..~::.
~.>. '~.,"
:' ~ :If;'" 'i:~ .r.t.~
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. n Pentium Pro ha un madello di esecuzione leggermente
I \
I
)
I •
'''\'~'
j."
.,,~:.]} e""
I~
.. ,~I;,."
Appendice B
,-"". .-,. ..
...
·
,~
..
,~
..
.. ,~', ,':: .-' .: .";' ,r·., ;'< , .. ,;"
;
12 (ilhr
I
I
"
,.,,'.' ','.' '" ",~'~;"J .... •... . ; .~~,>:: ."-,
S,dtfll BUI
~.:~~.~ ,,',.," c,' -- "
12(Khe 1M ,
Bus InlfrlOll:tOnit
··f i.,
'"
..,,'
."
"
"[;\:~ ,:;i"~
)
'rl~j flll lion
fdth Lnit
S.... ple
\
II KUhe
Sinoplt
hrl)tt
(~"'Plu
lnslrudioo
llt<061r
Ot
()e(odtr
Buffer
I
lotegtr
,.
RtOrdtl' Buffer Inslrudion Poall
A.reNtte!.. r. Rtljishrs
flo~tiflg
flolt~
P_l
'0;-.1 Uril
Uri'
I "
I
....
."
: "::~'{~~':
(~. f: ,":'" ";... ':'i-""-' 'Ir:" ,.;__ ,.1:':....,., :/.-:.~:.~%..~~ ;,~~:,;, . !'-:":~:>~ ~"'~':t:
,:'7i~~:j;;;
1I OCICM
l'Iemory
:·;;·';~!E~,: !,frj·: ,'-.. ....
RtOriStr Buffer
,
'
, -:.~>i ::0,"", ...":::;1~" , .... ~::: :~t":_;' .. ",'
...'''..'~,;.,~ . . . ,./ ',."'.-.'.'" ,'., -- . , ~~ ,;'··,tr<:'; ';;:,~,' .,'t.-, ""'~ .~""{ ,:",.:~"-':,,,; ..... ",' .~; ~".' •.••< ~,<,:''.' .....'~;.l .. ;:fi'i",
..
j
IrItt9'"
....'"
Hlmry
\lo,' To BUrKh
.. :.;l:f/i~ ;y·of.~iT . ,,'
klt.r!lct
.:. ':~~"",.'
.',,' "' ". ,,:;:;~.,.,·:.t.1!:: ~'olf'~'"
\lo,'
,.~-"'.
,.,:~.'SJ:~'J~~ . JI:l:f:' \... , .. ' '.
rtsd Built!"
if,~i
''';;..:~.;, .: ;'.~ •...-<.:.'.' ,f· .
,
IrIltfNl. DlIh-Rnulh BU1U llnslr\l(rion PooU
.. ' ,,,,'~'1ti~~:· ,~~, ",,~,,::'" ", '.:~' ,: ...,,' ," ,~.".,,,
';,
" ~:',·!I:c~.:'~' .. ..v.';/ .<~
,-, ,'" '.~ ~'."
)
,"'.~'.'
..
... Y.
',!,~;" -T~"
':1.-~
..
:l\'i.~'
"'>.'t_:
'~J' '., ' . ", .. •A .... ."',.. "·ft'-"· ',;-:"
.
.
"
~~.,,(. "1',"
• ," -~.
:,..:;-,
· ~.':'\.,; '¥..
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
al ROB (sempre che ci sia posta; it ROB ha 40 posizioni) ed equi che vengono 1 avviate prelevate queUe in condizione di eseguire, Schematicamente il funzionamento
e il seguente,
• n front-end eli emissione in ardine effettua il prelievo)
;:\~J~. ir}'~ ,,,'''.'~·i ,,~,' ,"
:,1".. "
,n"
i;': ,"<:'.':, ,~~,::;'
-
..
, """,,;,"", 'j•. k":':-. ".,. ,.>.' "':>~':~';' .,.. (Y;=': ~f'::-~' .. -
~
la decodifica e Pemissione
_ ,/i'. ."'. .~W" , " "~'!,;i,' ,,·,~;';;,A', ;'~~: . ~"
""'..-"~'" ': ·'-r'r~:--- - ,. , f'. :"":,,,_';, ,r'; ''':' ···<.~i''-· ,iji'.:-"
· ;"";ii~'" , . " v',~~,~-,..
'."',>;:.: ::,;"&;: ,;~ ~,~.',;, '\:.,.,,,
'I"
.,-", '"". ·..·t;: ,.c·· .,.,';:"-'
,',;,.! 'i<:;:t!([ ~-.,; , •. ,.' >:.
,~''
.;;"o~" ' 1;,
..'
·.::~5~i~~ lj~r' ,.' ',,-'
-~;h.
""'<;"'1"'" ..
~~
..
,,, ..
,.~:.~,,",'l!.' " ••"Y"'.'J
\
'~
,;,
<..
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.
\
!
.::;;,:~~?' ;~\': },:C" "j ...",
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.
I,
~.'.'
,~,
I
,
,I" '. ,
'.
~,'",..
... ,.;.':':;
I
Uril
~
,',,'
:....;(/::'t ·:;i<'
Ruernlion StIDon
!
~.l."
~'.-· ';"";., ,-;'
F,~
~:."",
Intel
I
:',:;'
,/:~t .~~.~.
t'licriCOdt Indrudion S.qUtnur
Rtlir. Unit
j
. ,' •.-'
_-' .).
Urn,
R.gishr Aliu hbl.
'.,"
",'"'-" ",.',;;"
Br¥\(h
Instruction
I
" ,'::'i
I'
Unit
Irntrudilll
I
.'_C' "., .. ;l'.", :,-r.•
Nut-IP
IrIslf\Ktion llt
,
.",'
,.\.>+~ "~',:;.,
,
,,~ .'(1
'.. i!:~"''-': r. ~ '~:~~J~~-, " '.'" :~'","'.:::'.' .,.'~ ."11f,j<'!,,."",
s.
Ltarchitettura 8086
,
lFUO
8T80 8T81
I U1
IFU2
"
II 'DO
RAT
ID1
ROB Rd
pon
Pon
2
3
pon
•
I
RS
pon
a
615
I
pon
I~~B
IRRFI
1
Figura B.38 La pipeline del Pentium Pro, La. pipeline e a 12 s.tadi. La parte corrispondente 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 sono essenzialmente dovute al maggior numero di unita. esecutive; per esempio, a partire cial Pentium II e stata integrata l'estensione MMX come unita funzion3.Ie collegata. a una delle porte. Fetch/ Decode Unit
Dispatch/ Execute Unit
",
'
.
/'
'
.
,
Retire Unit
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 definitivamente estratte dall'unita. Retire, nelPordine originale dettato dal programma, quando risultano completate.
~'
" ' -.
Sana Ie micro-op a entrare nel ROB.
~'
.
'
"
'
.'-
; "~
• 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 coodizioni per l'esecuzione si riferiscono aBe dipendenze e alla disponibiJita d.i risorse (porte/unita),
..
::' ,;: :
"
',~,
• Una volta eseguite Ie istruzioni vengono reimrnesse nel pool e cia qui prelevate neB'ordine di programma, concludendo con la fase WB.
,'-
',
.
.
"
~ "
.i < ~'."
"
s.....'
richiesto questo ulteriore passag&'J,
c~··!
·",'~ ··n"', ·~,r ':~~~. j. o
'.:';,~(, " . .' ... '.',
'-',.}J;j~,!:
616
....
..:,"~ '.. .,"f.. :'"
Appendice B
',i"/y,:':' •. ,..~ ....
,;\~
~."f"'.';
:t':\.":F
L'unita Fetch/Decode
La struttura di questa unita.
B,40,
e rappresentata
·-....!'·~O}:-I
,
~.<; 1, , ',.',
·'.""·" , .'
in Figura
.. .
.. ' _" ..r'.. ,~.
"
""":;:~:~l'
"
,~.' ;',:,';;:,
ElU-Bus
Da/a BlU ICache
Umt
IV-Integer Unit
NIP BTE
I,
Int~rface
D.
IU
ROB-ReOrder Buffer ID-Inslruclion Decoder BTB-Branch Target Buffer MIS-Microcode Instruction Sequencer RAT-Register Alias Table NIP-Next-IP Unit
I I I
- -'".
',-· .",.;~ .• . I '-, "
,
·-:-~;;.':y ·'.ii,.: -';., \' i-',~' ... " .• '·c. .-', ''''.C. .. · '.; ...,.... ".' ,,'" :r"!.",:" ;.-,~
,
\.
ID
"
· ....
~ .• \O.
•
-- '1';·,
:::~:~':.')' ., ..
..,
""""'~'-
"', '," ~ \;
; "
.""'~::--' '
I
I I
<'~~;'{.,
".' i;~':':~'-
MIS
-:
;,;"~j, '~:;'
.
,.'
,'~".. 0.. •
• .
l-;'''~-
"
. : l.~:.[f ';: , -,' '.'
RAT
AI
ROB
".';'"'~ .~,
I
': '.1:.",~'
"
.'4'.>..~ .• :>
..
'-'" j..'
Figura BAD Voita. di Fetch/Decode. 8i faeda riferimento anche a.1I0 schema dettagliato per posizionare i blocchi che qui compaiono. n bloceo ID e in realta. composto da. tre unita, di cui due decodificano Ie istruzioni semplici (logiea cablata), mentre una. tratta. Ie istruzioni 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)),
.
:' , ,'. ,. . -":::\;'~~' :." .. · '",~" ;r"-" " -, .. ' ;,"'*.\'".!,\', · j,~-,,; .......' . I :,;<.!,,'; .
..
·.(~·lFF!.: n,'",.';'\..
{ .)
'~
• .• .,.-.' 1·
.<~tiW>7: ~
_'...,r.,· ::;~:.:'- v '''.,•.'.''-- ',t', ~ '.,' ,~ •'· •. " ......' '< '...-. '\.L","_ ""::;'" .;',. ;.. '~ . "> ,-'.
J
"ii,
: .~~';~:l',:r:. ·
.
.,.... ,._'
Le istruzioni vengono prelevate dalla relativa cache in base al1 1 indirizzo indicato ",',""',''~";i"'..' ', • '.;'1;.":'daUo stadia NIP (che tiene canto di diversi elementi: predizione fornita cial BTB, sta,-i,;.~~. ;' ."'.-/,,:,-.• _. "." .••.1 to delle interruzioni, indicazioni di predizioni errate fornite dalla sezione di esecuzione Y;?'~:;~' : intera). In 3 deli di clock 1 vengono presenta ai 3 decodificatori contehuti in ID, in ~ : "..~~,:" '''W parallelo, 16 byte allineati. I tre decodificatori individuano e decodificano 'Ie istruzioni ,.':,;~, :.: . ,\...•."',,"1' ,'......_" . contenute in questa flusso di byte e Ie convertono in una serie di micro-operazioni 0 ..~ ':~i~:~?·>~ , <'. micro_op46. La maggior parte delle istruzioni sono eonvertite direttamente in singole' ,,: ' ,J- ....;.... , '.. i1-', ,.I M ;t·· 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- ;..', ,',!~;;" .. .;': ;: ,'. :' :li' r';~-" viene il MIS. I manuali Intel forniscono la traduzione delle istruzioni architetturali in .. -f/"" ,. ~ ..'f.',':'. micro-aperazioni. , "rt·;,i.:· c' ·fl., . .' ,... .' 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 , '.,.-' ''-'1','' r';f_;~( ;'_. assegnato un numero progressivo di ingresso. ,,,.,~, ,'r'. ;~,,--.... ,,:<:;, , .. · ,'.- ~:". .,.f.'+~"",~ . . "':"~;// L'unita di Dispatch/Execute La struttura di questa unita e rappresentata in ,:,,;\"·::1\''', " ,,','" ...'. Figura B.4l. -" .. '.I"~·, "', :" ,',. :.<,-
.r:':
~
~
',•• ,.j>
•
,
•.
,
'J,':'
--~
'"
,,"-
',"II' '.
-;' .j, }_'
. ,-...... ; ,
; :'\l.\;, ..'
46La conversione e in forma di triple di micro-op, ovvero con due sarg.enti logicbe e una. destinazione logica. per ogni micro·op. .1
. ., .... -. ·1";"';:':'·,. .II~ir ... ".:~', 'rf,~, . .. ~N" +",~.1,.: '-"'1.","
1 L'architettura 8086
617
\
,.
I
RS
R08-ReOrder 81J1tl!r
FEU
RS_Rul!rvlItilNl Shlion
lEU
Por t C
[U·[llt(U!iOl'l Unit FEU-Flo~ting Point EU
"', I To/from
ROB
lEU
IEU-Inhger [U
lEU
•
Port 2
AGU
~ lOlld
·," ,
Pori 1
AGU
,... Stort lIddrus
Port 4
AGU
f-<
,
I
JEU-M:19 EU
Port 1
. .-
\
AGU~Addrus
Gl!nention Unit
\
.,
..
:,i,
Storr d"h
.'
....
",'
.'. :,:.
I~,
" '
. '.
.'. ;'. .,';' "'.' " ',.'
·.'i~·
.~.;.
I~
{;.~, ~':,' ) $
~~~r
v:;:.,.J
•
,~'i-' <"\,' ...~,
".. '
i" ,.W~·
'.J..'
.''i!. ,: n~
,j,~", '.,'.}.
~.
;)"1' '1", it
:!~.:',.
: . W' ·t': '\l'
,':"'" ':~~",;,
.''7'~.'
:t.'...
'," .' "~,... ~
;i~ ~,
.
oil ',:,1
.,~,:},
.-..;
'i;~~',
i',
.-.
•, ' "r' ~.,
,f
.
l:rh -:..... '1 "',.'"
~I'
,:.. ,
.:fl..'(' 'i~:'~ ~~.", ~,
:. ,,' If'~' '''I(F~
..~\.'If<''"
L'unita di Dispatch/Execute seleziona dal ROB Ie micro-op in b~ alloro stato (dipendenz~ dati e disponibilita degli operandi) e alla disponibilita. delle risorse 1 necessarie alIa loro esecuzione (questa ricerca pub avanzare anche di 20 0 30 istruzioni all'interno del codice). Le micro·op che soddisfano ai requisiti suddetti vengono prelevate da! ROB e passate alle effettive unita. di esecuzione. n processo di selezione 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 speculativa 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- 1 zione e di 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.
I I
I
. I~.
,,
-",,~~".,';,' \to:',
.,',
' ,':.:,
*",.' ©:'
"'"
,
<••~~.,
,~,;
·1r~, :~;];.:
L'unita di Retire La struttura dellJunita. e rappresentata in Figura B.42 In un cielo di clock) l'unita di Retire preleva ~alla Instruction Pool Ie microop gia. eseguite, ripristinando Pordine originate dettato dal programma. n processo di recupero non solo cleve osservare I'online originaIe di programma, rna deve gestire
I
•
, <:1''.,
. "' ~""""~I''-' . ,. ,
,.~,
I
618
Appendice B
RAT -Regior.ter All
II
.. ,.
.
'.
To/From II C(ache
"
\
;;'., , ,.;. .
'I "
.... -,: ,
"
-
'. ,
,-".,',:..,' "
RS-Reservalion Slation
'."
MIU-Memory Interface Unit
Fro m RAT RS
MIU
"
"-
):
'
','
RRF-Retirement Register File \In~el Archiledure Registersl
'
"".' :\,
•
RRF
, 'I.:
;"'\ ,,':' :<" ,"
1
" .. "
To/From Instruction Pool
',,,,~
Figura B.42 Unita d.i Retire.
'.' I" ..,
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.
•
•
" I
<" "
,;.
\'
.~",' I"~'" ·fj: , I" " .<1' ""
".', I..
.;.
,
,>
' ,I;
,. !
,
"",
".l' .'~ ,'. ; , .l~. . '.'~
•
>"
B.12.2 Ridenominazione dei registri
...!
..:, 'I" '~'"'' ",-. ..,}
'{
•
I
,
I
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 I (386) era indicato come registro accwnulatore47, Consideriamo, ques~a sequenza di istruzioni:
MOV AOO MOV AOD
,
..~\
"~~
'" ',"', :i'" ,',
-. '~ "' 'J .."-:, ..." ,
"
. "'.:" ;: .,.~.~:, ,"." ,;t
," ;,"'.. .11
,'I ".
::~
.•
"I
'
\~
'-,'
_....:. ~,', .. -4
"
~
"..
'\':"
EAX,50" MEM1,EAX EAX,77 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 (probabilmente 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
•
,.
}
.
,;",
•
q,
.::. "",
"'. '.
.'\",
'. :,.
-. "
",j.~. ,.. '~ ""
"
"
_. " , ' , "
~
, ",oj
~
,
•
i.,
I."
"
'
?
"
.",...I""\
","'.'
~
",
,
,,,"
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,
, I.
, ,"
".
, -.''
'
.!
'-"';.--,""t; " ,. ~'o<,
J
'-'\::,
'
~
L'architettura- 8086
619
. 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 parall~lizzare, 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 mappatura di EAX sui registro fisko 10 e che quindi questa venga caricato con il numero 50. n contenuto del registro 10 viene usato per la somma. della seeonda istruzione. La terza istruzione, eorrispondendo a un pereorso di «tiusso dati" indipendente da quel10 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, e in grado di ottenere il massimo del parallelismo facendo uso appropriato dei (tanti) registri delle rnacchine RlSC,
'
,
"'
,
,
.
"
: ..
"'
,.
.
.
'~
-
"
~.
•~
"
"' }" ,.
\'i:,
~" ",
"
~'"
','-
J'.; "
:~\
t~,~
11_"
~)' , J' .,
~,
4.:;
".'"
~
}; f':
;,,~:
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.,
,-: .-
:;:::, :.'.
",,',
,.~: ..
B.13 Il Pentium II
,oj;.',-
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
I.
,
~
~,~
,-
,"',".\,
" "
'"
?,
""'"\;i:"
~~
,.
,(
,
"
...,
,''Ii' :",
'At-
.':
..,"!tl
";\,"
~t:
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 13 V, il Pentium II funziona a 2,8 V I permettendo atte frequenze di lavoro senza accrescere eccessivamente i consumi, Mentre 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, •
...' - ,
... ,.,<~~~~~. ~n'
,,,..~.~•
. .;;., <
~
'."." './:. i .:. ....\",'.,.,
620
'. ,j.......',
Appendice B
,. r: ' •. ~' .;~
~
t
.
n Pentium II coniuga Parchitettura s'Uperpipelined e il meccanismo di esecuzione
,
:f
'
'.' I
,I'
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.
,
... , ',"... .;.- , '
,J •
, ,. ,-"
,
·.,.. ··.. , ,. '. ,
,
I
,;
'I•
!. ;';
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'esecuzione 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 'associativo a 4 vie, con Linee da. 32 byte e sono gestite con iJ c1assico algoritmo Intel pseudoLRU I introdotto con il 486. La cache dei dati e accessibile 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 .
"
.
'.'
/"
::..
, ,."',' -.
,
-
.>:.
<.! .
_. ~',. '\
": ,
;'...•
· " I.,.. ..· '
".
,,"
.',
"
'
."
, "';.:";.~' ,
,
,/'"
·.h:'" ,
.
<,.'.,., ..
-,;: ~~';'"
Celeron n Celeron e una versione del Pentium II indirizzata al settore dei PC a basso costo e dei portatili. Inizialmente stato 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 e stata. 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.
e
.\.~ ..:
.~\',:';.'
e'l"· ,. .~.,· ..,~,,~ ,t. , .' '
...
.:<·~;i,:·~·
',"~
,,,,,,I'
',~,;:::'::'~'
"'.,.
,
,-, ",,'.
'.- '. .,;. ".. ••,.'
. ,---,.'0".",\,
.."
,. . ,......
"
,...,........ ".... • >.,. ,.. • ,,';.
/
:~.,~",
"'w" . .., ., ': '! i,
';,t', .
"' ," .,';~.·i·· ,.
j.,:,'
Il Pentium II Xeon Introdotto nel Giugno del 1998, iJ Pentium II Xeon [Int.], nella versione iniziale integrava circa·7,5 mili~:mi 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 stata introdotta una seconda versione can una frequenza di ~lock pari a 450 MHz. Il Pentiwn II Xeon stato 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.
",~i~" .~ 'j__
>
'., · ... ,~,
'.,
."
.
'-", '
".
e
.'~:
..
."
'
:". ':-'.
; ;:~,
e
',".
..... .. .
.;
'.'. , " .I ::; . ,',
"..
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.
'··;~i·'
•
':'-..:'0..' •.... ... ' -'-'1,'. ~.
"
......;,.
~.i.{:;
"
1
i·
L'architettura 8086
~
t·:
621
,
f ~,
'..'
1
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
i
,.
....
costruire sistemi multiprocessore simmetrici (SMP) can 4
0
I
8 processori e oltre.
I"
•
'.;
1d'.•1
"". ....
,
..:,,'..
B.14 Il Pentium III
....
,.,. 'i';
.
'.
';
',I
:" .....
.,'
"'~.
'-,~, "f'
"
i·:
··r.
1..~'
" :,' . ",I ,~
,~:tt.
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 GHz50 . n Pentium III e stato realizzato in tecnologi. CMOS d. 0,25 mi.cron. n chip integra circa 9,5 milioni di transistori ed e sistemato 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
I I
I
a
ogg! .
')J:"
"j .~~.
'.' .;
~E''"t'
:~,,:
.......
'!'.'
,1," ':•.!::•
Nome Katmai Tanner Coppermine
Transistor 9.500.000 9.500.000 28.100.000
L2 Cache 512 kbyte 512 kbyte(lMB(2MB 256kbyte (on die)
Tecnologia 0,25 micron 0,25 micron 0,18 micron
I
Frequenza 450/500(550 MHz 500(550 MHz 500 to 800 MHz
I.
,1.('/'
i·'-'+ f'. '
\
Tabella B.9 Caratteristiche dei microprocessori Pentium III
I
. ·'1.. .:
",.
. ~~ . ".~
,1 ".
fl
1 .~. ,~~
J,~::.
.1,' ..""
. (
,
,j ',';'
.'
,'. .,..
i'
1,
'f,
.
Ii,·
c·'-'...
I"t;c,, ..
•
n nuovo processore introduce un certo numero di nuove istruzioni:
per veiocizzare i ~coli in virgola mobile, per la multimedialita e la gestione della cache. n Pentium III permette l'identificaziane individuale dei singoli processori, aggiungendo un DUmero seriale per ogni campione prodotto. A parte questa non ci sono miglioramenti architetturali rispetto al suo predecessore. . Nell'Ottobre del 1999 e stato ianciato il Pentium ill con tecnologia di processo d. 0,18 micron. L. dimensione della cache L2 stat. dimezzat. a 256 kbyte, ma stata portata suI medesimo silicio, per faria lavorare alia stessa veiocita del processore piuttosto che a velocita dimezzata.
e
e
I, '•.
",\:~'
,J ' .'J ,
,: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 1 GHz e stato il micro Atblon di AMD a fine 1999.
I I . I
I
I
....
.'. '1::', . '. ;:~~~. ,~ .' ." ':: r'i"::' L .,,~: '
622
I
.::, .... ., .
Appendice B
".' ;: ... ,'.:-r __ : 1~\, " '
.
B.15 La forma.esterna, i bus e altro
II
;~ ~
...
.. ,
::. i
,
"
"
,
(.'
...
~,
,
',:
.. ." ,
Conviene esaminare anche come si e andata evolvendo 1a produzione delle CPU Intel in riferimento alIa loro forma esteroa, a1 numero di piedini, alia mod~ita. 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.
•,.'.·.
'. ' ,·i'·.'
·
...
."• ,,' IT '.
... -
PENTIUM
,,,"'" ""
\
...
"1.1:
'
...
'~' I"
• "
~
PCI ...
/
I
ro-
.'.
'
:. ·1 ".. . ''.1' ','I' :'...
BUI dl SIstema
-
"
.", M,moIls
..
..
"""
.,1 "
,'~ I '
, .. ',-{. .,;". .".
,..'
". ,.
,.
.{.,:':":
BUI PCI
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. n bus rischia di diventare facilmente un collo di bottiglia, specialmente con processori a frequenza piu alta dei 66 MHz.
\
,.
...
.... L2 CACHE
,.. ·'. I ".:-
~!;
'~, ~ '~ ..
-~ ~/
.'
-'.,
.,,;' -'. · .'
_'1;
rl:: ,~ JJ;'
"
· ,.' "~-'
.~.
,:,1'1.
:t,:
.:; . ~t.
.,.: .
.~::
·
"
Ilil
~. ~r
....
,',:
.:.. • ~,' " '11«
. :,;
.'
.' '.'
'J\
, , "f I ;$ '
I
1'8068 e il 286 erano in forma di integrato con piedini disposti in doppia fila. Con il 386 e iniziata 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 e stato 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 supporto 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 micropro~ cessori compatibili con Ie schede madri basate sui chipset per il Pentium (Cfr. 11.5). Si par~a 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 can ali 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 J
'::..:"
:,~T
.. 'i n ,
'I.
iW
,
'~
••,~
.'t-
.'
t!
o
-"
>
~
I(
"."
· ,••,
~"
,:
~(
,.'
-t;
,
;
..·\.,-"
· t,..,
:
.I.",.. "
'
"
~
'"
.~,
;,
.....
• ..
"
/; ·1
.
>
,.' ...
.i
!. ,
I :.
1J
, '. '.. 1
..' " ':,1 ,.. .
-..,
,
',.,", I " .. ,I, ,; . 'r" .
.
· ,",.' 1 .,.. ,.' .,,".
~
L'architettura 8086
623
UlCACHE
t·
"'~
...
".
Conl Pentium
1,,,<1.'
'"0
,~.
..... .... -
'
,-~
-~
BU$ dl Slolem.
"'"
PCI Sel
t.le~. R.O..M
I Bu. PC!
:
.
Figura B.44 L'immagine eli sinistra mostra i1 microprocessore Pentium Pro (cui e stato rimosso l'involucro protettivo) nella versione con 1024 kbyte. Sul supporto ceramico il. chip della CPU e a sinistra, mentre i due chip della cache 50110 a destra. NeUe prime versioni, che prevedevano 256 kbyte di Cach~, questa era costituita da un solo chip. La figura a destra schematizza \'architettura Socket 8.
.
"
'
.
;Y
.
l
;-,
:;' '.
.
.:'
::
.>·
::
l,
r
.
','
:.,'
.!' . «.'
;;-'
\{:.
>.,
,'.
$,:,
T',~
.~(..·
W;'.
~
...-,
~. c
!"
(~
"1
:.,
(~
;,
,
- '
..,·.
"
::,
" ,.
.·
~,
"',
,
n
"
;':, 1 >;' i f,
Per l'architettura DIE e stato introdotta una. nuova versione di zoccolo, denominata Socket 8. Anche in questa caso, il nome Socket 8 e diventato identificativQ dell'architettura. della scheda. Una scheda contraddistinta da tale denominazione esibisce una architettura corne quell a di FiguraB.44. Dal Pentium Pro in poi si e avuta una netta corrispondenza tra ciascun tipo e marca di processori e il connettore suI quale essi vengono rnontati. Per intenders~, sulle schede Socket 7 si potevano montare 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 e aperta 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 e piu pensata come un circuito integrato, rna come una vera a propria scheda 1 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 e stata 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. Celeron, - il primo modello era denominato \'CoviJ;1gton" - stato introdotto senza la cache di secondo livello e racchiuso in una scheda denominata SEPP (Single
'
..~
e
1Ji~;" .. ,
1:.'1.
I}i' .;0<
::i;-' 1",' .." .
,~!,
I!~~ ;1'" . .ff,.
.""1"1.'. .
~:lj,.~.
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. 51 Essendo
" .. ,.", ,.'' '
,;~:,~\
· ,'II', ~ ··uc-· ,.:< I' ' ..
624
".', ".
_:.",./i·;·; ".<
·
Appendice B
'.' ".,. I • ,,
·'. I
,-• · .'.
., . ,
•
1 ', ,... " ."',""
· .• " " , I ·
13cm
" •
'"
·,"... ' , ". ..-; ..·..-' ,: . ... . ". j
,
· '
".
,'"
,,;
,-, '-~'.'''' .'1,,,';
.: N ...,
· ,',~'}..1:: .,.:'i:"!~. : ,- .' " ., . ·
· '~"'<" .....
....."... ' .. , '..
~',,". ..... '. '"
...·,
,
Figura B.4S n package SECC Single Edge Contact Ca.rtridge utiiizzato nel Pentium II. La figura e in scala }; 1.
.. ...... . ~
.....,. • .. .. ..•
· .','
~
;l..•
' .. ' I.
Edge Processor Package), priva di custodia di plastica protettiva} rna ancora campatibile 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 il·ritorno 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 e stato denominato Socket 370 (da! numero di piedini). Corne conseguenza si e avuto la rinascita delle scheele madri con CPU montate non pili su connettori rna su zoccali. n Pentium ill} e realizzato in tecnologia 0,18 micron, funziona alIa tensione di 1,65 V ed il 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
e
.'
..
;
,
'
. ',:~ ' ...., ·.
,\',"::, . , ' , , I •.,
".: .....
.
'., ,. '.~~"', ,.:.,,::• \ ... '.. .. ,' '.'
5:1
Anche per il Celeron in versione PPGA c'e comunque un adattatore per montarlo au scbede Slot.
.,.. -, .'
" .},.
:·,f·',
..
~. '.
.
1
'."
L1architettura 8086
I ".,
•
)
625
1"".. •
\
" ,~
"
I I
, Ii
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
.
I .
.;' ,
'-
. ;. ,'" . ,
'}' '\,1-' i,__"'
,
?t;
. "'/"
.
.
',..,
I I
:i',1
.',/ ",' , .' . .. • ••j
.'
" .'
I
.
:1 " ·i' .
.. .
• <,"
)!
I
Figura B.47 II processore Cele~on 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.
~I
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. n Pentium ill in package Fe-PGA 370 si inserisce nel connetto~e Socket 370 gia. rammentato per il processore Celeron.
.
.
,
,:" '.
1'1, .., '~:: '
''l;i,'" ,,"
.' ,
I I I
'0"(." \~1' ~.
w..
.·~r'
""~;
I
!."', I.,
' ...~ .
,
I
~
.,"fl' • 1~_
~:
.
I
...
"e'· ,." "
lI:; , -'- .'..
•. r
626
I
Appendice B
,
'-"
-
• ,i , ..
..· "'. '. ,;,. ',; ", '1 ' ,., ... :,.', ,:~'!. • "": 'i',:' e,"
'
",':
.:,:~I",'
"~'-' '.' ,~,
,
r,:'~""
B .16 Esercizi
I I
I
Esercizio B.2 8i diacuta la funzione del registro BP neUe chiamate ai sottoprogrammi, nel passaggio dei parametri e per l'allocazione dell~ 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:
,
I I
lot f(m,n) int m, n;
/* men
parame~ri
.,
•• ... •. · " .'. " ,
.,,-.,
'c'
'
,
.. "
· i.,• ' "
,
;" . ' ".,
·
'
.
.':'
:,
'_.' 'r ."
,,
,
."'•
'
.' i'"~ ..
', .. :"I~;'"..
,.'
~,
interi*/
{
1* variabile locale intera*/
int x;
1*
corpo della funzione*/
,\"
, '. , .. ,J' ,
..
}
III
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. Esercizio B.3 In riferimento all'8086, si illustri Peffetto dell'istruzione MOV AX, 127
..
,~?:
,-
•
.
'!
I"
"" , ;',.,
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?
I
•
...
~1
•, ,.' ;•.•'
.i. :.
(BX) (Sr).
.. ·'\,
j.
r·
,~
",,'
,.
"
, ' ,,I
I •
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 memoria 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.
:
"::'.
·,",
"'-.. ' ,
t',.
.. ...'
c
'.
~"
,"
'/
'
'"
, ''',
I·
-' '',h'
~
i~
... I[
'! '."
•
I
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.
•
,• '
I
eah, 11 je
Ll
bloceo A
(eseguito raramente) jmp FINE Ll:
bloc co B
(eseguito frequentemente) FINE:
emp eah, 11 jne bloeeo B
,,
.-
" "
I"-
fINE:
, ..
.'
,.,1',~j .. :
I I
....
(eseguito frequentemente) jmp FINE L1: blocco A (eseguito raramente)
"..
•
'
,I "
L1
Esercizio B.7 8i forni.sca una descrizione della tecnica detta register renaming.
•
;1 '1
, ..
Esercizio B.6 In riferimento at Pentium. (0 a un suo successore), quando si presenta una dirarnazione the non in BTB, 1a logica segue 1a regola secondo cui, se diramazione e in avanti, essa non avra. luogo. Tenuto conto di questa regola si indichi .quale tra i due tratti 1 e 2 d.i codice assembler e preferibile. emp
;",
l" .
e
•
•
','
-
1:'. ,".. ~'I
i
·
.
.
,,' ,,'..... ,,f~, ..::'~ L .
,
c L'architettura PowerPC
~,·
.
".;
-I',
.'
·,\
.,. . ·
~
,',.
.
"
·,".,...
c
-.'
"
,'-"
/:'
·1'
'," h'
~,
~',
[.~
•
~
;t",.
'". 1'"
10'
'.'"
,
-\
"
....11 ..! . i
I"· -,
..
."
..
i~;·
·1· '~.
.'~
.:~.
.L',~
L'architettura PowerPC e nata 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 precedenzal 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 e aneor pill saldamente 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 e trovata 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 e particolarmente interessante perche it repertorio di istruzioni del PowerPc differente 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 Motorola.
e
628
Appendice C
,'.,
.;r:·}, "., < • '. ..... " ,:;.~
,
~,,,
·.::;'~~h
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:
,,,
'. ;. ,. ,..
• definire iI modelJo architetturale in modo da rendere chiara la distinzione Era architettura e realizzazione in una tecnologia specifica;
.d
"
";j.',
.',' ;~' : ': ..; .
.-
• mantenere semplice l'architettura, in modo da consentire la realizzazione di microprocessori a basso-costo su singolo chip per I'industria dei PC e per il comparto industrialej
"
·i ,
,.
.~
': '\""}" .~;
_ ~ "r\ '.':.
:'··,t·· , •.H',.,'-'
.C""" ",·....',I '!'.: • escludere Ie istruzioni ehe compromettono 1a capacita di realizzare processori Con .. .:.-';.,' , .
clock veloci.
"
,:"',",'
,,,,,,:,.H" ,~"
'.
..<,:,;, ~,
• rimuovere Ie barriere che impediscono realizzazioni con alto grade di esecuzione superscalare e meccanismi cii esecuzione fuori ordine;
"" "j, ,1, " .. :-:~1.:, ,,, ..';- '
• aggiungere i meccanismi per Ia costruzione di sistemi multiprocessorej
, ., '. .;r.'..",,, ~':"" ..
.'
-, , ....... ,,::::~,.>"'\. ,
,":..')
• assicurare un hingo cicIo di vita aWarchitettura estendendola a 64 bit.
:,j'
.- ,'''}~ ~f. 'j
"~I"",
...
'"
'.-i ,.' ";~':""~ ' ,. ;' "d· l .' ..~,'" '.'
C.l.I Formati istruzione
. .• ,.'.-......1. ".""':.J'~'
__ ,
,','l':,~.:, .
~»;~':":;:'::.
'1,{"·I,·.j,t
,;:,;t~i'~'i~ ,.
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 .
C.l.2 Organizzazione
'. ·,·'i"... . ;::;';;i,,·~.t I
,1!~,1"',' "".... • ~~.. "'~
,'.. _T"··
·
.,' .,
~'I"
.'
<'\'£;:'~, ~>: , ,.' , ',,'Jl: i
·...... .., ... ,::~., ;.','
.;,' ~.:.; " :,',..
.. ~ ..,."'"
, '.,:":: !
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).
,
.;., ",\;,1',
.\:, l' , , "',
,
. ..I."'.'
)';;~:(;:~' 0,
Responsabile per Ie operaziani intere e per tutte Ie operazioni ehe fanno riferimento 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,
if
·
\, ,.,..
·,
. lei sono poi un certo numero di formati utitizzati solamente neUe reali2za.zioni a. 64 bit e sona mostrati in Figura C.l.
· '::... "'.
'.'
.. " .~.
1 L'a.rchitettura PowerPC
629
\
I
"
I
, RT FRT
.OP
"
31
"
RA
0
SI UI
~ "
.
,
"
RT FRT
OP
'
.,
.0
RA FRA
"
EO
RB FRB
IR-
I
RS
FRS o
.].
,
1
e
Ie
11
RT
1
OP
RA
I
~
<:1 22
RB
I
ffij
EO'"
~t':'"'
',.
o
e
lop
1':'
Ie
11
IRS
:::e
21
IRAI~~IMBIIlE~
1
",
o
6
lop
,
"
Ie
II
IFRT
IFRA
I
2l
FRB
I
FRC
I
26
xo
31
~
,
,..
)
'
' ,~,
':';:,:.
",
'I "
'<',
;'
'
,
"
".:
. .t':"
. ~.
I or 1",,========:::::iL:========"" lor m o
, _
o
;:::
.. .
~
IJ
6
Il
IRS
., ~'
.I
IRAI
Ie
3031
BO
t 'J~:: " I' ' ';,1
,',
:
.' :,.! '
,
".:
.. ,;',
..
"/
,'
., :.:
·
,:
'
'.
"
.:,
'
V
Ie
1)·
..
"'...
,
RT RA,RB,RS D
,
EO.Xa,EO MB SH FRT FRA,FRB,FRC,FRS SI,U1 OE ME Re U 80 80 AA LK
Regbtro destinulone Registro sergent!! Scostamento Estensione codiee operativo Inltio maseher8 Scorrlmento Regislro destinazione floating Registro sorgenle Hoallng Immediato con/seen segno Abililazione trabocco Fine mascher&. Record bil Deslin8.zione sallo Opzlone per il nllo condizlonato Scostamenlo destinazlone sallo condhionalo Indirizzo 8.sso1ulo/relativo 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 e relativo alle operazioni. di caricamento/memorizzazione nei/dei registri. It secondo ~ relativa alle operazioni aritmetiche e logicbe, sia per interi che per numeri in virgola mobile. n terzo formato e p~ 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 e relativo 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 ma.c~na . , denominato LINK, come eventuale indixizzo di ritorno.
.. J.... .f·
' y'
I
31
,'
.
I
,
I I
I I
)
I I
I
I
..""1 ',
;t~;:~
..
630
:~',
Appendice C
-. .-
• 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 e annegata 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.
';. , ,·1'
'
.';',
"
, .. H'I"~ I" ..:'1', ",r ,
"
- I I
~
r
T
"
.,'~
"
,', ,
'I'
" ';
,
"
,,,,., "
"
:, I ·"',":' ,.'
e
'c.j;
·
...
-'~~,ft' "
", , . 1-;. ",
• L'unitil in virgola mobile (FPU).
.. _.
-
l
I I
'IIatta Ie operazioni in virgola mobile; a tal fine essa contiene 32 registri a 64 bit
dedicati a questa tipo di dati.
'::..,· t'.. .' ',. .' t: " . ,',' "
t
,. Le tIe unita IU I 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 diverse 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.
" ;
..
x;~>';' ;/ ,I "',';'.
;.
",~",'"
,.,-",.,~
·
·1"
·.':·~'~-
.
"
, ' ,
• J ",.:",
·..
." ,
.I, ,
I.',~~:,? ',r .','., ,",,:' ,
-. ... ·.
-.
·. -.
J
,.'
~
...
•
'. ~'. -I
e,<\~(
'"
UNITA' ISTRUZIONI
-
,
,~"
''"" .,' :,' '!- .~ '/'
---
';'
" I
I I j
ISTRUZ. §BPU
[
EMISSiONE
•
,;
.' I'
, . "• "... ".'. f· •
",
'.- '1"-:
I
,
I) "i ,
"':
"~"
:,
,, . >.. '
IU
FPU
Interi
•
,
,', ,-
,
, ,;
..•
"~
I
, i"
,
Floo.ting
,.
CACHE DATI
I
,.
·
.
'. "I
••
CACHE
",·' I ,
ISTRUZIONI
,
~'.
", , J' , "',"
MEMORIA
<0
I, '
••
-
-
,
IJ
Figura C.2 Architettura Power PC: relazione tra. i principali componenti. L'unita. istruzioni e responsabile 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 ",
~
,,
'.
'
'. f'.'.." , ;
· , ;:: .., , ,
', L'arcbitettura. Power PC
631
"
"',
C.1.3 Caratteristiche e prestazioni di alcuni modelli
, , '.
"'"
e,
;
Riportiamo qui sotto le caratteristiche di quattro CPU PowerPC; Ie cui prestazioni relative sono mostrate in Figura C.3.
'
;
• PowerPC 601: processore di medie prestazioni utilizzato principalmente in calcolatori personali da tavolo e in stazioni di lavoro.
.
.-,,,.
/~,'
.
"
~,
-k
_' .. II"
• 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. • PowerPC 620: processore a 64 bit a elevate prestaziani, utilizzato in stazioni di lavoro, sistemi server e sistemi multiprocessore.
J,"
'.,",
~'
?<~. r I ';:,:'
"
"~' "
•
---
601 66 MHz
•
603 50 MHz
':
_
;~
'
·'
,
:'; ,
,
)'
604 100 MHz
:
"
.. >' .. ~
,r
620 150 MHz
,;,::'
.•
.
~,
...
o
100
200
300
...
400
500
Figura C.3 Prestazioni relative di processori PowerPC.
'
,.
."
"
C.2 La CPU MPC 601
n 601 e considerato
,c
."'.. ,
:,
,;
~
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] e in Figura CA.
...>,
..-, ..
"',~I"
~'I" /. !,.!,~,~, .,·::'~'i:~
I
I
632
.... ,
·.:1.\1 "
.. ",",
Appendice C
'." ;/. ':'.'",•
I
I I I
r--------------------------------------------~
I ,
: I I I
PnUno <1.11. Llll'\lllolll
I I
....,~,
I I I
UNITA' rSTR'IZrONr
, I
I
;
I I I
IS'I ROzroHI
~
IE
I
I
,
I
I
',,",
I I I
I"'" I
...if,.,..,.
(;]
EE11Zl
.... n>.
r
',n
I I I I
FPU II'PSCR putl.
'""
I ""' I
(Islr. e dati)
I
I I
, I
UNITA' DI MEMORIA READ
WRITE OUEUE
QUEUE
SHOOP
,
")'
·,, ',:
'\,
", .. . ..;
,,'.
"
.'....
"
.....,
;'
,
"
"
".. ;
,
.'.. '
"""""" "n
, ,
I I
INTERFACCIA AL SISTEMA
I I Il... ___________
~----
--
__________________________ J
I I I
,I
BUS DArt (64 BIT)
BUS INDIRlZZI (32 BIT)
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 e unificata. e si osservi che il bus tra la. cache e la coda istruzioni ha un paraltelismo di 8 parole. MMU e l'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
Z pUt.
~.
',.,
"n
a puol.
B
.'
I I
"n
,~.
'"
" ".. t!·
,,,,..
32- KB
CACHE n!M:O
-
·..
I I I I
IHDmrzZC
.
I I I I I I
Otlluuno
"
·
,, 1
,
..... •-
,
\KDIRIZZO
1mB
, I
ffi
MMU
I I
I I
BPU EEl
m
V
·
I I I
"'"""'''' 1
EEl IZl
(;]
8 parol.
!D''''
ru
".
I I
"'''
I
I
"
~';':"«
I
I
"
"
1
.' "','
\',~
X
,j:
"
. . ,,': ...."
L'architettura PowerPC
C.2.1 Gestione della memoria
'.
Prima di illustrare Ie modalita secondo cui opera Punita. istruzioni, esa.miniamo per grandi linee gli aspetti legati alIa memoria. MMU 1 unita di gestione della memoria, gestisce fino a 4 Tbytez di memoria vir· tuale e 4 G byte di memoria fisica, La gestione della memoria virtuale neU'architettura PowerPe e stata deseritta in altra parte del libro. 14 G byte sono divisi in: (a) segmenti 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,
"
~'
t. --:
'
I'"'., .
\.
UTLB Cache associativa a 2 vie, unificata (indirizzi di istruzioni e di dati) di 256
.. .
'. '
".'.
ITLB Cache completamente associativa di 4 posizioni, usata solo per Ie istruzioni.
,:\
I. ~;,
,
"I .. '
...
;;,:,
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.
I,",
La traduz-ione procede nel seguente modo.
,
':
'I' :.
·t:·,·.. .
. 'r.' .....
'!
• Istruzioni. Viene prima esaminato ITLB. Se la ricerca in ITLB ·fallisc.e, prosegue in parallelo in UTLB e in BTLB.
" .
,.
!. : •
" ;I~:
:~L:
" :::;..' I';...'" . '.
, , ..' ,.
'l>
:h II','
"
'~;',
, .'
~
"~,'" " .
\. II
I- , I
I
I.'" "';.
)-
I
POSIZIODl.
,.,'., '
, I.
~/'
,
633
• 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 e di 32 kbyte, a 8 vie, uni6cata. Le linee sana di 64 byte ognuna delle quali e divisa 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 e prioritario.
I1'" I
I· . \ 1- .
:'\!
J
C,2,2 La coda istruzioni del 601
.,\'
',(,
1.
l~.-
;;,c.
e
" I -,,,:. I ".
I/." ,
"" "
..
'.'
.. ,.i~'
,
Per comprendere Ia pipeline del PowerPC necessario prima esaminare la coda istruz-ioni. La coda del 601 e mostrata In .Figu~a 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 e possibile , a'ogni colpo d.i clock, emettere
c ,I.. .
",.
',I, ~' '
,
,I' ,
,
,,',
,t,·
'IT sta per tera: 109 kbyte, dove lk sta per 1024. 30vviamente, si ha un trasferimeDto di 256 bit solo quando la coda
e vuota. (a causa dei salti).
I-
I
",I~, '; ·!.,j .~.;
..
, ;,: "t· .i "'( ,I
,634
Appendice C
•
, .'-,., · ,,' '' "
-
.r.;
-dalla cache
- I
•
,
I
!'\:
~,
",'
.,(> I,
~,
'!
IQ7
,
IQ6
.-
IQ5 IQ4
.
" . I
'"
IQ3 IQ2
-
I
,
IQl . IQO
, Logica di Emissione
t alla IU
I
...
,
I
..
-
\
,-
••
·I'
";- ,',, •~
1:
'.', ~~ .<' ..":' ~ '..,:" "' ': ,,-, 'Ii .,', 'fi,. '.
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
'.-
,'" '.,
',:, ,", " '", ,:, '
"'';'
..
-,~"'"
IQ7 -) Vuoto IQ6 -) Vuoto IQ5 -> Vuoto
"" 't
IQ4 IQ3 IQ2 IQl IQO
".,' " . " ','" ,,' "
-) -) -) -) -)
".
,~, ,~, : '
.,. "~
Istr.FPU Istr.FPU Istr.FPU Istr.BPU Istr.IU
,
• Le istruzioni presenti in rQ2, FPU nella BPU e nella IV.
rQl e rQo
'i,,9
;
,
.,
· "j"
vengono .mandate rispettivamente nella
'.\ '
""
..,' "1: :"; \ "
Al clock successivQ vengono eseguite Ie seguenti operazioni:
,"
::".:'
,"
, .' ,~
. .,. .
'
,
.
",
• Le istruzioni rimaste nella. coda vengono spostate verso IQO in modo cia compattare la coda stessa. Si ha cosl 180 seguente situazione,
-.
!V
,;".,::
'!
(
· I~; " J
aHa BPU
Ilolla F'PU
.I
,
',""
t
Figura C.S Coda istruzioni del 601.
I
.
',\"
-
..
~
,-
~
·" ., .-
-. -
I
lQ7 -> Vuoto lQ6 -> Vuoto lQ5 -> Vuoto 1Q4 -> Vuoto
IQ3 IQ2 IQl IQO
_.
-) -) -) -)
Vuoto Vuoto Istr.FPU Istr.FPU
",
"
. ''·;-'E-
,',' ,.
-', ,I '
.,;,.',;~~
\
.p.~,
· ,.""
.;;
L'architettura. PowerPC
i
635
'-,'
:'
,:
• Le posizioni vuote vengono caricate con istruzioni provenienti dalla cache.
>, , '
!' "
,
,
" I
"
,
~;
.' ~,
"','
I~ ,,',
~';\',\ ,
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'
C,2.3 La pipeline del 601
•
~ !
::' , '
~~,
~~:
';'.
La pipeline
Ii" '
.,,a,,
e rnostrata in figura C.6.
!V,,'i;·'
-oj , ,
Pr•• u1.""'.lllc t.t""",!o"t ~a.ll......,ho lilt......
,1'~'
"!'"": "~ : 1'-"
I" I" I" I" I" I" 1I
t-'. ,~
"t
:;,
~\" ~,
,j1.,,'
"'
' r,',,· ":' :' ,
9\~r'
". '
~
[QO(N [100."'.1
",!
1':-t:' ' ' \:"..,., 1"
~.
·li~
'y "
."'
,~ f;.'-
....
",U lu'ler ",U 0...0<1.
-
I
lU IIWr..
I
~~.
~,.-
'k' , ,,'
I·,i
trPli
Eo.out.t I
I
lU h.o,,"
lop\)
IN
,, !,
I
f(J':
".,
..
"
";
.. ,
-
U [ ..""to.2
"
IJo&djdou
t
I',"
IJ
"," ,
,... ~':
I Wr1tU...,k
I
I
l!.it.~
I
Figura C.G La pipeline del MPC 601.
'Ji'il' ~,l
.11
~;
',;'~'
,
,~,
'." ,/.' ,
,
E'·.."i
.
~
~>:;
N,
~,
Le istruzioni vengono emesse dalla IQ verso Ie unita Del seguente modo.
.,cr.:' " ,
<~-~
~':~:~,1,f; ,d, co'" ,.~-{.",
,·i,;.:,-:J:
•
636
: 'I -/.,::
-,
Appendice C
,. r
.-'
::.:,~ .~, ,
__,''''''''
-_. ";'':",i':-;.,
• Le istruzioni intere4 vengono emesse verso IV solo dallo stadia IQO, nel Quale vengono anche decodificate. Esse quindi sana eseguite in ardine.
':1
':,,' .
'.
,-;"
'- ,-
" ~:-:;-
-
• Le istruzioni dirette verso FPU e verso BPU sono emesse dagli stadi IQO-IQ3: esse possono dunque essere eseguite fuori ardine.
"! .....-_. ''-,
'.~
...":',' ., ,
',-
,~.
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 e presente un buffer. Questa serve a due seopi:
o svuotare IQO anche se IV
e impegnata nella precedente istruzione tra interij
o dar modo all'istruzione di attend ere, senza entrare in esecuzione, se non sono disponibili gli operanti (prodatti da una precedente istruzione, non ancora terminata)5. Quando l'istruzione ha completato la sua fase esecutiva, essa passa: 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.
La maggior parte delle istruzioni impiega un solo cielo di clock nello stadia esecutivo, rnentre la moltiplicazione, la divisione e Ie operazioni su parole multiple in memoria impiegano alcuni colpi di clock.. perc 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.
ru e
• 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 esecuti vo.
· ;- ,.,.:,' " ,.. ·· .,. ..:.
':'1'" _..' , _.', '" "
"
.:d -~~: "1
':,-'-"
;,:"~:. ;!
~(;':, .", ,'" ,-." ~":;:'~' ,,,p.... ,;
••"".1 ",y.....
: ~.~ · ,,:.,.-,.-~.
,.,,:,:,;,),
,.'j." ~ :;:-.:.. ~,:~,
,",' ,':;1-.(:' ., ',. ....
"
;,,~,::,:;,,::'
.'• .'-,, ..,'.'"" _.:.• ,_ .~. -.,'" ',,;
,'.
,_~
.. ,:f:1iC,
.: '~',,:.,.~;-O'.~'.
"
:-< ;i.i: · ',?f '.., I.
'-,'~~~~/ ;. ;:~,i-r:i .. ;",.'..... -
'
"'i'. ~\~;<
. ::;:,,~; ~
I" p
_
",' :'j~~;'i ~,-(~:':,
, ,,,,.'
:..-
':<";';:' .-,~'-: -,.. ",' ,._,,-
. :; •. ;~~~: ~. "': _~'::'-1
:.'{' _,.'_. ,;c-·· -~,:." --':"
:::.~:
~~< _
.>-,,~
:"
-,
:~'::',
;-,-:
. '~'
-
,i "
,.i'"
,,';.
,:'-
4Si usa questo termine per indicare Ie istruzioni che in sensa generale corrispondono a operazioni
-..<
tra. interi e che vengono trattate da IU, ~Si 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),
:,:'_. ".
..'···;:'.i·
.,!" ..
,
".
'.', ,
i<'
I
~,'
: 'j;('
'~,:,
L'architettura POW"erPC
i
;.
637
]
l. ,
!'t.
,-,
manlenimenlo nell'iQ
0
Iwz
Rl,30(R2)
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
7
bub
FR6,FR-4.J'R2
Stadia di decod.111ca
~,
I·. :
Stadia e3ecutlva ]U
." , -'
'
Accesso alla memoria .,' ,'
Scriltura nel rCiister tile
'
"
I~ •
.,
Primo stadia di esecuziane FPU
I i'
.
Secondo slacl10 di esecuzione FPU
"
r\','.
! ,:,'
,
FPU bWfer
~·r;. t'"
].
I,
IU bufter
~",
;, 'I",
1
I·
""
.
~"
"
. . ' l.
,. ::,:",
b) Sequenza di istruzionl
a) Slgni1icalo del simboU
\.
~. ~~;' , ';'1
' ' \:i:
..
" ;'1' ' .
o
': ~:.; -; :
"i' _.r,,-· ,~;-.
•
3
2
1
o
7
6
B
9
10
l. .• \
,,..,, ~. fd;;. "
. ""~~" ]~" C,;' ~i '
• "'"
:i ij~~
-"', ;,.•4
/:!};." i. _J:r. t
~. Z<:>-.. ,~,/
<. i:~:"
~:',: ~~':
p'
''II :,.
"I' i: i ~t.,;.;, ,;)- :-'<'\ ' .~ _.
',' ~' :;:.. . - ,,,,.",'
,,'I
!
t=rl:J;x LllliLI WlLJ . I l I I
I
.
I0
Iwz
[lada~
0
I
I
I
EX
I
(
I WlLJ I
I I I
i
I
I I I I
I
I I I
I I I EX2 I WE I i 11 I I I I ! I I I I (]la~ I wi EX21 WE I I . '( I I I I I I I I I 14 'd~ I I EX I WE I I I I I I I I I I I I 15 !'d~ l:X.l OX2 I WB t · t I l \ 1 I I I I I Is.~ LEX L!LI , , 1, I I I . " , . . " . , ' . , 17 !,ub~ D I w I EX2 I
12 'AddliiBl!!
D
)
[!:Xl
I
I I I I I
WB
I
]
c) nusso islruzioni nella pipeline
' , ";.,
;','
EX
I
i
(,~"
:::'.~~
:' ~"(
.,' I ~~:,., t.i~ ··· ;j;j ' ::>{; 1,.\ , ::;. ",'
.".
clock 1
.
_:
~f':'
~,: ". 7'-/
-:"
.
clock 0
-.
.
.','
.
".,.' ff!,
'J.-
,'1" ,.,.
<
clock 2
o aaa sub
A
d
A
.d 3 tadd 4 add
a a :lub.
clock 4
clock 3
0
7 bub
,
,
,
,
1.
R
I·
6
B
,
clock 5
,
,
,
,
,
I
';:"':':
,.'.>
1:, ....', .".'
, ", :'i.'
e 1i.:.'-'
"~ ~'{ ! t~
\ ,'~I'
•";.1. 1 ..' .,,, -'.' ..". ·, '.' ~....;;:
..';',:. ~';
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,
l
..",j\' ":.';'~:';
':,;f.'~''';'' '
·I
638
Appendice C
~"':i";J .) ~I' .' ,': "
"'
.~ ,,~.'
,:'/,~I:"
'I " ~':~' ~ .., .';'\.':~~;
," ,,nt; 'I~
.. :~"
• 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 destinazione viene prelevata in anticipo. Le istruzioni d.i salto incondizionato vengono sempre 'anticipate per quanta possibile.
·- \ .. ) .'
"," "
".
::.ti~(\l;: ":.: ,:':, "."
,
' ", -~. "~' -
· ·'····'1· "",,:' ,'.. " \;"
'f" •. ( •. ,:. ,:..1
C.3 Un esempio di fiusso istruzioni per il 601
I
..
- ,,\.:> , " · ,.'. . "
."
"
'
::·~~:t\~': ~.
., '.,.'-,,',
"
, (0-,., " .
I
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.
..
-
:"-".:
>~~ll' ', ..' ' I
,,~.:;.;;
;'
"
. :.~';"'''
"
• ".' ". ' o
·
,c- ... _ ,
.
- -":.J",,,,w"-,
.
,':!.T~< . '.' -, "
:
..
.. ~.:::.~::,
.. -
• clock 1 - Le istruzioni 1wz(0) e fadd(2) vengono inviate alle rispettive unit.. di , '>~";;'-:y : .. 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. _>;i,S~:tt· ; ... '\'oJ"' '., , 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 IU 1 per essere - . ~':"'" -"....;,'\: -', inviata deve trovarsi necessariamente in IQO. ',:'",.' ',.", '". • clock 2 - L'istruzione lwz si trova nello stadio di esecuzione (dove viene calcolato -_,'l~:,:~~,'; _":':""':, · ":'.•-, '. I ',' " l'indirizzo per l'accesso alia memoria) mentre 1a fadd e nello stadio di decodifica. ".,":: ..; . ,': .t· ,< 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. ;;:Y·;~."I ,;.~
.
'
,
\
·.
',.
','
'~
'.'~':'
-
-
;""~
I
,,
"
'
..
-. \
'. ~:~ ~",,~,
• clock 3 - L'istruzione lwz si trova nello stadia MEM dove avviene Paccesso al',r~;:';, ~ ".. ",: la memoria, alia fine di questa fase il dato e disponibile (ipotizzando un cache ./:-/<'~'. hit)i l'istruzione add(l) e nella 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. . ,::.',', ,:' ,
-
I
• •
l
• ::,.:., "'.
_.
- I ••
-
j
.. ..
• 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 '.' . 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) :·,· . " trova nel buffer della FPU. . '..
.-
,,~,
• 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) e nello 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 e passibile 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.
":",~ '.~
r-" ... ~
, .'.' ! ~..
,
, ,.
,.;, ,.
<,:';-':,
· ..... . .;,,- . . ,
.
, ~ ... \" ,
. ,i v ~,
,,;:;,f\"
'~'.'
..
,
<:,\)
' •. ,,.'~""
\
,,',-~i-:j.'-t:;. .. ",
"'
L'architettura PowerPC
639
• 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) e in 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.
'
"
~;;: .i
"
.'- •
C.4 La CPU MPC 604
':" ,
"
I.
,
.. .
11604 [Mat94] e la 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:
."~,'
:;-': '" ., ".'
-
-,
y'"
;r:-'
• unita in virgola mobile (FPU);
,
'" :,;, .. :
,'.'.,
• unit.. trattamento .alti (BPU);
'
1';-
i
• unit.. Load/store (LSU);.
,
'H> l",
• tre unita. interi(IU), di cui:
~""" ";ir
.~...
.
'~>-.
o due singolo cicio (SCID)
;l~-~'
'?;"'-
,;1:~. .~",
o una multiciclo (MCID)
~~, ..', :?~:
.
~{
{~.
~l·'
' i2':: , ,1;"
.
~~,:::.
~i
':r;'. ,
,~.
··:t ~
.,':
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.
'itL ~,
!':f': ':-', ~
:of••'
.f idl' . .-.~" . ,;.' "'»'if.. v"
"
).
"
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,
.t
~'
:;;(',., ,v__
;,I'."
r:(,
,.f,. t •.
.-;;
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'istruzione 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.
.:.
.,;;;,.; ~ ...
. -';:;-.4:,"",' ;. '~.:.:~:-l, . ".;:;-;~!;~;: ,,'
·
;..~;;.,."
-.1 t:).,:.~ '.I.,;~,
640
'~J.'._
Appendice C
," :;~;,"~
- '-;-'1:":1
/.:",:'._
·.--d~
. --:.;.<~:. .--"~-',-
-
~~0
~
~
- I•
~
N
0
•
~
,,
~ ~
.,
~
-
c_
..
~ 001
~~![~:'~'i ~:~:, ~i',! : ~,~
~
~
~
i
~....
.,
~
<0
,'-,~,
';'.(;.::".',,':;'" ,
•.d
"·','i" •
i },.'
,.,_.~{,,,
:,;;:~~E::~
,~
;;
~Q
-
;&
';"::--'i~S.::::' ,,~ : ••,-.,;••
~
.: ·:~··:-t~ . ;',
~
'~:;,;;::r:~~c
~ c ~
~i~~i!iP;~'~=:
',,"" ,'""i'i "I: ~, ••• ,::. 'ii'&'~' ",. ':,':';":': ~:;ji'i' "'. 'i.""'"
'c :;l rAJ
. H §u '6 .'i":":fl:-:~':;':""-" ~.[.~~i.Si cr: E m£ij::::.:::;::::~:!;:!!:!:;.!;
~l1.lJ ~
o
.a
lit
"'0 "
f
"
rrl~ ~
h"~ N
~ E i"'i~:i ~~lllllliil!!11 + ,.
.
r------n tI C
• " ,-• "
• • • c• " ,,3
-, 0
0
8
• < ~" ~.s ~
- ,-
$ ",c" 0
~
•"•
~=
o
" ~,;
'"
N
,J ~ ~
.
·~"'··'m·'m itI'~~:,' .. ,,:'
J.~ !~ ]!: i! ! 1!'i: :
'1:1
t:
o ...
,a
':;l
1!8:" ,.,. =,11 ~
S~~;~
J~
~L*:::: !mi1H
~
00
·
".
-.·.i'-·" ., .."....
t.·~·t;,:"'
'l
,;"~~~' h ,...
_.
~:";~J¥~;~;' '. '/!"I-i!~
~ 311
~
:l
0'
•
~I
;.'.:1'-'J';~"
,,';:~.1.;:'
. "',,:,;[;":1";.'
~I ~
,
o
N
~ ~,
f')
N
~
~
"~.
"-;-':;~;'T <, .., '.
"
II
~
L.U,
~
'.:".1:;;:'''' f';;':":, .,'
~.
/il
•.
.- ._.,!
~.}~~'~..
IDl
Q
~
,f;..
A.iW{
~
..c
'.'
·<2(';
-1.,~ , '
-
I" '"
'.
8
~
S"
, ••
.-J •
c
.
~
"0 •
is
:;:l . . . . . I.
':~~~~[h~.;~
!!is
~i iiiiiiiii ;i:'!i
~
'. "1""" •
~~
~IF·'~·
-_eO.. .e: ~~"-
,:' -':'
~
,~
< ~ - <"
~?~:~
•
,I -
~
•
,
.~.
: .... 'j
':'f;~:!;';.~"
_.~s,'f:.:J:.":"';:·
~·:':.:~;;t~;;·:
','.'.i.:(,-.:' ,·fc//'·;' .,.J: ~" .. ,-;;'.':.-
,.(.~
,,~:.;.'
..
'1 .. :"
',..,rF :~::.~,'
~::;~~x.
~.:(;~2 ,':
' .... ; " ,'"',
·
. , .,.'... ",
.
'
"
"
'.'
''''',,' ...' ,
. :¢. 'j'
. ~ ;·.f.\'
'
.
~
..
1-
, "~I
'" '. ";j
_,
.J.
? :-~ .,
."
L'architettura PowerPC
641
~
1-
:;\: :, ..
F '.
,~~. •• ,
/i":
:-t.
dalla cache
(4 parole)
I
-
-
CEl
DEQ
:'.:;J>Il!'.'::
CZJ
DSQ
................ ~_.
~:::: ::-J~'_
-
;. : ~ .~ .
':'::I~;:::
I
1-
~~::j~i:~~: _.- _. - .. .. r
i,"
,... '.10~ 3.',.
..•. '. · ~Qa'" ." ' ;.. . ". ':,::lQ'l .. :. •
•
· '. '-' ,,'.
•
]-
l
'
• "-': "
• ",I, ..,
;;", .. ~QD.. ',.:u
I-
.;,--
i"
Loa1cl,l dl
ft:·, h
emisslone
~f
V.rllO I. unil.· dl ... eu1:ion.
t
0:"
~~ ..
[
i
)-
-
I
Figura e.9 Coda istruzioni MPC 604
]-
;:r"
....i:~: ~'>'.
l-
I
,~-,
J'~' .,.r.. -- "' "··· .. ,. ~-".{. ~.."-' ;\:," ',,,
' N.;,
;.~,,:,.
~T:
",,;.,
,!;',.:. ~'-"
.:t.
trio:.:
i~>
' 1"'",'.'. ..:~: - .j.'
·i . .-;1;'
:-..;;:' .c'
~i' ','.
!.:,.
'-.;-
~{
: ~L. ,.. ,
' .
CA,l La pipeline del 604 La pipeline del 604 e rappresentata in Figura C.lO ed e costituita da sei stadi. La stadia di esecuzione e a sua volta. castituito da 6 stadi paralieli, corrispondenti alle 6 unita di esecuzione sapra menzionate. Quando e possibile, atcune iBtruzion~ combinano 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 e mostrato il dettag1io ~elle pipeline dei differenti tipi di unita di esecuzione. DescriviatnQ ora i vari stadi della pipeline, mantenendo 1a stessa teiminologia Motorola. Fetch (IF) Questo stadio e respoosabile del caricamento delle istruzioni dalla cache e della determinazione dell'indirizzo della nuova istruzione da caricare. Le istruzioni vengono paste nella coda istruzioni. La coda ha 8 posizioni come nel 601, ed e divisa 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. Decode (D) L~ istruzioni che si trovano nella DEQ vengoDo decodificate e scorrano a gruppi di 2 0 4 verso la DSQ.
I-
1-
]I
j.
I•
).
'i'' ;'~'
-.. 'I';,
"/.
"
,;~.
.,.......
i;f' ,
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
)-
.
"",I'llt\'
I .4",'I;ljl.
•
"~:~{'~W:', ~
-.
642
;i',-. ~P.j.· ~
,,' -:" :'l;J;:,l' }
Appendice C
'··I'''~
1
"
.. ;.:
<
·,.v,;~i·:
,
"
·I:.-:~:·I:
'1!;.·,n~:;_
'''l\';l''':~ · ':',~I'!~~:~ :
,..
-'t:·· i ' )
r",kh {IF} I
\.
.
~
;.,.
'. P:'" \< ,,~r".-I
Y
,,'.iJ,."
~code
;,,t.::};, \ •...,.
'.,.,{'v·:..: " ·~c ,
(lD)
I
-'
",
,
.~.,
~
<'(;~' ','
'~.,';':
',.'"
~;:,,;:w.~
_.
""~!('
\
'i.patch (os)
r------------I
,-
:"
\
..
:;;'7~ ~:..::--
z
;;)~lUl
SClU2
-- - --- -- -,
. -,i
~;:::::E~;'"::'~.~(EX~) r BPU
MCIU
LSU
I
~:'>~~cJ:~
"I;~':" '. .',"',-",;.t'."
:';~.'''''
':.
';: ~h''':
/,;ji":~ · ",.,.i,;
"
~..
",".~,
"
I ";",~::L':', · ,"'",
,~
,
,\..~.';.::;.;;.
'-----------
--
-
J
"~,'~;qf{ " ',,,.
...~'t'~'~~;', , ., .
-.n ~~~;' ":..';;: ~;',
...
,
-I I \
-
I
-'
--
I ..-. '-,
•
....-",,' jr~~' _" "
' " , : : 'C'
.,,'}~ ':,;:' ' ....."., ..
Figura C.IO La pipeline del MPC 604
· ,'.. -:. I.,
.10... '". '.":;::!'::.-,
·.. 'I: ,,,:.:i:
",', '., ..<" ...;
\
..
-
';':/}k::-"
..·.",.l,~:f::~ "-~ ", .. '
",
',.,"':i:,(::~:
'. (":,':';\"<
"":'':''''<'0
",,:':,,(',:'
' .' ~< j;' !, I;' ~'.!'- , . ':~'~'
." ••~
•
Execute (EX) E 10 stadia d.i esecuzione delle istruzioni, ha durata variabile a secanda 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 e terminata.
' .. " .....
.' .....~.-
:' ::'~'r;.;'} "':'. ~~"":'" .,"J:,,'~,," · 'f-·'· :·:~ri~.-
'.:',,',J.. '.',
· ','i ' ',., :,
'.' "".'-'; I,~ .•
1
,
;'"
<~":'~
WrileBllck(lIB):
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.
-. ..•
,I '~>"~I'"
",'
'. r, -:'"
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. n reorder 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 uno stadia a parte.
e
.'
· I.,;"'-"';: '.'" ,~...
;:,.'~
:),
, '\:~ ',of'; "j; ( ' " ".. •• :;~." " ;" ..
..
.-" , "" "
· ,'"
· "".., '
"
~
.... ';,.'"
, ..,':.' '-,' .. "
~,,~.::,,~:.: ;..
,
,:~",.(,~t;~: •• - ~
',:":,
,...\ ', f
;..~ ."i,:.c
'.
•
,,'I~ ". "~' ;
..
""
"'~'~';:~'
·"''''','' ,.-,,..
'
<:;~~:;.i~\
I
.~,),.
••.•
~·:f.'
~:;:",'
},~,::
L'architettura PowerPC
643
,:,!-.:.,
"''-:'' ~.
·if·, :'i:~:
SALT! CONDIZtoNATI
..: '
~)"',
r.-.
hlc.b
Decoo. DUpalcb '.•4.". 'rd.... ,•• d.t\. I., '. ' .,''., I
'"
Y"
\:'it',.-',
"',: ,;- ,.
....114.'.
eompl.h
t.>.c"le
Cornplrle
.~-.
.~-,'"
INTER!
;1,'"
:,c,:,\ ,,"
~~~.
'elc.b
DoelHl.
Dlspolel<
__I·" 'I
~:'''''' ''''1'',
'I'll
1< "rr1§
;L.
,;;;. __••'
~;
:-,:_
.,"
',~:,
;~,,:~
LOAD/STORE '-Ell"cute-'
r
I
Ce."".
r'-:< "I
llUp.tol<
~~o.
each.
I~:e,
JJl(o.
C.... pl.to
n
"" ..-.
""-.-'
'~',::'
~~.~'", -, :t, '.
VIRGOLA MOBllI: r'lcl<
.. '
D.nd.
.
,
~f;;
:<
,iI'",;'
Figura C.ll La pipeline delle varie unita. di esecuzione.
""'"
~~t·,
''''.'''.'l"I·,
.. J', -t.:, '
"';;"".,'
..,.;. --e.Y, J!.';"
,
Write-back (WB) E 10 stadio che scrive i registri con Ie informazioni contenute nel rename bufJer.che Don e st~to possibile scrivere nello stadio di completamento.
"-'.
'~':,"
f'
; .-'.'
'I' . ," .
C.5 Un esempio di flusso istruzioni per il 604
,.,~.
;"'1,:,:.;.".
"~~'" 0 "~;: •
' t, '~'"
',
'of), ,'. 'k:,
~
"I.',".,
"F~,
.:t",
-
,::~\,
:,!,~, •. ,
4,'"
·
.-
_~
- T.;~.~',
, ;I;f."
In figura C.12c e mostrato un esempio del fiusso ist.ruzioni Del MPC 604. Si puo notare come Ie istruzioni vengano em esse in ordine aile unita. di esecuzione. Nel nostro esempio supponiamo che Ie istruzioni da caricare siano presenti nella cache (cache hitL quindi vi e un 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 e mostrata in figura C.12d.
,' 'I:.'"
; Y, " • '~" ,:;~
"
",
'" :' .-,r,:.' ':~;
, t:
~
JE~
; ::!:;. . ;:" " ':F . ·li'
" ,ot
~.
~ '?\',"
~~~"
'/r'".. ',;;
"
:. J:{
" ;'. 'N
.'< •
:~ ":''~;~" 0" •
,,:~,,
'.,. ",c." '~'"
c. '~""j .'
J
,
~'L' '..' , ;';' ! ..•. '; ! •.,:
. ""'" ".,.. .~.,
'
'
\!
,
t,;.
• 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 istruzioni , 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.
. "' ~
"
"','::'i!'I' I
" IJ~,.\, -J.,
o
. . ",.:".~"" .,,',," I ., i~'~ :1
644
: :t>'.f!:.l1
. ,s·,>,.~· _ '/ -:'~:-:7 . - ~ "'-',j~.;:.
Appendice C
" .,....,."'!., -~',/;:~,~,i~,
...;(.. y''
,:~-,~t. .. [.,~;.
• 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 Le istruzioni 6-9 vengono decodificate.
'_
,"
-:'.~,.z,::'
,-,'V,~,
.",", "j;."
;,~:/;.;.
i
--,:., ;;;};':
scm.
',": . .'
'J:' '.,-, '.', ./,::.
- :_:/~! ..,
',' ';:C':,,'''': ,'.: ,t,,:'. "
",
• 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) nel primo, Ie istruzioni 4 e 5 vengono eseguite. L'istruzione 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 ordin~ 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),
'.
. ,: ';J,:..).:, ,:<.i~~i'
'_~ ::::~~;:~"
e
.:~ _.
:'<.\.-." """.~
'_,~h.· ,-" ,
.' :;~);;t
" . • AA . .
' ..oJ:""'I.',
. -,Lll.~·'
.,>.,.. ".-'.
':
,',
" :,::,.':",:":~,
.,
,.~.,., '.~
,'·"'r • ,"
:; :'!i1·::~;:
'-"",i;{
• clock 5 .. La fadd(2) si trova ne! terzo stadia esecutivo della FPU; fsub(3) nel secondo, Ie istruzioni 4-5 hanno terminato laloro esecuzione rna devono attend ere,
.--<4;.t~'
nello stadia di completa.mento, fino a che Ie istruzioni precedenti , non abbiano:'X:Z:;;k a lora volta terminato resecuzione. La fmadd(6) si trova nel primo stadio di _>:-:;,~,l:~ esecuzione della FPU; Ie istruzioni 7-9 possono essere inviate alle rispettive unita, - -,:)iJ~~!' mentre 1e ultime 4 vengono decodificate. <;":,'):,~,' • 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) e nel 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, • 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) nel 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.
e
• 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.
,,>!j}f,; "'~S;:~l~'
'<'~)'~;~~
''.::::'~,.!l",.
,
..
".'~
.<'~~:§.:\
,'. ',' -'f'J"",
,:':~i-'-':'
-:~:::.~t',;" , ",,""~'
" "~""' ,. ,:-'.:.,
..
",'j"" "'~V.,,
,~,;,,,
.- """, ' ,,~.~," .:';.~;,
;','<~!i,'
,,' --.,""",' -.,.,,-, . '".:., 'f;,' r",' ,,~,' ~
_'~',>i
, " ",
·',',:'F ,~. "'
__ "
-~/.",:;
.
, ',",' ' ..-,'--'-;~~" .. ,,',
....
'~\({:"; "'~ ''
',,'~j:
'''hl~ ,' . . .
,"'~";F'
"',
,ft ·~t~;j1 , .',
• 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 1~ e 13 devono attendere nel completion buffer la loro terminazione.
"" ~;;.f
• 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.
.:,:.;,,:,
",
:,~J~;':',
; ....
'-~
,
"
.," < .- ,.!
--<~"
n,.- __
".'..<,~,i
o '.
.' :::,~
-.
• clock 11 - Le ultime 3 istruzioni completano e scrivono i loro risultati nei registri.
'\:'
",'.
", ,.'"
,~"'''
; :~-~l ..
'~"?~;' ,~ .. , /,~r
~",'
";.
~,
~:"
'I' '".(,1:-' 1::"".:.'"
""
:1iI,
,;.. ;:'
j;"
\'~';: I
.'1:".
''''' )'.~
:j!' ....
",_' . ::;'
i"L' ,;, ","
,~~.'
,'If
'., /1.,'.
"< \~._
i~ ~
"'r'''' iJ,'
:-),' l.',
:;;~:.
•, . , ~'~
, .. ",,I".,,
.,.' /j: { t'::
1
b) Seq".nu di lst.r.at011l
a) Slpll1calo del ,Ir:nboll
',~,
I'
',T>"
"
l.i:
,i:V,
~ ,~s.:
:!t ' )I~,
; ~f
A':-'
~',
. ~;! 'M
~
1;0;;1"
\
)':' 1>,,'
'-
°
1
,
3
•
ang I
D
bd
EX
c\ft
j
D
DS
EX
em j'
[! ';:dal
0
10
b
or
b:J!llkJ
: ~
:
!":;,, '.,
,
"r ,- 11., " 'I
'...
to,;
1(\1'
I
;,1'>','
I
'"
:~~'
'!,.~
'"'
I os 1 ct I
os
EX c;
I
:
1
';
:
I
b
l
; :
EX
EX
I:lI
EX
I
0
:
r
)_.
I
I
\ I
,, I
i
I C\l!l) j
\
,
:
I:lI
11 I I I I I I I
:
I cswrrj: I ox I C\WJl i I c c I cS.. I I c c ' I CS~::t
ps
,ubi D
10
9
1
0
,.
!\
:
',
EX
1
D
:,,'
' i:' ., ,;L',' ' ,\:'
DS
I
I
,
7
I EX I hhn",~ I os I os bd I. m I I os I os I EX I c 1..,,10 los I os b:x=l c I \'oladdJ biD lJrl, EX I 4'loubib=1 0 I DS I os : II2.dd!=fi=1 0 Ips los
"','",-.'
,
os
b 'UbCcoi::::D os i r. [rnAda a I
('
Ii...
! I
i
I••dd,1 P I
';': ,
'
0
i
,
5
\
1-
I '" Lc,..j I c I cs.. I I c leS.. \ I I Icsw1 EX
EX
bd I
EX
I os I as I
tIC
EX'
W
Ic Ic I
c
)em
!
los.. j
lei cs.. j
l-
", ~l( '
~
,
; ~l:. ,I,.,
'',
:> ~:£' '.
0:"
' ,~,::,'
-,'.
1 X,:~' • ¢;
,.,',
,""
,
¥:,:
,:"
. ,'
, ',"
,~,
'.
<,!, .i,..
"/ '~~'
,;:. f' w",
0
i;, '~';':. ~o \ 'V
.'
"
'..
''
'
,
;~' !'~'
J::
l't' (,1<' '.,.,",
'"
,~
c) flUII.o lrtruziOQl nella plpellnll
/:'I'
1..,'
.!'J~,
...., .. ·... ......... , . .... ....... , ...... , .. 1J · .. 1
-
-
I.' bu.
'N',
5 rubto:
~.
~,
:I r......
•
~,
0
Ci IIlllfc
.-
''''''b
,
• n.
,
..lid,
'N" ,
". .. ~ 1:!1 ~ 8
,
A_
~ •
,
d
<1) Siluzlone neUe. ooda .I,It.ru%lon)
Figura C.12 Flusso istruzioni MPC 604
•
d
d
• -
,
•
,1-
-
)-
)-
.,
--
-.".,.". "'--""~.'" "):"'.1::: ';.ir.t",
]
I \
••
--
I .. I -
-<\
-
.._. I
.. I ..
_
•
•
-.
, ."' " ...
I I
"
.
>~.:
;.' /'.'~J .. i'
questione risulta semplificato rispetto al caso generale in quanta Ie due macchine hanna il medesimo repertorio di istruzioni. InaItre, essendo 180 valutazione a parita. ill frequenza di clock, il confronto si riduce alIa sola comparazione del Cp ] 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 e stato ricavato adattando alI'architettura PowerPC i profili di ese~uzione 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:
.,',"
'. ,: -'\>"
., ·1
n confronta in
... ': . . ,,' -,.
,.. .-:",;., --,'
t,
',~,.
.".
.... i-;,,'~
,
,
, I, '..." . ., , .-'
~
'."','
..
"v)~,
<
'.' ;;r:!L ,
• viene valutato il nwnero medio (nominale) di istruzioni per periodo di clock eseguibile da ciascuna unita e dalla CPU nel suo complesso; • 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. • 8i usa il massimo tra i fattori di penalizzazione per aggiustare il valore di Ipc della CPU.
,
-,'.
(''-;.':". ··'1..· -,
,
'.',
~
'-,'
~
,,":." 'J'
Calcolo I pc nominale Cominciamo col calcolare il numero di istruzioni per ciclo di clock che sarebbero eseguite dalle singole unita. con it profilo di esecuzione di Tabellae.!. Tale numero, indicato con Ipcn,u, e detto 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:
= xu /
d:~_
;';'" .r :':
".:1
L: CpiXi
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) e dato da:
:: ·I~ 'g
:l
,;· .. :' ,
";
_.~
. , ,':)
.1
Ipcn =
.l
'LJPCn,u
con 1a somma estesa aile differenti sull'unita. funzionali del processore. 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,
",
Al Paragrafo2.4.1 e stato 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.
Ipcn,tJ
)
-.
.
'.d '" ",~.~. ,'.:
C.6 Un confronto tra Ie prestazioni del 601 e 604
.-
-
...' '" . :··'~:'I· "
\
-.
Appendice C
'.':',' "
..,
646
:::';';J', . "'~:;;'''' , ' ,',
"'.,' ',', h
'" -I ,
,--:'"
,,':':j",- ,
'" ,.,,--. "i.,
,<;t;iV'
···.
L'architettura PowerPC
647
.. "
.
" -
I 60'
:,
I
- - -
'.""
..
I
I
I
x'
-
I
~
1 01 FPU Fm\t 1 1 1 1 1 1 1 1 1,2 1 1 lVll 2 1 MC1U Vi v vv 21 19 WI, 1 1 o'l'W 1 1 LFiJ 1 1 LSU ~H'iJ 1 1 ",.11 vv 1 1 1 1 BPU 1 1 Totale istruzioni
,
scm
,
1U ;
,,'.
<'.
.';;,' BPU
I~~ A'Wr,UK
~
I I
1,75 1,U 1,0 1,U 29,75 6,5 2,25 U,"5 0,25 18,25 10,5 4,5 2,0 1,75 3,0
IFsuti
, ,
.',
I Istruzione I 601 cr604=1 FMUL
FPU
"'"
IUF "0' "" .
!
10~
100,00
hOl XI"I
.4,75
604
I I
4,75
38,50 0,50
76,00
37,00
19,25 100,00
19,25 100,00
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 e da ritenersi ripartita tra 1e due.
;
~
;~:.
J',cI,
_:;
r;",
1;'
~:'g:>?,-,-,'
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 e data da:
'i;.,
Xid,u
~;.:
=
Ipcn,u/ I pcn
)i, ~
1.
l' ,
h·.-' <,•..."..
'" I:,....., "
,
;~
Bisogna ora confrontare Xid,u con Xu' Se Xu > Xid,u, allora l'unita. u sottoposta a un carico superiore a queUo ideale e si deve concludere che cia determina 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:
,\i
.,,;, :,.;"
~ ~i'-'
Fpen,u
=
Xu/Xid,u
(con Xu
> Xid,u)
..'/~ii ,,~
.... ,.
.".i"f'" ";', ~(
';.
,
648
Appendice C
"'.
':"" • ::::~~..
",
::~
..
,"· ....... "' '
'-:::;t:',
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.:
,i~' ,
,,
· '::,-
·::rt.-::...
[PCn
IPCe
'
"T
..
'
'
"~':'il ..' .'.. ,
Fplm
"
':
;:';'C> '". !;:(
C.6.l Le prestazioni del 601
i';~':;
, ,... . "
".
",'
Utilizzando i dati della tabella C.1 si ettengono i seguenti valeri di [pqn per Ie differenti unita del 601.
i, '::.::' ~.~::;
'.'
.,·,,','j '.
IPCn,FPU = Ipcn,Ju
=
fPCn,BPU =
4,75 -013 2Xl,75+32xl+lx!+lXl- I
29.7:>+6,5+2.25+2 x 0.25+21
19,25 3,0+16,25 -
X~~2:>+18.2:>+10.:>+4 ,5+2 .0-1-1.75 - 0,94
· ",,~,<
"., '..,.......
,..'~;:,::: :~.,:) ~ ...', , . '..~
1,00
" . -: ··~i.~
La lora somma da luoga a
':~,:.:~,.:,
·J" .. ·,."I.
fPCn
..•. ....
.'~'.'~'" : , ,,~,
= 2,06
'. :',C'",
l~~,:';:~~.
II programma ideale, per sfruttare al massimo Ie potenzialita della macchina dovrebbe essere cosl strutturato:
,"': ;:;, '~;\~
;},::'.
Xid,FPU Xid,IU
Xid,BPU
= 0,061 0,94/2,06 = 0,454 1,00/2,06 = 0,485 0,13/2,06
,ff~:"
(6,1 %)
-
"',
(45,4%)
."
(48,5%)
:~);~:
Dalla tabella C.l si ricava invece che i1 nostro programma ha:
, ",'.- ~ ~.
".>
. , · ~.
XJU XBPU XPPU
-
76,00% 19,25% 4,75%
Quindi la IU riceve piu istruzioni di quelle che pub eseguire , con un fattore di penalizzazione pari a: F •• n = 76,0/45,4 = 1,68 Conseguentemente il numero medio efl"ettivo di istruzioni per cielo di clock che diventa:
'.. li;
,.'. • ,'. "" , ,p"
.- ;1.d;; ",
".,>, .
· '. ,. ..
...~;'~;:;
... '. •.
... ",,'
..
., ! ".. ",
"
",,.
'
"",
.,,
"",
' :;.
fpcn
IP C•. 601 =~
. .n
/
= 2,06 1,68 = 1,23 ·
", ",.'.:" '., "
""
..
"~'
"'''!::<;,.
~.
,,~':
.", ;"
,
-
.-C:-
L'architettura Power PC
.~;.
649
,'
]-
, ..(:
'.-
.' .
C.6.2 Le prestazioni del 604
-
- ~( I· < ,
Utilizzando i dati della tabella C.l per il 604 si ottengono i seguenti valori.
l
'
,,"
IPCn ,FPU
I'
I P Cn,SCIU1" =
',;,-
.".-
',,;:,.,>
.,
° - ° 1,
)-
!PCn,MCIU
=
0,' lXO,2S+19xO,25 -
IPCn,LSU
=
37,0 _ 18,25+10,5+4,5+2,0+1,75 -
=
19,25 3,0+16,25
,1
1,
)-
°
-
'0.
i:.,.
fPCn,BPU
, .,
-
i~:-;;
.. :.,,
: ~<,;. r:~::'
:. ....,.-
.
38,5 29,75+6,5+2,25 --
'~
~~:.
if ~~
"'>\ ,~::'.
kr,-'
i~:
~{J:,
~;~;:'.
'" 'i"
~'.',
1
scm
fPCn
= 4,24
r -
) (
n
programma ideale, per sfruttare al masshno Ie potenzialitA. de1l'hardware, dovrebbe essere, in questa caso, cos1 strutturato:
";>"
~;~:
= 1,0
Tenuto conto che suI 604 ci sono due unita e che quindi OCcorre raddoppiare il relativo contributo calcolato, il numero medio nominale di istruzioni eseguihili per cicio di cIock e pari a:
~.i-(
)-
-
4,75 -014 2Xl,1S+31Xl+lx1+1Xl 1
.r,
j .\ '..,.
,
=
-
X'd,FPU X'd,SCW X'd.MCW
= 0,14/4,24 = 0,032 = 2 x 1,00/4,24 = 0,472 =
0,10/4,24 = 0,024
X'd,LSU
= 1,00/4,24 = 0,236
X'd.BPU
=
1,00/4,24
)-
(3,3%) (47,2%) (2,3%)
1-
(23,6%) (23,6%)
= 0,236
<;,:~
:;,.,;.
~'
Dalla tabella C.1 si ricava invece che il nostro programma ha: XFPU
xSClU
:z.-::
XMClU
=
-,,\.,
XLSU
=
XBPU
=
,.~,
'X.. , -:)!. ".'
; ~~:. ,-,.,..--
, ii'>, '~.' ~;'::
~:,
F•• n,FPU
:~
Fpen,LSU
",' .
,,):I,
,~,
-
."' ..
,~:.,.' .
~J,:'
0,5% 37,0% 19,25%
)-
Per il 604 le unita sovraccaricate sono due (LSU e FPU) con. fattod di penaliz. . zaZlOne pan a:
·'Il
;.i,'
\-
= 4,75% = 38,5%
,';.--
.>1.
1
= =
4,75/3,2 = 1,47
37,0/23,6 = 1,57
quindi il fattore di penalizzazione da utilizzare per ricavare [pet. alIa LSU, per cui si ottiene:
e quello relativo
1-
)-
-
:;f., "~.'.·.'C
•
.. ls""., ;~.
::';'
.;t-:;
IPC e ,604
fPCn
Fpt.n
~ 4,24/1,57
= 2,7
\
r
...
,: '~.
': ,,~
\
l
~'
650
Appendice C
':,;:;' ..... ,' ..
< •1
,', .', .
' •. <' ,,'~
·..
P'fuu
--
=&U
\
-'
--
[pc.
..
\
"1
I
6,1 '70 45,4'10 48,5%
~'70 7 , 0%
0,94 1,00
1,68
sCru,.,
19,25%
2~6 I I rft'C; ~ [PC.TF'p<.
M
~ lPCn
-1,23
P'O'j'OI = [PCe,601
I
"
0,13
F".
IPCe,604
I
•
x.
[PCn
Xid "
X.
to"pen
0,14
3,3'7'0 47,2'10
4,75% 38,5 0 0,5 0
1 ,44
37,0'70 19,25'10
1,58
100 0,10.
1,00 1,00 1 4,24 IPl/ e -
2,3% 23,6 0 23,6 0 1
pcnTF;en:::::
',.j.." """,
.... ,
I
2,7
1
"
2,7 '" = 1 I 23 = 2,2
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 e a 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 unit~ (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).
.\
,~,
·
~
• :ii .....
Se ora si fa il rapporto fra. Ie prestazioni si ottiene:
.. ( •
Xid ...
':?::,' ~: \~
Tabella C.2 IPC delle varie unita e totale
--. ..
[pen
,
....""'1'" ~~,.i;. ,,:
~<.J604
rJP\J 601
\
r
,"'(:.~ 'r~ , . '. , . .,"
Nella tabella C.2 vengono riassunti i risultati ottenuti per i due processori.
--
• '"
• "",/,' ':.
\
.,
' ,~
" • i"
.~..:i· ,~ ' " "-' ", , ,".
C.6.3 Prestazioni relative <'
,;"
,~~,.
~.
· .'.
".
'.
".
'v '.,
i
.
• .",
· ...
'-
~.
.~
\
..' '
~
",~.j
).
\
....
~
t
~.
.. ,. :1
, :~
a.', ',_
/
: ,
,~
·
.,:. ."(
~:
,
': ' :
·
.
.'
" •0
" '. I"",
..
,
.'· '01\
•
<
-
I
....- I,
"
I
· .
'
t..,
.: \
I I -•
\ j
",.~~
I
• i
,"
· ,;\.
· ..-....
· :>,,'0; .... .; ,.
,
",
'~.... I;.
.
..
D
~
~'
II linguaggio assembler
",
n Iinguaggio assemble,-J e la forma pili rudimentale di linguaggio di programmazione,
,'
.i",.
~,
.'
.,•
.
v,':'..
i
• "', " "-
.
~.
\'.
'1 .' "
~
.;.
\.
.
~."
".
t. '
1;.
~,"
/,.
~O/"
("", :;::
:i.'.'
.,..
" •, ••
",· "oJ.. ,.,
.: '
, \'
1.", .. t~
'. "., ,,' "'.
':i
~>};
t..,:,
in quanto permette solo poco pili che 1a scrittura in forma mnemonica delle istruzioni 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'orientamento 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 M ASM (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 problematiche 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-
\:: ~.
Ii" • ",....',
.,
. ;';'
.
,.~
~~;, 1..,'
,
..'
;i\f:i*. ,"'
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.
" :'~', .
.','i','''' , -':. -,",' ' •,,<1:-;;.',, .'" .. ,
.
·
,··,!:l'P!,
652
Appendice D
-,,'~.;;:.
,
(
:", •. , 'i: " ~. , ....... J 'f.
\.,
~
· ..
ria introduce complicazioni di cui non c'e traccia nelle architetture non segrnentate3 . Inoltre, Passernbler di cui si parla presenta alcune caratteristiche che 10 avvicina~ no ai linguaggi di alto Hvella. Per esempio: introduce una differenziazione tra etichette. variabili e costanti, differenziazione non presente in assembler convenzionali. L1assemblatore opera un minime di centrella tra i Utipi 1l4 .
.. ....
','
"-"
•••
'
.
".
", .. .. " .. '".' '
~.
· c' '.
,
."" I,,:"
.
'. l'
"
",
'.
·
· .'
D.l Generalita
.~!,
· .." ...
In FiguraD.l viene schematizzato H processo di generazione di un programma eseguibile a partire dai moduli sorgente. Questo processo si compone di due fasi:
"
"
;1 •
,
,\'
. ,,'-. :.
. ,-
~lli;' (~ 'L ,,'
a) Ia traduzione;
,,L,~
,\'
, '("
,
",. ":",.:,, :"
f::
b) il callegamento.
,it',
.': :'
,',
.i
• ' i, "
'":~,,,,:,.\
.:
Di norma un modulo sorgente corrisponde a un unieo file sorgente. La traduzione i-~'~.':': 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, ,:\',.:, ,T 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 ~",-=::',:>~, i e assemblatore devono produrre codice congruente, rispettando alcuni standard'di ,',:, :'.:~:Jr. . . fr a mo d u I'1. , "'1'1':'A cornumcazlOne . ''',.,:'''' 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 oppure:···:~:1:::,::::,:,. : costrui.te tramite un? speciale progra~a (Librarian) di gestione delle Ybrerie s~ess~l ::·':~.:\:F~,~'\:> ~ a partire da moduli oggetto prodottl dal programmatore stesso. Dl norma il file.; , .... ,~\;j; l eseguibile e in una forma non definitiva, nel sensa che esso ha un indirizzo di partenza '.-:)?,:,J~":',j~ d convenzionale. '. :' '/,.. ':';,,',',:,',', ' ~ Per pater essere eseguito il programma deve eSSere caricato. in memoria. Que:.·.' :~,}':"i:i:>,:;> ~ 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 impones . n caricatore ha anche il compito gi ':' ,~1~Y:I't~,:. : inizializzare ii Program Counter, 10 Stack e quant1altro serve all'avvio del programma_. :': :~,~4:~. ~ :," . '·i:.",:,~ ',.', '''OJ
,
,
"
"
,~,
"
':~',""'.' .. "', '-\ ., . , : ,,' "
',', . ' ' , , ",', " '." ' '.. '
'" '.', ' I ",'.. '.". " .. "
'
"
'
, ,.,
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,
,~
."· ".
:
, i
-
, , .
:
" , .i,
'",'~,. ,"
)1l1inguaggio assembler (8086)
653
,
~
.'.
1-
. ••
Moduli Sorgente
:,
y
. 1'
,',
.'
I
1-
y
I
)-
Lisle
ASSEMBLATORE
~:'
~ ",
'"
,'.
"r'
"
';;'
i~
].. \
"
1-
:,;
:
~~. :,: "'.
Tr;:
i:'.'
)-
+
Moduli Oggetto
GESTORE LlBRERIE
i[~;. r.:
)-
:" A', ~:: j,; :;.-
:~'.~'
~~
\
Librerie
/-
l:~·
d;C
~'~::: ~~,:
1
~-"
1:;
,~,i.,
:~i;
~':~_
\-
1 COLLEGATORE
Mappa
" \.
~t,
,.,'
\~,:', --.,,'
'r'
di
Memoria
I"
~':' ,
I".' '" ~~,'
.\,'
Programma Eseguibile
.
:li-:, ;,
, if.t..
1-
-,,
':'.
,,}-.
....
:~
~t
",j ':
.."
t"> '"
':j' '
~II:' \')i' "
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.
"
-
.,
;
-,>
654
I
-".
"
Appendice D
,
"
-"~
D.l.I Sintassi
\
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 g~nerico statement prevede i seguenti 4 c~pi, separati da \ almena una spaziatura (le'parentesi quadre - qui e nel seguito - racchiudono elementi opziona.ti):
Un. testa assembler
[Nome]
\
e fatto
[Codice operazioneJ
[Operandi]
_j
J
-. .,
,. ... 1.-"
,
. i:
[;Commento]
. ..
,
"
,.,..- -"
D campo del Codice operazione, normalmente indicato come campo OP, determina l'interpretazione degli altri campi 6 .
\
I I
Comrnenti Prima di procedere e meglio parlare dei commenti 7 . D campo del cornmento deve necessariamente iniziare con II; " . Se il primo carattere di una linea esclusi eventuali caratteri di spaziatura - e il 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 e possibile aprire un commento che occupa un numero arbitrario di linee, secondo la seguente sintassi:
'. ;l,-
" , ' , I' " ., '~~---' ~
,
>
'.
,".
~;:
'I"
.".:1
."',
,- - ...
:;
~-~
.. ,.
" "
..'"
, ..• I-.-
.
-~
COMMENT Delimitatore
.l':,c
Testo Delimitatore [statement]
,t
dove Delimitatore e un qualunque carattere ASCII che non appare a11'interno di \ Testo. Esso funge da coppia di parentesi raccruudenti il commento.
:{ ~,
j
, ',
.'
'.'
'-'-. ,.~ '.,' .
~
~
~
.....
'.;
.- .
N omi n campo Nome, quando e presente, 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 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 avanti), oode evitar~ ambiguit.a.. 8i teoga inoltre presente che Ie parole chiave sono comunque case insensitive8 , perch) un nome deve sempre essere lessicalmente diverso da esse.
I
I I
~
~., .. , ,
.' -
,
.
-
'_.~'
, :., -"
". '
.~-
, ",: ,j,
. '1;
.' ,
.'. , '
.c ;'.
..
,I'
.
,-.
. ,t ,
.'
-
.
~.:~ ,.
"
," f':
,
1'
'
_t',
,: ,
_=: ---,-_---,-_---,----,-_ 'I GDiversamente da molti assembla.tori del passato, quello Intellascia una certa Iiberta. nello scrivere il testo del programma.. Per esempio: non e necessario 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 che 10 mnemonico che segue e un codice di operazione. , 7 Nell3, programmazione a.ssembler i commenti sana importanti almena quanta le istruzioni, poiche I il livello di autodocumentaaione dellinguaggio e pressoche nullo. sNon fa differenza. tra maiuscole e minuscole.
'
I
:.
. ,;
-,
I
.~
", .;"'..
"
.,,,
"",
:!
'"
~,<;,
;.:;;;;',i
Illinguaggio assembler (8086)
655
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 programma. 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 memori~ occupata dalla variabile) ii nome del segrnento cui appartiene, se 130 variabile e un 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: Dei simboli definiti da! programmatore si parla nel Paragrafo D.3 .
"
,
.
,',
-"
1
"~"\
•
"
:'.
Codice di operazione
...
..
.
n campo OP puo contenere:
,
;.
~. ,
... .-:,
---',•
.
~
. '
c ..•
{.' . ;
,., , ,;' ..
• 10 mnemonico di un'istruzione di macchina;
• una direttiva per l'assemblatore. Nel primo caso j'assemblatore genera il coclice di rnacchina, tenendo conto del conte~ 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:
MOV MOV
~:.
_....,. ,,~~,-.... ?",'
;'
~
""..•., "
,;;
' ;1:"
,-,',',
'it·~:
'.
.,t
-.~
-'. \ ..
VAR
:;" .,
DB OW
7
o
.. "
,:
. 1'·-: " '
'<':'"
',l-_",
: .".' ~"
';<> •
." _.
)'L. .,- "
,,:',;,
i~"',,'.
; Copia BX in AX Carica AX con il contenuto della .. .. posizione di mem~ria VAR
producono differenti codici di macchina, inoltre la seconda istruzione viene codificata in un maggior numero di byte della prima9 . 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:
.~'
~> f· '
AX, BX AX, VAR
;alloca spazio per un byte ;alloca spazio per una parola inizializzata a 0, ;alla quale viene implicitamente associato ; i l 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:
"",'
,."..
:f,'
'''',:; ~)-:,
FINE
LABEL NEAR RET
~,
1,
~,
,,:,
.. !!'ii""
rl'",';
~: :~
;1:,
9Per queste problematiche si veda.l'Appendice dedica.ta all'architettura. 8086 .
," ;.':''.',
·;J" .
,:,~1:
"v'! .'· r··, :'.
656
".,
Appendice D
, . -,
"
.., •
::-" ,
.
c,~)
e
· ";" ,'"
FINE:
:~ ... ~ •,,' , ,."
RET
~
',.' :,
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 e stata 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: Nwnero_25
EQU
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 rappresenta~e Ie costanti numeriche. Per esempio: .286
;stabilisce che il repertorio delle istruzioni ; e' quello del processors 80286
,
" "
.' .::,,; ;. ·
,. '. .-
,J"."
.' .':.
'. ,i,,'--
.-
:";.,"<;
,.:" ..
· .... "' ':>. , . ,-"" "~:':"""
~:,:., "
,
~
:,:--
.' .'J:;
.. ,
,:"~:
'. -':;'
,0.
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.
Parole riservate
Le parole chiave del MASM possone essere divise in quattro classi:
• mnemonici delle istruzioni; • mnemonici dei registri della CPU i • mnemonici degli operatori;
. '~"
,:":;,::
,.~.",. . ,..' ( .'
'.'-,
'" " ' • :~'"i'
"\';",
'J
,.''-. ','.,
.',:1'
" ::",~'"""
".Y.-:"-';' ,.".
, ,,~-::-'" .""
,_,:2~,r;f ·--~".
>J)~ 1'"
• mnemonici delle direttive. 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 situ~zioni anoma1e 0 1a lettura di file ausiliari, l'assemblaggio condizionato di frammenti di testo , il formato e Ie caratteristiche della lista generata.
"" .''.
:~~'~E .~.,., -i;
",.'.
.:~,
.'::": ,,;...
-' ,.::'~f~·
, ,.-.• , .:.~'
"-'" "",-,,'
,", ;,.'. '.;. ;
,;,,;,:,::,:: ,,';
,
repertorio si estende passando dai microprocesson di base della famiglia a quelli avanzati e con la presenza di eventuali coprocessori.
-.-, ':.
,
· IOn
' •
'.:.';'
'" •
r '0'
.... ,.
'; t~:Y, .,' • "1'"
i'/;/1._, .~::·;ht.1 ,.",. ...... .'
"j , I'
...
"
:"
!
'
·, ", ,
, ..
,',.
,
••,,',I' . •••
'"
d'
DWOAD
"' I
-
• I
, .1· ; .
UTRH HAUE .11111 .:lllllp
COIolUt:HT .ERR ,ERRDI,. .EIl:RNZ
"
R£"T
.J'
ELSE
'"
-' . '.'
'FNfl
lCOUT
;.1'
..,...u.
. i ~.
.XLIST
.
" ,.
, -:.'-'
,
~D
'
".
;,}
L-ENCTH
HE QWORD
"".
."'P'
, ';:> '~'.:,.
Figura D.2 Direttive e operatori del MASM.
' I"
.~
:
~.'
",
,,~-,-
,..
"."
~
D.2 Segmenti e moduli
.f
~:
J
I
Un programma puo essere vista Come un insieme di istruzioni e di dati. A livel10 sirnbolico questi sonG raccold in mo~uIil a Uvello di eseguibile Sono raccolti in segrnenti.
.'' ' ,n"
.
i'~
", .:!::
..) E,",
'.~~ ~
D.2.1 Direttive per Ia gestione dei segmenti
~,.',
~'-
..,--.-J ",: , .-~
y~~
",.,-:i' ~,.
<1~.
~i~'
,.y, ;.'"
",..
,
;if".,"-
.'"~,~;' Il~ ..
,';-\'
t)",
Cl;'"
1'f{,:' '::;'7:: !t,'·,· :t: ;r._..
;.:;:"
,l't ••>••
)
,
f ;!i~
,
I
L'architettura x86 (Cfr. Appendice A) prevede un madello di memoria segmentata 11 . La segmentazione e la diretta traduzione del modella di elaborazione, secondo cui I'algoritmo e separato dagli oggetti manipolati e dalle~eDtita temporanee: I'algoritmo (Ie istn,lzioni) si traduce nel segmento di cod ice, 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 (frammenta di) segmento logico, secondo questa sintassi: NomeSeg SEGMENT [Allineamento] [Combinabili tAl (f NomeClasse'] ULa segmentazione e un 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.
)
)
I I ) I J
Appendice D
658
.i
1 NomeSeg
\
BloccoStatement ENDS
\,,
'
\
Le direttive SEGMENT e ENDS (end of segment) costituiscono la coppia di delimitatori di
II
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
I
I
puo essere aperto e chiuso piu volte. Le definizioni di segmenti possono anche essere annidate, rna. non possono risultare sovrapposte. E' percio possibile dichiarare un a1J'intemo di un altro, come mostrato qui sotto. Non invece consentito 1segmento 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.
e
\CSEG
\
SEGMENT "
ICONST
;Inizio segmento annidato
SEGMENT
'.
...
CONST
ENDS
\CSEG
ENDS
;Fine segmento annidato ;Continuazione segmento CSEG ;Fine segmento CSEG I
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 m~duli, 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 [;~ecificato l'assemblatore assume allineamento al paragrafe (PARA), cioe a un indirizzo ~u1tipl0 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. n parametro Combinabilita (combine type) determina it modo in cui i vari segenti possono essere combinati tra lore da! collegatore nel castruire i1 . EXE. Le alemative possibili sono: PUBLIC, COMMON, STACK, MEMORY, AT. Se 1a combinabilita non iene specificatal il segmento viene ritenuto non combinabile con a1tri segmenti, anche dello stesso nome, definiti in altri moduli. Se la combinabilita PUBLIC (0 MEMORY) 11 segmento pubblico, Al momento del ~ollegamento, esse viene concatenato con tutti i segmenti pubb1ici di uguaJe nome, ~efiniti 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 COMMON, i frammenti di uguale nome provenienti da moduli aiversi vengono collegati per sovrapposizione, anziche giustapposizione, generando un' ~nico segmento che ha lunghezza pari alla lunghezza del framrnento di dimensione massima. L'opzione COMMON viene normalmente usata per definire aree dati conte-
~
e
"- .
,. ,
,.~-
·
I·:'".
,
...'-i
'
..
;,
'""
'
l
, ,
,,
.
';
'I, ,
e
.,
'
·
'
,I
"
'I
e
II
.
:'
,. ,
~
.
,
"','"
.. '."
'~
n lingua.ggio assembler (8086)
.
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. n collegatore 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 raccoglie~e, 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 questa:
.
-
e
.· ,
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.
..i:',,
,~
'l
" "'.
'~'
,~.'
.
,~
659
.,.,
';~",•. ",
,c.:\:, ,,?j,
, :'
'0 .
·,
'!'
..
D.2.2 Generazione dei riferimenti: la direttiva ASSUME
,,.
II- '
"J :' .
IT...:
.: ,J:.,.l
}., .'
.~.;
~~,
.
~];':"· , . ~: ~l!~"
,.,
Per consentire all'assemblatore di generare correttamente e automaticamente i riferimenti 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.
f" ., .. .~ ,. . ".!'·d., ,:"~,,
"
-,'
······1
" .'. ..
'"
Appendice D
660
,
."
'\,
Per tale scopa
ASSUME
.
e definita. la direttiva ASSUME che ha la seguente sintassi:
,"
RS:SpecificaRS[,RS:SpecificaRS, ... ]
I,
dove (nel caso 8086/88) RS puo essere CS, OS, ES 0 SS, e SpecificaRS puo essere il 12 nome di un segmento 0 di un gruppo, ovvero la parola chiave NOTHING . La direttiva. informa l'assemblatore che, dal punto in cui essa si trova in poi,
.L
,
uno 0 piu registri eli segmento contengono gli indirizzi di segmento corrispondenti agli identificatori simbolici specificati. n secondo 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:
ASSUME
DATA CSEG
.·r"
CS:NomeSC
"
t
r,
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'assemblaton;, non assicura in nessun modo che al momento dell'esecuzione i registri di segmento contengano quanto specificato con la direttiva. E compito del programmatore fare in modo che, al tempo di esecuzione, i registri di segmento non inizializzati. automaticamente dal sistem"a operativo contengano quanto e stato 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:
DATA
I
i
J
•,
'
e '..'
'
"
., "
.,,', ;-, ~ "
--
.
;segmento dati SEGMENT . . . . . . . .. . . ENDS SEGMENT PUBLIC ;segmento di codice ASSUME CS:CSEG,OS:DATA iAssunzioni:CS bas~ di CSEG ASSUME SS:STACK,ES:nothing ;OS base di DATA, 55 base stack •
, ;1e prossJ.me istruzioni AX, DATA mov DS,AX mov . . . .. .
pr~ma
di qualunque indirizzamento che usi DS ;Caricamento in OS ... ; .. della base di DATA
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 prima posizione del segmento stesso. Viene invece generata un 'operazione incompleta: nel campo del codice di operazione dell'istruzione l'assemblatore inserisce 1& cadifica dell'operazione di caricamenta immediato in AX, mentre il campo dell'operando
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).
.,'
.
.","
)
1','·
"
lllinguaggio assembler (8086)
661
1
"
,:
immediato non viene riempito con uno scostamento. Viene invece inserita l'informazione 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 .
..
,
L
I
,;, '
.,,
D,2.3 Relazione tra segmenti e moduli
1
Un lI mo dulo 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. e possibile 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 limit~ione 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
]
,;> '",
I'•· .
iI "
r"; .
"
t·!
\, J •• "
,],: "
..,.
'I')
'I'i' ","If,".. "
_~
if
'..~
;:
.
"t .
,~~
~'
Ii... "~OJ
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 r~alta diviso in due parti costituite dai frammenti definiti nei moduli 2 e 3. La stessa C03a
~<
,r
accade per i1 segmento stack. La frammentazione del segmento B corrisponde alIa ripartizione del codice complessivo dei sottoprogrammi tra queUo contenuto nel modulo principale (2) e quello compilato separatamente (3)j mentre quella del segmento S e motivata da! fatto che it sottoprogramma corrispondente a! co4ice 2 richiede l'uso
.~ ..
~
'1•" 1~" )':.
11\·," ,'\...
14Un'annotazione margiIia.le: vengono usate due istruziODi a.n~iche 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.
\
I
) 1 1 )
)
l)
I
I J
'r2
Appendice
1
D •
MODUU
iI
z
1
3
tI,
.c,.
.
,
1.
f
1\
~ '""
\I
j
Ses; 01 Dati
Codice
5., 5 Stack Z
Seg S
Sell: B
St..ck 1
Codice 2
Seg
~
ro
A
Seg B
L I" ,
j
, i
Seg D2 Dall
Codiee 1
·1, •
I
J .1'(igura 0.3 Segmenti e Moduli.
~llO stack.
Cautelativamente, il J?rogrammatore ha scelta di definire in questa moaula 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) co~e accade nel 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,
l' '
1 1"'0
(I
.... Uo", ... lon.
0' Oall
l
S ••
I
A
Cod.lo.
S., ,
St. .. ok
-----------
I· ,
f ,
\'
5 • • =ento
D1
S •• =_nto
"
dl
al
D .. tI
Upo
tlpo
" "
Codlo.
,I'.:"
So,
~.:
S ........ ent.o
S
dl
upo
~i/
st. .. ", ...
2
B
CocU", ..
lo."':
,
-----------
Se.rnento
S • • 02 O .. t i
S •• =ento
B
<11
Upo
·.,.· 1 j:f
'"
Codle.
.. "
"
B Codlce 2
So,
19ura 0.4 Dislocazione
,\"
'... "-
D2
<11
tlpo
O.tI
in memoria. dei segmenti della. figura precedente in base ai soli
,
y."
', .. ' 1' ,
I
,1-",
L'allocazione in memoria mostrata in FiguraDA non puo essere considerata particolarmente soddisfacente, in quanto difetta di ordine. lnfatti i dati e il codice del n~ogram.ma si trovano dispersi in aree differenti e separate cia zone contenenti oggetti \ tipo diverso. La struttura della figura. e inaccettabile, per esempio , se il codice e \ ~stinato 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
-
oI~',:
nOmJ.
~
"
(,
rn ...... orl ..
S
St. .. ",k
\
"
S
S ••
,
[ ':
, '!; ':
"
s ••
~
In
•
,, . I;,:..
•' .. -
,
·•
,
'J ;'
t,~
'I'."
I
1·;
I "
'"
.::.
''" , J'!:
'-
!'
II linguaggio assembler (8086)
663
definendo tre ClassL Codice, Dati e Stade
L
Alloeazione in tncrnori'" per el",sse
~I
Seg 01 Dati
Segmento Dl di lipo Dati
Seg 02 OaU
Segemenlo D2 di lipo Dati
Sea A Codice
Seemento A di tipo Codlce
Seg B Codice 1
S"'grnenlo B di t..ipo Codic'"
, 0
" 0
U
Se& B Codice 2
~I
•
Seg S Stack 1
i\
Segmento S di lipo Stack
Seg S Stack 2
Figura D.S Effetto delle classi can riferimento ai segmenti delle precedenti figure.
Si osservi che in ogni caso i due segmenti codice A e B e i due segmenti dati D 1 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 e una prerogativa delle classi.
,
--
:
Allo", ..::tione
/r r ..:rnrn.,nt.l
:
· 1 f
"
Se ....... nU
In :on.=oM.. oon
10,,101
0'
S • • 0' O"U
02
S ••
,
-"-'
A
"' --
B/'
.
B/2
,
"
'/'
-,
,•
S/2
02
D ..u
S.,
e-.--uppl
I I
D.t. ..
"
".
A
Codi"'.
•,
S •• CocUe.
I
T ... t.
----------,
s.,,,r:nen.U
----------S ••
St.. ck
S
2
U.I",l
D'
----------D2 A
----------8/1
B -
,
.
0/2
S/' Staok
3-'
,,"'
-
S/2
Figura D.6 Effetto delle classi e dei gruppi.
~-·
"
;-
I
L'accorpamento dei segmenti , sempre possibile se Ia somma deUe dimensioni dei segmenti da raggruppare e inferiore 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 ,
"
"' J:,
-:~i
'. ; ..
II
I
Ii'
.
,.1-
'
~
I
, II
I;,,
aruppi
S •• B Codi",o 2 S •• S st.a.c:1o(
,.
"
e opportuno
che la compattazione sia effettuata tenendo corito della sola dimensione dei segmen-
".,"
.. ,.'. . . . . :' '.. . "
664
1
.\·
Appendice D
t'·
,
ti, viceversa e necessario 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 programrnazione modulare) e sempre possibile imbattersi in prograrnmi che mescolano istruzioni, 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 della loro messa a punto e manutenzione risulta pili elevato. In agni' caso occorre tener presente me, se un programma non e strutturato a segmenti, i meccanismi di protezione del modo virtuale protetto , disponibili nei processori piil avanzati della famiglia, risultano inefficaci.
"
.\
,'
'f
•j
·r
1•
I
,
'i" ,
,.
j,
,
'f
1
t.:' .¥
.1
o
,
.
1
:
i
"
· . . '1
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 programma, costituisce la base di tutte Ie funzionalita. fornite qal linguaggio assembler. Nel riferire un oggetto mediante un simbolo, irprogrammatare viene sollevata dalla necessita- 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.
•.
.,.
.'.
~
~'.
I
'.,
v.. .,
. :.
D.3.1 Etichette ....
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. • 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 riferita solo dall'interno del segmento in cui e definita. 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 scostamenta. Se invece l'etichetta e definita. FAR, viene generato un indirizzo formato
·
·
·
,
·
.,
1· .,
D linguaggio assembler (8086)
665
·,
\' ,.
',
,
dal valore delle scostamento e del segmento; cio indipendentemente dal segmento in cui si trava iI riferimento.
•
r
• L'attributo visibilita specifica se l'etichetta deve essere nota solo all'interno del modulo in cui definita, se puo essere riferita anche in altri moduli, ovvero se definita in un modulo diverso da queUo corrente. n valore assunto nei tre casi e INTERNAL, PUBLIC, EXTERN. Se un'etichetta non e dichiarata global.e 0 esterna, 1a sua visibilita si lirpita al modulo (cioe interna).
1•
e
I
,,."
,.
j,,
,
f.
e
t
n modo piu
1:
t'. ¥';:
1'· ,
1 ,'.-• :1'.~ ..
'. i'.'.. .
.. ~
· . ,'., '1:1,;
sem'plice per dichiarare una etichetta e queUo della dichiarazione implicita, che consis.te nel porre U suo identificatore, seguito dall'operatore II:", nel campo Nome della statement a cui essa deve essere a.ssociata. Per esempio 10 statement seguente:
1
Ll:
JMP
L2
dichiara l'etichetta L1. Trattandosi di una dicbiarazione implicita Ll e necessariamente NEAR e INTERNAL aI. modulo in cu,i appare. Dunque l'insieme degli attributi di Ll e dato dalla quadrupla: .
'I:··'·
Un)etichetta puo essere definita anche esplicitamente mediante 180 direttiva LABEL, con 1a sintassi seguente:
~.,
'. 1: .', ,,',.. '. ti, , .;,..
1:
I )
..
LABEL
NomeEtichetta
i.>.
~
c
~
Distanza
~.,
dove Oistanza puo essere NEAR oppure FAR. L'esempio precedente potrebbe essere cos1 scritto in modo esplicito:
;
~;,
Ll
~
lii.-
~
.
,'1'.i:.
,' ?: .
.., .'i1-,.", .
'It , .... ,'.'. , ·
.
"...•
'1.'7.
·I"z....· ,~,,~
,··v\ .' . .
1." ··.:.''.; • •
"
...
':'~ ,
·p' 'I'~'
, ~f ..
I17''~":';.
LABEL JMP
NEAR L2
)
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 e riferita. spesso aU'interno di un programma, e bene 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_far Ll ,
LABEL· FAR JMP L2
Ll sara. usata per i riferimenti dall'intemo dello stesso segmento, e Ll..:far dall'esterno.
>
·:,.:.
D.3.2 Variabili
)
I } )
,
"
'U
t-. . 1'"
,
,
'f·, •. ,..' ",
~'. ,
,l,?:.
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 Iltipizzatd' , nel senso che nel riferimento a un dato, costante 0 variabile, l'assernblatore
J J
.1. 666
1
t •
Appendice D
~
"•
,.,
•
,
verifica che il suo usa sia congruente rispetto al tipo dichiarato al momento della sua definizione. Per esempio, se la variabile var stata definita di tipo byte tramite 1a \ . direttiva DB, 10 statement mov var. AX non e ammeS80 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 v~iabili attraverso la direttiva Define, 13 cui sintassi e la seguente:
e
. •
I.,
,~ I.,
l,
,•, •
,
,...". ~
,..
..
1,• j
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
DB
1D.11,12.?14
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. 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:
I
\ I~ i )
DB DB
'STACK'
83,84,65,67,75
sono perfettamente equivalenti da un punto di vista funzionale, anche se la prima ha un significato molto pili chiaro della seconda. L'operatore DUP permette di effettuare in modo conciso dichiarazioni di variabili variamente strutturate. Esso ha Ia seguenle sintassi:
1
Repliche DUP
(Valorelniziale[.Valorelniziale
])
Idove il valore di Repliche de~sce 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:
,
~RRAY_Mono_Dim
DB
100
DUP
(0)
}aI1oca un'area di memoria eli 100 byte inizializzati a O.
\
l
J
;C
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'alIoI cazione di un insieme d.i oggetti dello stesso tipo, alia stregua di un array; l'indirizzo >associato alla variabile e queUo del primo elemento. La dichiarazione: C
. ~. ~ . ."
n frammento di codice:
r
-
"•-
,
'
"
li
t
j
lllingu.ggio assembler (8086)
10
DB
-
DUP
667
.(' STACK')
causa 1a ripetizione per 10 volte della stringa "STACK". Si noti che a quest'area d~ memoria non e stato 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 e corretta la seguente dichiarazione:
'
,
,
,...
ARRAY
DUP
10
DB
('a',2 DUP
('b'.2 DUP
('e'), 'b').'a')
La FiguraD.7 mostra l'effetto delle tre dichiarazioni precedenti .
1,•
Array_Mono_Dim .
.,
~. " l' '.
1
0
0
1
1
0
1
2
100
3
DB
C-.
r ....
"" •".'-:;...• ,
10 DUP ('STACK') [._.1 ••,,1
-----
'S'I'T'
,
1
t··,
ARRAY
'
100 DUP (0)
Q]
1
J•'"
-'-,-'
DB
10
2
l' . i.<','- .
j te": ~': .
..
'aTb'
DB
10
DUP Ca', 2 DU? ('a'. 2 DU? Cc·). 'b'), 's')
'c' 'C'\'b']'b'I'c']'c'I'b'I'a'I-I, ,1,.. 1, ,I, ,[..,1 .. ,1. ,I, ,I .. 1
10
Figura D. 7 Allocazione della memoria per le tre definizioni eli array nel testa.
(, !'
,..
~,
•
;;-.~,
,,: .. . ~
I•
.-. , ~' ,
..
..t" '", ,"'.
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 comunque eludere la tipizzazione, usando esplicitarnente alcuni operatori. Per esempio, facendo riferimento alIa variabile C definita. in precedenza e possibile scrivere:
~, ,
r-:,
r.... ... ;!'
•
.
-.....
,.,.
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 conversione tra i tipi. n risultato dell'esecuzione dell'istruzione sara il caricarnento in AL di 10 e io AH di 11 .
..
~
,.
D.3.3 Variabili strutturate
I:',
Oltre ai tipi scalari e agli array, l'assembler 8086 mette a disposizione del programmatore due tipi di variabile con struttura a record, definiti con Ie direttive STRUC/ENDS
,l . "
!. , l'
!,'
! .
"
/"
:: -,
" •
," .
h,
.,
, _",:r~
"" ,,;,.' !
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 la seguente:
e
_:'
.
.-
-:
'""I
• ~
668
·r;
Appendice D
,
I'1,
NomeStruttura STRUC DefinizioneCampi NomeStruttura ENDS
•
tI
1,
n suo effetto e quello di definire una struttura, chiamata NomeStruttura
,,.
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:
••
1
!
I
1
i,
- ,,.
t
, ,
[NomeVarJ
NomeStruttura
< [Valorelniziale[,Valorelniziale , ... ]>
'r{
..
1,
-. '
. :
,
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 disposizione una notazione estremamente comoda, basata sull'operatore spiazzamento (.), per esprimere tale somma.
1t
,
1 ,
D.3.4 Costanti 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: NomeCostante
EQU
Espressione
A NomeCostante viene associato il tipo "costante" e il valore ottenuto dalla valutazione 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: A
PI B
ERROR2 ERROR Alcool X y
EQU EQU EQU EQU EQU EQU EQU EQU
100
;A e' un numero intero di val are 100 3.14 ;PI e' il numero reale 3,14 ;B e' il numero reale 314,0. PI*A 'File Not Found' ;ERROR2 e' una stringa ASCII ERROR2 ; Alias di ERROR2 OF001H ;Esadecimale FOOl ;Binario 101 (decimale 5) 0101B ;Esadecimale 101B (decimale 4123) 0101Bh
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.
,
. >
r;
,
Il lingu.ggio assembler (8086)
,
669 ,
,•.
A una costante e associato, come attributo, it tipo del risultato deUa espressione che figura nella sua defi.nizione. Cosl alIa costante Anell'esempio precedente e associato il tipo intero, a PI e a B il tipo reale, mentre alla costante ERROR2 e alauo alias ERROR associato il tipo stringa. Si Doti la definizione di numeri non decimali. Oode evitare possibili ambiguita con i oomi, iI numerale esadecimale FOOl e stato 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, X e interpretato come binario l mentre Y come 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 statement:
tI
e
1,
,.
••
!
I
1
i, , '
,,t..
t
r{
1,
'
'k
:to
, (:
1.t
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
,
';.
,I':' .~
..
l
1
1;:.)r
CUR_LOC
EQU
SC~CSEG,
'1>-
fl:. j, I"
'II:
fil~ ~'
~"
;1'-'
.If;
t:' ra 'j . ,.,,..
e dato daUo statement:
il "valore" del simbolo CUR..LOC e dato dalla quadrupla
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: NomeCostante
EspressioneSemplice
EspressioneSemplice.
numero
0
e un'espressione il
cui valore
e eli
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:
.tr
B
rr" .
"", ,
A
11 12
,:.... 'I" ," .
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 8.Bsem~ blaggio, mentre queUe definite con:: sono Ie variabilii entrambe costituiscono parte dello state interno dell'assemblatore ed esistono solo durante il processo di traduzione.
•
,.
.~.
I
\
l
\
, i
10
~,. rI,v
t
tipo assoluto (ossia un
A
,r;·
]
I
.r., .
""
I
I
\$
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
\
TOP_OF_STACK
EQU
CIMA
I I
*
B+ A
I \ I
c-,
.f: " p;
".,IJJfI;"
I1S e non diversamente specificato la base numerica far assumere a MASM Ie basi 2, 8, e 16.
e 10.
Tramite la direttiva .RADIX,
e possibile
\
J
,, • I
\ 670
I
Appendice D
;
I
J
\
I,
D.3.5 Procedure
"
l1 .
\, Contrariamente a quanta a.ccade nei linguaggi a5semblativi della prima generazione. }'a.ssembler 8086 consente d.i specificare it fatto che una sequenza di statement
I':' I,
costituisce una. procedura. 1 La dichiarazione di una procedura ha la seguente sintassi:
I
,
Nome \ Nome
i
1
PROC [DistanzaJ BloccoStatement
••
I
}dove BloccoStatement e una sequenza d.i statement che ne costituisce il torpa e Nome e un simbolo che verra. assunto come suo identificatore ed associato al suo entry point. ,Infatti un ~~me di procedura.e a tu~ti gli e~etti una etich~tta. tan~o che, ~ ~omento I, della defilllzlOue, Distanza gli asSQCla una dlstanza. che Vlene conslderata 11 bpo della }procedura. Se tale parametro opzionale non e specificato, viene assunta Near. La presenza delle parenlesi PROC!ENDP e di fondamentale importanza, in quantD da esse dipende il modo in cui l'assemblatore eodifica Ie istruzioni di ritorno da sottoprogramma (RET). lnfatti, se la proeedura e Near, l'istruzione di ritorno dovra ef£ettuare solo il prelievo di If daUo stack (ritorno near), mentre se e Far dovra. prelevare anche CS (ritorno far).' Ovviamente aUe due azioni eorrispondono eodifiche macchina differenti. , E il easo di osservare che, mentre a una etichetta Far e possibile. fare un salta ..Near dall'interno del segmento in eui e definita, cio e assolutamente impossibile per una chiamata di p~oeedura, in quanta si avrebbe una ineonsistenza tra il modo di ,chiamata e queUo di ritorno. .
•
•
•
l
•
•
•
•
.'-, I, f I:'.,
ENDP
,
t, ·.
\-~
"
,:•
..
,I
I• •
":. ' .~~
,
•
"
)
'~l "
DA Direttive per il collegamento dei moduli •
[1\
\
'1.
,
lAlcune delle direttive dell'assemblatore souo in realta. significative anche per i programmi 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.
~'Obiettivo della programmazione modulare e sostanzialmente Queno di incapsulare,
entro confini precisi, Ie funzioni richieste dal programma e Ie strutture di dati necessarie 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 destinata ~ direttiVa PUBLIC (da non confondere con il valore omonimo della combinabilita. di frammento d.i segmento), con la quale l'assemblatore foroisee visibilita globale al sirobolo. Essa ha la seguente sintassi:
e
1
· I•
' t"• ri I. •
: ..:
,'."
!~-
,"
,
,
,,
;,
;
D.4.1 Direttive per la programmazione modulare
In
. '~:;"
·
,-"
th •
~'
"
+
/
~'
i'" , ,
,
.
I
,•
II linguaggio assembler (8086)
PUBLIC
671
',:I
NomeC,Nome, ... ]
Per fare riferirnento a un simbolo pubblico definito in un altro modulo, oecorre dichiararlo mediante la elirettiva EXTRN I secondo la sintassi:
EXTRN
Nome: Tipo [, Nome: Tipo, ...
J
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.
.;j
,j I !Ii
;1 ;
,
• I, '.,
D.4.2 La direttiva END La direttiva END chiude il modulo simbolieo. E gia state detto (Cfr. D.2.3) che a essa e anche 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
"
":'
·. •:
' t"• i' . I..
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.3 La direttiva INCLUDE
'
"
h.
'
+-
/,
'~
i'",..
,.
.;.
l-
I
,•,
,!
'.II
~I i
:l ~,
\
",I
~:
111 ~ ; I;
•
;
.I:, ,
[etichetta]
-
I' :
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.
II
."'II
'
,
La sua sintassi ha la forma:
INCLUDE
NomeFile
dove NomeFile e un nome di file eontenente eo dice 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 e fatta 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
'[ ,
'~
..
"j" .' ,
• . ,. ,:~ .
..
672
Appendice D
centralizzare Ie definizioni. Un importante campo di impiego della direttiva si ha con l'impiego delle macro, cui si accenna qui di seguito.
,
'
.
·
D.4.4 II sistema macro del MASM 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
. t'"
., .•1
~,~
",i ,"
.
~
"
MACRO
[ListaParametriFormali] BloccoStatement
, •
ENDH 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 e possibile 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:
NomeMacro
[ListaParametriAttuali]
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 d~l 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, specificati 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
.
" . ',' ~I"
.. -
)
." 'I, ,: .. 4i '•
., :'1\
II lingu.ggio assembler (8086)
, ;F
673
\
"
..
,1•
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:
J"
DISPLAY macro mov mov illt
msg OX,offset msg ah.g 21H
;msg e' il p~ametro formale ; (DS:DX) = indirizzo di msg ;(AH) = codice della funzione DOS
'I
"
\
,
DISPLAY
HESSAGGID
I. ' ..,
" '~:I'..f:,,'.
,
". ' _ .,..
,.
D.5 Un esempio di programma assembler
I
,'1:":
.... ,
'f',..., :. ': ;
, ,;1'J.: .
.,
~""
, ;'"i:-.
,
,
"
..
C'
.
, ," , "'i~',f' .
Viene ora mdstrato e cornmentato un semplice esempio di programma assembler. n programma e fatto 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 .
. ., .'ID"". , ~.'
..
1
Per presentare la stringa di nome MESSAGGIO, basta sctivere:
,' '!",
.
\
eridm
"
.
,
,
t.. (.!
,
II modulo ESEHPIO, ASH,
1
~
}-:; ;:.'
" 1.
1 2 3 4 S
"
6 7
! '!;,.,
i :.-, ':
,
.
:n....\_. rr:,. ;...•
!;:-
'H
r::',.:".
k' . .... 1,; ..
:; ., ~.' ..
It "
page
,132 TITLE ESEKPIO Comment
*
File sorgente: end of COl!llllent
ESEHPIO.ASM
, -------------------------------~-------
11
; Interfaccia con l'esterno ,sall .; soppress, espansione macro nel testo endif extrn SUB 1 : near public Ma.in
12 13
; Oefinizione coata.nti
8 9
10
I
.,"•..;, Ie';:-
1 J
*
._-------------------------------------•
14 .. OOOD
CR
equ
13
15 • OOOA
LF
equ
10
;ritorno carrello ; nuova linea.
~"
'I;'. t: -'
I \
'
!( ....
]
18Per convenieoza nel riportare i listati saGO state esduse alcune Iinee degli originali ritenute prive di interesse.
! I
! \ j
1
- ) - I ~
-
I
-
I
I -
I \
-
-
1-
16 •
ClearSCRN equ
17
18 19 20 21 22 23 24 25 26
0000 0000
I
,
I I
,--------------------------------------SEGMENT STACK 'STACK'
0028 [ 53 54 41 43 48
08
00C8 OOC8
TOSI STACK
0000
DATA
28 0000 29 0001 30 0004 31 32
0018 OOlA 001C
18 58 42 72 20
DB db DB
32 4.1 75 6F 6E 67 69 6F 6E 6F 20 64 61 6e
00 OA OA 24
EOL
DATA
.~"
-
42 0001 43 0003 44 45 0004
I
08 cr ,If DB If,'$' ends
28 CO
OS
50
PUSH SUB PUSH
88 ---- R 8E D8
MOV MOV
AX ,DATA
9.1 0000 ---- E
call
CB Main CSEG
Lines
N a m e
. •
.
6 •
AX,AI AX OS ,AX
DISPLAY Hessaggio
Macros:
I
;Codice Escape ClearSCRN ;Pulisce il video 'Buongiorno dal Main!'
;---------------------------------------
lE
CLOSE . DISPLAY I KBDIN J { OPEN . .
27
CSEG SEGMENT PUBLIC 'CODE' ; seg. codice Main proc FAR Assume CS:CSEG,DS:DATA,SS:STACK,ES:nothing
•
-
$
4D 61 69 6E 21
41 0000
47 48 49 0010 50 51 0015 52 53 0016 54
PUBLIC 'DATA'
Messaggio EQU
0000 DODO
46 0007
WORD
LABEL ENDS
,--------------------------------------segment
I \
40 DUP('STACK')
1
I
I
• [2J'
STACK
27". DODO
33 34 35 36 37 38 \ 39 40
I -
Appendice D
I
•
-
674
•
3 2 6
RET endp ENDS END
SUB1
;Viene salvato 05:0000 ; per tornare al DOS ; con l'istruzione RET ;Mette in OS 1a base ; del segmento DATA
;Messaggio iniziale ;chiama subr. esterna
;a1 DOS (pop, CS,IP • PPS,OOOO)
, II
Illingu~gio assemble<
I
t"
(8085)
t:
r I
i,
Segments and Groups: N a ru e
;>
CSEG .
,!"
DATA .
•
STACK
•
;
j
•
•
Size
Align
0016
PARA
PUBLIC
001C 00C8
PARA PARA
PUBLIC
Combine Class
'CODE' 'DATA' 'STACK'
STACK
Symbols:
I
•! .
Name
L
Type
Value
Text Number L BYTE Number
' [2J'
Attr
',:: ",'
I.' '
f
,,.
CLEARSCRN
I' .
CR .
!..
I
EOL LF .
-1'
HAlN
:
MESSAGGIO SUBl TOSl . . .
r
I
"
...
't·
'!•• •
. • • • •
0000 0018
DATA
OOOA
F PROe
0000 0000 0000 00C8
NEAR L FAR L WORD
CSEG Global Length • 0016 DATA Erternal STACK
51 Source Lines 54 Total Lines 37 Symbols
,
,I:, '.
.
48888 Bytes symbol space.1ree a Warning Errors o Severe Errors
1"
A; ,
'j',
f II modulo SUBl.ASH:
page ,132 TITLE SOTIOPROGRAMHA SUBt
File sorgente: SUEt.ASH . saIl eudit public
0000 '" OOOA
=
SUBl
Definizione costanti CR LF
equ equ
13 10
,--------------------------------------0000
DATA
SEGMENT
PUBLlC 'DATA'
675
,J
1
676
Appendice D
,
15 17 0000 18 19 20
SIGNTUR
42 75 5F 5E 67 69 6F 72 5E 6F 20 64 51 20
'Buongiorno da SUB1!' ,cr,lO,lf
db
53 55 42 31 21 00 OA OA db
24
21 0016
22 0017 23 24 0000 25 0000
' $'
DATA
ENDS
CSEG SUBI
SEGMENT PUBLIC 'CODE' proc . FAR ASSUME CS:CSEG,DS:DATA,SS:nothing
25 27 28
DISPLAY ret
G3
29 0007
endp
SUBI CSEG
30 31 0008 32
SIGNTUR ; near al chiamante
ends end
Macros: Lines
N arne
CLOSE ,
KBDIN
Segments
6 DISPLAY 2 OPEN . .
,
3 6
,
and Groups:
N arne
CSEG
DATA
,
,
Combine Class
Size
Align
0008
PARA
PUBLIC
0017
PARA
PUBLIC
'CODE' 'DATA'
Symbols:
N arne
CR ' .
LF ' . , SIGNTUR SUB 1 '
,
.. ..
Attr
Type
Value
Number Number
0000
L BYTE
0000
DATA
F PROC
0000
CSEG
OOOA.
Global
31 Source Lines 34 Total Lines 32 Symbols
49950 Bytes symbol space tree
a
Warning Errors
a Severe
Errors
Vale la pena di ricmamare Pattenzione sui seguenti punti.
Length • 0008
,J:
d I
1; I
t,·
t,
II lingu.ggio assembler (8085)
577
T.
:r ,
".' I'
• II listato non mostra l'espansione delle macro per via dello statement. sall. Inoltre il testo di esempio contiene due ulteriori linee ill programma, if 1 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 e riportata la direttiva i f 1 stessa19 .
,• r, ,·
"l;' l'"
~f'
~,~
e
,..
• 11 sottoprogramma SUB1 sviluppato come modulo separato da ESEMPIO, dunque viene dichiarato esterno. Inoltre la pracedura SUB1 e dichiarata 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,
..·... J
'j' , { I\.
.,
'
'f
r,
• Con la illr·ettiva END si stabilisce che il punto d.i entrata corrisponde a1 simbolo Main, dichiarato FAR,
'
• Le prime istruzioni in Main han no l'effetto di salvare l'indirizzo d.i ritomo a.l DOS. La convenzione e che 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, U RET in Main ha l'effetto di far passare il contralto alta locazione di memoria che contiene il saito al DOS'o,
, ,
•, I
,1>
~:-.
I t
t. .\'
• Subito dopo la preparazione del ritorno a1 DOS, OS viene portato a puntare al segmento DATA.
"ll:
I',
• 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.
,
, ..
'~.'
· ,.
,~p
..
..;,
,j .'
• L'unica azione svolta in SUB1
• A fine dei listati sono riportate la tavola delle macro, la tavola dei segmenti e quella dei simboli. lettore invitato 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.
n
',"J',Ji: ii',
.f·
e
°
Ii: "
e la presentaziane della stringa SIGNTIJR.
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.
"
f
. ."'.."
J,
.1',
"
ir,
,
.. , .,
~
,
~
.!,
;:.
Start
Stop
Length Name
OOOOOH 000C7H 000C8H STACK
Class STACK
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.
,,
1; \\
~ -
P 1
1
,j
1] )1
,Ij-
~
jJ -
P
Ii jc
..,
:,,~ ';"" ..
',,, " ' I '
.
,
618
Appendice D
\
,
~.""
. ." . ,.. 'r'"
,'. i., ~
, . !Jt ' '.
l'
OOODOH OOl06H 00037H DATA OOIIOH OOl37H 00028H CSEG
I
!
•
'.' ,\ •' ,1 .'' ..'
" •
DATA CODE
. 1\"
.
· ,'
:i
~ ,~
·
Program entry point at 0011:0000
, :'" ~.
,{: , .~~~'
\
•
.i'l;;,~.
D.6 11 processo di traduzione
,
•
II processo di traduzione da modulo sorgente a modulo oggetto, 0 modulo rilocabile, e di 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 e schematizzato in Figura D.8.
• •
\
.~"
'. . ! '~':'. ,.:"';" . • · .i,,
,'",
"i".
r,
, "," ..
.~' ~.
•
'I~ '," r t,
•
-
/'
"""
( Sorgente
PI
P2
Oggetto
)
'li' 'i., r~i,'
,,'.
"
,~p,
•
1
-
I;";
'~..ql' r
I
;;I,
.'~i'
--_. -. Tabelle I
~ir
'--------'
\
e;
'C.
, " . ,[''"
codice
l
•
inlermedio
·~t,
:~
Figura D.8 Assemblatore a due passi.
,
11: .~",
-
'J
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 ~om-. pon~ti, i1 selettore e 10 scostamento. n selettore e un simbolo, ed e data cial Dome. del segmento in cui I'oggetto e dichiarato. La scostamente e relative alIa posizione
\ dell'cggetto rispetto all'inizio del segmento 5tessc.
-
'.
'j' ·
<',
'u'"1•: •
• li'
t}.
Per tener traccia. delle scostamento , Passemblatore utilizza una. variabile designata come ILC (Instruction Location Cou.nter). ILC viene azzerata alPinizio di un segmento e viene incrementata man mano che vengono esaminati i vari comandi. U~ri \ cremento e pari al numero di byte ricrnesti per 1a traduzione in linguaggio macchina della statement in esame. Si noti che J!indirizzo assegnato dalJ!assemblatore non definitivo e non corris1ponde all'indirizzo fisico a cui l'oggetto verra. assegnato in memoriaj si tratta pi.uttosto di un indirizzo preso in un ipot~tico spazio degli indirizzi, che parte convenzionalmente dalla posizione zero per tutti i segmenti. n linker, nel generate il . exe, puo modificare
e
-
f,g
I I
'~,
·! I ',, 'il ',. ;;
f
~
T
.f.
T .t'
1
~
\
.
lliinguaggio assembler (8086)
619
Modulo sorgente
I . Pass.o 1 Tabelle interne
'.
r------------------l
,
"'
'
.
iI
Direltive
~
I
I
I
'
lstruzioni
I L
,
I I
It
I
: 1
'
Operatari
,
.
',
,
.
,
I I I
I :~
JI
Codice
I I I I I
r------------------l
\I
Conlalari
I
I
I
I I
I
Tabella Segmenti
I
I I I I I I
I
Tabella Macro
IL
_
I I
II I
________ ...JI
Ii •
I
I
d ,
,: I, , I
I
i\
II 'I
I I I
I I
lntermedia
I
Tabella Simboli
I
Stalo
;'
1
I I
.
,
I
I
I I
: I
,I
U L r------------------,
I
I I
",' .
I
Tabelle dinamiche
,
Segmento corrente 1
IL
J
,'.
1
I
r
il
,
"I
g '.
Passo 2
,
,
, I
,
:"
•
I
,
'
. ,'
· I,'.
.l,' ' .
f
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,
T'
T t'.,
1,-
~
,
·""!'" · ,.....
I'.
,::,l"'lr··
· ·v... '.
.... '-.' ~"; ," .;:.'.;.'''
680
Appendice D
'. . :1:
·•
·
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. n risultato 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 e it codice intermedio, ovvero una parziale traduzione del sorgente. La creazione del codice intermedio non e di 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:
I·,. ,. . ,
ft,
"',
.\. ,
.!'
• . . I
iJC
.~.
,.
,
-'.
,,
-'
;'.,
·
\.
"
.'.
.~
.'.
"
.....; ·" ·
i·
".~ '
."
, .•;:'
· .',,-' .,
, "
. .
'f
I't'
....
"
,':!J
•
-- ·t ,
· '
·.
• Nome dei frammenti di segmento definiti nel modulo;
" ';
• Lunghezza di ciascun frammentoj
• 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 e associata la lista delle posizioni in cui esse e riferito all'interno del eedicej
:
I
• Nome del modulo;
• 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 e specificato i1 valore (il segmento di appaxtenenza e il suo scostamento entra il segmento); ,
~
:
.. .... .
.•. f;
' ..• ,
.':
;.~
'
.
;
;
,
I ',
"
~
,
..
"
~
,
.-
.
.:
:
• Codice binario prodotto dall'assemblaggio, suddiviso in frammenti; • Tavola di rilocazione int,erna dei frammeoti, che specifica 1a posizione, all'interno del codice, degli oggetti che devono essere modificati qualora l'origine di ciascuno dei frammenti non coincida con quella del·segmento, 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.
•
---,
)
...
·'
.
:
''
Illinguaggio assembler (8086)
·.
681
·.
.. .. . ,
• Informazioni ausiliarie, quali per esempio l'indirizzo di avvio del programma, qualora si trovi all'interno del modulo, ovvero Ie informazioni usate dai debugger simbolici.
,i.
., ,
1 \
~
1. ,
Modulo 0aa.Uo
r--------------------, , ,
C
."
:, I
,.',;
,, ,, I
.
~..,
, :
:1'"
"t,
;.
Nom. ,hi modulo Nom. d.1 F',. .. mmentl dl S.amenlo l.unah.'u: ..
d.,
· ""
T .. b.ll ..
:>~
~I·
'~/
'"
I
(
f"
I':'·.,, ~
,
:'
: ,
, ,:L,
J\
t\l' <,
,
J. ,
d.,
I
.
1
RU .. rlm .. n~1 .
E~t.rni
Cod Ie,"
1T.b.ll ..
"~
•.
, :
T .. b.lI .. SimboU Pubbltc::1
~...... "
1
I :,
bln .. rlo
dl RlIoe."lon. Int.rna
T .. b .. lI .. dl Rlloe."lon. E",t.rn.. ]Inrorm .... lonl .. ""Ill .. rl ..
, I ,,, , , I ,,
1
: ,
,
"I
I :, , ~
Figura 0.10 Contenuto del modulo oggetto.
~
1
I;': '~~ ,..
.~
'~'
• D.6.1 Assemblatore: pnmo passo
; ,. .'
\
~
~l."
n primo passe ha lo scopo di associare scostamenti numerici a indirizzi simbolici
"~ ,".
",I,
~
,.,'.'
,~~.
.--.. ,
.~r.
:¥
:.. ,
K iv.,. ,'t'
,,:•
,,&. ," .·, '. ~· ". .:
. ,., .e. :,,
f.-
,7!i:
"1"
,
':' ·ft "
a) lettura del prossimo statementj
1.
I I •
b) esec\,lzione dell'azione determinata da! contenuto del eampo OP 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: j
:11, "."': .
(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 e ovviamente 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:
°
inserire ALFA nella tavola dei simboli, con il valore del corrente segmento e del corrente ILCi
).
1
,,, I
•
\ 682
"
Appendice D
·t-
J. ~.~
,f
•
I
•
o quantificare in 3 byte l'occupazione di memoria;
"
t·,
.(
,I '
1'J'c,
c) incrementare ILC dell'occupazione di memoria.
,
I
•
"
D meccanismo descritto consente di assegnare in modo semplice il valore dell'at-
'. ;k
) tributo lndirizzo, costituito dalla coppia di attributi I a
.I:.
;;;:; ",;
~'.,
tutti i simboli che 10 posseggono, ossia ai simboli ass9ciati a locazioni di memoria.
~
, ,:1, ,.r", '.J~.
I
•
'
Tavola 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 e riportata 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
I
-
,.
'. •
-
I
it:'
,-
'J ':
l,.'. •
'1:.
''''l· "
-
;L;
",I,~>:
<,';:'. -',".!.; o
,,;I, .f.' ,. .'
Of, .
,~
.j,
~" .'
,
'1
,~f." .'J'
·
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 occupate dal codice generato dallo statement, onde incrementare correttamente ILC. Per ciascun tipa di riferimento esiste una dimensione convenzionale. Cio puo portare, da un lato, a una codifica ridondante, come accade quando la dimensione finale del riferimento e inferiore 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. 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.
I
-I -
! ~,------,---:-:-=:-=-;-::-•
-
"
\
I J
22Nella terminologia d.i MASM, it termine .lttrib viene impropriamente impiegato per denotare il segme.nto d.i appartenenza. '
.-!/':,; >1"
]'
»'
-!;il. ~ ~ ,~ ,"
,r;t>i"
· ";',
·v • ii"
t". f' )~. J;.,
\.
r.'
l~ -," ,!.
~.,
•
l'
'1
,,• -;.'
,"
}-
1I.
e
1
I:
II II iinguaggio assembler (8086)
Altre tabelle Ai primo passo, vengono generate altre importanti tabelle: la tavola de~ segmenti e la tavola delle macro. La tavola dei segmenti contiene 1a definizione 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 at~ributi) 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 posizione (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 ripristinato 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 50no 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 e il segmento corrente (SC) di assemblaggio. La tavola dei segmenti passa nel modulo oggetto per il collegatore. La tavola dei segmenti per ESEMPIO e a 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.
.
-
;
D.6.2 Assemblatore: secondo passo
r
,
v
.
.
,
.
r
~
-
,
,
'
,"
-
1.
e
1
:
683
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 riportab. n secondo passe e reso 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 elaborazione. 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.
, II" ,!\ ,. ,
:,
I:' I
'i
i
, il
il ,I• ",
I ,
I
I: \1
I'
i
II I
I ",I
':'T . , ..
(
t
684
,,
Appendice D
F
r
t ,i
La traduzione provvisoria del modulo, la tavola di collegamento e Ie tabelle predisposte al primo passo (tavola, dei aegmenti, tavola degli identificatori pubblici, ta~ vola degli identificatori esterni ed eventualmente tavola di Inizializzazione), vengono inserite nel modulo oggetto.
f
t
D.7 Collegamento e caricamento 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:
.1
.
.
• 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. Nella costruzione dei segmenti i frammenti della stesso segmento vengono giustapposti, utilizzando la loro tabella di rilocazione interna per modificare Ie parti di codice, che dipendQno dalla posizione d.i ciascun frammento all'interno del segmento. Per esempio, v¢ngono modificate Ie istruzioni che contengono riferimenti a del segmento dati di un modulo giustapposto a un variabili definite nel fralnmento , 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 programma. 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 seostamento a esso assobati. n valore nurnerieo del selettore viene prelevato dalla Tabella' dei selettori numedci. In questa fase, se e stata specificata una 0 pili librerie, it collegatore cerca all'int~rno 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 ~sterni 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 del~a 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 utili. Naturalmente il collegatore ricerca anche nelle eventuali librerie che sono state specificate nel comando che 10 ha attivato.
. ,
.
",
,..
. -'. . ..
,'
T
\
(
I
t
,,
Illinguaggio assembler (8086)
685
F
r
t ,i·.
Esaurita la fase di costruzione dei segmenti, il collegatore passa a quella di preallocazione} 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 ch~ inizia subiio dopo la fine dell'area occupata da! primo segmento logico e cosl via. n collegatore compone 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 p05izione effettiva. La rilocazione e compito 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 invariante 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.
f
t"
,t·
r
i;, ,.I
,:
T,
1"
',.!{
.J, .L ., ..'j';
e
I(
"..
.f{. 'I~
1.
·
'.
1 1 " J
I 1
I
,j,
D.7.1 Caricamento in memoria ed esecuzione
;.~''~ , .'.,
n caricatore calcola il selettore
,
,.
.,~.
,~--
•
.J,' ,I)
:r,
t
j
.
"";-
i
l,, ;
'
, ,
I\."·•
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 i¥lche 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.
\
I I J
"
\~
,
,I· . .. I"
1
· l(.~
: I~:
~'.
D.8 Esercizi
1,:" '
Esercizio D.1 Si considerino Ie seguenti definizioni:
::1,
. "Ip , '~
;;1
"'. ".
~
,;1 ", ,
.' .
','
,1'j;', .~;,)
,
~
._..
,.,
'. it.:..
A B
DB EQU
2,4 1
C
DB
B
EQU
A+B
o
J
1
, :
,-.
,\."
-.
\ 686
,,
Appendice D
-
,
~~
-,
.- ls- -d E EQU _A+ (C-tA) rt t S- - t- - ch -I dtt ' , I COnsl enno Ie lstruZlOD.1 sot 0 rIpe a e. 1 IPO 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 cias~ 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.
---
HOV HOV MOV MOV MOV
I -
'
-
AL,A AL, B AL, C AL, D Al, E
\Esercizio D.2 Si supponga di avere un programma COD questa segmento dati:
"-,
I
--, \
DATA A 8 C
SEGMENT OW EQU EQU
PUBLIC 'DATA' 0.1,2,3 A+3 3
D
DB
4,5,6
DATA
ENOS
,;
.'(
,
,
- I
'
*:
I ;
l<
,
,
,
b
'
:
"
~i
-
-
-
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.
\ '
I
AL,A AX,A+9 AX,B AX,C AL,B+C AX,B+C
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
\
Dove N e MATRIX sana definiti come:
---
-
MOV MOV MOV MOV MOV MOV
\
N EQU MATRIX DW
10 100 DUP(99)
Esercizio D.4 Si considerino Ie seguenti definizioni:
-' I -
DATA A
B
\
\
SEGMENT PUBLIC 'DATA' 'Questa e" la lettera A' DB EQU 'B'
,
,
'.
,.
",
II linguaggio assembler (8086)
,
,
687
~'.
,
'
c
-
o
I
'-:";
,
E F
*::;, .
DATA
(,
I: ;,.:;
<:-. c
,-
-
,
-
, ;
-
b:
Si 1) 2) 3) 4) 5) 6)
EQU EQU EQU DB ENOS
B+2 A+B A+C-O 1000UP ('B')
richiede: il tipo (type) e il valore inseriti nella tavola dei simboli per A, B, ... i1 contenuto del registro dopa l'esecuzione delPistruzione MOV AL. A; il contenuto del registro dopo Pesecuzione dell'istruzione MOV AL,B; il contenuto del registro dopo I'esecuzione dell'istruzione MOV AL, C; i1 contenuto del registro dopo I'esecuzione dell'istruzione MOV AL, D; Il contenuto del registro dopo 1'esecuzione dell'istruzione MOV AH, E.
1
F;
{~
Esercizio D.5 Si consideri il seguente tratto di codice:
'1.:"
i::
"
:]~,'
,,' ,, , .:' .
,"t.;.
-,
-
,-
,.....'.
"
";'",.. <'"-'
..
;, .'.. 1,-,·
,Ii
,':
"
,it 'Co.
C _
DATA MESS
SEGMENT _ 08 'MESSAGGIO'
DATA
ENDS
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 momento 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.
~i"
1.';:
"'.c. ,
"t
, -
,,~.;
-
j:i' ~
!
I"'
1
~: .
ii.
• 1.
i . "-
"--':':. '- -
!
,i:., ..
r ,
l
\!,'
/':L ,c
,,
" f:'f: I.· r
r-
-, )':'
Esercizio D.6 Si consideri il seguente tratto di codice:
DATA ALFA
SEGMENT 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 schema 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 attributi di un simbolo (err e una variabile che al ritorno riporta i1 codice di un eventuale
errore)_
.
.. l •."'/r-:'" ,. . .... .
,';i"l>'~' ,.....
688
Appendice D
.
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 ;Segmento dati N
EQU
100
COST VAR
OB
2
DB . -.
..
?
;Segmento di codice
L:
MOV AL,VAR MOV CX,N ADD AL,COST SUB CX,l JNZ L ....
Versione B ;Segmento dati N
COST VAR
EQU EQU DB
100 2 ?
.. . ;Segmento di codice
L: ,
MDV AL,VAR MOV CX,N ADD AL,COST SUB CX,1 JNZ L ... .
-.
-
."{' :. ".' ~.
.~'-:
\.
' .j.: :. l~'
i;''-'
,
.. {"
)
I.
,,; ,
I,'
- ,t.. .'
r
7,."
~
-,~
•
E
\..
Comunicazione tra Calcolatori
)
I-
j.'O, .l~
f"-. ;-::.
k
t·,~':,
1."
\-
;,:' .:-' ; . 1"
-
··J" .. ~-"'.
"
"f'},
·t·,
,'. p. ~. , .. ,
r.. ,••
~. ;
,....' :. :,
..
'.
\
In epoca di Internet non poteva mancare un capitolo sulla comunicazione tra calcolatori. 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.
I-
I-.
~.-..
~':
I
•,.".
~;:
,.C', ;.; p. ~;.
"
F. ~.- ;~
~Ii:-
,+ ·....
-, e
.>••,"...'. '
'
.' ,
f, ~
•
'_C·
•
,.
r:· ,"
,.
E.l Introduzione Quando si parla di reti di calcolatori ci si riferisce a sistemi di elaborazione debolmente connessi, nel senso che ciascuno di essi e sostanzialmente 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 disposit~vo 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 e quella 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.).
, La velocita di trasmissione si misura in bit al secondo. Talvolta questa unita di misura viene denomioata baud (1 baud :::0 1 bit/s) I
•
I
1)-
1]-
11-
]
.. \690
Appendice E
f
·'i .
i 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.. ~\1AN (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.
!WAN (Wide Area Network). Rete geografica. Puo arrivare a connettere nodi di paesi 0 continenti diversi.
I
"10'
. ;
I' '\
.'"., ,."
", ,"t ., "
· ,I
':
};'
f·
.,
,,,
t·-".,
••
;,." (~ ,
-
\.1.1 II mezzo trasmissivo
·,,,•.. "
-~
Le reti di calcolatori possono essere costruite BU differenti mezzi trasmissivi. n mezzo trasmissivo e dettato 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. •
-I
Due fili. E il mezzo trasmissivo pili semplice e piu economica, lisato per bIe, ~. 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 interfefenze esterne sono captate nello stesso modo dai due fiji; cio comporta un segnale ggiuntivo eli modo comune che puo essere eliminato piu agevolmente. La geometria . questa struttura permette anche di ridurre 1a diafonia quando pili linee sono riuite 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 r~terne sono disponibili anche doppini schermati (shielded twisted pair). favo coassiale. Uno dei due fili della linea prende 1a forma di un ci1indro eli mateI. iale conduttore racchiudente Paltro filo. Lo spazio tra i due conduttori e riempito di materiale dielettrico e il tutto e ricopeIto da Wla guaina isolante. Si pone il cilindro 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 e un fascio di luce modulato in n a 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 fototransistori. L'impiego dell. fibr. ottic., oltr. che in tutte Ie .pplicazioni pili omuni, risulta vantaggioso anche per basse velocita di trasmissione in ambienti parcol~ente r1.l)Ilorosi da! punto eli vista elettricoi viene inoltre usata anche per il suo alto livello df SicurezZ3, dal momento che e d.i.ffi.cile derivare i segnaJi cia una fibra
~
t _'t
-
~
~
-
1 I
..
•
"
"'. "
....', /
•
["
t·:
..
,'1".,-' ,g.'
I •. ,
I .'",
"
..
~~
'.
·,...
, "
,
, ," , ,"
\
r
Comunicazione tra Calcolatori
691
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. 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.
E.2 Il madella ISO/OSI , Un protocollo
e un'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 proto colli, per far fronte alIa cr·escita caotica eli soluzioni proprietarie. In questa contesto, particolare rilevaIlza assunse il modello definito dalPOrganizzazione Internazionale per la Standardizzazione (180). Si tratta di un insieme di protocolli definiti allo scopo di permettere a calcolatori di comunicare e scambiare dati indipendentemente cial costruttore 0 cial sistema operativo. In questa sensa si parla di architettura di tipo aperio (OS!: Open Systems Interconnection).
,
, , "
I
,,.
I Opplicozione presentozione sesslone
-------------------------------------------------------------
t applicoz.ione
presentozione sessione
,I
trosporto
i
- _________ r __________
trosporto
rete
----
rete
collegomento
----
collegamento
fisico SISTEMA A
fislCO
SISTEMA X
----
rete
---- collegomenlo fisico 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
I,
..""" l
•>". ., "
692
Appendice E
piu semplici, organizzate gerarchicamente a livelli2 . 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 questa 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:
Fisico. ~ il livello del collegamento fisico tra it sistema e la retej riguarda le caratteristiche meccaniche ed elettriche della connessione.
Collegamento. Fornisce U mezzo per trasmettere i dati sulla connessione fisica sottostante. Comprende ie tecniche d.i sincronizzazione (di bit , di parola e di frame) e it cantrolla degli errori. Re~e. 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. Comprende la compressione di parola e 1a cifratura dei dati. App1.icazione. Fa da interfaccia verso l'utente dei vari protocolli sottostanti. Fornisce it supporto per i programmi applicativi a110 scopo di garantire in modo aperto una serie di funzioni per l'elaborazione dell'inforrnazione.
E,2.l II Protocollo TCP!IP Nella stessa epoca in cui veniva proposto il modello ISO/OS1, si stava affermanclo it protocollo TCP lIP. Arrche il madelia TCP lIP si basa sui concetto di stratificazione, 2La strutturazione a livelli e un tipioo processo adottato nella progettazione e nello syiluppo di sistemi software. 3Si usa anche Ie parole pa.cchetto packet e frame.
·
,
.. -.'
,
,
l' ..
\
,I
\
·,.,
I'"
'.- .
Comunicazione tra Calcolatori ,
•
693
,,..
1-
,
,
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 TCP lIP, can l'affermarsi di Internet e diventato \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 TCP lIP e .in FiguraE.2. Yale la pena di notare che can il termine TCP lIP si design a in realta un insieme (,,,ite) di protocolli. In Figura E.2 ne sana indicati alcuni dei possibili ai vari livelli
..
· \'..
". :~.
~
~.
i
.'•"
opplicozione
,
trosporto
•
rete
,
Interioccia Rete e supporto fisico
, ~: ,
)
.".
...
'>' ;
,, .'
;"'."
:J
,, ,
•
-
UDP
TCP
,
IP Ethernet Token-Ring, FOOl,
X.2~.
leMP
ARP
ATM. Asincrono.
RARP
SNA ..
.
Figura B.2 Lo Stack TCP 11P. 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.
,
I-
np, SMTP, Telnet
'. ';"
-~,'r
-
\-
'I
'" ,
\-
1-
I. 1-
t,~>"' ;, .}~
,·, ·
t, '
I·
j:,.
Nel seguito faremo tendenzialmente riferimenta al madelia ISOIOS1. Del resto l'interesse di questa capitolo e focalizzato 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.
\-
I-
I'I
, ~; ,
'~'!
·.'
E.3 Livello fisico
-'" ~'/
·,. "
,.
,'1",
F
,
1 ,
I',
(
..
E,3.l Tipi di trasmissione 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 facilmente 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)
1-
J-
,
[694
i
Appendice E
-
,. , w.
w.
\ I
h
I +n---cJ. /1"11.
-I -
-
PuN-up Gltivo
_I
i
1ll
htG
I/'Iput
r olU~o
L--
1
PuU-60 ..n
'
:1.-
;~-f6'
,
I .1
•
,· . , I; . ,, ..\ .
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 25mA a lOOmA. La trasmissione su un solo filo (single ended) come in figura, viene impiegata 1su 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.
-
TTl.. ;"",,1
~"'G
. . . .'
~..
..
~v
•
, l',
,. ,·
. i;
II
fiF'""----'i
,-
..
:.... ,
· ~i
•
-81I
.'~;"
.,
.,';r"\:..
~
·
'.~
_.
-
-
..
{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 e fonte 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.
F·3.2 Esempio di standard di Hvello fisico: RS232C /V24 Lo standard RS232 fu introdotto nel 1962 dati' ErA (Electronic Industries Associa\tiOn). Nel 1969 la stessa organjzzazione americana presento una revisione denomilata 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), e stato poi adotIt,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 nee per scambiare i dati, cItre alla desiderabile linea di massa. Qui di seguito si riportano solo alcune linee dello standard V24.
e
.
I
'.
~I •
i',
Ic'~~
., ,-::
• •• 'f., f.','~ •• I"~
.,
,it .,' •• l".
'.:.
,--".
,; I, .'
•
-. ,• •
GND: Terra di riferimento, (signal ground, circuito 102). Ritorno comune per tutti , gli altri' crrcuiti d.i interfaccia4 •
-- I
-
~
, ;
,.
('--:-:;:-------
-4E
stata apecificata una sola linea di terra, comune a entr::unbe ie direzioni di trasmissione,
dunque soggetta a notevole diaionia.
1
/ f·
Comunicazione tra Calcolatori
695
TxD: Dato trasmesso (transmitted data, circuito 103). 'frasmette i dati dal DTE al DeE. Quando non e in 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 impone al DeE di predisporsi per la trasmissione dei dati: se il DCE e un modem, questa provvede a inviare 1a portante in linea in un tempo non superiore a 2 seconcli. 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 pronto a trasmettere i dati.
DSR: (Data set ready, circuito 107). Indica a1 OTE che i1 DeE
e
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 e permanentemente asserito.
DTR: (Data terminal ready, circuito 108(2). lndica al DCE che il DTE trasmettere, quindi comanda il DCE a connettersi alla linea.
e pronto a
DCD: (Data carner detect, circuito 109). Da DCE a DTE. lndica che DCE sta ricevendo la portante deU'altro DCE.
m Figura E.5 viene rnostrata 1a piedinatura del classico connettore RS232, mentre la TabellaE.l riporta Fassegnazione dei piedini ai circuiti descritti. ,
2
" 0 0
14 15
0
0 0
0 0
0
0 0
0
0 0
0 0
0 0
0 0
;Z5
Figura E.5 Connettore standard RS232C a. 25 piedini. Per la sua forma il connettore e detto a "D". Il connettore e maschio sui DTE e femmma. sui DCE. Can la diffusione delle LAN la comunicazione seriate viene sempre piu usata per piccole di~tanze e basse velocita. Poiche bastano molte poche linee per 1a comunicazione, negli anni recenti, it connettore a 25 piedini e stato 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 e spiegata nella 9idascalia di Figura E. 7. Tale problema non si pone per gli altri segnali.
"
696
Appendice E
I V.24 102 103 1 5 ~ 1 7 ~
[RS232 [}bbreviaz. AB GND .
BA B
m
L;,
-g-
~
L;D CF
108/2 109
TxD
UTR DCD
I pin I 7 2 3 4 5
6 20 8
Tabella E.l Corrispondenza tra linee e piedini suI connettore RS232C a 25 piedini. Come si vede, anche un connettore a 9 piedini e in grade di accogliere Ie linee di interesse.
, verso
il
DCE
,"0
ToO
R.O
R.O
RTS
m
CTS
m
UART
1M'
•J-
R.O
"
"-
"• " "T
( 1)
T,O
drivers/
RTS CTS
1
(2)
reC~lIvers
Figura E.6 Tipico collegamento RS232 per comunicazione asincrona. VUART (Universa.l Asynchronous Receiver 7ra.mmitter) e i1 dispositivo che serializza I'informazione e"la teasmette 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.
E.3.3 Esempi di collegamenti RS232C In Figura E.8 viene schernatizzato if collegamento tra due sistemi attraverso linea telefonica.
Quello di FlguraE.8 e II solo collegamento previsto dallo standard V24. Tuttavia) 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 pronto 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 e mostrato un esempio di (cavo di) collegamento con Ie Iinee DTR/DSR usate in funzione di hand-shaking.
,.,
)
•
697
Comunicazione tra Calcolatori
..
1
bits di stop
bit di start
,
~
"/\XXXXXXX\
"
,
~
•
\
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 tras~ione di un carattere) cleve per rona di case essere' a liveUo alto. Ne consegue che per i hit'di start/stop la convenzione e opposta 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 logic~ositi'~: 'L'incongruenza si risolve indicando le !inee dati della standard RS232C come TxD e RxD. •
RS232
i'
1,..---
IOTE ++-10CE
,
Ar--n_~~~~--n-10CE SM10TE ,
'-
11.' ,
,
",
r--
SCH 1
".~
CN07
....-'.I.
.. " 1'I ..'.,
T.O 2 R.D J RTS 4 CTS 5
OTR 2'
•,
------------
,
...
RI
eND
3
"
,
§
1
'.
j ~ 1,
, .
., -,
1
SCH
7 ONO 2 T.n
CN07
T.O 2
R"" RTS<
3 R.D ~
0'"
OSR6
6
OSR
8 CDC 2R1
COC8
8
CDC
RI
22 RI
2:1:
1.
RTS
20 orR
"'-conMltari/ femmina
".
>---~------------_1--_<
OrR 20
"
/,':.1 ':'
I
S CT'
I'
2
SGH 1
I-
CTS 5
I'6,OOTR
:3
coca
, T,O R,' C ,• 7
RTS CTS
OSR6
,
, ,e<
--~
~
~
I-
1-
S\
STAZ.8 STAZ.A Figura E.8 Collegamento tra due stazioni su linea comoltltata.
,
\
RS232
--,\
i,
I
~ CCNlneltOrl/ femmlna
Figura E.9 A, sinistra il collegamento null-modem a 3 fili, a destra il collegamento nullmodem 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 hand-shak~g tra i PTE collegati.
1
L
r
1',,J, -~
E.3A Altri standard seriali
,•• . .,
.".
, ., .'. ,
.. '0: .. . "
( .•.
Descriviarno ora brevemente due standard di collegamento seriale che trovano largo impiego in ambiente industriale. Ogni circuito e di tipo double~ended bilanciato. Come supporto fisico previsto Puso del cloppino intrecciato (Figura E.10).
RS422jVll.
e
Loop di cerrente a BOrnA (direttiva CCITT V31). Lo schema e in Figura E.n. AJ passaggio di·una corrente di 20mA eassociate 1'110gico (Mark)) mentre 100 e associato all'interruzione del passaggio di corrente. n loop di corrente e stato standardizzato
I~ I~ .
698
Appendice E
]
-
\ •> "
+5V
~
J
\ I
--~
,,.. ,,. ,,'
+5V
> -;
OS
o"~l X
X
"'f.. I'
25 ohm
"!!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
-
I,
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. ,
-
-
•
I~'"
_l
-
"J"J
,
nella direttiva CCITT V31 e nelle norme DIN 66258/66348. N el loop di corrente viene raccomandato l'uso di optoisolatori (FiguraE.ll).
,~.;
,
I
:.' ;
r_/R: ,
TK/R:-
I
I-1< l-
doli --. dlgitoli
=[ 11 -
I
·,,' ,. ., ,~,;
"""'l
120rnA
,.
riv.lotar.
r-~ati digitoli
cil"euito rivelotor.
''''''' I
,
,.
h
(
'\Mo,
I"~ '
'i -
;'"
.:s!
'\Mo-{
-
,"
~
r'~ •,"., J:
·.
~
1",I':'
,
\
••••
-' IFigura E.ll
J:,
,.
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 ~parte destra.
-
,f :
"r' !~
-
':'
.'.
'
I..
~.4 Livello di collegamento f;'
c•
AI Hvello di collegamento spetta it compite di una prima organizzazione dell1infor-., )nazione trasmessa. L'informazione viene 'trasmessa in forma di messaggi1 ovver6 \equenze eli caratteri 0 eli bits. Affinche il messaggio trasmesso venga corretta.rnente
_.
..
'.
-__ I -'
•
,
b
Ssebbene la comunicazione possa essefe su linee paraUele, nel seguito considereremo 8019 la coJ 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.
_.
1 J
-
,·,,
'; :'
~
Comunicazione tra Calcolatori
699
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:
,•
a) sincronismo di bit;
1
b) sincroni~mo di carattere (byte);
I •
cj sincronismo di pacchetto (frame). I precedenti sincronismi sono a c~rico dellivello di collegament0 1 mentre Pindividuazione delPinizio e della fine di un bloceo informativo completo riguarda livelli superiori dello stack ISO/OSlo TCP /IP. Ci sonG due modalita. di trasmissione: a) 130 trasmissione asincrona;
b) la trasmissione sincrona. La differenza fondamentale tra Ie due modalita. e che 1 mentre can la prima i clock dei terminali comunicanti non sono sincronizzati, con la seconda 10 sono. Nella trasmissione asincrona, la sincronizzazione di bit e di carattere e implicita nella modalita di trasmissione stessa, mentre nel caso della trasmissione sincrona presenta qualche complessita..
-
•
.
.
'
',
,
EA,1 Trasmissione asincrona 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: e dunque 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: bit di start bit destinati ai dati bit per it contrello di errore (bit di parita.) bit di stop velecita. usuali di trasrnissione
1 5, 6, 7, 8 nessuno, 1 1,1.5,2 1200, 2400, 4800, 9600 e 19200 bps.
6l n realta. 130 trasmissione ~incrona viene usata anche quando i caratteri sone tutti disponibili sin
dall'inizio della. trasmissione. Data 130 sua semplicita
e 10 standard per le trasmissioni
"lente".
700
Appendice E
bits di stop
bit di start
.::::;
_
"
,
I \ X X. X X X X X \
'"
,
...
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 approssimativamente 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 e disponibile 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 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 II modo di trasmissione sinerono viene impiegato quando i dati cia trasmettere hanna continuita, in modo cia impegnare la linea di comunicazione con continuita.. Diversamente dalla trasmissione asincrona, che precede sempre per caratteri, la trasmissione sincrona puo essere: a) orientata al carattere, se i dati sonG logicamente·divisi in caratteri; 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 (sineronismo di bit) deve essere in grado di sincronizzarsi sui caratteri nel primo case" e sui frame nel secondo.
.
1-. Comunicazione tra Calcolatori
101
,
1--
n dispositivo
che serializza.i dati in formato sincrono prende il nome di USRT Receiver and Transmitter)7. Analizziamo ora i tre livelli di (Universal . . Synchrono'U~ .
smcronlzzaZlone.
·
,
• ,"
:~. ,i
,,. ,
l
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.
I-
I-
I-
A. Codifica RZ (Return to Zero). Ogni bit da trasmettere viene codificato sotto
I·e
ri., ,
•
forma di impulso come illustrato in Figura E.13. •
sequer"l20 di bit do trosmeltere
1 0
',<
"•
,~-
~
forma d'ondo trosmesso
-
.,) !,
~,
~~;
r1:\.•.•
.' ·wt .-
"j t",
clock estrotto in ricezione
~
..JJ.
.L
1 1 000
1 0
l~
~ LL_
1 ~
'-
n
\-
-
1-
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.
1
1-
~',
:~]J(' . Vol
f.r'&"
••J ' ::W.,
f .,'
~,
m I~
,
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 e illustrata in FiguraE.14. La codifica Manchester e adottata dallo standard IEEE 802.3 per Ie reti di tipo Ethernet.
)-
~
·<\
't,.
.~,".
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 e incapsulato tra un carattere di
1-
J-
,
."'"
,!J
j,i: I~~
1In commercia si trovano anche dispositivi USART (Univer3al Synchn:motls/A3!.mcrhonotu Receiver and Transmitter) capaci di funzionare secondo Ie due modalit.3..
)-
.. -
.
702
Appendice E
..
sequenzo di bit
.- ( ..... ,
1 0
do lrosmettere
1
1
o
0 011
0 1
forma d'ondo
trosmesso
.... I
_I
-
..
.clock. estrotto .
i L.
,....
"--
-
sequen20 dei
\
bit rieevuti
,.... \ •
_L
,n f1Ce210ne
I
Figura E.14 Esempio di codifica Manchester. A sinistra viene mostrata la corrispondenza tra bi~ 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 I,.
I 1
].
._, , .inizio (STX) e un carattere di fine (ETX). Supponendo che la sequenza del carattere 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
~ ••J
\
-I
un
I SYN I SYN I STX I
I ETX 1'-.-
!
I !..
i.. I
.I.
j
contenuto del frame
~\
i.
Figura E.15 5truttura del frame per 1a. trasmissione smerona orientata al carattere
I
I •
i.e-
,
.._. I
I SYN
SYN
10 0 0 1 0 1 1 0 000 1 0 1 1
ante!~~
...
_I
_l
cui il ricevitore roggiunge 10. . . SincronlZ20Zlone di bit
, ~
oj
I I, i'
,
istante in cui il ricevitore roggiunge 10 sincronizzazione di
I
I
byte
II
... \ F;g=a E.16 Uso del carat.tere SYN (00010110) per Ia. sincronizzaziolle di carattere.
n ricevitore
_.
J
l
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 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
i
, :
I"
Comunicazione tra Calcolatori
703
auspicabile invece la caratteristica di trasparenza ai dati, doe la capacita di un qualsiasi protocollo di funzionare indipeodentemente cia! contenuto dei dati. Per ottenere dunque una sincronizzazione di frame trasparente ai dati e necessaria l'uso di un ulteriore 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 e aneora 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.
_I
SYN
I SYN I OLE I STX I
un
!
I OLE 1OX 1_ !
contenulo del frome
Figura E.17 Uso del carattere DLE.
.
i
Gli esempi sopIa riportati ~iprendono la termiQ.ologia e la struttura del protocollo noto come Basic Mode., la cui versionestandardizzata (BSC) viene descritta in seguito.
-
I
Trasmissione sincrona orientata al bit In questa caso non e necessaria la sincronizzazione 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 e uguale 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: 01111110 0111110
flag di apertura 0 di chiusura; dati (ultimo 0 da rimuovere in ricezione).
I
I ,
~
contenuto del frome
i
, ,'.
I".
Figura E.18 Trasmissiolle sincrona a bit: sincronizzazione sui frame attraverso un flag di apertura. e uno di chiusura. II ricevitore e in grada di riconoscere l'inizio e la fine del frame quando individua una sequenza di sei cifre 1 consecutive.
704
Appendice E
.
E.4.3 Controllo degli erron• Al hvella Collegamento e anche demandato il compito di gestire gli errori in rice~ 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: a) i metodi per un affidabile rilevamento degli errori; b) gli schemi d.i ri trasmissione dell'informazione. Rilevamento degli errod Controllo di parita Ad ogni carattere trasmesso viene associato un u1teriore bit chiamato 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 e affidabile solo se generalmente si manifest80 un solo errore per ogni carattere trasmesso. Paritd. longitudinale Quando 180 trasmissione e orientata 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 e in 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) e esprimibile con il polinomio M(x) x~ + x 2 + X + 1. 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).
I
\-
I
:, ,
.
Comunicazione tra Calcolatori
,, 1
,
105
\--
I'
••
, i: I,
,
p,
'I
8. B. B. 81 B, Bt B.
I,.
0
0
0
0
0
1
0
0
1
1
0
0
1
8
0
00
1
1
1
1
1
0
0
1
1
0
0
\
0
0
\
l,
0
1
0
0
1
1
0
0
1
1
,
1
0
0
0
1
bit di porit, trosversole dispori
0
0
, 0
0
\
,
1
\
0
1
1
0
..•
,
0
,
\.-
0
8 '
1
0
0
0
1
0
0'
,
.'
Figura E.19 Parita. longitudinale e trasversale: i bit cerchiati definiscono una zione di errore non individuata.
I, I:
_.
coroHere di poritO longitudinole pori
configura~
J.
[
Sia G(x) un polinomio (generatore), corrispondente a una sequenza di n + 1 bit, con n < k, e si consideri il polinomio M(x)x n
f ..
~\
corrispondente alIa sequenza ottenuta traslando tutte Ie cifre di M di n posti verso Ie cifre piiJ significative. La relazione
M(x)x n = G(x)Q(x)
',.
e
Ie
,..c •
..
.
e
.
M(x)x n
.'.'.~-
Ovvero, la sequenza
,,..
"", >
".~: '" -
':~
"'c"
" I •
,,'
'I:'
",:.
ii. :.!.
","..
-'
'. ..I•"
~~
...':
'~;;' '~. !:-,
':i:/
,'''!
;
•
I'-;\.: "
';:.1.'::-
;;t-
.,'..~" ,~-
+ R(x) = G(x)Q(x)
\.-
I.. 11- -
.-
T(x) = M(x)x n + R(x)
.'-'-
,
,
dove Q(x) il quoziente e R(x) il resto, sempre 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:
""
I~
+ R(x)
II'
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), e clivisibile 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) e sicuramente affetta da errori. Esempio di calcolo 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
j.
n ricevente divide
I·
=
presenza di errore.
=
=
la sequenza ricevuta per 10 stesso G. Se il resto non
e 0 si e in
I
106
,r
Appendice E
1
·,-•.
Anche con la tecnica ora descritta possono comunque verificarsi configurazioni ~ di errore ,non rivelate in ricezione (do avviene quando la configurazione di errore
:i
~
E(x)
=T
· ,,"
,
(x) + T(x) risulta divisibile per G(x) ),
I
i'
~
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. + 5 4 2 \ x +x +x +X +1
-,-
c.
i
I"
I
r,
,.
!•
,, ~,
,-
,
,
-
~ Ritrasmissione dell'informazione
Nel casa in cui iI ricevitore individui errori ( nell'informazione in arrive, ne viene richiesta 1a ritrasmissione. Gli schemi di ritrasmissione 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
I,
t I,
l.. ,
e schematizzato in FiguraE.20.
I'
~.
-
1
T
~
-' ~
,-
_. _. _.
\R
-"
~
frome N+ 1
ACK(N/ frome N
~
ACK(N+1V (rome N+
tem... _
: )
11
Figura E.20 Schema di ritrasmissione Stop and Wait. II trasmittente T, dopo aver trasmesso 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 ~rrori, i1 bloeeo viene seartato e nOD viene trasmesso l'ACK. Analogamente, se T riceve un ACK errato, '\a risposta non viene considerata. 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 quale e necessa;rio inserire.~ ciasc~ blocco un identific~tore unico (un Durnero progressiyo) the rappresentl la sua pOS12lOUe aU'mterno del messagglo.
I
l
I tempi caratteristici di questa metodo sono schematizzati in Figura E.21. significato dei simboli e il seguente:
Tp T jz
\
-
-'
I
frome N
)
: :
Tip
:
T a"
:
Tap
:
I t
I , "
n
ritardo di propagazione diuata del frame tempo di elaborazione del frame in R
durata del messaggio di ACK tempo eli elaborazione del messaggio di ACK in T
Nel caso in cui non si verifichino errori, il tempo T ehe intercorre fra la trasmissione di due frame consecutivi
I \
e:
I
I
"
Comunieazione tra Calcolatori
T
I
T
I
__I" frome
N
707
,
;oJ
I
frome N+ 1
1__
I
R I
T.
I
I
To.
1 T, 1L....T,. ,
I I
Tip
I
Til'
rt 'I
I
, I
Figura E.21 Tempi caratteristici deUa tecnica di trasmissione stop and wa.it.
~ T == T,z + Tip + To:!: + Top + 2Tp In caso di errore T e ancora maggiore, dovendo considerare ancbe l'intervallo di timeout10. Foich€: in generale valgono Ie condizioni Tax « T iz e TiplTop « T p, ne eonsegue ehe nel caso migliore si ha:
T = Ti:t + 2Tp
~
I
il
I
Se definiamo ora l'efficienza del collegamento U come:
U ::
tempo di trGsmissione di un blocco tempo di trasmissione tra due blocchi consecutivi
nel caso rnigliore si ha
U ==
Ti:t
Ti :!: + 2Tp
1 1+
2Tp T;.,
1 1+2a
dove si e posto a == ~:. U fornisee una misura della sfruttarnento della eapacita trasmissiva. Si ha una miglior utilizzazione quando il ritardo di prapagazione e molto piccolo rispetto al tempo richiesto per la trasmissione di un blocco, ovvero quando la distanza fra T eRe breve e la velocita di trasmissione e bassa. ARQ.GBN (Go·Back-N) Allo scopo di migliorare l'efficienza del (livello di) collegamento 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'idealita) anche se la gestione della trasmissione da parte di T risulta alquanto piu comples-
e
sa. In particolare, se la finestra consentita lunga 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. lOPer questo motivo, alcuni protocolli di collegamento prevedono I'invio del messaggio NAK (Negative AcKnowledgement) per anticip¥e a T I'errore sui frame trasmesso. .
.
,
I, ,
I
1 .. 708
Appendice E
tempo
T
I(N)
I
R
I(N+ \)
I(N+2}
I
I
1(")
I(N+3)
1("+2)
I(N+2)
I(N+ 1)
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.
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 della capacita trasmissiva a scapito di una ulteriore complicazione del protocollo. Una variante di questa schema e utilizzata nel protocollo IP. tempo
T
R
r(N)
I
I(N+ 1)
I(N+2)
I
I
'(N)
I(N+ 1)
I(N+3)
'(N+2)
I
'(N+3)
I
I(N+4 )
'(N+l)
I
'("+4)
•
L
Figura E:23 Schema di un protocollo can ritrasmissione selettiva dei pacchetti errati.
.
E.4.4 Protocolli per il livello collegamento
e
Descriviamo ora due protocolli: il primo (BSC) orientato aHa trasmissione a carat· teri, il secondo (HDLC) orientato alia trasmissione a bit.
e
BSC (Binary Synchronous Control) n termine BSC e di casa IBM ed e usato per indicare il protocollo ISO orientato al carattere, nota come Basic Mode. La schema di ritrasmissione e del tipo ARQ-SW con Pu~ 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 iniziare una stringa di testo.
1-
1,.
" :{. .
,
"..,
Comunicazione tra Calcolatori
709
\ .-
.. ..
-l
\:
[ SY"
.....
I SY" I ACK I
I'-'''-''$YN I SYN I NAK I
v-
i
i I'
,
ricono$cimento positivo/ $tOliont; pronto Q r;cevere un bloc:co
\-
riconoscimento negotivo/ $tozione non pronto 0 rie.vere I,m blocco Selezione/interrogol.lone
prefisso I indirino delle stozione
\-
"•
!
II
I•$V" I $V" I SOH I STX I
, I
I SYN I SYN I S1-X I I SYN I SYN ! STX I
\
I
,,,10
I ETS I scc I
primo
"00"
te$to
I ETB I Bee I
blocco ;nlermcdio
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.
1
ETB End OJ tronsmission Block. Usato per indicare la fine del bloceo di dati. quando il messaggio e suddiviso in bloccru.
\
_.
> I
,
I , i~
ETX En) OJ Text. Usato per segnalare il termine di una stringa di testa.
E~Q-:inquiry. Richiesta di risposta da. una stazione remota; la risposta puo includere l'identificazione ejo 10 stato delta stazione.
t• I I, ,
I I
ACK Acknowledgement. Riconoscimento positivo da parte del ricevitore in risposta a un messaggio inviato dal trasmettitore. NAK Negative acknowledgement. Riconoscimento negativo da parte del ricevitore in risposta a un messaggio inviato dal trasmettitore. SYN Synchronous idle. Usato per permettere al ricevitore di raggiungere tenere il sincrQnismo can uno schema di trasmissione sinerono.
\ ,I I,
, , ,.
I I
•
,r [
I I, !I I
I
0
man-
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. ,
HDLC (High-level Data Link Control) E un protocoUo standardizzato ISO e noto anehe con altre sigle 11 . Definito come protocollo per uso generale l sia per collegamenti punto-punto che multipunto l n protocollo HDLC e orientato al bit e dunque risulta piu efficiente rispetto ai protocolli orientati a1 carattere. L'unita. di trasmissione e il 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:
,
lllBM usa il termine SOLe (Synchronous Data Link Control), l'A.NSI usa it termine ADCCP (Advanced Data Communications Control Procedure).
\-
\
I· -'
\..
I. _. \.
\-
po
ti
A ppendice E
I
,
8 "
8 i
\ ,
I
indirizzo
do 0 a N
8 j
contrello
16 ,
informozione
8 "
FCS
, ,.
,
Figura E.25 BDLC: struttura del frame.
f16 + X 12 + X5 +~.
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:
,
I
\ 1. Frame non numerati: usati per stabilire connessionejscoDnessione, Non richiedono 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.
(
1• I
Ij. '.
E.4.5 Esempio di dispositivo per il controllo della trasmissione: 1'8251A
L I
\
,f
Sebbene si tratti di un dispositivo ormai superato, canviene fare un breve eenno a1 r.omponente 8£51A (Intel), una USART (Universal Synchronous and Asynchronous eCeiver and 7ransmitter) programmabile in modo da permettere trasmissioni sia 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 in 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 data·out 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 ~251A 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. ~iceZione/trasmiSSiOne legata 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:
t
I I
I
,.
e
e
j
frequenza di clock = fattore di baud rate x baud rate Se per esempio si ha:
I
I I L
, ,:,
, ,,
,, Comunicazione tra. Calcolatori
,
0, ',0
ONO O. 0, O. O.
r.c WR
"
C/O RO
Ib
, ,
,• ,
, • •
"
8251A
" " "
0, - D.
au. [X,u
h'
DolO Ira ImIno
0, O.
'"
Data Ricl!\I\,Jlo
'.
R~ROY
C/O
;Us
..
Controllo/O
RO
Comondo di IettUfO
CS
Chip seled
en;
Clo"r to Hnd
RTS
fl.lquul to .elld
OTR
00\0 terminol '\lady
llSR
Oclo I.t
"''' CU<
'"
h(MPTY
ffi
" "
.
Rlcnione pronto
OTR
OS,
""
(6 bit)
lralmlniono pronto
T.RaY
,.C
711
eomondo di ICrittY'O
r.~y
SYNDCT/BD
Cll< hC ,.C
hROY
Clok
Clod<. eli lrOsmiU;OM
Clock dO ,;cnion.
Figura E.26 Piedinatura del componente 8251A. Viene indicato il significato dei piedini rilevanti a comprendere il funzionamento del dispositivo.
I B2 llITJ 0
0
0 I I
I
0 I
fattore di baud rate modo sincrono I 16 64
--
I
Tabella E.2 Fattore di baud rate.
ve10cita. di trasrnissione: 2400 baud; velocita di ricezione: 4800 baud; B2 BI = 10 (fattore di baud rate: xI6). si deve avere frequenza in rite frequenza in RxG
38.4 kHz 76.8kHz
E.5 Cenni sulle LAN 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 termin~ minore di un migliaio e la velocita tra 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 facilment~
e
712
Appendice E
8251A
eLK DE
T
Reset
,
iR, IR n+l
or;
'"
~ode
[
Sync chor 1
I I
07-00
8286
I
RESET
GND
'J
TxROY
Data out buffer reg
1l
Transmitter shift reg
I
Status register
OS
indirino
.[ t :,::; ,,,'milo
I I I
Doto-in bufler reg
or;
decod;f,
Control regisler
I
+' ,v
V~
R~RO'(
delay
IO/~
Sync cher 2
I
I Receiver shiH reg
W1l
H
register
h , ·9"5$0 ,eriole
R,O r.E
, 5cito ,ariol!
r.o
DSR DTR CTS RTS
co"t,ollo modem
$YNDET
R.e "e
e!~
]
clock
bus doti bus indir;zzi
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 possibile 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 e 5, 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 quella 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 composta da:
e
e
a) un mezzo trasmi5sivo;
b) Ie interfacce tra DTE e rete;
c) i dispositivi di gestione e di eontroIlo del traffico.
1 "
Comunicazione tra Calcolatori
713
•
'.0 ',0
8251A
""""m ""g ""
.
6'....' •
rece~er
RS 2J2 C
1
::;= ""
"
modem
OI;"<;'onO
inl"lll<;cio tel,fonica
::;:
~n.
ldtfonica
9,,,,,talo,, oj boud rote
1
1
Figura E.28 CoUegamento tra P8251A e un modem asincrono. "
, ,
. ,,
,
'.
,
E.5.1 Topologia di una LAN 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.
,
1
I terminali (SJ sono collegati in derivazione al mezzo trasmissivo
caroune, di norma bidirezionale 1
,
come in Figura E.29.
/\ I
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.
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. I~La.
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.
\ 1
I
I I
!
_7:.14_ _A.::p,-p:.e:..:.di::.·c:.e..cE=--
_
, ~ Topologia
• •
ad anello Le stazioni sana disposte sul canale di trasmissione con una struttura circolare (Figura E.30).
s
s
- I
•
,
s
s
\ Figura E.30 Topologia ad anello.
,
I
I•
L'informazione percorre Panella in un solo senso, passando attraverso ogni stazione prima. di tornare a quella di partenza: dunque ogni stazione eflettua anche fun\ zioni di rigenerazione per i messaggi in transito. Una tipica connessione e riportata \ in Figura E.31. ;
r'I~
'00
lunl,en, /
cireuilo - d i bypan
- , (
L-Fh--
I
r, Figura E.31
...
I 1
prin~ipole
"-
~
,/
lerm;oole
-- ~;~~r'~lodi I
Tipica connessione di una stazione a.ll'anello.
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 e previsto 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 funzionalitA della rete).
/ Tapa/agia a 3tella Thtte Ie stazioni sana connesse can collegamenti radiali a un nodo JI 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:
---_.-
, •
" onello
I
_.
ri e.i
"
,
•
,
,
Comunicazione tra. Calcolatori
715
s
~
I \
node centrale
s
---------
s
Figura E.32 Topologia a stella. • 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. • Flessibilita.: limitata dalla capacita del node centrale, COn qualche problema di
riconfigurazione. • Distanza tra i terminali: limitata. • Costi: alti quelli iniziali, cbe comunque decrescono per Ie successive installazioni. • Velocita. di trasferimento dei dati: media.
E.5.2 Tecniche di trasmissione Nelle reti LAN si hanno essenzialmente due diversi tipi di tecniche di trasmissione. 1. Tecnica baseband. I segnali sana di tipo numerico in banda base; al momento le reti che adottano t~e tecnica OlfrODO solo servizi di trasferimcnto dati;
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.
I mezzi fisici utilizzati
SODa:
a) doppino telefonico; , b) cavo coassiale; c) fibra attica. Le caratteristiche di questi supporti sooo schematizzate oella segueote tabella:
•; I•
,: , .'. ,.".
716
Appendice E
tipo·"di supporta
oppinO
-,
topologia.
Ilius.stella..
rest~one I
ca.. 4
telefonico ca. 10 cavo coassi~us,anello baseband cava coassiaIe I bus I ca. broadband ra. attica. I steUa..a.oeUo I ca.
I
I
velOCIta
I
max.num. staziani /band. , , aceettate I n.5fJbDS I 100
costi I ·complessita
I
medi \
media,
medt I
media.
lOMbps
I
1000
di intercon· assi
J
nesstone bassa
.
t.
. •
E.5.3 Tecniche di accesso . 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.
I I
I I I
I I
Un esempio d.i tecnica d.i accesso casuale e rappresentato dal metodo CSMA (Carner·Sen"e Multiple Acces,,). Questo metodo prevede l'invio di una portante suI mezzo fisico me subisce una modu1~ione quando.e presente del traffico sulla rete; una stazione in procinto di trasmettere puo dunque stabilire dall'ascolto della portaote 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 trasmettano contemporaneamente. Infatti, a causa dei Iitardi di propagazione sulla lineal pub succedere che 180 modulazione della portante da parte di una stazione trasmittente 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'Detection) 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 invece it metodo token passing in cui una stazione e abilitata a trasmettere se rUeva sulla linea la presenza di un token liberol costituito da una speciale c·onfigurazione ·di bit. Quando cia avviene l la stazione 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 token passing non esiste quindi il problema della contesa del mezzo trasmissiva e non possono avvenire collisioni.
e
:
••
' '.
1-
t
Comunieazione tra Oalcolatori
717
,
E.5.4 Esempio di LAN: la rete Ethernet
.
Ethernet estata proposta agli i.nizi degli anni 10 [MB16J. E stata in seguito sviluppat, 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 eomitato IEEE 802. Ethernet e diventata 10 standard IEEE 802.3. La velocita va da 1 Mbps fino a 150 Mbpsl a seconda del mezzo trasmissivo. La topologia e a bus.bidirezionale e la struttura del messaggio segue il protocollo HDLC. n formato di un pacchetto e in FiguraE.33.
"""""'" 8
....", """"'" 6
-
""""" '''''''''''' "'. "" """"',." 6
2
j_
0-1500
"'" 4
Ll>n9".:uo irl boyle
I·-
_
1
.-
1~
\-
Figura E.33 Formato di un messaggio Ethernet. \,
Dal punto di vista elettrico 10 standard 802.3 prevede una codifi~ 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 esclusivamente usa di un cavo coassiale tipo CATV (COf1.lmunity Antenna TV), ormai praticamente scomparso. Molto diffuso e it pili ~conomico cava RG58, Ie cui attestazioni aono realizzate con connettori BNC. Negli annj recenti si e vista l'espansione di Ethernet su doppino. .
~ \-
--
"
\-
•
\.
•
I· .
I ••