Architettura degli Elaboratori 26 Gennaio 2005

Niente appunti o calcolatrici. Risposte nel foglio di bella copia. Massima SINTETICITA', l'eccessiva verbosita' verra' considerata negativamente.
Esercizio 1.
(a) Un chip PIO (Parallel Input/Output) puo' essere selezionato (e i suoi registri possono venire scritti o letti) in due modi differenti. Uno di questi utilizza l'approccio Memory Mapped I/O. Dire in cosa consiste tale approccio. Dire anche in cosa consiste l'altro modo.
(b) Abbiamo a disposizione uno spazio di indirizzamento di 28 posizioni in un sistema con memory mapped I/O. Una parte della memoria e' fisicamente realizzato da una ROM contenente 56 parole di memoria. Vogliamo che tali parole vengano lette dalla CPU come se fossero le posizioni da 8 (23) a 63 (26-1) Disegnare il circuito combinatorio da collegare tra le linee di indirizzo del Bus e il segnale di Chip Select del Chip della ROM (supponendo che il CS sia asserito basso). Dare inoltre un'idea di come collegare le linee di indirizzo del Bus alle linee Indirizzo della ROM.
Esercizio 2
(a) Ci sono tre schemi differenti per realizzare l'Input/Output nei personal computers. Dire quali sono e, brevemente, in cosa consistono.
(b) Descrivere come estendere l'architettura Mic-1 per poter gestire operazioni di I/O con interruzioni e Memory-mapped I/O, avendo come periferiche una tastiera ed una stampante (praticamente come e' descritto nelle note del corso "Esempio (con simulatore) di realizzazione di Input/Outpur con interruzioni").
Esercizio 3
(a) Nella realizzazione di cui al punto 2(b) e' necessario modificare il microprogramma Mic-1 che realizza l'interprete IJVM, aggiungendo all'inizio di esso il seguente segmento di codice
int1 if opc[0] goto main1;
int2 if (not(opc[15]) and not(opc[14]) ... and not(opc[8])) goto main1;
int3 SP=MAR=SP+1;
int4 MDR=PC; wr;
int5 SP=MAR=SP+1;
int6 MDR=OPC; wr;
int7 MAR=OxFF; rd;
int8 OPC[0]=1;
int9 PC=MDR; fetch;
int10
Perche' occorre far cio'?
Commentare le microistruzioni descrivendo cosa realizzano.
(b) Supponiate di avere a disposizione in IJVM un'istruzione GETCH che pone sullo Stack il primo elemento del buffer circolare relativo alla realizzazione di I/O con interruzioni di cui al punto 2(b). Scrivere un metodo IJVM che, preso un numero n non negativo, calcoli quanti sono gli elementi uguali 0 tra i primi n del buffer circolare (tali n elementi vengono ovviamente eliminati dal buffer tramite la GETCH).
Esercizio 4
(a) Discutere brevemente del concetto di "priorita'" nel contesto della gestione dell'I/O con interruzioni.
(b) Considerando la modalita' di implementazione di operazioni di Input/Output in Mic-1 vista a lezione (praticamente il punto 2(b) sopra), supponiamo che ad un dato istante si abbia la seguente situazione all' interno del controller della tastiera:
	               IP            RDY
		  CSR  0000000000000001       BR 0110111000000000
  
Che cosa e' probabile che sia successo negli istanti precedenti? Cosa accadra' probabilmente negli istanti successivi?