Architettura I e laboratorio, 9 Ottobre 2002

Non e' ammesso l'uso di alcun testo, appunti o calcolatrici. Le risposte vanno scritte nel foglio di bella copia. Massima SINTETICITA'. L'eccessiva verbosita' verra' considerata negativamente.

Esercizio 1
(a) Elencare alcuni aspetti che differenziano le architetture CISC da quelle RISC.
(b) Nel Tanenbaum e' evidenziata la frase
Hardware e Software sono logicamente equivalenti
Cosa intende l'autore con tale frase?
Esercizio 2
Qual e' il tempo medio di accesso al contenuto di locazioni di memoria in presenza di memoria cache?
Si supponga che c sia il tempo di accesso alla cache, h sia l'hit ratio (percentuale di successo) ed m sia il tempo di accesso alla memoria principale.

Esercizio 3
Supponiamo di avere due dispositivi A e B, collegati ad un Bus.
L'arbitraggio di tale Bus e' centralizzato con una linea di Request ed una di Grant per ogni dispositivo (come l'arbitraggio del PCI Bus, per intenderci).
Supponiamo che la linea di Request di A sia collegata al bit piu' significativo (piu' a sinistra) del registro SP di Mic-1, mentre la linea di Grant al bit meno significativo (piu' a destra) di SP. Le linee Request e Grant di B sono invece collegate ai bit rispettivamente piu' e meno significativi di LV.
Realizzare l'Arbitro come programma Mic-1.
(Fare in modo che il dispositivo A abbia priorita' maggiore di quello B per l'acquisizione del Bus;
Quando un dispositivo non ha piu' bisogno del Bus resetta a 0 la linea request)

Esercizio 4
Si consideri il seguente metodo IJVM.
.method boh(n)
	ILOAD n
	IFEQ et
	BIPUSH 1
	ILOAD n
	IF_ICMPEQ et
	LDC_W objref
	ILOAD n
	BIPUSH 2
	ISUB
	INVOKEVIRTUAL boh
	IRETURN
    et: ILOAD n
	IRETURN
.end-method
  • Dire cosa calcola.
  • Ricopiare il codice commentandolo in modo sintetico
  • Scrivere del codice IJVM che corrisponda ad una chiamata del metodo boh che non ne faccia terminare l'esecuzione.
    Esercizio 5
    Consideriamo un linguaggio macchina in cui sia presente l'istruzione JMPIFEQZ R label, il cui significato sia: salta a label se il valore nel registro R e' zero.
    Supponiamo ora di avere un programma che contenga un ciclo che fa eseguire un certo numero di volte il codice seguente:
    ISTR1
    (*) JMPIFEQZ R1 L1
        ISTR2
    L1: ISTR3
        ISTR4 
    Supponiamo che il programma venga eseguito su una macchina con pipeline che utilizza la tecnica della predizione dinamica dei salti, con una History Table con due bit di predizione.
    In quanto segue, per ogni ciclo i (i=1,..6) sono indicati i valori assunto dal registro R1 quando l'istruzione (*) viene eseguita.
    Ricopiare quanto scritto sotto aggiungendo il valore dei due bit di predizione per l'istruzione (*) dopo la sua esecuzione e l'informazione riguardo l'esecuzione corretta o meno del salto.
    Prima del ciclo 1 supporre che i bit di predizione per (*) siano 00.
    Ciclo Contenuto di R1 Prediction bits
    per l'istruzione (*)
    Salto eseguito
    correttamente?
    1 0 _ _ ______
    2 3 _ _ ______
    3 0 _ _ ______
    4 0 _ _ ______
    5 1 _ _ ______
    6 0 _ _ ______