background image

  

 

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. 

 
 
 
 

background image

Własności systemów pamięci 

 

 
Położenie 

• 

procesor 

• 

wewnętrzna (główna) 

• 

zewnętrzna (pomocnicza) 

Wydajność 

• 

czas dostępu 

• 

czas cyklu 

• 

szybkość transferu 

Pojemność 

• 

rozmiar słowa 

• 

liczba słów 

Rodzaj fizyczny 

• 

półprzewodnikowa 

• 

magnetyczna 

Jednostka transferu 

• 

słowo 

• 

blok 

Własności  fizyczne 

• 

ulotna/ nieulotna 

• 

wymazywalna/ 
niewymazywalna 

Sposób dostępu 

• 

sekwencyjny 

• 

bezpośredni 

• 

swobodny 

• 

skojarzeniowy 

Organizacja 

 

 
 

background image

Hierarchia pamięci: 

 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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: 

!"

mniejszy czas dostępu – większy koszt na bit, 

!"

większa pojemność – mniejszy koszt na bit, 

!"

większa pojemność – większy czas dostępu. 

Procesor 

Pamięć podręczna 

Pamięć główna 

Interfejs we-wy 

Pamięć dodatkowa 

background image

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 

 
 

Rejestry 

Pamięć 
podręczna

 

Pamięć 
operacyjna

 

Pamięć 
dodatkowa

 







ś 
ć 





 




ę 

pojemność 

koszt 

background image

Półprzewodnikowa pamięć główna 

 
 

Podział pamięci półprzewodnikowych 

 
 

Pamięci półprzewodnikowe

stosowane w systemach

mikroprocesorowych

Pamięci o dostępie

swobodnym  (RAM)

Pamięci stałe

NV SRAM

SRAM

SD RAM

FPM RAM

EDO RAM

BEDO RAM

Dynamiczne

Statyczne

Pamięci programowane

przez producenta

(ROM)

Pamięci programowane

jednokrotnie (PROM)

Pamięci programowane

wielokrotnie

(EPROM) i (E

2

PROM)

(Flash)

 

 
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. 
 

background image

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). 

background image

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. 

 

background image

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. 

t

AA

t

HA

t

HD2

t

HD1

t

ACE

t

RC

t

W

t

WC

b)

Adres

CE

R / W

t

SCE

t

WR

t

SA

t

HD

t

SD

a)

t

ARW

Adres

CE

R / W

Dane
wyjściowe

Dane
wejściowe

 

Parametry dynamiczne pamięci dla cyklu odczytu (a) oraz cyklu zapisu (b). 

 

 

background image

Odświeżanie 
 

Przykład 
Kostka pamięci o pojemności 16 Mb (4M 

××××

 4 – 4 M słów 4-bitowych) 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 

 
 

Dekoder kolumn 

 
 

Matryca pamięciowa 

2048 

××××

 2048 

 
 

Matryca pamięciowa 

2048 

××××

 2048 

 
 

Matryca pamięciowa 

2048 

××××

 2048 

 
 

Matryca pamięciowa 

2048 

××××

 2048 

kolumny 
0 .. 2047 

Adres kolumny 

D0 

D1 

D2 

D3 

Dekode

r wi

er

sz

wi

er

sze 

0 .. 20

47

 

Adr

es w

ie

rsz

background image

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 
 
 
 
 
 
 
 
 
 
 
 
Burst refresh 
 
 
 
 
 
 
 
 
 
 
 
 
 

. . . 

15,6 

µ

1024 impulsy (16 ms) 

.  .  . 

1024 impulsy (~0,13ms) 

max 16 ms 

. . . 

background image

Organizacja pamięci DRAM o pojemności 16 Mbit (4 M 

××××

 4) 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 

 
 

Matryca 

pamięciowa 

2048 

××××

 2048 

 
 

Matryca 

pamięciowa 

2048 

××××

 2048 

 
 

Matryca 

pamięciowa 

2048 

××××

 2048 

 
 

Matryca 

pamięciowa 

2048 

××××

 2048 

××××

 4 

Dekoder wi

er

sz

0

..

2047

A0 
A1 




 

A10

Taktowanie i sterowanie 

R A S

C A S

W

O E

 
 

Bufor 

adresu 

wiersza 

 
 
 
 

Bufor 

adresu 

kolumny 

Licznik 

odświeżania 

M

UX 

Wzmacniacz odczytu i 

bramka we-wy 

 
 

Dekoder kolumny 

0 .. 2047 

Wejściowy 

bufor 

danych 

 

Wyjściowy 

bufor 

danych 

D0 
D1 
D2 
D3
 

background image

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 
 
 

czas 

Odczyt 4 niezależnych „porcji” danych z klasycznej pamięci. 
 
 
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. 

 

background image

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. 

background image

„Trafienie” w pamięci podręcznej 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 
 

„Chybienie” w pamięci podręcznej 

 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 

 

CPU 

Pamięć 
podręczna 

Pamięć 
operacyjna 

słowo 

Powielone 
kopie 

Bloki 

 

CPU 

Pamięć 
podręczna 

Pamięć 
operacyjna 

Przesłanie 
bloku 

słowo 

background image

 

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ą.  

 
 

background image

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 

 
 
 
    00002  A 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

adres z CPU 

 
 
 
 
 
 
 
 
 
 
 
 

 

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. 

 

etykieta 

słowo 

blok 0 
blok 1 
blok 2 

 
 
 
 
 

blok N-1 

 

etykieta blok 

 

 

00002 

blok 2 

 

 

 

 

 

00002  A 

etykieta  
etykieta  
 

 

00002 

blok        2 

 

 

 

 

wybranie bajtu 

poszukiwanie 
równoległe 

trafienie 

Pamięć 
operacyjna 

Pamięć podręczna 

background image

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. 

 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

. . . 

 
 
 
 
 

 
 
 
 

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ść. 

 
 

etykieta 

obszar 

słowo 

000 
 
. . . 
 
FFF 

00 

000 
 
. . . 
 
FFF 

01 

000 
 
. . . 
 
FFF

 

FF 

blok  0 



blok 4095 

blok  0 



blok 4095 

blok  0 



blok 4095 

01 

blok 0 

 

 

 

 

00 

blok 4095 

etykieta blok 

background image

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 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

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 ? 

 
 
 
 
 

 
 

0F 

008 

etykieta blok etykieta blok 

 

 

 

 

09 

 

0F 

 

 

 

 

 

 

 

000 
 
 
008 
  . 
  . 
FFF 

chybienie 

trafienie 

background image

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 

background image

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 

Dysk 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Wymiana 

background image

Stronicowanie 

 
 
 

Program 

 

 

 

Translacja adresu   

 

Pamięć główna 

 
 
  Nr strony     Przesunięcie 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

n d 

 
 

 

 

 

 

Tablica stron 

deskryptor strony 

adres wirtualny n, d 

ramka 0 

ramka 1 

 

ramka f 

 

background image

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

13   

14 
 

 

15 
 

 

16 
 

Używana 

17 
 

Używana 

18 
 

 

19 
 

Używana 

20 
 

 

21 
 

Używana 

22 
 

Używana 

 

Lista 

wolnych 

ramek 

13 
14 
15 
18 
20 

Proces A 

Strona 0 
Strona 1 
Strona 2 
Strona 3 

Proces A 

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 

20 
 

 

21 
 

Używana 

22 
 

Używana 

 

Lista wolnych 

ramek 

20 

Tablica stron 

procesu A 

13 
14 
15 
18 

Proces A 

Strona 0 
Strona 1 
Strona 2 
Strona 3 

background image

  
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: 

!"

dwupoziomowy schemat, 

!"

odwrócona tablica stron. 

 
 

background image

Bufor translacji adresów 

 
Każde odwołanie do pamięci wirtualnej wywołuje co najmniej dwa dostępy do 
pamięci głównej: 

!"

pobranie odpowiedniego zapisu tablicy stron, 

!"

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 
 
 
 
 

Nr strony  Przesunięcie 

 

TLB 

Adres wirtualny 

Chybienie 

Do pamięci 

Tablica stron 

background image

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. 

 

 
 

 

background image

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? 

 
 

background image

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
).  

Obszar 

adresowy 

programu 

2 GB 

Program 1 

Obszar 

adresowy 

programu 

2 GB 

Program 2 

 
 
 
 
 
 
 
 

Zarządca 

pamięci 

wirtualnej 

Program 1 
 
 
Program 1 
 
 
Program 2 
 
 
Program 1 
 
 
Program 2 
 
 
Program 2 
 
 
System 
 

 

1

Pagefile.sys 

2

3

4

background image

 
 
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. 

 

 
 
 

background image

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.: 
 

Rozszerzenie systemu operacyjnego

PL = 2

Jądro

PL = 0

Usługi systemowe

PL = 1

Zadania użytkowe

PL = 3

Interfejsy

programowe

realizowane

przez CPU.

 

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.  

 

 

background image

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. 

 
 
 
 
 
 
 

background image

Mechanizm translacji adresów 

 

 

Adres logiczny

Baza

tablicy

segmen-

tów

Tablica

deskrypto-

rów

Katalog

tablic

stron

Tablica

stron

Adres liniowy

Baza

katalogu

stron

+

+

+

+

Adres

fizyczny

Strona

Pamięć fizyczna

Blok stronnicowania

Blok segmentacji

Program

 

 
 

 
 

 

background image

15 0 

+6 

+4 
+2 

15 

+6 

+4 
+2 

Adres bazowy segmentu 31..24

 

Adres bazowy segmentu 23..16

 

A

 

t y p

 

DPL

 

S

 

A

 

Adres bazowy segmentu 15 ... 0

 

Wielkość segmentu 15 ... 0

 

Bajt atrybutów

 

G

 

D

 

0

 

AVL

 

Wielokość 16..19

 

7 4 

Numer deskryptora

 

TI 

RPL 

15 

 

(zarezerwowane)

 

Adres bazowy segmentu 23..16

 

A

 

t y p

 

DPL

 

S

 

A

 

Adres bazowy segmentu 15 ... 0

 

Wielkość segmentu 15 ... 0

 

Bajt atrybutów

 

Format deksryptora segmentu pamięci dla 80286 

Format deksryptora segmentu pamięci dla 80386 i nowszych 

Format selektora 

 

 

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. 

background image

 

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. 

background image

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 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.  

 

background image

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.