AOR2/Februar 2024

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu
Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

1. (5) Opisati tehniku optimizacije vektorskih instrukcija koja se zasniva na dohvatanju izabranih elemenata (Scatter-gather) prilikom pristupa podacima. Dati primer instrukcija procesora koje omogućavaju ovu tehniku i primer programa kog koga se jasno vidi prednost korišćenja ove tehnike.

Rešenje

2. (5) Data je funkcija koja vraća najmanji pozitivan element niza a. Elementi niza a su označeni realni brojevi dužine 64 bita. Ukoliko u nizu a ne postoji nijedan pozitivan broj, rezultat funkcije treba da bude 0. Potrebno je prepraviti kod funkcije tako da ima isti rezultat izvršavanja korišćenjem vektorskih instrukcija koje su date u prilogu ispita.

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;
}

Rešenje

3. (5) Kod procesora koji koriste predviđanje skoka i spekulativno izvršavanje mogu se javiti određene ranjivosti hardverskog sistema. Opisati kako izgleda napad tipa Meltdown koji koristi tehniku Izvaci i učitaj (Flush and Reload) i u kojoj slučajevima se ovaj napad može primeniti.

Rešenje

4.(5) Razmatra se računarski sistem u kome se izvršavanje određene instrukcije odvija u 6 faza pomoću izmenjenog procesora sa protočnom obradom (slika 4.1). U procesor sa standardnom protočnom obradom je dodata kao drugi stepen jedinica PD (Instruction PreDecode) koji obavlja transformaciju instrukcija zadate arhitekture u instrukcije RISC arhitekture. Smatrati da pristup memoriji traje dva signala takta. Arhitektura procesora definiše 16 registara opšte namene. Adrese i veličine su 16 bita.

a) Napisati sekvencu instrukcija (mikroinstrukcija) ciljne RISC arhitekture u koju se obavlja preslikavanje za deo instrukcijskog seta iz tabele 4.1. izvršna CISC arhitekture. Ukoliko je potrebno proširiti broj registara opšte namene u registarskom fajlu onda treba za svaki dodat registar napisati čemu služi. Registar R13 predstavlja ukazivač na vrh steka (SP) i pokazuje na poslednju slobodnu lokaciju. Stek raste prema višim adresama. Registar R14 predstavlja ukazivač na baznu adresu steka (BP), registar R15[1] predstavlja statusni registar PSW. Registar R0 se koristi kao akumulator. U tabeli 4.1 akcije nisu optimizovano napisane, već opisno.

Tebla 4.1. - deo instrukcijskog seta procesora
Asemblerska instrukcija Akcija Mikro instrukcije
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]]

b) Nacrtati format instrukcija ciljne RISC arhitekture (na osnovu instrukcija iz tabele 4.1)

Rešenje

Podsetnik

U podsetniku je bila data dokumentacija za sledeće instrukcije:

_mm256_loadu_pd
_mm256_storeu_pd
_mm256_max_pd
_mm256_min_pd
_mm256_setzero_pd
_mm256_add_pd

Dokumentacija za ove instrukcije može se naći sa zvaničnog Intelovog sajta i ovde neće biti ponovljena.

  1. Napomena: U postavci zadatka je bila greška, rečeno je bilo da registar R13 predstavlja PSW, pa je uzeta pretpostavka da je to R15.