Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Prova 1 - 6/5/2021
1 a) Si programmi il metodo in JVY che restituisce il valore assoluto di un intero (abs(n))
abs(n) = if (n < 0) return (-n), else return n; (per ottenere -n: 0-n).
Due possibili implementazioni
- .method abs(n)
- .var
- .end-var
- ILOAD n
- DUP
- IFLT cambioSegno
- IRETURN
- cambioSegno:
- BIPUSH 0
- SWAP
- ISUB
- IRETURN
- .end-method
- .method abs(n)
- .var
- .end-var
- ILOAD n
- IFLT cambioSegno
- ILOAD n
- IRETURN
- cambioSegno:
- BIPUSH 0
- ILOAD n
- ISUB
- IRETURN
- .end-method
b) Si scriva il programma JVY corrispondente al seguente codice C:
int y = 12;
int x = 10-k;
int y = abs(x)+2-y;
(k = costante definita nel programma)
- .constant
- OBJREF 0 x00
- k 42
- .end-constant
- .main
- .var
- x
- y
- .end-var
- BIPUSH 12
- ISTORE y
- BIPUSH 10
- LDC-W k
- ISUB
- ISTORE x
- LDC_W OBJREF
- ILOAD x
- INVOKEVIRTUAL abs
- BIPUSH 2
- IADD
- ILOAD y
- ISUB
- ISTORE y
- HALT
- .end-main
2.2
Si estenda il micro-interprete MIC-1 per JVM con l'istruzione:
CODICE OPERATIVONOME MNEMONICOSEMANTICA OPERATIVA0 x 88IINC1 varnumIncremento di 1 la variabile locale con indice varnumDirettiva per il compilatore: 0 x 88 IINC1 varnum
Direttiva per il caricamento del microprogramma: label iinc11 0 x 88
Se invece di iinc1 si indica iinc, si va a creare conflitto con la direttiva relativa a IINC
Sequenza di microistruzioni:
- iinc11 H = LV // MBR contains index, copy LV to H
- iinc12 MAR = H+BRU + H; rd; // Copia LV index to MAR, read variable
- iinc13 PC = PC + 1; Fetch; // Fetch next opcode
- iinc14 MDR = MDR + 1; wr; goto Main 1 // MDR++, update variable
D) Discutere gli eventuali vantaggi e svantaggi dell'introduzione della IINC1 rispetto all'uso dell'istruzione IINC varnum 1.
→ MANCANTE
a) Qual è la durata, misurata in cicli di clock, dell'esecuzione delle due istruzioni?
- IINC: 6 (+1 per Main1)
- IINC1: 4 (+1 per Main1)
2.3
a) Descrivere il funzionamento della Instruction Fetch Unit (IFU) di MIC-2
L'IFU è una componente che viene inserita nell'architettura per ridurre il carico alla ALU. Questa interpreta ogni OPODE, determinando i parametri, richiesti per piazzarli in un registro in modo che l'istruzione possa essere eseguita. La IFU, al posto di un solo registro MBR a 8 bit, ce ne sono due: MBR1 a 8 bit e MBR2 a 16 bit, che servono da interfacce con il bus B: MBR1 e MBRU. L'IFU è responsabile del prelievo di un flusso di byte e ha un proprio registro IMAR per indirizzare la porzione della memoria in cui si trova la parola da prelevare. Funziona in modo asincrono con D & EU.
b) Illustrare come cambiano i valori dei registri PC e IMAR in corrispondenza delle transizioni nell'automa a stati finiti che descrive il comportamento di IFU.
- 1) Prelievo di una parola
- 2) MBR1: PC = PC + 1
- 3) MBR2: PC = PC + 2
es 3
2
Data un'architettura superscalare con istruzioni a tre operandi del tipo R dest = R source1 OP R source2 (es. R1=R2+R3), descrivere le possibili dipendenze tra istruzioni, fornendo degli esempi.
Le possibili dipendenze sono:
- RAW: read after write
- R3=R1+R2
- R1=R1*R3
si deve aspettare di leggere R3 dopo che l'istruzione (1) ne abbia assegnato il valore.
- WAR: write after read
- R1=R1*R3
- R3=R5/R6
si può (ri)assegnare un valore a R3 solo dopo che l'istruzione (2) abbia letto il valore precedentemente assegnato dall'istruzione (1).
- WAW: write after write
- R3=R1+R2
- R3=R1-R5
si può (ri)assegnare un valore a R3 solo dopo il termine dell'istruzione (1).
D) Indicare quali dipendenze possono essere risolte tramite la tecnica della rinomina dei registri WAR o WAW, ad esempio:
- WAR
- R1=R1*R3
- S1=R5/R6
- WAW
- R3=R1+R2
- S1=R1-R5
es 4
Una memoria virtuale ha pagine logiche di 1kbyte. Le immagini dei processi hanno 232 indirizzi al byte. La memoria fisica è composta da 216 frame:
- Di quante pagine logiche è composta l'immagine di un processo? Di quanti byte è composta la memoria?
- 232/212 = 220 pagine codificabili con 20 bit
- 216 locazioni indirizzabili con 16 bit
- Data una tabella delle pagine che comprende le seguenti corrispondenze pagine virtuali = frame di memoria:
- 0 x 0001 → 0 x A 0 x 0012 → 0 x B 0 x 0114 → 0 x 2 0 x 0022 → 0 x 1
Indicare e motivare quali delle seguenti traduzioni indirizzo virtuale - locazione di memoria sono corrette.
a) Descrivere come sono realizzate su MIC-1 le chiamate a metodo JVM. Spiegare le fasi di
prologo e epilogo delle chiamate di procedura ed indicare come sono realizzate in JVM su MIC-1.
- Il codice del metodo chiamante (o del main) carica sullo stack uno o costante che ha
- il ruolo di “placeholder” per il primo elemento del record di attivazione (destinato a
- memorizzare il puntatore alle celle dove sono salvati i valori di PC e di LV).
- Il codice del metodo chiamante carica sullo stack i parametri attuali della chiamata.
- Il codice del metodo chiamante invoca l’istruzione INVOKEVIRTUAL la cui esecuzione
- realizza la fase di prologo (alloca lo spazio per la memorizzazione delle variabili locali e
- salva le informazioni necessarie per riprendere l’esecuzione del chiamante dopo il
- termine del metodo (cioè SP e LV).
- Al termine dell’esecuzione del codice del metodo chiamato invoca l’istruzione
- IRETURN (la cui esecuzione realizza le fase di epilogo della chiamata) che ripristina
- lo stack (mettendo in cima il risultato del metodo) ed i valori di PC ed LV del
- chiamante precedentemente salvati.
b) Illustrare come evolve lo stack nell’esecuzione della seconda istruzione compresa l’esecuzione
della chiamata al metodo f. Si assuma che N valga 5.
Il metodo adotta lo schema dell’ I/O programmato con attesa attiva. Infatti, fino a quando non è premuto nessun tasto l’esecutore continuerà ad iterare eseguendo le istruzioni: 1 - 2 - 3 - 5 - 6.
- L’istruzione IN carica sulla stack il valore 0 ( = NULL) per cui eseguendo l'istruzione IFEQ l’esecutore esegue il salto.
- Nel momento in cui si sollecitano un tasto l’istruzione IN carica sulla stack un valore differente da 0, per cui l’esecutore non effettua il salto ed esegue l’istruzione RETURN.
Il modo per incrementare l'efficienza di una CPU è quello di farle eseguire più istruzioni in parallelo. Tra le possibili modalità per ottenere il parallelismo a livello di emettere più istruzioni per ciclo di clock. Due tipi di CPU che adottano questa modalità sono i processori superscalari e i processori VLIW (Very Long Instruction Word). Descrivere e comparare queste due tecniche.
VEDI PAG. 563
a) Ricordando che nelle architetture di tipo load/store le uniche istruzioni in cui si accede allamemoria sono le istruzioni di load (copia di un dato da una locazione di memoria ad unregistro) e di store (copia di un dato da un registro ad una locazione di memoria), allora:
- È un'istruzione adeguata: copio un dato dalla locazione di memoria puntata dal registroR2 nel registro R1
- È un'istruzione adeguata: copio un dato dal registro R1 alla locazione di memoria#0xABCD1234 (indirizzamento diretto)
- Non è un'istruzione adeguata, in quanto l'istruzione di somma ADDR ha comedestinazione una locazione di memoria.
- È un'istruzione adeguata perché l'istruzione di somma ADDR coinvolge solo registri.
b) Descrivere il ruolo della Tabella delle Pagine, in un'architettura dotata di memoria virtualerealizzata secondo il metodo della paginazione. Fornire dagli esempi.
La tabella delle pagine ha il compito di memorizzare le informazioni necessarie a realizzarel'associazione tra gli indirizzi virtuali e le locazioni fisiche. Per ogni processo è mantenutauna tabella delle pagine che indica, per ciascuna pagina, dove spazio di indirizzi del processo,se si trova o meno in memoria RAM e se si trova in memoria, in quale frame è allocata.Tali informazioni sono utilizzate dalla MMU (Memory Management Unit) per la traduzionedegli indirizzi, nel caso in cui la pagina virtuale si trovi già in memoria e per causareuna trap di tipo page fault, nel caso in cui sia necessario portare la pagina in memoria.
B. Se la dimensione delle pagine è di 4096 byte, gli indirizzi virtuali sono di 30 bit e la memoriaha 128 frame:
- Quante posizioni/entry deve avere la tabella delle pagine?La tabella delle pagine deve avere tante entry quante sono le pagine virtuali in cui è divisal'immagine di un processo: in questo caso la dimensione dell'immagine è di 230 bytee la dimensione delle pagine è di 212 byte, per cui il numero di pagine è di 218(230/212) il numero di entry è pari a 218. La posizione in memoria le informazionirelative alla pagina virtuale n (corrispondente ai bit più significativi dell'indirizzo virtuale)
- Quanti bit sono necessari per codificare le informazioni da memorizzare in ogni posizione? - 1 bit per indicare se la pagina virtuale si trova o meno in memoria currale. - una sequenza di bit per codificare il frame di memoria in cui eventualmente è memorizzata la pagina virtuale. In questo caso, siccome la memoria ha 128 (=27) frame, la sequenza è lunga 7 bit. - quindi in totale ogni posizione occupa 8 bit.