🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#2279
Author: Kicer
Date: Sat, 03 Jul 2010 15:48
38 lines
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
#2280
Author: Bogdan (bogdro)
Date: Sun, 04 Jul 2010 08:20
43 lines
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
#2281
Author: Kicer
Date: Sun, 04 Jul 2010 08:49
23 lines
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
#2282
Author: Marek Borowski
Date: Sun, 04 Jul 2010 14:08
30 lines
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
#2283
Author: Kicer
Date: Sun, 04 Jul 2010 20:02
23 lines
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