[OSy] Problem so zapisovanim do do virtualnej pamete

Andrej Krutak andree182 at gmail.com
Wed Dec 5 08:50:09 CET 2007


Aha,

teraz ma napadla este jedna vec - co sa stala aj mne pri testovani.. :-)

Mozno mate "blbo" napisany ten testovaci kod - v tom zmysle, ze je prekladac 
hyperinteligentny a zoptimalizuje ten kod tak, ze ked si date vypisat obsah 
pamati, kam ste predtym zapisali, tak to vlastne vypise iba nieco, co si ten 
program "pamata" este v registroch (napr.), miesto toho aby sa naozaj pozrel 
cez TLB a do RAM.... (cache to urcite nebude, pretoze msim ziadnu nesimuluje, 
afaik :-D)

Mohlo by pomoct nastavit ten pointer do pamati ako volatile, alebo medzi zapis 
a citanie pridat nejaku pointerovu aritmetiku (ptr+=1, -=1) - cim by sa 
mohla "vypnut" optimalizacia...

(Ta optimalizacia ma prave take zaujimave efekty, ze aj ked zapises cislo na 
uplne nahodnu adresu (napr. neexistujucu pamat v KSEG0), tak ked precitas 
spat, tak tam ta hodnota bude - aj ked sa nikde do ram nezapisala...)

Andrej


On Wednesday 05 December 2007 01:40:08 Martin Choma wrote:
> Caute,
>
> riesime jeden zahadny problem. Mame alokovany blok pamete vo virt.
> priestore a k nemu alok. blok fyzickej.
> Pri pokuse o zapis na virtualnu adresu sa nam vyhlada tlb zaznam so
> spravnym mapovanim a zapiseme.
> Este vypis premennej hned po tomto zapise vypise spravne priradenu
> hodnotu (co moze byt sposobene cache).
> Ale ak si vypiseme predchadzajucu premennu, do ktorej sme priradovali,
> tak ta obsahuje hodnotu 255
> (co je hodnota pri pohlade na fyz. adresu 0xCxxxxxxxx v memory dumpe
> msimu). Ked sa pozrieme na danu
> fyzicku pamat memory dumpom, tak je skutocne nevyplnena. Ako keby sa
> to nezapisovalo alebo zapisovalo
> niekam inam. Nenapada niekoho, cim by to mohlo byt? Diky.
>
> priznaky ksu exl a erl mame nastavene takto;
> ksu = 0, exl=0, erl=0
>
> nase zaznamy v TLB vyzeraju asi takto:
>
> [0] : Virtual Address=0xc00ec000  ;Even=0x4fd800 [D=1,V=1,G=0];
> ODD=0x4fe800 [D=1,V=1,G=0] ; ASID=1
> [1] : Virtual Address=0xc00ee000  ;Even=0x4ff800 [D=1,V=1,G=0];
> ODD=0x500800 [D=1,V=1,G=0] ; ASID=1
> [2] : Virtual Address=0xc00d4000  ;Even=0x4e5800 [D=1,V=1,G=0];
> ODD=0x4e6800 [D=1,V=1,G=0] ; ASID=1
> [3] : Virtual Address=0xc00e4000  ;Even=0x4f5800 [D=1,V=1,G=0];
> ODD=0x4f6800 [D=1,V=1,G=0] ; ASID=1
> [4] : Virtual Address=0xc00ea000  ;Even=0x4fb800 [D=1,V=1,G=0];
> ODD=0x4fc800 [D=1,V=1,G=0] ; ASID=1
> .
> .
> .
>
> Martin Choma
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy






More information about the NSWI004 mailing list