AOR2/Jun 2022
- Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
Junski rok 2022. godine održan je 11. juna i trajao je 90 minuta. Na ispitu je takođe bio podeljen podsetnik vektorskih instrukcija sa dokumentacijom AVX instrukcija sa Intelovog zvaničnog sajta.
1. zadatak
Postavka
Opisati tehniku optimizacije vektorskih instrukcija koja se zasniva na koračanju (Stride) prilikom pristupa podacima. Dati primer programa kod koga se jasno vidi prednost korišćenja ove tehnike.
Rešenje
2. zadatak
Postavka
Data je funkcija void scale(const unsigned float* input, int n)
koja realne elmente[sic] niza zadatog pokazivačem input
i dužine n
srazmerno umanjuje tako da svaki element niza bude u opsegu [0, 1]. Smatrati da je n > 0. Elementi niza su realni brojevi float
(32 bit). Potrebno je prepravaiti kod tako da ima isti rezultat izvršavanja korišćenjem vektorskih instrukcija koje su date u prilogu ispita.
void scale(const unsigned float* input, int n) {
unsigned float max = input[0];
for (int i = 1; i < n; i++) {
if (input[i] > max)
max = input[i];
}
for (int i = 0; i < n; i++) {
input[i] = input[i] / max;
}
}
Rešenje
3. zadatak
Postavka
Posmatra se predviđanje skoka korišćenjem prediktora sa dva nivoa. Opisati opšti rad ovog prediktora. Ovaj prediktor se može javiti u više varijanti u zavisnosti od toga na koji način je implementiran svaki nivo. Opisati te varijante i naznačiti od čega zavise.
Rešenje
4. zadatak
Postavka
Razmatra se računarski sistem u kome se izvršavanje određene instrukcija odvija u 6 faza pomoću izmenjenog procesora sa standardnom protočnom obradom (slika 4.1.). U procesor sa standardom protočnom obradom je dodata kao drugi stepen jedinica PD (Instruction PreDecode) koji[sic] obavlja transformaciju instrukcija zadate arhitekture u instrukcije RISC arhitekture. Smatrati da pristup memoriji traje dva signala takta. Arhitektura procesora definiše 16 registra[sic] opšte namene. Adrese i podaci su veličine 16 bita.
- Napisati sekvencu instrukcija (mikroinstrukcija) ciljne RISC arhitekture u koju se obavlja preslikavanje za deo instrukcijskog seta iz tabele 4.1. izvorišne 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 R0 se koristi kao akumulator. Bit PSWI u PSW se nalazi na poziciji 3, bit PSWC u PSW se nalazi na poziciji 2. U tabeli 4.1. akcije nisu optimizovano napisane, već opisno.
- Nacrtati format instrukcija ciljne RISC arhitekture (na osnovu instrukcija iz tabele 4.1.).
Asemblerska instrukcija | Akcija | Mikro instrukcije |
---|---|---|
BSWAP Rx
|
RX >> 8 | |
ENTER immed
|
PUSH BP BP = SP SP = SP + immed |
|
INTE
|
PSWI = 1
|
|
LDPC
|
AX = PC
|
|
NOT adr
|
AX = !MEM[adr]
|
|
LOOPNZ disp
|
R12 = R12 - 1 IF R12 != 0 THEN PC = PC + disp |
|
ST -(Rx)
|
Rx = Rx - 1 MEM[Rx] = ACC |
|
ADDC (adr)
|
IF PSWC == 1 THEN ACC = ACC + MEM[MEM[adr]] + 1 ELSE ACC = ACC + MEM[MEM[adr]] |
Rešenje
Podsetnik
U podsetniku je bila data dokumentacija za sledeće instrukcije:
_mm256_load_ps
_mm256_set_ps
_mm256_cmpgt_ps
_mm256_mul_ps
_mm256_storeu_ps
_mm256_blendv_ps
_mm256_max_ps
Dokumentacija za ove instrukcije može se naći sa zvaničnog Intelovog sajta i ovde neće biti ponovljena.