background image

 

12 

Pamięci 
 
Podstawowe parametry: 

 

1)  pojemność – ilość informacji cyfrowej jak może być zgromadzona 

 

2)  długość (szerokość) pamiętanego słowa. Organizacja struktury 

pamiętającej inf. – ilość bitów możliwych do obsłużenia naraz w 
procesie zapisu/odczytu. Ilość tych słów wyznacza pojemność 

 

3)  czas dostępu - czas od rozpoczęcia operacji do zakończenia (od 

odczytu pamięci do zapisania danych na magistrali danych). 

 

 
Dodatkowe linie: 

RAS 

 (Row Address Select) – pomagają wybierać wiersz 

CAS 

 (Column Address Select) – pomagają wybierać kolumnę 

 
Klasyfikacja pamięci: 

ROM – Read Only Memory (tylko do odczytu) 
RAM – Random Access Memory – dostęp swobodny (zapis/odczyt) 

 
ROM: 

1)  Mask ROM 
2)  PROM 

3)  EPROM 
4)  EEPROM 

5)  EAPROM 

 

1)  Mask ROM – tylko do odczytu, w niej jest inf. o procesie produkcji, 

dostęp do inf. zaraz po włączeniu. Dane nie ulegają utracie po 

wyłączeniu zasilania, duża szybkość, niewielka pojemność 

 

2)  PROM – programowalna – sprzedawana jako czysta, programowanie 

tylko raz poza układem cyfrowym, w którym ma pracować, działa jak 

MaskROM, bardzo szybkie, niewielka pojemność 

 

3)  EPROM – Erasable Programmable ROM – możliwy zapis i kasowanie 

wielokrotne, zmiana struktury poza systemem, na drodze elektrycznej. 
Tranzystory z pływającą bramką, w stanie czystym same jedynki. 
Kasowanie – naświetlanie UV – zjawisko fotoelektryczne zewnętrzne w 

tranzystorach, kasowanie całości. Programowanie – setki/tysiące razy. 
Mogą mieć duże pojemności, nie są zbyt szybkie 

 

4)  EEPROM – elektrycznie kasowalne EPROMy, własności jak wyżej 

 

5)  EAPROM – możliwość wybiórczego kasowania i programowania, 

kasowanie elektryczne 

 

background image

 

13 

RAM: 

1)  DRAM 
2)  SRAM 

 

1)  DRAM – elementy pamiętające – wartość ładunku na kondensatorach. 

Samo zasilanie nie wystarczy, kondensatory tracą ładunek – jest 
konieczne odświeżanie informacji, inaczej na kondensatorach mogą 

odłożyć się dowolne ładunki 

 

2)  SRAM – przerzutnik – element pamiętający – musi być utrzymana 

wartość logiczna 

 konieczne zasilanie 

 
Odczyt i zapis 

 
Odczyt z ROM (lub SRAM): 

 
1)  ustawienie adresu (odwołanie się do pamięci) – linie adresowe (np. A0 ... 

A14), ile linii – zależy od tego ile pamięci jest w systemie. Na podstawie 
adresu zostaną zaktywowane linie MREQ lub im odpowiadające 

 
2)  CE/ (Chip Enable) – linie wyboru określonego układu pamiętającego, 

aktywne stanem niskim 

 

3)  OE/ albo RD/ - Output Enable/Read – linie odczytu – ustawia akcję 

odczytu 

 

4)  to wszystko wysyłane do układu pamiętającego na linię adresową (np. 

D0 ... D7) 

 

Zapis do SRAM 
 

Wybór adresu i układu jak poprzednio, zmiana linii WRITE – dane z pamięci 
muszą być ustawione przed ustawieniem linii WRITE w stan aktywny (przez 

procesor lub układ DMA). Procesor lub DMA musi utrzymać dane przez czas 
wymagany dla pamięci, ale bez zwrotu informacji o tym, że zapis się udał czy 

nie. 
 

Odczyt z DRAM: 
 
Pojawiają się linie RAS i CAS 

1)  na magistrali adresowej jest podawany adres wiersza – jak się adres 

ustawi, to 

2)  linia RAS przechodzi w stan aktywny (poziom niski) – potwierdzenie, że 

na magistrali jest adres wiersza 

3)  na magistrali adresowej przełączanie adresu (stan niestabilny) – żeby 

pojawił się adres kolumny – linia CAS przechodzi w stan aktywny 
(poziomem niskim) 

 
Po zakończeniu adresacji – wskazanie linii MREQ. 

background image

 

14 

Gdy RAS i CAS są w stanie aktywnym, linia READ przechodzi w stan aktywny – 
zaczynamy realizować odczyt. 
Na magistrali danych dane są odczytywane (pobierane). 

Czas dostępu – od momentu rozpoczęcia adresacji do odczytu danych (t

ACC

) – 

maksymalny. Można też wymyślać inne, ale po co . Koniec odczytu – linie 

RAS i CAS przechodzą w stan nieaktywny. 
 

Zapis 
 

Zmiany: 

1)  adres wiersza, aktywna linia RAS (do końca procesu zapisu) 

 
2)  adres kolumny, aktywna linia CAS (do końca procesu zapisu) 

 
Ukształtowanie danych na magistrali danych, linia WR uaktywnia się. 

 
Odświeżanie DRAM 

 

1)  w trybie skupionym. Dla każdego elementu odczyt i zapis. Tryb prosty, 

ale: fragment pamięci zawsze nieaktywny, mocne obciążenie dla 
systemu – ruch na magistrali, lepsze jest odświeżanie wyrywkowe 

(pojedynczych komórek), typy: 

 

2)  odświeżanie sygnałem RAS/ (RAS only refresh): - nie jest podawany 

adres kolumny, tylko adres wiersza. Jest specjalny licznik, który wybiera 

kolumny – i z tego licznika jest pobierana ta wartość (po upływie 
timeout-u) i ta komórkę odświeżamy (i tylko tą). Małe obciążenie dla 

procesora – adres wiersza i odświeżenie tylko jednej kolumny. Procesor 
musi sensownie wybierać adresy wiersza 

 
3)  odświeżanie ukryte. Odczyt/zapis kończy się kiedy linia RAS jest 

nieaktywna, ale CAS jest aktywna – mamy adres kolumny, potem RAS 
znowu aktywna, itd. Zaleta: odświeżanie wyrywkowe, przy okazji 

odczytu/zapisu, procesor raz podał adresy i sprawa załatwiona, adres 
sam się wygeneruje. Zawsze zdążymy z odświeżeniem, nic nie będzie 

pominięte 

 

4)  CAS/ przed RAS/ - najpierw w stan aktywny linia CAS, potem RAS, 

magistrala adresowa nie transportuje adresu, adresy wybierane z 
liczników. Na końcu odświeżania przechodzimy do normalnego 
zapisu/odczytu. Odświeżanie wybiórcze, minimalnie angażuje procesor 

(musi uaktywnić RAS i CAS, nic poza tym) 

 

5)  Odświeżanie automatyczne – układ pamięci odświeża się sam, procesor 

nie jest angażowany 

 
Specjalne tryby pracy układów DRAM (kiedy chcemy zminimalizować czasy 

dostępu) 
 

background image

 

15 

1)  odczyt – modyfikacja – zapis. Zapis jest w to samo miejsce, co odczyt – 

jedna operacja, oszczędzamy na adresacji. Wstrzymanie pracy magistrali 
– np. DMA nie może pracować 

 
2)  tryb stronicowy – ograniczenie ilości adresowania. Adres wiersza jest 

stały, kolumny odczytywane z jednego wiersza (adres kolumny się 
zmienia) 

 
3)  tryb półbajtowy, RAS aktywna, CAS się zmienia (następne kolumny z 

tego samego wiersza) 

 

Tworzenie bloków pamięciowych 
 

2 akcje: 
- zwiększanie szerokości pamiętanego słowa (k-bloków o organizacji 2

m

 

słów*n, chcemy zrobić szerokość słowa n*k) 
 

 

wszystkie układy jednocześnie włączone, chcemy odczyt/zapis w każdym z 
układów 

 
- zwiększanie ilości pamiętanych słów. Linie danych – do każdego z układów 

pamiętających; linia adresowa – też, ale wyodrębnione (o adresach A

n

 ... A

n+1 – 

najstarsza część adresu

) do dekodera. W danej chwili wybranie 1 układu 

pamiętającego odczyt/zapis też tylko w tym układzie; wiele układów 
odczyt/zapis taki jak w pojedynczym układzie 

 
Współadresowanie i adresowanie izolowane pamięci i układów WE/WY 

 

1)  współadresowanie – z punktu widzenia procesora, pamięć + I/O to jeden 

blok – pamięć; 

 

zalety: 
- w liście programów danego procesora jest więcej 

instrukcji odnoszących się do pamięci niż do I/O 

 

wygodna obsługa I/O 

- zanika I/OREQ, MEMRQ – do zaadresowania wystarczą linie adresujące 
 

wady: 
- nie możemy użyć max. pamięci operacyjnej – ograniczona przestrzeń 

związana z pamięcią 
- mała szansa reorganizacji 

background image

 

16 

- wolniejszy dostęp (potencjalnie) do układów I/O 
 
podsumowanie: 

- układy dedykowane do obsługi określonego zadania (np. w silniku) 
- dla komputera ogólnego przeznaczenia to nie ma sensu 

 

2)  adresowanie izolowane – 2 odrębne zasoby, bloki się nie nakładają, ale 

te same adresy odpowiadają MEM i I/O dla pewnego zakresu 

 

wady: 
- muszą być linie MEMRQ i I/ORQ – żeby 

rozgraniczyć 
- dostęp do I/O jest nie zawsze wygodny 

 
zalety: 

- brak ograniczeń na ilość pamięci i adresów I/O 
- brak problemów z rozbudową 

 
podsumowanie: 

- sprawdza się w komputerach ogólnego przeznaczenia, tak są zbudowane 
PC-ty 

 
Konstrukcja pamięci w 8051 

 
- architektura harwardzka – odseparowanie pamięci 

programu od pamięci danych: 
 

1)  MEM kodu – max. 64 kilobajty pamięci 
+ pamięć zewnętrzna 

+ pamięć wewnętrzna 

 

 
 

 
 

 
 

 
Strony – po 2 kilobajty; odwoływanie do pamięci – PC. Pamięć kodu – 
adresowanie w sposób rejestrowy pośredni, rejestr pośredni – PC. MOVC – 
kontakt z pamięcią, zaczerpnięcie danych.  

PC 16 bitowy, bity 11-15 (najstarsze) – wskazują stronę (blok 2-kilowy), bity 
0-10 – adres. 

 
Pamięć danych 

 
- max. 64 kb 

 

+ wewnętrzna – max. FF (245 bajtów) albo 128 bajtów 

 

+ zewnętrzna – reszta 

background image

 

17 

 
- odwołania 
 

+R0 i R1 – odwołanie do pamięci danych – adresowanie rejestrowe 

pośrednie 
 

MOV A,@R0 – pobranie do A z wewn. pamięci danych, zawartość R0 jest 
adresem wskazującym na wewn. pamięć danych 

MOVX A,@R0 – pobranie do A z zewn. pamięci danych, tu 8 bitów nie 
wystarczy – potrzebny jest rejestr DPTR 

DPTR – rejestr. pośrednie przez DPTR, np. MOVX A,@DPTR 
 

- pamięć wewnętrzna: 
 

+ adresy 0 do 31 – zestawy rejestrów od R0 do R7 

 

+ od 32 do 47 – obszar adresowany bitowo 

 

+ od 48 do 127 (7FH) 

 

+ 80H (128) – 255 (FFH) – rejestry specjalnego przeznaczenia – blok 

SFR 

 
Cała pamięć wewnętrzna może być adresowana w trybie bezpośrednim. 

Stos znajduje się pod adresem 07 (po restarcie). 
 

Podsumowanie: obszar pamięci użytkowej: od 0 do 127, rejestry specjalne: od 
128 do 255 

 
Dla procesorów 8052 – modyfikacja 

 

SFR – rejestry specjalne, tryb adresowania 

bezpośredniego 
Blok rejestrów specjalnych – pośredni tryb 

adresowania 

 

 
Przyłączanie zewnętrznych pamięci 

 
8 linii adresowych, 8 linii danych. Magistrala danych – linie portu od P00 do 

P07, linie te pełnią też rolę młodszej części magistrali adresowej 
(multipleksowana (przełączana) linią ALE).  

Port 7: P3.7 – read, P3.6 – write. Wykorzystanie starszej części adresu. P2 – 
starsza część magistrali adresującej. 
 
Przyłączanie zewnętrznej pamięci programu.  

 
Linia PSEN (budowa – bramka AND razem z READ) – sygnalizuje dostęp do 

zew. pamięci programu. Można połączyć pamięć programu i danych 
 

Pamięć podręczna – CACHE 
 

Ma lepsze parametry niż zwykła pamięć, niewielka, zawarte są w niej 
instrukcje często potrzebne procesorowi. 

background image

 

18 

Cechy: 
 
+ współczynnik trafienia (hit ratio) – prawdopodobieństwo, że dana potrzebna 

procesorowi jest w pamięci cache 
 

+ miss ratio – danej nie ma w cache 

 

Które dane usunąć z cache? Algorytmy usuwania danych: 

 
+ uwzględnianie informacji statusowej 

 

- LRU (+) 

 

- MIN (-) 

 
+ bez uwzględniania informacji statusowej 

 

- FIFO (+) (first in first out) – usunięta ta, która jest najdłużej pod 

względem czasu trwania 

 

- RANDOM (+) 

 

LRU – usuwa się daną, która najdłużej nie była w użyciu 
MIN – usuwa tę, która najdłużej w przyszłości nie będzie potrzebna (bardzo 

fajnie, ale jak to zrobić?) 
 
Oprócz tych 4 mechanizmów, są jeszcze mechanizmy uaktualniania pamięci 

podstawowej: 
 

+ każdy zapis do cache automatycznie do pamięci podstawowej – na wypadek 
awarii cache, ale spada prędkość działania cache => rzadko stosowane 

 
+ dane do pamięci podstawowej – tylko wtedy, gdy mają być skasowane z 

cache – wydajniejszy sposób 
 

+ kopiowanie danych przed usunięciem i jeszcze dodatkowo badani czy dane 
uległy zmianom 

 
Organizacja pamięci cache 

 
+ cache o bezpośrednim mapowaniu (direct mapping) – dane z pamięci 

głównej brane są z pewnym krokiem 
 

background image

 

19 

ZALETA: oszczędność w czasie przeszukiwania pamięci cache 
 
WADA: zapotrzebowanie procesora może być takie, że będzie potrzebował 

dużo danych z pamięci głównej, a cache jest mała => cache mało przyspiesza 
działanie procesora 

 
+ cache w pełni asocjacyjna – w danej komórce cache może być dana z 

dowolnego obszaru pamięci głównej, dane z każdej komórki pamięci 
podstawowej 

 
ZALETA: unikamy poprzedniej wady, można 

odwzorować duży fragment pamięci głównej w cache 
 

WADA: trudno znaleźć daną w pamięci głównej 
 

 
 

+ pamięć cache zbiorowo – asocjacyjna 

 

Cache dzielone na mniejsze bloki, które są 
odpowiedzialne za bloki pamięci głównej. Obszary 

pamięci są ze sobą powiązane. 
 

ZALETY: 
- wstępne uporządkowanie 

- dość duża elastyczność 

 

 

Każde z tych 3 rozwiązań możemy spotkać – nie ma „lidera” 

 
Zarządzanie pamięcią operacyjną 

 
Pamięć główna: 

 

- podrzędna – często tworzona też z innych urządzeń, np. fragmentów 

dysku 

 

- nadrzędna – zawsze pozostaje pamięcią półprzewodnikową 

 

Pamięć podrzędna – nie powinna być pamięcią, do której system często się 
odwołuje, raczej do składowania informacji 
 
Pamięć nadrzędna jest dzielona na mniejsze struktury: 

 

- stronicowanie – podział na bloki o jednakowej wielkości. Blok – 

najmniejsza jednostka jaka może być przydzielona np. programowi. 
Stronicowanie – wygodniejsze z punktu widzenia sterowania pamięcią, 

po zakończeniu np. programu nowa strona może zastąpić stare 
„cegiełki”. Wada – często zadanie nie potrzebuje całego bloku (np. tylko 

parę bitów) 
 

background image

 

20 

- segmentacja – zmiana wielkości bloku. Po zakończeniu programu 
mogą zostać luki po przydzieleniu bloku innemu procesowi 

 

Cechy pamięci: 
 

+ protekcja (zabezpieczenie) 

 

+ udostępnianie (współdzielenie) 

 

Mechanizmy alokacji/relokacji stron (segmentów): 
 

+ sposób statyczny – przydzielenie zasobów w momencie uruchomienia 
programu, później bez zmian aż do końca 

 
+ dynamiczny – uruchomienie nowego programu powoduje przydzielenie 

zasobów, natomiast zakończenie programu powoduje analizę rozdzielenia 
stron/segmentów 

 
Dla mechanizmu dynamicznego: 

 
- lokalność danych: 

 
+ czasowa – warto rozmieścić dane w pobliżu, ale działania na tych 

danych będą ustawiane w określonym porządku (np. dla pętli 
niekoniecznie po kolei w komórkach) 

 
 

+ przestrzenna – warto, żeby dane znalazły się w kolejnych 

strukturach/komórkach pamięci, np. tablica 
 

Zbiór pracujący – lokalność i czasowa i przestrzenna