Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi...

21
Soluzioni Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono riportate capitolo per capitolo, mantenendo la numerazione del libro. Sar`o grato a coloro che mi segnaleranno errori (di qualsiasi genere) presenti in queste pagine. Inoltre, prego di segnalarmi gli eventuali erro- ri ancora presenti nel testo in seconda ristam- pa. Tale ristampa dovrebbe essere corrispondere a una versione del testo emendata degli errori elencati nei due Errata Corrige disponibili sul mio sito personale. Scrivere all’indirizzo: [email protected]fi.it 1

Transcript of Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi...

Page 1: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Soluzioni

Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testoArchitetture dei calcolatori elettronici.

Le soluzioni vengono riportate capitolo per capitolo, mantenendo la numerazione del libro.

Saro grato a coloro che mi segnaleranno errori(di qualsiasi genere) presenti in queste pagine.Inoltre, prego di segnalarmi gli eventuali erro-ri ancora presenti nel testo in seconda ristam-pa. Tale ristampa dovrebbe essere corrisponderea una versione del testo emendata degli errorielencati nei due Errata Corrige disponibili sulmio sito personale.Scrivere all’indirizzo: [email protected]

1

Page 2: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Pagina bianca

2

Page 3: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

3

Esercizio 3.1La soluzione di minor costo e quella che utilizza l’integrato da 128 kbyte kbyte, i tre da 64 kbyte e tantiintegrati da 32 kbyte quanti ne servono per arrivare a coprire lo spazio di memoria richiesto.

Essendo per 8086, la memoria richiesta deve essere divisa un due “colonne” da 256 kbyte, selezionatetramite BHE e A0. Una, tra le molte possibili soluzioni, e quella di Figura 3.1.

Figura 3.1 Una possibile disposizione degli integrati nello spazio di memoria dell’esercizio 3.1. Vengono indicati ivalori dei bit di indirizzo corrispondenti alle differenti posizioni. Poiche lo spezio degli indirizzi coperto corrispondeal mezzo megabyte inferiore, su tutta la memoria vale A19 = 0.

Per quanto si riferisce alla decodifica degli indirizzi, si osserva anzitutto che gli integrati relativi al bytemeno significativo devono essere selezionati da A0 (basso), mentre quello relativi al bit piu significativovengono selezionati da BHE (pure attivo basso). indicando con CSi i chip select degli integrati, si ha:

CS5= BHE ·A19 ·A18 ·A17 CS0= A0 ·A19 ·A18

CS6= BHE ·A19 ·A18 ·A17 CS1= A0 ·A19 ·A18A17 ·A16

CS7= BHE ·A19 ·A18 ·A17 CS2= A0 ·A19 ·A18A17 ·A16

CS8= BHE ·A19 ·A18 ·A17 ·A16 CS3= A0 ·A19 ·A18A17 ·A16

CS9= BHE ·A19 ·A18 ·A17 ·A16 CS4= A0 ·A19 ·A18A17 ·A16

Dalle precedenti e facile ricavare le forme corrispondenti allo schema di Figura 3.2. Ad esempio:

CS5= BHE ·A19 ·A18 ·A17 = BHE + A19 ·A18 ·A17

CS3= A0 ·A19 ·A18A17 ·A16 = A0 + A19 ·A18A17 ·A16

Esercizio 3.2In questo caso si tratta di disporre di 8 colonne di 64 kbit. Su tutti gli integrati deve essere A19 = 1 eA18 = A17 = A16 = 0. Ai due integrati da 64 k si portano A15−0; agli integrati di 32 k si portano A14−0,mentre A15 entra nel chip select; agli integrati di 16 k si portano A13−0, mentre A14 entra pure nel chipselect. In conclusione, con i numeri assegnati alle posizioni di Figura 3.3 si hanno i chip select seguenti:

Page 4: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

CS6= A19 ·A18 ·A17 ·A16

CS5= A19 ·A18 ·A17 ·A16 ·A15 CS4= A19 ·A18 ·A17 ·A16 ·A15

CS3= A19 ·A18 ·A17 ·A16 ·A15 ·A14 CS2= A19 ·A18 ·A17 ·A16 ·A15 ·A14

CS1= A19 ·A18 ·A17 ·A16 ·A15 ·A14 CS0= A19 ·A18 ·A17 ·A16 ·A15 ·A14

Figura 3.2 Collegamento dei singoli integrati e rete di decodifica degli indirizzi (Esercizio 3.1). Gli integratisono numerati come in Figura 3.1.

Figura 3.3 Disposizione degli integrati per il caso dell’esercizio 3.2.

Esercizio 3.5Oltre all’integrato di 1 Mbyte e ai due da 512 kbyte, occorrono 8 integrati da 256 kbyte.

L’indirizzo (esadecimale) di partenza e 400000, dunque, per la selezione, devono essere decodificatiA31−23 = 0, A22 = 1, per tutti gli integrati. All’integrato da 1 Mbyte vengono portati A21−2; ai dueda 512 kbyte vengono portati A20−2, mentre A21 entra nella decodifica del chip select; agli integrati da256 kbyte vengono portati A19−2, mentre A21 e A20 entrano nella decodifica del chip select. Naturalmentenell’espressione del chip select entrano anche i BHi. Ad esempio, supponendo che l’integrato da 1 Mbytevada a coprire il byte meno significativo, il relativo chip select sara dato da: A31 ·A30 · · ·A23 ·A22 · BH0.Se il byte piu significativo e ottenuto con 4 integrati da 256 kbyte, quello posto nella parte piu alta avraquesto chip select: A31 ·A30 · · ·A23 ·A22 ·A21 ·A20 · BH3.

2

Page 5: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

4

Esercizio 4.1L’interfaccia richiesta non differisce molto da quella di Figura 4.9 del testo. Si differenzia solo per ilfatto che c’e una esplicita modalita di funzionamento data dal valore della coppia di bit [0,1] del registroCREG. Lo schema dell’interfaccia e in Figura 4.1.

Figura 4.1 Rispetto all’interfaccia di Figura 4.9 sono state aggiunte le porte che decodificano la modalita difunzionamento dell’interfaccia e che ne condiziono il funzionamento. Lo schema non mostra la decodifica degliindirizzi; si noti che di DPORT e SREG sono allo stesso indirizzo, mentre l’indirizzo di CREG e necessariamentediverso.

Esercizio 4.2La difficolta dell’esercizio sta nel dover provvedere una mappatura variabile di ARRAY IN in memoria.La decodifica degli indirizzi deve riuscire a individuare se l’indirizzo di lettura di memoria corrisponde auna locazione su cui in quel momento e mappata una posizione di ARRAY IN. In tal caso la lettura deveessere trasformata in lettura in ingresso/uscita.

Cominciamo con l’osservare che nel registro XAR andra messa la base di partenza corrente di AR-RAY IN, il cui valore e determinato B AR. Assumiamo per un momento che XAR sia a 16 bit. Dalconfronto dei bit [15-12] di XAR con i corrispondenti bit del bus indirizzi, si riesce a stabilire se l’indiriz-zo generato dalla CPU cade in uno degli intervalli di mappatura. Poiche ARRAY IN ha la dimensionedi 1 kbyte, occorre assicurarsi che l’indirizzo generato sia effettivamente entro uno spazio di 1 k a partiredalla base corrente. Cio richiede che il campo di bit [11-10] del bus degli indirizzi contenga zero, ovveroche il confronto tra bus indirizzi e XAR venga esteso in modo da comprendere anche i bit [11-10], che,per costruzione, sono “0” in XAR.

Si puo ora osservare che non e necessario che XAR sia a 16 bit, in quanto ai fini del confronto dicui sopra bastano soli sei bit. Si puo quindi usare un latch a 8 bit per XAR. Lo schema della logica chegenera il segnale di lettura di ARRAY IN e in Figura 4.2.

Il codice assembler corrispondente alla parte che chiama la routine MAP TO M e questo:

B_AR EQU 0E0HXAR EQU 0E2H

Page 6: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Figura 4.2 Il registro XAR e formato da un latch a 8 bit (la cui uscita e mantenuta sempre abilitata). Inumeri riportati all’interno dei bit di XAR corrispondono ai numeri d’ordine delle linee di indirizzo della base diARRAY IN. I bit denominati 11 e 10 sono necessariamente sempre a “0”, mentre solo un bit, tra 15, 14, 13 e 12e a “1” in un dato istante. Il blocco COMP confronta i due ingressi (di 6 bit) e produce un’uscita vera se i duesono uguali. Nel tracciare lo schema si e supposto l’indirizzo in I/O di XAR sia su 8 bit. Il segnale AR RD vieneasserito quando la CPU effettua un ciclo di lettura della memoria ad un indirizzo che cade nel campo di 1 kbytesu cui in quel momento e mappato ARRAY IN. AR RD viene quindi utilizzato come segnale di abilitazione delperiferico (per esempio come Output Enable della posizione individuata attraverso l’indirizzo su [A9-A0]). Sel’indirizzo generato dalla CPU non cade sul campo di cui sopra, viene asserito il segnale MEM RD di lettura dellamemoria.

........MOV BX, 01000HIN AL, B_AR ;Lettura di B_ARADD AL,0 ;ai fini del testJZ CHIAMA ; case 0: mappatura a 1000MOV BX, 02000HSUB Al,1JZ CHIAMA ; case 1: mappatura a 2000MOV BX, 04000HSUB Al,1JZ CHIAMA ; case 2: mappatura a 4000MOV BX, 08000H ; case 3: mappatura a 8000

CHIAMA: OUT XAR, BH ;Predisposizione mappaturaCALL MAP_TO_M

MAP TO M assume l’aspetto che segue.

MAP_TO_M: MOV CX, 1024 ;Inizializzazione contatoreCICLO: MOV AL, [BX] ;Lettura generico elemento di ARRAY_IN

MOV [BX], AL ;Copiatura in memoriaINC BX ;Puntamento al prossimoLOOP CICLORET

Esercizio 4.3Poiche a fronte di un bus dati a 8 bit l’interfaccia deve presentare 64 bit verso l’esterno, occorre prevederegli elementi di memoria necessari a mantenere l’informazione trasmessa dalla CPU. La cosa piu naturalee utilizzare 8 latch a 8 bit, secondo lo schema di Figura 4.3.Essendo richiesto che la routine SETBIT aggiorni uno solo dei 64 bit di uscita, ogni scrittura sull’interfacciadovra avvenire in modo tale che:

a) venga scritto il latch contenente il bit selezionato;

b) venga modificato il solo bit di interesse lasciando immutati i rimanenti 7.

Per rendere verificata la condizione del punto b) si puo procedere in questo modo:

1) leggere lo stato del latch su cui avviene la scrittura;

2) portare a zero il bit nella posizione corrispondente a quella da aggiornare, mantenendo invariati glialtri bit. Questo risultato si ottiene con una semplice operazione di AND con una maschera che ha“0” nella posizione da aggiornare e “1” in tutte le altre;

4

Page 7: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Figura 4.3 Struttura dell’interfaccia con 8 latch da 8 bit. Il generico latch viene indicato con Li (i = 0,1,. . 7)mentre LEi rappresenta il relativo segnale di Latch Enable che determina la memorizzazione su Li degli 8 bit iningresso. L’uscita del singolo latch e sempre abilitata. Il latch imo fornisce le 8 uscite da U8i+0 a U8i+7.

3) portare il bit di interesse al valore voluto. Questo risultato si ottiene effettuando una sempliceoperazione di OR.

Resta ora da stabilire come si individua il latch di destinazione e la posizione del bit di interesseentro il medesimo. Il numero d’ordine del latch e dato dal quoziente Q = x/8 (parte intera), mentrela posizione entro il latch e data dal resto R della medesima divisione. In termini di programmazioneassembler non conviene calcolare Q e R con operazioni di divisione1. Conviene piuttosto ragionare comesegue. Il numero x si trova sicuramente nei 6 bit meno significativi di CX all’atto della chiamata diSETBIT. E’ facile verificare che il valore di Q e contenuto nel campo di bit [5..3] di CX, mentre il campo[2..0] contiene R.

Indicando con PORT l’indirizzo di base dell’interfaccia, l’indirizzamento dei singoli latch si ottiene inquesto modo:

MOV DX, CX ; DX:= xSHR DX, 3 ; DX:= parte intera di = x/8ADD DX, PORT ; DX:= indirizzo del latch di destinazione

Conviene assegnare all’indirizzo di base dell’interfaccia (PORT) un valore multiplo di 8 in modo che essovenga decodificato attraverso i bit A7 −A3 (si assume che gli indirizzi di I/O stiano sempre negli 8 bitdella parte bassa dell’indirizzo), mentre la decodifica del contenuto di A2 −A0 fornisca il selettore dellospecifico latch indirizzato. In conclusione si ottiene lo schema di Figura 4.4.

Figura 4.4 Schema di decodifica degli indirizzi. Si suppone che gli indirizzi delle porte di I/O siano sempre su8 bit, anche se trasmessi attraverso DX. Si e fatta l’ipotesi che l’interfaccia sia all’indirizzo di base F0.

Resta infine da stabilire come si effettua la sequenza di operazioni dei precedenti punti 1), 2) e 3).Per quanto si riferisce alla determinazione dello stato del latch ci sono due alternative. La prima consistenel fare tutto per via software, ovvero prevedere un numero adeguato di variabili (di stato) interne allaroutine SETBIT che tenga traccia dello stato dei latch; la seconda consiste nel prevedere sull’interfaccia lalogica che permette si leggere lo stato dei latch stessi. Ovviamente la seconda soluzione e la piu “costosa”in quanto richiede della logica aggiuntiva.

1Il lettore verifichi questa affermazione esaminando il repertorio di istruzioni 8086, analizzando come si effettua ladivisione tra interi e che risultati determina.

5

Page 8: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Incidentalmente osserviamo che nella progettazione si presenta non di rado la necessita di decidere,per alcune delle funzionalita che un sistema deve svolgere, la loro ripartizione tra hardware e software.Il criterio generale e quello di cercare il miglior rapporto costo/prestazioni, che di solito si traduce nelfare eseguire al software quanto piu possibile. Nel caso specifico si tratta di tenere traccia in memoriadello stato dei latch, anziche prevedere la loro lettura. In generale, le soluzioni in software hanno ancheil pregio della flessibilita, mentre, al contrario, le soluzioni hardware hanno lo svantaggio della rigidita.L’allocazione di funzionalita a componenti hardware ha senso solo quando il loro svolgimento software esconsigliato per motivi di assoluta inefficienza o perche la complessita che si introduce nel software e taleda farle preferire l’aggiunta di una parte hardware specializzata.

In base ai precedenti ragionamenti occorre prevedere un vettore di 8 byte per tener traccia dello statodegli 8 latch. Chiameremo tale vettore COPIA. Il tratto di codice commentato che segue illustra come sieffettua la sequenza di operazioni corrispondenti ai punti 1), 2) e 3) e gli altri dettagli di programmazionedi SETBIT.

Il vettore COPIA sara cosi dichiarato (nel segmento dati).

COPIA DB 8 DUP (0) ; 8 byte di copia inizializ. a ‘‘0’’

La routine SETBIT (facente ovviamente parte del segmento di codice) assume questo aspetto.

SETBIT:MOV DX, CX ; DX:= xSHR DX, 3 ; DX:= parte intera del quoziente Q = x/8ADD DX, PORT ; DX:= indirizzo del latch di destinazione

;;Costruzione dell’indice in COPIA (l’indice e uguale a numero d’ordine del;latch);

MOV BX, CX ;SHR BX, 3 ; BX:= indice in COPIA

;AND CL, 111B ;CL:= R (posizione entro il latch)SHL AL, CL ;Posizionamento del bit da scrivere

;MOV AH, 1 ;PreparazioneSHL AH, CL ; della maschera di "1" eccettoXOR AH, 0FFH ; lo "0" nella posizione di interesseAND AH, COPIA[BX] ;AH:= copia latch con "0" in posizione

;OR AL, AH ;Aggiunta del bit datoMOV COPIA[BX], AL ;Aggiornamento della copiaOUT [DX], AL ;Scrittura sulla porta

;RET

Osservazione. Come indicato in precedenza si poteva progettare l’interfaccia in modo da dotarladella logica per leggere lo stato dei latch. Il lettore e invitato a svolgere il relativo progetto e apportarele necessarie modifiche a SETBIT.Una variazione sul tema. Si provi a progettare l’interfaccia che opera un modo duale rispetto a quellavista, nel senso che essa deve leggere un bit selezionato da un insieme di 64 ingressi digitali. La relativaroutine di gestione GETBIT viene chiamata esattamente come SETBIT, dove ora x rappresenta il numerod’ordine dell’ingresso digitale da leggere; la routine GETBIT restituisce nel bit 0 di AL il valore dell’ingressodigitale letto.

Si verifichi che, in linea di principio, questa interfaccia si riduce a un “grosso” selettore (multiplexer)da 64 in 1. Se si pensa di realizzare l’interfaccia con componenti discreti non programmabili, la funzionalitadi un tale selettore deve essere costruita a partire, per esempio, da 8 selettori 8 in 1. Si puo tuttaviascoprire che la soluzione piu conveniente consiste invece nel prevedere 8 semplici buffer da 8 bit, lasciandoal programma il compito di isolare il bit di interesse tra gli otto letti.

Esercizio 4.5Per il buon funzionamento del driver si presuppone che la sezione di inizializzazione venga chiamata soloe sempre quando non e in corso un trasferimento, cosa di cui il programmatore puo accertarsi testandolo stato della variabile BUSY.

Se assumiamo che il driver venga chiamato mentre e in corso un trasferimento e facciamo l’ipotesi chedurante l’esecuzione del tratto di codice della sezione di inizializzazione non si manifesti l’interruzione,l’effetto della routine di inizializzazione e riconfermare BUSY asserita ma anche quello di aggiornare la

6

Page 9: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

variabile che tiene traccia dell’indirizzo del prossimo byte da trasmettere e della variabile di conteggio;inoltre viene trasmesso un carattere al dispositivo esterno.

La trasmissione di questo carattere puo determinare un effetto impredicibile, nel senso che essodipende dalla natura del periferico e da quanto e progredito il trattamento del carattere precedente.In ogni caso, al manifestarsi dell’interruzione, essendo cambiati l’indirizzo di prelievo e il contatore, latrasmissione dei caratteri verso l’esterno procedera sulla base dei nuovi valori assunti da le rispettivevariabili. Se, per esempio, si ipotizza di avere a che fare con una stampante, l’effetto macroscopicosarebbe l’abbandono della stampa in corso e il passaggio, senza soluzione di continuita, alla stampa delcontenuto dell’area di memoria specificata con la chiamata al driver.

L’interruzione puo anche pervenire mentre e in corso di esecuzione proprio la sezione di inizializza-zione. Si lascia al lettore l’analisi dei possibili casi che si possono determinare a seconda del punto in cuisi manifesta l’interruzione.

Esercizio 4.7Sull’interfaccia e necessario un contatore modulo 4, che venga caricato con il valore contenuto in AL

all’atto dell’operazione di OUT e il cui stato fornisca il selettore del byte da leggere. Inoltre ad ogni letturail contatore deve avanzare. Queste considerazioni portano allo schema di Figura 4.5.

Figura 4.5 Schema dell’interfaccia per l’esercizio 4.7. Il contatore modulo 4, indicato come C/4, ha una coppia diingressi che servono a precaricare lo stato di partenza. Il caricamento ha effetto quando viene asserito l’ingressoLoad, ovvero quando la CPU effettua una scrittura all’indirizzo dell’interfaccia (70). Le letture determinano

l’abilitazione dell’uscita del buffer selezionato attraverso il contatore. Sul fronte di salita del segnale PRD ilcontatore avanza.

Esercizio 4.10L’interfaccia deve prevedere, oltre al registro REG, un comparatore che asserisca la richiesta di interru-zione e la logica che porta a copiare gli ingressi in REG ad ogni lettura. Il possibile schema e mostratoin Figura 4.6.

Per quanto si riferisce alla routine di interruzione e necessario prevedere una variabile interna chetiene traccia dell’ultima lettura degli ingressi. Indichiamo con COPIA tale variabile; essa dovra essereinizializzata all’atto dell’attivazione dell’interfaccia. Nel segmento dati dovranno esser previste questedichiarazioni:

......PUBLIC VAR

COPIA DB ? ;Copia degli ingressiVAR DB ? ;Variabile resa globaleINGR EQU 0240H ;IEN EQU INGR ;

......

La routine di servizio dell’interruzione corrisponde a questo codice:

INTRSEC: PUSH AX ;Salvataggio deiPUSH DX ; registri usati

7

Page 10: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Figura 4.6 Schema dell’interfaccia per l’esercizio 4.10. Si noti che quando il comparatore COMP rileva che gliingressi sono diversi dal contenuto di REG, il flip-flop IFF si porta in stato alto e vi resta fino alla prossimalettura. Non e stata tracciata la rete che corrisponde al comparatore COMP, trattandosi di un banale eserciziodi impiego di porte XOR. Non viene neanche mostrata la logica di decodifica dell’indirizzo che genera SEL. Sinoti che, essendo l’indirizzo dell’interfaccia 240 (esadecimale), occorre utilizzare DX per trasmettere l’indirizzo.L’interfaccia si abilita/disabilita trasmettendo 1/0 su D0. Si noti che gli ingressi vengono memorizzati in REGal termine della lettura. Si osservi anche che per inizializzare l’interfaccia basta effettuare una lettura e quindiabilitarla all’interruzione.

MOV DX,INGR ;DX:= indirizzo porta di ingressoIN AL,[DX] ;Lettura della portaMOV AH,COPIAXOR AH,AL ;Trova i bit cambiatiMOV VAR,AH ; e li scrive in VARMOV COPIA,AL ;Copia ultima letturaPOP DX ;Ripristino deiPOP AX ; registri modificatiIRET

Esercizio 4.12

L’esercizio non presenta particolari difficolta dal punto di vista della logica dell’interfaccia. Unoschema possibile e in Figura 4.7.

Figura 4.7 Schema dell’interfaccia per l’esercizio 4.12.

8

Page 11: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Piu interessante e invece la ricerca di un algoritmo per il DRIVER. Quello che segue opera in questomodo:

a) viene prima individuata la porta, ovvero la coppia di gruppi, su di cui deve avvenire la scrittura;

b) si stabilisce se i 4 bit da modificare devono andare nella parte alta o bassa della porta;

c) in base alla risultanza del punto b) si forma il byte da trasmettere.

DRIVER: MOV DX,0F0H ;Base dell’interfacciaMOV CL,AH ;AH = numero del gruppoAND CL,010B ;Si isola il bit 1 del selettore di gruppoJZ AVANTI ;Se "0" Sono stati scelti G1-G0INC DX ;Sono stati scelti G3-G2: adeguamento DX

AVANTI: IN BL,[DX] ;Lettura della portaAND AH,01B ;Si isola il bit 0 del selettore di gruppoJZ PARI ;Vale "0" per G0 e G2

;;Il controllo arriva alla parte che segue se si tratta di trasmettere i 4 bit;contenuti in AL sulla parte alta (G1 o G3) della porta .;

SHL AL,4 ;Posizionamento del nuovo dato da trasmettereAND BL,0FH ;Isolamento della parte invariata (di G0 o G2)OR AL,BL ;Formazione byte

EXIT: OUT [DX],AL ; e sua trasmissioneRET

;;Il controllo arriva alla parte che segue se i 4 bit contenuti in AL devono;essere trasmessi nella parte bassa (G0 o G2) della porta.;PARI: AND BL,0F0H ;Isolamento della parte invariata (di G1 o G3)

OR AL,BL ;Formazione byteJMP EXIT

Si noti che l’algoritmo precedente si basa in modo rilevante sul fatto che le porte sono 2. Il lettore provia generalizzare il problema, assumendo un numero qualsivoglia di porte.

Esercizio 4.14Questo esercizio, almeno per quanto riguarda la logica, ha molte similitudini con gli esercizi 4.3 e 4.7. Loschema e in Figura 4.8. La routine LOOKUP risulta invece di una certa complessita. Circa la modalitadi numerare i bit si faccia riferimento alla soluzione dell’esercizio 4.3.

Figura 4.8 Schema dell’interfaccia per l’esercizio 4.14. Il blocco di destra e un latch le cui uscite sono tenutesempre abilitate. Poiche in lettura viene usato il registro DX, si e ipotizzato di decodificare 20 bit di indirizzo.

Saltiamo la stesura del diagramma di flusso, che lasciamo come compito non risolto al lettore, epassiamo direttamente a costruire la routine INITLKUP. Essa deve solo leggere ordinatamente le portedi ingresso memorizzare i valori letti in un vettore di appoggio, di 8 posizioni, che chiameremo COPIA.

9

Page 12: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

INITLKUP: MOV CX,8 ;CX: contatoreMOV DI,0 ;DI: indiceMOV DX,PORT ;DX: indirizzo base dell’interfaccia

;READ0: IN AL,[DX] ;Lettura

MOV COPIA[DI],AL ; memorizzazioneINC DX ;Puntamento alla porta successivaINC DI ; e incremento indiceLOOP READ0MOV AL,0FFH ;Per dire cheOUT [DX],AL ; "non ci sono cambiamenti"RET

Piu difficile e scrivere LOOKUP. Al fine di evitare di costruire un algoritmo troppo intricato, convienedividere LOOKUP in due parti: la prima dedicata a leggere gli ingressi, aggiornare il vettore COPIA ecostruire il vettore CAMBIATI; la seconda a determinare il numero d’ordine richiesto.

Per quanto abbiamo detto nel segmento dei dati si avranno questi statement:

...........COPIA DB 8 DUP (?) ;64 bit copia ultima letturaCAMBIATI DB 8 DUP (?) ;64 bit per tener traccia dei cambiati

...........

La prima parte di LOOKUP corrisponde al seguente codice:

LOOKUP: MOV CX,8 ;CX: ContatoreMOV DI,0 ;DI: indiceMOV DX,PORT ;DX:= indirizzo di base dell’interfaccia

READ: IN AL,[DX] ;LetturaXOR AL,COPIA[DI] ;Calcola i cambiamentiMOV CAMBIATI[DI],AL ; e li memorizza in CAMBIATIXOR AL,COPIA[DI] ;Ripristina in AL la letturaMOV COPIA[DI],AL ; e memorizza in COPIAINC DX ;Puntamento alla porta successivaINC DI ; e incremento indiceLOOP READ

;Al termine del ciclo COPIA contiene l’ultima lettura dei 64 ingressi....segue.......

La seconda parte di LOOKUP ha lo scopo di determinare il numero d’ordine del piu basso ingressomodificato. Si tratta di effettuare la scansione del vettore CAMBIATI, arrestandosi al riconoscimento delprimo bit a “1”. A scopo didattico, nello stendere questa parte, anziche nominare direttamente il vettoreCAMBIATI, lo si indirizza attraverso BX in modo da avere pronto il puntatore all’uscita di LOOKUP.

....segue.......MOV CX,8 ;ContatoreMOV DI,0 ;IndiceMOV BX,OFFSET CAMBIATI ;Scostamento di CAMBIATIMOV AH,0 ;AH dira quale byte

TESTBYTE: MOV AL,[BX][DI] ;Salto a THISBYTE se....SUB AL,0 ;JNZ THISBYTE ;....c’e almeno una variazioneINC AH ;Forse nel prossimo byteINC DILOOP TESTBYTE

;;Se il controllo arriva qui non c’e stato alcun cambiamento;

MOV AH,0FFH ;Segnala nessun cambiamentoEXIT: OUT PORT,AH

RET;THISBYTE:;Il numero d’ordine del primo byte che presenta un cambiamento e in AH;lo si moltiplica per 8;

SHL AH,3 ;La parte alta del numero d’ordine

10

Page 13: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

;;Resta da ora trovare entro questo byte il bit variato di ordine minore;

MOV CX,8MOV DL,0 ;DL dara la posiz. del bit entro il byte

TESTBIT: MOV DH,AL ;DH copia di appoggioAND AL,1 ;Isola il bit in posizione 0JNZ THISBIT ;Salto se cambiatoINC DL ;ConteggiaMOV AL,DH ;Si riprende il byteSHR AL ;Avanti il prossimo bitLOOP TESTBIT

;;Se il controllo arriva qui c’e un errore: un byte indicava cambiamento;ma nessun bit sembra modificato. Un buon programma dovrebbe prevedere;una qualche azione di recupero. Si "finge" di saltare a un analizzatore;di disastro;

JMP DISASTRO;;Il numero d’ordine del bit e in DL;THISBIT: OR AH,DL ;Unione parte alta e bassa

JMP EXIT

La scrittura di LOOKUP e conclusa.

Osservazione. La routine LOOKUP e stata divisa in due parti. E’ evidente che il numero da presentaresulla porta di uscita poteva essere determinato anche all’interno del ciclo di lettura delle porte di ingresso.Il lettore e invitato a riscrivere LOOKUP in modo che operi in tal senso.

Ulteriori miglioramenti, sia estetici che di efficienza, possono essere apportati evitando i doppicontatori (CX e AH, oppure CX e DL) e utilizzando istruzioni che effettuano direttamente il test deibit.

Esercizio 4.20Risolveremo l’esercizio senza tener conto della catena IEI-IEO; le estensioni relative sono abbastanzaimmediate.

Essendo la richiesta di interruzione di breve durata e necessario prevedere un flip-flop che memorizzila richiesta stessa. Lo schema della logica di daisy chain e in Figura 4.9.

Figura 4.9 Logica per l’esercizio 4.20. Si e ipotizzato che la selezione dell’interfaccia faccia disasserire la richiestadi interruzione. Si noti che, essendo INTA attivo basso, non il fenomeno aleatorio non si presenta su INTAO equindi non e necessario l’elemento di ritardo come nelle Figure 4.20 e seguenti nel testo.

Esercizio 4.21Poiche in presenza di piu interruzioni deve presentare il VT relativo a quella piu prioritaria, si rendenecessario un codificatore di priorita (priority encoder, PE). PE e rappresentato come un blocco a 8

11

Page 14: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

ingressi e 3 uscite, sulle quali e codificato il numero d’ordine dell’ingresso piu prioritario asserito2; l’uscitadi PE, abilitata dal segnale INTA, viene usata per formare il vector type e pilotera i 3 bit meno significatividel bus dati. Lo schema del PIC e in Figura 4.10.

Figura 4.10 Logica per l’esercizio 4.21. Il registro di mascheramento M, come il registro T (per il VT) sonoprogrammabili. Il contenuto del registro M e leggibile direttamente da programma. Non e stato tracciata lalogica che genera i comandi RDM, WRM e WRT. Si deve assumere che al dispositivo corrispondano almeno dueindirizzi, relativi al registro M e al registro T.

Le 3 righe di codice seguente predispongono la base dei vettori all’indirizzo CO. Si noti che in questocaso, essendo la base minore di 256 si e caricato il solo registro AH; se la base fosse stata compresa tra256 e 1024 occorreva caricare il registro AX. In ogni caso la divisione per 4 (l’istruzione SHR) riporta entroil byte e quindi l’istruzione OUT resterebbe invariata.

;; TPORT e l’indirizzo del registro T;

MOV AL, 0C0H ;Indirizzo base dei vettori di interr.SHR AL, ; nel PIC deve andare diviso per 4OUT TPORT,AL ;

Il seguente tratto di codice porta a 1 il bit 5 di M, lasciando immodificati gli altri bit.

;; MPORT e l’indirizzo del registro M;

IN AL,MPORTAND AL,11011111B ;Prima viene azzerato il bit 5MOV AL,00100000B ; Bit 5 a 1; gli altri invariatiMOV MPORT,AL

Esercizio 4.22Per quanto riguarda la logica dell’interfaccia, concettualmente essa non e dissimile da quella dell’inter-faccia dell’esercizio 4.12, al quale rimandiamo. Per quanto si riferisce al testo assembler della routinea interruzione, si noti che occorrono almeno due contatori: CONT10 per tener traccia del numero d’or-dine (da 0 a 9) dell’interruzione corrente e CONTDUTY per tener traccia delle interruzioni che devono dareun’uscita alta. Infine, occorre una variabile (logica), che denomineremo A B per dire se si e nella partein cui l’uscita va tenuta a “1” o in quella in cui deve essere “0”. Le tre variabili potranno essere definitecome byte nel segmento dati.

INTPW: PUSH AXPUSH CX

2Il lettore e invitato esaminare i dati di catalogo dei prodotti commerciali, apportando allo schema eventuali modifichedettate dal loro reale modo di funzionare.

12

Page 15: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

IN AL, PORT ;Lettura della portaMOV CH,CONT10 ;Contatore per 10DEC CHJZ NUOVOPER ;se 0 e la fine di un periodo

;;Non e l’inizio di un periodo: c’e da decidere come pilotare;il bit 0 di PORT;

MOV CONT10,CH ;Aggiornamento contatore in memoriaMOV AH,A_BJZ LOW ;Se 0 siamo nella seconda faseMOV CL,CONTDUTY ;Siamo nella prima faseDEC CL ;JZ ABBASSA ;Se 0 e la fine della prima fase

EXIT1 OR AL,1 ;Trasmette "1"EXIT: OUT PORT,AL

MOV CONTDUTY,CL ;Aggiornamento CONTDUTYPOPIRET

;ABBASSA: XOR AH,AH ;Si passa alla seconda fase

MOV A_B,AH ;A_B:= 0LOW: AND AL,0FEH ;Trasmette "0"

JMP EXIT;NUOVOPER: MOV CH,10 ;Inizializzazione contatore

MOV CONT10,CH ; di periodoMOV AH,1 ;Inizializzazione variabileMOV A_B,AH ; di statoMOV CL,N ;Duty cycleJMP EXIT1

Esercizio 4.27Il possibile malfunzionamento e questo. Si supponga che sia in corso un ciclo di INTA, in risposta a unarichiesta di interruzione effettuata da un periferico meno prioritario di quello in questione. In tale ciclo lalinea INTAO risulta asserita. Se nel corso del ciclo di INTA viene ora asserita la richiesta di interruzioneIRQ, la linea INTAO passa allo stato “0”. Ovviamente il tutto avviene in modo completamente casuale,in dipendenza dalla tempificazione dei segnali. E possibile che INTAO sia rimasta asserita quanto bastaa selezionare l’interfaccia a valle. E pero possibile che IRQ sopravvenga immediatamente dopo il frontedi INTA. In tal caso, mentre non e detto quel che puo accadere a valle, l’interfaccia in questione non e ingrado di selezionarsi in quanto SFF non ha commutato sul fronte di INTA.

Esercizio 4.32Se SFF passa a “0” con il sistema di interruzione abilitato e a valle e asserita una IRQ, questa determinaimmediatamente un’interruzione (sempre che IEI in ingresso alla relativa interfaccia sia a “1” e non siadisasserita per effetto di qualche interfaccia intermedia) che ha l’effetto di interrompere la routine incorso. In altre parole, una routine meno prioritaria interrompe una piu prioritaria. Se si vuole evitarequesta “inversione della priorita” occorre che la riabilitazione del sistema di interruzione (flip-flop IE) sial’ultima azione effettuata dalla routine in corso di esecuzione.

In questo modo si perde pero l’annidamento delle interruzioni (le piu prioritarie che interromponole meno). Il modo corretto di operare e un altro: riabilitare il sistema di interruzione durante la routinedi servizio, ma riportare SFF a “0” solo al termine della routine medesima.

Esercizio 4.35Il progetto dell’interfaccia verra svolto in modo intuitivo e non formale. Per semplicita si fa l’assunzioneche la richiesta di interruzione generata dal periferico si mantenga almeno fino al momento in cui non siha la selezione. Si puo ragionare in questo modo:

a) quando viene asserita la richiesta di interruzione IRQ del periferico, la linea INT viene asserita solose e asserita IEI;

13

Page 16: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

a) suk clock che campiona INTA asserito, se permangono le condizioni del punto precedente, si deter-mina il passaggio allo stato “1” del flip-flop FF1, la cui uscita e in ingresso a un secondo flip-flop D(FF2); conseguentemente FF2 porta in stato “1” al clock successivo;

c) sull’ulteriore clock, il flip-flop SFF passa allo stato “1” se IEI e rimasto a “1”, ovvero se le interfaccea monte, non hanno fatto richiesta di interruzione. Si noti che Sono passati due periodi di clock daquando la linea INTA e stata campionata asserita. L’interfaccia risulta selezionata, IEO e disasseritocome pure IACK, che pero resta asserito solo per un ciclo (il prossimo clock riporta il FF2 in stato“0”);

Lo schema dell’interfaccia che opera come sopra e in Figura 4.11.

Figura 4.11 Schema della logica di daisy chain sincrona per l’esercizio 4.35. Si e supposto che l’eventuale flip-flopdi memorizzazione della richiesta di interruzione faccia parte delle logica del periferico. Si noti che INTA nonesce verso valle, in quanto arriva in parallelo a tutte le interfacce. Il segnale IACK ha la durata di un ciclo diclock.

Si invita il lettore a effettuare il progetto in modo rigoroso, utilizzando il diagramma degli stati eprovvedendo a sintetizzare la rete.

14

Page 17: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

7

Esercizio 7.4Sono dati:M = 226 byte (dimensione massima della memoria); v = 8 = 23 vie; C = 256 k = 218 byte (dimensionecomplessiva della cache). Ogni linea e di 64 = 26 byte; le parole sono di 4 byte, per cui si hanno 16 parolea linea. La capacita di una via e Cv = C/v = 218/23 = 215 byte. Da cui deriva che ogni via contieneL = 215/26 = 29 linee. Usando i simboli del testo si ha dunque: w = 4; l = 9. Nella determinazionedel campo del dell’indirizzo di blocco si deve tener conto che la memoria e limitata a 226 byte e chequindi le linee di indirizzo di interesse vanno da A25 a A2 (A1 e A0 indirizzano il byte entro la parola).Ne consegue b = 11, come indicato in Figura 7.1. Il numero di bit di Tag per ciascuna via e dato dalprodotto b × L = 11 × 29. In totale si hanno dunque 11 × 29 × 23 = 44 kbit (si ricordi che 1k = 210=1024).

Figura 7.1 Struttura degli indirizzi per l’Esercizio 7.4.

Esercizio 7.5Si deve assumere che all’inizio la cache sia vuota.

Nel caso (a) si numerano le sedici linee da 0 a 15. I primi 4 riferimenti danno miss; il quintoriferimento (20) va nella linea 4 di cache, che contiene il dato all’indirizzo 4 di memoria centrale: si hadunque un miss. E’ facile verificare che i successivi riferimenti fino al 43 incluso determinano miss. Ilriferimento 5 da hit, seguono un miss e due hit. In conclusione si ha questa sequenza:

1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17m m m m m m m m m m m m h m h h

Il contenuto finale della cache e quello che segue (non si riportano le linee non indirizzate)

Linea: 1 3 4 5 6 8 9 11Contenuto: 17 19 4 5 6 56 9 43

Nel caso (b) si hanno 4 linee di cache, su ciascuna delle quali si mappano 4 linee di memoria. Adesempio: sulla linea 0 di cache si mappano le due linee di memoria corrispondenti a questi due gruppi diparole {0,1,2,3}, {16,17,18,19}. I primi tre riferimenti danno miss, mentre il quarto (5) trova la linea incache e percio determina hit. Seguono poi due miss e quindi un hit sul 19. Gli altri hit si hanno con 11,5, 6 e 17. Si ha dunque questa sequenza:

1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17m m m h m m h m m h m m h h m h

Contenuto finale della cache:Linea: 0 1 2 3

Contenuto: {16,17,18,19} {4,5,6,7} {8,9,10,11} -

Nel caso (c) le due vie sono di 8 linee di una parola. Il primo hit si ha sul secondo 4. Complessivamentesi ha questa sequenza:

1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17m m m m m m m m m m h m h m h h

Page 18: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Contenuto finale della cache:Via 0 Linea: 0 1 2 3 4 5 6 7

Contenuto: 8 9 - 43 4 5 6 -Via 1 Linea: 0 1 2 3 4 5 6 7

Contenuto: 56 17 - 11 20 - - -

Nel caso (d) ogni via contiene 2 linee di 4 byte. La sequenza di miss/hit e questa:

1 4 8 5 20 17 19 56 9 11 4 43 5 6 9 17m m m h m m h m m h h m h h h m

Contenuto finale della cache:Via 0 Linea: 0 1

Contenuto: {16,17,18,19} {4,5,6,7}Via 1 Linea: 0 1

Contenuto: {40,41,42,43} {20,21,22,23}Esercizio 7.6Nel caso a) ogni via e di 8 parole e di 4 linee. I primi tre riferimenti danno miss e vanno a occupareposizioni nella via 0; il quarto e quinto riferimento danno ancora miss e vanno a occupare posizioni nellavia 1; il sesto da miss e occupa l’ultima linea di via 0; il riferimento successivo (19) da miss sulla via 1;l’ottavo riferimento (48) da miss e occupa la prima posizione nella via 3; il successivo (9) da hit sullavia 0. Al riferimento 34 (che deve andare nella riga 1) si ha miss e tutte le posizioni sono occupate;l’algoritmo LRU sostituisce la linea di via 1 in quanto e su questa via che si e avuto l’ultimo riferimento(i contatori LRU per la riga indicano 0,3,2,1). Il riferimento 12 e ancora un miss; ad esso spetta un postoin riga 2, i cui contatori sono 1,3,2,0; viene quindi sostituita la linea di via 1. Con analogo ragionamentosi trova che il riferimento 28 prende posto nella via 2 (linea 2).

2 4 8 16 20 6 19 48 9 42 11 4 43 44 2 5 33 34 36 6 12 14 15 28 9m m m m m m m m h m m h h m h h m m m h m m h m h

Contenuto finale della cache:Via 0 Linea: 0 1 2 3

Contenuto: {8,9} {2,3} {4,5} {6,7}Via 1 Linea: 0 1 2 3

Contenuto: {16,17} {34,35} {12,13} {14,15}Via 2 Linea: 0 1 2 3

Contenuto: {48,49} {42,43} {28,29} -Via 3 Linea: 0 1 2 3

Contenuto: {32,33} {10,11} {36,37} -

Nel caso b) ci sono 2 linee per via. La sequenza di miss/hit e questa:

2 4 8 16 20 6 19 48 9 42 11 4 43 44 2 5 33 34 36 6 12 14 15 28 9m m m m m h h m h m h h h m m h m h m h m h h m h

Contenuto finale della cache:Via 0 Linea: 0 1

Contenuto: {40,42,42,43} {4,5,6,7}Via 1 Linea: 0 1

Contenuto: {8,9,10,11} {12,13,14,15}Via 2 Linea: 0 1

Contenuto: {0,1,2,3} {29,29,30,31}Via 3 Linea: 0 1

Contenuto: {32,33,34,35} {36,37,38,39}

Esercizio 7.7Ciascuna delle due vie (parte DATI) e di 128 kbyte. Essendo le linee di 32 byte, il numero di linee pervia e: L = 217/25 = 212 = 4 klinee. La struttura degli indirizzi e illustrata in Figura 7.2.

Nella costruzione della parte DATI si deve tener conto che, essendo le parole di 4 byte, i 128 kbyte diuna via devono essere costruiti con 4 colonne da 34 kbyte, ciascuna delle quali viene selezionata tramite ilcorrispondente BE. La parte TAG viene costruita con due integrati da 4 Kbyte, come illustrato in Figura7.3. In Figura 7.4 viene dato il dettaglio dell’indirizzamento di un integrato della parte DATI.

16

Page 19: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

Figura 7.2 Struttura degli indirizzi per l’Esercizio 7.7.

Figura 7.3 Struttura di una via. La figura mostra solo la parte relativa alla lettura. L’indirizzo di linea individuala posizione nel TAG. Tramite IW si si indirizzano direttamente le parole in DATA .

Figura 7.4 Indirizzamento dell’integrato della parte DATI selezionato tramite BE2.

Esercizio 7.8La struttura degli indirizzi e identica a quella dell’esercizio 7.7.

Per quanto si riferisce ai contatori LRU, si puo osservare che, avendosi due sole vie, un contatore di1 bit e sufficiente a identificare le vie in corrispondenza di ogni posizione di linea. Il numero complessivodi bit per i contatori e dunque pari a 4 k.

Si indichino ora con v0 e v1 i bit di validita di una generica linea, rispettivamente nella via 0 e 1, esi indichi con c il corrispondente contatore LRU. Si stabiliscono le seguenti convenzioni:

a) vi = 0 indica che la linea corrispondente sulla via i −ma non e valida, mentre vi = 1 indica che evalida;

b) c = 0 indica che l’ultimo hit (alla posizione corrispondente) e stato sulla via 0, mentre c = 1 indicache l’ultimo hit (a quella posizione) e stato sulla via 1.

Se ora si conviene di realizzare ogni singolo contatore tramite un flip-flop SR, si ricavano direttamente leespressioni per S e R. Mostriamo come in riferimento a R: R deve essere asserito se c’e hit sulla via 0,oppure quando, in presenza di miss, la linea di via 0 non e valida oppure le due linee sono ambedue validee il contatore e a 1 (indicando che il precedente hit e stato sulla via 1 e quindi deve essere rimpiazzata lalinea di via 0.). Si ha dunque:

R = h0 + m(v0 + v0v1c) = h0 + mv0 + mv0v1c

Dove h0 e h1 rappresentano il verificarsi di hit sulla via 0 o 1 rispettivamente. Ragionando in modoanalogo si ottiene per S questa espressione:

S = h1 + mv0(v1 + v1c) = h1 + mv0v1 + mv0v1c

Occorre osservare che mentre h0, h1 e m sono generici e si riferiscono a tutta una via (h0 e h1) o a tuttala cache (m), v0 e v1 si riferiscono alla specifica linea di cache. Inoltre e necessario che solo il contatore

17

Page 20: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

relativo alla posizione indirizzata attraverso IL veda i suoi ingressi. Si ottiene cosı lo schema di Figura7.5.

Figura 7.5 Schema per il generico contatore modulo 2 associato ad ogni linea. Il contatore e realizzato conflip-flop asincroni. E’ stata prevista un’ulteriore porta AND a valle di S e R valutati come sopra, al fine digarantire che viene attivato solo il contatore relativo alla posizione IL. La linea L e asserita solo relativamentealla posizione indirizzata (indirizzo IL).

Esercizio 7.10Per la sequenza: M, M, M, H2, H1, M, M, H2, M, M, I2, H1, H3, si hanno gli eventi di Tabella 7.1.

Evento B0 B1 B2 V0 V1 V2 V3

0 Condizione iniziale 0 0 0 0 0 0 01 Miss 1 1 0 1 0 0 02 Miss 1 0 0 1 1 0 03 Miss 0 0 1 1 1 1 04 Hit sulla linea di via 2 0 0 1 1 1 1 05 Hit sulla linea di via 1 1 0 1 1 1 1 06 Miss 0 0 0 1 1 1 17 Miss 1 1 0 1 1 1 18 Hit sulla linea di via 2 0 1 1 1 1 1 19 Miss 1 0 1 1 1 1 1

10 Miss 0 0 0 1 1 1 111 Invalidazione di via 2 0 0 0 1 1 0 112 Hit sulla linea di via 1 1 0 0 1 1 0 113 Hit sulla linea di via 3 0 0 0 1 1 0 1

Tabella 7.1 Sequenza di modifica dei Bi e Vi in base alla sequenza di eventi sopra riportata.

Esercizio x.1Vengono dati 4 integrati da 128 kbyte, 2 da 256 kbyte e 2 da 512 kbyte, tutti in forma byte-wide. Costruireuna memoria a 32 bit per una CPU 386/486 da 2 Mbyte a partire dall’indirizzo 10000H.

Si tratta di disporre gli integrati in modo che sia garantito l’indirizzamento sia alla parola, sia allasemiparola, sia al byte.

Esercizio x.35PROVA SCRITTA DEL GIORNO 17 NOVEMBRE 1999Si consideri un calcolatore a 32 bit (dati e indirizzi), operante in pipeline. Le istruzioni occupano

sempre e solo una parola (32 bit) e sono allineate a indirizzi multipli di 4. Per ridurre la penalizzazionedovuta alle diramazioni si dota la macchina di un Branch Target Buffer (BTB) organizzato come unacache associativa a 16 vie di 16 elementi per via. La parte dati di ogni elemento contiene: (1) l’indi-rizzo di destinazione della diramazione e (2) due bit di storia degli esiti precedenti dell’esecuzione delladiramazione corrispondente. Si richiede:

1. La struttura degli indirizzi e la modalita di accesso a BTB

18

Page 21: Soluzioni - STLAB · Questo documento contiene le soluzioni ad un significativo numero di esercizi proposti nel testo Architetture dei calcolatori elettronici. Le soluzioni vengono

2. Il numero complessivo di bit del BTB (comprensivo della parte dati e della parte TAG)I 6 punti relativi alle domande precedenti vengono concessi se la soluzione adottata, oltre a essere

corretta, e quella che minimizza il numero complessivo di bit nel BTB.

EsercizioIn riferimento alla funzione seguente e all’architettura Intel si illustri il ruolo del registro EBP

void f(int p){

int x;\\ corpo della funzione

}

Si schematizzi lo stack dopo la chiamata (quando f e in esecuzione) e si dica come viene tradotto lostatement x = p, assumendo che gli interi occupino 32 bit.

SoluzioneQuando f e in esecuzione lo stack e quello di Figura ??.

Figura 7.6 Lo stack dopo l’ingresso in f.

19