[OSy] Problem so zapisovanim do do virtualnej pamete
Vlastimil Babka
babka at dsrg.mff.cuni.cz
Wed Dec 5 14:45:22 CET 2007
Dobry den,
podobny, ne-li stejny problem se tu kdysi resil, zapatral jsem v
archivech a nasel zde
https://dsrg.mff.cuni.cz/pipermail/osy/2004-December/thread.html
thready "TLB" a "TLB - vyreseno". Tak se zkuste podivat zda vas to
nenakopne spravnym smerem :)
Vlastimil Babka
Rastislav Wartiak wrote:
> Ano, bojuji s podobným problémem.
>
> Rastislav Wartiak
>
>
>> jj, tak ten podivny vypis bol sposobeny tym cim popisujes. Stale, ale mame
>> problem so zapisom do virtualnej pamate.
>>
>> To co sa nam deje je detailne popisane tu ..
>>
>> 0.
>> TLB je prazdne
>>
>> 1.
>> Test si naalokuje pamat 0xc0000000 a zapise do nej;
>> <0,0> .. cycle 0 (actionno: 0) -- vma_alloc (size=0x1000) = EOK,
>> ptr=0xc0000000
>>
>> TLB vyhlada mapovanie a zapise do tabulky zaznam;
>> [30] : Virtual Address=0xc0000000 ;Even=0x40a800 [D=1,V=1,G=0]; ODD=0x0
>> [D=1,V=0,G=0] ; ASID=1
>>
>> (Uz v tomto momente pri vypise virtualnej pamate 0xc0000000 vypise 255, co
>> je obsah FYZICKEJ pamate aj na 0xc0000000
>> stranka 0x40a800 obsahuje same 00.)
>>
>> 2.
>> Test sa poskusi pristupit k naalokovanej pamati a nenajde tam ocakavanu
>> hodnotu;
>> <0,0> .. cycle 0 (actionno: 1) -- access (ptr=0xc0000492) = 255, expected 18
>>
>> Ziadna tlb exception sa nevyhodi a v tabulke je stale ten jediny zaznam;
>> [30] : Virtual Address=0xc0000000 ;Even=0x40a800 [D=1,V=1,G=0]; ODD=0x0
>> [D=1,V=0,G=0] ; ASID=1
>>
>> Mame pocit, ze bezime v nejakom divnom rezime. Ako keby pri nacitani pamate
>> pouzival virtualnou adresou namiesot namapovanej fyzickej,
>> pripadne sa dival niekam este uplne ako ma. Zapisuje tiez ktoviekam. Nemali
>> ste niekto z Vas podobny problem? Dakujem za odpoved.
>>
>>
>> On 12/5/07, Andrej Krutak <andree182 at gmail.com> wrote:
>>
>>> 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
>>>>
>>>
>>> _______________________________________________
>>> OSy mailing list
>>> OSy at dsrg.mff.cuni.cz
>>> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>>>
>>>
>
>
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>
More information about the NSWI004
mailing list