Thread View: pl.comp.lang.asm
5 messages
5 total messages
Started by Kicer
Sat, 03 Jul 2010 15:48
80386 i page protection podczas pobierania rozkazu
Author: Kicer
Date: Sat, 03 Jul 2010 15:48
Date: Sat, 03 Jul 2010 15:48
38 lines
2743 bytes
2743 bytes
Witam mam dość nietypowe pytanie o starocia i386: może ktoś z grupowiczów orientuje się w jaki sposób (fizycznie) procesor dba o ochronę stronicowania podczas pobierania rozkazu? Bo jeśli chodzi o zapis/odczyt danych, jednostka wykonawcza EU zleca zadanie BIU i BIU może na bieżąco sprawdzić w TLB czy dana strona była już używana i jakie ma prawa dostępu i na tej podstawie może zwrócić wynik EU które ew wygeneruje wyjątek (a przynajmniej, na moją logikę tak to może działać). Jednakże jesli chodzi o pobieranie rozkazu to BIU musiało by przepropagować w jakiś sposób uprawnienia strony razem z danymi gromadzonymi w kolejce prefetch które potem trafilyby do dekodera, a z niego do kolejki rozkazów zdekodowanych i potem dopiero do EU które mogło by sprawdzić czy rozkaz został pobrany naruszając ochronę stronicowania. Myślałem własnie o takim programowaniu informacji ale wydaje mi sie to bardzo nieeleganckie. Biu nie może też odrazu poinformować EU o tym że przy pobieraniu rozkazów do kolejki prefetch została naruszona protekcja chociażby z powodu możliwości ze dane pobrane przez BIU nigdy nie zostaną zdekodowane ani wykonane np jesli wystąpi jmp i obydwie kolejki (rozkazów wstępnie pobranych oraz zdekodowanych) zostaną opróżnione. Inną opcją było by zapytanie przez EU jednostkę BIU (na poczatku wykonywania rozkazu) jakie uprawnienia ma dana strona z której pobrano rozkaz i na tej podstawie wygenerować ew wyjątek. Ale jeśli BIU już nie ma danej strony w TLB (afaik w 386 TLB jest wspólny dla stron z kodem i danymi), co może się zdażyć (np wykonanie instrukcji rep movs szybko wymieni zawartość TLB), to BIU musiałoby pobierać ponownie dane z Page Dir/Tables co imo jest obarczone dużym kosztem czasowym. Ktoś ma jakies przemyslenia na ten temat lub zajmował się tym? pozdrawiam -- Michał Walenciak Kicer86 at gmail dot com http://kicer.sileman.net.pl gg: 3729519
Re: 80386 i page protection podczas pobierania rozkazu
Author: Bogdan (bogdro)
Date: Sun, 04 Jul 2010 08:20
Date: Sun, 04 Jul 2010 08:20
43 lines
3488 bytes
3488 bytes
W dniu 03.07.2010 17:48, Kicer pisze: > Witam > > mam dość nietypowe pytanie o starocia i386: > może ktoś z grupowiczów orientuje się w jaki sposób (fizycznie) procesor dba > o ochronę stronicowania podczas pobierania rozkazu? Bo jeśli chodzi o > zapis/odczyt danych, jednostka wykonawcza EU zleca zadanie BIU i BIU może na > bieżąco sprawdzić w TLB czy dana strona była już używana i jakie ma prawa > dostępu i na tej podstawie może zwrócić wynik EU które ew wygeneruje wyjątek > (a przynajmniej, na moją logikę tak to może działać). Jednakże jesli chodzi > o pobieranie rozkazu to BIU musiało by przepropagować w jakiś sposób > uprawnienia strony razem z danymi gromadzonymi w kolejce prefetch które > potem trafilyby do dekodera, a z niego do kolejki rozkazów zdekodowanych i > potem dopiero do EU które mogło by sprawdzić czy rozkaz został pobrany > naruszając ochronę stronicowania. > > Myślałem własnie o takim programowaniu informacji ale wydaje mi sie to > bardzo nieeleganckie. Biu nie może też odrazu poinformować EU o tym że przy > pobieraniu rozkazów do kolejki prefetch została naruszona protekcja > chociażby z powodu możliwości ze dane pobrane przez BIU nigdy nie zostaną > zdekodowane ani wykonane np jesli wystąpi jmp i obydwie kolejki (rozkazów > wstępnie pobranych oraz zdekodowanych) zostaną opróżnione. > Inną opcją było by zapytanie przez EU jednostkę BIU (na poczatku wykonywania > rozkazu) jakie uprawnienia ma dana strona z której pobrano rozkaz i na tej > podstawie wygenerować ew wyjątek. Ale jeśli BIU już nie ma danej strony w > TLB (afaik w 386 TLB jest wspólny dla stron z kodem i danymi), co może się > zdażyć (np wykonanie instrukcji rep movs szybko wymieni zawartość TLB), to > BIU musiałoby pobierać ponownie dane z Page Dir/Tables co imo jest obarczone > dużym kosztem czasowym. > > Ktoś ma jakies przemyslenia na ten temat lub zajmował się tym? Nie zajmowałem się w ogóle trybem chronionym, ale spójrz może na podręczniki Intela (jeśli jeszcze tego nie zrobiłeś): http://developer.intel.com/design/Pentium4/documentation.htm (lub jakieś nowsze), w szczególności na tom 3 (System Programming Guide). Tam jest opis stronicowania i ochrony. -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Re: 80386 i page protection podczas pobierania rozkazu
Author: Kicer
Date: Sun, 04 Jul 2010 08:49
Date: Sun, 04 Jul 2010 08:49
23 lines
1585 bytes
1585 bytes
Bogdan (bogdro) wrote: > > Nie zajmowałem się w ogóle trybem chronionym, ale spójrz może na > podręczniki Intela (jeśli jeszcze tego nie zrobiłeś): > http://developer.intel.com/design/Pentium4/documentation.htm (lub > jakieś nowsze), w szczególności na tom 3 (System Programming Guide). > Tam jest opis stronicowania i ochrony. > sam opis stronicowania od strony programistycznej znam dość dobrze:) mnie jednak chodzi o część fizyczną która w najnowszych datasheetach intela jest praktycznie pominięta. W docu do 80386 już troche opisu technicznego jest, ale jest on bardzo powierzchowny i detale jakie mnie interesują są przemilczane. pozdrawiam -- Michał Walenciak Kicer86 at gmail dot com http://kicer.sileman.net.pl gg: 3729519
Re: 80386 i page protection podczas pobierania rozkazu
Author: Marek Borowski
Date: Sun, 04 Jul 2010 14:08
Date: Sun, 04 Jul 2010 14:08
30 lines
2108 bytes
2108 bytes
On 2010-07-04 10:49, Kicer wrote: > Bogdan (bogdro) wrote: > >> >> Nie zajmowałem się w ogóle trybem chronionym, ale spójrz może na Szkoda bo to jest jedyny sensowny tryb w tym procesorze. >> podręczniki Intela (jeśli jeszcze tego nie zrobiłeś): >> http://developer.intel.com/design/Pentium4/documentation.htm (lub >> jakieś nowsze), w szczególności na tom 3 (System Programming Guide). >> Tam jest opis stronicowania i ochrony. >> > > sam opis stronicowania od strony programistycznej znam dość dobrze:) mnie > jednak chodzi o część fizyczną która w najnowszych datasheetach intela jest > praktycznie pominięta. W docu do 80386 już troche opisu technicznego jest, > ale jest on bardzo powierzchowny i detale jakie mnie interesują są > przemilczane. > Napisalem prosty pogramik ktory allokuje dwie strony pamieci, jedna execute + readwrite, druga noaccess. Na koncu strony dolalem kilka instrukcji move. Wykonaly sie. Wydaje mi sie ze informacja o bledzie strony jest wiadoma procesorowi kiedy faktycznie dokonuje tam dostepu, natomiast obsluga wyjatku jest wstrzymywana do czasu zakonczenia poprzednich instrukcji. Pozdr Marek
Re: 80386 i page protection podczas pobierania rozkazu
Author: Kicer
Date: Sun, 04 Jul 2010 20:02
Date: Sun, 04 Jul 2010 20:02
23 lines
1686 bytes
1686 bytes
Marek Borowski wrote: > Napisalem prosty pogramik ktory allokuje dwie strony pamieci, jedna > execute + readwrite, druga noaccess. Na koncu strony dolalem kilka > instrukcji move. Wykonaly sie. Wydaje mi sie ze informacja o bledzie > strony jest wiadoma procesorowi kiedy faktycznie dokonuje tam dostepu, > natomiast obsluga wyjatku jest wstrzymywana do czasu zakonczenia > poprzednich instrukcji. > o to tez jest myśl, jesli BIU wykryje ze pobiera "ciała" instrukcji z nielegalnego miejsca, daje znać EU i te wykonuje wszystko co do tej pory jest w kolejce rozkazów zdekodowanych + to co dekoder zdekoduje z kolejki rozkazów wstępnie pobranych (prefetch) po czym wali wyjątkiem. Brzmi rozsądnie :) dzieki -- Michał Walenciak Kicer86 at gmail dot com http://kicer.sileman.net.pl gg: 3729519
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads