background image

Pamięć (część 1) 

 

 

Przedmioty prowadzone w ramach 

Programu Rozwoju WSFiZ w Białymstoku realizowane są w ramach  

Programu Operacyjnego Kapitał Ludzki, Priorytet IV Szkolnictwo wyższe i nauka, Poddziałanie 4.1.1  

Wzmocnienie potencjału dydaktycznego uczelni, współfinansowanego ze środków  

Europejskiego Funduszu Społecznego (POKL.04.01.01-00-030/08) 

9. 

Pamięć (część 1) 

Spis treści 

9.

 

Pamięć (część 1) .................................................................................................................. 1

 

9.1

 

Podstawowe typy i parametry ........................................................................................ 1

 

9.2

 

Pamięć operacyjna ......................................................................................................... 5

 

9.2.1

 

Rodzaje pamięci operacyjnych ............................................................................. 5

 

9.2.1.1

 

Organizacja matryc............................................................................................... 5

 

9.2.1.2

 

Klasyfikacja ze względu na technologię wytwarzania ........................................... 7

 

9.2.2

 

Banki pamięci i ich adresacja ............................................................................... 9

 

 

9.1  Podstawowe typy i parametry 

Zgodnie z założeniami sformułowanymi przez von Neumanna pamięć systemu 

komputerowego służy do przechowywania rozkazów i danych. Jeżeli potraktować ją jako czarne 
pudełko realizujące określone funkcje, to najważniejszymi parametrami charakteryzującymi 
pamięć są: 

1.  Pojemność; 
2.  Szybkość; 
3.  Koszt; 
4.  Pobór mocy. 

Pojemność (ang. capacity) określa ilość informacji, która może być w niej przechowywana. 

Mierzona jest najczęściej w bajtach lub słowach. Niezależnie od jednostek, w których wyraża się 
pojemność pamięć dzieli się na fragmenty o stałej długości, którym przyporządkowuje się 
kolejne liczby całkowite nazywane adresami. W zależności od typu pamięci (patrz dalej) 
fragmenty te mogą mieć różną wielkość. W pamięci głównej (tzw. operacyjnej) komputera 
fragmenty te mają zazwyczaj długość słowa i nazywane są komórkami. Długość słowa zawiera 
się pomiędzy bajtem (dla mikrokomputerów) a ośmioma bajtami (dla dużych instalacji). W 
związku z tym wyrażając pojemność pamięci w słowach zwyczajowo podaje się liczbę słów i 
wielkość słowa, przy czym liczbę słów poprzedza się mnożnikiem lub jego skrótem, np. Kilo- 
(K, mnożnik = 2

10

), Mega- (M, mnożnik = 2

20

), Giga- (G, mnożnik = 2

30

) czy Tera- (T, mnożnik 

= 2

40

). 

W pamięciach masowych, które są zazwyczaj większe od pamięci operacyjnych, adresuje się 

fragmenty o długości od kilkuset do kilku tysięcy bajtów. Dobrym przykładem są tu dyski 
magnetyczne, dla których takim fragmentem jest tzw. sektor (patrz rozdział 9.3 Pamięci 

background image

Pamięć (część 1) 

 

 

dyskowe). Istotną cechą opisywanego fragmentu jest to, że jest on najmniejszą porcją, którą 
można zapisać do lub odczytać z pamięci. 

Szybkość pamięci określa jak często można z niej korzystać. Na tą okoliczność podawane są 

różne parametry, np. takie jak: 

 

Czas dostępu (ang. access time); 

  Czas cyklu (ang. cycle time); 
 

Szybkość transmisji (ang. transfer speed). 

Czas dostępu jest czasem pomiędzy momentem zażądania dostępu do informacji a chwilą, w 

której ta informacja pojawi się na wyjściu pamięci. Dla pamięci operacyjnej wartości czasu 
dostępu zawierają się pomiędzy 10 ns a 100 ns. 

Czas cyklu jest najkrótszym czasem, jaki musi upłynąć pomiędzy dwoma kolejnymi żądaniami 

dostępu do pamięci. W istocie jest to opóźnienie wnoszone przez układy elektroniczne, z których 
zrobiona jest pamięć. Zazwyczaj jest to czas nieco dłuższy od czasu dostępu.  

Szybkość transmisji wyraża się liczbą bajtów, jaką można przesłać w jednostce czasu 

pomiędzy pamięcią a innym urządzeniem. Zazwyczaj jest on stosowany do urządzeń, dla których 
fragment jest dużo większy niż słowo. Wynika to z faktu, że w takich urządzeniach najmniejszą 
adresowalną jednostką jest wspomniany fragment, czyli zapisuje się go lub odczytuje w całości, a 
w takiej sytuacji czas dostępu do pojedynczego słowa jest mniej istotny. 

Co do kosztów, to światowy trend wskazuje jednoznacznie, że jednostkowa cena pamięci 

nieustannie spada. Najwyraźniej widać to na pamięciach półprzewodnikowych. Rynek jest 
jednak mocno zróżnicowany. Z jednej strony występują na nim tanie, ale niezbyt szybkie układy 
scalone pamięci półprzewodnikowych o dużych pojemnościach. Z drugiej – szybkie układy 
pamięciowe mające niewielkie pojemności i na dodatek wysoką cenę. Stąd w praktyce pamięci 
operacyjne realizuje sie przede wszystkim na dużych, tanich ale wolnych układach 
półprzewodnikowych. Jednocześnie w celu przyśpieszenia wykonywania programów używa się 
jako pomocniczą, współpracującą z główną, niewielką, drogą ale szybką tzw. pamięć 
kieszeniową (ang. cache memory). Zagadnienia organizacji współpracy obu rodzajów pamięci 
będą omówione w dalszej części tego rozdziału (patrz rozdział 9.2.4 Pamięć kieszeniowa). 

Każdy pracujący układ scalony pobiera moc i wydziela ciepło. O ile budowanie odpowiednio 

wydajnych zasilaczy nie stanowi (poza kosztami) jakiegoś szczególnego problemu, to szybkie 
odprowadzenie ciepła tak, aby utrzymać nominalną temperaturę pracy układu już nim jest. 
Problem wielkości poboru mocy, do pominięcia w niewielkich pamięciach, staje się istotnym 
problemem dla bardzo dużych pamięci. Łączonych jest wtedy ze sobą dużo układów scalonych i 
ilości wytworzonego ciepła mogą być trudne do odprowadzenia. Innym obszarem, gdzie 
zagadnienie minimalizacji poboru mocy musi być traktowane jako pierwszoplanowe jest świat 
laptopów i komputerów kieszonkowych. Zagadnienie staje się szczególnie krytyczne, jeżeli 
rośnie zapotrzebowanie na moc ze strony innych części systemu komputerowego, np. procesora. 

Konstruktorzy zmuszeni są do instalowania w systemie komputerowym wielu rodzajów 

pamięci. Różne rodzaje pamięci półprzewodnikowych są niezbędne, gdyż jako jedyne dorównują 
swoją szybkością procesorowi, a w związku z tym mogą z nim efektywnie współpracować; 
szybkie pamięci magnetyczne (głównie dyski) – ponieważ są pojemnymi pamięciami 
nieulotnymi (zachowują informację po wyłączeniu napięcia), na których można zrealizować 
system plików i przechowywać oprogramowanie (w tym kod systemu operacyjnego) oraz różne 
istotne informacje użytkownika; dyski optyczne i pamięci taśmowe – bo są wygodnym 

background image

Pamięć (część 1) 

 

 

(pojemnym, przenośnym) narzędziem do sporządzania kopii bezpieczeństwa (ang. backup) oraz 
dystrybuowania oprogramowania. Wszystkie one tworzą tzw. hierarchię pamięci. Można 
wyróżnić 5 jej poziomów: 

1.  Pamięć rejestrowa; 
2.  Pamięć kieszeniowa; 
3.  Pamięć operacyjna; 
4.  Pamięć masowa; 
5.  Pamięć zewnętrzna. 

nazwa 

pojemność 

Czas dostępu 

rejestrowa 

<1Kb 

<1 ns 

kieszeniowa 

≤144MB 

1÷10 ns 

operacyjna 

512MB÷16GB 

10÷100 ns 

masowa  

>100GB 

<10 ms 

zewnętrzna 

nieograniczona 

sekundy÷minuty 

          Tabela 9.1. Zestawienie parametrów różnych typów pamięci 

Pamięć rejestrową tworzą wszystkie rejestry znajdujące się w procesorze. Ponieważ jest ich od 

kilku do kilkudziesięciu to jest pamięć o najmniejszej pojemności, ale za to o najkrótszym czasie 
dostępu. Poza tym niektóre z rejestrów są dostępne jedynie dla układu sterowania, inne (tzw. 
rejestry ogólnego przeznaczenia) są dostępne dla programisty. 

Pamięć kieszeniowa jest niezbyt dużą (poniżej 144MB) pamięcią o czasie dostępu rzędu 1÷10 

ns. Pełni rolę bufora na podręczne, często używane informacje. Może być umiejscowiona w 
procesorze (ang. internal cache; L1, L2) albo poza nim (ang. external cache; L3). Ze względu na 
mały czas dostępu istotnie przyśpiesza ona działanie procesora. Wybrane problemy jej 
organizacji będą omówione później w tym rozdziale. 

Pamięć operacyjna jest główną pamięcią komputera. Jej pojemność może sięgać kilkunastu 

Giga bajtów. Ponieważ tendencja jest wzrostowa to można spodziewać się, że granice te mogą 
być w bliskiej przyszłości przesunięte w górę. Czas dostępu zależy mocno od zastosowanej 
technologii, ale najczęściej jest to 10÷100 ns. 

Pamięć masowa jest zwykle realizowana na dyskach magnetycznych. Jej pojemność jest rzędu 

setek Mega bajtów dla mikrokomputerów do Tera bajtów dla dużych instalacji. Czas dostępu 
zazwyczaj nie przekracza 10 ms. Dyski są przedstawicielami tzw. pamięci nieulotnych, tzn. 
takich, w których zapisane informacje nie giną po zaniku napięcia zasilającego. 

Odnośnie pamięci zewnętrznych trudno operować parametrami liczbowymi, gdyż te są mocno 

zależne od konkretnego typu pamięci. Nawiasem mówiąc ten rodzaj pamięci, w odróżnieniu od 
pozostałych, jest wyjątkowo niejednorodny technologicznie. Są tu i streamery, gdzie nośnikiem 
jest taśma magnetyczna, ale również dyski optyczne (oba są pamięciami nieulotnymi). Można 
tylko powiedzieć, że ich kluczowym parametrem jest czas transmisji. Ich najważniejszą cechą 
jest możliwość wymiany nośnika. Ponieważ rozbudowane systemy informacyjne (np. bazy 
danych) mogą być przechowywane na wielu nośnikach to daje to tą korzyść, że w danej chwili 
używa się tylko potrzebnego nośnika. 

background image

Pamięć (część 1) 

 

 

Zestawienie rodzajów i parametrów pamięci znajduje sie w tabeli 9.1 (patrz wyżej) 

 Ze względu na sposób dostępu do informacji pamięci można podzielić na cztery następujące 

klasy: 

1.  Pamięci z dostępem bezpośrednim; 
2.  Pamięci z dostępem cyklicznym; 
3.  Pamięci z dostępem sekwencyjnym; 
4.  Pamięci z dostępem asocjacyjnym. 

Nazwa „dostęp bezpośredni” albo inaczej „swobodny” (ang. RAM – random access memory) 

wzięła się stąd, że czas dostępu w tych pamięciach nie zależy od adresu komórki. Nośnikami 
informacji w tych pamięciach są tzw. matryce elementów. Zasada działania matryc jest taka, że 
każdy element matrycy pamięta jeden bit. Dla n-bitowego adresu i m-bitowego słowa matryca 
realizuje 2

n

 słów m-bitowych, czyli jest pamięcią o pojemności 2

n

×m. Schemat działania takiej 

pamięci pokazany jest na rysunku 9.1. 

 
 
 

     

           n  

  

 

             Matryca   

    m 

 

           m 

Adres

  

 

 

 

            

2

n

×m 

 

                  Bufor 

 

 

R/W 

 

          Rysunek 9.1. Schemat pamięci RAM 

 Jak wynika z rysunku procesor wysyła n-bitowy adres i sygnał E, który uaktywnia wejściowy 

dekoder (na rysunku oznaczony jako prostokąt przekreślony ukośną linią). Przekształca on adres 
w numer słowa. Linią R/W wysyłany jest sygnał rodzaju pracy: odczyt/zapis (ang. read/write). W 
rezultacie, na koniec cyklu odczytu w wyjściowym buforze pojawia się m-bitowe słowo, a na 
koniec cyklu zapisu słowo z bufora zostaje zapamiętane pod podanym adresem. Proszę zwrócić 
uwagę na sposób określania z ilu bitów składa się szyna. Obu-kierunkowe strzałki między 
matrycą a buforem oraz ta na wyjściu są niezbędne, gdyż przy zapisie i odczycie m-bitowego 
słowa kierunek przepływu informacji jest przeciwny.  

Specjalnym rodzajem pamięci o dostępie swobodnym są pamięci ROM (ang. read only 

memory). Są to pamięci jednokrotnie zapisywane i wielokrotnie odczytywane (patrz niżej). Przy 
okazji: pamięci RAM są wielokrotnie zapisywane i wielokrotnie odczytywane. 

Pamięci z dostępem cyklicznym to przede wszystkim dyski będące przedstawicielem grupy 

pamięci z ruchomym nośnikiem. Grupę drugą: pamięci cyklicznych z nośnikiem nieruchomym 
tworzą pamięci zbudowane na rejestrach przesuwnych, w których informacja krąży w zamkniętej 
pętli sprzężenia zwrotnego. Zasada działania pamięci cyklicznych jest taka, że co pewien 
ustalony czas umożliwia ona odczyt lub zapis informacji pod pewien adres nazywany adresem 
bieżącym. Porównując ten adres z adresem wejściowym można wychwycić moment zgodności i 
wykonać akcję zapisu lub odczytu. 

Pamięci z dostępem sekwencyjnym są pamięciami realizowanymi na taśmach magnetycznych 

w urządzeniach nazywanych streamerami. Informacja zapisywana jest w kolejności jej 
przychodzenia w porcjach nazywanych blokami lub rekordami. Aby odczytać informację należy 

background image

Pamięć (część 1) 

 

 

podać numer bloku liczony od początku nośnika, a urządzenie przewinie taśmę do bloku o 
wskazanym numerze.  

Pamięci asocjacyjne (ang. associative memory) nazywane są również pamięciami 

adresowanymi zawartością (ang. content addressable memory) albo pamięciami 
skojarzeniowymi. Pamięci takie składają się z pamięci RAM oraz dodatkowej elektroniki 
przeszukującej jej zawartość. Przykłady takiej pamięci zostaną opisane dalej w tym rozdziale. 

9.2 

Pamięć operacyjna 

9.2.1 

Rodzaje pamięci operacyjnych 

Zostaną omówione dwie klasyfikacje pamięci operacyjnych: pierwsza bazuje na różnicach w 

sposobie wybierania elementów z matryc, druga – na różnicach w technologii wytwarzania. 
Zaczniemy od tej pierwszej.  

9.2.1.1 Organizacja matryc 

Nośnikami informacji w pamięci operacyjnej są tzw. matryce elementów. Ich ogólna definicja i 

sposób działania został opisany wyżej. 

Matryca może być tak skonstruowana, że w każdym jej wierszu znajduje się dokładnie jedno 

słowo. Wejściowy dekoder zamienia adres na numer słowa, które przy odczycie pojawia się na 
liniach wyjściowych, a przy zapisie, korzystając z tych samych linii ustawia wartości bitów w 
wybranym słowie zgodnie z podanymi na nich wartościami. Na rysunku 9.2a pokazana jest 
przykładowa pamięć o takiej organizacji. 

a) 

 

 

 

 

 

 

    b) 

 

 

 

    

 

 

 

 

 

 

 

a

0

 

   wejścia 

 

 

 

 

 

 

a

1

 

                Matryca

 

 

 

wybierające 

 

 

 

 

 

 

 

               

 

 

 

 

 

 

 

 

 

 
 

 

 

 

 

 

 

 

R/W 

 
 
 

 

 

 

 

 

 

 

 

 

 

linie danych 

   

     Rysunek 9.2. Pamięć typu 2D: a) matryca;  b) układ współpracujący 

Jej pojemność wynosi 16 bitów ułożonych w matrycę 4×4 (4 słowa 4-ro bitowe). Wystarczy 

określić jedną linię (podać na nią jedynkę) aby wybrać całe słowo. Na rysunku 9.2b pokazany 
jest schemat układu współpracującego z opisaną matrycą. W związku z przyjętą organizacją 
dekoder wejściowy przekształca 2-bitowy adres (2 bity a

1

a

2

 wystarczą, aby ponumerować każde 

z 4 słów) w sygnał na dokładnie jednym z 4 swoich wyjść, a mianowicie tym, którego numer jest 
zakodowanym binarnie adresem (taki sposób kodowania nazywa się kodowaniem 1 z n, w 
naszym przykładzie 1 z 4). Kierunek przepływu informacji na wyjściach układu 
współpracującego wynika z realizowanej operacji: odczytu lub zapisu. 

background image

Pamięć (część 1) 

 

 

Pamięć z matrycą wyposażoną w jedno wejście wybierające nazywana jest pamięcią z 

wybieraniem liniowym lub pamięcią typu 2D. Jej podstawową wadą jest konieczność używania 
dekodera o liczbie wyjść równej pojemności pamięci (liczonej w słowach). Przy rozmiarach 
pamięci np. 64K daje to dekoder o 16 wejściach i 2

16

 wyjściach. Skonstruowanie takiego 

dekodera jest trudne. 

W związku z tym używa się pamięci o dwóch liniach wybierających – pamięć o takiej 

organizacji nazywa się pamięcią 3D. Jedna linia wybiera wiersz matrycy, druga kolumnę. W obu 
przypadkach sygnałem wybierającym jest jedynka. Matryca zorganizowana jest w płaty 
(podmatryce), z których każdy przechowuje jeden bit słowa, tak więc płatów jest tyle ile bitów w 
słowie. Na rysunku 9.3a (patrz niżej) pokazana jest organizacja pojedynczego płata dla pamięci 
16×4 (16 słów 4-ro bitowych).  
Z 4 bitów adresu 2 (a

0

a

1

) wybierają wiersz, a pozostałe dwa (

a

2

a

3

) kolumnę. 

Przy typie 3D i rozmiarach pamięci 64K potrzebujemy dwa dekodery o 8 wejściach i 2

8

 

wyjściach. Są one prostsze do skonstruowania niż dekoder o 2

16

 wyjściach niezbędny przy 

realizacji pamięci o takiej samej pojemności, ale typie 2D. Ceną, która płacimy jest wydłużenie 
czasu dostępu ze względu na wydłużenie czasu dekodowania. 

a) 

 

 

 

 

 

b) 

 

 
 

 

 

 

 

 

 

 

 

 

 

          linie 

 

 

 

 

 

 

 

 

 

 

 

      danych 

 
 
 
 

 

 

 

 

 

         

 

 

 

 

 

 

     

 

           

 

 

 

 

 

 

    a

0

 

 

              Płat              

 

 

 

 

 

 

 

 

    a

1

 

 

               4×4 

 

 

 
 

 

 

 

 

 

      

 

 

 

 

 

 

    E 

 
 

 

 

 

 

 

 

 

                   

     

   

 

 

 

 

 

 

               

              a

2

       a

3

 

   

       Rysunek 9.3. Pamięć typu 3D: a) płat;  b) układ współpracujący 

Istnieje rozwiązanie pośrednie, tzw. typ 2½D. Tak jak w typie 2D jedna linia wybiera 1 wiersz, 

ale do słowa wyjściowego przechodzą z tego wiersza tylko wybrane kolumny (np. co piąta licząc 
od pierwszej albo co piąta licząc od drugiej albo co piąta od trzeciej albo co piąta od czwartej). 
Wyboru dokonuje się za pomocą multiplekserów, z których każdy sterowany jest tą sama częścią 
bitów adresu. Mamy więc jedną matrycę, a na jej wyjściu tyle multiplekserów ile bitów w słowie, 
a każdy z nich wybiera po jednym, kolejnym bicie do słowa wyjściowego. Na rysunku 9.4a 
pokazana jest matryca 2½D dla pamięci 16×1, a na rysunku 9.4b – 1K×8 (patrz niżej)

 

 

 

background image

Pamięć (część 1) 

 

 

a) 

 

 

 

    b) 

 
a

0

 

 

 

 

 

          7 

a

1

 

 

   Matryca 

       adres 

 

 

             Matryca 

 

 

 

 

     

 

 

 

 

 

             128×64 


 
a

2

 

 

 

 

 

         3   

 

 

 

a

3

 

 

 

                     adres                                         1          2          ....              8 

R/W 
 
 

   

 

Rysunek 9.4. Pamięć typu 2½D: a) 16×1;  b) 1K×8 

Obliczenie parametrów dla pamięci z rysunku 9.4b wymaga nieco arytmetyki. Zauważmy, że 

w ogólności, jeżeli mamy skonstruować matrycę dla 2

n

 słów po 2

m

 bitów w słowie, to istnienie 

matrycy kwadratowej jest możliwe jeżeli n+m jest parzyste. Wtedy mamy m+n = 2∙p. Pojemność 
matrycy wynosi 2

n

∙2

m

 = 2

n+m

 =2

2∙p

 i istnieje pierwiastek z tej liczby równy 2

 p

, który jest 

jednocześnie liczbą wierszy (l) i kolumn (k) poszukiwanej matrycy kwadratowej. W naszym 
przykładzie matryca liczy 1K=2

10

 słów 8=2

3

 bitowych, czyli n=10, m=3, i m+n=13, co oznacza, 

że matryca kwadratowa nie istnieje i trzeba konstruować matrycę prostokątną. Liczba wierszy 
wynosi l = 2

10

/2

3

=2

7

=128. Ponieważ k l = 2

10

 to k = 2

10

/l = 2

10

/2

7

 = 2

6

 = 64. Pamięć ma słowa 8-

bitowe, co oznacza, że potrzeba 64/8 = 8 multiplekserów wybierających na wyjściu 8 jego bitów. 

Na zakończenie tej części należy podnieść ponownie kwestię długości słowa pamięci. Ze 

względu na możliwość powstawania przekłamań (zjawisko polegające na tym, że słowo zapisane 
i odczytane różnią się od siebie) powodowanych przez niewłaściwe poziomy napięć albo zbyt 
duże natężenie promieniowania stosuje sie układy detekcji i korekcji takich przekłamań. 
Najpopularniejszą metodą detekcji błędów są tzw. bity parzystości. Metoda polega na tym, aby 
przy zapisie dopisać do każdego słowa bit z ustawioną jedynką, jeżeli liczba jedynek w słowie 
jest parzysta i bit z zerem - jeżeli jest nieparzysta. Jeżeli przy odczycie wykona się identyczną 
operację, to porównanie wartości odczytanego i obliczonego bitu parzystości pozwala na 
wykrycie przekłamań na nieparzystej liczbie bitów słowa. Jedną z popularniejszych metod 
detekcji i korekcji są tzw. kody CRC, które opierają się również na dopisywaniu do każdego 
słowa dodatkowych bitów. W obu przypadkach długość słowa ulega zmianie, a z nią zmienia sie 
pojemność całej pamięci. Stąd operując długością słowa pamięci należy upewnić się, czy w 
podawanej liczbie zostały uwzględnione bity realizujących opisane wyżej cele. 

9.2.1.2 K

lasyfikacja ze względu na technologię wytwarzania 

Druga klasyfikacja pamięci opiera się o różnice w technologii wytwarzania. Omówione 

zostaną dwa podziały: pierwszy dotyczy tzw. pamięci stałych (nazywanymi również pamięciami 
„tylko do odczytu”) ROM (ang. read only memory) wyróżniających się swoimi własnościami na 
tle wszystkich innych pamięci półprzewodnikowych, które na tą okoliczność nazywa się 
nieprecyzyjnie pamięciami RAM. Podział drugi dotyczy wyłącznie pamięci RAM. Wyróżnia się 
wśród nich pamięci statyczne SRAM (ang. static RAM) oraz dynamiczne DRAM (ang. dynamic 
RAM). 

Pamięci ROM, pomimo że są pamięciami półprzewodnikowymi zachowują swoją zawartość 

po wyłączeniu napięcia zasilającego (są pamięciami nieulotnymi). Ta cecha oraz duża (w 
porównaniu np. z pamięciami dyskowymi) szybkość działania zadecydowała o używaniu ich do 

background image

Pamięć (część 1) 

 

 

przechowywaniu istotnych składników systemu operacyjnego (np. BIOSu). Zaprezentowana 
poniżej klasyfikacja typów pamięci ROM podana została w ujęciu historycznym, od typów 
powstałych najwcześniej do typów nowszych. Pozwala to prześledzić rozwój technologii ze 
świadomością, że niektóre z typów nie są już używane. 

  MROM (ang. maskable ROM) – zawartość tych pamięci ustalana jest w procesie produkcji 

przez stosowanie odpowiednich masek (stąd nazwa). Maski są sposobem na kształtowanie 
pożądanych cech funkcjonalnych układów scalonych. Jest to najtańszy rodzaj pamięci ROM 
(przy założeniu odpowiednio długiej serii produkcyjnej).  

  PROM (ang. programmable ROM) – zawartość tej pamięci można zaprogramować ale 

można to zrobić tylko raz (proces programowania niszczy nieodwracalnie pewne połączenia 
wewnętrzne pamięci). Obecnie ten typ nie jest używany. 

  EPROM (ang. erasable ROM) – pamięć wielokrotnie programowalna. Poprzednią 

zawartość można skasować przez naświetlenie kości pamięci promieniami UV. Można to 
zrobić po uprzednim wyjęciu kości z komputera. Obecnie ten typ jest używany sporadycznie. 

  EEPROM albo E

2

PROM (ang. electrically erasable PROM) – pamięć kasowana i 

programowana w drodze podawanie na jej wejścia odpowiednich sekwencji sygnałów. Proces 
ten może przebiegać bez konieczności wyjmowania kości z komputera. W ten sposób można 
np. instalować nowe wersje BIOSa. 

Warto wspomnieć o pamięci typu NVRAM (ang. non volatile RAM). Jest to połączenie 

pamięci RAM z EEPROM. W tym typie pamięci można na żądanie przepisać zawartość pamięci 
RAM do EEPROM. Czas tej operacji jest wprawdzie długi (kilkanaście ms) ale uzyskujemy 
bardzo wygodną możliwość przechowania przez dowolnie długi czas określonych, wcześniej 
wypracowanych wartości. Dobrym przykładem zastosowań są tu parametry konfiguracyjne, z 
których korzystamy przy włączaniu systemu komputerowego, a które od czasu do czasu 
zmieniamy zgodnie z naszymi potrzebami.  

Czas dostępu dla pamięci typu EEPROM jest rzędu 100 – 200 ns. Mogą być one wyposażone 

w mechanizm pozwalający na wprowadzanie tzw. stanu wyłączenia (ang. standby power). W taki 
stan można wprowadzić układ, kiedy nie jest realizowany ani zapis ani odczyt. Wtedy pobór 
mocy może spadać w nim nawet 100–krotnie w stosunku do mocy pobieranej w stanie 
aktywnym.  

Przejdźmy do podziału na pamięci statyczne SRAM oraz dynamiczne DRAM. Pamięci 

statyczne SRAM są to szybkie, drogie, ale o niezbyt dużych pojemnościach, za to o dużym 
poborze mocy pamięci półprzewodnikowe. Pojedynczy element takich pamięci (tj. element 
pamiętający jeden bit) zawiera tzw. przerzutnik. Jest to 2-stanowy układ zbudowany z kilku 
tranzystorów, sprzedawany na rynku również jako samodzielny układ, podobnie jak np. bramki 
logiczne. To właśnie wysoki pobór mocy jest powodem problemów ze zbudowaniem układu 
SRAM o dużej pojemności. Pamięci SRAM stosuje się wiec tam, gdzie pojemność nie musi być 
szczególnie duża, za to wskazana jest jak największa szybkość działania. Takie właśnie 
parametry powinna posiadać tzw. pamięć kieszeniowa (ang. cache memory). Problemy 
organizacji takich pamięci i ich współpraca z procesorem oraz pamięcią operacyjną zostaną 
omówione dalej w tym rozdziale. 

Zajmijmy się teraz pamięciami dynamicznymi DRAM. Podstawowym elementem tych pamięci 

jest kondensator. Jeżeli jest on naładowany, to taki stan interpretuję się jako bit równy jeden. 

background image

Pamięć (część 1) 

 

 

Pobór mocy dla tych pamięci jest mały, a pojemność informacyjna (mierzone ilością bitów) 
pojedynczych kości – duża. Szybkość tych pamięci nie jest imponująca – z reguły nie przekracza 
100 ns. Ich podstawową wadą jest dosyć szybka utrata zapisanych informacji powodowana 
rozładowywaniem się kondensatorów. Odczyt informacji przyśpiesza proces rozładowania. W 
związku z tym zachodzi potrzeba okresowego odświeżania (ang. refresh) zawartości pamięci 
(typowe wartości okresu odświeżania to 2, 4 lub 8 ms). Jeżeli dla potrzeby oszacowania 
częstotliwości odświeżeń założymy, że jest to 1 ms, to mamy:  

1 ms/100 ns = 10

-3

/100∙10

-9

 = 10

-3

/10

-7 

= 10

4

 = 10 000; 

co oznacza, że akcję odświeżania należy przeprowadzić raz na 10 000 cykli pamięci. Sama akcja 
odświeżania polega na odczycie i powtórnym zapisie tej samej informacji. Wymaga to 
chwilowego odłączenia procesora od pamięci, przejęcia magistrali przez generator adresów, 
który wygeneruje kolejno wszystkie adresy komórek i wymusi na każdej z nich operację odczytu 
i ponownego zapisu. 

9.2.2 

Banki pamięci i ich adresacja 

Jak to już powiedziano, pamięci DRAM nie należą do najszybszych. W związku z tym 

poszukiwano pozatechnologicznych sposobów poprawienia ich parametrów. Jednym z 
powszechniej stosowanym jest podzielenie pamięci na części nazywane bankami, z których 
każdy ma parę rejestrów: MAR i MDR pozwalających na niezależny zapis i odczyt.  

Rozbicie pamięci operacyjnej na mniejsze banki pozwala po rozpoczęciu operacji zapisu lub 

odczytu z dowolnego banku, zainicjować kolejną operację na innym banku nie czekając na 
rezultat pierwszej z nich. W oczywisty sposób przyspiesza to pracę. Zysk czasowy przy n 
sięgnięciach do adresów rozrzuconych po różnych bankach teoretycznie może sięgać n∙T

c

, gdzie 

T

c

 oznacza czas cyklu pamięci. Przykład pamięci o architekturze bankowej pokazano na rysunku 

9.5. Są na nim 4 banki po 7 słów w każdym. Adresy takiej pamięci są 5-cio bitowe (przy 32 
komórkach pamięci mamy: 32 = 2

5

). Dwa pierwsze bity interpretowane są jako numer banku, a 

pozostałe 3 jako numer komórki w tym banku, np. komórka 22 = (10110)

2

 oznacza szóstą 

komórkę (6 = 110

2

) w banku numer 2 (2 = 10

2

).  

 

  bank 0   

 

    bank 1 

 

    bank 2 

 

     bank 3 

       0  

 

            8  

 

          16  

 

           24 

       1  

 

            9  

 

          17  

 

           25 

       2  

 

           10 

 

          18  

 

           26 

       3  

 

           11 

 

          19  

 

           27 

       4  

 

           12 

 

          20  

 

           28 

       5  

 

           13 

 

          21  

 

           29 

       6  

 

           14 

 

          22  

 

           30 

       7  

 

           15 

 

          23  

 

           31 

 
 
               MDR 0 

 

      MDR 1 

                     MDR 2 

 

      MDR 3 

 

     MAR 0 

 

      MAR 1 

 

       MAR 2 

 

      MAR 3 

 

   

 

 

Rysunek 9.5. Pamięć o architekturze bankowej 

Oczywiście, jeżeli kolejne adresy są z tego samego banku to należy czekać i zysk spada do 

zera. Rachunek prawdopodobieństwa wskazuje, że jeżeli wystąpiło sięgnięcie do komórki o 
adresie m pamięci to sięgnięcie do komórki o adresie sąsiednim jest dużo bardziej 

background image

Pamięć (część 1) 

 

10 

 

prawdopodobne niż sięgnięcie pod inny adres. Oznacza to, że przy architekturze bankowej zyski 
będą dużo mniejsze od maksymalnych. 

Rozwiązaniem tego problemu jest tzw. architektura z przeplotem. W takiej architekturze 

komórki o sąsiednich adresach umieszczane są w różnych bankach. Efekt taki można uzyskać 
używając najmniej znaczące bity w adresie jako numer banku. Przykład tego rodzaju pamięci 
pokazany jest na rysunku 9.6 (patrz niżej)

 
 

    bank 0 

 

      bank 1 

 

      bank 2 

      

      bank 3 

        0 

 

 

 1 

 

              2 

 

              3 

        4 

 

 

 5 

 

              6 

 

              7 

        8 

 

 

 9 

 

            10 

 

            11 

       12 

 

             13 

 

            14 

 

            15 

       16 

 

             17 

 

            18 

 

            19 

       20 

 

             21 

 

            22 

 

            23 

       24 

 

             25 

 

            26 

 

            27 

       28 

 

             29 

 

            30 

 

            31 

 
 
                MDR 0 

     

       MDR 1 

 

        MDR2 

 

        MDR3 

                MAR 0 

 

       MAR 1 

 

        MAR 2 

 

        MAR3 

 

Rysunek 9.6. Pamięć o architekturze z przeplotem 

Adresy takiej pamięci są tak jak uprzednio 5-cio bitowe. Dwa ostatnie bity interpretowane są jako 
numer banku, a 3 pierwsze jako numer komórki w tym banku, np. komórka 22 = (10110)

2

 

oznacza piątą komórkę (5 = 101

2

) w banku o numerze 2 (2 = 10

2

).   


Document Outline