АОР2/Фебруар 2024
- Овај рок није решен. Помозите 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 акције нису оптимизовано написане, већ описно.
Асемблерска инструкција | Акција | Микро инструкције |
---|---|---|
SHL Rx | Rx15..0 = Rx14..0.0 | |
LEAVE | SP=BP POP BP | |
RTI | PSW=MEM[SP--] PC=MEM[SP--] || | |
SWP(Rx) | MEM[Rx] ↔ ACC | |
INS entry | PUSH PC PUSH PSW | |
SUB (adr) | ACC=ACC-MEM[MEM[adr]] |
б) Нацртати формат инструкција циљне РИСЦ архитектуре (на основу инструкција из табеле 4.1)
Решење
Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па сам узео претпоставку да је то R15.
Подсетник
У подсетнику је била дата документација за следеће инструкције:
_mm256_loadu_pd
_mm256_storeu_pd
_mm256_max_pd
_mm256_min_pd
_mm256_setzero_pd
_mm256_add_pd
Документација за ове инструкције може се наћи са званичног Интеловог сајта и овде неће бити поновљена.
- ↑ ref name="greska">1