ERRATA CORRIGE

ERRATA CORRIGE
Errori nella prima stampa del volume
Architettura e organizzazione dei calcolatori elettronici
Aggiornato al 26 novembre 2014
Nota: Molte delle correzioni riportate sono relative a banali errori tipografici. In alcuni casi, come nella tabella
qui sotto, le correzioni sono abbellimenti intesi a migliorare la leggibilit`a.
Premessa
• Pagina X, dopo il punto 7.5.1 inserire
“Appendice - Interruzioni nella CPU multiciclo ............219”
• Pagina XIX, la tabella deve essere strutturata nel modo seguente:
Prefisso
Abbr.
Quantit`a
Yotta
Zetta
Exa
Peta
Tera
Giga
Mega
Kilo
Y
Z
E
P
T
G
M
K
milli
micro
nano
pico
femto
atto
zepto
yocto
m
µ
n
p
f
a
z
y
1024
1021
1018
1015
1012
109
106
103
1
10−3
10−6
10−9
10−12
10−15
10−18
10−21
10−24
Quantit`a
1 000 000 000 000 000 000 000 000
1 000 000 000 000 000 000 000
1 000 000 000 000 000 000
1 000 000 000 000 000
1 000 000 000 000
1 000 000 000
1 000 000
1 000
1
1/1000
1/1 000 000
1/1 000 000 000
1/1 000 000 000 000
1/1 000 000 000 000 000
1/1 000 000 000 000 000 000
1/1 000 000 000 000 000 000 000
1/1 000 000 000 000 000 000 000 000
• Pagina XIX, subito dopo la tabella inserire questo periodo
“Per convenienza si e` stabilita la convenzione di usare le lettere maiuscole per le abbreviazioni dei
multipli dell’unit`a e le lettere minuscole per le abbreviazioni dei sottomultipli. Questa convenzione
non e` rispettosa dello standard ufficiale, che, per esempio, denota 103 come kilo, abbreviato come k.”
Capitolo 1
• Pagina 8, penultimo rigo del testo: sostituire “ha” con “a”
Capitolo 3
• Pagina 57, nella didascalia di Figura 3.11 sostituire “x y” con “x z”
• Pagina 70, al quarto rigo del paragrafo 3.8.1 sostituire “z0 , z1 , ...., zm ” con “z0 , z1 , ...., zm−1 ”
• Pagina 72, nell’ultimo rigo del testo sostituire “w = D” con “w = A”. Inoltre deve essere y =
CA B; z = DA B C. Nello schema a sinistra in Figura 3.34, denominare “w” anzich´e “x” l’uscita
in alto.
1
• Pagina 90, Esercizio 3.5: sostituire “... espressioni dell’Esercizio 3.7” con “... espressioni dell’Esercizio 3.4”
• Pagina 100, i 4 segnali di Figura 4.9 sono, ordinatamente dall’alto verso il basso, y, S, R e Ck .
Capitolo 4
• Pagina 102, nella Figura 4.11 complementare l’uscita in basso del Flip-Flop JK.
• Pagina 118, Figura 4.43 sul lato destro sostituire “BUS<-RS1” (compare due volte) con “RD1<-BUS”
e con “RDn<-BUS”.
• Pagina 119, Figura 4.44 il blocco in basso a destra deve essere marcato come “RDn”
• Pagina 121, Esercizio 4.4: sostituire “... del Paragrafo e si” con “... del Paragrafo 3.5.3 e si”
• Pagina 123, La didascalia della Figura 4.50 si deve leggere come “Rete per l’Esercizio 4.19”
• Pagina 123, inserire l’esercizio 4.23 con il testo seguente.
“Progettare la rete avente un solo ingresso x e una sola uscita w rispondente a questa specifica: (1)
quando x e` alto, w e` basso; (2) quando x viene campionato basso, l’uscita w deve passare allo stato alto
con un ritardo di un periodo di clock, ovvero il cambiamento di w deve avvenire sul (corrispondente)
fronte del clock successivo; (3) w deve restare alto esattamente per un periodo di clock; (4) dopo che
w e` tornato basso occorre che x ritorni alto prima che sia possibile la generazione di un altro w a causa
del campionamento di x basso.
Si noti che la rete pu`o essere impiegata per generare il segnale di WAIT verso la CPU da parte di una
memoria lenta quando essa viene indirizzata (condizione espressa da x basso). ”
Capitolo 5
• Pagina 128, Paragrafo 5.2, riga 4: sostituire “M−1 ” con essere “M−1”.
• Pagina 130, riga 5 dal basso: modificare “`e il lindirizzo simbolico” con “`e lindirizzo simbolico”.
• Pagina 132, nella Figura 5.7 l’ordine dei campi dell’istruzione “ADD R1, R2, R3”, dovrebbe essere
“ADD, R2,R3,R1”.
• Pagina 134, figura 5.9, riga 3 della didascalia: sostituire “dellistruzione successiva il secondo macrostato” con “dellistruzione successiva. Il secondo macrostato”.
• Pagina 135, penultimo rigo del paragrafo 5.4.1: sostituire “della CPU” con “la CPU”
• Pagina 136, la Figura 5,10 riporta una specie di rettangolo a filo fine che risulta spostato. Esso dovrebbe
racchiudere UC, UO e la scritta “CPU”, raccordandosi in modo da far uscire il “Bus Indirizzi” e il “Bus
Dati”.
Come deve essere la Figura 5.10
2
• Pagina 137, in Figura 5.11, sul periodo T3: sostituire “MDR” con “DTR”
Come deve essere la Figura 5.11
• Pagina 138, ultimo rigo: tra “bus interno)” e “si d`a alla ALU” inserire “e”.
• Pagina 140, in Figura 5.14 sostituire “MDR” con “DTR”.
• Pagina 144, nella didascalia delle figure 5.19 e 5.20, prima del punto finale, aggiungere “(IR e` stato
disegnato fuori da UC)”
• Pagina 145, punto 2, ultimo rigo: sostituire “corrispondenti” con “corrispondente”.
3
Capitolo 6
• Pagina 251, La didascalia di Figura 6.1 deve essere “Il processo di Scrittura-Traduzione-CollegamentoEsecuzione”.
• Pagina 152, dodicesimo rigo: sostituire “tre possibili soluzioni” con “quattro possibili soluzioni”.
• Pagina 153, nel sesto e settimo rigo del Paragrafo 6.2.4 eliminare “(PUSH)” e “(POP)”.
• Pagina 154, undicesimo rigo dall’alto, sostituire “sullo stack (lettura e scrittura)” con “sullo stack (due
letture e una scrittura)”.
• Pagina 157, nono rigo dal basso, sostituire “la nostra istruzione LD indirizza” con “la nostra istruzione
LD (Paragrafo 5.3) indirizza”
• Pagina 157, nella Figura 6.5 cambiare le denominazioni dei campi “RS1” e “Rsd” con “Rb” e “Rd”
rispettivamente.
Come deve essere la Figura 6.5
•
•
•
•
•
Pagina 157, nella didascalia di Figura 6.5 sostituire l’ultima parola (“indirizzo”) con “OFFSET”
Pagina 158, sesto e ventiduesimo rigo, sostituire Indirizzo con OFFSET.
Pagina 161, ottava riga dal basso, sostituire “Rb” con “RS1”
Pagina 161, decima riga dal basso, sostituire “(Figure 6.4 e 6.5)” con “(Figura 6.4)”
Pagina 161, nell’ultimo paragrafo evidenziato col (semi)punto, sostituire “Per istruzioni di salto relativo come lo scostamento” con “Per le istruzioni di salto condizionato l’OFFSET viene preso come lo
scostamento”.
• Pagina 162, primo rigo, “quanit`a” con “quantit`a”
• Pagina 169, al punto 1 del paragrafo 6.7, correggere “sovascritto” in “sovrascritto”. Pagina 171, nella
figura al centro della pagina sostituire “LD” con “LD/ST”
Come deve essere la Figura a centro pagina 171
• Pagina 171, sostituire da “Questa espansione ..” fino alla fine testo con “L’espansione con segno (bit
16) di OFFSET si esprime come
(OFFSET16 )16 ||OFFSET
ovvero, pi`u sinteticamente come XS(OFFSET).”
• Pagina 172, sostituire
LD
R2,V(R6)
;R2← M[SX(OFFSET16 )||OFFSET + R6]
con
LD
R2,V(R6)
;R2← M[XS(OFFSET) + R6]
• Pagina 173, sostituire
if R2=R3 then PC← PC + SX(OFFSET16 )||OFFSET
con
if R2=R3 then PC← PC + XS(OFFSET)
• Pagina 176, sostituire “Nel caso del modello lineare tutte .......richiedono che il campo dell’indirizzo venga aggiustato.” con “Nel caso del modello lineare tutte le componenti di indirizzo che non
costituiscono scostamenti rispetto al PC devono essere riaggiustate.”
• Pagina 183, quinto rigo dal basso, sostituire “(Paragrafo 6.10.1)” con “(Appendice C)”
• Pagina 190, al sesto rigo, dopo “un dato a 16 bit”, si introduca un capoverso e la frase “Non si tenga
conto della presenza della coda di prefetch.”.
Sostituire l’ultima frase del testo “Si assuma ....ai salti.” con “Nello svolgere l’esercizio, per l’8086 si
consideri l’eventuale effetto del disallineamento delle istruzioni dovuto ai salti.”.
4
Capitolo 7
• Pagina 191, Introduzione, riga 4: sostituire “il quali” con “i quali”
• Pagina 200, al termine della didascalia di Figura 7.5 aggiungere: “A tale proposito si veda quanto
asserito nella Nota (2).”
• Pagina 200, la frase sotto il paragrafo Istruzioni aritmetiche termina con “in Figura 7.6” anzich´e
“Figura 7.7”.
• Pagina 200, ultimo rigo, sostituire ALUOut = A + SCOST con ALUOut = A + OFFSET.
• Pagina 202, in Figura 7.10, sostituire i comandi MRead e MWrite con M Read e M Write.
Come deve essere la Figura 7.10
• Pagina 204, in Figura 7.12 eliminare il percorso marcato come 16-31 da IR all’ingresso 3 del multiplexer sulla porta B di ALU; eliminare l’ingresso 3 del suddetto multiplexer. Inoltre, sostituire “Rsergt”
con “Rdest” come nome del selettore sulla porta FF.RW.
• Pagina 204, in Figura 7.12, l’ingresso superiore alla RETE combinatoria deve essere marcato come
“IR[21-31]”.
• Pagina 205, primo rigo della didascalia di Figura 7.13 sostituire “di CUP2” con “della CPU multiciclo”.
• Pagina 205, tredicesimo rigo dal basso, sostituire “Rsorg” con “Rdest”.
• Pagina 206, in Figura 7.14, sul percorso che riporta verso lo stato S1 manca il segmento orizzontale in
alto. Nella stessa figura, sui rami ARITM e LD sostituire “Rsorg” con “Rdest”.
• Pagina 208, sedicesimo rigo dal basso, sostituire “Rsorg” con “Rdest”.
• Pagina 208, dodicesimo rigo dal basso, sostituire “ALUout = A + SCOST” con “ALUout = A
+ OFFSET”.
• Pagina 208, ottavo rigo dal basso, sostituire “ALUSorgB = 3” con “ALUSorgB = 2”.
• Pagina 209, undicesimo rigo dall’alto, sostituire “Rsorg” con “Rdest”.
• Pagina 209, nono rigo dal basso, sostituire “ALUSorgB = 3” con “ALUSorgB = 2”.
• Pagina 210, nono rigo dal basso, sostituire “Rsorg” con “Rdest”.
• Pagina 211, nella Figura 7.15, aggiungere gli ingressi Zero e Segno alla RETE COMBINATORIA.
• Pagina 212, eliminare il diciasettesimo rigo dall’alto (“Rsorg= ..”); nel paragrafo di testo che segue
sostituire “Si indichino con PCsorg0...” con “Si indichino con Rdest0, Rdest1, PCsorg0...”; di seguito sostituire “pi`u significativi di PCsorg e ALUsorgB” con “pi`u significativi di Rdest, PCsorg e
ALUsorgB”; successivamente, prima della riga che inizia con “ • PCsorg0 = ...”, inserire queste due
righe:
• Rdest0 =
• Rdest1 =
T5 · LD
T5 · JAL
• Pagina 212, Sostituire l’espressione di ALUsorgB0 con la seguente
ALUsorgB0 = T3 · (ARITM + JE + JS ) + T4 · ARITM + T5 · ARITM
• Pagina 212, nella (7.3), sostituire il pedice “i” con “k”.
• Pagina 215, diciannovesimo rigo dall’alto, sostituire “ME richiede 3 clock’ con “ME richiede 6 clock”.
• Pagina 215, nono rigo dal basso, sostituire “iniziale multiciclo” con “monociclo”.
5
Come deve essere la Figura 7.12
6
Come deve essere la Figura 7.14
Come deve essere la Figura 7.15
7
• Pagina 215, sostituire le prime 12 righe come segue.
• istruzioni aritmetiche:
12 × 3 + 12 × 2 + 12 + 12 + 12 = 96 ns;
• istruzione LD:
12 × 3 + 12 × 2 + 12 + 12 × 3 + 12 = 120 ns;
• istruzione ST:
12 × 3 + 12 × 2 + 12 + 12 × 3 = 108 ns;
• istruzioni JE/JS:
12 × 3 + 12 × 2 + 12 = 72 ns;
• istruzione JMP/JR:
12 × 3 + 12 × 2 + 12 = 72 ns;
• istruzione JAL:
12 × 3 + 12 × 2 + 12 + 12 + 12 = 96 ns.
Con la precedente composizione, la durata media di un’istruzione e` pari a:
0, 45 × 96 + 0, 25 × 120 + 0, 10 × 108 + 0, 12 × 72 + 0, 06 × 72 + 0, 02 × 96 = 98, 88 ns.
Per un programma che esegue N istruzioni, il tempo totale consumato e` pari a N × 98, 88: rispetto alla
versione originale della CPU multiciclo del Paragrafo 7.3 c’`e stata una riduzione del 27,40% (100×
(136,20 − 98,88)/136,20 = 27,40). Tuttavia la CPU A resta sempre pi`u lenta del 20,59% (100× (98,88
− 82)/98,88 = 20,59) rispetto alla CPU monociclo.
• Pagina 215, rigo diciasettesimo dall’alto, sostituire “la fase ID ne richiede 3” con “la fase ID ne richiede
4”. Successivamente, sostituire dal rigo ventiduesimo fino a fine paragrafo con quanto segue.
• istruzioni aritmetiche:
5 × 6 + 5 × 4 + 5 × 3 + 5 + 5 = 75 ns;
• istruzione LD:
5 × 6 + 5 × 4 + 5 × 3 + 5 × 6 + 5 = 100 ns;
• istruzione ST:
5 × 6 + 5 × 4 + 5 × 3 + 5 × 6 = 95 ns;
• istruzioni JE/JS:
5 × 6 + 5 × 4 + 5 × 3 = 65 ns;
• istruzione JMP/JR:
5 × 6 + 5 × 4 + 5 = 55 ns;
• istruzione JAL:
5 × 6 + 5 × 4 + 5 + 5 + 5 = 65 ns.
Con la precedente composizione, la durata media di un’istruzione e` pari a:
0, 45 × 75 + 0, 25 × 100 + 0, 10 × 95 + 0, 12 × 65 + 0, 06 × 55 + 0, 02 × 65 = 80, 65 ns.
•
•
•
•
•
•
•
Per un programma che esegue N istruzioni, il tempo totale consumato e` pari a N × 80, 65: rispetto
alla versione originale della CPU multiciclo del Paragrafo 7.3 c’`e stata una riduzione del 40,79%
(100 × (136, 20 − 80, 85)/136, 20 = 40, 79). La CPU B e` pi`u veloce del 1,61% (100 × (82 −
80, 85)/82 = 1, 65) della CPU monociclo.
Pagina 216, in Figura 7.16, sui rami ARITM e LD sostituire “Rsorg” con “Rdest”.
Pagina 218, la colonna “CPU A” deve contenere ordinatamente (dall’alto verso il basso): 96, 120,108,72,
72,96, 98,88; la colonna “CPU B” deve contenere ordinatamente 75, 100, 95, 65, 55, 65, 80,65.
Pagina 219, primo rigo “Paragrafo 6.10” con “Appendice C del Capitolo 6”.
Pagina 222, in Figura 7.19, sostituire “RIR” con “RIS” e aggiungere gli ingressi Zero e Segno alla
RETE COMBINATORIA.
Pagina 223, quinto rigo del paragrafo Eccezioni sostituire “accezione” con “eccezione”.
Pagina 226, nell’esercizio 7.3, sostituire “monociclo” con “multiciclo”.
Pagina 227, esercizio 7.15 terza riga, sostituire “nell’ipotesi di in cui” con “nell’ipotesi in cui”.
Capitolo 8
• Pagina 233, la formula in fondo alla pagina deve leggersi come
T = τmono /k + τl
• Pagina 234, prima riga del paragrafo 8.2, sostituire “architetttura” con “architettura”.
• Pagina 236, in Figura 8.7 eliminare “IF/ID[16-20]”
• Pagina 237, ventitreesimo rigo del testo, sostituire
EX/ME.RW ← ID/EX.RW
con
ME/WB.RW ← EX/ME.RW
.
• Pagina 237, quinto rigo dal basso, sostituire “IF/ID[6-10]” con “IF/ID[16-20]”.
• Pagina 238, nella Figura 8.8, in uscita da UC manca il selettore RWMux (come in Figura 8.9 a pagina
240).
8
Come deve essere la Figura 7.16
Come deve essere la Figura 7.19
9
• Pagina 239, 6 rigo del testo dal basso, eliminare “ e non viene riportato”.
• Pagina 239, 5 rigo del testo dal basso, dopo “ME/WB” inserire “(Paragrafo 8.2.1)”. Dopo il punto
inserire “In aggiunta viene propagato il risultato dell’operazione appena eseguita:
ME/WB.ALUOut ← EX/ME.ALUOUT ”
• Pagina 240, nella Figura 8.10, sostituire IF/ID.Rb con IF/ID.Rs1.
• Pagina 241, nel primo rigo relativo alle parti specifiche dell’istruzione ST, sostituire “ID/EX.WB.M Write”
con “ID/EX.ME.M Write”.
• Pagina 241, sotto la fase EX, ultimo rigo, sostituire “ID.EX.B” con “ID/EX.B”
• Pagina 242, nella didascalia di Figura 8.11, al termine del primo rigo, sostituire “ID/EX.PC” con
“IF/ID.PC”.
• Pagina 242, decima riga dal basso, sostituire “(Figura 8.11) e” con “(Figura 8.11) o”.
• Pagina 242, verso la fine, nella fase ID, sostituire
ID/EX.EX.JE
ID/EX.A
ID/EX.B
ID/EX.IMM
← UC.JE
← RF.RR1
← RF.RR2
← IF/ID.PC + IF/ID.OFFSET
con
ID/EX.A
ID/EX.B
ID/EX.IMM
← RF.A
← RF.B
← IF/ID.PC + IF/ID.OFFSET
• Pagina 243, secondo e terzo rigo sotto JR, sostituire “(IF/ID.IMM←RF.B)” con “(ID/EX.IMM←RF.B)”.
• In pagina 243, sostituire il punto b), sotto il paragrafo JAL, con il punto b) che segue
b) Il campo PC deve essere propagato fino al latch MW/WB. Ci`o potrebbe essere ottenuto prevedendo
un campo -PC- su tutti i latch, propagando PC da ID/EX fino al WB. Tuttavia non e` necessario
prevedere il campo PC su EX/ME e su ME/WB perch´e, da ID/EX, il contenuto del campo PC pu`o
essere propagato attraverso la porta B di ALU su EX/ME.ALUOut e da qui su ME/WB.ALUOut. Si
ottiene cos`ı la Figura 8.12.
• In pagina 243, come conseguenza della precedente sostituzione, in Figura 8.12 eliminare il campo PC
dai latch EX/ME e ME/WB.
• Pagina 244, diciassettesima riga dal basso, sostituire “IF/ID.PC + 4” con “IF/ID.PC + IF/ID.OFFSET”.
• Pagina 244, quinto rigo dal basso, sostituire “PC + 4” con “PC + OFFSET”.
• Pagina 244, quinto rigo dal basso, sostituire “Le restanti uscite” con “A parte IMMux e RWMux, le
restanti uscite”.
• Pagina 244, eliminare il periodo “In Figura 8.13 ....... operazioni aritmetiche” corrispondente alle
ultime due righe a partire dal basso.
• Pagina 245, in Figura 8.13 eliminare l’uscita “ARITM”.
Come deve essere la Figura 8.13
• Pagina 245, sesto rigo dal basso, sostituire “EXE” con “EX”.
• Pagina 249, quarto rigo, sostituire “sue” con “due”.
10
• Pagina 249, nella (8.11) e (8.12), sostituire “ID/EX.RWrite” con “ID/EX.R Write”; nella (8.13)
e (8.14) sostituire “EX/ME.RWrite con “EX/ME.R Write”. (Si noti che si e` fatto a meno di
indicare il campo WB, in quanto non c’`e ambiguit`a.)
• Pagina 250, primo rigo, sostituire “ME” con“WB”.
• Pagina 252, Eliminare il primo rigo del paragrafo “Conflitto ID-ME” (“Con il nostro ....LD”).
• Pagina 252, ultimo rigo del testo, sostituire SUB R4,R1,R7 con SUB R4,R7,R1.
• Pagina 254, Nella Figura 8.21 e nella relativa didascalia sostituire “C3” con “C1”.
• Pagina 254, quinto rigo dopo la figura, sostituire “IF/D.IR[0...5”] con “IF/ID.IR[0...5]”.
• Pagina 255, sedicesimo rigo, sostituire il periodo “Nel caso di diramazione le cose .... perch´e le” con
(a capoverso) “Si noti che le”.
• Pagina 255, ventunesima riga dall’alto sostituire “descritte nel nell’Appendice B” con “descritte nell’Appendice B”.
• Pagina 261, quinto rigo del testo, dopo la parola “calcolato” inserire “ (nella nostra pipeline in ID)”,
eliminando “, altrimenti viene ...sequenziale”.
• Pagina 262, modificare la Figura 8.24 come qui di seguito.
• Pagina 263, modificare la Figura 8.27 e la relativa didascalia come riportato qui di seguito
• Pagina 264, spostare il secondo paragrafo (bullet) al posto del primo, modificandolo in modo che
diventi
– Se l’istruzione non e` in BTB (non hit) e l’istruzione non e` una diramazione il processo di esecuzione
procede normalmente; se invece e` una diramazione, la logica procede secondo una regola predefinita. La regola pi`u semplice consiste nell’assumere che la diramazione non abbia luogo; e` questa
l’ipotesi che e` stata fatta nel tracciare la Figura 8.27.20 Con questa assunzione, se la diramazione non
ha effettivamente luogo non c’`e bisogno di inserirla in BTB, in quanto si ripresenter`a verr`a trattata
come se fosse la prima volta e non inserita in BTB fino a che non causa il salto. Se invece la diramazione e` effettiva, occorre fare il fetch dell’istruzione all’indirizzo di destinazione e inserire due bolle
in pipeline al posto delle due istruzioni di cui e` gi`a stato fatto il fetch; inoltre la diramazione deve
essere inserita in BTB (per il valore iniziale da assegnare ai bit di predizione si veda quanto detto in
riferimento al Pentium al termine di questa Appendice). Ne consegue che, se BTB e` gestito con la
tecnica LRU, esso finisce per contenere sole le (ultime) istruzioni di diramazione che hanno almeno
una volta causato il salto.
• Pagina 264, spostare il primo paragrafo (bullet) al posto del secondo, modificandolo in modo che
diventi
– Se l’istruzione e` in BTB, essa e` sicuramente una diramazione e la sua destinazione e` contenuta nel
primo dei due campi della parte dati della cache. Il campo contenente le statistiche di previsione
consente alla CPU di decidere se la diramazione sar`a effettiva o no. Se la predizione e` di diramazione
effettiva (successo), la logica dello stadio IF preleva l’indirizzo di destinazione direttamente da BTB
e aggiorna PC. Se invece la predizione e` che la diramazione non avr`a luogo (fallimento), viene fatto
il fetch dell’istruzione che segue la diramazione nell’ordine testuale del programma.
Se nello stadio EX la verifica della condizione di diramazione mostra che la predizione era errata, la
pipeline deve essere svuotata (inserimento di due bolle) e il fetch deve riprendere dall’altro indirizzo
(da PC+4 se era stato predetto successo, oppure dall’indirizzo di destinazione se era stato predetto
fallimento). In ogni caso, le statistiche di previsione devono essere aggiornate in base all’esito della
verifica della condizione di diramazione.21
11
Come devono essere la Figura 8.27 e la relativa didascalia.
Figura 8.27 - Trattamento di una istruzione in presenza del branch-target buffer. Si assume che i salti
condizionati vengano eseguiti come descritto al Paragrafo 8.3.3 (indirizzo di diramazione calcolato in
ID, valutazione della condizione in EX). Se l’indirizzo dell’istruzione e` in BTB allora questa e` una
diramazione ed e` possibile modificare il registro PC di CPU con l’indirizzo di destinazione direttamente
dallo stadio IF prelevandolo da BTB, in modo che al ciclo successivo venga fatto il fetch dell’istruzione
corrispondente, senza alcuna penalizzazione.
• Pagina 264, nel primo capoverso del paragrafo Prestazioni del BTP eliminare “: (1) la valutazione
....... in EX”
• Pagina 264, la nota 21 diventa 20 senza modifiche.
• Pagina 264, la nota 20 diventa 21, modificata nel modo seguente
(21)
Poich´e al BTB si accede con l’indirizzo dell’istruzione di salto, si rende necessario (almeno sui latch IF/ID
e ID/EX) un campo che tenga copia del PC dell’istruzione. Inoltre, i latch dovrebbero portare anche l’indirizzo
(PC+4) dell’istruzione che segue la diramazione (nell’ordine testuale del programma), al fine di ottenere immediatamente l’indirizzo di fetch in caso fallimento della previsione di salto. Nella nostra pipeline sui latch e`
previsto il campo PC che per`o contiene l’indirizzo dell’istruzione successiva nel testo del programma (qualunque essa sia), contiene cio`e PC+4. Per ottenere l’indirizzo dell’istruzione, se non si vuole allargare troppo la
dimensione dei latch, basta un semplice sottrattore dedicato allo scopo.
• Pagina 265, primo rigo e seguenti, sostituire “errata con istruzione ... primo ciclo.” con “errata. In
ambedue i casi e` necessario prelevare dall’altro indirizzo, introducendo due bolle e aggiornando le
statistiche.”
• Pagina 265, Tabella 8.2, sull’ultima colonna della riga 2 sostituire “1” con “2”.
• Pagina 265, la didascalia della tabella 8.2. diventa:
Tabella 8.2 - Penalizzazioni di salto in presenza di BTB. Le prime quattro righe si riferiscono ai casi in
cui la diramazione e` presente in BTB. Si e` assunto che se la diramazione non e` presente venga predetto
il fallimento. Per le ipotesi fatte la penalizzazione di errata predizione e` di due cicli di clock.
• Pagina 265, settimo rigo dal basso del testo, sostituire “importante differenza” con “possibile differenza rispetto al funzionamento ipotizzato ”
• Pagina 266, al termine del paragrafo “Quali diramazioni in BTB?” aggiungere “E` questa l’ipotesi che
abbiamo fatto alle pagine precedenti.”
• Pagina 266, dopo il paragrafo “Gestione del BTB”, aggiungere il paragrafo
I salti incondizionati
Nella precedente trattazione sono state considerate solo le diramazioni. E’ evidente che, se si vuole
evitare di pagare la penalizzazione dovuta ai salti incondizionati (Paragrafo 8.6.1), anche di queste
12
istruzioni deve essere tenuta traccia in BTB. Ovviamente per esse la predizione non ha senso.
• Pagina 266, ultimo rigo del testo, sostituire “cache” con “BTB”
• Pagina 267, quarto rigo dall’alto, sostituire “l’istruzione e` in ....avanti)” con “l’istruzione e` nella pipe
U e di 4 se e` nella pipe V.(25) ”
• Pagina 267, settimo rigo, sostituire “Si noti che” con “Come osservato in precedenza”
• Pagina 267, ottavo rigo, eliminare il periodo “Infatti, se .... nel BTB.” Nella frese che segue eliminare
“la prima volta che il controllo e` passato su di esse”
• Pagina 267, ultimo rigo, dopo “10” inserire “(non 01), in modo l’eventuale successiva previsione sia
di salto”.
• Pagina 267, in fondo inserire la nota
(25)
Internamente il Pentium ha due pipeline parallele, denominate U pipe e V pipe.
• Pagina 270, sostituire il testo dell’esercizio 8.13 con il seguente
LD
LD
ADD
ADD
JMP
NOP
NOP
R1, 220
R2, 100
R3, R1, R2
R4, R3, R1
QUALCHE_PARTE
• Pagina 270, sostituire il testo dell’esercizio 8.14 con il seguente
“Si supponga di calcolare il fattoriale di un numero (maggiore di 1) attraverso l’algoritmo sotto
riportato in riferimento al calcolo del fattoriale di 6.
LOOP
--ADDI
SUB
ADDI
MUL
SUB
JNE
:::
R1,R0,6
R2,R1,1
R3,R0,1
R1,R1,R2
R2,R2,1
R2,R3,LOOP
;R1 inizializzato con 6
;R2 inizializzato con 5
;R3 usato per la costante 1
;Il risultato si accumula in R1
;R2 d`
a la condizione
; di fine ciclo
Si faccia riferimento alla nostra pipeline a 5 stadi, in cui le istruzioni di salto condizionato, quando
sono effettive, modificano il PC dallo stadio EX, introducendo due bolle. Si faccia l’ipotesi che la
macchina sia dotata di un bypass per i dati, in modo che non si abbiano stalli per l’uso in EX del
contenuto di registri modificati da istruzioni precedenti non ancora concluse. Infine, si noti che nello
scrivere il precedente codice si e` implicitamente assunto che R0 contenga permanentemente 0.
1. Si valuti la degradazione delle prestazioni nell’ipotesi che la macchina non risolva al tempo di
esecuzione i conflitti di controllo, ma si limiti a introdurre le bolle dovute.
2. Successivamente si valuti il beneficio che si otterrebbe attraverso il riordinamento statico (a livello
di compilazione). Ovviamente in questo caso la logica di CPU non tratta in alcun modo i conflitti di
controllo.”
Capitolo 9
•
•
•
•
Pagina 275, secondo rigo del secondo paragrafo, sostituire “aggiorino” con “aggiornino”
Sostituire la Figura 9.9 con quella che viene qui di seguito.
Pagina 276, prima riga del paragrafo 9.2, eliminate la virgola da “si ottiene sfruttando, il RSR”.
Pagina 279, quattordicesimo rigo, sostituire “quando vale la posizione non” con “quando vale 0 la
posizione non”.
• Pagina 280, al punto d), sostituire “occupare la prima posizione” con “occupare la seconda posizione”.
• Pagina 281, in Figura 9.11 al passo d) sulla riga 5 della colonna C deve esserci ”0”; al passo e) alla
riga 1 sulla colonna pROB deve esserci 5; sempre al passo e) alle righe 3, 4 e 5 della colonna C si deve
leggere “1”, “1” e “0” rispettivamente.
• Pagina 282, il secondo periodo (quello che inizia con “Con il nostro ...” e il terzo periodo (quello
che inizia con “La lunghezza ...” devono essere sostituiti con il periodo seguente : “La lunghezza di
RSR e` determinata dal numero di cicli richiesti dall’unit`a funzionale pi`u lenta (nel nostro caso 4). La
lunghezza del ROB e` pari alla lunghezza di RSR aumentata di uno per via dello slot di scrittura in
ROB. ”
13
Come deve essere la Figura 9.9
Come deve essere la Figura 9.11
14
• Pagina 282, nella didascalia di Figura 9.13 sostituire “itopesi” con “ipotesi”.
• Pagina 282, in Figura 9.13 la fase di WB dell’istruzione 3 deve essere spostata di uno slot verso sinistra.
Come deve essere la Figura 9.13
• Pagina 283, quattordicesimo rigo dall’alto, sostituire “le uscite del banco dei registri (Figura 9.14)”
con “i bus di ingresso alle unit`a funzionali (Figura 9.14)”
• Pagina 283, sostituire Figura 9.14 e la relativa didascalia come riportato di seguito
Figura 9.14 - Percorsi di by-pass per rendere disponibili i dati gi`a calcolati dalle istruzioni in attesa di
uscire dal ROB alle istruzioni in emissione. La figura non mostra i selettori per scegliere tra il contenuto
dei registri e il contenuto del ROB.
Come devono essere la Figura 9.14 e la relativa didascalia
• Pagina 284, sostituire la Figura 9.15 e la relativa didascalia come riportato di seguito
• Pagina 284, al termine dell’undicesimo rigo del testo aggiungere “Ci`o richiede una ulteriore porta di
uscita da RF per poter copiare in HB il contenuto di Rd al momento dell’emissione (Figura 9.15).”
• Pagina 287, riga 11: sostituire “che successive” con “successive”.
• Pagina 287, sesto rigo dal basso, inserire “il” tra le parole “oltre” e “numero”.
• Pagina 291, nella Figura 291 manca la freccia tra il blocco “Reservation Station (2 Entry)” e “Floating
Point Unit”.
• Pagina 292, terza riga dal basso, sostituire “La pipeline si compone 6 stadi” con “La pipeline si
compone di 6 stadi”.
• Pagina 295, L’intero testo dell’Esercizio 9.3 deve essere modificato comer segue:
Si consideri questa sequenza di istruzioni. A destra sono riportati i cicli di clock richiesti da ogni
istruzione in fase di esecuzione.
1
2
3
4
5
6
MUL
LD
ADD
MUL
ST
LD
R3,R2,R1
R1,M1(R0)
R3,R3,R1
R4,R2,R1
M2(R0),R3
R3,M3(R3)
2
1
1
2
1
1
Si faccia l’ipotesi che la macchina non disponga di alcuna rete di by-pass, ma che ci sia la sovrapposizione ID-WB. Inoltre si assuma che la macchina sia dotata di memoria divisa, in modo che non si
abbiano conflitti tra la fase di IF e la fase ME.
Quanti cicli di clock si richiedono – dall’inizio (fetch) della prima istruzione alla conclusione (WB)
dell’ultima – nel caso in cui si abbia una pipeline come in Figura 8.4 b) del testo? Quanti cicli di clock
se ne richiedono nel caso in cui si abbia una pipeline come in Figura 8.4 c)? (A parte le differenze
corrispondenti ai due modelli di pipeline, per quanto concerne gli stadi ci si riferisca a quelli che
compaiono nella pipeline di riferimento.)
15
Figura 9.15 - Organizzazione della pipeline con un History Buffer (HB). HB entra in gioco in caso di
necessit`a, rimettendo nei registri modificati speculativamente i valori vecchi in esso contenuti.
Come devono essere la Figura 9.15 e la relativa didascalia
• Pagina 295. L’intero testo dell’Esercizio 9.4 deve essere modificato comer segue:
Si consideri questa sequenza di istruzioni. A destra sono riportati i numeri di cicli di esecuzione; un
numero uguale di cicli identifica un’unica unit`a di esecuzione, ovvero si hanno tre unit`a funzionali:
U1 (interi) da 1 clock, U2 (interi) da 2 clock e U3 (floating) da 4 clock.
Si supponga che la macchina sia dotata di ROB e che sia in grado di emettere e di ritirare dalle unit`a
esecutive e dal ROB fino a tre istruzioni alla volta. Si studi il comportamento della sequenza, indicando
quanti periodi di clock intercorrono tra l’emissione delle prime istruzioni e il ritiro dell’ultima dal
ROB.
1
2
3
4
5
6
7
8
9
10
mul
mulf
add
mul
sub
add
mul
mul
mulf
add
r5,r6,r1
f12,f8,f10
r4,r5,r6
r3,r7,r7
r8,r9,r8
r20,r21,r22
r3,r4,r5
r2,r2,r2
f2,f3,f4
r5,r6,r7
;
;
;
;
;
;
;
;
;
;
2
4
1
2
1
1
2
2
4
1
cicli
cicli
ciclo
cicli
ciclo
ciclo
ciclo
cicli
cicli
ciclo
• Pagina 295, nell’esercizio 9.5, per la seconda istruzione sostituire “3 ciclo” con “3 cicli”
• Pagina 296, aggiungere i seguenti due esercizi (9.7 e 9.8)
Esercizio 9.7 Si consideri una pipeline come quella di Figura 9.1 del testo, con queste 4 unit`a di
esecuzione parallele (tra parentesi il numero di clock richiesti):
– UI1 : unit`a aritmetica interi (1 clock)
– UI2 : unit`a aritmetica interi (2 clock)
– ULS: unit`a load/store (3 clock)
– UF : unit`a aritmetica floating (4 clock)
Si supponga che al termine di ogni unit`a funzionale vi sia un bypass che consente di trasferire il
risultato appena prodotto ad ogni eventuale altra unit`a.
Si supponga che la macchina sia dotata di ROB e che sia in grado di emettere e di ritirare dalle unit`a
esecutive e dal ROB fino a tre istruzioni alla volta. Si faccia l’ipotesi che i risultati vengano comunque
depositati nel ROB.
Si studi il comportamento della sequenza di codice riportata qui di seguito – solo per quanto riguarda
la fase di esecuzione – indicando quanti periodi di clock intercorrono tra l’emissione delle prime
istruzioni e il ritiro dell’ultima dal ROB.
1
2
3
4
5
6
7
8
ld
add
mulf
mul
ld
sub
mul
add
r1,v(r0)
r2,r1,r1
f12,f8,f10
r3,r1,r1
r6,x(r0)
r6,r6,r1
r2,r2,r1
r6,r2,r6
16
3
1
4
2
3
1
2
1
cicli
ciclo
cicli
cicli
cicli
cicli
cicli
ciclo
Esercizio 9.8
Con riferimento al precedente Esercizio 9.7, si supponga che per mitigare gli effetti degli stalli ogni
unit`a funzionale abbia un buffer di una posizione in fronte a s´e, in modo che, se il buffer e` libero,
possa essere comunque emessa (e trattenuta nel buffer fino a che non pu`o avanzare) un’istruzione con
dipendenza da altre in corso di esecuzione. Si studi l’evoluzione con riferimento alla sequenza di
istruzioni dell’Esercizio 9.7.
Capitolo 10
• Pagina 297, ultimo rigo dei Concetti chiave, sostituire “little-endian-big interlacciamento” con “little/big endian, interlacciamento”.
• Pagina 297, quinta riga dal basso, sostituire “pi`u basso di trova” con “pi`u basso si trova”.
• Pagina 300, in Figura 10.2 sostituire “An−1 ” con “Am−1 ”. Nella didascalia, a seguire “M × d bit”
inserire “(con M = 2m )”.
• Pagina 300, settimo rigo dal basso, sostituire “CS” con “CE”
• Pagina 303, in Figura 10.5 sostituire “WRITE” con “WE”; inoltre il segnale “CAS” deve essere
sempre a 1 nella parte sinistra.
• Pagina 303, nell’ultimo periodo del paragrafo 1.2.2, sostituire “dopo tRC ” con “dopo tRAC ”; sostituire
“avviata che dopo tRAC ” con “avviata che dopo tRC ”; sostituire “pi`u frequentemente di tRAC ” con
“pi`u frequentemente di tRC ”.
• Pagina 304, ventesima riga dall’alto, sostituire “sempre che essi” con “sempre che esse”.
• Pagina 306, quintultimo rigo del testo, inserire una virgola dopo “8 bit”.
• Pagina 307, terzo rigo, sostituire “il spazio” con “lo spazio”.
• Pagina 308, nella Figura 10.9 le linee Dati alle coppie dei due integrati in posizione significativa sono
“D31 -D24 ” e “D23 -D16 ” rispettivamente.
• Pagina 309 ai punti a) e b) si sostituisca “[A31 −Ac+2 ]” con “[A31 −A2 ]”.
• Pagina 311, in Figura 10.11 sostituire “B2 ” con “B1 ” e “3n” con “2n”.
Come deve essere la Figura 10.11
• Pagina 313, quarta riga dal basso, sostituire “E’ utile pena indagare” con “E’ utile indagare”.
• Pagina 315, settimo rigo dal basso, sostituire “L’inseme” con “L’insieme”.
• pagina 316, Esercizio 10.4: al termine del quinto rigo aggiungere: “La tensione di alimentazione e`
Vcc = 5, 0 V.”
• Pagina 317, Esercizio 10.6: sostituire le ultime due righe con “primi 64 KB) dello spazio degli indirizzi. Gli integrati devono essere allocati in modo da rendere minima la logica di selezione. Si assuma
di avere 22 linee di indirizzo.”.
• Pagina 318, Esercizio 10.7: sostituire in tutte le occorrenze “MB” con “MW”.
Capitolo 11
• Pagina 320, Nota 1, sostituire “quando” con “quanto”.
• Pagina 321, diciottesima riga dal basso, sostituire “Dal livello in cui si trova dato” con “Dal livello in
cui si trova il dato”.
• Pagina 324, e fine didascalia di Figura 11.5, aggiungere “Si e` indicato con n il parallelismo di parola.”.
• Pagina 325, nel decimo rigo dall’alto sostituire “coinvolgere” con “coinvolge”; al rigo successivo
sostituire “cache vengono” con “cache indirizzate nei due blocchi vengono”.
• Pagina 331, al termine del nono rigo sostituire “via” con “posizione”.
• Pagina 331, quinto rigo del paragrafo “Lo stack LRU”: sostituire “RLU” con “LRU”.
17
• Pagina 331, in Tabella 11.1, nelle ultime due righe sostituire tutte le occorrenze “0 2” con “2 0”.
• Pagina 326, nella seconda riga della didascalia di Figura 11.7, sostituire “abilitano l’uscita della via da
in cui” con “abilitano l’uscita della via in cui”.
• Pagina 333, settima riga dal basso, sostituire “`e stato alle linea” con “`e stato alla linea”.
• Pagina 339, settima riga dall’alto, sostituire “al secondo livello inferiore” con “al secondo livello”.
• Pagina 343, figura 11.13: eliminare il pedice “m” a “M”.
• Pagina 345, settima e ventiquattresima riga dall’alto, sostituire “write-trough” con “write-through”.
• Pagina 345, terzultimo rigo del paragrafo 11.7.2, inserire “a” tra le parole “accedere” e “una”.
• Pagina 346, al paragrafo che inizia con M: sostituire “essa” con “ perci`o ” e aggiungere al termine del
periodo “e non e` coerente rispetto alla memoria.”
• Pagina 346, righi dal diciassettesimo a ventesimo, sostituire il periodo “In ogni caso .... deve essere copiata nella memoria principale” con “In ogni caso, se copie della linea si trovano in altre cache in stato
E (unica copia) o S, allora esse vanno invalidate; mentre se la linea in altra cache e` in stato M (unica
copia), questa, essendo la sola copia valida nel sistema prima della scrittura che si sta considerando,
deve essere copiata nella memoria principale”.
• Pagina 346, modificare la Nota 18 nel modo seguente. “Il PowerPC prevede anche altre modalit`a di
funzionamento della cache, selezionate attraverso bit di stato della macchina, tra cui il write-through.
La modalit`a write-through e` comunque preferita per la maggior efficienza a causa del minor impegno
del bus.”
• Pagina 347, sostituire “RM” con “RIM” come etichetta del secondo paragrafo; inoltre sostituire “a
caricamento” con “al caricamento”.
• Pagina 347, secondo rigo del paragrafo avente come etichetta “Wm” e penultimo rigo dello stesso
paragrafo, sostituire “RM” con “RIM”.
• Pagina 348, punto ShW, riga 6: sostituire “nello stato stato M” con “nello stato M”.
• Pagina 349, riga 9: sostituire “al termine A e B che portano” con “ al termine, A e B portano”
• Pagina 349, ultimo rigo: deve rimanere solamente “sopra.”
• Pagina 351, Esercizio 11.11, sesto rigo, sostituire “(indirizzi di parola)” con “(indirizzi di parola in
forma decimale)”.
Pagina 351, Esercizio 11.13, primo rigo, sostituire “con riferimento alla linea x” con “con riferimento
alla posizione x”; pi`u avanti sul secondo rigo sostituire “1) invalidazione di tutte le linee” con “1)
invalidazione di tutte le linee sulle 4 vie alla posizione x”.
• Pagina 351, Esercizio 11.14, punto a): sostituire “sono valide” con “sono non valide”.
• Pagina 352, Esercizio 11.16, la frase conclusiva deve essere “Ovviamente la cache e` a 4 vie.”
• pagina 353, Esercizio 11.25, dopo “write-back” si inserisca “(rimanendo valide write-allocate e writeinvalidate)”
• Pagina 353, Esercizio 11.26, il testo completo dell’esercizio e` questo: “In riferimento all’esercizio
precedente (write-through, write-invalidate, write-allocate), al posto del write-invalidate si assuma
la politica a propagazione delle modifiche. Si tracci il diagramma di stato e si discutano eventi e
transazioni.”
Capitolo 12
•
•
•
•
•
•
•
•
•
•
•
•
Pagina 367, rigo 15: sostituire “un procedura a pagina)” con “una procedura a pagina)”.
Pagina 368, secondo e terzo rigo, modificare “cos`ı che pu`o essere evitata” con “che pu`o essere evitato”.
Pagina 370, nel decimo rigo del testo dal basso, dopo “l’identificatore” inserire “(ID)”.
Pagina 370, nel settimo rigo del testo dal basso, sostituire “evitare il campo TAG in TLB” con “evitare
che il TAG contenga l’ID”
Pagina 376, sedicesimo rigo dall’alto: sostituire “LUR” con “LRU”.
Pagina 376, terzultima riga prima del Paragrafo 12.4.3: sostituire “lasciato a sistema operativo” con “
lasciato al sistema operativo”.
Pagina 376, Figura 12.13, nella IPT l’indice massimo deve essere R-1 e non R. Nella HAT l’indice
massimo deve essere N-1 e non N.
Pagina 376, nota 25, sostituire “dobrebbe” con “dovrebbe”.
Pagina 377, nella didascalia di Figura 12.14, eliminare il “4” iniziale.
Pagina 377, Figura 12.14, l’indice di riga massimo della HPT deve essere PTEGn-1.
Pagina 378, rigo nono, sostituire la frase “L’indirizzo di partenza ..... dimensione.” con “Per ovvi
motivi prestazionali l’indirizzo di partenza della tabella deve essere multiplo della dimensione di un
gruppo (riga).”.
Pagina 378, nella nota 27: sostituire “64 KBe” con “64 KB”.
18
• Pagina 385, al punto Indirizzo Lineare: sostituire “Nel Paragrafo 6.8” con “Nell’Appendice A del
Capitolo 6”.
• Pagina 387, decimo rigo del testo dal basso, sostituire “l’eccezione 11” con “l’eccezione 13”.
• Pagina 389, nel penultimo rigo del paragrafo: sostituire “Generazione dell’indirizzo”, sostituire “pari a ogni processo” con “di” e, al termine del rigo successivo, inserire “che ciascun processo pu`o
potenzialmente indirizzare”
• Pagina 392, quartultimo rigo del testo: sostituire “si parla nel prossimo Capitolo” con “si parla al
Paragrafo 12.10”
• Pagina 393, Paragrafo 12.7.5, riga 5: modificare “lo stesso segmento descritto” con “lo stesso segmento
e` descritto”
• Pagina 396, Paragrafo 12.7.7, riga 10: sostituire “alla tabelle” con “alla tabella”
• Pagina 397,quinto rigo del testo: sostituire “PWD” con PWT.
• Pagina 413, sedicesimo e diciassettesimo rigo dall’alto, sostituire “Come vedremo .... E’ perci`o” con
“Poich´e attraverso le porte di chiamata si pu`o innalzare il livello di privilegio e` ”.
• Pagina 413, aggiungere alla fine della nota 67 questo periodo: “Il meccanismo di innalzamento del
livello di privilegio e` illustrato negli approfondimenti sul sito dell’editore.”
• pagina 414, Tabella 12.4, nelle due caselle vuote della colonna CPL inserire “=3”.
• Pagina 415, nella prima riga dell’Esercizio 12.5 sostituire “A valle del TLB..” con “A valle della
MMU..”
• Pagina 416, nell’Esercizio 12.9, sostituire “all’indirizzo CS0:IP0” con “all’indirizzo logico CS0:EIP0”,
sostituire “segmento (CSx:IPx), illustrare” con “segmento, cio`e all’indirizzo logico Cx:EIPx, illustrare”.
• Pagina 416, al termine del testo dell’Esercizio 12.10, sostituire “i bit di presenza” con “i bit che
indicano che c’`e stato accesso”.
Capitolo 13
•
•
•
•
•
•
•
•
•
•
•
Pagina 426, dodicesimo rigo, sostituire “Paragrafo 7.6” con “Appendice del Capitolo 7”.
Pagina 426, sesto rigo, sostituire “Paragrafo 7.6.3” con “Appendice del Capitolo 7”.
Pagina 428, quarto rigo: sostituire “Paragrafo 6.9” con “Appendice B del Capitolo 6”.
Pagina 433, nona riga dal basso del testo, sostituire “Inoltre non poche” con “Inoltre alcune”.
` con “PRIORITY ENCODER”
Pagina 434, nella Figura 13.12 sostituire “ARBITRO DI PRIORITA”
Pagina 435, decimo rigo dall’alto: sostituire “nel Paragrafo 13.6.2” con “nell’Appendice al Capitolo
7”.
Pagina 435, al termine della nota 11: aggiungere “Ovviamente RIv costituisce un’operazione atomica.”.
Pagina 437, paragrafo “Architettura Z80”, modo 2, righe 2 e 3 di codice devono essere:
; PCH: parte alta del PC
; PCL: parte bassa del PC.
Pagina 438, paragrafo “Architettura x86”, riga 4: sostituire “Cs” con “CS”.
Pagina 438, ventesimo rigo dall’alto: sostituire “nel Paragrafo 13.10” con “nell’Appendice di questo
capitolo”.
Pagina 439, la sequenza equivalente a IRET deve essere sostituita con questa:
POP
POP
POPF
IP
CS
; Ripristino..
; ..PC
; Ripristino parola di stato
• Pagina 441, terzo rigo della didascalia di Figura 13.19, eliminare “, proveniente dall’interfaccia,”
• Pagina 443, ultimo rigo del testo, dopo il punto finale aggiungere “Si veda quanto detto per lo Z80 al
Paragrafo 13.6.2.”.
• Pagina 467, quarto rigo sostituire “precede” con “prevede”.
• Pagina 495, nella didascalia di Figura 14.11, sostituire “RS” con “DS” e “RRF” con “RET”.
Capitolo 14
• Pagina 481, ultimo rigo: sostituire “Paragrafo 6.9.1” con “Appendice B del Capitolo 6”.
• Pagina 485, settimo rigo dall’alto: sostituire “nel Paragrafo 6.8 e nel Paragrafo 6.8.2” con “nell’Appendice A e nell’Appendice B del Capitolo 6”.
19
• Pagina 486, sostituire
MOV AX,VAR[BP]
; AX ← M[Offset(VAR)+BP]
con
MOV AX,VAR[BX]
; AX ← M[Offset(VAR)+BX]
• Pagina 487, nell’istruzione OUT togliere le parentesi quadre attorno a DX.
• Pagina 487, all’inizio dei due secondi punti del Paragrafo 14.4.2: sostituire “intersegmento” con
“extrasegmento”.
• Pagina 488, Figura 14.8. Nei registri di uso generale eliminare la divisione in due della parte alta (bit
31-16).
• Pagina 494, nel primo rigo della nota: sostituire ADD M1,EAX con ADD M2,EAX.
• Pagina 495, primo rigo del paragrafo 14.6.4, sostituire “Paragrafo 9.19” con “Figura 9.19”.
Nella didascalia di Figura 14.11 sostituire “RS” con “DS”.
• Pagina 500, l’esercizio 14.13 deve essere cos`ı riformulato.
“14.13 Con riferimento all’8086/88 si assuma che una lettura/scrittura in memoria richieda 4 cicli di
clock e si considerino le due istruzioni PUSH AX e POP MEM.
Si assuma che la dimensione delle due istruzione sia di 16 bit e che le due istruzioni siano allineate
(agli indirizzi pari), come pure lo stack. Si faccia l’ipotesi che oltre alle dovute letture/scritture in
memoria l’esecuzione delle due istruzioni richieda 3 cicli addizionali per la PUSH e 4 cicli addizionali
per la POP.
Si valuti il numero di cicli di clock richiesto per l’esecuzione delle due istruzioni prima per l’8086 e
successivamente per l’8088.”
20