25 0 43MB
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
..
-
,
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,
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
~;,
.
"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 0' .;.... --
,;.~r'~?;~~~:'-'~ --
.-
)
_... . ,
~
-"....
,-
"
.
,
.'
",,,;,-.~,".,,--,
,
--
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
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'
, ,;
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
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.
.
.; , 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
.~.
-
:~
• 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)
:.
\~:
:~
:'"
. 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.' . d\ caricamento del programma viene usa.to un regi3tro di "egmento. Naturalmente I'esecu· " 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 ,~; '-",",' :., ;~: ."",'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 ,':