Architektura3 id 67919 Nieznany (2)

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 „cacheumiejscowiona 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

s
z
y
b
k
o
ś
ć

c
z
a
s

d
o
s
t
ę
p
u

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

y

wi

er

sze

0 .. 20

47

Adr

es w

ie

rsz

a

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

µ

s

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

y

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

5

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


f

Tablica stron

deskryptor strony

adres wirtualny n, d

ramka 0

ramka 1

ramka f

d

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

0

15

0

+6

+4
+2

0

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

0

1

2

15

3

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

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.


Wyszukiwarka

Podobne podstrony:
Architektura5 id 67923 Nieznany (2)
Architektura4 id 67920 Nieznany (2)
Architektura2 id 67918 Nieznany
ArchitekturaKomputera2 id 67926 Nieznany (2)
Architektura6 id 67924 Nieznany (2)
ArchitekturaKomputera id 67925 Nieznany
PEK PB OPIS ARCHITEKTURA id 354 Nieznany
Architektura1 id 67917 Nieznany (2)
Architektura5 id 67923 Nieznany (2)
architektura aplikacji id 67748 Nieznany (2)
Architektura Neutrino 1 id 6791 Nieznany (2)
Architektura Komp2 id 67910 Nieznany (2)
Architektura ekoczasu id 67766 Nieznany (2)
5 Architektura MCU 2010 id 4004 Nieznany (2)
ARCHITEKTURA KOMPUTEROW id 6779 Nieznany (2)
Architektura Renesansu id 67864 Nieznany (2)
Architektura Komp5 id 67913 Nieznany (2)
Architektura drewniana 2 id 677 Nieznany (2)

więcej podobnych podstron