Układy logiczne
8. Pamięci ROM i RAM
8.2. Pamięci RAM
Pamięć RAM (ang. Random Access Memory) to inaczej pamięć o dostępie swobodnym. Jest to uporządkowany zestaw rejestrów (komórek), z których każdy jest jednoznacznie identyfikowany przez liczbę z czyli adres. Różnica pomiędzy pamięciami ROM i RAM polega na tym, że do komórek pamięci RAM możemy zapisywać słowa binarne i odczytywać z nich zapisane słowa, natomiast pamięć ROM służy zasadniczo tylko do odczytu.
Pamięć RAM (por. Rys. 3) ma wejście adresowe, wejście danych wyjście danych i dwa wejścia sterujące: wejście wyboru układu (Chip Enable) (czasami oznaczane jako od ang. chip select) i wejście mówiące o tym czy dane zapisujemy czy odczytujemy. Adres podawany jest z reguły jako słowo binarne kodzie NKB (naturalny kod binarny). Najczęściej adresy są kolejnymi liczbami całkowitymi od 0 do , gdzie k jest długością słowa adresowego. Wszystkie adresy pamięci nazywamy przestrzenią adresową.
Rejestry składające się na pamięć nazywamy komórkami (pamięci). Liczbę komórek pamięci nazywamy pojemnością pamięci. Typowe pojemności pamięci RAM we współczesnym systemie mikrokomputerowym to 128 MB do 1 GB, ale można spotkać stacje robocze z pamięcią RAM np. 4GB. Z kolei w bardzo prostych mikroprocesorach jednoukładowych stosowane są pamięci RAM np. o pojemności 256 B (por. mikroprocesory rodziny Intel MCS-51). Warto w tym miejscu przypomnieć, że przy określaniu pojemności pamięci B oznacza bajt, b oznacza bit, k (kilo) oznacza 1024, M (mega) oznacza 220, G (giga) oznacza 230.
Pamięci RAM są z reguły półprzewodnikowymi pamięciami ulotnymi pełniącymi w systemie cyfrowym funkcję tzw. pamięci operacyjnej lub pamięci głównej. Z punktu widzenia teorii układów logicznych pamięć RAM jest układem sekwencyjnym.
Rys. 3. Pamięć o dostępie swobodnym czyli pamięć RAM
Pamięci RAM dzielimy na pamięci statyczne (pamięci SRAM) i pamięci dynamiczne (pamięci DRAM). SRAM (Static Random Access Memory) to tzw. statyczna pamięć RAM. Elementem pamiętającym takiej pamięci jest przerzutnik bistabilny z reguły zrealizowany w technice CMOS. Pamięć SRAM jest więc ulotna (ang. volatile memory). Po wyłączeniu i ponownym włączeniu napięcia zasilającego przerzutnik stanowiący komórkę elementarną może się ustawić w dowolnym z dwu możliwych stanów. W pamięci SRAM nie ma konieczności odświeżania komórek elementarnych jak w pamięciach DRAM, o których za chwilę. Pamięci SRAM mają mniejszy czas dostępu (są szybsze) niż pamięci DRAM ale komórka elementarna zajmuje więcej miejsca na chipie stąd mniejsze pojemności tych pamięci. Pamięci SRAM stosowane są w systemach komputerowych jako szybkie pamięci podręczne czyli pamięci typu cache poziomu pierwszego (pamięci cache L1) i poziomu drugiego (pamięci cache L2).
DRAM (ang. Dynamic Random Access Memory) to tzw. dynamiczna pamięć RAM. Pamięci tego typu są zbudowane z tranzystorów MOS. Elementem pamiętającym 1-bitowej komórki elementarnej pamięci DRAM jest kondensator a ściśle rzecz biorąc pojemność wejściowa tranzystora MOS o wartości 30-50 fF (femtofarady). Zasada pamiętania 0 i 1 jest więc taka sama jak w przypadku układów próbkująco-pamiętających (układów S/H) i tak jak w przypadku układów S/H z powodu nieuniknionych prądów upływu następuje szybkie rozładowywanie się kondensatora. Pociąga to za sobą konieczność okresowego doładowywania komórek pamiętających stan wysoki H co nazywamy odświeżaniem pamięci DRAM. W typowej pamięci DRAM odświeżanie odbywa się co około kilkanaście ms. Z reguły nie odświeżamy od razu całej pamięci DRAM ale pewien jej fragment potem następny itd. Czas dostępu do pamięci DRAM jest rzędu 50 ns. Typowa organizacja kostek pamięci DRAM to np 64M x 4 (czterobitowe słowa wyjściowe), 128M x 2 (dwubitowe słowa wyjściowe), 256Mx1 (jednobitowe słowa wyjściowe).
Pamięci DRAM dzielą się na synchroniczne i asynchroniczne. Obecnie prawie wyłącznie stosuje się pamięci synchroniczne tzw. SDRAM (Synchronous DRAM) pracujące w takt zegara systemu i umożliwiające wykonanie kolejnych czynności przez pamięć zakładkowo (pipelining) co pozwala znacznie skrócić cykl odczytu. Dane przesyłane są w seriach tzw. "burst". Pamięci synchroniczne wykorzystujące narastające i opadające zbocze zegara noszą nazwę DDR SDRAM (Double Data Rate SDRAM). Typowe pamięci DDR SDRAM pracują z magistralami taktowanymi zegarem 133 MHz.
Podstawowe parametry pamięci RAM to czas dostępu do pamięci (access time), czas cyklu (ang cycle time) i pojemność pamięci RAM.
Pamięci (kostki pamięci czyli chipy) SDRAM umieszcza się najczęściej na małych płytkach drukowanych tzw. modułach DIMM (ang. Dual In line Memory Module).
Pamięci specjalne to pamięci FIFO, LIFO i pamięci CAM.
Pamięć FIFO (ang. First in - First out) to inaczej kolejka.
Pamięć LIFO (ang. Last in - First out) to inaczej stos.
Pamięć CAM (ang. Content Addressable Memory) to inaczej pamięć asocjacyjna lub pamięć skojarzeniowa. Pamięci specjalne zostaną omówione szerzej w rozdziale o architekturze systemów komputerowych.