Transcript Wykład 5
Architektura komputerów
Wykład nr 5: Sposoby
adresowania
Piotr Bilski
Skąd potrzeba różnych trybów
adresowania?
• Przestrzeń pamięci rzeczywistej lub
wirtualnej jest zwykle większa od
przestrzeni adresowanej przez argument
(zbyt mała liczba bitów)
• Konieczny jest kompromis pomiędzy
zakresem adresów i prostotą uzyskiwania
adresu
Adres rzeczywisty (efektywny) a
adres wirtualny
• Adres rzeczywisty jest adresem fizycznego
miejsca w pamięci
• Adres wirtualny (efektywny - AE) jest
adresem przechowywanym jako argument
rozkazu
• Proces translacji adresu wirtualnego na
rzeczywisty jest zależny od organizacji
pamięci
Konwencja zapisu
• AE – adres efektywny
• R – zawartość pola adresowego w
rozkazie odnoszącym się do rejestru
• A – zawartość pola adresowego w
rozkazie
• (X) – zawartość lokacji X
Tryby adresowania
•
•
•
•
•
•
•
Natychmiastowy
Bezpośredni
Pośredni
Rejestrowy
Rejestrowy pośredni
Z przesunięciem
Stosowy
Tryb natychmiastowy
0
3 4
Kod operacji
15
Wartość argumentu
Argument jest przechowywany w rozkazie w postaci
liczby o reprezentacji U2. Liczba ta nie może być
zbyt duża
Tryb bezpośredni
0
3 4
Kod operacji
15
Adres argumentu
pamięć
Argument
AE = A
Tryb pośredni
0
3 4
Kod operacji
15
Adres informacji o adresie argumentu
pamięć
AE = (A)
Argument
Możliwe zagnieżdżenia!
Tryb rejestrowy
0
3 4
Kod operacji
15
Nazwa (numer rejestru)
rejestry
Argument
AE = R
Tryb rejestrowy pośredni
0
3 4
Kod operacji
15
Nazwa (numer) rejestru
pamięć
rejestry
Adres
Argument
AE = (R)
Tryb z przesunięciem
0
3 4
Kod operacji
15
Nazwa (numer) rejestru
Adres argumentu
pamięć
rejestry
Adres
Argument
AE = (A)+(R)
Adresowanie z przesunięciem c.d.
• Adresowanie względne (R=PC)
• Adresowanie z rejestrem podstawowym
(wygodne dla pamięci segmentowanej) –
AE=R+A
• Indeksowanie (interpretacja pola rejestru i
pola adresowego odwrotna niż w
przypadku adresowania z rejestrem
podstawowym) – AE=A+R
Adresowanie z przesunięciem c.d.
• Adresowanie z rejestrem podstawowym
0
3 4
Kod operacji
15
Rejestr z adresem argumentu Wartość przesunięcia
• Indeksowanie (wykorzystuje dedykowany
rejestr indeksowy)
0
3 4
Kod operacji
Rejestr z przesunięciem
15
Adres argumentu
Tryb stosowy
0
3 4
Kod operacji
15
Adres argumentu
stos
rejestry
Rejestr stosu
Typy adresów
• Fizyczny – umiejscowienie adresu w
pamięci
• Logiczny – umiejscowienie adresu
względem początku programu
• Bazowy – adres początku programu
Organizacja pamięci z poziomu
systemu operacyjnego
• Pamięć stronicowana (model niewidzialny
dla programisty) – podzielona jest na małe
fragmenty (ramki stron), które
przydzielane są fragmentom (stronom)
programów
• Pamięć segmentowana (model dostępny
dla programisty) – zapewnia odrębną
przestrzeń adresową dla każdego procesu
Partycjonowanie z ustalonym
rozmiarem
• Jest to podział pamięci na fragmenty o ustalonych
rozmiarach (stałych lub zmiennych)
16 MB (SO)
16 MB
16 MB (SO)
4 MB
8 MB
16 MB
16 MB
8 MB
16 MB
Partycjonowanie z rozmiarem
dynamicznym
• Jest to podział pamięci na fragmenty o rozmiarach
zależnych od zapotrzebowania procesów
16 MB (SO)
16 MB (SO)
16 MB (SO)
Proces 1
(20 MB)
Proces 1
(20 MB)
28 MB wolne
Proces 2
(16) MB
Proces 2
(16) MB
12 MB wolne
12 MB wolne
48 MB wolne
16 MB (SO)
Proces 3
(18 MB)
Stronicowanie
pamięć
Proces A:
Strona 0
Strona 1
Strona 2
pamięć
11
11
Strona 0
12
12
Strona 1
13
13
14
14
Wolne ramki: 15
Tablica stron
procesu A:
11
16
11
16
12
17
12
17
18
15
15
16
18
15
18
Strona 2
Adresy fizyczne i logiczne w
strukturze stron
pamięć
Adres fizyczny
Adres logiczny
12 30
1 30
Tablica stron
procesu A:
11
12
15
11
Strona 0
12
Strona 1
13
14
15
16
17
18
Strona 2
Translation Lookaside Buffer
• Pamięć podręczna dla ostatnich translacji
adresów w pamięci
• Bardzo szybka i mała
• TLB współpracuje z „prawdziwą” pamięcią
podręczną
• Niewłaściwy projekt prowadzi do
problemów w systemie (patrz procesory
Phenom)!
Bufor translacji adresów (TLB)
START
TAK
Zapis w
TLB?
Sprawdzanie TLB
Aktualizacja TLB
NIE
Dostęp do tablicy
stron
Obsługa błędu
strony
NIE
Strona w
pamięci?
Generacja adresu
fizycznego
TAK
STOP
Segmentacja
• Prostota zarządzania strukturami danych o
zmiennej wielkości
• Możliwość indywidualnego przypisywania
praw procesom do poszczególnym
segmentom
• Możliwość użytkowania segmentu przez
wiele procesów
• Adresowanie: numer segmentu + adres
względny
Przestrzenie adresowe Pentium
• Niesegmentowana pamięć niestronicowana
(adres wirtualny = adres fizyczny) - sterowniki
• Niesegmentowana pamięć stronicowana (BSD)
• Segmentowana pamięć niestronicowana
• Segmentowana pamięć stronicowana (UNIX
System V)
Segmentacja w Pentium II
Adres wirtualny
Odniesienie do
segmentu
16 bitów
•
•
•
•
Adres względny
32 bity
2 bity odniesienia do segmentu przeznaczone na mechanizm ochrony
Adres względny pozwala adresować 232 = 4 GB pamięci
Całkowita ilość adresowanej pamięci wynosi 216 x 232 = 64 TB
Dostęp procesu do segmentu zależny jest od poziomu dostępności
(oznaczany cyfrą od 0 – najwyższy do 3 - najniższy)
Selektor i deskryptor segmentu
16
3
Indeks
2
1
0
TI
PRV
0
31
Baza
31-24
D
G /
B
Baza 15-0
A
V
L
GS
19-16
P DPL S Type
Baza 23-16
Granica segmentu 15-0
Stronicowanie w Pentium II
• Istnieje katalog stron o długości 1024 wpisów,
dzielący pamięć na tyleż grup stron
• Każda grupa stron zawiera do 1024 wpisów
• Każda strona ma rozmiar 4 kB lub 4MB (w
zależności od wartości bitu PSE)
• Tablice stron mogą być przechowywane w
pamięci wirtualnej
• Bufor translacji adresów zawiera do 32 zapisów
tablic stron dla określonego katalogu stron
Stronicowanie/segmentacja w Pentium II
Tryby adresowania Pentium
• Pentium posiada sześć rejestrów
segmentowych (SR) do przechowywania
adresów początkowych segmentów
• Z rejestrem segmentowym związany jest
rejestr deskryptora segmentu (zawiera
prawa dostępu do segmentu i jego
długość)
• Dodatkowe rejestry (podstawowy i
indeksowy) pomagają budować adres
Tryby adresowania Pentium c.d.
•
•
•
•
•
•
•
•
•
Natychmiastowy (Arg = A)
Rejestrowy (AL = R)
Z przesunięciem (AL = (SR) + A)
Z rejestrem podstawowym (AL = (SR) + (B))
Z rejestrem podstawowym z przesunięciem (AL =
(SR) + (B) + A)
Skalowane indeksowanie z przesunięciem (AL = (SR)
+ (I) x S + A)
Z rejestrem podstawowym z indeksem i przesunięciem
(AL = (SR) + (B) + (I) + A)
Z rejestrem podstawowym ze skalowanym indeksem i
przesunięciem (AL = (SR) + (I) x S + (B) + A)
Względny (AL = (PC) + A)
Ilustracja trybów adresowania Pentium
Rejestr segmentu
Rejestr bazowy
Rejestr indeksowy
Selektor
Pamięć
Skala
Adres
bazowy
segmentu
Przemieszczenie
Adres liniowy
Rejestr deskryptora
Granica
Zarządzanie pamięcią w PowerPC
• Implementacja zależna jest od architektury (32lub 64-bitowej – prostsza lub bardziej złożona
segmentacja)
• Mechanizm translacji adresu bloku stosowany
jest jako alternatywa dla mechanizmu
stronicowania – pozwala ominąć stronicowanie
dla dużych bloków pamięci
• Posiada 16 rejestrów segmentowych
Adres efektywny i rzeczywisty PowerPC
• Adres efektywny
0
3 4
Segment
19 20
Strona
31
Selektor bajtu
• Adres rzeczywisty
0
19 20
Numer strony rzeczywistej
31
Wyrównanie bajta
Tryby adresowania PowerPC
• Pośredni (AE = (BR) + D)
• Pośredni indeksowany (AE = (BR) +(IR))
• Adresowanie rozgałęzień
– Bezwzględny (AE = I)
– Względny (AE = (PC) +I)
– Pośredni (AE = (LR/CR))
• Rejestrowy stałopozycyjny (AE = GPR)
• Natychmiastowy (Arg = I)
• Rejestrowy zmiennopozycyjny (AE = FPR)
Format rozkazu
• Długość rozkazu jest ograniczona przez
szerokość stosowanych magistral
• Długość rozkazu powinna być równa
szerokości magistrali lub jej wielokrotności
• Konieczny jest kompromis pomiędzy
liczbą bitów przeznaczoną na kod rozkazu
a przestrzenią adresową
• Rozkazy zawierające kody o zmiennej
długości są bardziej elastyczne
Kryteria projektowania rozkazów
•
•
•
•
•
Liczba trybów adresowania
Liczba argumentów
Liczba rejestrów i ich zestawów
Zakres adresów
Stopień granulacji adresu (adresowanie po
bajcie, czy po słowie?)
Format rozkazów Pentium
0-4 B
Przedrostki
1-2 B
Kod operacji
0-1 B
0-1 B
ModR/M
SIB
0-4 B
Przesunięcie
Specyfikator adresu
0-4 B
Natychmiastowe
Format rozkazów PowerPC
6b
Operacja
5b
Opcje/rejestr
przeznaczenia
5b
16 b
Opcje/rejestr
źródłowy
Wszystkie rozkazy mają długość 32 bitów!