АОР1/Септембар 2022
- Овај рок није решен. Помозите SI Wiki тако што ћете га решити.
1. задатак
Поставка
[15п] Посматра се процесор организације са проточном обрадом дат на слици 1. Свака фаза извршавања инструкције траје једну периоду сигнала такта укључујући и фазу 2 у којој се чита из регистарског фајла (Registers) и фазу 5 у којој се уписује у регистарски фајл (Registers).
- [5п] Објаснити за процесор са слике 1 шта треба хардверски урадити да би се или комплетно елиминисала или свела на минимум потреба заустављања инструкције beqz у проточној обради. Ако је неизбежно заустављање проточне обраде, објаснити због чега је то потребно урадити и за колико тактова треба зауставити проточну обраду. Секвенца инструкција:
add R1, R2, R3 ;R1=R2+R3
beqz R1, 50 ;if(R1==0) goto PC+50
- [5п] Објаснити за процесор са слике 1 шта треба хардверски урадити да би се или комплетно елиминисала или свела на минимум потреба заустављања инструкције beqz у проточној обради. Ако је неизбежно заустављање проточне обраде, објаснити због чега је то потребно урадити и за колико тактова треба зауставити проточну обраду. Секвенца инструкција:
lw R1, 0(R2) ;R1=MEM[R2+0]
beqz R1, 50 ;if(R1==0) goto PC+50
- [5п] Дати процесор треба да подржи и инструкцију условног премештања
MOVZ RD, RS, RT(if (RS==0) RD=RT). Шта је потребно изменити у процесору са слике 1 (нацртати и објаснити) тако да се и ова инструкција извршава у 5 фаза као и остале инструкције. Шта је потребно изменити у хардверу за прослеђивање (тачка б) да би се прослеђивање исправно обављало.
2. задатак
Поставка
[15п] Посматра се систем са стандардном проточном обрадом са слике 1 код кога постоји хардвер за прослеђивање, а у случају када се у ID фази детектује да се ради о инструкцији скока проточна обрада се зауставља све док се не одреди да ли је услов скока испуњен и док се не срачуна адреса скока. У случају да услов скока није испуњен наставља се извршавање започете инструкције. Извршава се следећи програмски сегмент:
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
Изглед дела меморије почев од адресе 100h је приказан на слици 2. Из меморије се чита и у њу уписује 32-битне реч по реч. Почетна адреса програма је 1000h, а почетна вредност регистра R1 је 100h. Свака инструкција заузима тачно једну адресу, адресирање је на нивоу 32-битне речи.
| Адреса | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 10A | 10B |
| Садржај | 0 | 5 | 0 | 1 | 0 | 6 | 0 | 2 | 2 | 0 | 1 | 9 |
- Приказати табеларно шта се дешава у којој фази за првих 13 инструкција датог програма које се изврше.
- Приказати табеларно шта се дешава у којој фази за првих 13 инструкција датог програма које се изврше у случају да постоји кеш за предикцију скока са 4 асоцијативних улаза и 2 бита за предикцију скока по улазу. Предикција 11 означава јаку предикцију да ће бити скока, 10 слабу предикцију да ће бити скока, 00 означава јаку предикцију да неће бити скока, а 01 слабу предикцију да неће бити скока. Кеш за предикцију скока дозвољава и читање и упис у истом такту. Изглед кеш меморије за предикцију пре извршавања датог програмског сегмента приказан је на слици 3.
- Дати табеларно приказ кеш меморије за предикцију 13 инструкција датог програма и скицирати шему за предвиђање која је коришћена у тачки b).
| улаз | PC | Next PC | Предикција |
|---|---|---|---|
| 0 | 100F | 100A | 11 |
| 1 | 1006 | 100A | 10 |
| 2 | 1014 | 1002 | 11 |
| 3 | 100B | 1002 | 10 |