Esercizi relativi all`architettura MIC-1 1. Nel MIC

Transcript

Esercizi relativi all`architettura MIC-1 1. Nel MIC
Esercizi relativi all’architettura MIC-1
1. Nel MIC-1 ci vuole 1 ns per preparare MIR, 1 ns per mettere il contenuto di un registro sul bus B,
3 ns per far funzionare l’ALU e lo shifter, e 1 ns perchè i risultati ritornino ai registri. La larghezza
dell’impulso di clock è di 2 ns. Questa macchina può funzionare a 100 M Hz? E a 150 M Hz?
Quale è la frequenza massima di clock a cui la macchina può funzionare correttamente ?
Soluzione:
Il data path occupa 6 ns così ripartiti:
- 1 ns per preparare MIR;
- 1 ns per mettere il contenuto di un registro sul bus B;
- 3 ns per far funzionare l’ALU e lo shifter;
- 1 ns perchè i risultati ritornino ai registri.
Ai 6 ns del data path bisogna aggiungere i 2 ns della larghezza dell’impulso di clock. Quindi, per
far funzionare correttamente la macchina, il periodo del clock deve essere superiore a 8 ns.
A 100 M Hz, il periodo del clock è:
T =
1
1
=
= 10 ns
100 · 106
108
ed è quindi sufficiente a far funzionare correttamente la macchina.
A 150 M Hz, il periodo del clock è:
T =
1
1
=
= 6.667 ns
150 · 106
1.5 · 108
e non è, quindi, sufficiente a far funzionare correttamente la macchina.
Dato che un ciclo di clock sull’hardware della macchina impiega (6+2) = 8 ns, la frequenza massima
di clock sarà:
F =
1
1
=
= 125 M Hz
T
8 · 10−9
2. Dare due diverse traduzioni IJVM per la seguente istruzione, e commentare la loro validità:
i = j +k +4
Soluzione: I traduzione:
1
ILOAD
ILOAD
IADD
BIPUSH
IADD
ISTORE
j
k
4
i
/
/
/
/
/
/
carica j sullo stack
carica k sullo stack
carica j+k sullo stack
carica 4 sullo stack
carica j+k+4 sullo stack
memorizza il risultato in i
/
/
/
/
/
/
carica j sullo stack
carica k sullo stack
carica 4 sullo stack
carica k+4 sullo stack
carica j+k+4 sullo stack
memorizza il risultato in i
II traduzione:
ILOAD
ILOAD
BIPUSH
IADD
IADD
ISTORE
j
k
4
i
ATTENZIONE! - se j ha valore negativo e k positivo, l’operazione j + k + 4 potrebbe essere ammessa, ma il
risultato intermedio k + 4 dare overflow. In questo caso la seconda soluzione darebbe errore.
3. Quanto tempo occorre (espresso in ns) perchè una machhina MIC-1 con clock a 200 M Hz esegua l’istruzione
JAVA:
i = j +k
Soluzione: Traduco l’istruzione in linguaggio IJVM e conto quante micrositruzioni occorrono per la sua
esecuzione:
ILOAD
ILOAD
IADD
ISTORE
Totale
j
k
i
/
/
/
/
impiega
impiega
impiega
impiega
6
6
4
7
microistruzioni
microistruzioni
microistruzioni
microistruzioni
23 microistruzioni
Con un clock a 200 M Hz, ogni microistruzione impiega un tempo pari a un periodo del clock:
durata 1 microistruzione =
1
= 5 ns
200 · 106
Per cui il tempo totale per l’esecuzione della istruzione JAVA data è:
5 · 23 = 115 ns
4. Esprimere in linguaggio MAL cosa esegue la seguente µistruzione MIC-1 (codificata per semplicità in esadecimale):
0000C 2103
Soluzione: La decodifica (in binario) dei vari campi della µistruzione produce:
2
NEXTADDR
JAM
SH
ALU
C
W/R
B
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0 0 0 0 0 0
0
1 1 0 0
1 0 0 0 0 1 0
0
1 1
il cui significato in MAL è:
TOS = MDR = MBRU and H ; GOTO 0x000
5. Si voglia aggiungere all’insieme di istruzioni ISA-IJVM la nuova istruzione POPTWO che toglie due parole
dalla cima stack. Scrivere il microinterprete MIC-1 per questa nuova istruzione.
Soluzione:
poptwo1
poptwo2
poptwo3
poptwo4
SP=SP-1
MAR=SP=SP-1; rd
TOS=MDR; goto Main1
6. Si voglia aggiungere all’insieme di istruzioni ISA-IJVM la nuova istruzione:
BI2P U < const16 >
che fa il push sullo stack di < const16 > che è una costante con segno a 16 bit (2 byte).
Scrivere il microinterprete MIC-1 per questa nuova istruzione.
Soluzione:
bi2pu1
bi2pu2
bi2pu3
bi2pu4
bi2pu5
PC=PC+1; fetch
H=MBR << 8
MDR=TOS=MBRU OR H
MAR=SP=SP+1; wr
PC=PC+1; fetch; goto Main1
7. Il risultato ottenuto con la nuova istruzione BI2P U < const16 >, potrebbe anche essere ottenuto applicando
alla istruzione BIP U SH il prefisso W IDE, con l’intesa che W IDEBIP U SH < const16 > ha un operando
con segno a 16 bit (concordemente a quanto succede per W IDEILOAD e W IDEIST ORE).
Scrivere il microinterprete MIC-1 per questa nuova istruzione.
Soluzione:
3
wide1
PC=PC+1; fetch; goto (MBR or x100)
widebipush1
widebipush2
widebipush3
widebipush4
widebipush5
PC=PC+1; fetch
H=MBR << 8
MDR=TOS=MBRU OR H
MAR=SP=SP+1; wr
PC=PC+1; fetch; goto Main1
Discutere la differenza fra le due implementazioni.
8. Si vuole aggiungere all’insieme ISA-IJVM la nuova istruzione:
BISH8P U < byte >
che shifta di 1 byte verso sinistra la parola affiorante sullo stack e aggiunge l’operando < byte > nel byte
meno significativo. Scrivere il microinterprete MIC-1 per questa nuova istruzione.
Soluzione:
bish8pu1
bish8pu2
bish8pu3
bish8pu4
bish8pu5
MAR=SP
H=TOS << 8
TOS=MDR=MBRU OR H;wr
PC=PC+1;fetch
goto Main1
//
//
//
//
//
MAR punta alla cima dello stack
shifta di 1 byte parola affiorante
carica operando e aggiorna TOS
incrementa PC e fetch
termina
4