UL/FRI/UNI-RI/ARS1/Kolokviji/2008-12-9
Iz E-študij, proste zakladnice študentskega znanja
|
Kolokvij z dne 09.12.2008
Čas pisanja: 75 minut.
|
Uradne rešitve: Slika:Kolres.pdf
1. naloga
Tekst prve naloge
a)
Program se izvede v N1*CPI1 urinih periodah, pri tem upoštevamo mešanico ukazov, podano v tabeli:
N1*CPI1 = 0,15*N1*8up + 0,2*N1*5up + 0,65*N1*6up
CPI1=0,15*8up+0,2*5up+0,65*6up
CPI1=6,1
b)
Primerjamo TCPE1 in TCPE2. Vemo TCPE1=TCPE2+10ms; N2=0,95*N1
N1*CPI1/fCPE=N2*CPI2/fCPE+10ms
N1*CPI1=0,95*N1*CPI2+10ms*fCPE
…potrebujemo CPI2 iz točke c)
N1*6,1=0,95*6,26*N1+10ms*fCPE
0,15N1=10ms*fCPE
N1=60.000.000 ukazov
N2=0,95*N1=57.000.000 ukazov
c)
Spremenjeni program se izvede v N2*CPI2 urinih periodah. Število posameznega tipa ukazov je povezano s prvotnim programom.
Ker ima novi program 5%ukazov manj, in smo namesto lw+add uvedli novi add, je število ukazov v novem programu tako:
N2=0,1*N1 + 0,15*N1 + 0,05*N1 + 0,65*N1
Vemo tudi N2 = 0,95*N1. Spremenjeni program se torej izvede v 0,95*N1*CPI2 urinih periodah:
0,95*N1*CPI2 = 0,1*N1*8up + 0,15*N1*5up + 0,05*N1*10up + 0,65*N1*6up
CPI2=(0,1*8up+0,15*5up+0,05*10up+0,65*6up)/0,95
CPI2=5,95/0,95=6,26
2. naloga
Tekst druge naloge
Rešitev:
GCD: SW 0(R30), R31 ; shranimo povratni naslov
SUBUI R30,R30,#4
SW 0(R30), R1 ; shranimo uporabljene registre
SUBUI R30,R30,#4
BEQ R24,VRNI_B ; if a = 0 return b
ZANKA: BEQ R25,VRNI_A ; while b <> 0
SGTU R1, R24, R25 ; if a > b
BEQ R1, SKOK
SUBU R24,R24,R25 ; a > b ! -> a = a - b
BEQ R0, ZANKA
SKOK: SUBU R25,R25,R24 ; a <= b ! -> b = b - a
BEQ R0, ZANKA
VRNI_A: ADDU R25, R0, R24
VRNI_B: ADDU R28, R0, R25
ADDUI R30,R30,#4
LW R1,0(R30) ; obnovimo registre
ADDUI R30,R30,#4
LW R31,0(R30) ; obnovimo povratni naslov
J 0(R31) ; povratek v glavni program
3. naloga
Tekst tretje naloge
A = C0B80000(16) = 1 10000001 01110000000000000000000(2)
B = 80108000(16) = 1 00000000 00100001000000000000000(2)
A = -1.0111*2129=2+127 --> -1.0111 * 22 = -101.11 = -(4+1+0.5+0.25) = -5.75
B = 80.00100001*2-126 - denormalizirano število
S = 0 (predznak rezultata)
Zmnožek mantis:
1.0111 * 0.00100001
---------------------
0.0000
00000
00000
10111
00000
00000
00000
00000
10111
---------------
0.001011110111
Eksponente pri množenju seštevamo in dobimo -126+2=-124. Ker pa mantisa
ni normalizirana, jo skušamo normalizirati. Pomaknemo jo lahko le za 2
mesti v levo, saj že spet dobimo eksponent 8126. Rezultat je tako spet
denormalizirano število in v polju za eksponent so ničle.
Mantisa: 0.1011110111; v polje mantise gre torej 1011110111
rezultat:
C = 0 00000000 10111101110000000000000(2) = 005EE000(16)
C = 0.1011110111 * 2-126 - denormalizirano število
4. naloga
Tekst četrte naloge
Tu je prostor za rešitev