Organizacja pamięci wewnętrznej komputerów



Podobne dokumenty
Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Schematy zarzadzania pamięcia

Architektura komputerów

Architektura komputerów

Architektura komputerów

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

architektura komputerów w. 8 Zarządzanie pamięcią

dr inż. Jarosław Forenc

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Systemy operacyjne III

ARCHITEKTURA PROCESORA,

Zasada działania pamięci RAM Pamięć operacyjna (robocza) komputera - zwana pamięcią RAM (ang. Random Access Memory - pamięć o swobodnym dostępie)

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią w systemie operacyjnym

Zarządzanie zasobami pamięci

43 Pamięci półprzewodnikowe w technice mikroprocesorowej - rodzaje, charakterystyka, zastosowania

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Temat: Pamięci. Programowalne struktury logiczne.

Organizacja typowego mikroprocesora

Pamięć. Podstawowe własności komputerowych systemów pamięciowych:

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Pamięć RAM. Pudełko UTK

Stronicowanie w systemie pamięci wirtualnej

Współpraca procesora ColdFire z pamięcią

LEKCJA TEMAT: Zasada działania komputera.

Budowa pamięci RAM Parametry: tcl, trcd, trp, tras, tcr występują w specyfikacjach poszczególnych pamięci DRAM. Czym mniejsze są wartości tych

Budowa systemów komputerowych

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Architektura systemu komputerowego

Mikroprocesor Operacje wejścia / wyjścia

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com

LEKCJA. TEMAT: Pamięć operacyjna.

Pamięci półprzewodnikowe

Pamięć operacyjna komputera

Zaleta duża pojemność, niska cena

Hierarchia pamięci w systemie komputerowym

Mikroinformatyka. Tryb wirtualny

Temat: Pamięć operacyjna.

Budowa i zasada działania komputera. dr Artur Bartoszewski

RODZAJE PAMIĘCI RAM. Cz. 1

PAMIĘCI SYNCHRONICZNE

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Architektura systemów informatycznych

System pamięci. Pamięć podręczna

Pamięci półprzewodnikowe na podstawie książki: Nowoczesne pamięci

Mikroinformatyka. Wielozadaniowość

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Logiczny model komputera i działanie procesora. Część 1.

Działanie systemu operacyjnego

Sprzętowe wspomaganie pamięci wirtualnej

Mikroprocesory rodziny INTEL 80x86

Działanie systemu operacyjnego

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Od programu źródłowego do procesu

System pamięci. Pamięć podręczna

Pamięć operacyjna (robocza) komputera - zwana pamięcią RAM (ang. Random Acces Memory - pamięć o swobodnym dostępie) służy do przechowywania danych

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Urządzenia Techniki. Klasa I TI 5. PAMIĘĆ OPERACYJNA.

Wykład II. Pamięci operacyjne. Studia stacjonarne Pedagogika Budowa i zasada działania komputera

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

System pamięci. Pamięć wirtualna

Wykład II. Pamięci półprzewodnikowe. Studia Podyplomowe INFORMATYKA Architektura komputerów

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Który z podzespołów komputera przy wyłączonym zasilaniu przechowuje program rozpoczynający ładowanie systemu operacyjnego? A. CPU B. RAM C. ROM D.

Komputerowa pamięć. System dziesiątkowego (decymalny)

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Wykład 7. Zarządzanie pamięcią

Podstawy. Pamięć wirtualna. (demand paging)

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Działanie systemu operacyjnego

Technologia informacyjna. Urządzenia techniki komputerowej

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

dr inż. Jarosław Forenc

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Architektura systemu komputerowego

Architektura komputerów

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Magistrala systemowa (System Bus)

Podstawy Informatyki JA-L i Pamięci

dr inż. Jarosław Forenc

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Dotyczy jednostek operacyjnych i ich połączeń stanowiących realizację specyfikacji typu architektury

Budowa Mikrokomputera

Architektura komputerów

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Transkrypt:

Organizacja pamięci wewnętrznej komputerów 1. Własności systemów pamięci 2. Hierarchia pamięci. 3. Półprzewodnikowa pamięć główna 4. Pamięć cache. 5. Pamięć wirtualna.

Własności systemów pamięci Położenie procesor wewnętrzna (główna) zewnętrzna (pomocnicza) Pojemność rozmiar słowa liczba słów Jednostka transferu słowo blok Sposób dostępu sekwencyjny bezpośredni swobodny skojarzeniowy Wydajność czas dostępu czas cyklu szybkość transferu Rodzaj fizyczny półprzewodnikowa magnetyczna Własności fizyczne ulotna/ nieulotna wymazywalna/ niewymazywalna Organizacja

Hierarchia pamięci: Procesor Pamięć podręczna Pamięć główna Interfejs we-wy Pamięć dodatkowa Hierarchia pamięci składa się z kilku poziomów przechowywania. Każdy poziom charakteryzuje się inną szybkością działania i pojemnością. Do wytworzenia elementów pamięci wykorzystuje się różne technologie: - umożliwiającą szybki dostęp do danych (technologia półprzewodnikowa), - technologie wykorzystywane do wytworzenia powierzchni magnetycznych i optycznych dla elementów zewnętrznych, oddalonych od procesora. Jeśli rozpatrujemy dostępne technologie, to możemy zauważyć następujące zależności: Y mniejszy czas dostępu większy koszt na bit, Y większa pojemność mniejszy koszt na bit, Y większa pojemność większy czas dostępu.

s z y b k o ś ć Rejestry Pamięć podręczna Pamięć operacyjna c z a s Pamięć dodatkowa d o s t ę p u koszt pojemność 1. Rejestry wewnętrzne procesora (pamięć procesora) implementowana jako zbiór szybkich rejestrów, zajmuje najwyższy poziom hierarchii; 2. Pamięć podręczna cache umiejscowiona jest między procesorem a pamięcią operacyjną, a do jej realizacji używa się zwykle droższych układów pamięci statycznej; 3. Pamięć operacyjna jest największym obszarem pamięci, dostępnym bezpośrednio dla procesora. W celu obniżenia kosztu pamięć operacyjna jest realizowana z wykorzystaniem układów pamięci dynamicznej. 4. Pamięć wirtualna (nierzeczywista), wolniejsza, odwzorowywana zwykle na pamięciach zewnętrznych, typowo na dyskach twardych. Przesłania PAO/PW są zwykle kontrolowane przez system operacyjny i wspomagane sprzętowo przez specjalne mechanizmy, wbudowane w procesory

Półprzewodnikowa pamięć główna Podział pamięci półprzewodnikowych Pamięci półprzewodnikowe stosowane w systemach mikroprocesorowych Pamięci stałe Pamięci o dostępie swobodnym (RAM) Pamięci programowane przez producenta (ROM) Pamięci programowane jednokrotnie (PROM) Pamięci programowane wielokrotnie (EPROM) i (E 2 PROM) (Flash) SRAM NV SRAM Statyczne SD RAM FPM RAM EDO RAM BEDO RAM Dynamiczne Dynamiczna pamięć RAM jest wykonana z komórek, które przechowują dane podobnie, jak kondensatory przechowują ładunek elektryczny. Obecność lub brak ładunku w kondensatorze mogą być interpretowane jako binarne 1 i 0. Dynamiczne pamięci RAM wymagają okresowego odświeżania ładunku w celu zachowania danych. W statycznych pamięciach RAM wartości binarne są przechowywane za pomocą przerzutników. Statyczne pamięci RAM zachowują dane tak długo, jak długo są zasilane.

NV RAM - jest to pamięć firmy Intel. Pamięć po wyłączeniu zasilania nie traci zawartości. Uzyskano to dzięki zastosowaniu w jednym układzie dwóch rodzajów pamięci : SRAM oraz EEPROM. W czasie normalnej pracy jest ona widoczna jako normalna pamięć typu SRAM. W momencie zaniku zasilania odpowiednim sygnałem podanym przez mikroprocesor cała zawartość pamięci RAM jest przepisywana do pamięci EEPROM. Po powrocie napięcia zasilania zawartość pamięci EEPROM jest ponownie przepisywana do SRAM. Producent gwarantuje 10000 cykli. EDO RAM - jest to typ pamięci, w której jeszcze gdy dane są odczytywane może zostać wystawiony adres następnej komórki. Przyspiesza to znacznie odczyt kolejnych komórek pamięci. Teoretyczny przyrost prędkości do 20% w porównaniu z pamięciami FPM RAM. Zysk w praktyce maleje do kilku procent ponieważ danych nie można nakładkować przy zapisie. BEDO RAM - jest to pamięć stanowiąca połączenie technik burst i EDO RAM. Zamiast jednego adresu odczytywane jest jednocześnie cztery. Na magistrali adresowej adres pojawia się tylko na początku cyklu odczytu, co wydatnie skraca średni czas dostępu. FPM RAM (Fast Page Mode)- jest to pamięć pracująca na zasadzie adresowania stronicowego. Stronicowanie jest techniką zwiększenia wydajności pamięci, poprzez podzielenie jej na strony mające długość od 512 bajtów do kilku kilobajtów. Zwykłe odczyty i zapisy danych w pamięci wymagają wybrania wiersza i kolumny, co zabiera dodatkowy czas. Stronicowanie polega na udostępnianiu komórek z tego samego wiersza, dzięki czemu należy zmieniać tylko adres kolumny. SDRAM (Synchronous Dynamic RAM) - jest to pamięć dynamiczna w której odczyt poszczególnych komórek następuje synchronicznie, zgodnie z taktami zegara CPU. Układy te są zsynchronizowane z magistralą systemową (100 MHz i szybsze). RDRAM (Rambus DRAM) - jest pamięcią opartą na zupełnie innych rozwiązaniach. Dzięki podwojeniu znajdującej się w układzie magistrali danych i zwiększeniu częstotliwości pracy do 800 MHz, umożliwia uzyskanie przepustowości rzędu 1,6 GB/s. DDR SDRAM (Double Data Rate) SDRAM jest rozwinięciem projektu standardowych układów SDRAM, w którym dane przesyłane są z dwa razy większą szybkością. Poza zwiększeniem częstotliwości taktowania, pamięci DDR osiągają podwojenie wydajności dzięki wykonywaniu 2 transferów podczas jednego taktu zegara (przy narastającym i opadającym zboczu).

Obudowy pamięci: SIMM - moduły pamięci na karcie ze 32-stykami. Szyna danych ma 8-bitów. Obecnie nie stosowane. DIMM - moduły pamięci na karcie ze 168-stykami. Pracują z szyną adresową o szerokości 64-bitów. Modul PS/2 - moduły pamięci na karcie ze 72-stykami. Pracują z szyną adresową o szerokości 32-bitów. Stosowane w pamięciach typu EDO RAM i FPM RAM. Nazwa pochodzi od pierwotnego zastosowania tego rodzajów modułów pamięci w komputerach PS/2 IBM.

Podstawowe parametry pamięci: pojemność; organizacja logiczna; pobór mocy na bit. Podstawowe parametry dynamiczne: czas cyklu odczytu t RC ; czas dostępu t A ; czas dostępu od wejść adresowych t AA lub t SA ; czas dostępu od wejść wybierania układu pamięci t ACE lub t SA ; czas dostępu od wejść sygnału odczytu t ARW ; cykl czasu zapisu t WC ; czas odzyskiwania właściwości po sygnale zapisu t WR ; czas regeneracji (odświeżania) - dla pamięci dynamicznych. a) t RC b) t WC Adres Adres t ACE t SCE t WR CE CE t SA R / W t ARW t HD1 R / W t W Dane wyjściowe Dane wejściowe t HD t AA t HA t HD2 t SD Parametry dynamiczne pamięci dla cyklu odczytu (a) oraz cyklu zapisu (b).

Odświeżanie Przykład Kostka pamięci o pojemności 16 Mb (4M 4 4 M słów 4-bitowych) Adres kolumny Dekoder kolumn kolumny 0.. 2047 Adres wiersza Dekoder wierszy wiersze 0.. 2047 Matryca pamięciowa Matryca 2048 pamięciowa Matryca 2048 2048 pamięciowa 2048 Matryca 2048 pamięciowa 2048 2048 2048 D3 D2 D1 D0 Odświeżanie sprowadza się do pobudzenia (zaadresowania) linii wiersza, przy czy odświeżeniu ulegają wszystkie komórki należące do tego wiersza. Konieczne jest wprowadzenie mechanizmu generującego regularnie impulsy odświeżające przebiegające kolejno wszystkie wiersze nie rzadziej niż raz na okres czasu nazywany cyklem odświeżania (Refresh Time). Typowe wartości cyklu odświeżania Pojemność Organizacja Liczba wierszy Cykl 4 Mbit 256K 16 512 8 ms 4 Mbit 4 M 1 1024 (1K) 16 ms 16 Mbit 4M 4 2048 (2K) 32 ms

Podział cyklu odświeżania na odcinki czasowe równej wielkości daje w wyniku okres przebiegu zegarowego (Refresh Rate) wymaganego do spełnienia wymogu czasowego narzuconego przez cykl odświeżania (na przykład, 16 ms/1024 = 15,6 µs). Pojedyncze impulsy odświeżające można zgrupować w jeden pakiet (Burst Refresh) lub też rozłożyć równomiernie (Distributed Refresh) w obszarze okna czasowego wyznaczonego przez cykl odświeżania. Rozkład impulsów odświeżania Distributed refresh 1024 impulsy (16 ms) 15,6 µs... Burst refresh max 16 ms 1024 impulsy (~0,13ms)......

Organizacja pamięci DRAM o pojemności 16 Mbit (4 M 4) RAS CAS W OE Taktowanie i sterowanie Licznik odświeżania A0 A1.... A10 Bufor adresu wiersza Bufor adresu kolumny MUX Dekoder wierszy 0.. 2047 Matryca pamięciowa Matryca pamięciowa Matryca pamięciowa Matryca 2048 2048 pamięciowa 2048 2048 2048 2048 2048 2048 4 0.. 2047 Wzmacniacz odczytu i bramka we-wy Dekoder kolumny Wejściowy bufor danych Wyjściowy bufor danych D0 D1 D2 D3

Początkowo w komputerach wyższej klasy stosowane były inne sposoby zwiększenia szybkości dostarczania informacji przez zrównoleglenie działania pewnych bloków funkcjonalnych: a) zwiększenie szerokości dostępu, wymaga rozszerzenia magistrali danych b) zastosowanie przeplotu, czyli podział pamięci na banki: Odczyt Odczyt Odczyt Odczyt Odczyt 4 niezależnych porcji danych z klasycznej pamięci. czas Odczyt Odczyt Odczyt Odczyt czas Odczyt z przeplotem Jeśli adresowanie poszczególnych bloków PAO będzie wykonywane za pomocą dwóch ostatnich bitów adresu, dane zapisywane w PAO kolejno znajdą się w rzeczywistości w różnych blokach i mimo względnie wolnego czasu dostępu do pojedynczego bloku przy odpowiedniej synchronizacji w czasie odczytów z poszczególnych bloków nie będą one blokować się wzajemnie i efektywny czas odczytu może ulec skróceniu. Rzeczywista efektywność takiego rozwiązania zależy od rozkładu odwołań do PAO.

Pamięć podręczna (cache): Logicznie pamięć cache jest umieszczona między procesorem a PAO i dostarcza procesorowi względnie szybko danych. Pamięć podręczna poszerza wąskie gardło powstające w wyniku różnic szybkości działania procesora i pamięci głównej, korzystając z własności zachowania programu zwanej zasadą lokalności. Zasada lokalności Programy mają tendencję do ponownego używania danych i rozkazów, które były niedawno używane. Rozkazy i dane używane w krótkim odstępie czasu są zwykle położone także blisko siebie w pamięci (lokalność przestrzenna). Zasada działania Półprzewodnikowa pamięć podręczna zawiera ograniczoną liczbę obszarów albo wierszy służących do przechowywania bloków z pamięci głównej. Każdy blok ma typowo wielkość od 4 16 słów. W czasie wykonywania programu procesor zamiast czytać rozkazy czy dane bezpośrednio z pamięci głównej, szuka ich najpierw w pamięci podręcznej. Jeśli słowo zostaje znalezione, to sygnalizowane jest trafienie i słowo przesyłane jest do procesora.

Trafienie w pamięci podręcznej Powielone kopie słowo CPU Pamięć podręczna Bloki Pamięć operacyjna Chybienie w pamięci podręcznej Pamięć operacyjna CPU Pamięć podręczna słowo Przesłanie bloku

Cykl pracy: procesor wystawia na szynę adresową adres danej, którą chce odczytać z PAO i sygnał odczytu na szynie sterującej. MMU sprawdza, czy w cache znajduje się żądane słowo, i jeśli tak, dostarcza je procesorowi znacznie szybciej niż PAO. Równocześnie jest inicjowany odczyt z PAO i przy trafieniu jest on anulowany, przy chybieniu zaś kontynuowany w celu odczytania danej. Miarą wydajności pamięci podręcznej jest współczynnik trafień (ang. hit ratio; h), który określa, jaka część odwołań do pamięci została obsłużona przez pamięć podręczną, unikając korzystania z pamięci głównej. Jeżeli czasy dostępu do pamięci podręcznej i pamięci głównej wynoszą odpowiednio: t c i t m, to średni czas dostępu do słowa t av wyraża się wzorem: t av = h t c + (1 h) t m Dla zwiększenia efektywności pracy takiego systemu, tzn. zwiększenia współczynnika trafień stosuje się odczyt z PAO do cache nie pojedynczych słów ale linii, stanowiących całkowitą wielokrotność szerokości szyny danych procesora. Struktura cache: 1. pamięć danych właściwych (tzn. instrukcji lub danych z PAO) 2. pamięć adresów komórek, których zawartość jest przechowywana w części danych właściwych 3. pamięć znaczników, przeznaczonych dla wspomagania zarządzaniem pamięcią cache np. wyznaczaniem, którą zawartość można usunąć w przypadku zapełnienia pamięci cache i konieczności wprowadzenia nowych danych 4. jednostka zarządzania pamięcią, m.in. porównująca adresy odwołań i przechowywanych kopii zawartości komórek PAO oraz podejmująca decyzje o usunięciu przy zapełnieniu cache. Konieczne jest zapewnienie sterowania przez sprzęt, a nie oprogramowanie, gdyż dla wykonania odczytu z pamięci należałoby odczytać z pamięci podprogram obsługujący odczyt z pamięci itd. Pojęcia, związane z pamięcią cache: odwzorowanie bezpośrednie, blokowo-asocjacyjne, zbiorowo-asocjacyjne, w pełni asocjacyjne, współczynnik trafień (hit ratio), współczynnik chybień, algorytmy wymiany stron, zapis metodą write-through, write-back, bity ważności, wieloportowość są związane z organizacją komputerów, ale przy omawianiu architektury także się pojawiają.

Organizacja pamięci podręcznej Pamięć podręczna asocjacyjna Bloki pamięci głównej są odwzorowane w obszary pamięci podręcznej i znakowane numerem bloku lub etykietą. Etykieta jest wyznaczana przez bardziej znaczącą część adresu, zwaną polem etykiety. Adres pamięci Pamięć operacyjna Pamięć podręczna etykieta słowo 00002 A blok 0 blok 1 blok 2 etykieta blok 00002 blok 2 blok N-1 adres z CPU poszukiwanie równoległe 00002 A etykieta etykieta wybranie bajtu trafienie 00002 blok 2 bajt do CPU Równoległe przeszukiwanie jest realizowane przy użyciu specjalnych układów elektronicznych wbudowanych w pamięć podręczną. Układy te są skomplikowane i podnoszą koszt. W celu obniżenia tego kosztu często jest wykorzystywana inna organizacja pamięci podręcznej.

Pamięć podręczna odwzorowana bezpośrednio Przy organizacji pamięci podręcznej z odwzorowaniem bezpośrednim unika się problemu przeszukiwania bufora przez przypisanie każdego bloku pamięci do tylko jednego obszaru pamięci podręcznej. etykieta obszar słowo 00 01 000... FFF 000... FFF blok 0... blok 4095 blok 0... blok 4095 etykieta blok 01 blok 0 00 blok 4095... FF 000... FFF blok 0... blok 4095 Głównym problemem przy odwzorowaniu bezpośrednim jest to, że tylko jeden z bloków współdzielących pewne obszary w pamięci podręcznej może znajdować się w niej w danym momencie. Jeśli program często odwołuje się do dwóch bloków, które odwzorowane są w ten sam obszar, to muszą być one cyklicznie usuwane i ładowane do pamięci podręcznej, poważnie obniżając jej wydajność.

Pamięć podręczna ze zbiorowym odwzorowaniem asocjacyjnym W każdym wierszu pamięci podręcznej ze zbiorowym odwzorowaniem asocjacyjnym może być przechowywanych kilka par etykieta blok, tworzących zbiór. etykieta zbiór słowo 0F 008 5 000 etykieta blok etykieta blok 008.. FFF 09 0F chybienie trafienie bajt do CPU Kiedy następuje odwołanie procesora do pamięci podręcznej, wtedy pole zbioru jest używane w buforze jako indeks w taki sam sposób, jak używane było pole obszaru w schemacie odwzorowania bezpośredniego. Po wyznaczeniu zbioru obie etykiety są jednocześnie porównywane z polami etykiet adresów. Jak zapewnić spójność pamięci podręcznej?

Pamięć wirtualna Przy wykorzystaniu tej techniki adresy generowane przez procesor nie są używane do bezpośredniego dostępu do pamięci, ale są przekształcane w prawdziwe adresy, które mogą wskazywać na pamięć główną, dodatkową albo kombinację ich obu. W pamięci operacyjnej odwzorowane są tylko te części programu, które są aktualnie niezbędne do wykonania, reszta pozostaje na dysku do czasu aż będzie potrzebna. Dysk Pamięć główna Rzeczywiste ramki pamięci Strony pamięci wirtualnej

Koncepcja pamięci wirtualnej bierze się z faktu, że dla właściwego wykonania programu prawdopodobnie niezbędne jest przechowywanie w PAO tylko pewnej jego części instrukcji i danych, które w najbliższym czasie będą przetwarzane. W przypadku niedoboru PAO w stosunku do wymagań programu, niepotrzebne w danym okresie czasu fragmenty kodu i danych mogą być przechowywane w tańszej i bardziej pojemnej, ale o rząd wielkości wolniejszej pamięci zewnętrznej, zwykle na dysku twardym. Zjawisko to, w przypadku wykonywania przez komputer tylko jednego programu, było nazywane nakładkowaniem i pozostawiane na głowie programisty, ale wraz z pojawieniem się systemów wielodostępnych i wieloprogramowych, zarządzaniem wymianą fragmentów kodu i danych różnych zadań między PAO i dyskiem musiał się zająć system operacyjny. W czasie działania programu przesyłanie fragmentów kodu i danych do i z pamięci głównej jest kontrolowane przez część systemu operacyjnego zwaną systemem zarządzania pamięcią. CPU Translator adresów Pamięć główna Wymiana Dysk

Stronicowanie Program Translacja adresu Pamięć główna Nr strony n Przesunięcie d Tablica stron ramka 0 adres wirtualny n, d f ramka 1 deskryptor strony ramka f d

Lista wolnych ramek 13 14 15 18 20 13 14 15 16 Używana 17 Używana 18 19 Używana Proces A Lista wolnych ramek 20 Tablica stron procesu A 13 14 15 18 13 Strona 0 Procesu A 14 Strona 1 Procesu A 15 Strona 2 Procesu A 16 Używana 17 Używana 18 Strona 3 Procesu A 19 Używana Proces A Strona 0 Strona 1 Strona 2 Strona 3 20 21 Używana 22 Używana Proces A Strona 0 Strona 1 Strona 2 Strona 3 20 21 Używana 22 Używana

Stronicowanie: stały rozmiar ramki i strony, nie występuje defragmentacja, nie wiadomo co strona zawiera (dane, kod, stos???), nie można współużytkować. Mała strona : niewielki obszar zmarnowany, ale dużo wierszy w tablicy stron, częste krótkie transmisje z/do dysku, duża transmisja z/do dysku przy zmianie tablic stron po przełączeniu zadania Duża strona : duży obszar zmarnowany (średnio ½ strony ), mało wierszy, rzadsze błędy stron, krótki czas transmisji a długi pozycjonowania dla współczesnych dysków. Struktura tablicy stron Tablica stron procesu ma zmienną długość, zależną od rozmiaru procesu. Zatem nie możemy przechowywać jej w rejestrach procesora. Musi ona znajdować się w pamięci głównej. Rejestr procesora przechowuje adres początkowy tablicy stron wykonywanego procesu. Numer strony adresu wirtualnego służy do indeksowania tablicy stron oraz znalezienia odpowiedniego numeru ramki. Po połączeniu go z adresem względnym, stanowiącym część adresu wirtualnego, można otrzymać adres rzeczywisty. Jak duża powinna być tablica stron? Przykład architektura VAX. (adres 32-bitowy) Każdy proces może zajmować do 2 31 = 2 GB pamięci wirtualnej. Wielkość strony 512 B = 2 9, co oznacza, że na jeden proces może przypadać 2 22 zapisów tablicy stron (4 M!!!). Tablice stron są przechowywane również w pamięci wirtualnej. Oznacza to, że tablice stron również podlegają stronicowaniu. Gdy proces jest realizowany, przynajmniej część jego tablicy stron musi znajdować się w pamięci głównej. Sposoby organizacji dużych tablic stron: Y dwupoziomowy schemat, Y odwrócona tablica stron.

Bufor translacji adresów Każde odwołanie do pamięci wirtualnej wywołuje co najmniej dwa dostępy do pamięci głównej: Y pobranie odpowiedniego zapisu tablicy stron, Y pobranie żądanych danych. Przyjęcie prostego schematu pamięci wirtualnej powoduje podwojenie czasu dostępu do pamięci!!! Sposób zmniejszenia czasu dostępu: zastosowanie specjalnej pamięci podręcznej zapisów tablicy stron, nazywanej buforem translacji adresów (ang. tranlation lookaside buffer - TLB). Działanie TLB Adres wirtualny Nr strony Przesunięcie TLB Chybienie + Do pamięci Tablica stron

Segmentacja: zmienny rozmiar ramki i segmentu, zależny od potrzeb, nie występują straty na pustej ostatniej stronie, znana jest zawartość można chronić dane i stos przed wykonaniem czy kod przed zapisem, można współużytkować segmenty tylko jedna kopia w pamięci i mogą z niej korzystać różne zadania Pamięć wirtualna jest mechanizmem jakościowo różnym od omawianych poprzednio (pamięci cache). Aby pokazać pamięć cache, należałoby wskazać kilka (w skrajnych przypadkach jeden) układów VLSI, realizujących wspólnie zadanie podawania procesorowi często używanych danych i rozkazów szybciej, niż jest to w stanie zrobić pamięć operacyjna. Pamięć wirtualna jest zespołem zarówno elementów sprzętu (rejestrów procesora, elementów pamięci operacyjnej, elementów pamięci dyskowej), jak i oprogramowania zarządzanie pamięcią wirtualną realizuje system operacyjny.

Opis działania: - zadanie odwołuje się do komórki PAO, generując adres logiczny; - MMU tłumaczy adres logiczny na fizyczny : adres początku bloku + offset w ramach bloku; - MMU sprawdza, czy żądany blok znajduje się w PAO (najpierw w TLB, potem w tablicy bloków w PAO) - jeśli tak, obsługa odczytu/ zapisu; - jeśli nie, zawieszane jest wykonywanie bieżącego zadania i generowany jest wyjątek, obsługiwany przez jądro SO ; sprawdzana jest możliwość sprowadzenia żądanej strony z dysku do wolnego obszaru w PAO, jeśli nie ma wolnego, należy wyznaczyć jakiś do usunięcia, sprawdzić, czy usuwany był modyfikowany w stosunku do kopii odczytanej poprzednio z dysku, jeśli modyfikowany, zapisać nową postać usuwanego, wczytać żądany obszar do PAO i wznowić wykonanie zawieszonego zadania; Wspomaganie mechanizmu PW musi być realizowane na 3 poziomach 1. jądra systemu operacyjnego : obsługa braku żądanych bloków (page fault), procedury umieszczania bloków w wolnej PAO, procedury wymiany bloków; 2. jednostki zarządzania pamięcią: przechowywanie i interpretacja bitów sterujących - valid/ invalid bit czy ramka zawiera kopię bloku z dysku, czy informację nieaktualną - dirty bit: blok był modyfikowany po odczycie z dysku - read/ write bit: strona do odczytu, zapisu? - licznik dostępów: dla implementacji algorytmów wymiany - generacja sygnałów do SO: błąd pamięci, błąd strony, zapis do bloku o atrybucie tylko do odczytu ; 3. procesora: instrukcje muszą być restartowalne zarówno przy próbie pobrania instrukcji jak i jej argumentów, wprowadza się dodatkowe instrukcje i rejestry do obsługi PW. Wydajność: efektywny czas dostępu = ( 1 współcz. chybień ) x czas dostepu PAO + współcz. chybień x czas obsługi chybienia PYTANIE? Jaki będzie efektywny czas dostępu jeżeli czas dostępu PAO wynosi 10 ns, obsługa błędu strony (chybienia) wymaga 25 ms, a współczynnik chybień = 1/10000?

Zarządzanie pamięcią wirtualną w systemie Windows NT Proces zarządzania stronami w systemie Windows NT (t.j. decydowanie, które strony wirtualne mają być umieszczone w RAM, a które mają znajdować się w pliku stronicowania) nazywany jest stronicowaniem na żądanie (demand paging). Program 1 Obszar adresowy programu 2 GB 1 2 Program 1 Program 1 Program 2 Zarządca pamięci wirtualnej Program 1 3 Program 2 Program 2 Program 2 Obszar adresowy programu 2 GB System 4 Pagefile.sys

Zalety pamięci wirtualnej: - większa logiczna przestrzeń adresowa dla programu, mogąca przekraczać rozmiar fizycznie zainstalowanej pamięci (Windows i swap file), - stopień wieloprogramowości na danym komputerze może być zwiększony, - dzięki przemyślanej strukturze i umieszczeniu zarządzania w jądrze systemu operacyjnego, procesy przydziału/ wymiany /zwalniania są przezroczyste dla programisty mniej błędów.

Tryb wirtualny procesorów, ochrona zasobów: Mechanizmy ochrony. Ochrona zasobów polega na wprowadzeniu czterech poziomów uprzywilejowania. Hierarchię poziomów uprzywilejowania przedstawia rys.: Zadania użytkowe Rozszerzenie systemu operacyjnego Interfejsy programowe realizowane przez CPU. Usługi systemowe Jądro PL = 0 PL = 1 PL = 2 PL = 3 Hierarchiczny system poziomów uprzywilejowania. Poziomy te stanowią rozszerzenie stosowanej powszechnie w minikomputerach struktury systemowego i użytkowego poziomu uprzywilejowania. Poszczególne poziomy uprzywilejowania PL ponumerowane są od 0 do 3. Poziom oznaczony cyfrą zero jest najbardziej uprzywilejowany. Wprowadzenie czterech poziomów uprzywilejowania umożliwia stosowanie mechanizmów ochrony również wewnątrz zadań programowych.

W wirtualnej przestrzeni adresowej każdego zadania mogą być zawarte procedury systemowe, procedury obsługi przerwań i inne procedury programowe. Atrybut poziomu uprzywilejowania jest przypisywany zadaniom programowym, deskryptorom i selektorom. Poziom uprzywilejowania zadania wpływa na rodzaj rozkazów jakie mogą być wykonywane i na zestaw deskryptorów, który może być wykorzystany przez zadanie. Bieżący poziom uprzywilejowania CPL (ang. Current Privilege Level) jest określany przez poziom uprzywilejowania aktualnie realizowanego zadania programowego; określają go dwa najmniej znaczące bity rejestru segmentu (selektora) CS. Poziom ten może być zmieniony tylko przez odwołanie do mechanizmów przekazania sterowania. Poziom uprzywilejowania deskryptora DPL określa zestaw zadań, które mogą odwoływać się do danego deskryptora. Aby zadanie mogło uzyskać dostęp do deskryptora numer CPL nie może być większy od DPL. Żądany poziom uprzywilejowania RPL określany przez selektor, może być wykorzystany do obniżenia poziomu uprzywilejowania zadania. Mechanizm ten zapewnia, że wywoływane procedury o wysokim poziomie uprzywilejowania nie będą miały dostępu do struktur danych umieszczonych na wyższym poziomie uprzywilejowania, niż procedura wywołująca. Drugim sposobem ochrony jest separacja zadań. Polega ona na tym, że każde zadanie dysponuje własną przestrzenią adresową. Zrealizowane jest to za pomocą tabeli translacji. Każde zadanie posiada własną, lokalną, tablicę deskryptorów - LDTR. Dzięki temu różne zadania pomimo tego, że posługują się tym samym adresem wirtualnym, odwołują się do różnych obszarów pamięci, wynikających z zawartości ich lokalnych tabel deskryptorów.

Mechanizm translacji adresów Adres logiczny + Adres liniowy + Adres fizyczny + Strona Baza tablicy segmentów Tablica deskryptorów + Baza katalogu stron Katalog tablic stron Tablica stron Program Blok segmentacji Blok stronnicowania Pamięć fizyczna

Format deksryptora segmentu pamięci dla 80286 15 0 (zarezerwowane) A DPL S t y p A Adres bazowy segmentu 23..16 Adres bazowy segmentu 15... 0 Wielkość segmentu 15... 0 +6 +4 +2 0 Bajt atrybutów Format deksryptora segmentu pamięci dla 80386 i nowszych 15 7 4 0 G D 0 AVL Wielokość 16..19 +6 A DPL S t y p A Adres bazowy segmentu 23..16 +4 Adres bazowy segmentu 15... 0 Wielkość segmentu 15... 0 +2 0 Adres bazowy segmentu 31..24 Bajt atrybutów Format selektora 15 3 Numer deskryptora TI RPL 2 1 0 Opis deskryptorów - 80286: P - segment obecny; określa czy dany segment (strona) znajdują się w pamięci operacyjnej komputera - P = 1, jeżeli P=0 wówczas generowany jest wyjątek w wyniku czego przygotowywana jest odpowiednia ilość miejsca w pamięci i brakujący segment (strona) wprowadzana jest do pamięci operacyjnej. DPL - poziom ochrony opisywanego segmentu. Pole to zawiera podstawową informację o segmencie, wykorzystywaną przez mechanizm ochrony mikroprocesora. S - rodzaj deskryptora. Deskryptory mogą opisywać segmenty pamięci - danych lub kodu - S = 1, oraz specjalne systemowe struktury danych - segmenty systemowe i bramki zadań - S = 0. typ - określa prawa dostępu do danego segmentu: 0 - segment danych tylko odczyt; 1 - segment danych - odczyt i zapis; 2 - segment danych rozszerzany w dół tylko odczyt; 3 - segment danych rozszerzany w dół - odczyt i zapis; 4 - segment kodu tylko wykonywanie; 5 - segment kodu - wykonywanie i odczyt; 6 - zgodny segment kodu tylko wykonywanie; 7 - zgodny segment kodu - wykonywanie i odczyt; Segment zgodny różni się od zwykłego segmentu kodu tym, że po przekazaniu sterowania do procedury zawartej w tym segmencie nie następuje zmiana poziomu ochrony (na wartość określoną w deskryptorze segmentu). Procedura wykonuje się na poziomie ochrony procesu wywołującego. A - segment użyty. Bit ten jest ustawiany przez procesor przy ładowaniu selektora do rejestru segmentu lub deskryptora do rejestru deskryptora.

Opis deskryptorów - 80386 oraz i486: G - ziarnistość. Umożliwia opis segmentu do 4GB przy użyciu jedynie 20- bitowego pola wielkość. Jednostką długości segmentu może być jeden bajt - G = 0 - można wówczas zdefiniować segment o długości do 1MB, albo wielkość może być zdefiniowana w jednostkach alokacji 4KB, co daje możliwość zdefiniowania segmentu o rozmiarze do 4GB. D - długość słowa. Dla D = 1 oznacza stosowanie 32-bitowego przemieszczenia w adresie argumentu oraz 32-bitowych argumentów. Dla D = 0 16-bitowe przemieszczenie i 16-bitowe argumenty. AVL - pole nie jest interpretowane przez mikroprocesory, może być użyte przez oprogramowanie. Opis bitów selektora: TI - określa rodzaj tablicy deskryptorów do, której chce się odwołać program. TI = 0 odwołanie dotyczy tablicy globalne, TI = 1 oznacza, że odwołanie dotyczy tablicy lokalnej. RPL - poziom ochrony zadania żądającego dostępu. Służy do osłabienia bieżącego poziomu ochrony. Przykład: Jeżeli zadanie o poziomie ochrony 3 próbuje przez wywołanie funkcji systemowej o poziomie ochrony 0 uzyskać dostęp do danych na poziomie 2, to nie uzyska takiego dostępu, gdyż wartość RPL selektora wywołującego będzie równa 3.

Segmentacja w procesorach Intel Deskryptory są umieszczane w pamięci kolejno tworząc tzw. tablice deskryptorów. Wykonywany program ma dostęp do dwóch tablic deskryptorów: globalnej tablicy deskryptorów GDT i lokalnej tablicy deskryptorów LDT, których wielkość wynosi 64KB. Numer deskryptora w jednej z tablic GDT lub LDT jest wybierany na podstawie 13 bitów selektora (bity 3...15). Zatem każda z tablic może zawierać do 8192 deskryptorów. Rozmiar logicznej przestrzeni adresowej określa się jako maksymalną wielkość widzianą przez pojedyncze zadanie. Ponieważ zadanie ma dostęp do obu tablic, dlatego też może w sumie korzystać z 16384 segmentów, 16K. O wielkości logicznej przestrzeni adresowej decydują liczba segmentów i ich długość. Dlatego też w mikroprocesorze 80286, gdzie maksymalna długość segmentu wynosiła 64KB logiczna pamięć zwana też pamięcią wirtualną ma pojemność 16K * 64K = 2 14 * 2 16 = 2 30 bajtów = 1GB. Analogicznie w 80386 (i486), gdzie maksymalna długość segmentu jest równa 4GB (przemieszczenie 32-bity), jest ona równa: 16K * 4GB = 2 14 * 2 32 = 2 46 bajtów = 64TB. Tak więc, pamięć widziana przez zadanie jest znacznie większa od pamięci, którą może zaadresować procesor. Jednak istnieje możliwość wykorzystania całej pamięci zadania dzięki odpowiednim mechanizmom wbudowanym w procesor, które umożliwiają implementację pamięci wirtualnej.

Stronicowanie w procesorach Intel Polega na podziale całej przestrzeni adresowej na bloki o długość 4KB, które są rozmieszczone sekwencyjne począwszy od adresu 0. W przestrzeni adresowej mikroprocesora znajdują się więc 2 32 / 2 12 = 2 20 stron = 1M stron. Położenie strony jest jednoznacznie określane za pomocą jej 20-bitowego numeru. W 32-bitowym adresie liniowym można wyróżnić 12 mniej znaczących bitów określających położenie wewnątrz strony, oraz 20-bitowy numer strony wskazujący jej położenie w przestrzeni adresowej. Jeżeli założymy wykorzystanie tablicy translacji, w której każdy element składałby się z 4-bitów jej rozmiar musiałby wynosić 4 * 2 20 = 4Mb. Ze względu na tak duży rozmiar ewentualnej tablicy translacji w mikroprocesorze 80386 zastosowano dwupoziomowe stronicowanie, wprowadzając dwie tablicę: tablicę stron wskazującą na położenie strony w przestrzeni adresowej oraz tablice wyższego poziomu zwane katalogami stron, którego to elementy wskazują na właściwą tablicę stron. Elementy obydwu tych tablic mają identyczny format.