34 3. Kolejne generacje mikroprocesorów Jinny INTEL
Rejestr GDTR jest rejestrem 40-bitowym zawierającym 24-bitowy adres fizyczny w pamięci (16 MB) oraz 16-bitową odległość liczoną od lego adresu. Rejestr GDTR określa pewien segment w pamięci operacyjnej, /uwierający tablicę deskryp-torów, której budowę przedstawiono na rys. 3.4.
Pamięć operacyjna OH
GDTR
DługośC (15...0) | |
Adres poczÄ…tkowy segmentu | |
(15...0) â– - | |
1 Adres poczÄ…tkowy segmentu (23... 16) |
Prawo dostępu |
0000H (rezerwa dla 80386) | |
Dcskryptor 0
Dcskryptor 1
OFFFFFFH
Rys. 3.4. Struktura tablicy deskryptorów globalnych
Tablica ta może mieć do 64 KB i zawierać maksymalnie 8192 deskryptorów (po 8 bajtów). Każdy dcskryptor definiuje nowy segment w pamięci operacyjnej i zawiera adres początku segmentu, długość segmentu oraz dodatkowe informacje określające atrybuty dostępu do segmentu. Tak więc rejestr GDTR wskazuje w pamięci operacyjnej tablicę, która z kolei definiuje do 8192 segmentów. Wyzerowanie drugiego bitu w selektorze (rys. 3.1) powoduje wybieranie rejestru GDTR, z kolei 14-bitowa wartość indeksu wybiera jeden z deskryptorów w tablicy, której początek wskazuje rejestr GDTR. Jeżeli jeden z selektorów CS, SS, DS lub ES zostanie załadowany nową wartością (np. rozkazem POP ES), to procesor 80286 kopiuje informacje z deskryp-
powered by
3.2. Mikroprocesor 80286
tora w pamięci operacyjnej do odpowiedniego rejestru /wiązanego z selektorem. Rejestry te (rys. 3.2) są 48-bitowe i nie są dostępne programowo. Identycznie funkcjonuje automatyczne przepisywanie do rejestrów TR i LDTR. Rejestr LDTR jest rejestrem alternatywnym do GDTR. Tak więc w zależności od stanu drugiego bitu selektora, wartość indeksu wskazuje dcskryptor z globalnej bądź lokalnej tablicy deskryptorów. Jeden selektor może zaadresować tym sposobem 16 384 segmentów. Ponieważ ka/dv segment może mieć 64 KB, powstaje teoretyczna, wirtualna przestrzeń adresowa o pojemności 230 bajtów. Ta olbrzymia przestrzeń adresowa jest jednak w dalszym ciągu podzielona na segmenty nie większe niż 64 KB.
GDTR
OH
OFFFFFFH
Pamięć operacyjna
15
0
23
000C ’ Selektor (CS,DS.SS,ES)
0 Adres poczÄ…tku
segmentu | |
i | |
15 0 |
Długość
0
0
n
j
Offset
Prawo dostępu 15 0
Adres
fizyczny
Pamięć operacyjna
OH Adres poczÄ…tku 23 segmentu Q [___ | |
Ades fizyczny | |
OFFFFFFH |
t
Rys. 3.5. Obliczanie adresu w trybie adresowania wirtualnego
Długość 16 \1B
Na rysunku 3.5 przedstawiono sposób uzyskiwania fizycznego adresu w trybie adresowania wirtualnego. Do 24-bitowego adresu początku segmentu jest dodawany 16-bitowy offset, podobnie jak w procesorach 8086/80186. Dodatkowo jest sprawdzane, czy nie została przekroczona żądana długość segmentu oraz czy są analizowane
0 | ||||
P |
DPL | S |
F. | C/ED |
R/W |
A |
Rys. 3.6. Atrybuty dostępu do segmentu