1 Architektura komputerówWykład nr 5: Sposoby adresowania Piotr Bilski
2 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
3 Adres rzeczywisty (efektywny) a adres wirtualnyAdres 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
4 Konwencja zapisu AE – adres efektywnyR – zawartość pola adresowego w rozkazie odnoszącym się do rejestru A – zawartość pola adresowego w rozkazie (X) – zawartość lokacji X
5 Tryby adresowania Natychmiastowy Bezpośredni Pośredni RejestrowyRejestrowy pośredni Z przesunięciem Stosowy
6 Tryb natychmiastowy Kod operacji Wartość argumentu Argument jest przechowywany w rozkazie w postaci liczby o reprezentacji U2. Liczba ta nie może być zbyt duża
7 Tryb bezpośredni AE = A 0 3 4 15 Kod operacji Adres argumentu pamięć Kod operacji Adres argumentu pamięć Argument AE = A
8 Tryb pośredni AE = (A) Możliwe zagnieżdżenia! 0 3 4 15 Kod operacji Kod operacji Adres informacji o adresie argumentu pamięć AE = (A) Argument Możliwe zagnieżdżenia!
9 Tryb rejestrowy AE = R 0 3 4 15 Kod operacji Nazwa (numer rejestru) Kod operacji Nazwa (numer rejestru) rejestry Argument AE = R
10 Tryb rejestrowy pośredni Kod operacji Nazwa (numer) rejestru rejestry pamięć Adres Argument AE = (R)
11 Tryb z przesunięciem AE = (A)+(R) 0 3 4 15 Kod operacji Kod operacji Nazwa (numer) rejestru Adres argumentu rejestry pamięć Adres Argument AE = (A)+(R)
12 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
13 Adresowanie z przesunięciem c.d.Adresowanie z rejestrem podstawowym Indeksowanie (wykorzystuje dedykowany rejestr indeksowy) Kod operacji Rejestr z adresem argumentu Wartość przesunięcia Kod operacji Rejestr z przesunięciem Adres argumentu
14 Tryb stosowy 0 3 4 15 Kod operacji Adres argumentu stos rejestry Kod operacji Adres argumentu stos rejestry Rejestr stosu
15 Typy adresów Fizyczny – umiejscowienie adresu w pamięciLogiczny – umiejscowienie adresu względem początku programu Bazowy – adres początku programu
16 Organizacja pamięci z poziomu systemu operacyjnegoPamięć 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
17 Partycjonowanie z ustalonym rozmiaremJest 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
18 Partycjonowanie z rozmiarem dynamicznymJest to podział pamięci na fragmenty o rozmiarach zależnych od zapotrzebowania procesów 16 MB (SO) 48 MB wolne 16 MB (SO) Proces (20 MB) 28 MB wolne 16 MB (SO) Proces (20 MB) Proces 2 (16) MB 12 MB wolne 16 MB (SO) Proces (18 MB) Proces 2 (16) MB 12 MB wolne
19 Stronicowanie Proces A: pamięć pamięć Strona 0 Strona 1 11 Strona 2 1112 13 14 15 16 17 18 11 12 13 14 15 16 17 18 Strona 0 Strona 1 Tablica stron procesu A: 11 12 15 Wolne ramki: 11 12 15 16 18 Strona 2
20 Adresy fizyczne i logiczne w strukturze stronpamięć Adres logiczny Adres fizyczny 11 12 13 14 15 16 17 18 Strona 0 1 30 12 30 Strona 1 Tablica stron procesu A: 11 12 15 Strona 2
21 Translation Lookaside BufferPamięć 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)!
22 Bufor translacji adresów (TLB)START TAK Zapis w TLB? Sprawdzanie TLB Aktualizacja TLB NIE Dostęp do tablicy stron Generacja adresu fizycznego NIE Obsługa błędu strony Strona w pamięci? TAK STOP
23 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
24 Przestrzenie adresowe PentiumNiesegmentowana pamięć niestronicowana (adres wirtualny = adres fizyczny) - sterowniki Niesegmentowana pamięć stronicowana (BSD) Segmentowana pamięć niestronicowana Segmentowana pamięć stronicowana (UNIX System V)
25 Segmentacja w Pentium IIAdres wirtualny Odniesienie do segmentu Adres względny 16 bitów 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)
26 Selektor i deskryptor segmentu Indeks TI PRV 31 D/B AVL Baza 31-24 GS 19-16 G P DPL S Type Baza 23-16 Baza 15-0 Granica segmentu 15-0
27 Stronicowanie w Pentium IIIstnieje 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
28 Stronicowanie/segmentacja w Pentium II
29 Tryby adresowania PentiumPentium 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
30 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)
31 Ilustracja trybów adresowania PentiumRejestr segmentu Rejestr indeksowy Rejestr bazowy Selektor Pamięć Adres bazowy segmentu Skala Przemieszczenie Adres liniowy Rejestr deskryptora Granica
32 Zarządzanie pamięcią w PowerPCImplementacja zależna jest od architektury (32- lub 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
33 Adres efektywny i rzeczywisty PowerPCAdres rzeczywisty Segment Strona Selektor bajtu Numer strony rzeczywistej Wyrównanie bajta
34 Tryby adresowania PowerPCPoś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)
35 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
36 Kryteria projektowania rozkazówLiczba 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?)
37 Przykład formatu w PDP-8Rozkazy i dane o długości 12 bitów Jeden rejestr – akumulator Pamięć jest podzielona na strony o długości 27 = 128 słów Ósmy bit jest znacznikiem numeru strony
38 Rozkazy PDP-8 Rozkazy z odniesieniem do pamięci Operacja D/I Z/C Przemieszczenie Rozkazy wejścia/wyjścia Urządzenie Kod operacji Mikrooperacje i rozkazy z odniesieniem do rejestrów x CLA CLL CMA CML RAR RAL BSW IAC
39 Rozkazy PDP-10 Elementy instrukcji są ortogonalneAdresowanie wyłącznie bezpośrednie 36-bitowy rozkaz i dane Operacja Rejestr I Rejestr indeksowy Adres w pamięci
40 Format rozkazów Pentium0-4 B B B B B B Przedrostki Kod operacji ModR/M SIB Przesunięcie Natychmiastowe Specyfikator adresu
41 Format rozkazów PowerPC6 b b b b Operacja Opcje/rejestr Opcje/rejestr przeznaczenia źródłowy Wszystkie rozkazy mają długość 32 bitów!