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!