Pola wpisów w tablicy translacji strony

July 11th, 2008

Wpisy w tablicy translacji strony zawierają kontrolę oraz pola informacyjne, używane w zarządzaniu środowiskiem pamięci wirtualnej. Większość pól jest podobna wśród wszystkich wpisów używanych w translacji stron w każdym trybie i zajmują te same miejsca bitowe. Jednakże niektóre pola są położone gdzie indziej, co zależy od poziomu w hierarchii translacji stron a także może mieć inne rozmiary zależące od rozmiaru strony fizycznej, wielkości adresu fizycznego, i trybu w jakim są używane. Jakkolwiek pola te mogą różnić względem ustawienia poszczególnych bitów czy ich wielkości, ich znaczenie pozostaje spójne we wszystkich poziomach hierarchicznego tłumaczenia strony oraz we wszystkich trybach operacyjnych.

Definicje pól
Przedstawione sekcje opisują każde pole poprzez wpisy w tablicy translacji strony.

Pole bazowego adresu tablicy translacji. Pola bazowego adresu w tablicy tłumaczenia wskazują na adres fizyczny następnego, niżej położonej tablicy w hierarchii translacji. Tablica struktur danych strony są przyporządkowane 4KB rozmiarom co powoduje, że tylko bity adresu powyżej 11 są przechowywane w polu bazowym adresu w tablicy translacji. Bity 0-11 są zerami. Rozmiar tych pól zależy od trybu:
- W normalnym (non-PAE) stronicowaniu (CR4.PAE=0) to pole określa 32-bit fizyczny adres
- W stronicowaniu PAE (CR4.PAE=1) to pole zawiera 52-bit fizyczny adres

52-bity korespondują z maksymalnym rozmiarem fizycznego adresu dopuszczalnego przez architekturę x86-64. Jeśli procesor ma zaimplementowane wsparcie na więcej niż pełny 52-bit fizyczny adres, oprogramowanie musi wyczyścić niezaimplementowane bity adresów bazowych w tablicach translacyjnych wyższego rzędu. Dla przykładu, jeśli procesor ma zaimplementowane wsparcie dla 40-bit fizycznych adresów, oprogramowanie musi wyczyścić bity 51-40 kiedy będzie zapisywana pole bazowego adresu tablicy translacji we wpisie strony struktur danych.

Pole adresu bazowego strony fizycznej. Pole bazowe adresu bazowego strony fizycznej wskazuje na adres bazowy tłumaczonej strony. To pole znajduje się tylko na najniższym poziomie hierarchii tłumaczenia stron. Rozmiar pola zleży od trybu:
- w normalnym (non_PAE) stronicowaniu (CR4.PAE=0), to pole określa 32-bitowy adres bazowy strony fizycznej.
- w stronicowaniu PAE (CR4.PAE=1) to pole określa 52-bitowy adres bazowy strony fizycznej.

Strony fizyczne mogą być 4kB, 2MB lub 4MB i zawsze dostosowane są adresowo do rozmiaru strony fizycznej. Dla przykładu 2-Mbyte strona fizyczna jest zawsze ustawione na 2-MB granicę adresowania (rozmiaru adresu). Z powodu tej zależności, mniej znaczące bity adresu są zerami czyli:
- 4-Kbyte strona, bity 11-0 przybierają 0
- 2-Mbyte strona, bity 20-0 przybierają 0
- 4-Mbyte strona, bity 21-0 przybierają 0

Present (P) Bit. Bit 0. Ten bit wskazuje czy tablica tłumaczenia strony lub fizyczna strona jest załadowana do fizycznej pamięci. Kiedy bit P jest wyczyszczony do 0, tablica lub fizyczna strona jest nie załadowana do fizycznej pamięci. Kiedy bit P jest ustawiony na 1 tablica lub fizyczna strona jest załadowana do fizycznej pamięci.

Oprogramowanie czyści ten bit do 0 wskazując że strona tablicy lub fizyczna strona nie jest załadowana do fizycznej pamięci. Wyjątek – błąd strony (#PF) zdarza się jeśli nastąpi próba dostępu do tablicy lub strony kiedy bit P jest 0. Systemowe oprogramowanie odpowiada za załadowanie brakującej tablicy lub strony w pamięci i ustawienie bitu P na 1.

Kiedy bit P jest 0, wskazując na nieobecną stronę, wszystkie pozostałe bity we wpisie struktury danych strony, są dostępne dla oprogramowania.

Read/Write (R/W) Bit. Bit1. Ten bit kontroluje dostęp do odczytu/zapisu wszystkich fizycznych stron mapowanych przez tablicę wpisów. Dla przykładu w mapie strony poziomu 4, bit R/W kontroluje dostęp do odczytu/zapisu do wszystkich 128M (512×512x512) stron fizycznych poprzez niżej położone tablice tłumaczeń. Kiedy bit R/W jest wyczyszczony do 0, dostęp jest ograniczony do odczytu. Kiedy bit jest ustawiony na 1, odczyt i zapis jest dozwolony.

User/Supervisor (U/S) Bit. Bit 2. Ten bit kontroluje dostęp użytkownika (CPL 3) do wszystkich fizycznych stron mapowanych przez tablicę wpisów. Dla przykładu 4o dla poziomowej mapy strony bit U/S kontroluje dostęp do wszystkich 128M (512×512x512) stron fizycznych poprzez tablice niższego poziomu. Kiedy bit U/S jest wyczyszczony do 0 dostęp jest tylko dla supervisora (CPL 0, 1, 2). Kiedy bit U/S jest ustawiony na 1, user i supervisor mają dostęp.

Page-Level Writethrough (PWT) Bit. Bit 3. Ten bit wskazuje czy tablica tłumaczenia strony lub fizyczna strona na którą wskazuje wpis ma ustawione cache’owanie typu writethrough czy też writeback. Kiedy bit PWT jest wyczyszczony na 0 tablica lub fizyczna strona używa cache’owania typu writeback. Kiedy bit PWT jest ustawiony na 1 tablica lub fizyczna strona używa writethrough.

Page-Level Cache Disable (PCD) Bit. Bit 4. Ten bit wskazuje czy tablica tłumaczenia strony lub fizyczna strona na którą wskazuje wpis jest cache’owalna. Kiedy bit PCD jest wyczyszczony do 0, tablica lub fizyczna strona są cache’owalne. Kiedy bit PCD jest ustawiony na 1 tablica lub fizyczna strona nie są cache’owalne.

Accessed (A) Bit. Bit 5. Ten bit wskazuje czy tablica tłumaczenia strony lub fizyczna strona na którą wskazuje wpis jest była używana. Bit A zostaje ustawiony na 1 gdy procesor po raz pierwszy czyta lub zapisuje coś do tablicy strony lub strony fizycznej. Bit A nigdy nie jest czyszczony przez procesor. W zamian oprogramowanie musi czyścić ten bit do 0 kiedy potrzebuje obliczyć częstotliwość dostępu do tablicy lub strony fizycznej.

Dirty (D) Bit. Bit 6. Ten bit jest obecny tylko w najniższym poziomie hierarchii translacji stron. Ten bit wskazuje czy tablica tłumaczenia strony lub fizyczna strona na którą wskazuje wpis jest była zapisywana. Bit D jest ustawiany na 1 przez procesor przy pierwszym zapisie. Bit D nie jest nigdy czyszczony przez procesor. W zamian oprogramowanie musi czyścić ten bit do 0 kiedy potrzebuje obliczyć częstotliwość dostępu do tablicy lub strony fizycznej.

Page Size (PS) Bit. Bit 7. ten bit jest obecny tylko we wpisach katalogu strony. Określa najniższy poziom w hierarchii translacji stron i wielkość strony fizycznej. Kiedy bit PS jest wyczyszczony do 0 najniższym poziomem w hierarchii translacji stron jest wpis w tablicy strony a strona fizyczna ma wielkość 4Kbyte. Kiedy bit PS jest ustawiony na 1 najniższym poziomem w hierarchii translacji stron jest wpis w katalogu strony. Wielkość fizycznej strony jest zdeterminowana przez:
- jeśli CR4.PAE=0 i CR4.PSE=1 wielkość fizycznej strony 4Mbytes
- jeśli CR4.PAE=1, wielkość fizycznej strony wynosi 2Mbytes
Global Page (G) bit. Bit 8. Ten bit jest tylko obecny na najniższym poziomie hierarchii translacji stron. Wskazuje on czy fizyczna strona jest globalną stroną. Wpis TBL dla globalnej stronie (G=1) nie jest uznawany za nieważny kiedy CR3 zostaje załadowane także przez instrukcję MOV CRn, lub podczas przełączania zadania. Używanie bitu G wymaga ustawienia bitu zastosowania strony globalnej w CR4 (CR4.PGE=1).

Available to Software (AVL) bit. Te bity są nieinterpretowane przez procesor i są dostępne do użycia przez oprogramowanie systemowe.

Page-Attribute Table (PAT) Bit. Ten bit jest obecny tylko na najniższym poziomie w hierarchii translacji stron :
- jeśli najniższym poziomem jest PTE (PDE.PS=0), PAT zajmuje bit 7
- jeśli najniższym poziomem jest PDE (PDE.PS=1), PAT zajmuje bit 12

Bit PAT jest starszym bitem w 3-bitowym indeksie w rejestrze PAT. Inne dwa bity używane w formowaniu indeksu to PCD i PWT. Nie wszystkie procesory wspierają bit PAT poprzez implementację w rejestrach PAT.

No Execute (NX) Bit. Bit 63. Ten bit istnieje tylko we wpisach tablic translacyjnych, przy czym wyjątkiem jest, że w trybie legacy PDPE nie zawiera go. Ten bit jest nie wspierany przez stronicowanie non-PAE.

Bit NX może być tylko ustawiony kiedy dostępne jest „nie-wykonywalne” zabezpieczenie strony poprzez ustawienie EFER.EXE na 1. Jeśli EFER.NXE=0 bit NX jest traktowany jako rezerwowy. W tym wypadku nastąpi wyjątek błędu strony (#PF) jeśli bit NX nie jest wyczyszczony na 0.

Ten bit kontroluje zdolność do uruchamiania kodu dla wszystkich fizycznych stron mapowanych przez wpisy w tablicy. Dla przykładu, dla mapy strony poziomu 4 bit NX kontroluje zdolność do uruchomienia kodu dla wszystkich 128M (512×512x512) fizycznych stron które są mapowane przez tablice translacyjne niższego poziomu. Kiedy bit NX jest wyczyszczony do 0, kod może być uruchamiany w zmapowanej stronie fizycznej. Kiedy bit NX jest ustawiony na 1 kod nie może być uruchomiony.

Reserved Bits. Oprogramowanie powinno czyścić wszystkie zarezerwowane bitów do 0. Jeśli procesor działa w trybie Long lub jeśli rozszerzenia wielkości strony i fizycznych adresów są włączone w trybie legacy, zostanie wygenerowany wyjątek błędu strony (#PF) jeśli tylko bity zarezerwowane nie zostaną ustawione na 0.

TRANSLACJA STRON W TRYBIE LEGACY

July 11th, 2008

Tryb Legacy wspiera 2 formy translacji:

· Stronicowanie Normal: (nie PAE) Kiedy PAE = 0. Wpisy w tablicy translacji stron są 32 bitowe i używane do tłumaczenia 32 bitowych adresów wirtualnych w adresy fizyczne o wielkości do 40 bitów.

· Stronicowanie PAE: PAE = 1. Wpisy w tablicy translacji stron są 64 bitowe i używane do tłumaczenia 32 bitowych adresów wirtualnych na fizyczne do 52 bitów długości.

Stronicowanie typu Legacy używa do 3 poziomów tablic translacji stron zależnych od rodzaju stronicowania i wielkości używanych stron fizycznych. Wpisy w każdej tablicy są wybierane poprzez pola bitów adresów wirtualnych.

Tablice translacji stron w trybie Legacy to:

Page Table : każdy wpis w tablicy stron (PTE) wskazuje na fizyczną stronę. Jeśli używamy 4 KB stron, tablica stron jest położona na najniższym poziomie hierarchii translacji. PTE nie są używane kiedy tłumaczymy 2Mb czy 4MB strony.

Page Directory : Jeśli używamy 4KB stron każdy wpis w katalogu strony (PDE) wskazuje na tablicę. Jeśli używamy 2 lub 4 MB stron, PDE jest najniżej położony w hierarchii translacji i wskazuje na stronę fizyczną. W stronicowaniu non-PAE katalog strony jest na najwyższym poziomie.

Page-Directory Pointer : Każdy wskaźnik wpisu katalogu strony (PDPE) wskazuje na katalog strony. Wskaźniki do katalogów stron mogą użyte tylko w stronicowaniu PAE i są na najwyższym poziomie hierarchii stronicowania.

OPCJE TRANSLACJI STRON

July 10th, 2008

Sposób translacji stron dostępny dla oprogramowania zależy od tego jakie opcje stronicowania są dostępne. 4 zmienne kontrolne służą do wyboru sposobu stronicowania:
Page Taranslation Enable (CR0.PG)
Physical address extensions (CR4.PAE)
Page-Size extensions (CR4.PSE)
Long-Mode Active (EFER.LMA)

Nie wszystkie sposoby stronicowania są dostępne we wszystkich trybach.
PAGE TRANSLATION ENABLE (PG) bit
Translacja strony jest kontrolowana przez bit PG. Jeśli jest 1 to translacja jest możliwa. Architektura x86-64 używa tego bitu do włączania i wyłączania trybu long jeśli jest on dostępny.

PHYSICAL-ADDRESS EXTENSIONS (PAE) bit
Rozszerzenia adresów fizycznych są kontrolowane przez bit PAE. Jeśli jest 1 – to są dostępne. Ustawienie 1 umożliwia translację wirtualnego adresu w fizyczny o długości do 52 bitów. Jest to dokonywane poprzez podwojenie wielkości wpisów stronicowanej struktury danych z 32 do 64 bitów aby przystosować ją to większej przestrzeni bazowej adresów w pamięci fizycznej. PAE musi być włączony przed aktywacją trybu long.

PAGE-SIZE EXTENSIONS (PSE) bit
Rozszerzenia wielkości stron są kontrolowane przez bit PSE. Ustawienie jego wartości na 1 pozwala systemowi na używanie 4 MB stron fizycznych w procesie translacji. 4 MB strony mogą być mieszane z 4 KB, albo też mogą je całkowicie zastąpić. Wyboru wielkości stron fizycznych dokonuje się w bazowym katalogu wpisów strony (page-directory-entry basis). Kiedy bit ma wartość 0, rozszerzenia są nieaktywne.

PAGE-DIRECTORY PAGE SIZE (PS) bit
Katalog strony jest jedną ze struktur danych używanych w translacji stron. Bit PS pozwala na wybór pomiędzy 4 KB a większymi – 2 i 4 MB rozmiarami stron fizycznych. Kiedy PS = 1, włączone są duże strony fizyczne a PDE schodzi na najniższy poziom w hierarchii translacji. Wielkość dużych stron jest zdeterminowana przez wartości PAE i PSE.