Zarządzanie pamięcią w 32 i 64-bitowych systemach Windows, cz. III     Windows Server 2008     Zarządzanie pamięcią w 32 i 64-bitowych systemach Windows, cz. V

Zarządzanie pamięcią w 32 i 64-bitowych systemach Windows, cz. IV Udostępnij na: Facebook

Windows 2000/XP/2003/Vista/2008

Autor: Jacek Światowiak

Opublikowano: 20 grudnia 2007

Zawartość strony
W poprzedniej części  W poprzedniej części
Intel ESMA (ang. Extended Server Memory Architecture)  Intel ESMA (ang. Extended Server Memory Architecture)
Global Pages  Global Pages
Stronicowanie z wielkością strony 4 MB  Stronicowanie z wielkością strony 4 MB
Tryby PAE (ang. Physical Address Extension)  Tryby PAE (ang. Physical Address Extension)
Tryb PAE dla adresowania 36-bitowego z wielkością strony 4 KB  Tryb PAE dla adresowania 36-bitowego z wielkością strony 4 KB
Tryb PAE dla adresowania 36-bitowego z wielkością strony 2 MB  Tryb PAE dla adresowania 36-bitowego z wielkością strony 2 MB
Tryb PSE-36 dla adresowania 36-bitowego z wielkością strony 4 MB  Tryb PSE-36 dla adresowania 36-bitowego z wielkością strony 4 MB
Rozszerzenie EM-64T (IA-32e)  Rozszerzenie EM-64T (IA-32e)
Procesory INTEL’a z serii i386 i późniejsze  Procesory INTEL’a z serii i386 i późniejsze
Adresowanie (stronicowanie) dla trybów 64-bitowych (tryb IA-32e)  Adresowanie (stronicowanie) dla trybów 64-bitowych (tryb IA-32e)
Tryb IA32e - strona 4 KB  Tryb IA32e - strona 4 KB
Tryb IA32e - strona 2 MB  Tryb IA32e - strona 2 MB
Przeczytaj pozostałe części tego artykułu  Przeczytaj pozostałe części tego artykułu

W poprzedniej części

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.

 Do początku strony Do początku strony

Intel ESMA (ang. Extended Server Memory Architecture)

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.

 Do początku strony Do początku strony

Global Pages

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ą.

 Do początku strony Do początku strony

Stronicowanie z wielkością strony 4 MB

Stronicowanie z wielkością strony 4 MB

Rys. 4.1. Proces adresowania 32-bitowego (translacji) dla strony o wielkości 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.

Rys. 4.2. Format elementu PDE dla trybu 32-bitowego – strona 4 MB.

 

 Do początku strony Do początku strony

Tryby PAE (ang. Physical Address Extension)

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.

 

 Do początku strony Do początku strony

Tryb PAE dla adresowania 36-bitowego z wielkością strony 4 KB

Rys. 4.3. Mechanizm stronicowania dla trybu PAE (strona 4 KB).

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.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.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.6. Format elementu Page-Table-Entry dla trybu PAE (strona 4 KB).

 

 Do początku strony Do początku strony

Tryb PAE dla adresowania 36-bitowego z wielkością strony 2 MB

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

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.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).

Rys. 4.9. Format elementu Page-Directory-Entry dla trybu PAE (strona 2 MB).

 

 Do początku strony Do początku strony

Tryb PSE-36 dla adresowania 36-bitowego z wielkością strony 4 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.10. Mechanizm stronicowania dla trybu 36-bitowego PSE (strona 4 MB).

 

Rys. 4.11. Format elementu PDE dla trybu PSE-36 – strona 4 MB.

Rys. 4.11. Format elementu PDE dla trybu PSE-36 – strona 4 MB.

 

 Do początku strony Do początku strony

Rozszerzenie EM-64T (IA-32e)

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

 

 Do początku strony Do początku strony

Procesory INTEL’a z serii i386 i późniejsze

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.

 Do początku strony Do początku strony

Adresowanie (stronicowanie) dla trybów 64-bitowych (tryb 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.

 Do początku strony Do początku strony

Tryb IA32e - strona 4 KB

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

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.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.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.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.16. Format elementu PTE dla trybu 64-bitowego – strona 4 KB.

 

 Do początku strony Do początku strony

Tryb IA32e - strona 2 MB

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

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.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.19. Format elementu PDPTE dla trybu 64-bitowego – strona 2 MB

 

Rys. 4.20. Format elementu PDE 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.

 Do początku strony Do początku strony

Przeczytaj pozostałe części tego artykułu


Jacek Światowiak Jacek Światowiak (MCT, MCSE, MCSE+M, MCSE+S, MCTS, MCP)
Absolwent Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej. Obecnie zatrudniony w Altkom Akademia S.A. jako Trener Technologii Microsoft. Posiada bogate doświadczenie w zakresie wdrażania różnych technologii informatycznych. Od 2002 roku wykładowca Technologii i Protokołów Sieciowych na Podyplomowym Studium Politechniki Gdańskiej. Jest współautorem skryptu dla studentów informatyki: „Protokoły IPv6 – Opis protokołów. Materiały do laboratorium”. Posiada certyfikaty MCT, MCSE, MCSE+M, MCSE+S, MCTS Microsoft Exchange Server 2007, MCP ID 3621156.
 Do początku strony Do początku strony

Zarządzanie pamięcią w 32 i 64-bitowych systemach Windows, cz. III     Windows Server 2008     Zarządzanie pamięcią w 32 i 64-bitowych systemach Windows, cz. V