АОР2 Фебруар 2024

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

1. (5) Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената (Scatter-gather) приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.

Решење

2. (5) Дата је функција која враћа најмањи позитиван елемент низа а. Елементи низа а су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.

double minPositive(double[] a, unsigned int length)
{
   if(length==0)
       return 0;
   double min = a[0];
   for(int i=0; i<length; i++)
       if(a[i]>0 && a[i]<min)
            min = a[i];
   if(min<0)
       return 0;
}

Решење

3. (5) Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа Meltdown који користи технику Изваци и учитај (Flush and Reload) и у којој случајевима се овај напад може применити.

Решење

4.(5) Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (Instruction PreDecode) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.

а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15[1] представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно.

Тебла 4.1. - део инструкцијског сета процесора
Асемблерска инструкција Акција Микро инструкције
SHL Rx Rx15..0 = Rx14..0.0
LEAVE SP=BP

POP BP
POP PC||

RTI PSW=MEM[SP--]

PC=MEM[SP--] ||

SWP(Rx) MEM[Rx] ACC
INS entry PUSH PC

PUSH PSW
PC=MEM[IVTP+entry] ||

SUB (adr) ACC=ACC-MEM[MEM[adr]]

б) Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 4.1)

Решење

Подсетник

У подсетнику је била дата документација за следеће инструкције:

_mm256_loadu_pd
_mm256_storeu_pd
_mm256_max_pd
_mm256_min_pd
_mm256_setzero_pd
_mm256_add_pd

Документација за ове инструкције може се наћи са званичног Интеловог сајта и овде неће бити поновљена.

<greska />

  1. Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па је узета претпоставка да је то R15.