AOR2/Februar 2024
- 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.
Asemblerska instrukcija | Akcija | Mikro instrukcije |
---|---|---|
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]] |
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.
- ↑ 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.