АОР1/Септембар 2022

Извор: SI Wiki
< АОР1
Датум измене: 16. септембар 2022. у 00:29; аутор: Fedja (разговор | доприноси) (+septembar 2022)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

1. задатак

Поставка

[15п] Посматра се процесор организације са проточном обрадом дат на слици 1. Свака фаза извршавања инструкције траје једну периоду сигнала такта укључујући и фазу 2 у којој се чита из регистарског фајла (Registers) и фазу 5 у којој се уписује у регистарски фајл (Registers).

  1. [5п] Објаснити за процесор са слике 1 шта треба хардверски урадити да би се или комплетно елиминисала или свела на минимум потреба заустављања инструкције beqz у проточној обради. Ако је неизбежно заустављање проточне обраде, објаснити због чега је то потребно урадити и за колико тактова треба зауставити проточну обраду. Секвенца инструкција:
        add  R1, R2, R3  ;R1=R2+R3
        beqz R1, 50      ;if(R1==0) goto PC+50
  1. [5п] Објаснити за процесор са слике 1 шта треба хардверски урадити да би се или комплетно елиминисала или свела на минимум потреба заустављања инструкције beqz у проточној обради. Ако је неизбежно заустављање проточне обраде, објаснити због чега је то потребно урадити и за колико тактова треба зауставити проточну обраду. Секвенца инструкција:
        lw   R1, 0(R2)   ;R1=MEM[R2+0]
        beqz R1, 50      ;if(R1==0) goto PC+50
  1. [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-битне речи.

Слика 2. Изглед дела меморије
Адреса 100 101 102 103 104 105 106 107 108 109 10A 10B
Садржај 0 5 0 1 0 6 0 2 2 0 1 9
  1. Приказати табеларно шта се дешава у којој фази за првих 13 инструкција датог програма које се изврше.
  2. Приказати табеларно шта се дешава у којој фази за првих 13 инструкција датог програма које се изврше у случају да постоји кеш за предикцију скока са 4 асоцијативних улаза и 2 бита за предикцију скока по улазу. Предикција 11 означава јаку предикцију да ће бити скока, 10 слабу предикцију да ће бити скока, 00 означава јаку предикцију да неће бити скока, а 01 слабу предикцију да неће бити скока. Кеш за предикцију скока дозвољава и читање и упис у истом такту. Изглед кеш меморије за предикцију пре извршавања датог програмског сегмента приказан је на слици 3.
  3. Дати табеларно приказ кеш меморије за предикцију 13 инструкција датог програма и скицирати шему за предвиђање која је коришћена у тачки b).
Слика 3. Изглед кеш меморије за предикцију.
улаз PC Next PC Предикција
0 100F 100A 11
1 1006 100A 10
2 1014 1002 11
3 100B 1002 10