[ARHRAC2] Gradivo
Mihael
jel netko radi po ultimate packu, imam nekih pitanja oko nekih zadataka, cnine mi se krivo rijeseni ali nisam siguran.11 i 12 takt mi se cine krivi
menace_master
Mihael ne radim trenutno arh, al sjecam se da ih je bilo dosta krivo rijesenih
Mihael
menace_master sječaš li se gradiva
menace_master
Mihael pitaj pa cemo vidjet 😅
Mihael
menace_master
jel ne bi u 10 taktu spremiti B1 na adresu $1007 i na adresnu sabirnicu dovesti $1007 i upaliti write signal?
s obzirom da je spremljen B1 na $1007 to više nije op code od neke poznate instrukcije, tu prepostavljam da je i to oduzimanje kako bi mogao nastaviti s zadatkom
jel u 16 taktu trebalo biti isto spemanje. nisu mi jasni ** na adresnoj i podatkovnoj sabirnici i kako se nikada ne dovodi signal na write
zašto u 12 taktu sprema 11 u privremeni registar?
edit: moje riješenje:
menace_master
Mihael konstanta 11 se sprema u privremeni registar kako bi ju mogao u sljedećem koraku oduzeti od akumulatora. sve šta pročitaš i trebaš iskoristiti moraš spremiti negdje. to možeš vidjeti i na skici pojednostavljenog modela procesora.
što se tiče samog zadatka, tvoje rješenje mi izgleda točno, i na prvoj slici se na $1007 pročita B1 pa to valjda je operacijski kod za oduzimanje. imislim da i dobro pišeš u memoriju, ne znam zašto bi trebalo biti stanje visoke impedancije ni write cijelo vrijeme u 0. al moguće da sam u krivu, kad bi još netko potvrdio bi bilo superrrrr
Sicsile
zna netko ovaj rj
Sicsile
Jel mi moze netko objasnit dvorazinsko straničenje na nekom ispitnom zadatku ili slikat svoje rj?
gunaman
Sicsile Koliko sam ja shvatio, ideja je da klasicna virtualna memorija nije memorijski isplativa kada se radi o procesima sa malim zauzecem memorije.. iz razloga sto u racunalu sa npr. 32 bitnim virtualnim adresama za proces koji je dimenzija tocno jedne stranice, npr. 4KiB memorije (dimenzija standardne stranice, kad u zadatku nije navedeno, to sam dns saznao) bi tablica stranicenja bila veca od samog procesa..
za navedeni primjer… 32 bita virtualna adresa i 4KiB stranica -> 12 bitova za adresiranje pomaka unutar stranice i 20 bitova za indeksiranje tablice preslikavanja -> 220 unosa u tablici preslikavanja -> uz pretpostavku 4B za jedan unos u tablici (to je neka standardna dimenzija, fizicka adresa u gl. memoriji + zastavice + bit valjanosti) -> sama tablica preslikavanja zauzima 220 unosa * 4B = 4MiB + jos dimenzije samog procesa a to je 4Kib
u principu za jedan proces koji zauzima samo jednu stranicu imamo citavu tablicu stranicnog preslikavanja koja ima popunjen samo jedan unos koji pokazuje na tu nasu jednu ucitanu stranicu…
RJESENJE PROBLEMA: dvorazinsko stranicenje
umjesto tablice stranicenja (stranicnog preslikavanja kako god) imamo stranicni imenik sa primjerice 512., relativno malo unosa (recimo istih pojedinacnih dimenzija - 4B) od kojih svaki referencira jednu (ili nijednu) tablicu stranicenja za minimalano 1 i maksimalno 512 potencijalnih tablica.. on i tablica sad dijele adresni prostor virtualne adrese, pa tako sada imamo 12 bitova za adresirati pomak unutar stranice dimenzija 4Kib (A0-A11), 9 bitova za adresirati 512 elemenata stranicnog imenika (A23-A31) i 11 bitova za adresiranje unosa u samoj tablici stranicenja (A12-A22) koja sad umjesto 220 ima 211 elemenata..
Za isti slucaj naveden gore sada nam zauzece glavne memorije izgleda ovako… 512 * 4B za stranicni imenik + 211 * 4B za tablicu = 2KiB + 8KiB = 10 KiB
kada tome dodamo zauzece same tablice dobivamo 10KiB + 4KiB = 14KiB sto znaci da smo smanjili zauzece memorije za isti proces sa priblizno 4MiB na 14KiB…
*** DISCLAIMER ***
s obzirom da ja nisam bio na predavanjima i da sam ucio po knjizi Građa racunala od Ribarica di se viserazinsko stranicenje niti ne spominje izuzev TLBa, ovo je samo moje tumacenje izvuceno na temelju prezentacije na temu virtualne memorije, ali sam poprilicno siguran da je ispravno.. kako tocno izgleda sadrzaj unosa u imeniku, kojim mehanizmima se osigurava da se ucita samo jedna tablica, a ne primjerice 511 praznih i jedna sa jednim unosom za ovaj konkretan primjer, neznam..
eto just my two cents..
ako netko vidi gresku u mojoj logici tu iznad, molim da me ispravite ispit je sutra 😮
Sicsile
gunaman hvala puno, ja izlazim sad na ovom roku. Sto se tice usmenog nadam se da ga nece bit jer trazio sam konzultacije kod nilo koga i nitko mi nis ne odgovara osim segvica koji je rekao da ga nema do kraja tjedna zbog potencijalne korone, a kolko znam on inace drzi usmene
eaypeasy
Može netko objasnit kako gledamo ovaj rezultat, tj. kako znamo jel pogodak ili nije
gunaman
easypeasy ono što pretpostavljam da te buni je koji dio adrese uspoređujemo..
kad se radi o potpuno asocijativnom preslikavanju adresa se sastoji od znacke i pomaka i tada gledamo samo znacku i jednostavno je…
kada se radi o jednom od ova druga dva slučaja (skupno asocijativnom i izravnom) malo je teze skuzit.. ideja je da su značke PRIDUŽENE bločnim priključcima, tako da se na temelju bitova indexa bločnog priključka zna koja se značka unutar memorije za pohranu značaka uopće gleda.. jedino mi to ima smisla.. kad ides po ovoj tablici prvo gledaj index, pa značku..
u stilu, za bločni priključak sa indexom 0, značka je 1, dok je u adresi koju ja promatram značka 0, odnosno dogodio se promašaj
gunaman
Zna netko definitivno odgovorit kako se prikazuju negativni brojevi u razlicitim arhitekturama?
gunaman
zna netko pomoc s ovim.. znam sve izuzev kako bi ja sad trebao negirat sadrzaj registra A (akumulatora) da bih mogao izvesti oduzimanje dvojnim komplementom? taj sklopovski me dio zeza.. da li moram dodavati jos jednu operaciju ALU ili se to moze jednostavnije odraditi na izlazu iz registra?
BigZ1
jel ikome jos izbacuje ovakve errore premda je sve definirao kao u primjerima? i jel zna netko kako rijesiti ove probleme da mi sve sve runam da testiram ih vec jednom pobogu.. ako netko zna vise nek mi se javi.
EDIT: citao sam i dokumentaciju i covjek nije nista o errorima spomenio,ako je onda sam ja slijep vjerovatno..
JBQ
BigZ1
Imao sam i ja sam i ja slican problem jer nisam u uvjetnoj naredbi stavio then, npr treba biti if ____ then goto _____ else goto _____ endif.
Uchenikowitz
BigZ1 moras dobro paziti kako pises naredbe, uploadaj .ucode datoteku s numeriranim redovima pa mozemo naci gresku. Takoder pazi da kao na ARH1 imas uvijek jedan prazan red na kraju prije spremanja. Smijes imati samo jedan signal jedne vrste u jednoj instrukciji, znaci ne mozes u jednom redu imat dva puta result_sel, odvoji to u dvije instrukije. Ne znam kako bih ti jos pomogao :/
ferball
da li trebamo prije svake mikroinstrukcije postavit r4 u 0 ako ga koristimo kao privremeni registar