АОР1/Август 2022

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

1. задатак

Поставка

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

  1. [5п] Дати пример програмског сегмента код кога је потребно реализовати прослеђивање у степен MEM проточне обраде, а да дато прослеђивање није било могуће реализовати у EX степену а да се не направи заустављање проточне обраде. Нацртати комплетах[sic] хардвер за реализацију датог прослеђивања.
  2. [5п] Дати пример програмског сегмента код кога је потребно зауставити проточну обраду јер се само прослеђивањем не може отклонити хазард. Нацртати интерну структуру дела процесора који генерише сигнал за заустављање проточне обраде у датом примеру.
  3. [5п] Дати процесор треба да подржи и инструкцију скока на потпрограм. Потпрограм може да почне почев од било које меморијске локације. Предложити формат инструкције скока на потпрограма[sic]. Шта је потребно модификовати у процесору са слике 1 (нацртати и објаснити) тако да се и ова инструкција извршава у 5 фаза као и остале инструкције.

2. задатак

Поставка

[15п] Посматра се систем са стандардном проточном обрадом са слике 1 код кога постоји хардвер за прослеђивање (forwarding), одређивање адресе скока и услова скока се обавља у ID степену и који користи статичку предикцију да скок није прихваћен (branch non-taken prediction). Извршава се следећи програмски сегмент:

loop:   LW   R1, (R2)100      ;R1=MEM[R2+100]
        SUBI R1, R1, #1       ;R1=R1-1
        SW   R1, (R2)105      ;MEM[R2+105]=R1
        BEQZ R1, loop         ;if(R1 == 0) goto loop
        LW   R3, (R2)101      ;R3=MEM[R2+101]
        ADD  R3, R1, R3       ;R3=R1+R3
        SUBI R3, R3, #1       ;R3=R3-1
        BNEZ R3, next         ;if(R3 != 0) goto next
        XOR  R3, R3, R2       ;R3=R3^R2
        SW   R3, (R2)106      ;MEM[R2+106]=R3
        LW   R1, (R2)106      ;R1=MEM[R2+106]
next:   BNEZ R3, loop         ;if(R3 != 0) goto loop
        ADD  R3, R1, R1       ;R3=R1+R1
        OR   R1, R3, R1       ;R1=R3 or R1
        SUBI R3, R3, #1       ;R3=R3-1

Почетна вредност регистра R2 је 0h а изглед дела меморије почев од адресе 100h је приказан на слици 2. Из меморије се чита и у њу уписује 32-битне реч по реч. Почетна адреса програма је 1000h, а свака инструкција заузима тачно једну адресу, адресирање је на нивоу 32-битне речи.

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