1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Spiegare i diversi tipi di indirizzamento usati dalle istruzioni del set MIPS ed indicare quale di essi è usato nell'istruzione sw $s0, 4($t2). 3. Spiegare a cosa corrisponde il seguente frammento di codice commentando le istruzioni presenti e dire qual è il valore del registro $s1 prima di eseguire l istruzione j exit, nell ipotesi che inizialmente $s1=0, $s2=$s3=4, $s4=1, $s5=1000 e la memoria sia organizzata a partire dall indirizzo 1000 come mostrato in tabella. Loop: add $t1, $s3, $s3 add $t1, $t1, $t1 add $t1, $t1, $s5 lw $t0, 0($t1) add $s1, $s1, $t0 add $s3, $s3, $s4 beq $s3, $s2, Loop exit: j exit Indirizzo Cella di memoria 1000 70 1004 1920 1008 2 1012 3101 1016 25 1020 7135 1024 77 1028 4900
1. Si calcoli la quantità 5/3 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Si descrivano i formati possibili delle istruzioni MIPS facendo per ciascuno di essi l esempio di una istruzione corrispondente. 3. Spiegare a cosa corrisponde il seguente frammento di codice commentando le istruzioni presenti e dire qual è il valore del registro $s1 prima di eseguire l istruzione j exit, nell ipotesi che inizialmente $s1=0, $s2=$s3=2, $s4=1, $s5=1000 e la memoria sia organizzata a partire dall indirizzo 1000 come mostrato in tabella. Loop: add $t1, $s3, $s3 add $t1, $t1, $t1 add $t1, $t1, $s5 lw $t0, 0($t1) add $s1, $s1, $t0 add $s3, $s3, $s4 beq $s3, $s2, Loop exit: j exit Indirizzo Cella di memoria 1000 70 1004 1920 1008 2 1012 3101 1016 25 1020 7135 1024 77 1028 4900
1. Si calcoli la quantità 7*5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Si descriva la modalità di chiamata delle procedure con passaggio di parametri. 3. Spiegare a cosa corrisponde il seguente frammento di codice commentando le istruzioni presenti e dire qual è il valore del registro $s3 al termine del programma, nell ipotesi che inizialmente $s3=0, $s4=4, $s5=70 e $s6=1000 e la memoria sia organizzata a partire dall indirizzo 1000 come mostrato in tabella. Indirizzo Cella di memoria 1000 70 1004 1920 1008 2 1012 3101 1016 25 1020 7135 1024 77 1028 4900 Loop: add $t1, $s3, $s3 add $t1, $t1, $t1 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, Exit add $s3, $s3, $s4 j Loop Exit:
1. Si calcoli la quantità 7*(-3) utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Si descriva l architettura di un ALU a 1 bit necessaria per implementare operazioni di AND/OR, somma e sottrazione, set less than su dati a 32 bit. 3. Spiegare a cosa corrisponde il seguente frammento di codice commentando le istruzioni presenti e dire qual è il valore del registro $s3 al termine del programma, nell ipotesi che inizialmente $s3=2, $s4=4, $s5=2 e $s6=1000 e la memoria sia organizzata a partire dall indirizzo 1000 come mostrato in tabella. Loop: add $t1, $s3, $s3 add $t1, $t1, $t1 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, Exit add $s3, $s3, $s4 j Loop Exit: Indirizzo Cella di memoria 1000 70 1004 1920 1008 2 1012 3101 1016 25 1020 7135 1024 77 1028 4900
1. Si spieghi la gestione delle eccezioni in una tipica architettura MIPS. 2. Si spieghi come realizzare l istruzione lw $s1,cost($s2) utilizzando l unità di elaborazione multi-ciclo vista a lezione (motivando sullo schema allegato in fotocopia il datapath seguito). 3. Si descrivano i campi di una microistruzione e se ne spieghi il funzionamento nel caso in cui si debba eseguire una scrittura di un dato in memoria.
1. Illustrare le differenze tra eccezioni e interrupt. Spiegare cosa si intende per gestione vettorizzata degli interrupt. 2. Si spieghi come realizzare l istruzione beq $s1,$s2,etichetta utilizzando l unità di elaborazione multi-ciclo vista a lezione (motivando sullo schema allegato in fotocopia il datapath seguito). 3. Si descrivano i campi di una microistruzione e se ne spieghi il funzionamento nel caso in cui si debba eseguire una lettura di un dato in memoria.
1. L istruzione li $a0, 12345678 è un istruzione standard del processore MIPS? Se no, a quali istruzioni corrisponde e come viene eseguita? 2. Si descriva il formato IEEE 754 per la rappresentazione in virgola mobile in singola e doppia precisione. In particolare si rappresenti il numero -5. 3. Si spieghi come realizzare istruzione addi $s1,$s2,costante utilizzando l unità di elaborazione multi-ciclo vista a lezione (aggiungendo, se è il caso, unità funzionali e segnali di controllo necessari allo schema allegato in fotocopia o motivando su di esso il datapath seguito). 4. Si scriva una sequenza di istruzioni MIPS in grado di implementare la pseudo istruzione abs $t2, $t3 che pone nel registro $t2 il valore assoluto del valore contenuto nel registro $t3. 5. Dire a cosa corrisponde la seguente sequenza di codice. Name: Move $t0, Szero Loop: add $t1, $t0, $t0 add $t1, $t1, $t1 add $t2, $a0, $t1 sw $zero, 0($t2) addi $t0, $t0, 1 slt $t3, $t0, $a1 bne $t3, $zero, Loop jr $ra 6. Si spieghi il funzionamento dell unità Carry Look Ahead Adder spiegandone l utilità.
1. Si descriva il formato IEEE 754 per la rappresentazione in virgola mobile in singola e doppia precisione. In particolare si rappresenti il numero -5. 2. Si scriva una sequenza di istruzioni MIPS in grado di implementare la pseudo istruzione abs $t2, $t3 che pone nel registro $t2 il valore assoluto del valore contenuto nel registro $t3. 3. Dire a cosa corrisponde la seguente sequenza di codice. Name: Move $t0, Szero Loop: add $t1, $t0, $t0 add $t1, $t1, $t1 add $t2, $a0, $t1 sw $zero, 0($t2) addi $t0, $t0, 1 slt $t3, $t0, $a1 bne $t3, $zero, Loop jr $ra
1. Si spieghi come realizzare istruzione addi $s1,$s2,costante utilizzando l unità di elaborazione multi-ciclo vista a lezione (aggiungendo, se è il caso, unità funzionali e segnali di controllo necessari allo schema allegato in fotocopia o motivando su di esso il datapath seguito). 2. Si descrivano i segnali di controllo dell unità di elaborazione allegata in fotocopia dettagliandone il funzionamento in relazione alle diverse istruzioni che possono essere eseguite. 3. Si scriva la sequenza di microistruzioni per eseguire le fasi di fetch e di decodifica di una qualunque istruzione mettendone in evidenza i vari campi e spiegandone il significato.
1. Come viene eseguita l istruzione bne $t2, $t1, label se il suo indirizzo è 0x40001234 e label corrisponde a 0x40122468? 2. Quale numero decimale è rappresentato dalla seguente parola: 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sapendo che è conforme allo standard IEEE 754? 3. Si spieghi come realizzare istruzione andi $s1, $s2, costante utilizzando l unità di elaborazione multi-ciclo allegata in fotocopia ed aggiungendo, se è il caso, unità funzionali e segnali di controllo. 4. Si scriva una sequenza di istruzioni MIPS in grado di implementare la pseudo istruzione sic $t2, $t3, $t4 che pone nel registro $t2 0 o 1 a seconda che la somma di $t3 e $t4 abbia generato riporto o meno. 5. Dire a cosa corrisponde la seguente sequenza di codice. Name: add $t8, $a1, $a1 add $t8, $t8, $t8 add $t8, $a0, $t8 lw $t4, 12($t8) lw $t5, 16($t8) sw $t5, 0($t8) sw $t4, 4($t8) jr $ra 6. Si descriva la macchina a stati finiti per l implementazione dell istruzione add $s0, $s1, $s2 mettendo in evidenza il significato di ogni segnale di controllo da attivare (per il nome dei vari segnali di controllo, si faccia riferimento alla fotocopia allegata).
1. Si spieghi come deve esssere modificata l unità di elaborazione multi-ciclo allegata in fotocopia per gestire le eccezioni di una tipica architettura MIPS. 2. Si descriva la macchina a stati finiti per l implementazione dell istruzione add $s0, $s1, $s2 mettendo in evidenza il significato di ogni segnale di controllo da attivare (per il nome dei vari segnali di controllo, si faccia riferimento alla fotocopia allegata). 3. Si spieghi come realizzare istruzione andi $s1, $s2, costante utilizzando l unità di elaborazione multi-ciclo allegata in fotocopia ed aggiungendo, se è il caso, unità funzionali e segnali di controllo.
1. Spiegare i diversi tipi di indirizzamento usati dalle istruzioni del set MIPS ed indicare quale di essi è usato nell'istruzione jal proc1? 2. Si consideri il formato IEEE 754 per la rappresentazione in virgola mobile in singola precisione e si rappresenti il numero 21,75. 3. Come si distinguono le varie istruzioni di tipo R che hanno codice operativo uguale a 0? Quali segnali di controllo (considerando l unità di elaborazione multi-ciclo allegata in fotocopia) si attivano in questo caso? 4. Si scriva la sequenza di microistruzioni per eseguire l istruzione subi $s1, $s2, costante (fasi di fetch e di decodifica comprese) mettendone in evidenza i vari campi e spiegandone il significato. 5. Dire a cosa corrisponde la seguente sequenza di codice. scr: red: loop: err: li $t0, 0x10000000 lui $t1, 0x1001 sw $t0, 0($t0) addi $t0, $t0, 4 bne $t1, $t0, scr lui $t0, 0x1000 lw $t2, 0($t0) sub $t3, $t0, $t2 bne $t3, $zero, err addi $t0, $t0, 4 bne $t1, $t0, red j loop j err
1. Spiegare il significato delle seguenti direttive per l assemblatore:.asciiz prova.byte 0x33, 0x45, 0xFF.text.word 20. 2. Si consideri il formato IEEE 754 per la rappresentazione in virgola mobile in singola precisione. Si rappresenti il numero 2,75 e si esegua la moltiplicazione binaria di 2,75 con 0,5. 3. Si scriva la sequenza di microistruzioni per gestire un eccezione dovuta ad overflow mettendone in evidenza i vari campi e spiegandone il significato (si aggiungano, se è il caso, nuovi campi, motivandone l introduzione). 4. Il seguente frammento di codice lavora su un vettore e genera due valori rilevanti nei registri $v0 e $v1. Si assuma che il vettore sia lungo 5000 parole, con l indice che varia da 0 a 4999, che il suo indirizzo di base si trovi in $a0 e la sua dimensione (5000) in $a1. Commentare il codice mettendo in evidenza che cosa viene restituito in $v0 e $v1. add $a1, $a1, $a1 add $a1, $a1, $a1 add $v0, $zero, $zero add $t0, $zero, $zero esterno: add $t4, $a0, $t0 lw $t4, 0($t4) add $t5, $zero, $zero add $t1, $zero, $zero interno: add $t3, $a0, $t1 lw $t3, 0($t3) bne $t3, $t4, salta addi $t5, $t5, 1 salta: addi $t1, $t1, 4 bne $t1, $a1, interno slt $t2, $t5, $v0 bne $t2, $zero, avanti add $v0, $t5, $zero add $v1, $t4, $zero avanti: addi $t0, $t0, 4 bne $t0, $a1, esterno 5. Descrivere l architettura interna dell unità di controllo che implementa la macchina a stati finiti usata per generare i segnali di controllo corrispondenti all istruzione decodificata. Spiegare in particolare il motivo dell utilizzo di due memorie ROM.
1. Come si possono recuperare resto e quoziente dopo una divisione? 2. Quale numero decimale è rappresentato dalla seguente parola: 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 1 1 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sapendo che è conforme allo standard IEEE 754? 3. Si descriva l architettura di un ALU a 1 bit necessaria per implementare operazioni di AND/OR, somma e sottrazione, set less than su dati a 32 bit. 4. Dire quale funzione viene svolta dalla seguente sequenza di codice. Si supponga che nel registro $a0 sia contenuto un numero intero (per es. 10). func: sub $sp, $sp, 8 sw $ra, 4($sp) sw $a0, 0($sp) slt $t0, $a0, 1 beq $t0, $zero, L1 add $v0, $zero, 1 add $sp, $sp, 8 jr $ra L1: sub $a0, $a0, 1 jal func lw $a0, 0($sp) lw $ra, 4($sp) add $sp, $sp, 8 mult $v0, $a0, $a0 jr $ra 5. L unità di elaborazione mostrata in figura funzionerebbe ancora se si togliesse il segnale di controllo MemtoReg sostituendolo nel multiplexer corrispondente con il segnale MemRead? Motivare la risposta.