AOR2/K2 2023

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Drugi kolokvijum 2023. godine održan je 12. maja, trajao je 75 minuta i svaki zadatak je vredeo 5 bodova. Prvi zadatak radio se u vežbanci, dok je za drugi zadatak bio dat formular. Postavka ovog roka nije trenutno dostupna sa stranice predmeta.

1. zadatak

Postavka

Kod hardverske virtualizacije[sic] koristi se tehnika prateće[sic] tabela stranica (Shadow Page Tables). Opisati tehnike za ažuriranje prateća[sic] tabela stranica ukoliko gost načini promene tabele stranica gosta.

Rešenje

Sličan zadatak pojavio se na kolokvijumu 2021. godine, gde je napisano i njegovo rešenje.

2. zadatak

Postavka

Adresni prostor procesora je veličine 128KB, adresibilna jedinica je 16 bitna reč. Procesor je jednoadresni sa razdvojenim memorijskim i U/I adresnim prostorom i sa hardverskom podrškom za virtuelizaciju procesora.

Procesor poseduje 16 bitni akumulator ACC, 16 bitnu programsku statusnu reč PSW i 16 bitne registre opšte namene R0 i R1. U registru PSW postoji bit VM. Procesor prelazi u mod virtuelizacije postavljanjem bita VM na 1. Stek domaćina i gosta raste prema nižim lokacijama, a SP ukazuje na poslednju zauzetu lokaciju. Procesor poseduje i registar VMPTR koji ukazuje na trenutnu VM kontrolnu strukturu koja se koristi. U tabeli 1 je prikazana VM kontrolna struktura gde se vidi sadržaj registara domaćina, sadržaj registara gosta, bit mapa instrukcija koje izazivaju VM izlazak i razlog izlaska iz VM. Prikazana struktura se nalazi u memoriji počevši od adrese 6000h. Smatrati da svako polje ove strukture zauzima jednu memorijsku lokaciju i da se adresa ove strukture nalazi u registru VMPTR.

Tabela 1. VM kontrolna struktura
Registri Domaćin Gost
SP FFFFh EFFFh
PC 1008h 7000h
PSW VM=1 VM=0
ACC 0h 1h
R0 0h 0h
R1 6000h 0h
Bit mapa instrukcija (najniža 4b polja): 1101b
Razlog izlaska: 00h

Polja prikazane VM kontrolne strukture su smeštena u memoriji tako da su prvo smeštena polja stanja domaćina, pa polja stanja gosta i na kraju polja koja predstavljaju bit mapu instrukcija i razlog izlaska. Vrednost 1 bita u bit mapi instrukcija izaziva VM izlazak. Bitovi bit mape instrukcija se odnose na sledeće instrukcije: bit 0 — LD, bit 1 — ST, bit 2 — PUSH i bit 3 — POP. Smatrati da instrukcija HALT uvek izaziva VM izlazak. Razlog izlaska može da ima sledeće vrednosti: 00 — izvršavanje HALT instrukcije, 00 — izvršavanje HALT instrukcije, 01 — izvršavanje LD instrukcije, 02 — izvršavanje ST instrukcije, 03 — izvršavanje POP instrukcije i 04 — izvršavanje PUSH instrukcije. Smatrati da se prilikom VM ulaska vrši samo učitavanje registara koji predstavljaju stanje gosta iz VM kontrolne strukture, a da se prilikom VM izlaska prvo vrši čuvanje stanja gosta u polja gosta VM kontrolne strukture, a zatim učitavaju registri koji predstavljaju stanje domaćina iz VM kontrolne strukture u registre procesora.

Na slici 1, dat je deo koda koji je učitan u operativnu memoriju računara, vodeće nule adresa i podataka nisu prikazane. Instrukcija na adresi 1000h označena je kao 1. (prva) po redosledu izvršavanja, a svaka sledeća instrukcija koja se izvršava označena je sledećim rednim brojem. Početni sadržaj registra PC je 1000h. Rezultat dati nakon faze izvršenja instrukcije. Prilikom VM izlaska u posebnom redu je potrebno naznačiti novo stanje VM kontrolne strukture, vrednost akumulatora domaćina i vrednost VM bita registra PSW domaćina. Prilikom svake izmene VM kontrolne strukture potrebno je napisati novo stanje polja gosta i stanja bit mape instrukcija i razloga izlaska VM kontrolne strukture u tabeli stanja VM kontrolne tabele i naznačiti u rešenju gde se koristi novo stanje. Smatrati da su sve adrese na slici 1 fizičke adrese.

Slika 1. Deo koda učitan u operativnu memoriju
Adresa Instrukcija
1000h VON
1001h LD #0h
1004h ST 2000h
1007h VLAUNCH
1008h LD (R1)Dh
100Bh CMP #0h
100Eh JZ 1027h
1011h CMP #4h
1014h JNZ 101Dh
1017h LD #5h
101Ah ST (R1)Ch
101Dh LD 2000h
1020h INC
1023h ST 2000h
1026h VRESUME
1027h VOFF
1028h HALT
7000h LD #0h
7003h ST 7500h
7006h INC
7007h PUSH
7008h POP
7009h HALT

Rešenje

Tabela 2. Stanje tokom izvršavanja instrukcija iz rešenja zadatka
R.b. Adresa Instrukcija ACC [h] VM kontrolna struktura VM Komentar[1]
0 - 1 0
1 1000h VON - 1 1 Ušli smo u režim virtuelizacije, pa se pali VM bit.
2 1001h LD #0h 0h 1 1
3 1004h ST 2000h 0h 1 1 MEM[2000h] = 0h
4 1007h VLAUNCH 1h 1 0 Učitavamo stanje gosta iz VM kontrolne strukture.
5 7000h LD #0h 0h 1 0 Došlo je VM izlaska usled izvršavanja LD instrukcije jer je bit 0 mape postavljen na 1.
0h 2 1 Čuvamo stanje gosta i učitavamo stanje domaćina iz VM kontrolne strukture.
6 1008h LD (R1)Dh 1h 2 1 Učitavamo razlog izlaska u akumulator.
7 100Bh CMP #0h 1h 2 1 Proveravamo da li je došlo do HALT.
8 100Eh JZ 1027h 1h 2 1 Nije, pa zato ne skačemo.
9 1011h CMP #4h 1h 2 1 Proveravamo da li je došlo do PUSH.
10 1014h JNZ 101Dh 1h 2 1 Nije, pa zato skačemo.
11 101Dh LD 2000h 0h 2 1
12 1020h INC 1h 2 1
13 1023h ST 2000h 1h 2 1 MEM[2000h] = 1h
14 1026h VRESUME 0h 2 0 Učitavamo stanje gosta iz VM kontrolne strukture.
15 7003h ST 7500h 0h 2 0 MEM[7500h] = 0h, nije došlo do VM izlaska usled izvršavanja ST instrukcije jer je bit 1 mape postavljen na 0.
16 7006h INC 1h 2 0 INC instrukcija nema svoj bit u mapi.
17 7007h PUSH 1h 2 0 SP = EFFEh, MEM[EFFEh] = 1h, došlo je VM izlaska usled izvršavanja PUSH instrukcije jer je bit 2 mape postavljen na 1.
0h 3 1 Čuvamo stanje gosta i učitavamo stanje domaćina iz VM kontrolne strukture. Vredno je napomenuti da se nijednom tokom zadatka ne menja stanje domaćina u VM kontrolnoj strukturi.
18 1008h LD (R1)Dh 4h 3 1 Učitavamo razlog izlaska u akumulator.
19 100Bh CMP #0h 4h 3 1 Proveravamo da li je došlo do HALT.
20 100Eh JZ 1027h 4h 3 1 Nije, pa zato ne skačemo.
21 1011h CMP #4h 4h 3 1 Proveravamo da li je došlo do PUSH.
22 1014h JNZ 101Dh 4h 3 1 Jeste, pa zato ne skačemo.
23 1017h LD #5h 5h 3 1
24 101Ah ST (R1)Ch 5h 4 1 Menjamo bit mapu instrukcija u VM kontrolnoj strukturi tako da sprečimo izlazak na POP instrukciju.
25 101Dh LD 2000h 1h 4 1
26 1020h INC 2h 4 1
27 1023h ST 2000h 2h 4 1 MEM[2000h] = 2h
28 1026h VRESUME 1h 4 0 Učitavamo stanje gosta iz VM kontrolne strukture.
29 7008h POP 1h 4 0 SP = EFFFh, zbog prethodno izmenjene mape ne izlazimo.
30 7009h HALT 1h 4 0
0h 5 1 Čuvamo stanje gosta i učitavamo stanje domaćina iz VM kontrolne strukture.
31 1008h LD (R1)Dh 0h 5 1 Učitavamo razlog izlaska u akumulator.
32 100Bh CMP #0h 0h 5 1 Proveravamo da li je došlo do HALT.
33 100Eh JZ 1027h 0h 5 1 Jeste, pa zato skačemo.
34 1027h VOFF 0h 5 0 Izašli smo iz režima virtuelizacije, pa se gasi VM bit.
35 1028h HALT 0h 5 0
Tabela 3. Stanje VM kontrolne strukture iz rešenja zadatka
Stanje
Gost 1 2 3 4 5
SP EFFFh EFFFh EFFEh EFFEh EFFFh
PC 7000h 7003h 7008h 7008h 700Ah[2]
PSW VM=0 VM=0 VM=0 VM=0 VM=0
ACC 1h 0h 1h 1h 1h
R0 0h 0h 0h 0h 0h
R1 0h 0h 0h 0h 0h
Bit mapa instrukcija 1101b 1101b 1101b 0101b 0101b
Razlog izlaska 00h 01h 04h 04h 00h

Napomene

  1. Na kolokvijumu nije postojala ova kolona, već je ona ovde dodata za dodatna objašnjenja.
  2. Na kolokvijumu je rečeno da je HALT instrukcija dužine jedne adresibilne jedinice.