Architettura degli elaboratori, 9 Febbraio 2010

Per A.A. precedente a 08/09: esercizi 1-4
Per A.A. 08/09: esercizi 1-5

(Indicare sul compito se si e' del 08/09 o precedenti)

Non e' ammesso l'uso di alcun testo, appunti o calcolatrici. Le risposte vanno scritte nel foglio di bella copia. Si raccomanda la massima SINTETICITA'. L'eccessiva verbosita' verra' considerata negativamente.
  • Gli iscritti alla laurea triennale debbono essersi prenotati sul portale studenti del nostro ateneo. Se cio' non e' stato fatto, comunicatelo immediatamente al docente o all'assistente in aula.
  • Se si passa lo scritto, si deve obbligatoriamente sostenere anche un colloquio orale. Date ed orari degli orali verranno indicati nella pagina dei risultati e sul Forum.
  • Esercizio 1   Si consideri il seguente generico programma assembly per il calcolo della somma degli elementi di un array di 1024 interi memorizzati a partire dall'indirizzo A (ogni intero e' memorizzato in una parola di 4 byte). Riscrivere tale programma utilizzando anche la modalita' di indirizzamento indicizzato (Indexed addressing).
          MOV R1,#0        ;aggiorna la somma in R1, posto inizialmente a 0
          MOV R2,#A        ;R2=indirizzo dell'array A
          MOV R3,#A+4096   ;R3=indirizzo della prima parola dopo l'array 
    ciclo ADD R1,(R2)      ;recupera l'operando attraverso R2, registro indiretto
          ADD R2,#4        ;incrementa R2 di una parola (4 byte)
          CMP R2,R3        ;abbiamo gia' finito?
          BLT ciclo        ;se R2 < R3 non abbiamo finito, quindi si continua
    
    L'indirizzamento indicizzato si indica con C(R), dove C e' una costante ed R un registro.
    Commentare il codice. Codice non commentato non verra' valutato.
    Esercizio 2   Qual e' la funzione di un tipico PIO chip?
    Descrivere i due modi in cui un PIO chip puo' venire selezionato. Fornire un esempio semplice ma dettagliato di utilizzo di uno di tali modi.
    Esercizio 3
    Nelprogramma del corso e' presente un esempio di I/O gestito ad interruzioni per la macchina del livello ISA del Tanenbaum. In tale esempio il controllo della presenza di interruzioni e' realizzato dall'interprete microprogrammato estendendo il microinterprete del Tanenbaum con le seguenti microistruzioni
    int1 if opc[15] goto main1; 
    
    int2 if (not(opc[0]) and not(opc[1]) ... and not(opc[7])) 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[15]=1; 
    
    int9 PC=MDR; fetch; 
    
    int10 
    
  • Descrivere cosa fanno (e perche') tali microistruzioni. Non tutte le microistruzioni sono miscroistruzioni Mic-1. Quali non lo sono? perche' sono state aggiunte?
  • Modificare il precedente microcodice affiche' il gestore delle interruzioni venga eseguito ad interruzioni abilitate.
  • Dire brevemente e informalmente come si potrebbe far si che il gestore gestisca le interruzioni supponendo che esistano delle priorita' tra i vari devices.
  • Perche' il gestore delle interruzioni deve necessariamente essere realizzato con un segmento di codice IJVM e non in Mic-1?
  • E' possibile poter far si che il controllo della presenza di interruzioni sia realizzato in hardware? Se si, descrivere informalmente un modo possibile di farlo, se no, giustificare la risposta negativa.
    Esercizio 4
    In un processore con parallelismo di tipo pipeline, cosa si intende per latenza (latency) e larghezza di banda del processore (processor bandwidth)?
    Fare le dovute ipotesi e fornire latenza e larghezza di banda per un processore pipeline con n fasi e ciclo di clock di T nsec.
    Cos'e' un processore superscalare? e' anch'esso di tipo pipeline?
    Esercizio 5
    Cosa avviene in una memoria cache a corrispondenza diretta (direct-mapped cache) in caso di cache miss?
    Si supponga di avere una memoria cache a corrispondenza diretta composta da 8 linee, ciascuna avente porzione Dati di 4 parole.
    Supponiamo che il processore indirizzi i byte della memoria principale mediante indirizzi di 9 bit abcdefghi aventi il seguente formato: i bit ab per il tag, i bit cde per la linea, i bit fg per la parola, i bit hi per il byte. Si supponga inoltre che inizialmente la cache sia vuota (tutti i bit di validita', Valid, a 0) e che il processore esegua la seguente sequenza di indirizzamenti:
    100011000, 100111001, 110011000, 101010011, 100000000, 110010011, 001010001, 110100011,  010001100, 011010011
    Per ogni indirizzamento della sequenza dire, giustificando la risposta, se avviene un cache hit o un cache miss.
    Risposte prive di giustificazione non verranno valutate.