Omówiono mechanizmy segmentacji i domyślny model stronicowania dla strony 4 KB. Przedstawiono również płaskie modele adresowania, w tym wielosegmentowe.
Jako wstęp do tej części przedstawimy ewolucję trybów adresowania pamięci od procesorów i386 do najnowszych.
Intel’owska architektura ESMA to zestaw komponentów wchodzących w skład płyty głównej komputera, tak zaprojektowanych, aby wspierać procesory adresujące pamięć 36-bitowo, zapewniające 36-bitowy kontakt z pamięcią cache oraz adresowanie pamięci RAM o wielkości ponad 4 GB.
| Tabela 4. 1. Ewolucja trybów stronicowania i parametrów z nimi związanych | |
| Procesor | Rozszerzenia |
386/486 | Mechanizm Write Protect |
| Obsługa pamięci Cache (ang. Caching Rules) |
Pentium | Stronicowanie z wielkością strony 4MB |
| Strony Globalne (ang. Global Pages) |
Pentium Pro | Tryb PAE (PAE-36) |
Pentium II | Tryb PSE (PSE-36) |
| Tryb PAT |
Procesory z rozszerzeniem EM-64T | Tryb IA-32e (64-bitowy) |
Mechanizm Write Protect odpowiada za ochronę strony przed zapisem. Z punktu widzenia mechanizmów adresowania - nieistotny. Identyczna uwaga odnosi się do włączenie obsługi pamięci cache. Omawianie tego mechanizmu razem z adresowaniem niepotrzebnie skomplikowałoby mechanizmy adresacji. Zagadnienia współpracy z pamięcią cache oraz tryb PAT zostaną omówione oddzielnie.
W momencie przełączenia procesora z obsługi jednego zadania do drugiego, ładowana jest nowa wartość do rejestru CR3 z tabeli TSS. Mechanizm ten wybierze odpowiednie strony pamięci związane z obsługą danego zadania. Procesor automatycznie usunie wszystkie elementy PTE (oraz 2 lub 4 MB elementy PDE) przechowywane w buforze TLB (ang. Translation Lookaside Buffer) - pewnego typu pamięci cache. Pamięć ta przechowuje adresy pobrane z tabeli translacji stron pamięci związanych z poprzednim zadaniem. W takim podejściu nastąpi brak trafień w buforze TLB przy przełączaniu zadań, co negatywnie wpływa na wydajność przy starcie nowego zadania.
Mechanizm Global Pages wprowadzono od modelu Pentium Pro (jest wspierany we wszystkich modelach późniejszych z rodziny IA-32). System operacyjny może oznaczyć jedną stronę lub więcej jako strony globalne (Global Pages) ustawiając w zależności od trybu pracy procesora następujące flagi.
- dla wyłączonego trybu PAE – strona 4KB - flaga w tabeli PTE opisującej stronę - PTE[G] bit = 1
- dla wyłączonego trybu PAE – strona 4MB - flaga w katalogu stron PDE opisującym stronę -PDE[G] bit = 1
- dla włączonego trybu PAE - strona 4KB – flaga w tabeli PTE opisującej stronę - PTE[G] bit = 1
- dla włączonego trybu PAE – strona 2MB - flaga w katalogu stron PDE opisującym stronę - PDE[G] bit = 1
W momencie przełączania zadania, gdy ładowany jest rejestr CR3 adresem katalogu stron nowego zadania, procesor wyczyści wszystkie elementy PTE w buforze TLB z wyjątkiem tych oznaczonych jako Global Pages. Elementy PDE i PTE stron oznaczonych jako globalne - pozostają.
Stronicowanie z wielkością strony 4 MB

Rys. 4.1. Proces adresowania 32-bitowego (translacji) dla strony o wielkości 4 MB.
Mechanizm stronicowania 4-MB włącza się za pomocą ustawienia bitu PG=1 w rejestrze CR0, bitu PSE w rejestrze CR4 i jednocześnie ustawiając bit PS w elemencie PDE.

Rys. 4.2. Format elementu PDE dla trybu 32-bitowego – strona 4 MB.
| Tabela 4.2. Obsługa trybu PAE w systemach Windows 2000 i 2003 | ||
| Wersja Windows | PAE wspierane? | Uwagi |
Windows 2000 Server | Nie | Ograniczenie do 4GB. |
Windows 2000 Advanced Server | Tak | Kiedy tryb PAE jest włączony (domyślnie nie), system posiada ograniczenie na fizyczną przestrzeń adresową do 8 GB. |
Windows 2000 Datacenter Server | Tak | Kiedy tryb PAE jest włączony (domyślnie nie), system posiada ograniczenie na fizyczną przestrzeń adresową do 32 GB. |
Windows 2003 Web | Tak | System posiada ograniczenie na fizyczną przestrzeń adresową do 2 GB. |
Windows 2003 Standard | Tak | System posiada ograniczenie na fizyczną przestrzeń adresową do 4 GB. |
Windows 2003 Enterprise | Tak | Kiedy tryb PAE jest włączony (domyślnie nie), system posiada ograniczenie na fizyczną przestrzeń adresową do 32 GB. |
Windows 2003 Datacenter | Tak | Kiedy tryb PAE jest włączony (domyślnie nie), system posiada ograniczenie na fizyczną przestrzeń adresową do 64 GB. |
| Uwaga! |
Z metodą stronicowania PAE nierozerwalnie jest związany mechanizm Windows DEP – Data Execution Prevention. Zapewniający ochronę strony przed napisaniem przez nieupoważniony kod. Do zagadnienia wrócimy w dalszej części. |

Rys. 4.3. Mechanizm stronicowania dla trybu PAE (strona 4 KB).
Włączenie trybu PAE następuje po ustawieniu bitów w następujących rejestrach:
- PG flag (bit 31) rejestr CR0—włączenie stronicowania
- PAE flag (bit 5) rejestr CR4 – włączenie trybu PAE.
W trybie adresowania PAE procesor wspiera dwa typy stron. O wielkości 4KB lub 2 MB. Dla celów adresowania dodano tylko jeszcze jeden poziom adresacji (2 bitową tablicę) – zwaną tabelą wskaźników do katalogu tabel stron PDPTE (ang. Page-Directory Pointer Table). Ilość elementów w ostatecznym rozrachunku nie uległa zmianie i mamy 2^20 stron 4KB.
Rozszerzono wielkość elementu PTE (ang. Page Table Entries) z 32-bitów do 64-bitów, aby móc adresować przestrzeń 36 a nie 32-bitową i zachować 4KB wielkość strony i 512 wpisów w każdej tabeli i katalogu stron. Element PDPTE został rozszerzony z 32 do 64-bitowego i zawiera teraz 4 64-bitowe wpisy wskazujące na 4 katalogi tablic stron (elementy PDE).
20-bitowy adres bazowy elementu PDE zapisany w rejestrze CR3 (PDBR) został zastąpiony 27-bitowym adresem bazowym elementu PDPTE (ang. Page-Directory-Pointer-Table-Entry). Taki format umożliwia określenie adresu bazowego elementu PDPTE z dokładnością do 32-bajtów.

Rys. 4.4. Format elementu Page-Directory-Pointer-Table dla trybu PAE (strona 4 KB).

Rys. 4.5. Format elementu Page-Directory-Entry dla trybu PAE (strona 4 KB).

Rys. 4.6. Format elementu Page-Table-Entry dla trybu PAE (strona 4 KB).

Rys. 4.7. Mechanizm stronicowania dla trybu 36-bitowego PAE (strona 2 MB).

Rys. 4.8. Format elementu Page-Directory-Pointer-Table dla trybu PAE (strona 2 MB).

Rys. 4.9. Format elementu Page-Directory-Entry dla trybu PAE (strona 2 MB).
Mechanizm PSE-36 jest alternatywnym do PAE sposobem adresowania 36-bitowej przestrzeni adresowej. Wykorzystuje się tu strony 4 MB, które są mapowane w 64-GB przestrzeni adresów fizycznych. Tryb ten dostępny jest od procesora Pentium III, po ustawieniu następujących bitów w poniższych rejestrach.
- PSE-36 CPUID feature flag
- Flaga PG (bit 31) w rejestrze CR0 — 1 – włącza stronicowanie
- Flaga PAE (bit 5) w rejestrze CR4 — 0 – wyłącza mechanizm PAE
- Flaga PSE (bit 4) w rejestrze CR4 i flaga PS (bit 7) w elemencie PDE — 1 – włącza 4 MB wielkość strony
Lub
- Flaga PSE (bit 4) w rejestrze CR4 — ustawiona na 1 i flaga PS (bit 7) w elemencie PDE— 0 włącza 4-KB stronę z trybem adresacji 32-bitowym (poniżej 4 GB).

Rys. 4.10. Mechanizm stronicowania dla trybu 36-bitowego PSE (strona 4 MB).

Rys. 4.11. Format elementu PDE dla trybu PSE-36 – strona 4 MB.
W roku 2004 w odpowiedzi na wypuszczenie przez AMD procesorów z rozszerzeniem 64-bitowym, INTEL publikuje specyfikację swojego modelu architektury 64-bitowej o nazwie kodowej EM-64T (ang. Extended Memory 64 Technology). Procesory wyposażone w rozszerzenie EM-64T dodają nowy tryb pracy do architektury IA-32 o nazwie IA-32e (patrz część 1 rys. 1.6). Tryb ten posiada dwa pod-tryby:
- pierwszy (tryb kompatybilny) pozwalający na uruchamianie aplikacji 32-bitowych na komputerach wyposażonych w tryb EM-64T bez jakiejkolwiek modyfikacji
- drugi (64-bitowy, natywny) wykorzystujący już 64-bitową architekturę adresowania pamięci
Pod-tryb 64-bitowy zapewnia:
- plaski 64-bitowy model adresowania pamięci,
- 8 nowych rejestrów ogólnego przeznaczenia (ang. General Purpose Register) R8-R15
- 8 nowych rejestrów do obsługi instrukcji SIMD (SSE, SSE2, SSE3) XMM8-XMM15
- wszystkie rejestry i wskaźniki mają teraz wielkość 64-bitów
| Tabela 4.3. Porównanie właściwości pod-trybów – trybu IA-32e | ||||
| System Operacyjny | Wielkość adresu | Wielkość słowa operandu | Rozszerzenia rejestrów | Rejestry ogólnego przeznaczenia |
64-bitowy | 64 | 32 | Tak | 64 |
Kompatybilny | 32 | 32 | Nie | 32 |
| 16 | 16 |
| 16, 8 |
Dla przypomnienia i rozdziału poszczególnych rodzin uporządkujmy ich kolejność:
Rodzina i386 (80386), SX, DX, SL (oraz koprocesor arytmetyczny i387 - 80387)
Rodzina i486,DX,SX,DX2, DX4 oraz pochodne jak i487
Rodzina Pentium - P54, P55 czyli Pentium i Pentium MMX, Overdrive
Rodzina P6 - Pentium Pro, Pentium II, Pentium III i Pentium III Xeon
Rodzina Pentium 4, Pentium D, oraz Pentium z serii Extreme Editions bazują na architekturze o nazwie kodowej Intel NetBurst. Większość wczesnych modeli procesorów Xeon w tym model z serii 5000 i 7100 również.
Rodzina Core Duo, Core Solo i dwurdzeniowe procesory Xeon z serii LV bazują na zmodyfikowanej architekturze Pentium M.
Rodzina Xeon z serii 3000, 3200, 5100, 5300, 7200 oraz 7300, Pentium dual-core, Core Duo, Core 2 Quad, oraz Core 2 Extreme bazują na architekturze Intel Core.
Rodzina Xeon z serii 5200, 540, Core 2 Quad z serii Q8000, Core 2 Extreme z serii QX9000 bazują na zmodyfikowanej architekturze Intel Core.
Rodzina P6, Pentium M, Core Solo, Core Duo, dual-core Xeon z serii LV, i wcześniejsza generacja procesorów Pentium 4 i Xeon wspierają wyłącznie architekturę IA-32.
Rodzina Xeon z serii 3000, 3200, 5000, 5100, 5200, 5300, 5400, 7100, 7200, 7300 Intel Core 2 Duo, Core 2 Extreme, Core 2 Quad, Pentium D, Pentium Dual-Core i nowsze wersje Pentium 4 oraz Xeon wspierają już zarówno IA-32 jak i IA-32e.
| Uwaga |
64-bitowa architektura INTEL’a w trybie adresowania PAE pozwala na potencjalne mapowanie 64-bitowej przestrzeni liniowej na 52-bitowy adres fizyczny. Jednakże we wczesnych modelach procesorów adresacja PAE pozwala jednak na translację wyłącznie 48-bitowej adresacji liniowej na 40-bitowy adres fizyczny. |
Tryb IA-32e jest zbliżony do adresacji PAE, jednakże stosuje się aż cztero-poziomową strukturę odwzorowania. Dodano element o oznaczeniu tabela PML4 (ang. page map level 4).
Zanim nastąpi przełączenie w tryb IA-32e, musi nastąpić włączenie trybu PAE poprzez ustawienie flagi CR4.PAE = 1. Włączenie trybu PAE w procesorach wyposażonych w rozszerzeni EM-64T rozszerza wielkość elementu PDE (page-directory entries) i PTE (page-table entries) z 32 do 64 bitów. Pozwala to na wsparcie adresacji fizycznej (ponad 32-bity). Włączenie trybu IA-32e bez włączonego wcześniej trybu PAE skutkuje wyjątkiem typu general-protection exception, #GP.
Tabele PML4 wykorzystywane są wyłącznie w trybie IA-32e. Dla trybu IA-32 są wyłączone niezależnie od tego czy PAE jest włączone czy nie.
Istniejący wskaźnik PDPT (ang. page-directory pointer table) został rozszerzony z 2-bitowego (4 wartości) do 512 8-bajtowych elementów. W rezultacie 9-bitów adresu liniowego jest wykorzystywanych do indeksowania elementów tabel PDP. Wielkość elementu PDE (ang. page-directory entry) i PTE (ang. page-table entry) to 512 8-bajtowych wpisów, każdy zaś z nich odpowiada 9-bitowej przestrzeni adresu liniowego. Stąd całkowita długość przestrzeni adresacji liniowej wynosi (PML4 + PDP + PDE + PTE + offset strony ) i równa się 48-bitów. Metoda translacji najstarszych 16-bitów adresu liniowego na adres fizyczny jest na dzień dzisiejszy nie określona (zarezerwowana).
Flaga PS (PDE.PS) w elemencie PDE (ang. page directory entry) określa wybór wielkości strony 4-KB lub 2-MB. Bit CR4.PSE jest w trybie IA-32e ignorowany.

Rys. 4.12. Mechanizm stronicowania dla trybu 64-bitowego (strona 4 KB).

Rys. 4.13. Format elementu PML4 dla trybu 64-bitowego – strona 4 KB

Rys. 4.14. Format elementu PDPTE dla trybu 64-bitowego – strona 4 KB

Rys. 4.15. Format elementu PDE dla trybu 64-bitowego – strona 4 KB

Rys. 4.16. Format elementu PTE dla trybu 64-bitowego – strona 4 KB.

Rys. 4.17. Mechanizm stronicowania dla trybu 64-bitowego (strona 2 MB).

Rys. 4.18. Format elementu PML4 dla trybu 64-bitowego – strona 2 MB

Rys. 4.19. Format elementu PDPTE dla trybu 64-bitowego – strona 2 MB

Rys. 4.20. Format elementu PDE dla trybu 64-bitowego – strona 2 MB.
W następnej części – po dość długim wstępnie dotyczącym sprzętu i w oderwaniu od systemu operacyjnego - przedstawimy jak system Windows przydziela pamięć dla systemu i aplikacji w różnych konfiguracjach sprzętowych i systemowych.
![]() | Jacek Światowiak (MCT, MCSE, MCSE+M, MCSE+S, MCTS, MCP) |