AOR1/Septembar 2022
- Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
1. zadatak
Postavka
[15p] Posmatra se procesor organizacije sa protočnom obradom dat na slici 1. Svaka faza izvršavanja instrukcije traje jednu periodu signala takta uključujući i fazu 2 u kojoj se čita iz registarskog fajla (Registers) i fazu 5 u kojoj se upisuje u registarski fajl (Registers).
- [5p] Objasniti za procesor sa slike 1 šta treba hardverski uraditi da bi se ili kompletno eliminisala ili svela na minimum potreba zaustavljanja instrukcije beqz u protočnoj obradi. Ako je neizbežno zaustavljanje protočne obrade, objasniti zbog čega je to potrebno uraditi i za koliko taktova treba zaustaviti protočnu obradu. Sekvenca instrukcija:
add R1, R2, R3 ;R1=R2+R3
beqz R1, 50 ;if(R1==0) goto PC+50
- [5p] Objasniti za procesor sa slike 1 šta treba hardverski uraditi da bi se ili kompletno eliminisala ili svela na minimum potreba zaustavljanja instrukcije beqz u protočnoj obradi. Ako je neizbežno zaustavljanje protočne obrade, objasniti zbog čega je to potrebno uraditi i za koliko taktova treba zaustaviti protočnu obradu. Sekvenca instrukcija:
lw R1, 0(R2) ;R1=MEM[R2+0]
beqz R1, 50 ;if(R1==0) goto PC+50
- [5p] Dati procesor treba da podrži i instrukciju uslovnog premeštanja
MOVZ RD, RS, RT(if (RS==0) RD=RT). Šta je potrebno izmeniti u procesoru sa slike 1 (nacrtati i objasniti) tako da se i ova instrukcija izvršava u 5 faza kao i ostale instrukcije. Šta je potrebno izmeniti u hardveru za prosleđivanje (tačka b) da bi se prosleđivanje ispravno obavljalo.
2. zadatak
Postavka
[15p] Posmatra se sistem sa standardnom protočnom obradom sa slike 1 kod koga postoji hardver za prosleđivanje, a u slučaju kada se u ID fazi detektuje da se radi o instrukciji skoka protočna obrada se zaustavlja sve dok se ne odredi da li je uslov skoka ispunjen i dok se ne sračuna adresa skoka. U slučaju da uslov skoka nije ispunjen nastavlja se izvršavanje započete instrukcije. Izvršava se sledeći programski segment:
ADDI R1, R1, #1 ;R1=R1+1
LW R2, (R1)0 ;R2=MEM[R1+0]
loop: ADDI R1, R1, #1 ;R1=R1+1
LW R3, (R1)0 ;R3=MEM[R1+0]
LW R4, (R1)1 ;R4=MEM[R1+1]
SUB R4, R4, R3 ;R4=R4-R3
BEQZ R4, back ;if(R4 == 0) goto back
LW R4, (R1)1 ;R4=MEM[R1+1]
SW R4, (R1)0 ;MEM[R1+0]=R4
SW R3, (R1)1 ;MEM[R1+1]=R3
back: SUBI R2, R2, #1 ;R2=R2-1
BNEZ R2, loop ;if(R2 != 0) goto loop
ADDI R2, R2, #1 ;R2=R2+1
OR R2, R2, R2 ;R2=R2 | R2
ANDI R1, R1, #1 ;R1=R1 & 1
Izgled dela memorije počev od adrese 100h je prikazan na slici 2. Iz memorije se čita i u nju upisuje 32-bitne reč po reč. Početna adresa programa je 1000h, a početna vrednost registra R1 je 100h. Svaka instrukcija zauzima tačno jednu adresu, adresiranje je na nivou 32-bitne reči.
| Adresa | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 10A | 10B |
| Sadržaj | 0 | 5 | 0 | 1 | 0 | 6 | 0 | 2 | 2 | 0 | 1 | 9 |
- Prikazati tabelarno šta se dešava u kojoj fazi za prvih 13 instrukcija datog programa koje se izvrše.
- Prikazati tabelarno šta se dešava u kojoj fazi za prvih 13 instrukcija datog programa koje se izvrše u slučaju da postoji keš za predikciju skoka sa 4 asocijativnih ulaza i 2 bita za predikciju skoka po ulazu. Predikcija 11 označava jaku predikciju da će biti skoka, 10 slabu predikciju da će biti skoka, 00 označava jaku predikciju da neće biti skoka, a 01 slabu predikciju da neće biti skoka. Keš za predikciju skoka dozvoljava i čitanje i upis u istom taktu. Izgled keš memorije za predikciju pre izvršavanja datog programskog segmenta prikazan je na slici 3.
- Dati tabelarno prikaz keš memorije za predikciju 13 instrukcija datog programa i skicirati šemu za predviđanje koja je korišćena u tački b).
| ulaz | PC | Next PC | Predikcija |
|---|---|---|---|
| 0 | 100F | 100A | 11 |
| 1 | 1006 | 100A | 10 |
| 2 | 1014 | 1002 | 11 |
| 3 | 100B | 1002 | 10 |